      CPA ANO       NO
      JMP *+2 
      JMP DBDNE     NO ASK AGAIN. 
      JSB GIFO      CALL FOR ANOTHER INPUT
      JMP GTI+1 
DNEM  ASC 3,DONE?_     *THIS "*" PREVENTS LF SUPPRESSION
ANO   ASC 1,NO
AYE   ASC 1,YE
      SKP 
PLB   JSB PDVC      CHECK FOR FAST DEVICE LIST
      LDA DBC       IS BUFFER EMPTY 
      SZA,RSS       ? 
      JMP DBBC      YES 
      JSB DBIN      GET ANY PARAMETERS
      LDA TMP+1     IF FIRST = ZERO 
      SZA 
      JMP *+5 
      INA           DO ALL OF BUFFER
      STA TMP+1 
      LDA DBC 
      STA TMP+2 
      LDB TMP+2     IF SEC = ZERO 
      SZB,RSS 
      LDB A         USE INPUT COUNT 
      STB TMP+2 
      SKP 
DBL0  LDA FDF 
      ERA 
      CLA 
      LDB DBLFM     GET FORMAT
      JSB FMTR,I
      CLA,INA 
      LDB TMP+1     OUTPUT PARAMETER
      JSB FMTR,I
      LDA .M4       SET MAX LINE NUM. CNT 
      STA TMP+3 
DBL1  LDA FDF       NO OUTPUT OCTAL LISTING 
      ERA 
      CLA 
      LDB DBLO
      JSB FMTR,I
      CCA 
      LDB TMP+1 
      ADB DBD 
      ADB .M1 
      LDB B,I 
      JSB FMTR,I
      LDB SW9       CHECK FOR ABORT 
      JSB SWRT,I
      JMP DBL2
      ISZ TMP+1 
      LDA TMP+1 
      CMA,INA 
      ADA TMP+2 
      SSA 
      JMP DBL2      OUTPUT COMPLETE 
      ISZ TMP+3 
      JMP DBL1
      CLA 
      JSB DVIC
      JMP DBL0
DBL2  CLA 
      JSB DVIC
      JMP DBBC
DBLFM DEF *+1 
      ASC 2,(#)_      *THIS PREVENTS LF SUPPRESSION 
DBLO  DEF *+1 
      ASC 2, #_ 
      SKP 
*         WAIT FOR OPERATOR 
* 
WAP   NOP 
      JSB .FMT     OUTPUT MESSAGE 
      DEF WAPM
      LDB CULN        WITH CURRENT LINE NUMBER
      CLA,INA 
      JSB FMTR,I
WAPL  JSB GIFO      CALL FOR INPUT
      LDA IBUFD,I   CHECK IF "CO" 
      CPA ACO       ? 
      JMP WAP,I       CONTINUE
      CPA AST       STOP
      JMP IRQ       YES 
      JSB .FMT      TELL OPERATOR OF ERROR
      DEF MSG2
      JMP WAPL         AND TRY AGAIN
* 
WAPM  ASC 7,WAIT (LINE #)/
* 
* 
* 
*         PROCESS GO TO STATEMENT 
* 
GTP   NOP 
      ISZ GTP       ADJUST RETURN FOR LINE CHANGE 
      JMP GTP,I 
      SKP 
*         PROCESS GOSUB 
* 
GSP   NOP 
      ISZ GSPTR     MOVE TO NEXT BLOCK
      STB SVB       SAVE REP COUNT
      LDB GSPTR     CHECK 
      CMB,INB         IF THERE IS 
      ADB GSPTE         ROOM
      SSB           ? 
      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 
      ISZ GSP       ADJUST RETURN FOR LINE CHANGE 
      JMP GSP,I 
GSPTR NOP 
GSPTS DEF GSPB
GSPTE DEF GSPB+30 
GSPB  BSS 32
* 
GSPE  JSB .FMT
      DEF GSPEM 
      JMP OPLNN 
GSPEM ASC 3,GS OV_   *THIS PREVENTS LF SUPPRESSION
      SKP 
*         PROCESS RTN STATEMENT 
* 
RTP   NOP 
      LDA GSPTR     CHECK IF THERE HAS
      CPA GSPTS       BEEN A GOSUB
      JMP OPLNE     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 
      JMP RTP,I 
RTPN  CCA 
      ADA GSPTR 
      LDA A,I 
      ADA .M2 
      LDA A,I 
      ISZ RTP       ADJUST RETURN FOR LINE CHANGE 
      JMP RTP,I 
      SKP 
*         OUTPUT A MESSAGE
* 
MSP   NOP 
      STA MSPM+2
      LDA .4
      LDB MSPM
      JSB SLOP,I
      JMP MSP,I 
MSPM  DEF *+1 
      ASC 2,* XX
* 
* 
*     PROCESS DELAY STATEMENT 
* 
DTP   NOP 
      SZA           IF IT'S ZERO FORGET IT
      JSB TMRR,I    GO WAIT 
      JMP DTP,I     NOW RETURN TO CALLER
* 
* 
*         TEST EXECUTION
* 
TEP   NOP 
      CMA           MAKE IT NEG.
      STA TEPA      SAVE IT 
      LDB TSTP      GET POINTER TO TEST LIST
TEP0  LDA B,I       GET ADDRESS 
      CPA .M1       IS IT THE TERMINATOR
      JMP TEP,I     YES - EXIT
      INB 
      ISZ TEPA      IS THIS THE TEST? 
      JMP TEP0      NO TRY NEXT ONE 
      CPA OPNO      IF IT'S OPDSN THEN FORGET IT
      JMP PSTOP+1 
      JSB A,I       YES - EXICUTE IT
      JMP TEP,I     RETURN TO CONTROL 
OPNO  DEF OPDSN 
TEPA  EQU * 
* 
* 
*         STOP EXECUTION
* 
PSTOP NOP 
      JSB .FMT      OUTPUT STOP MESSAGE 
      DEF STPM
      JMP OPLNN 
STPM  ASC 3,STOP_ 
      SKP 
STTBP EQU * 
* 
      ASC 2,WAIT
      ASC 1,
      DEF WAP 
* 
      ASC 2,GOTO
      ASC 1,I 
      DEF GTP 
* 
      ASC 2,GOSB
      ASC 1,II
      DEF GSP 
* 
      ASC 2,RTN 
      ASC 1,
      DEF RTP 
* 
      ASC 2,MSG 
      ASC 1,A 
      DEF MSP 
* 
      ASC 2,DLY 
      ASC 1,I 
      DEF DTP 
* 
      ASC 2,TEST
      ASC 1,K 
      DEF TEP 
* 
      ASC 2,STOP
      ASC 1,
      DEF PSTOP 
* 
      DEC -2
      SKP 
MXNM  DEC 9999
* 
AA    OCT 101 
AI    OCT 111 
AK    OCT 113 
AP    ASC 1,P 
AIK   ASC 1,IK
AIA   ASC 1,IA
ARK   ASC 1,RK
ARA   ASC 1,RA
ACB   ASC 1,CB
ABY   ASC 1,BY
ALB   ASC 1,LB
ALF   ASC 1,LF
ACF   ASC 1,CF
AGO   ASC 1,GO
ADB   ASC 1,DB
ACO   ASC 1,CO
AST   ASC 1,ST
* 
MINUS OCT 55
SPC   OCT 40
SVA   NOP 
SVB   NOP 
PRPTR NOP 
PRPLA NOP 
* 
IBUFP NOP 
IBUFD DEF IBUF
      NOP 
IBUF  BSS 37
* 
STTBD DEF STTBP 
* 
DVIC  NOP 
FDF   NOP 
      JMP DVIC,I
JSBSD JSB SLOP,I
      SKP 
      ORG 1752B 
.2    OCT 2 
.3    OCT 3 
.4    OCT 4 
.5    OCT 5 
.6    OCT 6 
.15   OCT 15
.177  OCT 177 
.D72  DEC 72
.M1   DEC -1
.M2   DEC -2
.M3   DEC -3
.M4   DEC -4
.M10  DEC -10 
.M60  OCT -60 
SW9   OCT 1000
S128  OCT 10400 
DBC   NOP 
CULN  NOP 
* 
* 
TMP   NOP           LINE NUMBER 
      NOP           POINTER TO STATEMENT TABLE
      NOP           PRAM A
      NOP           PRAM B
      HED     BASE PAGE LINKS AND CONSTANTS 
      ORG 126B
DSN   OCT 105101    DIAGNOSTIC SERIAL NUMBER
      ORG 140B
IOIP  DEF IOID      POINTER TO I/O INSTRUCTIONS 
TSTP  DEF TSTD      POINTER TO TESTS
HDMP  DEF HDMS      POINTER TO HEADER MESSAGE 
STDA  OCT 37        STANDARD TEST RUN 
STDB  OCT 0 
* 
      ORG 150B
HDMS  EQU * 
      ASC 11,2767 L.P. DIAGNOSTIC/
IOID  EQU * 
      DEF CLSC
      DEF A2LP0 
      DEF A2LP1 
      DEF A2LP2 
      DEF A2LP3 
      DEF SCPS
      DEF SRPS
      DEF CFRSC 
      DEF MNCS1 
      DEF MNCS2 
      DEC -1
* 
TSTD  EQU * 
      DEF TST.0     BASIC I/O 
      DEF TST01     MANUAL CONTROL TEST 
      DEF TST02     PAPER HANDLING
      DEF TST03     ILLEGAL OPERATIONS
      DEF TST04     ALLIGNMENT
      DEF OPDSN 
      DEC -1
* 
TST.0 NOP 
      CLA           OUTPUT 0 TO L.P.
CLSC  OTA LP
      JSB *+2,I     GO DO BASIC I/O 
      JMP TST.0,I 
      DEF TST00     BASIC I/O 
      SKP 
FWAA  EQU 6000B 
LP    EQU 10B 
D40   DEC 40
D80   DEC 80
D90   DEC 90
D1000 DEC 1000
DM20  DEC -20 
DM30  DEC -30 
DM31 DEC -31
DM40  DEC -40 
DM55  DEC -55 
DM60  DEC -60 
DM80  DEC -80 
DM90  DEC -90 
.12   OCT 12
.13   OCT 13
.14   OCT 14
.40   OCT 40
.90   DEC 90
.140  OCT 140 
.77   OCT 77
A$    OCT 44
AE    OCT 105 
AM    OCT 115 
AZ    OCT 132 
AUB   ASC 1,UB
CNTR  NOP 
TEMP  NOP 
      SKP 
SUPA  EQU FWAM      START OF USER PROGRAM AREA
EUPA  EQU LWAM      END OF USER PROGRAM AREA
STUD  DEF STUDD     START OF USER STATEMENT TABLE 
DBD   DEF USBF      START USER BUFFER 
DBE   DEF USBF+99   END OF USER BUFFER
INTLP NOP 
      CLA,INA       DISABLE TIMMING CHECKS
      STA TMFLG 
      CPB AT        DOES HE WANT TIMMING
      JSB CFR       YES CHECK FOR READY AND ISSUE FF
      JMP INTLP,I   RETURN
AT    ASC 1,T 
* 
SYN   NOP 
      LDA TMP+1     IS THIS A CHARACTER OUTPUT
      CPA DOCP      ? 
      JMP *+3       YEP 
SYNE  ISZ SYN       NO ADJUST RETURN
      JMP SYN,I     RETURN
      LDA TMP+2     YES IS IT A BUFFER OUTPUT 
      CPA AUB       ? 
      JMP SYNE      YES 
      ALF,ALF 
      AND .177
      CPA A$        IS IT A $?
      JMP SYNE      YES 
      JMP SYN,I     NO RETURN TO ERROR
* 
DOCP  DEF OCP 
* 
BP1   EQU * 
* 
      ORG SYNTX 
      JSB SYN 
* 
      ORG PGO 
      JSB INTLP 
      SKP 
      ORG ZCEND 
* 
STUDD EQU * 
* 
      ASC 2,SR
      ASC 1,
      DEF SRP 
* 
      ASC 2,SC
      ASC 1,KI
      DEF SCP 
* 
      ASC 2,LF
      ASC 1,
      DEF LFP 
* 
      ASC 2,CR
      ASC 1,
      DEF CRP 
* 
      ASC 2,FF
      ASC 1,
      DEF FFP 
* 
      ASC 2,OC
      ASC 1,AI
      DEF OCP 
* 
      ASC 2,CP
      ASC 1,II
      DEF CPP 
* 
      DEC -1
* 
USBF  BSS 100 
      SKP 
      ORG BP1 
*         STATUS REPORT 
* 
SRP   NOP 
      LDB SRPM      GET MESSAGE 
      CLA,CLE         TO
      JSB FMTR,I        OUTPUT
SCPS  LIB LP        GET STATUS
      CCA 
      JSB FMTR,I
      LDB CULN      GET LINE NUMBER 
      CLA,INA 
      JSB FMTR,I
      JMP SRP,I 
* 
SRPM  DEF *+1 
      ASC 11,STATUS IS # (LINE #)/
* 
*         STATUS CHECK
* 
SCP   NOP 
      STA SCPA      SAVE PARAMS 
      STB SCPB        ""
SRPS  LIB LP        GET STATUS
      LDA SCPB      GET NEW LINE IF NEEDED
      CPB SCPA      DO THEY COMPAIR 
      RSS 
      ISZ SCP       YES 
      JMP SCP,I 
* 
SCPA  NOP 
SCPB  NOP 
      SKP 
*         CARRIAGE RETURN (AND PRINT) 
* 
CRP   NOP 
      LDA .15       GET CARRIAGE RETURN 
      JSB OTCH      GIVE IT TO THE LINE 
      JMP CRP,I     RETURN
* 
*         LINE FEED (AND PRINT) 
* 
LFP   NOP 
      LDA .12       GET LINE FEED 
      JSB OTCH      GIVE IT TO LINE PRINTER 
      JMP LFP,I     RETURN
* 
*         FORM FEED (AND PRINT) 
* 
FFP   NOP 
      LDA .14       GET FORM FEED COMMAND 
      JSB OTCH      GIVE IT TO THE LINE PRINTER 
      JMP FFP,I     RETURN
* 
*         OUTPUT BUFFER ONLY
* 
OCP   NOP 
      JSB OTBF
      JMP OCP,I     RETURN
      SKP 
*         OUTPUT A CHARACTER OR THE USER BUFFER 
* 
OTBF  NOP 
      CPA AUB       CHECK FOR USER BUFFER 
      JMP OTUB      YES - SO DO IT
      SZB,RSS       IF B IS ZERO THEN 
      INB           MAKE IT ONE 
      SSB           IF B IS NEG.
      CMB,INB       MAKE IT POS.
      AND .177      MASK OFF $
      JSB OTP       OUTPUT CHARACTER TO L.P.
      JMP OTBF,I      AND RETURN
* 
* 
*         OUTPUT USER BUFFER
* 
OTUB  SZB           IF NUMBER IS ZERO 
      JMP OTUBN 
      LDB DBC       DEFAULT TO BUFFER COUNT 
      SZB,RSS       IS IT LOADED? 
      JMP OTBF,I    NO SO EXIT
OTUBN SSB           IF NOT POS. 
      CMB,INB       MAKE IT POS.
      LDA DBC       CHECK IF
      CMA,INA       BUFFER HAS
      ADA B           ENOUGH IN IT
      SSA,RSS       ? 
      LDB DBC       NO SO USE BUFFER COUNT
      CMB,INB       MAKE IT NEG FOR A = ADDRESS 
      LDA DBD       POINT TO BUFFER 
      JSB OTP       OUTPUT BUFFER 
      JMP OTBF,I    RETURN
      SKP 
*         OUTPUT A CHARACTER
* 
OTCH  NOP 
      CPA .15       CR? 
      JMP OTCR      YES 
      CPA .12       LF? 
      JMP OTLF      YES 
      CPA .14       FF? 
      JMP OTFF      YES 
      CLB,INB       SHORT TIME OUT
      ISZ CHCNC     CHECK FOR ZONE PRINT
      RSS 
      LDB TMOTX     YES GET PREVIOUS OUTPUT DELAY 
      JSB A2LP
      LDA CHCNC     ZONE PRINTED
      SZA           ? 
      JMP OTCH,I    NO
      LDA D40       YES SET TIME OUT
      STA TMOTX 
      LDA CHCNT     RESET ZONE COUNT
      STA CHCNC 
      JMP OTCH,I
* 
*         OUTPUT A CARRIAGE RETURN
* 
OTCR  LDB TMOTX     GET PREVIOUS FUNCTION DELAY 
      JSB A2LP      DO IT 
      LDA CHCNT     RESET ZONE COUNT
      STA CHCNC 
      LDB D40       ADD DELAY FOR PRINT 
      STB TMOTX 
      JMP OTCH,I
* 
CHCNT DEC -20 
CHCNC DEC -20 
      SKP 
*         OUTPUT LINE FEED
* 
OTLF  LDB TMOTX     GET PREVIOUS FUNCTION DELAY 
      ISZ LFCNT     CHECK FOR STEP OVER?
      RSS 
      ADB .90 
      JSB A2LP      DO IT 
      LDA CHCNT     RESTORE ZONE COUNT
      STA CHCNC 
      LDB D80       SET DELAY FOR NEXT INSTRUCTION
      STB TMOTX 
      LDA LFCNT     IS IT PERFORATION STEP OVER?
      SZA 
      JMP OTCH,I    NO
      LDB .90       YES 
      ADB TMOTX 
      STB TMOTX     ADD MORE TIME 
      LDB LNCNT     RESET LINE COUNT
      STB LFCNT 
      JMP OTCH,I
* 
*         OUTPUT FORM FEED
* 
OTFF  LDB FFTM      GET FORM FEED TIME OUT
      ADB TMOTX       ADD ANY PREVIOUS FUNCTIONS
                                                                                                    