diff --git a/src/taa/inp.100 b/src/taa/inp.100 new file mode 100644 index 00000000..34bb4617 --- /dev/null +++ b/src/taa/inp.100 @@ -0,0 +1,735 @@ +; Reconstructed 2018 from SYS2; TS MSEND dated 1984-01-14, which is +; a PDUMP binary assembled from DM: SYSENG; MSEND 140 on 1980-07-28. + +SUBTTL READER + +DEFINE BUFMAKE NAME,LEN,HLP,TXT +ZZ==LEN/5 +ZZZ==. + BLOCK ZZ +NAME: [ASCIZ /TXT/] + 440700,,ZZZ + 440700,,ZZZ + 440700,,ZZZ + 5*ZZ + 5*ZZ + 0 + 0 + HLP +TERMIN + +.BEGIN READER + +CBUF=16 +FINBLN==240 + +BUFMAKE FILBUF,175,HLPFIL,[File: ] + +FINBUF: BLOCK 40 + +FILBLK: +FILDEV: SIXBIT /DSK/ +FILSNM: 0 +FILFN1: 0 +FILFN2: SIXBIT />/ + +DSKI: 0 +ENDFIL: 0 +PRMPT2: 0 +.U"INREAD: 0 +.U"RQUOTE: 0 +.U"XCTRUB: 0 +.U"TOFCI: 0 +.U"TOERS: 0 +CHPOS: 0 +CVPOS: 0 +.U"KEEPQT: 0 +.U"CRBRK: 0 +CTRLYQ: -1 +.U"LSTBRK: 0 + +.U"BUFPRM==0 +.U"BUFBEG==1 +.U"BUFFCH==2 +.U"BUFNCH==3 +.U"BUFLEN==4 +.U"BUFVLN==5 +.U"BUFCCT==6 +.U"BUFVCT==7 +.U"BUFHLP==10 + +RCMDNX: MOVEM B,BUFNCH(CBUF) + SKIPGE C + MOVEI C,0 + MOVEM C,BUFVCT(CBUF) + JRST RCMD + +.U"GETBUF: + PUSH P,CBUF + MOVE CBUF,B + PUSH P,C + PUSH P,D +RCMDXX: +RCMD: MOVE B,BUFNCH(CBUF) + MOVE C,BUFVCT(CBUF) + SKIPE TOERS + JUMPN C,[PUSHJ P,REPPER ? JRST RCMD0] + PUSHJ P,PPRMPT +RCMD0: SETOM INREAD +RCMD1: .IOT TTYI,A + SKIPE RQUOTE + JRST [SETZM RQUOTE + SKIPE KEEPQT + JRST RCMDL + SKIPN TOERS + JRST RCMDL + PUSH P,A + MOVEI A,^Q + PUSHJ P,RUBFLS + POP P,A + JRST RCMDL] + CAIG A,^[ + JRST @CHRTAB(A) + CAIN A,177 + JRST RUB + CAIN A,"? + JRST [JUMPN C,RCMDL + SKIPN BUFHLP(CBUF) + JRST RCMDL + .IOT TTYO,A + PUSHJ P,@BUFHLP(CBUF) + JRST RCMDNX] +RCMDL: .IOT TTYO,A +RCMDLN: PUSHJ P,ADDCHR + CAIE A,^M + JRST RCMD1 + MOVEI A,^J + JRST RCMDL + +RADDCH: .IOT TTYO,A + PUSHJ P,ADDCHR + CAIE A,^M + JRST CPOPJ + MOVEI A,^J + .IOT TTYO,A + PUSHJ P,ADDCHR + POPJ P, + +ADDCHR: ADDI C,1 + CAML C,BUFVLN(CBUF) + JRST [MOVEM C,BUFVCT(CBUF) + MOVEM B,BUFNCH(CBUF) + PUSHJ P,BUFGRO + MOVE B,BUFNCH(CBUF) + JRST .+1] + IDPB A,B + POPJ P, + +CHRTAB: RSTBUF + RCMDL + RCMDL + RCMDXE + [PUSHJ P,RREPEA ? JRST RCMD1] + RCMDL + RCMDL + QUIT + RCMDL + RCMDL + RCMDL + RCMDL + [PUSHJ P,RCLEAR ? JRST RCMD1] + [SKIPN CRBRK ? JRST RCMDL ? JRST RCMDXE] + RCMDL + RCMDL + RCMDL + [SETOM RQUOTE + .IOT TTYO,A + SKIPN KEEPQT + JRST RCMD1 + JRST RCMDLN] + RCMDL + RCMDL + CHRSWP + LNFLUS + RCMDL + WDFLUS + LNFLUS + [SKIPN CTRLYQ + JRST RCMDL + PUSHJ P,RDFILE + JRST RCMD1] + RCMDL + RCMDXE + +RCMDXE: .IOT TTYO,A +RCMDX1: MOVEM A,LSTBRK + MOVEI A,0 + IDPB A,B + DBP B + MOVEM C,BUFVCT(CBUF) + MOVEM B,BUFNCH(CBUF) + MOVE B,BUFLEN(CBUF) + SUB B,BUFVLN(CBUF) + ADDI B,(C) + MOVEM B,BUFCCT(CBUF) + SETZM INREAD + SKIPE C + AOS -3(P) + POP P,D + POP P,C + POP P,CBUF + POPJ P, + +RSTBUF: .IOT TTYO,A +RSTBF1: OASCR TTYO,[0] + SETZ C, + PUSHJ P,CLINBI + MOVE B,BUFFCH(CBUF) + PUSHJ P,REPPER + JRST RCMD1 + +PPRMPT: OCTLP TTYO,"A + OASC TTYO,@BUFPRM(CBUF) + SKIPE PRMPT2 + OASC TTYO,@PRMPT2 + POPJ P, + +RREPEA: .IOT TTYO,A + OASCR TTYO,[0] + JRST REPPER + +.U"RCLEAR: + OCTLP TTYO,"C +.U"REPPER: + PUSHJ P,PPRMPT + OBPTR TTYO,BUFFCH(CBUF) + POPJ P, + +.U"CLINBF: + PUSH P,CBUF + MOVE CBUF,B + PUSHJ P,CLINBI + POP P,CBUF + POPJ P, + +CLINBI: PUSH P,A + PUSH P,B + PUSH P,C + MOVE A,BUFFCH(CBUF) + MOVE B,BUFVLN(CBUF) + JUMPL A,CLINB1 + MOVEI C,0 +CLINBL: TLNE A,760000 + CAIA + AOJA A,CLINB1 + IDPB C,A + SOJA B,CLINBL +CLINB1: SETZM (A) + IDIVI B,5 + ADDI B,-1(A) + HRLS A + ADDI A,1 + BLT A,(B) + MOVE A,BUFFCH(CBUF) + MOVEM A,BUFNCH(CBUF) + SETZM BUFVCT(CBUF) + MOVE A,BUFLEN(CBUF) + SUB A,BUFVLN(CBUF) + MOVEM A,BUFCCT(CBUF) + POP P,C + POP P,B + POP P,A + POPJ P, + +BUFGRO: PUSH P,A + PUSH P,B + PUSH P,C + MOVE A,BUFLEN(CBUF) + IDIVI A,5 + LSH A,1 + IBLOCK CLIO,(A) + PUSH P,C + MOVE A,BUFLEN(CBUF) + ADDM A,BUFLEN(CBUF) + ADDM A,BUFVLN(CBUF) + HRL C,BUFBEG(CBUF) + IDIVI A,5 + ADDI A,-1(C) + BLT C,(A) + POP P,C + HRRZ B,BUFBEG(CBUF) + SUB C,B + ADDM C,BUFBEG(CBUF) + ADDM C,BUFFCH(CBUF) + ADDM C,BUFNCH(CBUF) + POP P,C + POP P,B + POP P,A + POPJ P, + +RDFILE: PUSH P,KEEPQT + PUSH P,CRBRK + PUSH P,CTRLYQ + PUSH P,INREAD + PUSH P,D + PUSH P,E + PUSH P,F + PUSH P,A + PUSH P,B + PUSH P,C + SKIPE FILSNM + JRST NODEF + .SUSET [.RXUNAME,,A] + MOVEM A,FILSNM + MOVEM A,FILFN1 +NODEF: SETOM KEEPQT + SETOM CRBRK + SETZM CTRLYQ + MOVEI B,FILBUF + PUSHJ P,CLINBF + PUSHJ P,GETBUF + JRST [MOVE B,LSTBRK + CAIE B,^M + OASCR TTYO,[0] + OASCR TTYO,[ASCIZ /Aborted./] + POP P,C + POP P,B + POP P,A + JRST RDFILX] + MOVE B,LSTBRK + CAIE B,^M + OASCR TTYO,[0] + MOVEI B,FILBUF + MOVE A,BUFFCH(B) + MOVE B,BUFVCT(B) + PUSHJ P,FILPRS + PUSHJ P,CHNFND + .CALL [SETZ + SIXBIT /OPEN/ + MOVSI .UAI + DSKI + FILDEV + FILFN1 + FILFN2 + SETZ FILSNM] + JRST FILERR + POP P,C + POP P,B + POP P,A + SETZM ENDFIL +FRDLOP: MOVEI D,FINBLN + MOVE E,[440700,,FINBUF] + .CALL [SETZ + SIXBIT /SIOT/ + DSKI + E + SETZ D] + .LOSE %LSSYS + SUBI D,FINBLN + JUMPE D,FILDON + MOVNS D + CAIL D,FINBLN + JRST FINSTR + SETOM ENDFIL + MOVEI F,D +PDLOOP: LDB O,E + CAIE O,^C + CAIN O,0 + JRST PDFLS + JRST FINSTR +PDFLS: MOVEI O,0 + DPB O,E + DBP E + SOJLE D,FILDON + SOJG F,PDLOOP +FINSTR: MOVE E,[440700,,FINBUF] +FINLOP: ILDB A,E + PUSHJ P,ADDCHR + SOJG D,FINLOP + SKIPN ENDFIL + JRST FRDLOP +FILDON: OASCR TTYO,[ASCIZ /"DONE"/] + .CALL [SETZ + SIXBIT /CLOSE/ + SETZ DSKI] + .LOSE %LSSYS +RDFILX: POP P,F + POP P,E + POP P,D + POP P,INREAD + POP P,CTRLYQ + POP P,CRBRK + POP P,KEEPQT + POPJ P, + +CHNFND: PUSH P,A + PUSH P,B + MOVEI A,17 +CHNFNL: .CALL [SETZ + SIXBIT /STATUS/ + A + SETZM B] + .LOSE %LSSYS + JUMPE B,CHNFNW + SOJGE A,CHNFNL + .VALUE [ASCIZ /:No channels?? +/] +CHNFNW: MOVEM A,DSKI + POP P,B + POP P,A + POPJ P, + +HLPFIL: OASC TTYO,[ASCIZ /Default is: /] + OSIX TTYO,FILDEV + OASCI TTYO,": + OSIX TTYO,FILSNM + OASCI TTYO,"; + OSIX TTYO,FILFN1 + OASCI TTYO," + OSIX TTYO,FILFN2 + OASCR TTYO,[0] + POPJ P, + +FILERR: OASC TTYO,[ASCIZ /Open of /] + OSIX TTYO,FILDEV + OASCI TTYO,": + OSIX TTYO,FILSNM + OASCI TTYO,"; + OSIX TTYO,FILFN1 + OASCI TTYO," + OSIX TTYO,FILFN2 + OASC TTYO,[ASCIZ / failed: /] + .CALL [SETZ + SIXBIT /STATUS/ + DSKI + SETZM A] + .LOSE %LSSYS + .CALL [SETZ + SIXBIT /OPEN/ + MOVSI .UAI + DSKI + [SIXBIT /ERR/] + MOVEI 3 + SETZ A] + .LOSE %LSFIL + MOVE A,[440700,,FINBUF] + MOVEI B,FINBLN + .CALL [SETZ + SIXBIT /SIOT/ + DSKI + A + SETZ B] + .LOSE %LSSYS + .CALL [SETZ + SIXBIT /CLOSE/ + SETZ DSKI] + .LOSE %LSSYS + MOVEI B,0 + DPB B,A + OASCR TTYO,FINBUF + POP P,C + POP P,B + POP P,A + JRST RDFILX + +FILPRS: PUSH P,C + PUSH P,D + PUSH P,E + PUSH P,F + MOVEI E,0 +FILPRL: PUSHJ P,GETSYL + JUMPE F,FILPRQ + JUMPE C,FILPRL + CAIN F,": + JRST [MOVEM C,FILDEV ? JRST FILPRL] + CAIN F,"; + JRST [MOVEM C,FILSNM ? JRST FILPRL] +FILPRQ: JUMPE C,FILPQ1 + JUMPE E,[MOVNI E,1 ? MOVEM C,FILFN1 ? JRST FILPQ1] + MOVEM C,FILFN2 +FILPQ1: JUMPN F,FILPRL + POP P,F + POP P,E + POP P,D + POP P,C + POPJ P, + +GETSYL: MOVEI C,0 + MOVE B,[440600,,C] +GETSY1: ILDB F,A + JUMPE F,GETSYX + CAIE F,": + CAIN F,"; + JRST GETSYX + CAIE F," + CAIN F,^I + JRST GETSX1 + CAIN F,^Q + ILDB F,A + SUBI F," + CAIL F,"@ + SUBI F," + TLNE B,770000 + IDPB F,B + JRST GETSY1 +GETSX1: JUMPE C,GETSY1 +GETSYX: POPJ P, + +RUB: PUSHJ P,RUBBER + JRST RCMDNX + JRST RCMD1 + +RUBBER: SOJL C,CPOPJ + LDB A,B + MOVEI D,0 + DPB D,B + XCT XCTRUB + DBP B + CAIE A,^J + JRST RUBOUT + JUMPLE C,RUBOUT + PUSH P,A + LDB A,B + CAIE A,^M + JRST [POP P,A ? JRST RUBOUT] + SUB P,[1,,1] + MOVEI D,0 + DPB D,B + SUBI C,1 + XCT XCTRUB + DBP B +RUBOUT: AOS (P) + POPJ P, + +.U"RUBECH: + OASCI TTYO,(A) + POPJ P, + +.U"RUBFLS: + PUSH P,B + PUSH P,C + PUSHJ P,RCPOS + PUSHJ P,CHRTYP + SKIPGE C,FIXIM2(C) + JRST (C) + OCTLP TTYO,"X + SOJG C,.-1 +RUBDON: POP P,C + POP P,B + POPJ P, + +CHRTYP: MOVEI C,0 + CAIG A,^_ + JRST CHRTY1 + CAIN A,177 + AOJA C,CPOPJ + POPJ P, + +CHRTY1: PUSH P,A + IDIVI A,14 + MOVE A,FIXIML(A) + IMULI B,3 + ROTC A,3(B) + ANDI B,7 + MOVEI C,(B) + POP P,A + POPJ P, + +FOURQ: OCTLP TTYO,"X + OCTLP TTYO,"X + SKIPE TOFCI + JRST RUBDON + OCTLP TTYO,"X + OCTLP TTYO,"X + JRST RUBDON +BSKILL: AOS CHPOS + OHPOS TTYO,@CHPOS + JRST RUBDON + +CGKILL: JRST RUBDON + +TBKILL: PUSHJ P,GHPOS + OHPOS TTYO,@CHPOS + OCTLP TTYO,"L + JRST RUBDON + +CRKILL: PUSHJ P,GHPOS + OHPOS TTYO,@CHPOS + JRST RUBDON + +LFKILL: PUSH P,A + MOVEI A,1 + PUSHJ P,LNSTRV + POP P,A + JRST RUBDON + +LNSTRV: CAMLE A,CVPOS + JRST LNREDO + SOJE A,LNONE + OCTLP TTYO,"H + OASCI TTYO,^H +LNSLOP: OCTLP TTYO,"L + OCTLP TTYO,"U + SOS CVPOS + SOJGE A,LNSLOP + PUSHJ P,GHPOS + OHPOS TTYO,@CHPOS + OCTLP TTYO,"L + POPJ P, + +LNONE: OCTLP TTYO,"U + POPJ P, + +LNREDO: OCTLP TTYO,"T + OCTLP TTYO,"L + PUSHJ P,PPRMPT + OBPTR TTYO,BUFFCH(CBUF) + PUSHJ P,RCPOS + POPJ P, + +FIXIM2: 1 + 2 + SETZ FOURQ + SETZ CRKILL + SETZ LFKILL + SETZ BSKILL + SETZ TBKILL + SETZ CGKILL + +FIXIM3: MOVEI C,1 + MOVEI C,2 + PUSHJ P,CNTCTZ + MOVEI C,0 + MOVEI C,0 + MOVNI C,1 + PUSHJ P,CNTTAB + MOVEI C,0 + +CNTCTZ: MOVEI C,2 + SKIPN TOFCI + MOVEI C,4 + POPJ P, + +CNTTAB: ANDCMI O,7 + ADDI O,10 + MOVEI C,0 + POPJ P, + +FIXIML: 111111175641 + 131111111111 + 112011120000 + +RCPOS: PUSH P,A + .CALL [SETZ + SIXBIT /RCPOS/ + MOVEI TTYI + SETZM A] + .LOSE %LSSYS + HLRM A,CVPOS + HRRM A,CHPOS + POP P,A + POPJ P, + +GHPOS: PUSH P,O + PUSH P,A + PUSH P,B + PUSH P,C + PUSH P,D + MOVEI O,0 + MOVE D,BUFPRM(CBUF) + PUSHJ P,CNTSTR + SKIPE D,PRMPT2 + PUSHJ P,CNTSTR +GHPOS1: MOVE D,BUFFCH(CBUF) + PUSHJ P,CNTSTR + MOVEM O,CHPOS + POP P,D + POP P,C + POP P,B + POP P,A + POP P,O + POPJ P, + +CNTSTR: TLNN D,777777 + HRLI D,440700 +CNTST1: ILDB A,D + JUMPE A,CPOPJ + CAIN A,^M + JRST [MOVEI O,0 ? JRST CNTST1] + PUSHJ P,CHRTYP + XCT FIXIM3(C) + ADD O,C + JRST CNTST1 + +CHRSWP: CAIG C,1 + JRST RCMD1 + PUSHJ P,RUBBER + .VALUE + CAIGE C,1 + JRST [PUSHJ P,RADDCH ? JRST RCMD1] + PUSH P,A + PUSHJ P,RUBBER + .VALUE + EXCH A,(P) + PUSHJ P,RADDCH + POP P,A + PUSHJ P,RADDCH + JRST RCMD1 + +WDFLUS: PUSHJ P,RUBBER + JRST RCMDNX + PUSHJ P,BREAK + JRST WDFLU1 + JRST WDFLUS +WDFLU1: JUMPE C,RCMD1 + LDB A,B + PUSHJ P,BREAK + JRST WDFLU2 + JRST RCMD1 +WDFLU2: PUSHJ P,RUBBER + JRST RCMDNX + JRST WDFLU1 + +BREAK: CAIE A,^I + CAIN A,^J + JRST POPJ1 + CAIE A,^M + CAIN A," + JRST POPJ1 + CAIE A,"; + CAIN A,", + JRST POPJ1 + CAIE A,". + CAIN A,": + JRST POPJ1 + POPJ P, + +LNFLUS: PUSHJ P,RUBBER + JRST RCMDNX +LNFLUL: LDB A,B + CAIN A,^J + JRST LNFLUD + MOVEI O,0 + DPB O,B + DBP B + SOJLE C,LNLEAV + JRST LNFLUL + +LNFLUD: PUSH P,B + DBP B + LDB A,B + POP P,B + CAIN A,^M + JRST LNFLKL + +LNLEAV: PUSHJ P,GHPOS +LNLEV1: SKIPN TOERS + JRST [OASCR TTYO,[ASCIZ / XXX?/] ? JRST RCMD1] + OHPOS TTYO,@CHPOS + OCTLP TTYO,"L + JRST RCMD1 + +LNFLKL: SETZM CHPOS + JRST LNLEV1 + +.END READER