campo-sirio/include/hlprot.c
guy 6aacb7e366 date.h Corretto errore di ortografia
hlprot.c      Cambiamento stilistico ma non semantico
msksheet.cpp  Aggiunto _cell_dirty = TRUE prememdo F2
msksheet.h    Tolta riga vuota
relapp.cpp    Reso piu' chiaro mesaggio di debug di chiave incompleta


git-svn-id: svn://10.65.10.50/trunk@4796 c028cbd2-c16b-5b4b-a496-9718f37d4682
1997-07-02 12:54:03 +00:00

143 lines
2.8 KiB
C
Executable File

/*
@(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 SerNo;
}
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 */
}