' Program to log data from printer port ' makes D0 go high (for pullup, pin 2) ' reads data from busy line (pin 11) ' note - slower machines might not keep up CLS PRINT "Slowly logging data from LPT2..." size = 5000 DIM datalog$(size) dn = 0 'these machine dependent... tc = 30 ' do nothing for-next okL = 65 ' minimum count okH = 85 ' maximum count 'uncomment PRINT count line and pick values that 'surround it close enough to ignore extra data 'outport = &H378 'LPT 1 outport = &H278 'LPT 2 inport = outport + 1 OUT outport, 1 logloop: d = INP(inport) IF d > 127 THEN GOTO logloop waitloop: d = INP(inport) IF INKEY$ <> "" THEN GOTO quit IF d < 128 THEN GOTO waitloop count = 0 timeloop: d = INP(inport) IF d < 128 THEN GOTO startbits count = count + 1 FOR td = 1 TO tc: NEXT td GOTO timeloop startbits: REM PRINT count ' use to get values for okL and okH IF count < okL OR count > okH THEN GOTO endloop c2 = count / 2 z = 0 FOR t = 1 TO c2 IF z < 0 THEN REM z = z + 1 FOR td = 1 TO tc: NEXT td NEXT t FOR bit = 0 TO 7 FOR t = 1 TO count IF z < 0 THEN REM z = z + 1 FOR td = 1 TO tc: NEXT td NEXT t d = INP(inport) IF d < 128 THEN dat(bit) = 0 ELSE dat(bit) = 1 NEXT bit byte$ = "" FOR bit = 7 TO 0 STEP -1 IF dat(bit) = 1 THEN d$ = "1" ELSE d$ = "0" byte$ = byte$ + d$ NEXT bit PRINT byte$ dn = dn + 1 IF dn > size THEN GOTO quit datalog$(dn) = byte$ endloop: IF INKEY$ = "" THEN GOTO logloop quit: OPEN "logfile.out" FOR OUTPUT AS #1 FOR i = 1 TO dn PRINT #1, datalog$(i) NEXT i CLOSE #1 SYSTEM