* CARD FLAG CHECK * ZBIO2 EQU * ZBS21 STF CH ZBS22 CLF CH ZBS23 SFC CH RSS JMP *+3 E005 JSB ERMS,I E005 CLF CH-SFC CH ERROR DEF ZBE05 ZBS24 SFS CH JMP *+3 E006 JSB ERMS,I E006 CLF CH-SFS CH ERROR DEF ZBE06 ZBS25 STF CH ZBS26 SFC CH JMP *+3 E007 JSB ERMS,I E007 STF CH-SFC CH ERROR DEF ZBE07 ZBS27 SFS CH RSS JMP ZBIO3 E010 JSB ERMS,I E010 STF CH-SFS CH ERROR DEF ZBE10 JMP ZBIO3 * ZBE05 ASC 13,E005 CLF CH-SFC CH ERROR/ ZBE06 ASC 13,E006 CLF CH-SFS CH ERROR/ ZBE07 ASC 13,E007 STF CH-SFC CH ERROR/ ZBE10 ASC 13,E010 STF CH-SFS CH ERROR/ * * * * * * * * * * * * * * * * * * * SKP * INTERRUPT CONTROL * ZBIO3 JSB ZTCJI SET JSB INSTRUCTION DEF ZB3E ZBS31 STF CH SET THE FLAG ZBS32 STC CH SET THE CONTROL STF INTP TURN I/O SYSTEM ON THEN CLF INTP TURN I/O SYSTEM OFF NOP GIVE IT A CHANCE TI INTERRUPT NOP ZBS33 CLF CH RESET CH FLAG JMP ZBIO4 * ZBE04 ASC 16,E004 CLF 0 DID NOT INHIBIT INT/ * ZB3E NOP CLF INTP TURN OFF INTS E004 JSB ERMS,I E004 DEF ZBE04 * * * * * * * * * * * * * * * * * * * * * * * * SKP * SELECT CODE SCREEN TEST * ZBIO4 LDB Z.10 START WITH LOWEST ADDRESS ZB40 LDA USSC GET SELECT CODE AND Z.77 CPB A IS IT THE CH? JMP Z.CLF+1 YES - SKIP TEST LDA Z.STF SET UP AND ZIOM IOR B STF INSTRUCTION STA Z.STF PUT IT IN PLACE LDA Z.CLF SET UP AND ZIOM IOR B CLF INSTRUCTION STA Z.CLF PUT IT IN LINE ZBS41 CLF CH CLEAR CHANNEL FLAG Z.STF STF CH EXECUTE STF CH INSTRUCTION ZBS42 SFC CH TEST CHANNEL FLAG JMP ZB41 Z.CLF CLF CH CLEAR TEST FLAG CPB Z.77 IS TEST FINISHED? JMP ZBIO5 YES INB NO JMP ZB40 DO NEXT CHANNEL * ZBE11 ASC 14,E011 STF XX SET CARD FLAG// * ZB41 STB ZBTMP SAVE NUMBER LDA B CONVERT CH FOR MESSAGE JSB ZN2AO STA ZBE11+5 LDA ZBTMP RETRIEVE NUMBER E011 JSB ERMS,I E011 DEF ZBE11 * * * * * SKP * CHECK INTERRUPT & HOLD OFF * ZBIO5 JSB ZTCJI DEF ZBI5 CLA SET UP STA ZBF5 FLAGS STA ZBI5 FOR TEST STA ZBTMP ZBS51 STC CH TURN ON ZBS52 STF CH CARD STF INTP AND INTERRUPTS STC 1 * STF 1 * CLC 1 * CLF 1 * NO INTERRUPT JMP *+1,I * SHOULD OCCURR DEF *+1 * HERE JSB *+1,I * DEF *+1 * ZBF5 NOP * ISZ ZBTMP INT. SHOULD BE HERE ISZ ZBTMP CLF INTP TURN I/O SYSTEM OFF LDA ZBI5 DID IT INTERRUPT? SZA JMP *+4 E014 JSB ERMS,I E014 NO INT DEF ZBE14 JMP ZBIO6 ABORT REST OF SECTION LDA ZBTMP CHECK FOR CORRECT INTERRUPT CPA Z.2 ? JMP *+3 E026 JSB ERMS,I E026 INT EXECUTION ERROR DEF ZBE26 ZBS53 CLF CH TURN OFF CH FLAG JMP ZBIO6 GO TO NEXT SECTION * ZBD5 DEF ZBF5-1 ZBD5A DEF ZBF5+1 * ZBE12 ASC 16,E012 INT DURING HOLD OFF INSTR/ ZBE13 ASC 12,E013 SECOND INT OCURRED/ ZBE14 ASC 06,E014 NO INT/ ZBE15 ASC 12,E015 INT RTN ADDR ERROR/ ZBE26 ASC 13,E026 INT EXECUTION ERROR/ * * * * SKP ZBI5 NOP CLF INTP TURN I/O SYSTEM OFF LDA ZBD5 CHECK TO SEE IF ALL CPA ZBF5 INSTRUCTION COMPLETED JMP *+3 YES E012 JSB ERMS,I E012 INT DURING HOLD OFF DEF ZBE12 LDA ZBD5A CHECK RETURN ADDRESS LDB CPTO IF 210X SSB ADD ONE INA CPA ZBI5 JMP ZBI5A E015 JSB ERMS,I E015 INT RTN ADDR ERROR DEF ZBE15 JMP ZBIO6 ZBI5A JSB ZTCJI SET SECOND INT TRAP DEF ZBT5 STF INTP TURN I/O SYSTEM ON JMP ZBI5,I CONTINUE TEST * * ZBT5 NOP CLF INTP TURN I/O SYSTEM OFF E013 JSB ERMS,I E013 SECOND INT OCURRED DEF ZBE13 * * * * * SKP * CLC CH AND CLC 0 * ZBIO6 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI61 ZBS61 STC CH SET CH CONTROL ZBS62 STF CH SET CH FLAG STF INTP TURN ON INTERRUPTS ZBS63 CLC CH CLEAR CH CONTROL NOP GIVE IT A CHANCE NOP CLF INTP TURN INTS OFF ZB60 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI62 ZBS64 CLF CH CLEAR CH FLAG ZBS65 STC CH SET CH CONTROL ZBS66 STF CH SET CH FLAG STF INTP TURN ON INTS CLC INTP CLEAR I/O SYSTEM NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTS JMP ZBIO7 * * ZBI61 NOP CLF INTP TURN OFF INTS E016 JSB ERMS,I E016 CLC CH ERROR DEF ZBE16 JMP ZB60 * ZBI62 NOP CLF INTP TURN OFF INTS E017 JSB ERMS,I E017 CLC 0 ERROR DEF ZBE17 JMP ZBIO7 * ZBE16 ASC 9,E016 CLC CH ERROR/ ZBE17 ASC 9,E017 CLC 0 ERROR/ * * * * * SKP * EXTERNAL & INTERNAL PRESET TEST * ZBIO7 LDB ZS812 CHECK TO SUPPRESS JSB SWRT,I ? JMP H025 YES - SKIP PRESET TEST H024 JSB MSGC,I TELL OPERATOR DEF ZBM24 PRESS PRESET * ZBS71 CLF CH CLEAR CH FLAG STF INTP TURN ON INTS JSB ZTCJI SET TRAP CELL JSB INSTRUCTION DEF ZBI70 HLT 24B WAIT FOR OPERATOR CLA,INA SET UP FLAGS FOR TESTS SFS INTP CHECK INTP FLAG CLA NOT SET SO CLEAR FLAG RAL MOVE TO NEXT FLAG CLF INTP TURN OFF ONTPS ZBS72 SFS CH CHECK CHANNEL FLAG INA NOT SET SO FLAG IT RAL MOVE TO NEXT FLAG LIB 0 CHECK I/O BUSS SZB SHOULD BE ZERO INA NOT SO FLAG IT RAL MOVE TO NEXT FLAG STF INTP CHECK CONTROL ON CARD NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTPS * * * * * * * * * * * * * * * * * * * * * * * SKP ZB70 SLA,RSS CHECK FOR ERRORS JMP *+3 E022 JSB ERMS,I E022 DID NOT CLEAR CONTROL DEF ZBE22 RAR SLA,RSS JMP *+3 E023 JSB ERMS,I E023 I/O LINES NOT CLEAR DEF ZBE23 RAR SLA,RSS JMP *+3 E020 JSB ERMS,I E020 FLAG NOT SET DEF ZBE20 RAR SLA,RSS JMP *+3 E021 JSB ERMS,I E021 DID NOT DIABLE INTS DEF ZBE21 H025 JSB MSGC,I TELL OPERATOR DEF ZBM25 BASIC I/O IS COMPLETE JMP ZBIO,I RETURN TO CALLER * ZBI70 NOP CONTROL FAILED CLF INTP TURN OFF INTPS INA JMP ZB70 * ZBE20 ASC 17,E020 PRESET(EXT) DID NOT SET FLAG/ ZBE21 ASC 19,E021 PRESET(INT) DID NOT DISABLE INTS/ ZBE22 ASC 20,E022 PRESET(EXT) DID NOT CLEAR CONTROL/ ZBE23 ASC 21,E023 PRESET(EXT) DID NOT CLEAR I-O LINES/ ZBM24 ASC 17,H024 PRESS PRESET (EXT&INT),RUN/ ZBM25 ASC 08,H025 BI-O COMP/ SKP ZBIOD DEF *+1 DEF ZBS21 DEF ZBS22 DEF ZBS23 DEF ZBS24 DEF ZBS25 DEF ZBS26 DEF ZBS27 DEF ZBS31 DEF ZBS32 DEF ZBS33 DEF ZBS41 DEF ZBS42 DEF ZBS51 DEF ZBS52 DEF ZBS53 DEF ZBS61 DEF ZBS62 DEF ZBS63 DEF ZBS64 DEF ZBS65 DEF ZBS66 DEF ZBS71 DEF ZBS72 DEC -1 * ZCEND EQU * * * * * * * * * * * * * * * * * * * * * * * * * * HED OPERATOR DESIGN SECTION * OPERATOR DESIGN SECTION * ORG 4000B OPDSN NOP LDA 112B CHECK FOR CONSOLE DEVICE SZA,RSS JMP OPDSN,I NO SO DONT DO OPDSN JSB .FMT TELL OP HE'S IN OPDSN DEF MSG1 LDA SUPA SET STA PRPLA LAST STATEMENT ADDRESS CLA CLEAR STA SUPA,I SOURCE STATEMENT FILE STA DBC USER BUFFER * IRQ JSB .FMT OUTPUT @ DEF .MSG1 JSB GIFO GET INPUT FROM OPERATOR JSB GETB GET INPUT BLOCK JMP INER NO INPUT SEZ,RSS IF IT'S ASCII JMP PCMD IT'S A COMMAND STA TMP SAVE IT SZA,RSS IF IT'S A ZERO JMP INER THEN IT'S AN ERROR SSA IF NEG THEN ERROR JMP INER LDA MXNM CHECK FOR MAX NUMBER CMA ADA TMP SSA,RSS IF OVER 999 JMP INER THEN ERROR JSB GETB GET STATEMENT TYPE JMP DLL DELETE LINE SEZ SHOULD BE ASCII JMP INER NO-SO ERROR SKP JSB FNDST FIND STATEMENT TYPE JMP INER NOT FOUND STA SVB STB TMP+1 ALF,ALF INPRN AND .177 CPA AA IS IT ASCII? JMP TAA YES CPA AI IS IT INTEGER? JMP TAI YES CPA AK IS IT OCTAL? JMP TAK YES JMP INPRC-1 * TAA JSB GETB GET NEXT BLOCK JMP INPRC-1 NO MORE DATA SEZ IS IT ASCII JMP INER NO - THEN ERROR JMP INPRC OK * TAI JSB GETB GET NEXT BLOCK JMP INPRC-1 NO MORE DATA SEZ,RSS IS IT A NUMBER JMP INER NO - THEN ERROR JMP INPRC OK * TAK JSB GETB GET NEXT BLOCK JMP INPRC-1 NO MORE DATA SEZ,RSS IS IT A NUMBER JMP INER NO - THEN ERROR LDA B OK JMP INPRC CLA NO DATA SO MAKE IT ZERO * INPRC LDB SVB SZB STA TMP+2 SZB,RSS STA TMP+3 LDA SVB IS THIS FIRST PRAM SZA,RSS ? JMP *+4 CLB STB SVB JMP INPRN SKP * PUT STATEMENT IN QUE * SYNTX RSS (BAY BE OVERLAYED BY JSB) JMP INER JSB FNDLN FIND LINE NUMBER JMP INSTR NOT FOUND ISZ PRPTR FOUND IT LDA TMP+1 JUST REPLACE IT STA PRPTR,I JUST REPLACE IT LDA TMP+2 JUST REPLACE IT ISZ PRPTR JUST REPLACE IT STA PRPTR,I JUST REPLACE IT LDA TMP+3 JUST REPLACE IT ISZ PRPTR JUST REPLACE IT STA PRPTR,I JUST REPLACE IT JMP IRQ ASK FOR MORE * INSTR LDA PRPLA CHECK ADA .5 TO CMA,INA SEE IF ADA EUPA QUEUE FULL SSA,RSS ? JMP .STR NO - OK STORE IT JSB .FMT YES TELL OPERATOR DEF MSG4 JMP IRQ MSG4 ASC 6,QUEUE FULL/ * .STR LDA TMP MOVE LINE NUMBER LDB PRPTR,I INTO PLACE STA PRPTR,I SZA,RSS IF NUMBER=0 THEN JMP SVLA SAVE LAST ADDRESS STB TMP ELSE ISZ PRPTR MOVE BLOCK LDA TMP+1 IN LDB PRPTR,I TO END STA PRPTR,I OF STB TMP+1 PROGRAM ISZ PRPTR LDA TMP+2 LDB PRPTR,I STA PRPTR,I STB TMP+2 ISZ PRPTR LDA TMP+3 LDB PRPTR,I STA PRPTR,I STB TMP+3 ISZ PRPTR JMP .STR SKP * FIND STATEMENT * FNDST NOP STA SVA SAVE TYPE STB SVB "" LDB STTBD STATEMENT TABLE DEF FNDSL LDA B,I CPA .M2 END OF STANDARD TABLE RSS YES JMP *+3 LDB STUD GET STANDARD USER TABLE JMP FNDSL TRY IT CPA .M1 IS IT THE TERMINATOR JMP FNDST,I YES - NOT FOUND CPA SVA IS IT THIS CHARACTER JMP *+3 YES ADB .4 NO - MOVE TO NEXT STATEMENT JMP FNDSL AND TRY IT INB MOVE TO SECOND CHARACTERS LDA B,I CPA SVB DO THESE COMPARE JMP *+3 YES ADB .3 NO - MOVE TO NEXT STATEMENT JMP FNDSL AND TRY IT ISZ FNDST FOUND - ADJUST RETURN INB LDA B,I RETRIEVE PARAMETER TYPES INB AND PROCESSOR POINTER JMP FNDST,I * * * FIND LINE NUMBER IN QUE =TMP * FNDLN NOP LDB SUPA START AT FIRST STATEMENT STB PRPTR LDA B,I SZA,RSS IF ZERO JMP FNDLN,I THEN NOT FOUND CMA,INA ADD THE TWO ADA TMP NUMBERS SZA,RSS IF EQUAL JMP *+5 THEN FOUND SSA IF IT GOES NEG. JMP FNDLN,I THEN NOT FOUND ADB .4 TRY NEXT STATEMENT JMP FNDLN+2 ISZ FNDLN JMP FNDLN,I SKP * GET INFORMATION FROM OPERATOR * GIFO NOP LDA .D72 INPUT COUNT LDB IBUFD JSB SLIN,I GET INPUT FROM OPERATOR SZA,RSS WAS THERE ANY INPUT JMP *-4 NO - SO ASK AGAIN CPA .D72 DO I NEED A CR-LF? RSS JMP *+4 NO CLA YES JSB SLOP,I LDA .D72 RESTORE COUNT