SKP * PROGRAM COMMAND * PCMD CPA ABY EXIT OPDSN? JMP OPDSN,I YES CPA ALI LIST REQUEST? JMP PLI YES CPA ADL DELETE A LINE? JMP PDL YES CPA AGO START EXECUTION? JMP PGO YES CPA ADB DEFINE BUFFER? JMP PDB YES * NOT FOUND - ERROR INER LDB MSG2 INPUT ERROR CLA,CLE MESSAGE JSB FMTR,I JMP IRQ TRY AGAIN * MSG1 DEF *+1 ASC 7,OPDSN SECTION/ .MSG1 DEF *+1 OCT 40177 MSG2 DEF *+1 ASC 7,ILLEGAL INPUT/ * RUNER STA SVB SAVE ERROR NUMBER ADA .M4 IF >3 THEN SSA ? JMP *+4 FORCE PRINT LDB SW11 CHECK TO PRINT ERROR JSB SWRT,I JMP RUNN NO DON'T PRINT LDB .MSG2 GET MESSAGE CLA,CLE JSB FMTR,I LDB SVB OUTPUT ERROR NUMBER CLA,INA JSB FMTR,I LDB CULN OUTPUT LINE NUMBER CLA,INA JSB FMTR,I RUNN LDA SVB IF >3 THEN ADA .M4 SSA ? JMP IRQ STOP RUNR LDB SW14 CHECK TO CONTINUE JSB SWRT,I RSS JMP IRQ CLA JMP PGOR * .MSG2 DEF *+1 ASC 9,ERROR # IN LINE #/ SKP * LIST PROGRAM PLI LDA FWAM SET STARTING OF LIST STA PRPTR POINTER JSB GETB GET NEXT BLOCK CLA,INA NO DATA SEZ,SZA,RSS IF ASCII OR ZERO THEN ERROR JMP INER CMA,INA STA TMP SAVE FIRST LINE NUMBER JSB GETB GET NEXT BLOCK LDA MXNM NO DATA SEZ,SZA,RSS IF ASCII OR ZERO THEN ERROR JMP INER CMA STA TMP+1 SAVE LAST LINE NUMBER CMA,INA CHECK FIRST <= LAST ADA TMP SSA ? JMP INER NO - INPUT ERROR PLIL LDA PRPTR,I CHECK TO PRINT STATEMNET SZA,RSS IS IT THE END OF LIST JMP LIEND YES ADA TMP NO SSA < FIRST REQ JMP LINXT YES LDA PRPTR,I ADA TMP+1 SSA,RSS > LAST REQ JMP LIEND YES LDA PRPTR,I CONVERT AND CCB ADB IBUFD PACK CLE STATEMENT JSB I2AS,I NUMBER LDB IBUFD ADD NUMBER TO POINTER ADB .2 RBL STB IBUFP LDA SPC PUT SPACE IN BUFFER JSB A2BUF ISZ PRPTR LDA PRPTR,I * ISZ PRPTR * CCE * SET TO LOOK FOR POINTER JSB FNDST * FIND STATEMENT JMP OPDSN+1 * ABORT IF ANY ERROR STA TMP+2 * SAVE STATEMENT STB SVB * SAVE PRAM TYPES ALF,ALF * AND .177 * PUT JSB A2BUF * STATEMENT TYPE LDA TMP+2 * IN AND .177 * BUFFER JSB A2BUF LDA SPC ADD SPACE TO BUFFER JSB A2BUF SKP LDA SVB RETRIEVE PRMS TYPES ALF,ALF MOVE TO FIRST PARAMETER PLIP LDB PRPTR,I CHECK IF NO PARAMETER SZB,RSS ? JMP PLIC NO SO DON'T PROCESS IT AND .177 CPA AA IS IT ASCII? JMP PAA YES CPA AI IS IT INTEGER? JMP PAI YES CPA AK IS IT OCTAL? JMP PAK YES JMP PLIC TYPE NOT FOUND SO SKIP IT * PAA LDA PRPTR,I GET CHARACTERS ALF,ALF AND .177 FIRST ONE TO BUFFER JSB A2BUF LDA PRPTR,I AND .177 SECOND ONE TO BUFFER JSB A2BUF JMP PLIC * PAI LDA PRPTR,I CLB SSA,RSS IF POS CCB MOVE BUFFER POINTER BACK ONE ADB IBUFP STB IBUFP CLE,ERB JSB 123B,I PAE LDA IBUFP ADA .6 STA IBUFP JMP PLIC * PAK LDA PRPTR,I LDB IBUFP CLE,ERB JSB 124B,I JMP PAE SKP PLIC ISZ PRPTR MOVE TO NEXT PARAMETER LDA SPC ADD SPACE TO BUFFER JSB A2BUF LDA SVB SZA,RSS JMP *+4 CLB STB SVB JMP PLIP LDA A/ ADD TERMINATOR JSB A2BUF LDB IBUFD CLA,CLE OUTPUT TO SLOW DEVICE JSB FMTR,I JMP PLIL DO NEXT INSTRUCTION * LIEND LDB MSG3 OUTPUT CLA,CLE LIST END JSB FMTR,I JMP IRQ * MSG3 DEF *+1 ASC 7,**LIST END**/ * LINXT LDA PRPTR SKIP OVER ADA .4 STATEMENT STA PRPTR JMP PLIL * SKP * DELETE A LINE OR THE PROGRAM * PDL JSB GETB GET LINE NUMBER JMP INER NOT FOUND THEN ERROR SEZ,RSS IF IT'S ASCII JMP PDLA THEN CHECK FOR ALL STA TMP SAVE IT JSB FNDLN FIND IT JMP IRQ NOT FOUND ADB .4 PDLL LDA B,I DELETE STA PRPTR,I THE LINE ISZ PRPTR AND MOVE LDA B REST CMA OF PROGRAM ADA LWAM UP SSA JMP IRQ INB JMP PDLL * PDLA CPA AAL IF ASCII AL THEN DELETE ALL JMP OPDSI OF THE CURRENT PROGRAM JMP INER IF NOT IT'S AN ERROR * AAL ASC 1,AL * * * * * * * * * * * * * * * SKP * PROCESS GO * PGO LDA GSPTS CLEAR GO SUB TABLE STA GSPTR JSB GETB GET STARTING LINE NUMBER CLA,CCE NO NUMBER FAKE IT SEZ,RSS IF IT'S ASCII JMP INER THEN IT'S AN ERROR SZA IF IT'S ZERO JMP *+6 LDB FWAM START AT BEGINNING STB PRPTR LDA PRPTR,I STA TMP JMP *+4 STA TMP PGOL JSB FNDLN JMP INER ISZ PRPTR LDA PRPTR,I STA TMP+1 ASCII STATEMENT ISZ PRPTR LDA PRPTR,I STA TMP+2 PARAM A ISZ PRPTR LDA PRPTR,I STA TMP+3 PARAM B ISZ PRPTR LDA TMP STA CULN SAVE CURRENT LINE NUMBER SZA,RSS JMP IRQ LDA PRPTR,I STA TMP NEXT LINE NUMBER LDA TMP+2 GET PARAM A LDB TMP+3 GET PARAM B JSB TMP+1,I GO TO ROUTINE PGOR STA SVB LDB SW9 CHECK FOR ABORT JSB SWRT,I JMP IRQ LDA SVB SSA,RSS WAS THERE AN ERROR? JMP *+3 NO CMA,INA YES - MAKE NUMBER POSITIVE JMP RUNER AND REPORT IT SZA,RSS WAS THERE A LINE CHANGE JMP PGOL+2 STA TMP YES JSB FNDLN FIND IT RSS JMP PGOL+2 FOUND PGOE CLA,INA NOT FOUND JMP RUNER SO RUN ERROR SKP * DEFINE BUFFER * PDB JSB GETB GET BUFFER COUNT JMP INER NO INPUT SO ERROR SEZ,RSS IF IT'S ASCII JMP INER THEN IT'S AN ERROR SZA,RSS IF IT'S ZERO JMP INER THEN IT'S AN ERROR CMA,INA STA TMP SAVE THE NUMBER JSB GETB GET TYPE JMP INER NO INPUT SO ERROR SEZ IF IT'S A NUMBER JMP INER IT'S AN ERROR CPA APA IS IT PACKED ASCII JMP DBPA YES ALF,ALF MOVE CHR TO LOW ORDER AND .177 MASK OFF UPPER CPA AA IS IT ASCII JMP DBA YES CPA AI IS IT INTEGER JMP DBI YES CPA AK IS IT OCTAL JMP DBK YES JMP INER NONE OF ABOVE SO ERROR * DBIC NOP LDB TMP CHECK IF ADB DBIC,I NUMBER SSB IS TOO LARGE? JMP INER YES STA DBT SAVE BUFFER TYPE LDA TMP STA DBC AND COUNT LDA DBD SET-UP BUFFER STA IBUFP POINTER ISZ DBIC JMP DBIC,I * DBIN NOP CALL FOR INPUT STA SVB SAVE INPUT NUMBER LDA SVB LDB IBUFD JSB 104B,I SZA,RSS JMP *-4 JMP DBIN,I SKP DBINC NOP CLA CLEAR STA IBUF * STA IBUF+1 * STA IBUF+2 * STA IBUF+3 BUFFER LDA .6 CALL JSB DBIN FOR INPUT CPA SVB TEST FOR CR/LF RSS YES JMP DBINC,I NO CLA JSB SLOP,I DO CR/LF JMP DBINC,I EXIT SKP DBPA JSB DBIC INPUT COUNT CHECH DEC 300 MAX INPUT LDA DBD SET-UP BUFFER RAL POINTER STA IBUFP DBPAL CLA,INA GET ONE CHARACTER JSB DBIN LDA IBUF PUT IT ALF,ALF IN AND .177 JSB A2BUF THE BUFFER ISZ TMP IS THAT ALL JMP DBPAL NO JMP DBEX YES DBA JSB DBIC INPUT COUNT CHECK DEC 150 MAX INPUT ALLOWED DBAC CLA,INA GET ONE CHARACTER JSB DBIN LDA IBUF LOAD IT ALF,ALF ROTATE IT AND .177 MASK OFF UPPER STA IBUFP,I PUT IT IN BUFFER ISZ IBUFP MOVE TO NEXT LOCATION ISZ TMP IS THAT ALL JMP DBAC NO DBEX CLA YES - DO A CR-LF JSB SLOP,I JMP IRQ * DBI JSB DBIC INPUT COUNT CHECK DEC 150 MAX INPUT DBIL JSB DBINC CALL FOR INPUT LDB IBUFD CONVERT CLA,CLE INPUT JSB AS2N,I STA IBUFP,I STOR IT ISZ IBUFP MOVE TO NEXT SPOT ISZ TMP IS THAT ALL JMP DBIL JMP DBEX * DBK JSB DBIC INPUT COUNT CHECK DEC 150 MAX INPUT DBKL JSB DBINC CALL FOR INPUT LDB IBUFD CONVERT IT CCA,CLE JSB AS2N,I STA IBUFP,I STORE IT ISZ IBUFP MOVE TO NEXT ISZ TMP IS THAT ALL JMP DBKL NO JMP DBEX YES SKP * WAIT FOR OPERATOR * WAP NOP LDB WAPM GET MESSAGE CLA,CLE JSB FMTR,I OUTPUT IT LDB CULN WITH CURRENT LINE NUMBER CLA,INA JSB FMTR,I WAPL LDA .D25 CALL FOR JSB DBIN INPUT LDA IBUF CHECK IF "CO" CPA ACO ? JMP WAPX YES CPA AST STOP JMP IRQ YES * WAPE LDB MSG2 TELL OPERATOR OF ERROR CLA,CLE JSB FMTR,I JMP WAPL AND TRY AGAIN * WAPX CLA NOP JMP WAP,I CONTINUE * WAPM DEF *+1 ASC 4,# WAIT/ * * * * * PROCESS GO TO STATEMENT * GTP NOP SZA IF ZERO SSA OR NEG. JMP PGOE THEN ERROR JMP GTP,I SKP * PROCESS GOSUB * GSP NOP SZA IF LINE =0 SSA OR NEG. JMP PGOE THEN ERROR ISZ GSPTR MOVE TO NEXT BLOCK STB SVB SAVE REP COUNT LDB GSPTR CHECK CPB GSPTE IF THERE IS ROOM JMP GSPE NO - SO ERROR LDB PRPTR SAVE PROGRAM POINTER STB GSPTR,I LOCATION ISZ GSPTR LDB SVB GET REP COUNT SZB,RSS INB SSB,RSS IF NOT NEG. CMB,INB MAKE IT NEG STB GSPTR,I JMP GSP,I * GSPE LDA .2 JMP RUNER * GSPTR NOP GSPTS DEF * BSS 30 GSPTE DEF *-2 * * * * * * * * * * * * * * * * * * * * SKP * PROCESS RTN STATEMENT * RTP NOP LDA GSPTR CHECK IF THERE HAS CPA GSPTS BEEN A GOSUB JMP RTPE NO - THEN ERROR ISZ GSPTR,I FINISHED WITH LOOP JMP RTPN NO LDA GSPTR YES ADA .M2 MOVE POINTER BACK TWO STA GSPTR INA RESET LINE NUMBER LDA A,I STA PRPTR LDA PRPTR,I STA TMP CLA JMP RTP,I * RTPN CCA ADA GSPTR LDA A,I ADA .M2 LDA A,I JMP RTP,I * RTPE LDA .3 JMP RUNER * * * * * * * * SKP * OUTPUT A MESSAGE * MSP NOP STA MSPM+2 STB MSP2 LDB MSPM CLA,CLE JSB FMTR,I CLA,INA LDB MSP2 JSB FMTR,I LDA MSPM+2 CHECK IF STOP CPA AST ? JMP *+3,I YES CLA JMP MSP,I * DEF IRQ MSP2 NOP MSPM DEF *+1 ASC 4,* XX #/ * * * * PROCESS DELAY STATEMENT * DLP NOP SZA IF IT'S ZERO FORGET IT JSB TMRR,I GO WAIT JMP DLP,I NOW RETURN TO CALLER * * * * * * * * * * * * * * * * * * * * SKP MXNM DEC 9999 SW14 OCT 40000 SW11 OCT 4000 SW9 OCT 1000 A/ OCT 57 AI OCT 111 AK OCT 113 ABY ASC 1,BY ALI ASC 1,LI ADL ASC 1,DL AGO ASC 1,GO ADB ASC 1,DB APA ASC 1,PA ACO ASC 1,CO AST ASC 1,ST MINUS OCT 55 COMA OCT 54 SPC OCT 40 IBUFP NOP SVB NOP PRPTR NOP IBUFD DEF IBUF NOP IBUF BSS 13 OPEND EQU * * * * SKP STTBD DEF *+1 * ASC 1,WA ASC 1, DEF WAP * ASC 1,GT ASC 1,I DEF GTP * ASC 1,GS ASC 1,II DEF GSP * ASC 1,RT ASC 1, DEF RTP * ASC 1,MS ASC 1,AI DEF MSP * ASC 1,TD ASC 1,I DEF DLP * DEC -2 DEC -2 DEC -2 * * * * * * * * SKP STUDD ASC 1,SR ASC 1, DEF SRP * ASC 1,SC ASC 1,KI DEF SCP * ASC 1,CP ASC 1,II DEF CPP * ASC 1,OC ASC 1,AI DEF OCP * ASC 1,PC ASC 1, DEF CLP * ASC 1,FF ASC 1,AI DEF FFP * ASC 1,VF ASC 1,AI DEF VFP * DEC -1 DEC -1 DEC -1 SKP MCTM0 ASC 13,H040 PWR OFF LP,PRESS RUN/ MCTM1 ASC 17,H041 PWR ON, ON LINE LP,PRESS RUN/ MCTM2 ASC 15,H042 LP TO OFF LINE,PRESS RUN/ MCTM3 ASC 15,H043 LP TO ON LINE,PRESS RUN/ MCTM4 ASC 15,H044 OPEN DRUM GATE,PRESS RUN/ MCTM6 ASC 17,H046 REMOVE PAPER,CLOSE DRUM GATE, ASC 05,PRESS RUN/ MCTM7 ASC 16,H047 RESTORE PAPER, ON LINE LP, MCTM8 ASC 5,PRESS RUN/ SPC 2 EX1 OCT 100001 OCT 120001 OCT 100001 OCT 110001 SPC 1 MSG DEF MSG26 DEF MSG25 DEF MSG27 DEF MSG28 SPC 1 VFU10 OCT 100111 VFU9 OCT 100110 VFU11 OCT 100112 VFU12 OCT 100113 SPC 1 ER60 ASC 01,60 ER61 ASC 01,61 ER62 ASC 01,62 ER63 ASC 01,63 SPC 1 MSG25 ASC 02,CH9/ MSG26 ASC 03,CH10/ MSG27 ASC 03,CH11/ MSG28 ASC 03,CH12/ SPC 1 SKP RDYI NOP STA SAVE5 SAVE A STB SAVE6 AND B-REG RDY1 LIA CH GET STATUS AND MSK MASK OFF BITS 15 & 14 CPA RDY4 IS LP RDY ? JMP RDY2 YES EQ32 JSB ERMS,I REPORT ERROR DEF RDY3 LP NOT RDY JMP RDYI,I RETURN P+1 RDY2 CLB CHECK DEMAND BIT DMD1 LIA CH GET STATUS SLA,RSS BUSY ? JMP DMD2 YES LDA SAVE5 RESTORE LDB SAVE6 A&B-REG ISZ RDYI RETURN P+2 JMP RDYI,I EXIT DMD2 INB,SZB TIMEOUT ? JMP DMD1 LOOP E036 JSB ERMS,I REPORT TIMEOUT ERROR DEF DMD3 E036 DEMAND BUSY CLC 0,C JMP TSTNN,I ABORT CURRENT TEST SPC 1 SAVE5 OCT 0 SAVE6 OCT 0 MSK OCT 140000 RDY4 EQU LS00 RDY3 ASC 08,E032 LP NOT RDY/ DMD3 ASC 09,E036 DEMAND BUSY/ FWAA EQU * END