      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 
                                                                          