File: HEXA2.BR of Tape: Sources/Focal/s7
(Source file text)
/ * H E X A 2 . B R * / VERSION 51 VOM 2. 8. 76 / LPT OUTPUT FOR INSPECTION LIPTOU, IOF PHOM OUL2, TAD (215 JMS LPPRIN TAD DOSAP DCA DOSAL TAD DOSAL DCA DOSAF TAD (214 SKP OUL3, TAD (215 /FIRST TIME NEW PAGE, SECOND LF JMS LPPRIN TAD (-14 DCA INSPCN INSP1, JMS BLANC 1 JMS PRINT DOSAL, 0 P1 TAD DOSAL DCA DOSAL TAD DOSAL CIA TAD (DOSAMA SMA CLA JMP INSP2 TAD (DOSAMI DCA DOSAL INSP2, TAD DOSAF CIA TAD DOSAL SNA CLA JMP EOOUT /END OF OUPUT ISZ INSPCN JMP INSP1 JMP OUL3 INSPCN, 0 DOSAF, 0 EOOUT, TAD (215 JMS LPPRIN JMP DRIINF /PRINT DRIVER INFO EOUT2, TAD (215 JMS LPPRIN TAD (214 JMS LPPRIN JMP ININF LPPRIN, 0 6666 CLA CLL 6661 JMP .-1 JMP I LPPRIN DRIINF, TAD (214 JMS LPPRIN CDF 20 TAD I (LIPP0 CDF 0 DCA DOSAL /SAVE POINTER TAD DOSAL DCA DOSAF OUL22, TAD (215 JMS LPPRINT TAD (-14 DCA INSPCN INSP12, JMS BLANC 1 CDF 30 TAD I DOSAL CDF 0 DCA LIPTOU /ROOM IS RARE JMS PRINT LIPTOU ISZ DOSAL TAD DOSAL CIA TAD (LIPPMA SMA CLA JMP INSP22 TAD (LIPPMI DCA DOSAL INSP22, TAD DOSAF CIA TAD DOSAL SNA CLA JMP EOUT2 ISZ INSPCN JMP INSP12 JMP OUL22 BLANC, 0 TAD I BLANC ISZ BLANC CIA DCA BLANC1 TAD (240 JMS LPPRIN ISZ BLANC1 JMP .-3 JMP I BLANC BLANC1, 0 WOHER, 0 TAD NEGQSL JMS DOSA2 JMP I WOHER WOHER2, 0 TAD (7000 TAD EXPNO JMS DOSA2 JMP I WOHER2 PAGE PRINT, 0 TAD I PRINT DCA PRINT1 PRIN4, CDF 0 TAD I PRINT1 /ARGUMENT FETCH CDF 0 RAL DCA PRINT1 RAR DCA LINKP JMS BLANC 1 TAD (-4 DCA PRINT2 PRINT3, CLL CLA TAD LINKP RAL CLA TAD PRINT1 RAL; RTL DCA PRINT1 RAR DCA LINKP TAD PRINT1 AND (7 TAD (260 JMS LPPRIN ISZ PRINT2 JMP PRINT3 JMS BLANC 1 ISZ PRINT JMP I PRINT PRINT1, 0 PRINT2, 0 LINKP, 0 SEBLO, 0 TAD (ETBFOB-1 DCA X0 TAD (1000 DCA DOSA3 TAD (-6 DCA DOSA5 JMS DOSA JMP I SEBLO REBLO, 0 TAD (ETBFIB-1 DCA X0 DCA DOSA3 TAD (-5 DCA DOSA5 JMS DOSA JMP I REBLO DOSA5, 0 DOSA, 0 TAD DOSA5 DCA X1 DOSA1, CDF 10 TAD I X0 TAD DOSA3 CDF 0 JMS DOSA2 ISZ X1 JMP DOSA1 JMP I DOSA DOSA2, 0 DCA I DOSAP P1 TAD DOSAP DCA DOSAP TAD (DOSAMA CIA TAD DOSAP SPA SNA CLA JMP I DOSA2 TAD (DOSAMI DCA DOSAP JMP I DOSA2 DOSA3, 0 DOSAP, DOSAMI ININF, TAD (ETBFIA DCA POINT1 TAD (CDF 20 DCA PRIN4 INI1, JMS PRINT POINT1, HLT ISZ POINT1 SKP JMP INI2 ISZ INI3 JMP INI1 TAD (-20 DCA INI3 TAD (215 JMS LPPRIN JMP INI1 INI3, -20 INI2, TAD (215 JMS LPPRIN TAD (214 JMS LPPRIN JMP SHUTD PAGE DOSAMI, ZBLOCK 50^6-1 DOSAMA, 0 FIELD 1 *0 ZBLOCK 7600-. / CODE FOR LIPI TEST / / CODE: 0=OK / 1=PARITY ERROR / 2=LIN OFF ERRO / 3=CHECKSUM ERROR / 4=HEADER ERROR / 5=WAIT FOR BETTER LINE / 6=SYNC MISSED FIELD 2 *10 / / AUTOINDEX / Y0, 0 Y1, 0 Y2, 0 Y3, 0 Y4, 0 Y5, 0 Y6, 0 Y7, 3777 / / SWAP AEREA FROM PAGE00 / *20 ZBLOCK 30 / / FIELD 2 BUFFERS / BFOA, ETBFOA WCBFOA, ETHLE BFIA, ETBFIA WCBFIA, ETHLE LO1F2G, 0 INP, 0 OUTP, 0 / / / HANDLER FLAGS / / / LIPI FLAGS / RFLG, 1 / / LIP STATUS INFO / LSEND, 0 STATE, 0 CHARO, 0 /RECEIVED CHAR RBIT, 0 /BIT INFO FROM MODEM REJECT, 0 SUM, 0 /CHECKSUMM FOR RECEIVED CHARS SFLG, 0 HEATAX, 0 ETHCN, 0 CACN, 0 /CHARACTER COUNTER FOR DECODE FLDX, CDF 0 / HEADTER TABLE HEATA, 1 160 STATIO, 141 SYYNC, 0 SYNCN, 0 PAGE / * I N T H A N . B R * / / / INTERUPT SKIPLINE AND INTERUPT DRIVEN HANDLERS / / INTHA, CON SKP LINON, JMP WAITR /AT BEGINING SKMR /SKIP ON MODEM RECEIVE FLAG SKP LIPIF, JMP RECCL /CLEAR FLAG IF NOT REQUIRED SKMS /SKIP ON MODEM SEND FLAG SKP LIPOF, JMP DISMIS PSKF /SKIP ON LPTFLAG SKP JMP LPTHA SKSER /SKIP ON SEND READ AND CLEAR SKP SENDR, JMP DISMIS 6136 SKP JMP CLOSKP TSF /TTY SEND FLAG SKP JMP TTYSF KSF SKP JMP TTYRF /TTY RECEIVE COFF SKP LINREA, JMP DISMIS /STATT LIOFF CLOSKP, 6135 6137 JMS CODE 6 ISZ SYYNC JMP FINS3 / FOR RECEIVE READY NOFLG, CIF CDF 0 JMP I (INTER1 /INRECOGNISED INTERUPT WAITR2, JMP DISMIS SENDR2, JMP WAITS LIPOJ, JMP LIPO LIPIJ, JMP LIPI LOFF, JMP SENOK NOREC, JMP RECCL RECCL, RMOD JMP DISMIS / / / SIMPLE INTERUPTDRIVEN LPTHANDLER / / LPTHA, PCLF JMS LPTCA JMP LPTHA1 CDF 0 DCA I (LPTPFL JMP DISMIS TAD [-2 /8 CHARS AT A TIME DCA LPCNT /SET UP CHAR COUNTER LPT1, JMS LPTCA /TEST FOR MORE CHARS JMP LPTHA1 /WE HAVE A CHAR JMP DISMIS LPTHA1, DCA LPTCA /SAVE CHAR CDF 10 DCA I LPBUF /FILL FETCHED LOC WITH 0 CDF 0 TAD I (LPGET /INCREMENT GETPOINTER IAC AND (-LI1BUL DCA I (LPGET CDF 20 TAD LPTCA /GET CHAR LPOUT, 6666 /PRINT CHAR CLA CLL PSKF JMP DISMIS /NOT A FAST CHAR ISZ LPCNT JMP LPT1 JMP DISMIS LPBUF, 0 LPCNT, 0 LPTCA, 0 TAD (LI1BU /SET UP POINTER CDF 0 TAD I (LPGET DCA LPBUF CDF 10 TAD I LPBUF SNA JMP LPTCA2 /NO CHAR LPTCAR, CDF 20 JMP I LPTCA LPTCA2, ISZ LPTCA /INCREMNENT RETURN JMP LPTCAR / / / LINE INPUT DRIVER / / SEND1, JMS CLBUFI /CASE OF CHECKSUMERROR SEND, TAD LOFF /WAIT FOR LINE READY DCA LINREA JMP DISMIS SENOK, TAD WAITR2 /DISABLE LINE READY DCA LINREA SKSER NOP SMS TAD SENDR2 /ENABLE SEND DCA SENDR JMP DISMIS PAGE WAITS, M2 DCA SYNCN TAD WAITR2 /DISABLE READY FOR SEND FLAG DCA SENDR TAD LIPOJ /ENALBLE LIPO JUMP DCA LIPOF DCA SUM TAD (SYNC /SEND FIRST SYNC JMS SENDCA SKMS /SEND IMEDIATELY NEXT SYNC JMP .-1 TAD (SYNC JMS SENDCA P1 DCA SFLG /SET HEADER FLAG JMS LIPIT1 /INIT LIPI TEST FR SEND JMP DISMIS / / / SENDCA, 0 AND [RUBOUT DCA CHARO TAD (SKMS DCA DISTE TAD CHARO SMOD TAD (-SYNC TAD CHARO SNA CLA JMP I SENDCA JMS LIPIT2 /LIPI CHAR SAVE FOR TEST JMS CHSUM /IGNORE SYNC FOR CHECKSUM JMP I SENDCA / / / CHSUM, 0 TAD SUM /SUM=SUM .EXOR. CHARO CMA AND CHARO MQL TAD CHARO CMA AND SUM MQA AND [RUBOUT DCA SUM JMP I CHSUM / / / * L I P O * ***** / / ************************** START OF SEND PROGRAM / ************************** / IFDEF METH < LIPO, TAD SFLG > /COMING FROM SEND CHAR INTERUPT IFNDEF METH < LIPO, HLT > TAD (JMP .+2 DCA .+1 HLT /CONTAINS JMP TO CORRECT ROUTINE JMP SYNCS /SFLG=1 JMP HEADS /2 JMP MSGS /3 JMP INFOS /4 JMP EOMS /5 JMP SUMS /6 JMP FINS /7 JMP FINS2 /8 HLT /9 HOPE NEVER WILL BE HERE / / / SYNCS, TAD (SYNC JMS SENDCA ISZ SYNCN JMP DISMIS P2 /NEXT IS HEADER DCA SFLG TAD (HEATA DCA HEATAX M3 DCA HEADCN JMP DISMIS / / / HEADS, TAD I HEATAX JMS SENDCA ISZ HEATAX ISZ HEADCN JMP DISMIS P3 DCA SFLG /NEXT IS MSG JMP DISMIS HEADCN, 0 WASYN, SKMR /FOR OD TEST JMP .-1 HLT JMP .-2 TEST1X, CLL CLA DCA SUM TAD (ETBFIA-1 DCA Y0 SUMTES, TAD I Y0 SNA JMP SUMT1 DCA CHARO JMS CHSUM JMP SUMTES SUMT1, TAD (162 DCA CHARO JMS CHSUM TAD SUM DCA I (7777 CIF CDF 0 JMP LIPTOU PAGE MSGS, JMS EQUAL STATE /FIRST IS ADRESS 2 /VALUE JMP NOEQ2 /IS NOT EQUAL 2 M1 TAD WCBFOA /IT IS, DO WE HAVE INFO TO SEND SMA CLA JMP .+5 /NO JMS CLBUFO /YES CLEAR POINTERS (MAY BE A REPEAT P1 DCA LSEND /LSEND=1=SENT JMP ANSWER P1 DCA STATE /STATE = 1 IF NO INFO NOEQ2, ISZ SFLG /STATE IS NOT 2 , NEXT IS EOM DCA LSEND /LSEND=0=IDLE ANSWER, TAD (MSGSTA TAD STATE DCA MSGSTX /ANSWER(STATE) TAD I MSGSTX JMS SENDCA ISZ SFLG /NEXT IS INFO OR EOM JMP DISMIS MSGSTX, 0 MSGSTA, REJ, 30 ACK, 6 /ACK READ, 23 / / CLBUFO, 0 TAD (ETBFOA DCA BFOA TAD (ETHLE DCA WCBFOA JMP I CLBUFO / / / EQUAL, 0 TAD I EQUAL DCA EQUAL1 /FIRST ARG IS ADRESS ISZ EQUAL TAD I EQUAL /SECOND IS VALUE ISZ EQUAL CIA TAD I EQUAL1 SNA CLA ISZ EQUAL /INCREMENT RETURN IF EQUAL JMP I EQUAL EQUAL1, 0 / / / INFOS, JMS GETCA JMP EOMS /NO MOORE CHARS JMS SENDCA JMP DISMIS / / / IFDEF CLOCK < CLOC, 6137 6135 /CHLT DCA SUM /FORCE CHECKSUMERROR JMP REJTRU > EOMS, P6 DCA SFLG /NEXT IS SUM P3 /3 IS EOM JMS SENDCA JMP DISMIS GETCA, 0 TAD WCBFOA SMA CLA JMP I GETCA /NO CHARS TAD I BFOA SNA JMP EOBU ISZ BFOA ISZ WCBFOA ISZ GETCA JMP I GETCA EOBU, DCA WCBFOA JMP I GETCA / / SUMS, TAD SUM CIA TAD [RUBOUT JMS SENDCA P6; IAC DCA SFLG /NEXT IS FINS JMP DISMIS / / / FINS, SMOD /0 FOR SEND ISZ SFLG /SFLG=8, SUM IS IN SHUFT REGISTER!!! JMP DISMIS FINS2, TAD WAITR2 /DISABLE LIPO DCA LIPOF TAD (-7 DCA SYYNC JMS LIPIT4 JMS LIPIT5 FINS3, SMR 6137 /CLOCK CLEAR FLAG 6134 /CLOCK GO JMP WAITR PAGE / / / START OF RECEIVER PROGRAMM / ************************** / / WAITR, CLL CLA IFNDEF METH < HLT > TAD WAITR2 /RESTORE SKIPFLINE DCA LINON DCA SUM P1 DCA RFLG /HEADERFLG TAD [HEATA DCA HEATAX M3 DCA HEADCN DCA REJECT /REJECT=FALSE RMOD /CLEAR FLAG CLL CLA WSYN /WAIT ON 2X SYNC TAD LIPIJ /ENABLE LIPIJMP DCA LIPIF JMS LIPIT3 /INIT RECEIVE SAVE FOR TEST JMP DISMIS / / / / / LIPI, JMS LCHAR /GET CHAR AND BIT IFNDEF METH <HLT> TAD RFLG TAD [JMP .+2 DCA .+1 HLT JMP HEADR /RFGL=1 JMP MSGR /2 JMP INFOR /3 JMP EOMWA /4 WAIT FOR EOM JMP SUMR /5 / / / HLT HLT LCHAR, 0 6135 /STOP CLOCK RMOD SNA JMP DISMIS DCA CHARO TAD (SKMR DCA DISTE TAD CHARO AND [7600 DCA RBIT /SAVE INFO BITS TAD CHARO AND [RUBOUT DCA CHARO TAD [-5 TAD RFLG SNA CLA JMP .+5 /SUM MAY BE EAUL SYNC TAD [-SYNC TAD CHARO SNA CLA JMP DISMIS /ELIMINATE SYNCS JMS LIPIT2 /STORE CHARS FOR TEST JMS LINER JMS CHSUM JMP I LCHAR / / / LINER, 0 TAD RBIT AND [1000 /TEST CARIER OFF BIT SZA CLA LINER2, JMP LINER1 TAD RBIT /TEST PARITY AND [4000 SNA CLA JMP .+4 DCA SUM /SIMULATE CHAECKSUM ERROR JMS CODE 1 TAD RFLG TAD [-5 SNA CLA JMP I LINER /SUM IS EQUAL EOM M3 TAD CHARO /TEST EOM SZA CLA JMP I LINER /NOT EOM JMS CHSUM JMP EOMR /EOMDETECTED LINER3, JMP LINER1 LINER1, TAD NOREC /DISABLE LIPI DCA LIPIF JMS CODE 2 JMP WAITR /ENABLE RECEIVE HEADR, TAD I HEATAX DCA .+3 JMS EQUAL CHARO HLT JMP HEADR1 /NOT OK ISZ HEATAX ISZ HEADCN JMP DISMIS ISZ RFLG /SET MSG FLG JMP DISMIS HEADR1, P4 DCA RFLG /WRONG HEADER DETECTED, WAIT EOM JMS CODE 4 JMP DISMIS EOMWA, M1 DCA SUM /FORCE CHECKSUMM ERROR JMP DISMIS PAGE MSGR, ISZ RFLG /SET RFLG=3 JMS WHATMS JMP ISREJ JMP ISWRIT JMP ISOPMS JMP ISACK JMP ISSTOP ISREJ, P4 /RETURNS HERE IF NOT POSSIBLE MSG DCA RFLG /WAIT EOM JMP DISMIS / / ISWRIT, JMS STATUS JMS BUFI JMP DISMIS / / ISOPMS, JMS STATUS JMS BUFI TAD (36 DCA I BFIA ISZ BFIA NOP /BFIA MAY HAVE OVERFLOW ISZ WCBFIA ISZ ETHCN JMP DISMIS / / ISACK, JMS STATUS JMP DISMIS / / ISSTOP, P1 DCA STOP JMS STATUS JMP DISMIS /WAITEOM / / / STATUS, 0 TAD LSEND SNA CLA JMP .+3 M1 DCA LSEND /LSEND=-1 P1 DCA STATE /STATE=1 JMP I STATUS / / / / BUFI, 0 M1 TAD WCBFIA SMA CLA JMP NOBUF JMS CLBUFI JMP I BUFI NOBUF, P1 DCA REJECT /REJECT CONDITION JMP DISMIS / / / CLBUFI, 0 TAD (ETBFIA DCA BFIA TAD (ETHLE DCA WCBFIA TAD (ETHLE+1 DCA ETHCN JMP I CLBUFI / / / WHATMS, 0 TAD (MSRTA DCA MSRTAX TAD (-5 DCA MSRCN TAD CHARO DCA RMSG WHAT1, TAD I MSRTAX DCA .+3 JMS EQUAL RMSG HLT SKP JMP I WHATMS ISZ WHATMS ISZ MSRTAX ISZ MSRCN JMP WHAT1 JMP I WHATMS MSRTA, 30 /REJ WRITE, 21 OPMSG, 22 6 STOP, 24 MSRTAX, 0 MSRCN, 0 RMSG, 0 / / / / INFOR, TAD REJECT SZA CLA JMP DISMIS TAD CHARO DCA I BFIA ISZ BFIA NOP ISZ WCBFIA NOP ISZ ETHCN JMP DISMIS JMS CLBUFI /CLEAR BUFFER BUT SET REJECT P1 DCA REJECT /BUFFER OVERFLOW JMP DISMIS / / / EOMR, TAD (5 DCA RFLG /EOM DETECTED TAD (NOP /DISABLE LINOFF CHECING FOR LAST CHAR DCA LINER2 JMP DISMIS /WAIT FOR SUM / / / WAITFL, M1 /WAIT FOR BETTER LINE DCA CHERCN JMS CODE 5 JMP WAITR PAGE SUMR, TAD (NOP DCA DISTE /DO NOT CARE FOR MORE FLAGS JMS LIPIT4 TAD CHARO DCA .+2 JMS CODE HLT TAD LINER3 DCA LINER2 /RESTORE LINOFF CHECKING TAD NOREC /DISABLE LIPI DCA LIPIF IFDEF CLOCK <6135 > /STOP CLOCK TAD SUM CIA TAD [RUBOUT SZA CLA JMP CHER /CHECKSUM ERROR NOCHER, TAD (-4 DCA CHERCN JMS CODE 0 JMS EQUAL LSEND -1 JMP OUNOK /NO DCA LSEND /YES, LSEND=0 P1 DCA WCBFOA /OUTPUT ACEPTED OUNOK, TAD RMSG DCA CHARO IFDEF DRIVS < TAD ("R JMS EOLINE > JMS WHATMS JMP EQREJ JMP MINFO JMP MINFO JMP EQACK JMP EQSTOP JMP EQREJ /IS INPOSSIBLE / / CHER, ISZ CHERCN SKP JMP WAITFL /BETTER TIMES JMS CODE 3 M1 TAD WCBFIA /IS BUFFER FULL SNA CLA JMP SEND /YES, DO NOT CLEAR JMP SEND1 EQREJ, JMS EQUAL STATE 2 JMP SUMR2 /NO P4 /YES DCA STATE JMP SUMR2 CHERCN, 0 / / EQSTOP, TAD STATE SNA CLA JMP SUMR2 P4 DCA STATE JMP SUMR2 / / EQACK, TAD (5 DCA STATE JMP SUMR2 / / MINFO, TAD STATE SNA CLA JMP SUMR2 TAD REJECT SZA CLA JMP REJTRU /REJECT IS TRUE TAD (5 /INFO IS WALIS DCA STATE JMS AFIL0 /FILL REST OF BUFA WITH 0 P1 DCA WCBFIA /BUFFER FULL IFDEF DRIVS < TAD ("+ JMS PUONLP > JMP SUMR2 REJTRU, P3 DCA STATE SUMR2, M3 TAD STATE SPA JMP WAITR DCA STATE /STATE=STATE-3 TAD STATIO /SWICH STATION CIA TAD (322 AND [RUBOUT DCA STATIO JMP SEND / / AFIL0, 0 AFIL1, TAD WCBFIA SMA CLA JMP I AFIL0 DCA I BFIA ISZ BFIA NOP ISZ WCBFIA NOP JMP AFIL1 / / / DISMIS, CLL CLA DISTE, NOP SKP HLT TAD (NOP DCA DISTE CIF CDF 0 JMP I (DISMS PAGE / * T T Y H A N D L E R * / / / RUNING ON INTERUPT / TTYIN1, 0 /ENTER WITH AC=0 IS FOR COMMAND DECODER SZA CLA /ENTER WITH AC=1 IS FOR LO1 BUFFER P3 IAC /1 OR 4 IN AC TAD RF TAD [JMP TIN2 DCA TIN2 IFNDEF MTTY < JMP TINRE1 > TAD WF SZA CLA JMP TINRET TIN2, HLT JMP TIN3 /CD CALL IS ALLOWED JMP TINRET /CD IS ALLREADY CALLED JMP TINRET /LO1 IS CALLED, CD MUST WAIT JMP TIN4 /LO1 CALL ALLOWED JMP TIN4 /LO1 CALL DIABLES CD WHICH IS CALLED JMP TINRET /LO1 ALREDY CALLED / / TIN3, P1 DCA RF TAD [CDBU DCA INP TAD [CDBUL DCA INWC IFNDEF ODTEST <KIE> JMS SETCR TAD [215 /SET UP FINITO CHAR DCA FINCA JMS CDINIT /PRINT * JMP TINRET / / TIN4R, 0 P2 DCA RF TAD [LO1BU DCA INP TAD [LO1BUL DCA INWC IFNDEF ODTEST <KIE> JMS SETCR TAD [232 DCA FINCA JMS LOINIT /PRINT # JMP I TIN4R TIN4, JMS TIN4R TINRET, P1 KIE CLA IFDEF ODTEST < TAD RF SZA CLA JMP .-2 IOF > TINRE1, CIF CDF 0 JMP I TTYIN1 / / / / TTYRF, KRB /COMING FROM INTERUP DCA INCA IFDEF DRIVS < TAD INCA CIF CDF 0 JMS I [LPON6 > JMS INTES 203 /^C TEST JMP SHUTD2 JMS INTES /^X TEST 230 JMP ISX JMS INTES 217 /^O TEST JMP ISCO TAD RF SNA CLA JMP DISMIS /NO INPUT ACTIV IGNORE JMS INTES 377 /RUBOUT TEST JMP ISRUB JMS INTES 225 /^U TEST JMP ISCU M1 TAD RF /TEST IF WE ARE IN LO1 MODE SNA CLA JMP FINCA1 /NOT LO1 JMS INTES 223 /^S TEST JMP ISCS /IT IS FINCA1, JMS INTES FINCA, 0 /CONTAINS 215 OR 232 JMP FININ JMS INTES 215 /CR TEST JMP ISCR JMS INTES 211 /TAB TEST JMP ISTAB JMS INTES 212 /LFS ARE IGNORED ON INPUT JMP DISMIS JMP FULTE / / / / / ISRUB, M1 TAD INP DCA INP M1 TAD INWC DCA INWC TAD ["/ JMS ECHO TAD CRCN /LOOK IF INP >=CRCN CIA TAD INP SPA CLA JMP ISRUB2 JMP KICK ISX, IOF JMP TEST1X PAGE ISCS, JMS TIN4R JMP DISMIS ISCO, TAD ["^ JMS ECHO TAD ["O JMS ECHO JMS CRLFIN DCA OUTWC /SET LI0 BUFFER EMPTY JMP KICK SHUTD2, CIF CDF 0 JMP I [SHUTD / ISRUB2, TAD CRCN DCA INP TAD CRWC DCA INWC JMP KICK / / INTES, 0 TAD I INTES ISZ INTES CIA TAD INCA SZA CLA ISZ INTES JMP I INTES / / ISCU, TAD ["^ JMS ECHO TAD ["U JMS ECHO JMS CRLFIN TAD [-7 DCA TABCN JMP ISRUB2 / / FININ, TAD INCA JMS PUTTE JMS CRLFIN JMS INTES 215 JMP INFULL TAD ["^ JMS ECHO TAD ["Z JMS ECHO CDF 0 P1 DCA I (TTYZF CDF 20 JMP INFULL /^Z ONLY FOR LO1 / / ISCR, TAD [-7 DCA TABCN P1 TAD INP DCA CRCN P1 TAD INWC DCA CRWC JMS CRLFIN TAD INCA JMS PUTTE JMP FULTE1 / / ISTAB, TAD INCA DCA I INP TAD [240 DCA INCA JMS PUTTE ISZ TABCN JMP .-2 TAD [-7 DCA TABCN JMP FULTE1 / / FULTE, TAD INCA JMS PUTTE JMS ECHO ISZ TABCN JMP .+3 TAD [-7 DCA TABCN FULTE1, JMS KICKON ISZ INP ISZ INWC JMP DISMIS /NOT YET FULL INFULL, JMS KICKON JMS SETFEL /POINTER MAY BE IN F20 M1 TAD RF SZA CLA JMP INFUL1 /POINTERS ARE SET BY GETLO1!!! TAD [CDBU DCA I [CD TAD [CDBUL DCA I [WCCD INFUL1, CDF 20 DCA RF JMP DISMIS / / KICK, JMS KICKON /KICK ON OUTPUT IF NECESSARY JMP DISMIS / / KICKON, 0 TAD TTYAC SZA CLA JMP I KICKON /TTY IS ACTIV TCF /CLEAR TTY FLAG JMS ECHOG JMP I KICKON /NO MOORE CHARS TLS CLL CLA P1 DCA TTYAC JMP I KICKON / / RF, 0 /READ FLG IS 0 1 FOR CD AND 2 FOR LO1 TABCN, 0 INWC, 0 INCA, 0 CRCN, 0 CRWC, 0 TTYAC, 0 PAGE / / / / / TTYOU1, 0 JMS FLD2 DCA OURET1 IFNDEF MTTY < CIF 0 JMS CLLI0 JMP OURET1 > IFNDEF ODTEST <KIE> TAD WF SZA CLA JMP OURET P1 DCA WF /SET WRITE FLAG TAD (LI0BU DCA OUTP TAD (LI0BUL DCA OUTWC JMS FILEC OURET, P1 KIE CLA IFDEF ODTEST < TAD WF SZA CLA JMP .-2 IOF > OURET1, HLT JMP I TTYOU1 / / TTYSF, TCF /SEND INTERUPT COMES TO HERE JMS ECHOG JMP TTYSF1 /NO MORORE CHARS IN ECHO BUF TLS CLL CLA JMP DISMIS / TTYSF1, DCA TTYAC /CLEAR ACTIV FLAG TAD WF SNA CLA JMP DISMIS /NO OUTPUT JMS FILEC JMP DISMIS / / WF, 0 /WRITE FLAG OUTWC, 0 / / / / ECHO, 0 SNA /ENTER WITH OR WTHOUT CHA TAD INCA DCA I ECHOPU ISZ ECHOPU TAD ECHOPU CIA TAD (EBUMA SMA CLA JMP I ECHO TAD (EBUMI DCA ECHOPU JMP I ECHO / / ECHOG, 0 TAD I ECHOGE SNA JMP I ECHOG /NO CHAR IN BUF DCA ECHOG1 /SAVE CHAR ISZ ECHOG /INCR RETURN DCA I ECHOGE /CLEAR CHAR ISZ ECHOGE TAD ECHOGE CIA TAD (EBUMA SMA CLA JMP .+3 TAD (EBUMI DCA ECHOGE TAD ECHOG1 JMP I ECHOG ECHOG1, 0 / / OUTCA, 0 ECHOPU, EBUMI ECHOGE, EBUMI / / FILEC, 0 TAD (-5 DCA FILEC3 /ONLY 5 CHARS AT A TIME FILEC1, TAD OUTWC SMA CLA JMP CLWF CDF 10 TAD I OUTP CDF 20 DCA OUTCA ISZ OUTP ISZ OUTWC NOP TAD OUTCA SNA JMP CLWF /IGNORE NULLS JMS ECHO TAD OUTCA TAD (-215 SZA CLA JMP .+3 TAD (212 JMS ECHO /CR IS FOLOWED BY LF ISZ FILEC3 JMP FILEC1 FILEC2, JMS KICKON JMP I FILEC FILEC3, 0 / / PAGE / / CRLFIN, 0 TAD (215 JMS ECHO TAD (212 JMS ECHO JMP I CRLFIN / / / PUTTE, 0 CDF 10 DCA I INP CDF 20 JMP I PUTTE / / CDINIT, 0 JMS CRLFIN TAD ("* JMS ECHO JMS KICKON JMP I CDINIT / / LOINIT, 0 JMS CRLFIN TAD ("# JMS ECHO JMS CRLFIN JMS KICKON JMP I LOINIT SETFEL, 0 TAD FLDX DCA .+1 HLT JMP I SETFEL EBUMI, ZBLOCK 130 EBUMA, 0 PAGE LIPIT4, 0 TAD CHARO DCA LIPI4X TAD (-12 DCA LIPI4Y DCA CHARO JMS LIPIT2 ISZ LIPI4Y JMP .-2 TAD LIPI4X DCA CHARO JMP I LIPIT4 LIPI4X, 0 LIPI4Y, 0 LIPIT5, 0 TAD STATE DCA .+2 JMS CODE HLT TAD LSEND DCA .+2 JMS CODE HLT JMP I LIPIT5 / TEST ROUTINES FOR LINE DRIVER CLWF, DCA WF JMS SETFEL TAD (LI0BU DCA I (LI0 TAD (LI0BUL DCA I (WCLI0 CDF 20 JMP FILEC2 SETCR, 0 TAD [-7 DCA TABCN TAD INP DCA CRCN TAD INWC DCA CRWC JMP I SETCR LIPIT1, 0 JMS LIPTE1 TAD (1000 DCA XX1 TAD (4000 DCA XX2 JMP I LIPIT1 LIPIT3, 0 JMS LIPTE1 TAD (0 DCA XX1 TAD (2000 DCA XX2 JMP I LIPIT3 LIPTE1, 0 TAD (-12 DCA LIPCN TAD (NOP /ENABEL SAVE DCA LIPIX2 TAD LIPP0 TAD (14 JMS LIPTE2 DCA LIPP0 TAD LIPP0 DCA LIPPX JMP I LIPTE1 LIPTE2, 0 DCA LIPTX2 TAD LIPTX2 CIA TAD (LIPPMA /TEST FOR BUFFER OVERFLOW SPA CLA JMP .+3 TAD LIPTX2 JMP I LIPTE2 TAD (LIPPMI JMP I LIPTE2 LIPTX2, 0 LIPIT2, 0 LIPIX2, NOP TAD XX1 TAD CHARO JMS LIPTE3 ISZ LIPCN JMP I LIPIT2 TAD .-1 DCA LIPIX2 /ENOUGT PRINTED JMP I LIPIT2 LIPTE3, 0 CDF 30 DCA I LIPPX CDF 20 P1 TAD LIPPX JMS LIPTE2 /TEST OVERFLOW DCA LIPPX JMP I LIPTE3 CODE, 0 TAD I CODE ISZ CODE TAD XX2 JMS LIPTE3 JMP I CODE LIPP0, LIPPMI LIPPX, LIPPMI XX1, 0 XX2, 0 LIPCN, 0 PAGE