/IO.SB SPL/8 CHARACTER I/O ROUTINES / / / IN(DEV): RETURNS: / / EOL IF CR-LF / EOF IF ^Z / ELSE RETURNS CHAR / /////////////////////////////////////////////// OPDEF TADI 1400 ABSYM EOS -1 ABSYM EOL -2 ABSYM EOF -3 ENTRY IN IN, BLOCK 2 JMS IARG DCA DEV CLA STL RTR /SET READ DCA RW RLF, JMS IO /GET THE CHAR TAD (-212 /LF? SNA JMP RLF /YES, IGNORE TAD (-3 /CR? SNA JMP REOL /YES, RETURN EOL TAD (-15 /^Z? SNA JMP REOF TAD (232 /NO, RESTORE CHAR IORT, RETRN IN /RETURN REOL, TAD CEOL JMP IORT REOF, TAD CEOF JMP IORT //////////////////////////////////////////// / / OUT(DEV,CHR) OR OUT(CHR) / / OUTPUT CHARACTER TO DEV ( OR TTY ) / / EOL -> CR-LF / EOF WILL GO OUT, BUT TRUNCATES FILE / //////////////////////////////////////////// ENTRY OUT OUT, BLOCK 2 TAD OUT DCA IN TAD OUT# DCA IN# DCA RW /SET WRITE STA TAD OUT# DCA DEV TAD OUT DCA CFL CFL, HLT TADI DEV /GET PARAM WORD AND (400 /ONE PARAM? SZA CLA JMP A2 /NO, GET 2 CLA IAC /SET DEV #1 DCA DEV JMS IARG /GET ARG JMP OT A2, JMS IARG DCA DEV JMS IARG OT, TAD (2 /EOL? SNA JMP OEOL /YES TAD CEOL /NO, RESTORE JMS IO JMP IORT OEOL, TAD (215 JMS IO TAD (212 JMS IO JMP IORT IARG, 0 /GET ARG FROM 'IN' TAD IN DCA INFL INFL, HLT TADI IN# INC IN# DCA ARGF TADI IN# INC IN# DCA INFL ARGF, HLT /PARAM FIELD TADI INFL /GET VALUE JMP I IARG /RETURN VALUE IO, 0 /DO IO AND (177 TAD (200 DCA IOTMP STA TAD DEV AND (3 CLL RAR RTR RTR AND (1400 TAD IOTMP TAD RW CALL 0,GENIO JMP I IO /RETURN IOTMP, 0 CEOL, EOL CEOF, EOF DEV, 0 RW, 0 END