10 REM *******************************************************20 REM Program to transmit data21 REM From the Olivetti I/O with external peripheral manual22 REM Copied by Davide Bucci23 REM August, 22, 200524 REM ******************************************************40 PN%=041 PT%=050 E%=051 ET%=052 CR%=060 HS%=0:DS%=063 CLOSE WINDOW65 CLS66 PRINT : INPUT "Add automatically LF to CR? (yes, no) ", CR$67 IF CR$<>"no" AND CR$<>"yes" THEN PRINT "Invalid selection":GOTO 6668 IF CR$="yes" THEN CR%=169 CLS70 BC%=071 W1=WINDOW (1,200,,)72 PRINT "% ";73 WINDOW %274 PRINT "* ";80 C$=SPACE$(1)100 CALL "ci"(PN%, "sr", @E%, @HS%, @DS%, @BC%)101 P$=INKEY$102 IF P$<>"" THEN GOSUB 500110 IF E%=0 THEN GOTO 130120 PRINT "Status read error: ";E%:STOP130 IF BC%=0 THEN GOTO 100140 CALL "ci" (PN%, "r", @E%, @C$,1)150 IF E%=0 THEN GOTO 290 160 PRINT "Read error: ";E%170 IF E%<>4 THEN STOP180 SM%=HS% AND &H8190 IF SM%=&H8 THEN PRINT "Parity error"200 SM%=HS% AND &H10 210 IF SM%=&H10 THEN PRINT "Overrun error"220 SM%=HS% AND &H20230 IF SM%=&H20 THEN PRINT "Framing error"240 SM%=DS% AND &H100250 IF SM%=&H100 THEN PRINT "Buffer overflow error"260 STOP290 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 100320 CALL "ci" (PN%, "c",@E%)330 IF E%<>0 THEN PRINT "Port close error: "; E%340 PRINT "End of receive program"350 END500 WINDOW %2504 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*":STOP540 RETURN10000 CLOSE WINDOW10001 CLS10002 END20000 E%=020001 CALL "ci"(0,"c",@E)20002 END