      SKP 
*               TOP OF FORM 
      SPC 1 
FF    NOP 
      STA SAVE3     SAVE A-REG
      LDA VFU0      TOP OF FORM CODE
      JSB OTCH      TRANSMIT CODE 
      LDA LS00      DELAY UNTIL 
      JSB OTCH        FF IS FINISHED
      LDA SAVE3     RESTORE A-REG.
      JMP FF,I      RETURN P+2
SAVE3 OCT 0 
      SPC 4 
*               OUTPUT A CR/LF TO LINE PRINTER
      SPC 1 
RTLF  NOP 
      STA SAVE
      LDA VFU2      SINGLE SPACE CODE 
      JSB OTCH      SEND CHARACTER
      LDA SAVE      RESTORE A 
      JMP RTLF,I
SAVE  OCT 0 
      SKP 
*               OUTPUT A-REG TO L.P. USING INTERRUPT
*               SYSTEM FOR PRINT COMPLETED. 
      SPC 1 
OUTI  NOP 
      STA SAVE1     SAVE A-REG
      STB SAVE2     SAVE B-REG
OUTIA OTA CH        TRANSFER WORD 
      STF 0         TURN ON INTERRUPT SYS 
OUTIB STC CH,C      SEND WORD 
      SPC 1 
      LDA TIMEA     DELAY FOR 
      JSB TMRR,I      TRANSMISSION
      CLF 0         TURN OFF INTERRUPT
      JSB RDY,I     CHECK LP STATUS 
      RSS           LP NOT READY
      JMP *+3       LP READY
      LDA SAVE1     RESTORE A-REG 
      JMP OUTIA     TRY AGAIN 
OUTID CLC CH,C
E031  JSB ERMS,I    REPORT ERROR
      DEF MS031 
      CLC 0,C 
      JMP TSTNN,I   EXIT CURRENT TEST 
      SPC 1 
OUTIC CLF 0         TRANSMISSION COMPLETED
      LDA SAVE1     RESTORE A-REG 
      LDB SAVE2     RESTOR B-REG
      JMP OUTI,I    RETURN
* 
* 
*               OUTPUT A-REG TO L.P. USING SKIP ON
*               FLAG SET FOR PRINT COMPLETED. 
      SPC 1 
OTCH  NOP 
      STA SAVE1     SAVE A-REG
      STB SAVE2     SAVE B-REG
      CLB           SET UP TIMEOUT COUNT
OTCHA OTA CH        TRANSFER WORD TO BUFFER 
OTCHB STC CH,C      TRANSMIT WORD 
OTCHC SFS CH        WORD COMPLETED ?
      JMP OTC1      NO
OTCHG LDA SAVE1     RESTORE A-REG 
      LDB SAVE2     RESTORE B-REG 
OTCHE CLC CH,C
      JMP OTCH,I    RETURN
OTC1  INB,SZB       TIMEOUT ? 
      JMP OTCHC     LOOP
      LDA M1000      WAIT 1000 MS MAX FOR FORM FEED 
      STA SCP 
OTCHX CLA,INA       =1 FOR A 1 MS WAIT
      JSB TMRR,I
OTCHF SFC CH        INCREASE DELAY TIME 
      JMP OTCHG       FOR A 
      ISZ SCP       DONE WITH 48 1 MS WAITS?
      JMP OTCHX     NO - GO DO ANOTHER 1 MS WAIT
      JSB RDY,I     CHECK LP STATUS 
      RSS           LP NOT RDY
      JMP *+4       REPORT ERROR TIMEOUT
      LDA SAVE1     RESTORE A-REG 
      CLB           RESET TIMEOUT COUNT 
      JMP OTCHA     TRY AGAIN 
E030  JSB ERMS,I    FLAG FAILED TO SET AFTER OUTPUT 
      DEF MS030 
      CLC 0,C 
      JMP TSTNN,I   EXIT CURRENT TEST 
SAVE1 BSS 1 
SAVE2 BSS 1 
SAVE4 OCT 0 
MS031 ASC 11,E031 LP FAILED TO INT/ 
MS030 ASC 12,E030 FLAG FAILED TO SET/ 
      SKP 
TCJMP NOP 
      LDA JMPI      TRAP CELL JUMP
TCJ   STA CH        STORE IN TRAP CELL
      LDA TCJMP,I   LOCATION TO JUMP
      STA JMPIL     STORE INSTRUCTION 
      ISZ TCJMP     INCREMENT RETURN
      JMP TCJMP,I   RETURN P+2
JMPI  JMP *+1,I     JUMP INSTRUCTION
JMPIL NOP 
      SPC 4 
PRTT  NOP 
      LDA EVFC      GET VFU CODE
      JSB OUTI      OUTPUT VFU
      JSB OTLP      TELL OPERATOR 
      JMP PRTT,I    RETURN
EVFC  NOP 
PITB  NOP 
EXCT  NOP 
EXPN  NOP 
      SKP 
*               OTLP PERFORMS TEXT STRING OUTPUT TO LP
      SPC 1 
OTLP  NOP 
      JSB RDY,I     CHECK LP STATUS 
      NOP 
OTPP  LDA B,I       GET FIRST CHARACTER 
      ALF,ALF       POSITION UPPER CHARACTER
      AND .377      MASK
      CPA .57       TEST FOR '/'
      JMP OTLP,I    EXIT
      JSB OUTI      WRITE CHARACTER 
      LDA B,I       GET CHARACTER AGAIN 
      AND .377      MASK LOWER CHARACTER
      CPA .57       TEST FOR '/'
      JMP OTLP,I    EXIT
      JSB OUTI      WRITE CHARACTER 
      INB           MOVE PTR TO NEXT WORD 
      JMP OTPP      CONTINUE
      SPC 2 
.377  OCT 377 
.57   OCT 57
      SKP 
      ORG ZCEND 
TST.0 EQU *         CLEAR LP
TST1  NOP             BEFORE
      LDA TST1          RUN 
      STA TSTNN           * 
      CLC 0,C             * 
      CLA           INSURE WD ON CONTROLLER NOT PRINT CM
TSTO  OTA CH              * 
      JSB TST2,I    CALL BI/O 
      JMP *+2 
TST2  DEF TST00 
      CLC 0,C       CLEAR LP
      JSB RDY,I     CHECK LP STATUS 
      NOP 
      JMP TST.0,I 
      SPC 2 
*               TEST 01 
*               MANUAL CONTROL TEST (MCT) 
      SPC 1 
TST01 EQU * 
MCT   NOP           MANUAL CONTROL TEST 
      LDA MCT       STORE 
      STA TSTNN       RETURN ADDRESS
      LDB BTCK      CHECK 
      JSB SWRT,I      FOR OPERATOR
      JMP MCT,I         INTERVENTION
H040  JSB MSGH,I    TURN LP PWR OFF PRESS RUN 
      DEF MCTM0 
      LDA EXP1      EXPECTED DATA 
      LDB ER50      STATUS ERROR MESSAGE
      JSB CKST      CHECK STATUS
      SPC 1 
H041  JSB MSGH,I    TURN LP PWR ON, 
      DEF MCTM1       READY LP,PRESS RUN
      LDA EXP2      EXPECTED STATUS 
      LDB ER51      STATUS ERROR MESSAGE
      JSB CKST      CHECK STATUS
      SPC 1 
H042  JSB MSGH,I    SET LP TO OFF LINE PRESS RUN
      DEF MCTM2 
      LDA EXP3      EXPECTED STATUS 
      LDB ER52      STATUS ERROR MESSAGE
      JSB CKST      CHECK STATUS
      SPC 1 
H043  JSB MSGH,I    SET LP TO ON LINE PRESS RUN 
      DEF MCTM3 
      LDA EXP2      EXPECTED STATUS 
      LDB ER53      STATUS ERROR MESAGE 
      JSB CKST      CHECK STATUS
      SPC 1 
H044  JSB MSGH,I    OPEN DRUM GATE
      DEF MCTM4 
      LDA EXP4      EXPECTED STATUS 
      LDB ER54      STATUS ERROR MESSAGE
      JSB CKST      CHECK STATUS
      SPC 1 
      SPC 1 
H046  JSB MSGH,I    REMOVE PAPER,CLOSE DRUM GATE
      DEF MCTM6 
      LDA EXP4      EXPECTED STATUS 
      LDB ER55      STATUS ERROR MESSAGE
      JSB CKST      CHECK STATUS
      SPC 1 
H047  JSB MSGH,I    RESTORE PAPER 
      DEF MCTM7 
      JSB FF        TOP OF FORM 
      JMP MCT,I     EXIT
      SPC 2 
ER50  ASC 01,50 
ER51  ASC 01,51 
ER52  ASC 01,52 
ER53  ASC 01,53 
ER54  ASC 01,54 
ER55  ASC 01,55 
DMSG  DEF MSG50 
      SKP 
*               TEST 02 
*               RIPPLE PRINT TEST (RPT) 
      SPC 1 
TST02 EQU * 
RPT   NOP           RIPPLE PRINT TEST 
      LDA RPT       STORE 
      STA TSTNN       RETURN ADDRESS
      JSB TCJMP     TRAP CELL JUMP
      DEF OUTIC 
      LDA DM96      -96 NUMBER OF PRINTING
      STA CNTR        CHARACTERS
      LDA .40       FIRST PRINTING CHARACTER
      STA CHAR      STORE 
      STA CHAR1       CHARACTER 
RPTC  LDB DM136     -136 NUMBER OF CHARACTER/LINE 
RPTA  LDA CHAR      GET CHARACTER 
      JSB OUTI      SEND CHARACTER
      ISZ CHAR      NEXT
      LDA CHAR        CHARACTER 
      CPA .200      LAST CHARACTER ?
      JMP *+2       YES 
      JMP RPTB      NO
      LDA .40       FIRST CHARACTER 
      STA CHAR      RESTORE CHARACTER 
RPTB  INB,SZB       LAST CHARACTER/LINE 
      JMP RPTA      NO
      JSB RTLF      CARRIAGE RETURN LINE FEED 
      ISZ CHAR1     INCREMENT CHARACTER 
      LDA CHAR1       FOR NEXT
      STA CHAR          ROW 
      ISZ CNTR      LAST ROW ?
      JMP RPTC      LOOP
      JSB FF        TOP OF FORM 
      JMP RPT,I     EXIT
      SKP 
*               TEST 03 
*               TRIANGULAR PRINT TEST (TPT) 
      SPC 1 
TST03 EQU * 
TPT   NOP           TRIANGULAR PRINT TEST 
      LDA TPT       STORE 
      STA TSTNN       RETURN ADDRESS
      JSB TCJMP     TRAP CELL JUMP
      DEF OUTIC 
      LDB DM136     -136
      STB TMP       STORE COUNT 
TPTA  LDA CHARM     " M " 
      LDB TMP       NUMBER OF PRINT POSITION/LINE 
TPTB  JSB OUTI      SEND CHARACTER
      INB,SZB       END OF LINE 
      JMP TPTB      NO
      ISZ TMP       DECREMENT LINE NUMBER 
      RSS 
      JMP TPTC      EXIT
      JSB RTLF      CARRIAGE RETURN LINE FEED 
      JMP TPTA      LOOP
TPTC  JSB FF        TOP OF FORM 
      JMP TPT,I     EXIT
      SKP 
*               TEST 04 
*               VERTICAL FORMAT CONTROL TEST (VFCT) 
      SPC 1 
TST04 EQU * 
VFCT  NOP           VERTICAL FORMAT CONTROL TEST
      LDA VFCT      STORE 
      STA TSTNN       RETURN ADDRESS
      JSB TCJMP     TRAP CELL JUMP
      DEF OUTIC 
      CLA           POINT TO
      STA PITB        TABLE 
VF1   LDA DT1       NUMBER OF TIMES, TABLE ADDRESS
      ADA PITB      NEXT ADDRESS
      LDA A,I       GET NUMBER
      CMA,INA       MAKE NEG
      STA EXCT      STORE NUMBER
      LDA DT2       VFU TABLE ADDRESS 
      ADA PITB      NEXT ADDRESS
      LDA A,I       GET VFU CODE
      STA EVFC      STORE CODE
EVFD  LDA DT3       MESSAGE TABLE ADDRESS 
      ADA PITB      NEXT ADDRESS
      LDB A,I       GET MESSAGE 
      JSB PRTT      PRINT VFU CODE AND MESSAGE
      ISZ EXCT      PRINT CODE AGAIN ?
      JMP EVFD      YES 
      LDA PITB      TABLE POINTER 
      CPA D27       LAST VFU CODE & MESSAGE ? 
      JMP VF2 
      ISZ PITB      NEXT POINT IN TABLE 
      JMP VF1X,I    LOOP  (USE BASE PAGE LINK)
      SPC 1 
VF2   CLA           POINT TO
      STA PITB        TABLE 
VF3   LDA DT1E      EXPECTED DATA TABLE 
      ADA PITB      NEXT ADDRESS
      LDA A,I       GET DATA
      STA EXPN        AND STORE 
      LDA DT2E      VFU TABLE ADDRESS 
      ADA PITB      NEXT ADDRESS
      LDA A,I       GET VFU CODE
      STA EVFC        AND STORE 
      LDA DT3E      MESSAGE TABLE ADDRESS 
      ADA PITB      NEXT ADDRESS
      LDB A,I       GET MESSAGE 
      JSB PRTT      PRINT VFU CODE AND MESSAGE
      LDA DT4E      ERROR CODE TABLE
      ADA PITB      NEXT ADDRESS
      LDB A,I       GET ERROR CODE
      LDA EXPN        AND STORE 
      JSB CKST      CHECK STATUS
      LDA PITB      TABLE POINTER 
      CPA .3        LAST VFU CODE & MESSAGE ? 
      JMP VF4       YES 
      ISZ PITB      NEXT POINTER IN TABLE 
      JMP VF3       LOOP
VF4   JSB FF        TOP OF FORM 
      JMP VFCTX,I   EXIT (DOUBLE INDIR THRU BASE PAGE)
      SPC 1 
      SKP 
*               TEST 05 
*               CHARACTER SET TEST (CST)
      SPC 1 
TST05 EQU * 
CST   NOP           CHARACTER SET TEST
      LDA CST       STORE 
      STA TSTNN       RETURN ADDRESS
      CLA           FIRST CHARACTER 
CSTA  LDB DM136     -136 NUMBER OF CHARACTER/LINE 
      JSB OTCH      SEND CHARACTER
      INB,SZB       LAST CHARACTER IN COLUMN
      JMP *-2       NO
      JSB RTLF      CR/LF 
      INA           NEXT CHARACTER
      CPA .200      LAST CHARACTER ?
      RSS           YES 
      JMP CSTA      NO
      JSB FF        TOP OF FORM 
      JMP CST,I     EXIT
      SKP 
*               TEST 06 
*               OVER PRINT TEST 
      SPC 1 
TST06 EQU * 
OPT   NOP           OVER PRINT TEST 
      LDA OPT 
      STA TSTNN 
      LDA DH        CHARACTER "H" 
      LDB DM136     -136 NUMBER OF CHARACTER/LINE 
      JSB OTCH      SEND CHARACTER
      INB,SZB       LAST CHARACTER IN COLUMN ?
      JMP *-2       NO
      LDA LS00
      JSB OTCH
      LDA DI        CHARACTER "I" 
      LDB DM136     -136
      JSB OTCH      SEND CHARACTER
      INB,SZB       LAST CHARACTER IN COLUMN ?
      JMP *-2       NO
      JSB RTLF      PRINT CHARACTER 
      LDB DM136     SET UP COUNT
      LDA AA        ASCII A 
      JSB OTCH      SEND CHARACTER
      INB,SZB       LAST CHARACTER ?
      JMP *-2       NO LOOP 
      LDB DM136     SET UP COUNT
      INA           ASCII B 
      JSB OTCH      SEND CHARACTER
      INB,SZB       LAST CHARACTER ?
      JMP *-2       NO LOOP 
      JSB RTLF      PRINT ONLY CHARACTER ' A '
      JSB FF        TOP OF FORM 
      JMP OPT,I     EXIT
      SKP 
*               TEST 07 
*               DMA OPERATION TEST (DMA)
      SPC 1 
TST07 EQU * 
DMA   NOP           DMA OPERATION TEST
      LDA DMA       STORE 
      STA TSTNN       RETURN ADDRESS
      LDA CPTO      CHECK FOR 
      AND .204        DMA OPTION
      SZA,RSS       DMA HARDWARE ?
      JMP H033      NO DMA
      JSB RDY,I     CHECK LP STATUS 
      NOP 
      LDA DM96      NUMBER OF 
      STA TMP         LINE TO PRINT 
      LDA .177      RESET PRINTING
      STA CYLC        CHARACTER 
DMAA  JSB CYBFI     SET CYCLIC PATTERN IN BUFFER
      LDA USSC      CONFIGURE DMA CONTROL 
      AND .77       MASK OFF OPTION BITS
      IOR CW        " OR " IN CONTROL BITS
      OTA DMAH      INITALIZE DMA 
      CLC DMAL         *
      LDA CYBFD        *
      OTA DMAL         *
      STC DMAL         *
      LDA WCNT         *
      OTA DMAL         *
DMSC1 STF CH        START LP
      STC DMAH,C    START DMA OPERATION 
      CLB           START TIME-OUT- 
LPA   INB,SZB         LOOP FOR DMA
      RSS                   * 
      JMP LPB               * 
      SFS DMAH              * 
      JMP LPA               * 
      JMP LCC1              * 
LPB   CLC 0         REPORT TIME-OUT ERROR 
E034  JSB ERMS,I    DMA FLAG FAILED 
      DEF DMA2        TO SET AFTER DMA COMPLETION 
      JMP DMAB      ABORT CURRENT TEST
LCC1  CLB           START TIME-OUT- 
LPD   INB,SZB         LOOP FOR INTERFACE
      RSS                   * 
      JMP LPC               * 
DMSC2 SFS CH                * 
      JMP LPD               * 
      JMP LCC               * 
LPC   CLC 0        REPORT TIME-OUT ERROR
E035  JSB ERMS,I    INTERFACE FLAG DID'NT SET 
      DEF DMA3        AFTER DMA COMPLETION
      JMP DMAB      ABORT CURRENT TEST
LCC   CLC DMAH      IS DMA TEST 
      ISZ TMP         FINISHED ?
      JMP DMAA      NO
DMAB  JSB FF        TOP OF FORM 
      JMP DMA,I     EXIT
H033  JSB MSGC,I    REPORT MESSAGE
      DEF DMA1      MESSAGE ADDRESS 
      JMP DMA,I     EXIT
      SPC 1 
DMAL  EQU 2 
DMAH  EQU 6 
WCNT  EQU DM137 
      SPC 1 
CW    OCT 100000
DMA2  ASC 9,E034 DMA TIME OUT/
DMA1  ASC 10,H033 DMA NOT CONFIG/ 
DMA3  ASC 19,E035 I-O FLAG NOT SET AFTER DMA COMP/
      SKP 
*        OPERATOR DESIGN SECTION
* 
OPDSN NOP 
      LDA 112B      CHECK FOR CONSOLE DEVICE
      SZA,RSS 
      JMP OPDSN,I   NO SO DONT DO OPDSN 
      LDB BTCK      CHECK 
      JSB SWRT,I      FOR OPERATOR
      JMP OPDSN,I       INTERVENTION
      LDA OPTR      STORE 
      STA TSTNN       RETURN ADDRESS
      CLA,CLE       TELL OPERATOR THAT
      LDB MSG1       HE IS IN OPERATOR DESIGN 
      JSB FMTR,I
OPDSI LDA FWAM      INITIALIZE PROGRAM
      STA PRPTR     POINTER 
      CLA             AND 
      STA PRPTR,I       END OF PROGRAM
      STA DBC       BUFFER COUNT
      STA DBT       BUFFER TYPE 
IRQ   LDA .2
      LDB .MSG1     OUTPUT @
      JSB SLOP,I
      LDB IBUFD 
      LDA .D25
      JSB SLIN,I    GET INPUT FROM OPERATOR 
      SZA,RSS       WAS THERE ANY INPUT 
      JMP *-4       NO - SO ASK AGAIN 
* 
      LDB IBUFD     * 
      RBL           * 
      ADB A         * 
      STB IBUFP     *  ADD CR TO
      LDA .15       *    END OF BUFFER
      JSB A2BUF     * 
      LDB IBUFD     SET-UP
      RBL             INPUT BUFFER
      STB IBUFP         POINTER 
* 
      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 INER      NO MORE ERROR 
      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
* 
      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 PRPTR     CHECK 
      ADA .5         TO 
      CMA,INA         SEE IF
      ADA LWAM         QUE FULL 
      SSA,RSS       ? 
      JMP .STR      NO - OK STORE IT
      LDB MSG4      YES- TELL OPERATOR
      CLA,CLE 
      JSB FMTR,I
      JMP IRQ 
* 
MSG4  DEF *+1 
      ASC 15,QUE FULL STATEMENT NOT LOADED/ 
.STR  LDA TMP       MOVE LINE NUMBER
      LDB PRPTR,I   INTO PLACE
      STA PRPTR,I 
      SZA,RSS       IF NUMBER=0 THEN
      JMP IRQ       STOP
      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 
*                   E=0=ASCII COMPARE 
*                   E=1=POINTER COMPARE 
* 
FNDST NOP 
      STA SVB       SAVE TYPE 
      LDB STTBD     STATEMENT TABLE DEF 
      SEZ           ASCII OR POINTER? 
      ADB .2        IT'S THE POINTER
FNDSL LDA B,I 
      CPA .M2       END OF STANDARD TABLE 
      RSS           YES 
      JMP *+3       NO
      LDB STUD      GET STANDARD USER TABLE 
      JMP FNDST+3   TRY IT
      CPA .M1       IS IT THE TERMINATOR
      JMP FNDST,I   YES - NOT FOUND 
      CPA SVB       IS IT THIS CHARACTER
      JMP *+3       YES 
      ADB .3        NO - MOVE TO NEXT STATEMENT 
      JMP FNDSL     AND TRY IT
      ISZ FNDST     FOUND - ADJUST RETURN 
      SEZ           ASCII OR POINTER? 
      ADB .M3       IT'S THE POINTER
      INB 
      LDA B,I       RETRIEVE  PARAMETER TYPES 
      INB           AND 
      LDB B,I       PROCESSOR POINTER 
      JMP FNDST,I 
* 
*         FIND LINE NUMBER IN QUE =TMP
* 
FNDLN NOP 
      LDB FWAM      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 A CHARACTER FROM INPUT BUFFER
* 
GETC  NOP 
      LDB IBUFP 
      JSB BUF2A 
      CPA .15       IF CR RETURN P+1
      JMP GETC,I    YES 
      ISZ IBUFP     MOVE POINTER TO NEXT CHARACTER
      ISZ GETC      ADJUS GOOD RETURN P+2 
      JMP GETC,I    RETURN
* 
BUF2A NOP 
      CLE,ERB       E _ UPPER LOWER FLAG
      LDA B,I       2CHR TO AREG
      SEZ,RSS       UPPER OR LOWER? 
      ALF,ALF       UPPER 
      AND .177      MASK UNWANTED CHARACTER 
      JMP BUF2A,I   RETURN. 
* 
A2BUF NOP 
      STA GETC      SAVE CHARACTER
      LDB IBUFP     GET 
      SLB,INB         OPPSITE 
      ADB .M2           CHARACTER 
      JSB BUF2A 
      ALF,ALF 
      IOR GETC      ADD NEW CHARACTER 
      SEZ           SHOULD IT BE SWAPPED? 
      ALF,ALF       YES 
      STA B,I       STORE IT
      ISZ IBUFP     MOVE TO NEXT CHR. SPACE 
      JMP A2BUF,I 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
      SKP 
*          GET INPUT BLOCK FROM INPUT BUFFER
* 
GETB  NOP 
      JSB GETC      GET A CHARACTER 
      JMP GETB,I    NO DATA 
      JSB CSC       COMMA OR SPACE CHECK
      ISZ GETB      ADJUST RETURN 
      CPA MINUS     IF IT'S NEG SIGN
      JMP NUMIN+1     THEN PROCESS AS A NUMBER
      JSB DGCK      IF IT'S A NUMBER
      JMP NUMIN       THEN PROCESS AS A NUMBER
      ALF,ALF       NO - PROCESS A ASCII
      STA AIN       SAVE FIRST CHARACTER
      JSB GETC      GET SECOND CHARACTER
      LDA SPC       NO DATA USE SPACE 
      CLE           INDICATE ASCII
      JSB CSC 
      IOR AIN       ADD FIRST 
      STA AIN       SAVE IT 
      JSB GETC      MOVE TO COMMA OR SPACE
      LDA SPC       NO DATA USE SPACE 
      CLE 
      JSB CSC       READ TO 
      JMP *-4         NEXT SPACE OR COMMA 
* 
CSC   NOP 
      CPA COMA      IS IT A COMMA 
      JMP *+4       YES 
      CPA SPC       IS IT A SPACE 
      JMP *+2       YES 
      JMP CSC,I     NEITHER SO RETURN 
      LDA AIN       RETRIEVE CHR
      LDB BIN 
      JMP GETB,I    RETURN
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
      SKP 
NUMIN CCB,RSS       INDICATE POSITIVE 
      CLB           INDICATE NEGATIVE 
      STB NFLG      SAVE FLAG 
      ADB IBUFP     MOVE POINTER BACK IF NECESSARY
      CLE,ERB       SET UPPER LOWER FLAG
      CLA           CALL FOR INTEGER
      JSB AS2N,I    CONVERT IT
      STA AIN       SAVE IT 
      LDB NFLG
      ADB IBUFP 
      CLE,ERB 
      CCA           CALL FOR OCTAL
      JSB AS2N,I    CONVERT IT
      STA BIN       SAVE IT 
      LDA AIN       RETRIEVE
      LDB BIN           NUMBERS 
      ISZ NFLG      WAS A NEG ENTERED?
      RSS 
      JMP *+3       NO
      CMA,INA       YES 
      CMB,INB 
      STA AIN       SAVE NUMBER 
      STB BIN 
      JSB GETC      GET NEXT CHARACTER
      LDA SPC       NO DATA USE SPACE 
      CCE           INDICATE IT'S A NUMBER
      JSB CSC       READ TO 
      JMP *-4         NEXT SPACE OR COMMA 
* 
AIN   NOP 
BIN   NOP 
NFLG  NOP 
* 
*          CHECK IF AREG = DIGIT
* 
DGCK  NOP 
      STA BUF2A     SAVE CHARACTER
      ADA .M60      ADD -60 OCTAL 
      SSA           SHOULD STILL BE POS.? 
      ISZ DGCK      NO - NOT A DIGIT
      ADA .M10      ADD -10 
      SSA,RSS       SHOULD GO NEG?
      ISZ DGCK      NO - ADJUST RETURN
      LDA BUF2A     RETRIEVE CHARACTER
      JMP DGCK,I    RETURN
                                                                                                                  