/* @(SH) Funzioni per i controlli sulla chiave di protezione -------------------------------------------------------------------------------- @(H) 2.3.01.176 09/03/93 Bonazzi Implementazione demo e formazione @(H) 2.3.01.178 09/03/93 Bonazzi Implementazione EYE-API in DOS */ #include "ccommon.h" #include "libdefs.h" Word ModAd = 26952, Port = 0, SerNo = -1; /* @(!) 2.3.01.176 */ BOOLEAN demoflag = FALSE, formflag = FALSE; /* @(:) 2.3.01.176 */ /* @(%) HL_Port LIBDEFS @(ID) Ricerca la chiave di protezione. @(FD) @(IN) Restituisce l'indirizzo della porta parallela ove ha trovato la chiave di prot. @(FN) */ #ifndef DOS Word Hl_Port(ModAd) Word ModAd; /* indirizzo del modulo */ { Byte Dummy[10]; Word n, PortAdr[3]; PortAdr[0] = 0x3BC; PortAdr[1] = 0x378; PortAdr[2] = 0x278; INT_OFF(); for(n = 0; n < 3; n++) { strcpy(Dummy, "HARDLOCK"); HL_ON(PortAdr[n], ModAd); if(K_EYE(PortAdr[n], EYECAST Dummy, HLBLOCK)) if(K_EYE(PortAdr[n], EYECAST Dummy, HLBLOCK)) if(!strncmp("HARDLOCK", Dummy, 8)) { HL_OFF(PortAdr[n]); INT_ON(); return(PortAdr[n]); } HL_OFF(PortAdr[n]); } INT_ON(); return(0); } #endif /* @(%) getser LIBDEFS @(ID) Restituisce il numero di serie del cliente. @(FD) @(IN) Utilizza la chiave di protezione. @(FN) */ Word getser() { Word Val[4]; #ifndef DOS BOOLEAN ok; int i; #endif SerNo = -1; /* @(!) 2.3.01.178 */ #ifdef DOS if (HL_AVAIL() == STATUS_OK) #else /* @(:) 2.3.01.178 */ if (Port = Hl_Port(ModAd)) /* @(!) 2.3.01.178 */ #endif /* @(:) 2.3.01.178 */ { SerNo = 0; /* @(!) 2.3.01.178 */ #ifdef DOS HL_READ(0, &Val[0]); HL_READ(1, &Val[1]); HL_READ(2, &Val[2]); HL_READ(3, &Val[3]); HL_CODE(EYECAST &Val[0], HLBLOCK); #else /* @(:) 2.3.01.178 */ INT_OFF(); HL_ON(Port, ModAd); Val[0] = HL_RD(Port, 0); Val[1] = HL_RD(Port, 1); Val[2] = HL_RD(Port, 2); Val[3] = HL_RD(Port, 3); HL_OFF(Port); INT_ON(); INT_OFF(); HL_ON(Port, ModAd); ok = K_EYE(Port, EYECAST &Val[0], HLBLOCK); HL_OFF(Port); INT_ON(); /* @(!) 2.3.01.178 */ #endif /* @(:) 2.3.01.178 */ if (Val[0] == 0xFAE8) { SerNo = Val[1]; return(Val[1]); } else return(0); } else /* @(!) 2.3.01.176 */ { #ifdef DOS FILE *f = fopen("c:\\command.com", "r"); char s[4]; if (f == NULL) return(-1); if (fseek(f, 46500L, SEEK_SET) != 0) return(-1); if (fread(s, 1, 1, f) == -1) return(-1); fclose(f); if (*s != 'm') return(-1); #endif SerNo = 0; demoflag = TRUE; return(0); } /* @(:) 2.3.01.176 */ }