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