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 HP2613/2617/2618 LINE PRINTER DIAGNOSTIC * ORG 126B * DSN OCT 145103 * ORG 140B * IOIP DEF IOID TSTP DEF TSTD HDMP DEF HDMS STDA OCT 377 STDB OCT 0 STUD DEF STUDD * ORG 150B * HDMS ASC 14,2613-2618 LINE PRINTER DIAG/ SPC 2 IOID EQU * DEF TSTO DEF OTCHA DEF OTCHB DEF OTCHC DEF OTCHE DEF OTCHF DEF OUTIA DEF OUTIB DEF OUTID DEF TCJ DEF DMSC1 DEF DMSC2 DEF MCTA DEF OSC01 DEF OSC02 DEF RDY1 DEF DMD1 DEC -1 SPC 2 TSTD EQU * DEF TST.0 DEF TST01 DEF TST02 DEF TST03 DEF TST04 DEF TST05 DEF TST06 DEF TST07 DEF OPDSN .M1 DEC -1 SKP .2 OCT 2 .3 OCT 3 .4 OCT 4 .5 OCT 5 .6 OCT 6 .15 OCT 15 .177 OCT 177 .D25 DEC 25 .M2 DEC -2 .M3 DEC -3 .M4 DEC -4 .M10 DEC -10 .M60 OCT -60 CULN OCT 0 AA OCT 101 DBC NOP DBT NOP DBD DEF DBDD .40 OCT 40 .77 OCT 77 .200 OCT 200 .204 OCT 204 D27 DEC 27 D136 DEC 136 DM60 DEC -60 DM96 DEC -96 DM136 DEC -136 DM137 DEC -137 M1000 DEC -1000 RDY DEF RDYI TIMEA DEC 5000 CHARM OCT 115 CNTR NOP CHAR NOP CHAR1 NOP BTCK OCT 10400 SKP DT1 DEF TBL1 TBL1 DEC 1 TOF DEC 1 BOF DEC 1 TOF DEC 1 BOF DEC 120 SS DEC 60 DS DEC 40 TS DEC 8 QP DEC 4 HP DEC 1 BOF DEC 12 SP DEC 1 BOF DEC 1 DEC 1 DEC 1 DEC 1 DEC 1 DEC 1 DEC 1 DEC 1 DEC 1 DEC 1 DEC 1 DEC 1 DEC 1 DEC 1 DEC 1 DEC 1 SPC 1 SPC 2 * VFU CHANNEL # DT2 DEF TBL2 TBL2 OCT 100100 TOF VFU1 OCT 100101 2 BOTTOM OF FORM VFU0 OCT 100100 1 TOP OF FORM OCT 100101 BOF VFU2 OCT 100102 3 SINGLE SPACE VFU3 OCT 100103 4 DOUBLE SPACE VFU4 OCT 100104 5 TRIPLE SPACE VFU6 OCT 100106 7 NEXT QUARTER PAGE VFU5 OCT 100105 6 HALF PAGE LINE OCT 100101 BOF VFU7 OCT 100107 8 NEXT SIXTH PAGE OCT 100100 TOF LS00 OCT 100000 SLEW 0 LINE LS01 OCT 100001 SLEW 1 LINE LS02 OCT 100002 SLEW 2 LINES LS03 OCT 100003 SLEW 3 LINES LS04 OCT 100004 SLEW 4 LINES LS05 OCT 100005 SLEW 5 LINES LS06 OCT 100006 SLEW 6 LINES LS07 OCT 100007 SLEW 7 LINES LS08 OCT 100010 SLEW 8 LINES LS09 OCT 100011 SLEW 9 LINES LS10 OCT 100012 SLEW 10 LINES LS11 OCT 100013 SLEW 11 LINES LS12 OCT 100014 SLEW 12 LINES LS13 OCT 100015 SLEW 13 LINES LS14 OCT 100016 SLEW 14 LINES LS15 OCT 100017 SLEW 15 LINES SPC 2 DT3 DEF TBL3 TBL3 DEF MSG01 TOF DEF MSG02 BOF DEF MSG01 TOF DEF MSG02 BOF DEF MSG03 SS DEF MSG04 DS DEF MSG05 TS DEF MSG07 QP DEF MSG06 HP DEF MSG02 BOF DEF MSG08 SP DEF MSG01 DEF MSG24 DEF MSG09 DEF MSG10 DEF MSG11 DEF MSG12 DEF MSG13 DEF MSG14 DEF MSG15 DEF MSG16 DEF MSG17 DEF MSG18 DEF MSG19 DEF MSG20 DEF MSG21 DEF MSG22 DEF MSG23 SPC 2 MSG01 ASC 02,TOF/ MSG02 ASC 02,BOF/ MSG03 ASC 02,SS/ MSG04 ASC 02,DS/ MSG05 ASC 02,TS/ MSG06 ASC 02,HP/ MSG07 ASC 02,QP/ MSG08 ASC 02,SP/ MSG09 ASC 02,S1/ MSG10 ASC 02,S2/ MSG11 ASC 02,S3/ MSG12 ASC 02,S4/ MSG13 ASC 02,S5/ MSG14 ASC 02,S6/ MSG15 ASC 02,S7/ MSG16 ASC 02,S8/ MSG17 ASC 02,S9/ MSG18 ASC 02,S10/ MSG19 ASC 03,S11/ MSG20 ASC 03,S12/ MSG21 ASC 03,S13/ MSG22 ASC 03,S14/ MSG23 ASC 03,S15/ MSG24 ASC 04, S0/ SPC 2 * LINKS FOR VFC TEST VF1X DEF VF1 VFCTX DEF VFCT,I CONTAINS RETURN ADDR * DT1E DEF EX1 DT3E DEF MSG DT2E DEF VFU10 DT4E DEF ER60 DH OCT 110 DI OCT 111 SPC 1 TSTNN NOP TMP OCT 0 NOP NOP NOP SKP * * LINKAGES FOR OP DESIGN * DBDD BSS 150 OPTR DEF RUNR * * STATUS REPORT * SRP NOP LDB SRPM SET UP CLA,CLE FOR MESSAGE JSB FMTR,I OUTPUT LDB CULN SET UP CLA,INA FOR LINE JSB FMTR,I NUMBER INSERTION OSC01 LIA CH LOAD STATUS FROM LP AND STMK MASK OFF UNUSED BITS LDB A CCA SET UP FOR JSB FMTR,I STATUS INSERTION JMP SRP,I EXIT SRPM DEF SRPMS SRPMS ASC 07,# STATUS IS #/ SPC 3 * * STATUS CHECK * SCP NOP STA SAVA SAVE STATUS STB SAVB SAVE LINE NUMBER OSC02 LIA CH LOAD STATUS FROM LP AND STMK MASK OFF UNUSED BITS LDB A LDA SAVB LOAD A WITH REQUESTED LINE NO CPB SAVA TEST STATUS CLA LOAD A WITH DEFAULT LINE NO JMP SCP,I EXIT SAVA OCT 0 SAVB OCT 0 STMK OCT 140001 SKP * CYCLIC PATTERN PRINT * CPP NOP SZA,RSS IF CHRS = 0 CPP.1 LDA DM136 THEN DEFAULT TO 136 SSA,RSS IF CHRS IS POS. CMA,INA THEN MAKE IT NEG. STA CPC SAVE NUMBER OF CHRS ADA D136 CHRS NOT> 136 SSA ? JMP CPP.1 YES USE 136 CHARS SZB,RSS IF LINE COUNT = 0 CPP.2 LDB DM60 THEN DEFAULT TO 60 SSB,RSS IF LNCNT IS POS. CMB,INB THEN MAKE IT NEG. STB CNTR SAVE LINE COUNT ADB D60 IF LNCNT> 60 SSB ? JMP CPP.2 THEN USE 60 LINES CPPL0 JSB CYBFI SET UP CYCLIC BUFFER LDA CYBFD GET ADDRESS LDB CPC AND COUNT JSB OTP OUTPUT BUFFER JSB RTLF OUTPUT A LINE FEED ISZ CNTR DONE? JMP CPPL0 NO CLA YES JMP CPP,I RETURN TO EXEC * CPC NOP D60 DEC 60 SKP * * OUTPUT BUFFER ONLY * OCP NOP JSB OTBF CLA NO LINE CHANGE JMP OCP,I RETURN SPC 2 * * CARRIAGE RETURN/LINE FEED * CLP NOP JSB RTLF OUTPUT RETURN/LINE FEED CLA NO LINE CHANGE JMP CLP,I RETURN SPC 2 * * FORM FEED (AND PRINT) * FFP NOP JSB OTBF OUTPUT BUFFER IF REQUIRED JSB FF OUTPUT FORMFEED CLA NO LINE CHANGE JMP FFP,I RETURN SKP VFP NOP STA SAVA SAVE A CPA ALC IS IT A LC COMMAND ? JMP LCO YES ADB .M1 DECREMENT B STB SAVB ADB DM8 LDA SAVB SSB,RSS IS IT IN THE RANGE CLA DEFAULT ADA TBL2 ADD COMMAND CODE JSB OTCH CALL FOR OUTPUT FCR CLA LOAD A WITH DEFAULT LINE NO. JMP VFP,I EXIT LCO STB SAVB SAVE B ADB DM16 LDA SAVB SSB,RSS IS IT IN THE RANGE CLA DEFAULT ADA LS00 ADD COMMAND CODE JSB OTCH CALL FOR OUTPUT JMP FCR EXIT ALC ASC 01,LC DM8 DEC -8 DM16 DEC -16 SKP * PUT CYCLIC PATTERN IN BUFFER * CYBFI NOP LDB CYBFD SET POINTER STB CYBFT TO CYCLIC BUFFER LDA CYLC GET LAST STARTING CHARACTER INA MOVE UP ONE CPA .200 LAST CHARACTER? LDA .40 YES STA CYLC SAVE FOR NEXT BUFFER LDB DM136 GET MAX BUFFER COUNT CYBFL STA CYBFT,I STORE CHARACTER INA MOVE TO NEXT CHARACTER CPA .200 IS IT LAST CHR? LDA .40 YES ISZ CYBFT MOVE POINTER INB,SZB IS BUFFER FULL JMP CYBFL NO JMP CYBFI,I YES RETURN * CYBFT NOP CYLC OCT 40 CYBFD DEF *+1 BSS 136 OCT 100102 SKP * OUTPUT A CHARACTER OR THE USER BUFFER * OTBF NOP CPA AUB CHECK FOR USER BUFFER JMP OTUB YES - SO DO IT STA OTBFA SAVE CHARACTERS IOR B SZA,RSS ANY BUFFER REQUESTED? JMP OTBF,I NO SZB,RSS IF B IS ZERO THEN INB MAKE IT ONE SSB,RSS IF B IS POS. CMB,INB MAKE IT NEG. STB OTBFB SAVE COUNT LDA OTBFA RETRIEVE CHARACTERS ALF,ALF CHECK UPPER CHR. AND .177 FOR $ SYMBOLE CPA A$ ? JMP *+3 OK CLA NO - THEN TAKE NO ACTION JMP OTBF,I AND RETURN LDA OTBFA GET CHR AND .177 FOR OUTPUT JSB OTCH OUTPUT A TO THE LINE PRINTER ISZ OTBFB IS THERE ANOTHER REQUESTED? JMP *-4 YES CCA NO - INDICATE A PRINT JMP OTBF,I AND RETURN AUB ASC 01,UB A$ OCT 44 SKP * OUTPUT USER BUFFER * OTUB SZB IF NUMBER IS ZERO JMP OTUBN LDB DBC DEFAULT TO BUFFER COUNT SZB,RSS PROTECT IF NO BUFFER DEFINED JMP OTBF,I OTUBN SSB,RSS IF NOT NEG CMB,INB MAKE IT NEG STB OTBFB AND SAVE IT LDA DBC CHECK IF CMB,INB BUFFER HAS ADB A ENOUGH IN IT SSB ? LDA OTBFB IF NO USE BUFFER COUNT STA B SAVE COUNT LDA DBT GET BUFFER TYPE CPA .APA IS IT PACKED ? JMP *+4 YES LDA DBD NO GET POINTER JSB OTP JMP OTBF,I LDA B LDB DBD BUFFER ADDRESS JSB OTP2 JMP OTBF,I RETURN * OTBFA NOP OTBFB NOP .APA ASC 01,PA SKP * OUTPUT A CHR OR BUFFER * * A = CHR OR ADDRESS * B = +^ OR -^ * OTP NOP STA OTPT SAVE CHR OR ADDRESS SSB CHR OR ADDRESS? JMP OTPB IT'S A BUFFER OUTPUT CMB,INB CHR, MAKE COUNT NEG. STB OTPC SAVE COUNT LDA OTPT RETRIEVE CHARACTER JSB OTCH OUTPUT IT ISZ OTPC ALL DONE? JMP *-3 NO JMP OTP,I AND RETURN * OTPB STB OTPC SAVE COUNT LDA OTPT,I GET CHARACTER JSB OTCH OUTPUT IT ISZ OTPT MOVE POINTER ISZ OTPC ALL DONE? JMP *-4 NO JMP OTP,I RETURN OTPT NOP OTPC NOP * * OUTPUT PACKED BUFFER * OTP2 NOP STA OTPC SAVE NUMBER OF CHARACTERS CLE,ELB STB OTPT AND ADDRESS POINTER OTP2L LDB OTPT GET CHARACTER ADDRESS CLE,ERB E _ UPPER LOWER FLAG LDA B,I 2 CHR TO A REG SEZ,RSS UP ALF,ALF YES AND .177 MASK OFF OPPSITE CHARACTER JSB OTCH OUTPUT A TO LINE PRINTER ISZ OTPT MOVE TO NEXT CHARACTER ISZ OTPC IS THERE MORE OUTPUT? JMP OTP2L YES JMP OTP2,I NOW RETURN SKP * * CKST PERFORMS STATUS CHECK OF LP * CKST NOP STB MSG50+1 STORE ERROR NUMBER IN MESSAGE STA EXP EXPECTED DATA LDB EXP1 SET UP VARIABLE LDA TSTN MASK CPA .4 * LDB EXP5 * STB MSK1 * MCTA LIA CH GET STATUS AND MSK1 MASK STA ACT STORE ACTUAL STATUS CPA EXP IS STATUS OK ? JMP CKST,I YES, EXIT LDA ACT CNVRT LDB ACTD ACT CLE JSB O2AS,I LDA EXP CNVRT LDB EXPD EXP CLE JSB O2AS,I E050 JSB ERMS,I PRINT ERROR DEF MSG50 JMP CKST,I EXIT SPC 1 ACTD DEF MSG50+8 EXPD DEF MSG50+17 ACT OCT 0 EXP OCT 0 EXP1 OCT 140001 EXP2 OCT 100001 EXP3 OCT 0 EXP4 OCT 040000 EXP5 OCT 170001 MSK1 OCT 0 MSG50 ASC 21,E050 STATUS IS XXXXXX SHOULD BE XXXXXX/