10 REM ******************************************************* 20 REM Program to transmit data 21 REM From the Olivetti I/O with external peripheral manual 22 REM Copied by Davide Bucci 23 REM August, 22, 2005 24 REM ****************************************************** 40 PN%=0 41 PT%=0 50 E%=0 51 ET%=0 52 CR%=0 60 HS%=0:DS%=0 63 CLOSE WINDOW 65 CLS 66 PRINT : INPUT "Add automatically LF to CR? (yes, no) ", CR$ 67 IF CR$<>"no" AND CR$<>"yes" THEN PRINT "Invalid selection":GOTO 66 68 IF CR$="yes" THEN CR%=1 69 CLS 70 BC%=0 71 W1=WINDOW (1,200,,) 72 PRINT "% "; 73 WINDOW %2 74 PRINT "* "; 80 C$=SPACE$(1) 100 CALL "ci"(PN%, "sr", @E%, @HS%, @DS%, @BC%) 101 P$=INKEY$ 102 IF P$<>"" THEN GOSUB 500 110 IF E%=0 THEN GOTO 130 120 PRINT "Status read error: ";E%:STOP 130 IF BC%=0 THEN GOTO 100 140 CALL "ci" (PN%, "r", @E%, @C$,1) 150 IF E%=0 THEN GOTO 290 160 PRINT "Read error: ";E% 170 IF E%<>4 THEN STOP 180 SM%=HS% AND &H8 190 IF SM%=&H8 THEN PRINT "Parity error" 200 SM%=HS% AND &H10 210 IF SM%=&H10 THEN PRINT "Overrun error" 220 SM%=HS% AND &H20 230 IF SM%=&H20 THEN PRINT "Framing error" 240 SM%=DS% AND &H100 250 IF SM%=&H100 THEN PRINT "Buffer overflow error" 260 STOP 290 WINDOW %1: PRINT CHR$(8);CHR$(8); 291 IF CR%=1 AND C$=CHR$(13) THEN C$=C$+CHR$(10) 295 PRINT C$; 300 PRINT "% "; 310 GOTO 100 320 CALL "ci" (PN%, "c",@E%) 330 IF E%<>0 THEN PRINT "Port close error: "; E% 340 PRINT "End of receive program" 350 END 500 WINDOW %2 504 CALL "ci"(PT%, "w", @ET%, P$) 505 PRINT CHR$(8);CHR$(8); 506 IF CR%=1 AND P$=CHR$(13) THEN P$=P$+CHR$(10) 507 IF ASC(P$)=13 THEN PRINT CHR$(8);CHR$(8); 510 PRINT P$; 520 PRINT "* "; 530 IF ET%<>0 THEN PRINT "*Write error*":STOP 540 RETURN 10000 CLOSE WINDOW 10001 CLS 10002 END 20000 E%=0 20001 CALL "ci"(0,"c",@E) 20002 END