10 REM > SerTester 20 REM Test serial port 30 : 40 ON ERROR OSCLI"FX2":OSCLI"FX3":PRINTTAB(0,9):REPORT:PRINT" at ";ERL;:END 50 PRINT"Program has hung"; 60 *FX2,2 70 CLS:PRINT"Serial Port Tester -- Press some keys:" 80 PRINT'"Sending out:"'"Coming in: " 90 PRINT'"Keyboard buffer: ";FNempt(ADVAL(-1)) 100 PRINT"Serial Input Buffer: ";FNempt(ADVAL(-2)) 110 PRINT"Serial Output Buffer:";FNfull(ADVAL(-3)) 120 PRINT'"If output buffer fills up and input buffer stays"'"empty, there's a problem with the serial port." 130 REPEAT 140 REM Wait for an entry to a buffer: 150 a1%=ADVAL(-1):a2%=ADVAL(-2):a3%=ADVAL(-3):IFa3%<>0 a1%=0 160 REPEATUNTILADVAL(-1)<>a1% OR ADVAL(-2)<>0 OR ADVAL(-3)<>a3% 170 IFADVAL(-1)<>0 AND ADVAL(-3)<>0 THEN B%=GET:PRINTTAB(13,2);FNh0(B%,2);" ";FNc(B%):OSCLI"FX3,7":VDUB%:*FX3 180 IFADVAL(-2)<>0 THEN OSCLI"FX2,1":B%=GET:OSCLI"FX2,2":PRINTTAB(13,3);FNh0(B%,2);" ";FNc(B%) 190 PRINTTAB(21,5);FNempt(ADVAL(-1));TAB(21,6);FNempt(ADVAL(-2));TAB(21,7);FNfull(ADVAL(-3)) 200 UNTILINKEY-1 AND INKEY-2 AND INKEY-3 210 END 220 DEFFNh0(A%,N%)=RIGHT$("0000000"+STR$~A%,N%) 230 DEFFNc(N%):IF N%=127 OR N%<32:="." ELSE =CHR$N% 240 DEFFNfull(N%):IF N%=0:="0 Full" ELSE =STR$N%+" " 250 DEFFNempt(N%):IF N%=0:="0 Empty" ELSE =STR$N%+" "