ASMB,A,L,C,B ORG 0 SUP * * 2608A DIAGNOSTIC 04/30/80 3:00 PM * PART NUMBER 02608-16001 DATE CODE =2026 * * MINIMUM FIRMWARE ID CODE = 12 * DSN IS 105105 * * GENERAL OPERATING PROCEDURE * * A. LOAD DIAGNOSTIC CONFIGURATOR AND SET IT UP. * B. LOAD DIAGNOSTIC MAIN PROGRAM * C. LOAD ADDRESS 100B. * D. LOAD SWITCH REG. WITH SELECT CODE AND OPTIONS * BIT 6: CLEAR = 6 LPI * SET = 8 LPI * BIT 7: CLEAR = 26099A INTERFACE * SET = 59310B INTERFACE * BIT 8: (59310B ONLY) * CLEAR = CR, LF, FF DISABLED * SET = CR, LF, FF ENABLED * BIT 10: (59310B ONLY) * CLEAR = PARITY ENABLED * SET = PARITY DISABLED * BITS 11-15 (59310B ONLY) * HP-IB ADDRESS IN SWITCHES OF REAR PANEL * OF PRINTER * E. PRESS RUN AND WAIT FOR HALTS 106000, 107074. * F. LOAD SWITCH REGISTER * IF SET =: * 15 = HALT AT END OF EACH TEST * 14 = SUPRESS ERROR HALTS * 13 = LOOP ON LAST TEST * 12 = LOOP ON DIAGNOSTIC * (SUPPRESS ALL OPERATOR INTERVENTION) * 11 = SUPRESS ERROR MESSAGES * 10 = SUPRESS NON-ERROR MESSAGES * 9 = GO TO USER CONTROL SECTION * AT END OF PRESENT TEST * 8 = SUPPRESS OPERATOR INTERVENTION TESTS * * 0 TO 7 = DIAGNOSTIC OPTIONS * BIT 7 = PROGRAMMATICALLY INSTALL A VFC DEFINITION * THAT IS IDENTICAL TO THE STANDARD 2608A * 6 LPI VFC * BIT 1-6 = RESERVED * BIT 0 = SELECT NEW PRIMARY LANGUAGE AT END OF * PASS. THIS BIT IS CLEARED FOLLOWING * EACH CHANGE OR ATTEMPTED CHANGE * OF THE PRIMARY LANGUAGE. * NOTE: STANDARD RUN SHOULD BE WITH SW. REG. = 0 * * G. PRESS RUN. * H. RESTART - LOAD ADDRESS 2000B * I. RECONFIGURE IF TESTING I/O INTERFACE - LOAD ADDRESS 100B * * GENERAL COMPUTER HALTS * * 1020XX E OR H 000 TO 067 * 1060XX E OR H 100 TO 167 * 1030XX E OR H 200 TO 267 * 1070XX E OR H 300 TO 367 * * CONTROL PROGRAM HALT MESSAGES * * 102077 END OF DIAG (A & B = PASS COUNT) * 102076 END OF TEST (A = TEST #) * 102075 USER SELECTION REQUEST * 102074 SELECT CODE INPUT COMPLETE * 102073 USER SELECT CODE ERROR * 102072 RESERVED * 102071 RESERVED * 102070 RESERVED * * 106077 TRAP CELL HALT * * HED PROGRAM ORGANIZATION CHART * ******************************************* * * CONFIGURATOR 100B * * * LINKAGE TABLE * * ******************************************* * * EXECUTIVE 130B * * * LINKAGE * * ******************************************* * * CONSTANTS 150B * * * AND * * * STORAGE * * ******************************************* * * 2000B * * * EXECUTIVE CONTROL * * * * * ******************************************* * * IF USED * * * BASIC I/O TESTS (TEST 00) * * * ZCEND * * ******************************************* * * TABLE OF TEST POINTERS * * * TABLE OF I/O INSTR POINTERS * * ******************************************* * * * * * * * * * * * * * * * * * MAIN DIAGNOSTICS (1-31) * * * * * * * * * * * * * * * * * ******************************************* * HED CONFIGURATOR LINKAGE TABLE A EQU 0 A REGISTER REFERENCE B EQU 1 B REGISTER REFERENCE SW EQU 1 SWITCH REGISTER REFERENCE INTP EQU 0 INTERRUPT CHANNEL REFERENCE * * ORG 100B * JMP CFIG,I GO TO CONFIGURATION SECTION FAIN BSS 1 FAST INPUT (PHOTO READER) SLOP BSS 1 SLOW OUTPUT (LIST) FAOP BSS 1 FAST OUTPUT (DUMP OR PUNCH) SLIN BSS 1 SLOW INPUT (KEYBOARD) FWAM DEF FWAA FIRST WORD OF AVBL. MEMORY LWAM BSS 1 LAST WORD OF AVBL. MEMORY BSS 1 NOT USED (MAG TAPE) OTMC BSS 1 1 MILL SEC TIME OUT COUNT BSS 4 SELECT CODES FOR I/O CPTO BSS 1 COMPUTER TYPE/OPTIONS USSC BSS 1 USER CARD TYPE AND SELECT CODE MEMO BSS 1 MEMORY SIZE AND TYPE ISWR BSS 1 INTERNAL SWITCH REGISTER TMRR BSS 1 1 MILL SEC TIMER SWRC BSS 1 CONFIGURATOR SWITCH CK PTR I2AS BSS 1 INTEGER TO ASCII CONVERSION O2AS BSS 1 OCTAL TO ASCII CONVERSION AS2N BSS 1 ASCII CONVERSION DSNL BSS 1 DIAGNOSTIC SERIAL NUMBER FMTR BSS 1 FORMATTER * * * CONTROL LINKAGE AND DATA REFERENCES * CFIG DEF ZCONF CONFIGURATION SECTION MSGC DEF ZMSGC MESSAGE WITH NO HALT MSGH DEF ZMSGH MESSAGE WITH HALT ERMS DEF ZERMS ERROR MESSAGE WITH HALT SWRT DEF ZSWRT SWITCH REGISTER CHECK ROUTINE ERMC DEF ZERMC ERROR MESSAGE WITHOUT HALT NOP RESERVED NOP RESERVED HED EXECUTIVE CONTROL ORG 2000B ZSTEX CLC INTP,C TURN I/O SYSTEM OFF JSB MSGC,I DO CRLF DEF ZRTLF CLE LDA DSNL A = DIAGNOSTIC SERIAL NUMBER LDB FRBX B = BUFFER ADDRESS JSB 124B,I MAKE CONVERSION TO ASCII LDA FRMWR COMMAND TO READBACK FIRMWARE NUMBER JSB STR,I LIA FIRMWARE ID NUMBER STA FRMID LDB FRBXY ADDRESS TO STORE NUMBER FOR MESSAGE CCE JSB I2AS,I CONVERT TO DECIMAL ASCII AND STORE JSB MSGC,I OUT PUT IT DEF HDMS CLA CLEAR PASS STA ZEOLC COUNT LDB ZSW9 CHECK FOR USER SELECTION REQ JSB SWRT,I JMP ZUSR IT'S USERS CHOICE ZNUSR LDA STDA GET STANDARD TEST RUN LDB STDB * JMP ZEXC * ZUSR LIA SW CLEAR BIT 9 AND MSKS OTA SW NOP LDA ZSINA RETRIEVE PREVIOUS RUN LDB ZSINB HLT 75B WAIT FOR USER INPUT NOP NOP NOP ZEXC STA ZUINA SAVE STB ZUINB USER STA ZSINA INPUT STB ZSINB PROGRAM NOP NOP NOP LDB ZSW9 CHECK IF SW9 IS DOWN JSB SWRT,I JMP ZUSR NO GO AND WAIT CCA SET TEST NUMBER STA TSTN =-1 CLA STA ZTSTA CLEAR TEST RUN FLAG SKP ZEXCL LDA ZUINA RESTORE A REG. LDB ZUINB RESTORE B REG. ERA,RAL ROTATE ERB FIRST ERA TEST BIT STA ZUINA SAVE POSITIONS STB ZUINB ISZ TSTN MOVE TEST UP ONE NOP ZXCL1 LDA TSTN ADA TSTP GET IT'S LDA A,I ADDRESS CPA Z.M1 IS IT END OF LIST JMP ZEOL YES LDB ZUINB SSB,RSS SHOULD IT BE RUN? JMP ZEXCL NO STA ZTSTA YES - SAVE TEST ADDRESS * SELECT LANGUAGES 6/8 LPI SETTINGS AND NORMAL MODE * BEFORE EVERY TEST EXCEPT BASIC I/O CPA TSTP,I BASIC I/O TEST? JMP ZTCHL YES - BYPASS SETUP LDA INPLG DEFAULT OR OPER SELECT PRIM JSB CMNDP LDA LPI68 6/8 LPI OPERATOR SELECTION JSB CMNDP LDA SPRNT NORMAL MODE JSB CMNDP ZTCHL CLA SET SUBTEST AND DATA BYTE CODE TO 0 STA SUB INA STA CODN JSB ZITCH INITILIZE TRAP CELL HALTS LDA TSTN ADA DM2 SSA JMP DUTST LDA TSTN LDB ZTEST CLE JSB 123B,I DUTST JSB ZTSTA,I GO DO TEST LDA TSTN DISPLAY TEST NUMBER IF HALTED LDB ZSW15 CHECK FOR HALT AT END OF TEST JSB SWRT,I HLT 76B YES WAIT FOR OPERATOR LDB ZSW9 CHECK FOR ABORT JSB SWRT,I JMP ZUSR YES LDB ZSW13 CHECK FOR LOOP ON ROUTINE JSB SWRT,I JMP ZXCL1 YES - LOOP JMP ZEXCL CONTINUE * ZEOL LDB .1 IS OPER REQ'ING MOD TO LANG? JSB SWRT,I YES IF BIT0 =1 JSB LANG,I P+1 RETURN IS REQ FOR LANG MOD LDA ZTSTA NO - CHECK IF ANY TESTS WERE RUN SZA,RSS ? JMP ZNUSR NO SO PICK UP STANDARD RUN LDA ZEOLC UP DATE PASS COUNT INA STA ZEOLC CCE LDB ZPSCA GET PASS COUNT ADB Z.2 ADDRESS JSB I2AS,I CONVERT IT JSB MSGC,I CALL PRINT ROUTINE ZPSCA DEF ZPSC LDB ZSW12 CHECK FOR LOOP ON DIAG. JSB SWRT,I JMP *+3 YES LDA ZEOLC HLT 77B NO WAIT AND DISPLAY PASS COUNT LDA ZSINA RESTORE ORIGINAL LDB ZSINB PROGRAM JMP ZEXC DO IT ALL AGAIN * SKP * MESSAGE OUTPUT WITHOUT HALT * ZMSGC NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK JMP ZMSGC,I RETURN TO CALLER * * MESSAGE OUTPUT WITH HALT * ZMSGH NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK LDA ZHLT GET HALT CODE STA *+2 PUT IT IN PLACE LDA ZSAVA RESTORE A REGISTER NOP HALT FOR DISPLAY JMP ZMSGH,I RETURN TO CALLER * * ERROR MESSAGE WITH HALT * ZERMS NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 4000 SWITCH 11 CHECK CLA LDB ZSW14 CHECK SWR BIT 14 TO SUPPRESS JSB SWRT,I HALT STA *+3 PUT HALT IN PLACE LDA ZSAVA RESTORE A & B LDB ZSAVB ZHLT NOP WAIT FOR OPERATOR JMP ZERMS,I RETURN TO CALLER * * ERROR MESSAGE WITHOUT HALT * ZERMC NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 4000 SWITCH 11 CHECK JMP ZERMC,I RETURN TO CALLER SKP * OUTPUT MESSAGE * ZMSG NOP STA ZSAVA SAVE A AND B REGISTERS STB ZSAVB LDB ZMSG,I GET SWITCH REGISTER BIT LDA ZMSG ADA Z.M2 DECREMENT RETURN ADDRESS STA ZMSG JSB SWRT,I CHECK TO SUPPRESS MESSAGE JMP ZMSG0 YES LDA ZMSG,I CHECK IF ERROR LDA A,I LDA A,I IF SO ALF,ALF AND Z.177 CPA ZA.E JSB ZCFTN CHECK TO OUTPUT TEST NUMBER LDA ZMSG,I NO RETRIEVE FORMAT LDB A,I ADDRESS CLA,CLE JSB FMTR,I ZMSG0 LDA ZMSG,I CONVERT HALT CODE LDB A,I FROM ASCII STRING CCA,CCE JSB AS2N,I STA ZN2AO SAVE RESULT AND Z.300 DECODE LDB ZH2 HALT CODE CPA Z.100 LDB ZH6 CPA Z.200 LDB ZH3 CPA Z.300 LDB ZH7 LDA ZN2AO GET HALT NUMBER AND Z.77 IOR B STA ZHLT SAVE IT ISZ ZMSG,I ADJUST RETURN POINTERS ISZ ZMSG ISZ ZMSG ISZ ZMSG LDA ZSAVA RESTORE A AND B REGISTERS LDB ZSAVB JMP ZMSG,I * * * * SKP ZCFTN NOP LDA TSTN GET TEST NUMBER CPA ZCFTT IS IT THE SAME ONE? JMP ZCFTN,I YES SKIP OUTPUT STA ZCFTT NO - THEN UPDATE IT LDB ZTSTN CCE JSB I2AS,I CLA DO A CRLF JSB SLOP,I CLA,CLE INDICATE START OF FORMAT LDB ZTSTF JSB FMTR,I JMP ZCFTN,I RETURN * * ZSAVA NOP ZSAVB NOP ZEOLC NOP ZTSTA NOP ZSINA NOP ZSINB NOP ZUINA NOP ZUINB NOP ZBTMP NOP Z.2 OCT 2 Z.7 OCT 7 Z.10 OCT 10 Z.60 OCT 60 Z.77 OCT 77 Z.177 OCT 177 Z.M1 DEC -1 Z.M2 DEC -2 ZIOM OCT 177700 ZSW15 OCT 100000 ZSW14 OCT 40000 ZSW13 OCT 20000 ZSW12 OCT 10000 ZS812 OCT 010400 ZSW9 OCT 1000 Z.100 OCT 100 Z.200 OCT 200 Z.300 OCT 300 Z.400 OCT 400 ZH2 OCT 102000 ZH6 OCT 106000 ZH3 OCT 103000 ZH7 OCT 107000 ZCFTT DEC -1 ZTSTF DEF *+1 ASC 9,TEST XXXXX DEC/ ZTSTN DEF ZTSTF+3 ZRTLF ASC 1,// ZPSC ASC 8,PASS XXXXXX DEC/ ZA.E OCT 105 CH EQU 10B HED GENERAL ROUTINES * * ZN2AO NOP STA ZIOAD SAVE NUMBER AND Z.7 CONVERT FIRST IOR Z.60 NUMBER STA B SAVE IT LDA ZIOAD GET RAR,RAR SECOND RAR NUMBER AND Z.7 CONVERT IOR Z.60 IT ALF,ALF MOVE TO UPPER HALF IOR B ADD LOWER JMP ZN2AO,I AND RETURN * * * * SWITCH REGISTER CHECK * ZSWRT NOP STA ZN2AO SAVE A REGISTER LIA SW GET SWITCH REG. AND B MASK OUT BIT SZA,RSS IS IT UP? ISZ ZSWRT NO LDA ZN2AO RESTORE A REGISTER LIB SW LET B = SWITCH REGISTER JMP ZSWRT,I RETURN TO CALLER * * * * INITIALIZE TRAP CELL HALTS * ZITCH NOP LDA ZTSH GET STARTING TRAP CELL HALT LDB Z.2 GET FIRST TRAP CELL LOCATION ZTSHL STA B,I PUT IT IN PLACE CPB Z.77 AM I FINISHED JMP ZITCH,I YES INB NEXT ADDRESS JMP ZTSHL * ZTSH OCT 106077 * * * SKP * PUT JSB INSTRUCTION IN TRAP CELL * ZTCJI NOP LDB ZJSBI GET INSTRUCTION STB ZIOSC,I PUT IT IN TRAP CELL LDA ZTCJI,I GET LOCATION STA 3B SAVE IT FOR JSB INSTRUCTION ISZ ZTCJI ADJUST RETURN JMP ZTCJI,I RETURN TO CALLER * ZJSBI JSB 3B,I JSB INSTRUCTION * * * INITIALIZE SELECT CODE I/O INSTRUCTIONS * ZISC NOP STA ZIOSC SAVE SELECT CODE STB ZIOAD SAVE TABLE ADDRESS ZIOL LDB ZIOAD,I GET ADDRESS OF LOCATION CPB Z.M1 IS IT THE TERMINATOR JMP ZISC,I YES RETURN TO CALLER LDA B,I NO - GET CONTENTS AND ZIOM MASK OFF OLD SELECT CODE IOR ZIOSC ADD IN NEW SELECT CODE STA B,I RESTORE IT ISZ ZIOAD MOVE TO NEXT ADDRESS JMP ZIOL DO IT * ZIOSC NOP ZIOAD NOP * * * * SKP * CONFIGURATION SECTION * ZCONF CLC INTP,C TURN I/O SYSTEM OFF LIA SW GET SELECT CODE AND OPTIONS STA USSC SAVE THEM AND Z.77 ELIMINATE OPTIONS LDB A CMB,INB CHECK THAT SC > 7 ADB Z.7 SSB ? JMP *+3 OK GO ON HLT 73B NO JMP ZCONF TRY AGAIN LDB IOIP INITIALIZE TEST I/O JSB ZISC INSTRUCTIONS JSB ZLNCT SET UP # LINES PER INCH CLA CLEAR OTA 1 SWITCH REG HLT 74B ALLOW OPERATOR TO CHANGE SWITCH REG JSB STFRM POSITION FORM FOR PRINTED TESTS * INSTALL DEFAULT PRIM AND SEC LANGUAGES LDA LNGCW ALWAYS START WITH P=0 AND S=2 STA INPLG CURRENT LANGUAGE JMP ZSTEX GO TO EXEC CONTROL SECTION * * * * * SET UP S-REGISTER OPTIONS * ZLNCT NOP LDA USSC PICK UP SW OPTIONS AND Z.100 BIT6 = 6/8 LPI SZA A=0 IF OPER REQ'D 6 LPI JMP ZLN8 NOT 0 SO 8 LPI LDA IN6LP CW FOR SELECT 6 LPI RSS ZLN8 LDA IN8LP CW FOR SELECT 8 LPI STA LPI68 SAVE PROPER CW AS A FLAG LDB DT1 GET ADDR OF TABLE FOR VFU TEST ADB .2 STEP DOWN 2 IN TABLE CPA IN6LP 6 LPI ? JMP ZSIXL YES * 8 LINES PER INCH LDA D16 SS 16 LINES STA B,I PUT IN TABLE FOR VFU TEST 05 INB INCREMENT TABLE POINTER LDA D8 DS 8 TIMES STA B,I INB LDA .4 TS 4 TIMES STA B,I ADB .3 STEP DOWN 3 IN TABLE LDA .4 EP 4 TIMES STA B,I LDA ETH CHANGE MESSAGE TO EP (1/8) JMP ZMSGU * 6 LINES PER INCH ZSIXL LDA D12 SS 12 LINES STA B,I PUT IN TABLE FOR VFU TEST 05 INB INCREMENT TABLE POINTER LDA .6 DS 6 TIMES STA B,I INB LDA .3 TS 3 TIMES STA B,I ADB .3 STEP DOWN 3 IN TABLE LDA .3 SP 3 TIMES STA B,I LDA STH CHANGE MESSAGE TO SP (1/6) ZMSGU STA MSG8X,I LDA USSC AND Z.200 EXTRACT BIT 7 = I/O TYPE FLAG STA HPIB 0 = PARALLEL 200B = HPIB SZA,RSS IF PARALLEL, RETURN JMP ZLNCT,I LDA USSC BITS 11-15 = HP-IB ADDR ALF,RAL MOVE TO BITS 0-4 JSB ADPAR ADD PARITY & STORE HP-IB ADDRESS LDA USSC MASK AND SAVE CONTROL CHAR STRAP AND Z.400 POSITION ( BIT 8) STA CTLCH LDA USSC MASK, SAVE PARITY STRAP POSITION AND EXP6 (BIT 10) SZA 0=PARITY ENABLED CLA,INA 1=PARITY DISABLED STA PARTY JMP ZLNCT,I RETURN * ETH ASC 1,EP EIGHTH PAGE STH ASC 1,SP SIXTH PAGE MSG8X DEF MSG08 HED BASIC I/O TESTS TST00 EQU * NOP LDA USSC GET CELL LOCATION AND Z.77 JSB ZBIO DO BASIC I/O JMP TST00,I * ZBIO NOP CLC INTP,C TURN OFF ALL I/O LDB ZBIOD INITIALIZE BASIC I/O JSB ZISC INSTRUCTIONS CLA INSURE OUTPUT REG IS NOT PRINT COMMAND ZBS20 OTA CH * * INTERRUPT FLAG CHECK * ZBIO1 STF INTP CLF INTP SFC INTP RSS JMP *+3 E000 JSB ERMS,I E000 CLF 0-SFC 0 ERROR DEF ZBE00 SFS INTP JMP *+3 E001 JSB ERMS,I E001 CLF 0-SFS 0 ERROR DEF ZBE01 STF INTP SFC INTP JMP *+4 CLF INTP TURN OFF INTS E002 JSB ERMS,I E002 STF 0-SFC 0 ERROR DEF ZBE02 SFS INTP JMP *+3 CLF INTP TURN OFF INTERRUPTS JMP ZBIO2 CLF INTP TURN OFF INTS E003 JSB ERMS,I E003 STF 0-SFS 0 ERROR DEF ZBE03 JMP ZBIO2 * ZBIO2 EQU * ZBS21 STF CH ZBS22 CLF CH ZBS23 SFC CH RSS JMP *+3 E005 JSB ERMS,I E005 CLF CH-SFC CH ERROR DEF ZBE05 ZBS24 SFS CH JMP *+3 E006 JSB ERMS,I E006 CLF CH-SFS CH ERROR DEF ZBE06 ZBS25 STF CH ZBS26 SFC CH JMP *+3 E007 JSB ERMS,I E007 STF CH-SFC CH ERROR DEF ZBE07 ZBS27 SFS CH RSS JMP ZBIO3 E010 JSB ERMS,I E010 STF CH-SFS CH ERROR DEF ZBE10 JMP ZBIO3 SKP * INTERRUPT CONTROL * ZBIO3 JSB ZTCJI SET JSB INSTRUCTION DEF ZB3E ZBS31 STF CH SET THE FLAG ZBS32 STC CH SET THE CONTROL STF INTP TURN I/O SYSTEM ON THEN CLF INTP TURN I/O SYSTEM OFF CLA,INA WAIT 1 MS FOR INTERRUPT JSB TMRR,I ZBS33 CLF CH RESET CH FLAG JMP ZBIO4 * ZB3E NOP CLF INTP TURN OFF INTS E004 JSB ERMS,I E004 DEF ZBE04 SKP * SELECT CODE SCREEN TEST * ZBIO4 LDB Z.10 START WITH LOWEST ADDRESS ZB40 LDA USSC GET SELECT CODE AND Z.77 CPB A IS IT THE CH? JMP Z.CLF+1 YES - SKIP TEST LDA Z.STF SET UP AND ZIOM IOR B STF INSTRUCTION STA Z.STF PUT IT IN PLACE LDA Z.CLF SET UP AND ZIOM IOR B CLF INSTRUCTION STA Z.CLF PUT IT IN LINE ZBS41 CLF CH CLEAR CHANNEL FLAG Z.STF STF CH EXECUTE STF CH INSTRUCTION ZBS42 SFC CH TEST CHANNEL FLAG JMP ZB41 Z.CLF CLF CH CLEAR TEST FLAG CPB Z.77 IS TEST FINISHED? JMP ZBIO5 YES INB NO JMP ZB40 DO NEXT CHANNEL * ZB41 STB ZBTMP SAVE NUMBER LDA B CONVERT CH FOR MESSAGE JSB ZN2AO STA ZB11 LDA ZBTMP RETRIEVE NUMBER E011 JSB ERMS,I E011 DEF ZBE11 ZB11 DEF ZBE11+5 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 * 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 * 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 * SKP ZBIOD DEF *+1 DEF ZBS20 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 HP2608 LINE PRINTER DIAGNOSTIC ORG 126B DSN OCT 105105 DIAGNOSTIC SERIAL NUMBER (REFERENCED BY ERS) SPC 2 ORG 137B FRMID NOP 2608A FIRMWARE ID (REFERENCED BY ERS) IOIP DEF IOID TSTP DEF TSTD STDA OCT 177777 16 OF THE 18 TESTS STDB OCT 3 16 + 2 = THE 18 TESTS SPC 2 ORG 150B * * OCTAL CONSTANTS * .1 OCT 1 .2 OCT 2 .3 OCT 3 .4 OCT 4 .5 OCT 5 .6 OCT 6 .7 OCT 7 .10 OCT 10 .11 OCT 11 .12 OCT 12 .13 OCT 13 .14 OCT 14 .15 OCT 15 .16 OCT 16 .17 OCT 17 .20 OCT 20 .37 OCT 37 .40 OCT 40 .57 OCT 57 .70 OCT 70 .100 OCT 100 .177 OCT 177 .200 OCT 200 .201 OCT 201 .204 OCT 204 .377 OCT 377 .400 OCT 400 * * DECIMAL CONSTANTS * D8 EQU .10 D9 EQU .11 D11 EQU .13 D12 EQU .14 D16 EQU .20 D21 DEC 21 D23 DEC 23 D32 EQU .40 D64 EQU .100 D96 DEC 96 * * NEGATIVE CONSTANTS * DM1 DEC -1 DM2 DEC -2 DM3 DEC -3 DM4 DEC -4 DM5 DEC -5 DM6 DEC -6 DM7 DEC -7 DM8 DEC -8 DM9 DEC -9 DM12 DEC -12 DM16 DEC -16 DM20 DEC -20 DM33 DEC -33 DM60 DEC -60 DM66 DEC -66 DM78 DEC -78 DM99 DEC -99 DM116 DEC -116 DM127 DEC -127 DM132 DEC -132 DM136 DEC -136 DM180 DEC -180 DM200 DEC -200 DM690 DEC -690 DM3K DEC -3000 * * IB DRIVER CONSTANTS AND STORAGE * UN OCT 237 IRL OCT 40000 ORA OCT 20000 WORD OCT 4000 DMAIN OCT 2000 BYTE EQU .200 CLST OCT 110 CTLK OCT 120 MLA EQU .40 MTA EQU .100 SCG EQU D96 IB.TO EQU .12 MLTA NOP INOUT NOP WCNT NOP INC NOP DMAX NOP TRANS NOP OSAV NOP SMASK NOP IBSTA NOP * * CHARACTER DEFINITONS * R/ OCT 51057 R; OCT 51073 BS EQU .10 LF OCT 4012 FMFD OCT 4014 CR OCT 4015 SO EQU .16 SI EQU .17 UNDR OCT 137 CHARA OCT 101 CHARC OCT 103 CHARO OCT 117 CHARI OCT 111 CHART OCT 124 CHARX OCT 130 CHAR# OCT 43 CHAR] OCT 135 CHARM OCT 115 CHAR/ EQU .57 CHAR\ OCT 134 * * 2608 COMMANDS (WITH PARITY FOR HPIB IN BIT 11) * VF0X OCT 100200 VF2X OCT 100202 VF8X OCT 100210 VF11X OCT 100213 VF15X OCT 100216 SL00 OCT 100000 SL01 OCT 100001 SL02 OCT 100002 SL03 OCT 100003 ONLIN OCT 034001 OFLIN OCT 034000 IN6LP EQU ORA 6 LPI CONTROL WORD IN8LP OCT 020200 8 LPI CONTROL WORD LPI68 NOP INIT TO CW FOR 6 OR 8 LPI SWVFC OCT 020102 FRBCW OCT 124000 STATUS READ CONTROL WORD CLBUF OCT 070000 CLEAR BUFFER COMMAND VFCIN OCT 020201 CWD FOR VFC INITIALIZE SLFTS OCT 040001 CWD FOR SELF TEST W/0 PRINTING MASTR OCT 054000 CWD FOR MASTER CLEAR TRAN0 OCT 130020 CWD FOR TRANSPARENT STD PRINT MODE TRAN1 OCT 130021 CWD FOR TRANSPARENT DOUBLE SIZE INPLG NOP CURRENT PRIMARY LANGUAGE CW LNGCW OCT 010000 CW FOR LANGUAGE SELECTION SPRNT OCT 130000 STANDARD SIZE PRINT MODE DPRNT OCT 130001 DOUBLE SIZE PRINT MODE GPRNT OCT 130002 GRAPHICS PRINT MODE MSKS OCT 176777 ROMCW OCT 124200 CWD FOR ASCII CHAR READ BACK PING OCT 064000 CWD FOR PING STAT OCT 212 DSJ EQU .20 DVCLR EQU .20 PONG OCT 206 IBSLF EQU .37 IBPNG OCT 236 SPE OCT 370 CWD FOR SERIAL POLL ENABLE SPD OCT 171 CWD FOR SERIAL POLL DISABLE IBDAT EQU .200 * * STATUS READ DATA ADDRESSES * IO EQU .1 DSPLY EQU .2 PMODE EQU .3 PRSC EQU .4 SLF EQU .5 DR6 EQU .6 LC6 EQU .7 LC8 EQU .12 FRMWR EQU .14 POWUP EQU .20 * * EXPECTED STATUS DEFINITIONS * EX1 OCT 177777 EX2 OCT 176631 EX3 OCT 176630 EX4 OCT 176430 EX6 OCT 177401 EX7 OCT 176634 EX8 OCT 176644 EX10 OCT 177400 EX11 EQU DMAIN EX12 OCT 2004 EX16 OCT 175002 EX17 OCT 175200 EX18 OCT 175020 EX19 OCT 176434 EX20 OCT 6000 EX21 OCT 20001 * * OTHER CONSTANT DEFINITONS * HIBY6 OCT 33040 HIBY8 OCT 34040 LBY60 OCT 020060 SR OCT 030060 TIMEA DEC 540 TIMEB DEC -1400 TIMEP DEC -1500 RDYST OCT 301 BTCK OCT 10400 NBYTE DEC -1153 MSK2 OCT 077400 MSK3 EQU EX10 SW4 EQU .20 SW14 EQU IRL EXP6 EQU DMAIN SKP * * STORAGE LOCATIONS * TSTNN OCT 2000 BITS NOP CODN NOP SB NOP BTCNT NOP RD NOP X2FLG NOP 2X SIZE PRINT WHEN SET CHAR NOP TMP NOP HPIB NOP BIT 7: 0 = PARALLEL; 1 = HP-IB CTLCH NOP PARTY NOP ACT NOP ACTUAL STATUS EXP NOP EXPECTED STATUS TSTN NOP TEST NUMBER (REFERENCED BY ERS) SUB NOP SUBTEST NUM ( " " ) PPFLG NOP EVFC NOP STOR NOP PITB NOP EXCT NOP EXPN NOP SWOVR NOP IF 0 THEN STANDARD VFC TEST IBCMD NOP PLTA NOP DEVICE ADDRESS (WITH PARITY) NPLTA NOP DEVICE ADDRESS (WITHOUT PARITY) SV0 NOP SV1 NOP SV2 NOP SV3 NOP SV4 NOP SV5 NOP SV6 NOP SV7 NOP SV8 NOP SV9 NOP SV10 NOP SV11 NOP SV12 NOP SV13 NOP SV14 NOP SV15 NOP SV16 NOP SV17 NOP SV18 NOP SV19 NOP SV20 NOP SV21 NOP SV22 NOP SV23 NOP SV24 NOP SV25 NOP SV26 NOP SV27 NOP SV28 NOP SV29 NOP SV30 NOP SV31 NOP SV32 NOP SV33 NOP SV34 NOP SV35 NOP SV36 NOP CNT1 NOP CNT2 NOP CNT3 NOP CNT4 NOP CNT5 NOP CNT6 NOP CNT7 NOP TM1 NOP TM2 NOP TM3 NOP TM4 NOP TM5 NOP TM6 NOP SKP * * DEFINITIONS * SOFTV DEF SOFT1 DT2E DEF VFU9 FRBX DEF HDMS+18 FRBXY DEF HDMS+33 INCR DEF INCRL LANG DEF LANGX RDY DEF RDYI DT1 DEF TBL1 DT2 DEF TBL2 DT3 DEF TBL3 LIAC DEF LIACH STR DEF STRD ACVAL DEF AVAL SUBM1 DEF SUBM+4 SUBM2 DEF M54+16 IOSUB DEF M54+10 DSCR DEF DSCRP TOFC DEF TOFCK DMAR DEF DMART STABA DEF STAB MSTAB DEF MTABL LNGXP DEF LNGX LNGXB DEF LNGX+8 PRSEC DEF MCT11+15 PRIMX DEF MCT11+19 BINTB DEF BNTAB LPI DEF MCT12+14 M66 DEF MS66+18 M66T DEF MS66T DEV DEF M124+6 CKS DEF CKST CONV DEF CONVR VER DEF VERIF EXB DEF EXTB ZTEST DEF TSTMS+2 TSTX DEF TSTMS M104A DEF M104+9 HDSSX DEF HDSS HDSUB DEF HDSS+9 SKP * POSITION FORM TO TOF-2 FOR PRINTED TESTS * STFRM NOP STA SV0 STORE A REGISTER JSB MSGH,I TELL OPERATOR TO ALIGN TOF DEF M100 LDA MASTR MASTER CLEAR DEFINES TOF JSB CMNDP LDA VF8X ALIGN PAPER TO TOF-2 JSB CMNDP JSB FF LDA SV0 RESTORE A REGISTER JMP STFRM,I RETURN * SPC 2 * PUT CYCLIC PATTERN IN BUFFER * CYBFI NOP LDB CYBFD SET POINTER STB CYBFT TO CYCLIC BUFFER LDB DM132 GET MAX BUFFER COUNT STB SV35 STA CYLC CYBFK CPA NONPR STRIP OUT ANY ONE CHARACTER INA STA CYBFT,I STORE CHARACTER INA MOVE TO NEXT CHARACTER CPA .200 IS IT LAST CHR? LDA STCHR YES - RESTART SEQUENCE ISZ CYBFT MOVE POINTER ISZ SV35 DONE WITH 132 CHARACTERS? JMP CYBFK NO CLB STB NONPR SET NON-PRINTING CHARACTER TO NULL CODE STB STCHR AND SET STARTING CHARACTER TO SAME JMP CYBFI,I RETURN CYBFT NOP CYLC OCT 0 CYBFD DEF FWAA STCHR OCT 0 NONPR OCT 0 SKP * * THIS IS THE PHYSICAL DRIVER FOR HPIB * * ROUTINE LISTEN USED TO ISSUE LISTEN REQUEST TO HPIB DEVICE. * THE ROUTINE RETURNS WITH THE BUS SET TO DATA MODE, DEVICE * SET TO LISTEN MODE, AND PCA SET TO TALK. ALL TRANSFERS ARE * FLAGGED BY THE OUTPUT REGISTER ACCEPTED INTERUPT. * * ROUTINE TALK USED TO ISSUE TALK REQUEST TO HPIB DEVICE. * THE ROUTINE RETURNS WITH THE BUS SET TO DATA MODE, DEVICE SET TO * TALK MODE, AND PCA SET TO LISTEN. ALL TRANSFERS ARE FLAGGED * BY THE INPUT REGISTER LOADED INTERUPT. * * THE MODES OF TRANSFER ARE INDICATED BY THE CONTENTS OF THE * A REGISTER: * A=1 BYTE TRANSFER RECEIVE INTERUPT ON EACH * A=2 WORD TRANSFER RECEIVE INTERUPT ON EACH * A=3 DMA TRANSFER ENABLE DMA EXECUTION * * CALLING SEQUENCE FOR HP-IB * * JSB LSTN OR TALK * DEF *+N RETURN ADDRESS * DEF PLSTN DEVICE ADDRESS * DEF MYSEC1 DEVICE SECONDARY COMMAND 1 * DEF MYSEC2 DEVICE SECONDARY COMMAND 2 * TALK NOP ENTRY POINT FOR DEVICE TO TALK STA TRANS SAVE TYPE OF TRANSFER LDA CTLK GET ENABLE TALK COMMAND STA CMD4 AND PUT IT IN SLOT LDA MTA SET UP MY TALK ADDRESS STA MLTA COMMAND BITS LDA DMAIN SET UP DMA COMMAND STA DMAX FOR INPUT LDA IRL ENABLE INPUT REGISTER LOADED STA INOUT FLAG FOR INPUT. JMP TL0 SPC 1 LSTN NOP ENTRY POINT FOR DEVICE TO LISTEN STA TRANS SAVE TYPE OF TRANSFER LDA LSTN PUT RETURN ADDRESS STA TALK IN TALK RETURN LDA CLST GET ENABLE LISTEN COMMAND STA CMD4 AND PUT IT IN SLOT LDA MLA SET UP MY LISTEN STA MLTA ADDRESS COMMAND BITS CLA SET UP DMA COMMAND STA DMAX FOR OUTPUT LDA ORA ENABLE OUTPUT REGISTER ACCEPTED STA INOUT FLAG FOR OUTPUT SPC 1 TL0 JSB CMND OUTPUT A COMMAND CMD1 OCT 5 ACTIVATE CONTROLLER FUNCTION LDA SW4 CHECK STATUS LDB SW4 BIT 4 TO SEE JSB ISTAT IF CONTROLLER IS ACTIVE JSB CMND OUTPUT A COMMAND CMD2 OCT 20267 SET COMMAND MODE, INITIALIZE FLAGS LDA BYTE CHECK STATUS LDB BYTE BIT 7 TO SEE JSB ISTAT IF IN COMMAND MODE JSB UNADD DO UNIV UNTALK-UNLISTEN SPC 1 LDB TALK,I GET RETURN ADDRESS ISZ TALK MOVE ADDRESS POINTER TO GET LDA TALK,I TALK/LISTEN ADDRESS LDA A,I IOR MLTA PUT ON MTA OR MLA BITS NOP DEBUG SLOT TL1 JSB OUTA OUTPUT TO DEVICE. ISZ TALK MOVE ADDRESS POINTER CPB TALK IF EQUAL TO RETURN ADDR JMP TL2 THEN DONE LDA TALK,I GET SECONDARY COMMAND LDA A,I XOR SCG ADD SECONDARY COMMAND BITS NOP DEBUG SLOT JMP TL1 SPC 1 TL2 LDA CMD4 GET COMMAND FOR DATA MODE IOR BYTE ASSUME BYTE TRANSFER FIRST LDB .2 IF TRANSFER TYPE CPB TRANS S A 2, ADD ON WORD BIT IOR WORD INB CPB TRANS IF EQUAL TO A 3, SET FOR DMA TRANSFER IOR DMAX SET FOR DMA TRANSFER IOR INOUT SET ORA OR IRL FLAGS STA CMD4 PUT COMMAND IN PLACE JSB CMND OUTPUT A COMMAND CMD4 NOP SET TO TALK OR LISTEN LDA MLTA CHECK STATUS TALK OR LISTEN BITS LDB MLTA JSB ISTAT FOR PROPER MODE NOP JMP TALK,I RETURN SKP SPC 1 CMND NOP ROUTINE TO ACTUALLY DUMP COMMAND TO 59310 STA CSAV SAVE REGISTER A CND1 STF CH SET BOARD TO COMMAND MODE LDA CMND,I GET PARAMETER CND2 OTA CH DUMP COMMAND NOP DEBUG SLOT ISZ CMND BUMP RETURN LDA CSAV RESTORE REGISTER A JMP CMND,I RETURN CSAV NOP SPC 1 * ROUTINE TO ISSUE CLEAR TO BOARD AND BUS. * UNADD NOP LDA MTA SEND UNIVERSAL UNTALK IOR UN JSB OUTA LDA MLA SEND UNIVERSAL UNLISTEN IOR UN JSB OUTA NOP JMP UNADD,I SKP * * ROUTINE TO INITIATE PARALLEL POLL AND RETURN * POLL RESULTS * POLL NOP ENTRY PP0 CLC CH,C CLEAR IFC FLAG JSB CMND DISABLE 310 DATA MODE OCT 100 JSB CMND OCT 70 REQUEST PARALLEL POLL LDA TIMEP TIME OUT SET TO 1.5 SECONDS LDB IBCMD CPB .4 IF COMMAND IS SELF TEST RSS - OR - CPB .37 HPIB SELF TEST LDA DM3K THEN SET TIME LIMIT TO 3 SEC STA TM1 PP1 STF CH GET CONTROL MODE PP2 LIA CH,C GET STATUS AND .17 BITS 0-3 MAY RESPOND TO POLL NOP CPA .11 IS RESPONSE FROM IFC? JMP PP5 YES, REPORT ERROR AND EXIT TEST NOP SZA A CLEAR IF NO RESPONSE JMP PP3 INA DO 1 MS DELAY BEFORE NEXT POLL JSB TMRR,I ISZ TM1 DONE WITH 1000 MS? JMP PP1 LDB IBCMD CPB .4 IF COMMAND WAS SELF TEST RSS CPB .37 OR HPIB SELF TEST JMP PP6 THEN JUMP NOP E106 JSB ERMS,I REPORT FAILURE TO RESPOND TO POLL DEF M106 JMP PP0 TRY AGAIN NOP PP3 ADA DM1 CONVERT POLL RESPONSE TO DEV ADDR CMA AND .7 JSB CMND RETURN 59310B TO DATA MODE OCT 40 CPA NPLTA DID PROPER DEVICE RESPOND? JMP POLL,I YES--RETURN STA ACT JSB CONV,I CONVERT ADDR OF RESPONDING DEV STA M104A,I LDA ACT JSB MSGH,I TELL OPERATOR RESPONDING DEV SHOULD DEF M104 BE TAKEN OFF LINE TO CONTINUE TESTING NOP JMP PP0 TRY AGAIN FOR CORRECT RESPONSE NOP PP5 JSB ERMS,I DEF M137 JMP TSTNN,I EXIT TEST PP6 JSB CMND RETURN 59310B TO DATA MODE OCT 40 JMP POLL,I LET CALLING ROUTINE HANDLE ERROR SKP SPC 1 * * ROUTINE TO PERFORM SERIAL POLL * * RETURNS TO P+1 IF RESPONSE WAS POSITIVE * RETURNS TO P+2 IF RESPONSE WAS NEGATIVE * SERPL NOP CLA,INA JSB LSTN ADDRESS PRINTER TO LISTEN DEF *+3 AND ENABLE SERIAL POLL DEF PLTA DEF SPE NOP CLA,INA JSB TALK ADDRESS PRINTER TO TALK DEF *+2 DEF PLTA NOP LDA DM5 INITIAL TIME OUT VALUE LDB .1 JSB LIAC,I FETCH SERIAL POLL BYTE AND .100 MASK OFF RESPONSE BIT SZA,RSS IF NOT PRESENT, ISZ SERPL INCREMENT RETURN ADDRESS CLA,INA JSB LSTN DISABLE SERIAL POLL DEF *+3 DEF PLTA DEF SPD JSB RDSJ ENSURE 59310 DUMPS SER. POLL RESP JMP SERPL,I * * ROUTINE TO EVALUATE IB STATUS AFTER COMMAND CHANGE * * ASSUMES EXPECTED STATUS IS IN B REG WITH * DESIRED MASK VALUE IN VARIABLE SMASK. * RETURNS IF VALID STATUS -- FATAL HALT IF NOT * ISTAT NOP ENTRY STA SMASK SAVE STATUS MASK IS1 STF CH GET COMMAND MODE IS2 LIA CH GET STATUS WORD STA IBSTA NOP DEBUG SLOT AND SMASK SAVE DESIRED VALUES CPA B CHECK TO SEE IF VALID JMP ISTAT,I YES--RETURN LDA IBSTA NOP FOR DEVELOPMENT REPLACE WITH "HLT 0" JMP ISTAT,I * OUTA NOP STA OSAV STB BSAV1 LDB DM200 GET TIME OUT VALUE STB SV2 OA1 OTA CH,C DUMP DATA/COMMAND OA3 SFS CH IS IT ACCEPTED JMP TOUT NO--GO WAIT OA4 LDA OSAV RESTORE REG A LDB BSAV1 JMP OUTA,I RETURN BSAV1 NOP * TOUT CLA,INA GO WAIT 1 MS JSB TMRR,I ISZ SV2 JMP OA3 NOP FOR DEVELOPMENT REPLACE WITH "HLT 1" JSB ERMS,I REPORT HP-IB TIME OUT ON CMND DEF M107 NOP JMP OA4 SPC 2 * * ROUTINE TO FORCE ODD PARITY ON DEVICE ADDRESS * AND STORE WITH (PLTA) AND WITHOUT (NPLTA) PARITY * ADPAR NOP LDB DM4 INITIALIZE COUNTER STB CNT2 AND .37 EXTRACT 5 BITS OF ADDRESS STA NPLTA AND STORE WITHOUT PARITY STA B SUM RAR ADD (IN B) EACH OF THE 5 BITS ADB A ISZ CNT2 DONE? JMP SUM NO ALF YES - REPLACE IN ORIGINAL POSITION ERB MOVE PARITY BIT TO "E" SEZ FORCE EVEN PARITY SO THAT WITH MLTA, IOR .200 PARITY BECOMES ODD STA PLTA STORE AWAY JMP ADPAR,I SKP LST * TOP OF FORM * FF NOP STA SV3 SAVE A-REG LDA LC8 JSB STR,I GET LINE PRINTER STATUS LDA STABA,I INA LDA A,I GET I/O STATUS AND .4 SZA JMP ELPI LDA LC6 SIX LPI SET UP LDB HP6 LINE COUNT FOR HALF PAGE MINUS 2 AT 6LPI STB SV4 LDB TF6M2 LINE COUNT FOR TOF MINUS 2 AT 6 LPI JMP GENFF ELPI LDA LC8 EIGHT LPI SET UP LDB HP8 LINE COUNT FOR HALF PAGE MINUS 2 AT 8 LPI STB SV4 LDB TF8M2 LINE COUNT FOR TOF MINUS 2 AT 8 LPI GENFF ADA STABA,I LDA A,I GET CURRENT LINE COUNT CMA,INA STA SV5 STORE NEGATIVE OF LINE COUNT ADA SV4 SUBTRACT LINE COUNT FROM HALF PAGE POSITION SSA,RSS IS LINE COUNT PAST HALF PAGE POINT? JMP OKFF NO LDA SV5 YES--SET UP TO GO TO TOF MINUS 2 ADA B SUBTRACT LINE COUNT FROM TOF MINUS 2 OKFF ADA SL00 ADD NUMBER OF LINES TO SLEW TO PRINT CMNDP JSB CMNDP LDA CLBUF ISSUE 2 OPERATION COMPLETE CMND TO JSB CMNDP INSURE ALL I/O DONE BEFORE EXIT LDA CLBUF JSB CMNDP FF IS FINISHED LDA SV3 RESTORE A-REG. JMP FF,I RETURN P+2 HP6 OCT 34 HALF PAGE MINUS 2 AT 6 LPI TF6M2 EQU .100 TOF MINUS 2 AT 6 LPI HP8 OCT 46 HALF PAGE MINUS 2 AT 6 LPI TF8M2 OCT 126 TOF MINUS 2 AT 8 LPI * * PRINT CURRENT LINE * * A & B ARE SAVED * * THE INTERRUPT SYSTEM IS NOT USED FOR PRINT * PRINT NOP STA SV6 LDA VF2X GET PRINT CMND JSB CMNDP OUTPUT THE COMMAND LDA SV6 RESTORE A JMP PRINT,I RETURN SPC 2 CMNDP NOP STB SV7 LDB HPIB IS THIS HPIB INTERFACE? SZB JMP IBYES YES JSB OTCH NO--EXECUTE AS FOR PARALLEL LDB SV7 RESTORE B REGISTER JMP CMNDP,I EXIT FOR PARALLEL NOP NOP IBYES STA SV8 SAVE A REGISTER ALF SEND COMMAND BYTE FIRST ELA,ARS PLACE PARITY BIT IN "E" AND .17 SAVE ONLY BITS 0-3 SEZ IF PARITY BIT WAS ON, IOR .200 THEN ADD PARITY BIT STA IBCMD NOP LDA SV8 CPA MASTR IF MASTER CLEAR, SKIP RDY CHECK RSS CPA ONLIN IF ON LINE, SKIP RDY CHECK RSS IBY1 JSB RDY,I RSS JMP IBY1 CLA,INA A=1 FOR BYTE TRANSMISSION JSB LSTN SEND COMMAND THRU DRIVER'S LSTN ROUTINE DEF *+3 RETURN ADDRESS DEF PLTA MY TALK, LISTEN ADDRESS DEF IBCMD COMMAND BYTE TO BE SENT TO LP LDA SV8 OUTPUT ASSOCIATED DATA BYTE OF AND .377 COMMAND THRU "OTA CH,C" NOP JSB OTIB NOP LDA SV8 CPA OFLIN IF COMMAND WAS "OFF LINE", JMP OFFSK SKIP POLL JSB POLL TRY PARALLEL POLL CLA,INA ADDRESS LP TO LISTEN JSB LSTN DEF *+3 RETURN ADDRESS DEF PLTA LP TALK,LISTEN ADDRESS DEF IBDAT NOP OFFSK LDB SV7 RESTORE B REGISTER LDA SV8 RESTORE A REGISTER JMP CMNDP,I EXIT COMMAND ROUTINE SKP SPC 2 * * THIS SUBROUTINE READS THE PRINTER'S DSJ RESPONSE AND * RETURNS WITH INFO IN A REGISTER * RDSJ NOP CLA,INA SEND DSJ COMMAND JSB TALK DEF *+3 DEF PLTA DEF DSJ LDA DM5 5 MS TIME LIMIT CLB,INB READ ONE BYTE (DSJ RESPONSE) JSB LIAC,I NOP JMP RDSJ,I SPC 2 * THIS ROUTINE EXECUTES A STATUS READBACK OF DATA BYTE * IN "CODN" ON HPIB. STATUS IS RETURNED IN BITS 0-7 OF * THE A REGISTER. * IBST NOP CLA,INA JSB LSTN SEND STATUS COMMAND (12B) DEF *+3 DEF PLTA DEV ADDR DEF STAT NOP LDA CODN SEND STATUS DATA BYTE JSB OTIB NOP JSB POLL WAIT FOR POLL RESPONSE NOP CLA,INA LP IN TALK MODE JSB TALK DEF *+3 DEF PLTA DEV ADDR DEF STAT NOP LDB CODN LDA B ALF,ALF IF READ IS FOR DOT MATRIX SSA THEN READ ONLY THE FIRST DATA BYTE CLB,INB (I.E. THE CHAR SET CODE) LDA DM5 5 MS TIME LIMIT FOR FLAG TO SET JSB LIAC,I INPUT DATA NOP JMP IBST,I SKP * * THE A REGISTER IS OUTPUT TO THE LP BY "OTA CH,C". * OTIB NOP STB SV9 STA SV10 STORE OUTPUT TO PRINTER IBO1 OTA CH,C SEND INFORMATION TO LP LDA DM5 5 MS IS TIMEOUT FOR FLAG TO SET STA TM3 IBO2 SFS CH IS FLAG SET YET? JMP IBO3 NO TRY AGAIN LDB SV9 RESTORE B REGISTER JMP OTIB,I FLAG SET, SO RETURN IBO3 CLA,INA DO 1 MS WAIT AND CHECK FLAG AGAIN JSB TMRR,I ISZ TM3 DONE WAITING 5 MS? JMP IBO2 NO CHECK FLAG AGAIN CLA YES - LDB SV10 CPB DM1 WAS DATA = -1? JMP OTIB,I YES - RETURN WITH A REGISTER CLEAR JSB RDY,I NO - SEE IF LP ON LINE, READY JMP E030 LP READY & FLAG DIDNT' SET--ERROR LDA SV10 TRY OUTPUT AGAIN JMP IBO1 NOP SPC 2 * GET LP'S STATUS IN A REG STSIN NOP SIN LIA CH STA ACT JMP STSIN,I SPC 3 * OUTPUT A-REG TO L.P. USING INTERRUPT * SYSTEM FOR PRINT COMPLETED. OUTI NOP STA SV11 SAVE A-REG STB SV12 SAVE B-REG OUT2 LDB HPIB IS THIS HP-IB? SZB JMP OUT1 YES LDA TIMEA SET TIMEOUT FOR PARALLEL RSS OUT1 LDA .5 TIMEOUT FOR HPIB IS 5 MS STA TM4 LDA SV11 RESTORE DATA OUTIA OTA CH,C OUTPUT TO CH, CLEAR FLAG OUTIE CLC CH,C OUTIB STC CH,C STF 0 TURN ON INTERRUPT SYSTEM LDA TM4 DELAY APPROPRIATE TIME JSB TMRR,I CLF 0 TURN OFF INTERRUPT JSB RDY,I CHECK LP STATUS RSS IF LP IS ON LINE, REPORT NO INT JMP OUT2 ELSE, TRY OUTPUT AGAIN OUTID CLC CH,C JSB ERMS,I REPORT ERROR DEF MS031 CLC 0,C JSB FF JMP TSTNN,I EXIT CURRENT TEST SPC 1 OUTIC CLC CH,C TRANSMISSION COMPLETED CLF 0 LDA SV11 RESTORE A-REG LDB SV12 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 SV13 SAVE A-REG STB SV14 SAVE B-REG LDB HPIB IS THIS HP-IB? SZB,RSS JMP OTCHI NO JSB OTIB USE HPIB TO OUTPUT TO PRINTER JMP OTCHG RESTORE REGISTERS, EXIT OTCHI LDA SV13 IF SELF TEST, ALLOW 3 SEC TIMEOUT LDB TIMEB CPA SLFTS LDB DM3K STB TM5 STORE APPROPRIATE TIMEOUT MAX OTCHA OTA CH OUTPUT TO PRINTER OTCHB STC CH,C SET CONTROL AND CLEAR FLAG CLB OTCHC SFS CH WORD COMPLETED ? JMP OTC1 NO OTCHG LDA SV13 RESTORE A-REG LDB SV14 RESTORE B-REG OTCHE CLC CH,C JMP OTCH,I RETURN OTC1 INB,SZB WHEN B=0, BEGIN 1 MS DELAYS JMP OTCHC NOT=0, TRY FLAG CHECK AGAIN OTC2 CLA,INA DELAY 1 MS AT A TIME JSB TMRR,I OTCHF SFS CH RSS JMP OTCHG EXIT OTCH ISZ TM5 DONE WITH TOTAL DELAY? JMP OTC2 NO, TRY AGAIN LDA SV13 EXIT IF OUTPUT WAS SELF TEST CMND CPA SLFTS JMP OTCHH LDA RD HAS READY BEEN CALLED YET? SZA JMP E030 YES, SO REPORT ERROR AND EXIT TEST JSB RDY,I IS LP ON LINE, READY, AND NOT RESET? RSS YES, REPORT FLAG ERROR JMP OTCHI "OFF LINE" REPORTED, SO TRY OUTPUT AGAIN NOP OTCHH CLA RETURN A-REG=0 IF SELF TEST JMP OTCH,I DID NOT COMPLETE IN 3 SECONDS E030 CLA RESET READY ROUTINE FLAG TO 0 STA RD JSB ERMS,I DEF MS030 FLAG FAILED TO SET AFTER OUTPUT JMP TSTNN,I FATAL ERROR, EXIT TEST SPC 2 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 2 PRTT NOP LDA EVFC GET VFU CODE JSB CMNDP OUTPUT VFU JSB OTLP TELL OPEPETOR JMP PRTT,I RETURN SPC 2 SPC 2 * OTLP PERFORMS TEXT STRING OUTPUT TO LP * B = BUFFER ADDRESS SPC 1 OTLP NOP JSB TCJMP SET TRAP CELL FOR INTERRUPTS DEF OUTIC INTERRUPT ADDRESS NOP OTP1 JSB RDY,I CHECK LP STATUS RSS JMP OTP1 OTPP NOP LDA B,I GET FIRST CHARACTER ALF,ALF POSITION UPPER CHARACTER AND .377 MASK CPA .57 TEST FOR '/' JMP OTLP,I EXIT NOP JSB OUTI WRITE CHARACTER LDA B,I GET CHARACTER AGAIN AND .377 MASK LOWER CHARACTER CPA .57 TEST FOR '/' JMP OTLP,I EXIT NOP JSB OUTI WRITE CHARACTER INB MOVE PTR TO NEXT WORD JMP OTPP CONTINUE SKP ORG 4000B TST.0 EQU * CLEAR LP BSIC NOP BEFORE LDA BSIC RUN STA TSTNN * LDB HPIB SZB IF HPIB, JMP TST0B DON'T EXECUTE BASIC I/O CLC 0,C * CLA INSURE DATA ON THE INTERFACE TSTO OTA CH * JSB TST0A,I CALL BI/O CLC 0,C CLEAR LP JSB RDY,I CHECK LP STATUS LDA CLBUF JSB CMNDP CLEAR LP BUFFER LDA SLFTS EXECUTE PROG SELF TEST CMNDP JSB CMNDP WITH PRINTING DISABLED SZA,RSS IF A = 0, SLF TST FLAG NOT SET JMP E126 REPORT ERROR AND EXIT LDA SLF LDB EX10 EXPECTED STATUS AND SELECTED BITS JSB STR,I CHECK SELF TEST STATUS JSB CKS,I JMP BSIC,I  EXIT E126 JSB ERMS,I REPORT FLAG FAIL ERROR DEF M126 JMP BSIC,I EXIT TST0A DEF TST00 SPC 1 * TEST 0B SUBTEST 1B TST0B ISZ SUB LDA OFLIN JSB CMNDP TAKE PRINTER OFF LINE LDA D96 WAIT NEARLY 1 MS JSB TMRR,I LDA ONLIN PUT PRINTER BACK ON LINE JSB CMNDP NOP JSB RDSJ GET DSJ RESPONSE LDB .1 CPA B IF DSJ RESPONSE = 1, JMP *+3 THEN CONTINUE ON E121 JSB ERMS,I DSJ ERROR DEF M121 NOP NOP LDA IO JSB STR,I READ I/O STATUS JSB RDSJ GET DSJ RESPONSE CLB SZA,RSS IF DSJ IS ZERO, JMP *+3 THEN CONTINUE E121B JSB ERMS,I DSJ ERROR DEF M121 NOP SPC 1 * TEST 0B SUBTEST 2B ISZ SUB LDA VF0X MOVE PAPER TO TOF JSB CMNDP NOP LDA DPRNT SET DOUBLE SIZE MODE JSB CMNDP CLA,INA SEND DEVICE CLEAR COMMAND JSB LSTN DEF *+3 DEF PLTA DEF DVCLR CLA JSB OTIB JSB POLL LDA PMODE LDB EX10 JSB STR,I TEST PRINT MODE FOR JSB CKS,I STANDARD SPC 1 * TEST 0B SUBTEST 3B ISZ SUB LDA PLTA COMPLIMENT PARITY ON ADDRESS XOR .200 FOR USE AS SECONDARY COMMAND STA IBCMD CLA,INA JSB TALK START IDENTIFY DEF *+3 DEF UN UNTALK DEF IBCMD ADDRESS SENT AS SECONDARY NOP LDA DM5 5 MS TIME LIMIT LDB .2 READ TWO BYTES JSB LIAC,I OF IDENTIFY INFO JSB CMND INTERFACE CLEAR TO REMOVE IDENTIFY OCT 1 CLA,INA WAIT FOR 1 MS FOR INTERFACE CLEAR TO FINISH JSB TMRR,I LDB STABA,I INB LDA B,I FIRST BYTE ALF,ALF LEFT JUSTIFY INB IOR B,I SECOND BYTE LDB EX21 CPA B ARE BYTE CORRECT? JMP *+3 YES - CONTINUE E130 JSB ERMS,I NO - BAD DEVICE IDENTIFY DEF M130 NOP SPC 1 * TEST 0B SUBTEST 4B ISZ SUB LDA IBSLF STA IBCMD SET UP FOR HPIB SELF TEST CLA,INA JSB LSTN DEF *+3 DEF PLTA DEF IBCMD CLA,INA JSB OTIB INHIBIT PRINTING JSB POLL WAIT 3 SEC FOR PARALLEL POLL CLA,INA JSB TALK FETCH SELF TEST STATUS DEF *+3 USING HPIB COMMAND DEF PLTA DEF IBCMD LDA DM5 5 MS TIME LIMIT CLB,INB JSB LIAC,I READ 1 BYTE CLB SZA,RSS IF SELF TEST STATUS IS ZERO, JMP *+3 THEN CONTINUE E125 JSB ERMS,I DEF M125 ERROR IN HPIB SELF TEST STATUS NOP SPC 1 * TEST 0B SUBTEST 5B ISZ SUB LDA SLFTS JSB CMNDP COMMAND SELF TEST (STANDARD, INHIBIT PRINT) LDA SLF LDB EX10 JSB STR,I CHECK SELF TEST STATUS JSB CKS,I SPC 1 * TEST 0B SUBTEST 6B ISZ SUB LDA OFLIN JSB CMNDP TAKE PRINTER OFF LINE JSB CMND OCT 5 SET 59310 AS ACTIVE CONTROLLER LDA SW4 LDB SW4 JSB ISTAT TEST AND LOAD 59310 STATUS LDA IBSTA SSA,RSS IS SERIAL REQUEST FLAG SET? JMP *+3 NO - GOOD, SO CONTINUE E133 JSB ERMS,I YES - ILLEGAL SERVICE REQUEST DEF M133 JSB SERPL PERFORM SERIAL POLL RSS DEVICE DID RESPOND JMP *+3 DEVICE DID NOT RESPOND (GOOD) E134 JSB ERMS,I DEF M134 ILLEGAL SERIAL POLL RESPONSE LDA ONLIN JSB CMNDP RETURN PRINTER ON LINE JSB CMND OCT 5 SET 59310 AS ACTIVE CONTROLLER LDA SW4 LDB SW4 * BYPASS SERIAL POLL CHECK FOR TIME BEING JMP BSIC,I EXIT * JSB ISTAT TEST AND LOAD 59310 STATUS LDA IBSTA SSA IS SERIAL REQUEST FLAG SET? JMP *+3 YES - GOOD, CONTINUE E135 JSB ERMS,I NO - MISSED SERVICE REQUEST DEF M135 JSB SERPL PERFORM SERIAL POLL JMP *+3 DEVICE RESPONDED - END OF TEST E136 JSB ERMS,I NO RESPONSE TO SERIAL POLL DEF M136 JSB FF JMP BSIC,I SKP * TEST 01 * MANUAL CONTROL TEST (MCT) 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 * TEST 1 SUBTEST 1B LDA VF0X GO TO TOF JSB CMNDP H040B JSB MSGH,I TURN LP PWR OFF PRESS RUN DEF MCT00 ISZ SUB LDB HPIB SZB IF HPIB, CAN'T READ STATUS WITH JMP H041B POWER OFF SO SKIP THIS TEST LDB EX1 SET OF BITS AND STATUS TO BE CHECKED LDA IO FOR I/O STATUS CHECK JSB STR,I JSB CKS,I CHECK STATUS SPC 1 * TEST 1 SUBTEST 2B H041B JSB MSGH,I PWR ON, READY THE PRINTER, CLEAR POWER ON DEF MCT01 SWITCHES, ON LINE, PRESS RUN ISZ SUB LDA IO LDB EX2 JSB STR,I GET ACTUAL STATUS TABLE JSB CKS,I CHECK STATUS SPC 1 * TEST 1 SUBTEST 3B HX03B LDA MASTR CWD FOR MASTER CLEAR ISZ SUB JSB CMNDP LDB EX3 EXPECTED STATUS FOR MASTR CLEAR LDA IO GET IO STATUS AND CHECK WITH EXPECTED JSB STR,I JSB CKS,I SPC 1 * TEST 1 SUBTEST 4B HX04B ISZ SUB LDA LC8 GET TABLE OF STATUS JSB STR,I LDA IO BEGIN CHECKING STATUS A44 LDB EXB GET EXPECTED STATUS ADB A FOR THIS DATA BYTE CODE LDB B,I JSB ACVAL,I JSB CKS,I A45 ISZ CODN LDA CODN CPA .10 JMP A45 SKIP 6 LPI FORMS LENGTH CPA .13 DONE? RSS YES JMP A44 GET NEXT EXP, AND CHECK CLA,INA RESTORE CODN TO 1 STA CODN NOP SPC 1 * TEST 1 SUBTEST 5B H042B JSB MSGH,I RESET,ON LINE, PRESS RUN DEF MCT02 ISZ SUB LDB EX2 LDA IO JSB STR,I GET ACTUAL STATUS JSB CKS,I CHECK STATUS LDA MASTR EXECUTE MASTER CLEAR COMMAND JSB CMNDP SPC 1 * TEST 1 SUBTEST 6B H043B JSB MSGH,I OFF LINE, PRESS RUN DEF MCT03 ISZ SUB LDA DSPLY JSB STR,I FORCE PROGRAMATIC READ OF I/O STATUS LDA IO TEST I/O STATUS LDB EX4 EXPECTED STATUS OF SELECTED BITS JSB ACVAL,I JSB CKS,I CHECK STATUS SPC 1 * TEST 1 SUBTEST 7B H044B JSB MSGH,I ON LINE, OPEN PLATEN, PRESS RUN DEF MCT04 ISZ SUB LDB EX16 EXPECTED STATUS OF SELECTED BITS LDA DSPLY JSB STR,I GET DISPLAY STATUS JSB CKS,I CHECK STATUS SPC 1 * TEST 1 SUBTEST 10B H045B JSB MSGH,I CLOSE PLATEN, ON LINE, PRESS RUN DEF MCT05 ISZ SUB LDB EX17 EXPECTED STATUS OF SELECTED BITS LDA DSPLY JSB STR,I GET DISPLAY STATUS NOP JSB CKS,I CHECK STATUS SPC 1 * TEST 1 SUBTEST 11B H046B LDA SL01 SLEW ONE LINE TO MOVE FROM TOF ISZ SUB JSB CMNDP JSB MSGH,I TEAR PAPER, PRESS RUN DEF MCT06 JSB TOFC,I FORCE TOF JMP H047B IF TOF NOT REACHED, EXIT THIS SUBTEST LDA .5 ALLOW TIME FOR PAPER OUT TO CAUSE OFF-LINE JSB TMRR,I LDB EX18 EXPECTED STATUS OF SELECTED BITS LDA DSPLY JSB STR,I GET DISPLAY STATUS JSB CKS,I SPC 1 * TEST 1 SUBTEST 12B H047B JSB MSGH,I REINSTALL PAPER, ON LINE, PRESS RUN DEF MCT07 ISZ SUB LDB EX17 EXPECTED STATUS OF SELECTED BITS LDA DSPLY GET DISPLAY STATUS JSB STR,I JSB CKS,I CHECK STATUS LDA MASTR DO MASTER CLEAR IN CASE CLUTZ HIT RESET JSB CMNDP SPC 1 * TEST 1 SUBTEST 13B HX13B ISZ SUB LDA OFLIN TAKE PRINTER OFF LINE JSB CMNDP LDA D96 NEARLY 1 MS FOR OFFLINE JSB TMRR,I LDB EX4 EXPECTED STATUS OF SELECTED BITS LDA IO JSB STR,I TEST I/O STATUS JSB CKS,I SPC 1 * TEST 1 SUBTEST 14B H050B ISZ SUB JSB MSGH,I 8LPI, PRESS RUN DEF MCT08 LDB EX19 LDA IO JSB STR,I GET IO STATUS JSB CKS,I SPC 1 * TEST 1 SUBTEST 15B HX15B ISZ SUB LDA ONLIN RETURN PRINTER TO ON LINE JSB CMNDP LDA IO NOW CHECK IO STATUS AGAIN LDB EX7 JSB STR,I JSB CKS,I REPORT ERRORS IF ANY NOP SPC 1 * TEST 1 SUBTEST 16B HX16B LDA VFCIN CWD FOR VFC INIT ISZ SUB JSB CMNDP CLA,INA 2 BYTES REQ'D TO SATISFY VFCIN CWD JSB OTCH BYTE 1 = CH 16 TO 9 CLA JSB OTCH BYTE 2 = CH 8 TO 1 LDB EX8 EXPECTED STATUS OF SELECTED BITS LDA IO JSB STR,I GET IO STATUS JSB CKS,I SPC 1 * TEST 1 SUBTEST 17B HX17B LDA IN6LP RETURN TO 6 LPI AND VFC INIT STATUS ISZ SUB JSB CMNDP LDB EX3 EXPECTED STATUS OF SELECTED BITS LDA IO JSB STR,I GET IO STATUS JSB CKS,I SPC 1 * TEST 1 SUBTEST 20B H051B JSB MSGH,I OFF LINE, LINE FEED, RUN DEF MCT10 ISZ SUB LDA LC6 JSB STR,I GET STATUS LDA DR6 FIRST CODN TO BE CHECKED JSB ACVAL,I GET ACTUAL STATUS LDB EX10 FIRST EXPECTED STATUS JSB CKS,I LDA LC6 SECOND CODN TO BE CHECKED JSB ACVAL,I GET ACTUAL STATUS LDB EX6 SECOND EXPECTED STATUS JSB CKS,I SPC 1 * TEST 1 SUBTEST 21B H052B JSB MSGH,I FORM FEED, ON LINE, RUN DEF MCT09 ISZ SUB LDA LC6 GET STATUS JSB STR,I LDB EX10 FIRST EXPECTED STATUS LDA DR6 FIRST STATUS CODN JSB ACVAL,I GET ACTUAL STATUS JSB CKS,I DO 2 STATUS CHECKS ON CONSECUTIVE READBACKS LDA LC6 CHECK LINE POSITION JSB ACVAL,I GET ACTUAL STATUS LDB EX10 SECOND EXPECTED STATUS JSB CKS,I LDA IO JSB ACVAL,I GET ACTUAL STATUS LDB EX3 EXPECTED STATUS ON SELECTED BITS JSB CKS,I SPC 1 * TEST 1 SUBTEST 22B H053B CLA STA TMP INITIALIZE SWITCH COUNTER ISZ SUB INA INITIALIZE SWITCH POSITION X55 STA SB LDB PRSEC INITIALIZE MESSAGE POINTER LDA TMP ALS,ALS A = 4 X SWITCH COUNTER ADA BINTB STA SV1 STORE POINTER FOR BIT PATTERN BINCV LDA SV1,I TRANSFER 2 ASCII CHARS STA B,I ISZ SV1 INCREMENT BOTH POINTERS INB CPB PRIMX ALL TRANSFERRED YET? RSS YES-- JMP BINCV NO -- LDA SB DISPLAY BITS TO BE SET IN A-REGISTER JSB MSGH,I SET POWER ON LANGUAGES, RUN DEF MCT11 LDA POWUP CHECK STATUS FOR POWER UP COND SWTCH JSB STR,I READ STATUS ON BYTES 1-20 LDB SB EXPECTED STATUS ADB EX10 ADD MASK OF BITS TO CHECK IN 8-15 JSB CKS,I CHECK ACTUAL AGAINST EXPECTED LDA SB IF 0, NEXT SUBTEST SZA,RSS JMP H055B CPA .200 READY TO SET ALL SWITCHES TO 0? CLA YES RAL ELSE ROTATE BIT TO BE SET, TO THE LEFT ISZ TMP AND INCREMENT LOOP COUNTER JMP X55 DO NEXT SETUP AND CHECK SPC 1 * TEST 1 SUBTEST 23B ISZ SUB H055B LDA D8 8 LPI LDB HIBY8 RSS Z55 LDA .6 6 LPI STA SB STORE LPI STB LPI,I SET MESSAGE JSB MSGH,I SET POWER ON LPI, RESET, RUN DEF MCT12 LDB EX11 EXPECTED STATUS FOR 6 LPI CPA D8 THIS PASS FOR 8 LPI? LDB EX12 YES--EXPECTED STATUS FOR 8 LPI LDA IO NO-- JSB STR,I READ I/O STATUS JSB CKS,I CHECK I/O STATUS LDB HIBY6 6 LPI MESSAGE LDA SB CPA D8 WAS THIS PASS FOR 8 LPI JMP Z55 YES--CHECK 6 LPI LDA ONLIN NO--RETURN PRINTER TO ON LINE STATE JSB CMNDP SPC 1 * TEST 1 SUBTEST 24B H066B LDA HPIB EXECUTE THIS SUBTEST ONLY SZA,RSS IF HPIB INSTALLED JMP HX66 NOT HPIB, SO EXIT MANUAL CONTROL ISZ SUB INCREMENT SUBTEST CLA,INA IBCK JSB ADPAR WHICH ADDRESS SWITCH BIT TO SET LDB M66T ADDRESS OF TEMPORARY MESSAGE STORAGE CLE JSB O2AS,I CONVERT TO ASCII FOR MESSAGE LDA M66T ADA .2 LDA A,I PULL OUT LAST 2 CHARACTERS STA M66,I AND STORE INTO INFORMATION STA DEV,I AND ERROR MESSAGES LDA NPLTA DISPLAY IN A-REG ON HALT JSB MSGH,I SET DEVICE ADDRESS SWITCH TO XXB DEF MS66 NOP NOP JSB LSTN DEF *+2 DEF PLTA NOP LDA .40 ADDRESS OK IF HANDSHAKES DATA!! SWOTA OTA CH,C SEND DATA BYTE NOP WASTE A BIT OF TIME NOP SWSFC SFC CH DID FLAG SET? JMP IBCK1 YES - A-OK! JSB ERMS,I NO - SWITCH XXB FAILED OR OPER ERROR DEF M124 NOP NOP IBCK1 LDA NPLTA RAL ROTATE SWITCH TO BE SET NOP CPA .40 DONE WITH SUBTEST? RSS YES-- JMP IBCK NO--REPEAT TEST WITH THIS SWITCH CLA SET DESIRED ADDRESS, JSB MSGH,I DEF MS67 AND ENTER IN A-REG, SET IN SWITCHES JSB ADPAR SAVE FOR TALK,LSTN ADDR FOR DIAG HX66 LDA MASTR SEND MASTER CLEAR TO CLEAR JSB CMNDP POWER FAIL BIT JSB FF JMP MCT,I EXIT SKP * TEST 2 * PING-PONG (PIONG) SPC 1 TST02 EQU * PIONG NOP PING-PONG TEST LDA PIONG STA TSTNN SPC 1 * TEST 2 SUBTEST 1B ISZ SUB LDA PING JSB CMNDP OUTPUT PING COMMAND JSB PDATA SEND PING DATA STA PPFLG SET PING-PONG FLAG LDA PING INA JSB CMNDP OUTPUT PONG COMMAND LDA HPIB SZA,RSS IF PARALLEL, JMP PIO4 GO READ STATUS CLA,INA JSB TALK TURN HPIB AROUND DEF *+3 DEF PLTA DEF PONG PIO4 LDA DM5 INITIAL TIME OUT VALUE LDB .400 JSB LIAC,I READ 256 DATA BYTES LDA CYBFD INA STA PPCNT INITIALIZE POINTER CLB INITIALIZE EXPECTED DATA STB PPFLG AND CLEAR FLAG PIO3 LDA PPCNT,I READ NEXT DATA BYTE CPA B IF DATA IS AS EXPECTED, RSS THEN SKIP JMP PIO6 OTHERWISE ERROR CPB .377 IF THAT WAS LAST BYTE, JMP PIO5 GO TO NEXT SUBTEST ISZ PPCNT OTHERWISE INCREMENT POINTER INB AND EXPECTED DATA JMP PIO3 GO READ NEXT BYTE PIO6 LDA SUB CPA .2 IF SUBTEST IS 2, JMP E140 THEN JUMP E122 JSB ERMS,I DEF M122 JMP PIONG,I E140 JSB ERMS,I DEF M140 JMP PIONG,I SPC 1 * TEST 2 SUBTEST 2B PIO5 ISZ SUB LDA SUB ADA DM3 IF LAST SUBTEST WAS 2, A=0 LDB HPIB IF NOT HPIB, SZB THEN SKIP TO END OF TEST SZA,RSS IF LAST SUBTEST WAS 2 JMP PIONG,I END OF TEST CLA,INA JSB LSTN SEND HPIB PING COMMAND DEF *+3 DEF PLTA DEF IBPNG JSB PDATA SET PING DATA STA PPFLG SET PING/PONG FLAG CLA,INA JSB TALK SENT HPIB PONG COMMAND DEF *+3 DEF PLTA DEF IBPNG CLA,INA WAIT FOR 59310 JSB TMRR,I JMP PIO4 GO TEST DATA SPC 1 PDATA NOP CLA PIO2 JSB OTCH OUTPUT 256 DATA BYTES CPA .377 FROM 0 THRU 377B JMP PDATA,I INA JMP PIO2 SPC 1 PPCNT BSS 1 SKP * TEST 03 * HPIB COMMAND PARITY TEST (PARIT) SPC 1 TST03 EQU * PARIT NOP LDA PARIT STA TSTNN LDA PARTY A = PARITY DISABLED FLAG LDB HPIB SZB IF PARALLEL INTERFACE, SKIP TO EXIT SZA PARITY DISABLED? JMP PARIT,I YES NOP CLA,INA SET UP 59310B AND PRINTER JSB LSTN FOR LISTEN ADDRESSED COMMAND DEF *+2 DEF PLTA NOP JSB CMND SET 59310B TO COMMAND MODE OCT 20267 LDA DM1 JSB OTIB OUTPUT COMMAND WITH INCORRECT PARITY NOP SZA,RSS DID OUTPUT ROUTINE TIME OUT? JMP *+3 YES - GOOD, CONTINUE E141 JSB ERMS,I NO - PARITY ERROR NOT DETECTED DEF M141 JSB CMND INTERFACE CLEAR (IFC) OCT 1 JSB CMND IN ORDER TO CLEAR OUT 59310B, OCT 20267 RE-ESTABLISH COMMAND MODE JSB CMND AND THEN RE-EXECUTE INTERFACE OCT 1 CLEAR (IFC) NOP JSB RDSJ READ DSJ RESPONSE NOP AND .2 STRIP OUT PARITY BIT SZA PARITY SET? JMP *+3 YES - GOOD, CONTINUE E142 JSB ERMS,I NO - PARITY ERROR NOT REPORTED DEF M142 JMP PARIT,I SKP * TEST 04 * TRIANGULAR PRINT TEST (TPT) SPC 1 TST04 EQU * TPT NOP TRIANGULAR PRINT TEST LDA TPT STORE STA TSTNN RETURN ADDRESS JSB TCJMP TRAP CELL JUMP DEF OUTIC JSB DSCR,I PRINT TEST NUMBER AND DESCRIPTION LDA LNGCW THIS TEST USES ASCII "M" JSB CMNDP LDB DM136 -136 STB CNT1 STORE COUNT TPTA LDA CHARM " M " LDB CNT1 NUMBER OF PRINT POSITION/LINE TPTB JSB OUTI SEND CHARACTER INB,SZB END OF LINE JMP TPTB NO LDA SL01 ALPHA PRINT AND SLEW 1 LINE JSB CMNDP NOP NOP ISZ CNT1 DECREMENT LINE NUMBER JMP TPTA JSB FF TOP OF FORM JMP TPT,I EXIT SKP * TEST 05 * VERTICAL FORMAT CONTROL TEST (VFCT) SPC 1 TST05 EQU * VFCT NOP VERTICAL FORMAT CONTROL TEST LDA VFCT STORE STA TSTNN RETURN ADDRESS LDA LNGCW OUTPUT RESULTS OF TEST IN ASCII JSB CMNDP JSB TCJMP TRAP CELL JUMP DEF OUTIC CLA POINT TO STA PITB TABLE STA SWOVR * CHECK BIT7 OF SW FOR PROGRAMATIC OVERRIDE * OF VFC DEFINITION LDB .200 JSB SWRT,I CHECK BIT7 OF SW JMP PRVFC BINGO - INSTALL SOFTWARE VFC = STANDARD 6LPI SPC 1 * TEST 5 SUBTEST 1B ISZ SUB VF0 LDA CPA11 16 CH CHECK STA CPAXX JSB VF1 PROCESS CH1-8 AND CH13-16 SPC 1 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 PITB TABLE INDEX ADA DTMR TIME DELAY FOR VALID STATUS LDA A,I GET CURRENT DELAY TIME JSB TMRR,I CH 9 & 12 OK ON RETURN NOP LDA IO I-O STATUS REQUESTED JSB STR,I LDB EXPN AND STORE JSB CKS,I CHECK STATUS LDA PITB TABLE POINTER CPA .3 LAST VFU CODE & MESSAGE ? JMP VF4 YES ISZ PITB NEXT POINTER IN TABLE JMP VF3 LOOP SPC 1 * TEST 5 SUBTEST 2B VF4 ISZ SUB LDA D16 TABLE INDEX STA PITB LDA CPA23 STA CPAXX JSB VF1 PROCESS SLEW TESTS LDA SWOVR SZA,RSS WAS STANDARD VFC OVERRIDDEN? JMP VF5 NO - CONTINUE LDA VF0X YES - MOVE TO TOF JSB CMNDP LDA LPI68 RESET VFC JSB CMNDP VF5 JSB FF JMP VFCT,I SPC 1 VF1 NOP VF9 LDA DT1 NUMBER OF TIMES IN 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 CPAXX CPA D11 SWITCH FOR EXIT ON 11 OR 23 JMP VF1,I YES - EXIT ISZ PITB UPDATE POINTER JMP VF9 LOOP SPC 1 PRVFC LDA SOFTV POINTER TO SOFTWARE VFC TABLE STA SV18 STA SWOVR SET OVERRIDE FLAG LDA VF0X MOVE TO TOF JSB CMNDP LDA SWVFC SEND VFC SET CONTROL WORD JSB CMNDP PRVF1 LDA SV18,I GET 2 BYTES CPA DM1 END OF TABLE? JMP PRVFX YES - EXIT VFC OUTPUT PHASE ALF,ALF NO - EXTRACT CH 9 TO 16 AND .377 JSB OTCH LDA SV18,I GET WORD AGAIN AND .377 EXTRACT CH 1 TO 8 JSB OTCH ISZ SV18 UPDATE TABLE POINTER JMP PRVF1 LOOP PRVFX LDA CLBUF TURN OFF VFC SET COMMAND JSB CMNDP LDA IO LDB EX20 EXPECTED STATUS ON SELECTED BITS JSB STR,I JSB CKS,I JMP VF0 BEGIN WITH 16 CH TEST SPC 2 DT1E DEF EX EX OCT 030000 CH10 STATUS READBACK OCT 030040 CH9 STATUS READBACK OCT 030000 CH11 STATUS READBACK OCT 030020 CH12 STATUS READBACK SPC 1 DT3E DEF MSG MSG DEF MSG26 DEF MSG25 DEF MSG27 DEF MSG28 SPC 1 DTMR DEF *+1 TIME DELAY TABLE FOR CH9 TO 12 TEST OCT 1 OCT 270 OCT 330 OCT 270 SPC 1 CPA11 CPA D11 CPA23 CPA D23 SKP * TEST 06 * CHARACTER SET TEST (CST) SPC 1 TST06 EQU * CST NOP CHARACTER SET TEST LDA CST STORE STA TSTNN RETURN ADDRESS JSB DSCR,I PRINT TEST NUMBER AND DESCRIPTION LDA TRAN0 SET PRINT MODE TO STD TRANSPARENT JSB CMNDP CLA FIRST CHARACTER CSTA LDB DM132 -132 NUMBER OF CHARACTER/LINE CSTAB JSB OTCH SEND CHARACTER INB,SZB LAST CHARACTER IN COLUMN JMP CSTAB NO JSB PRINT PRINT VFC CH3 INA NEXT CHARACTER CPA .200 LAST CHARACTER ? RSS YES JMP CSTA NO JSB FF TOP OF FORM JMP CST,I EXIT SKP * TEST 07 * DMA OPERATION TEST (DMA OR DCPC) SPC 1 TST07 EQU * DMA NOP DMA OPERATION TEST LDA DMA STORE STA TSTNN RETURN ADDRESS JSB DSCR,I PRINT TEST NUMBER AND DESCRIPTION LDA TRAN0 SET PRINT MODE TO STD TRANSPARENT JSB CMNDP LDA DM127 NUMBER OF LINES TO BE PRINTED STA CNT1 CCA,RSS SKIP TO SET FIRST CHAR TO NULL CODE DMA9 LDA CYLC INCREMENT LAST CHARACTER INA CPA UNDR IF FIRST CHAR IS UNDERLINE INA CHANGE TO NEXT CHAR LDB UNDR DO NOT PRINT UNDERLINE CHARACTER STB NONPR JSB CYBFI SET CYCLIC PATTERN IN BUFFER LDB DM132 132 CHARACTERS PROCESSED IN EACH CYCLE STB WCNT CLB 0 FOR DMA OUTPUT JSB DMAR,I RUN DMA OUTPUT JSB PRINT PRINT LINE ISZ CNT1 DONE WITH 128 LINES? JMP DMA9 NO--CONTINUE WITH NEXT LINE OF OUTPUT JSB FF FORM FEED BEFORE EXIT JMP DMA,I EXIT TEST SKP * TEST 08 * ROM READBACK TEST TST08 EQU * ROMRD NOP LDA ROMRD STA TSTNN JSB DSCR,I PRINT TEST NUMBER AND DESCRIPTION LDA GPRNT PRINTER IN GRAPHICS MODE JSB CMNDP CLA BEGIN WITH ASCII NXLNG STA CNT4 LDB NBYTE CW3 FOR # WORDS TO READBACK STB WCNT CLB,INB 1 FOR DMA INPUT RBR MOVE TO BIT 15 JSB DMAR,I DO DMA READBACK LDA HPIB SZA HPIB ? JSB RDSJ YES - TURN BUS AROUND LDA DM9 WORDS OF CODE FOR EACH CHARACTER STA CNT3 LDA CYBFD ADDRESS OF FIRST WORD INA STA CNT1 SAVE BUFFER ADDRESS STA CHAR W7 LDA DM16 8 X (-16) = -CHAR PER DOT ROW STA SV20 W5 LDA DM1 SET # OF SHIFTS STA INC LDA CHAR,I GET FIRST DOT PATTERN LDB HPIB IF HPIB, MOVE DATA TO UPPER BYTE SZB ALF,ALF AND MSK2 SAVE BITS 8-14 STA SV21 W4 LDA CHAR INCREMENT PNTR BY 9 ADA D9 FOR DOT PATTERN OF NEXT CHAR STA CHAR LDA A,I LOAD GRAPHICS DATA LDB HPIB IF HPIB LEAVE IN LOWER BITS, ELSE SHIFT SZB,RSS TO LOWER 8 BITS, THEN MASK FOR 0-6 ALF,ALF AND .177 LDB INC W6 RAL ISZ B DONE WITH SHIFT? JMP W6 NO, CONTINUE TO SHIFT DATA ADA SV21 ADD UPPER BITS ALF,ALF SHIFT BYTES, SAVE UPPER FOUR STA SV21 AND .377 JSB OTCH LDA SV21 AND MSK3 STA SV21 LDB INC ADB DM1 CPB DM8 JMP WD STB INC JMP W4 GET NEXT DATA WD LDB DM1 RESET INC STB INC LDB CHAR INCREMENT CHAR PNTR ADB D9 STB CHAR ISZ SV20 DONE WITH THIS ROW? JMP W5 NO, CONTINUE WITH DATA OUTPUT LDA SL01 PRINT, SLEW 1 JSB CMNDP ISZ CNT1 NOW LOOK FOR NEXT DOT ROW'S DATA LDA CNT1 STA CHAR ISZ CNT3 DONE WITH 9 DOT ROWS? JMP W7 NO, CONTINUE WITH DATA OUTPUT LDA SL03 PRINT SPACING FOR NORMAL OUTPUT JSB CMNDP JSB INCR,I GET DATA FOR NEXT LANGUAGE JMP NXLNG SKP * TEST 09 * PRIMARY/SECONDARY SELECT TEST TST09 EQU * P/SEL NOP LDA P/SEL STA TSTNN JSB DSCR,I PRINT TEST NUMBER AND DESCRIPTION CLA INDEX INTO MESSAGE POINTER TABLE & STA CNT4 CODE FOR PRIM/SEC SEL CWD JMP P/SW OUTPUT IN ASCII FIRST P/SX JSB INCR,I INCREMENT LANGUAGE CODE, EXIT IF DONE JSB VER,I IS THIS LANGUAGE AVAILABLE? JMP P/SX NO, TRY NEXT CODE P/SW JSB CONV,I YES, CONVERT CODE FOR MESSAGE STA LNGXB,I STORE IN MESSAGE LDA LNGCW PRINT MESSAGE IN ASCII JSB CMNDP LDB LNGXP OUTPUT AND PRINT MESSAGE JSB OTLP JSB PRINT LDA CNT4 NOW SEND CURRENT LANGUAGE CODE ALF AS PRIMARY AND SECONDARY ADA CNT4 ADA LNGCW JSB CMNDP NOP LDA .40 FIRST CHAR IS BLANK STA STCHR JSB CYBFI FILL BUFFER WITH RIPPLE DATA LDA SI SHIFT IN TO SEL PRIMARY LANG JSB OTCH JSB P132 OUTPUT 132 CHARACTERS + PRINT JSB PRINT PRINT FIRST LINE OF OUTPUT LDA SO SHIFT OUT TO SEL SECONDARY LANG JSB OTCH JSB P132 OUTPUT 132 CHARACTERS + PRINT LDA VF15X PRINT AND VFC CH15 TO SEPARATE OUTPUT JSB CMNDP JMP P/SX REPEAT FOR ALL CODES, THEN EXIT * SPC 2 P132 NOP LDA DM132 OUTPUT 132 CHARS + VFU CH3 STA CNT1 LDB CYBFD START OF BUFFER P132X LDA B,I GET CHAR JSB OTCH OUTPUT IT INB UPDATE BUFFER POINTER ISZ CNT1 DONE? JMP P132X NO - LOOP BACK JMP P132,I YES - EXIT SPC 1 * PROCESS REQUEST TO MODIFY THE PRIMARY LANGUAGE LANGX NOP LIA SW GET CURRENT S REG VALUE AND DM2 STRIP BIT0 STA SV34 SAVE S REG SANS BIT0 LDA INPLG EITHER INITIAL OR UPDATED PRIMARY AND .17 DISPLAY ONLY LOW 4 BITS OTA SW DISPLAY CURRENT LANG IN S JSB MSGH,I ASK OPER TO SUPPLY LANG CODE DEF MS063 AND HALT * WAIT FOR OPERATOR TO PRESS RUN LIA SW GET THE LANGUAGE CODE AND .17 SAVE BIT0-3--THE LANG CODE ADA LNGCW MERGE NEW REQUEST CODE STA INPLG NEW CURRENT LANGUAGE JSB CMNDP SELECT IT LDA SV34 REINSTALL OPTIONS OTA SW JMP LANGX,I RETURN SPC 1 SPC 2 * OUTPUT TEST NUMBER AND DESCRIPTION * IN ASCII DSCRP NOP LDA LNGCW ASSURE ASCII IS LANGUAGE FOR JSB CMNDP PRINTING MESSAGE LDB TSTX PUT TEST NUMBER IN BUFFER JSB OTLP LDB MSTAB ADDRESS OF TABLE OF MESSAGES ADB TSTN ADD POINTER LDB B,I GET MESSAGE JSB OTLP AND OUTPUT TO PRINTER LDA SL02 PRINT MESSAGE JSB CMNDP LDA INPLG RESTORE CURRENT LANGUAGE SELECTION JSB CMNDP JMP DSCRP,I RETURN TO TEST SKP * TEST 10 * PRIMARY/SECONDARY INTERMIX TEST SPC 1 TST10 EQU * PSMIX NOP CLB FLAG FOR STANDARD PRINT SIZE LDA PSMIX PSMX3 STA TSTNN STORE TEST RETURN ADDRESS STB X2FLG JSB DSCR,I PRINT TEST NUMBER AND DESCRIPTION ISZ SUB INCREMENT SUBTEST NUMBER CLA SET LANGUAGE CODE FOR ASCII FIRST STA CNT4 PLOOP LDA LNGCW ASSIGN ASCII JSB CMNDP LDA CNT4 JSB CONV,I CONVERT CODE FOR MESSAGE STA LNGXB,I LDA SPRNT INSURE STANDARD PRINT MODE JSB CMNDP FOR MESSAGE LDB LNGXP SEND MESSAGE TO PRINTER JSB OTLP JSB PRINT PRINT LANGUAGE MESSAGE JSB PSMXX DO PRINT ROUTINE JSB INCR,I INCREMENT LANGUAGE CODE JSB VER,I IS THIS LANGUAGE AVAILABLE? JMP *-2 NO, TRY NEXT CODE--EXIT IF DONE JMP PLOOP REPEAT ROUTINE FOR THIS CODE * PSMXX NOP LDA TRAN0 STANDARD TRANSPARENCY LDB X2FLG 0=NORMAL, 2=DOUBLE SZB LDA TRAN1 DOUBLE SIZE TRANSPARENCY JSB CMNDP SEND COMMAND LDA LNGCW SEND CURRENT LANGUAGE CODE ADA CNT4 JSB CMNDP CLA STA CNT1 CHARACTER CODE RPRNX LDA CNT1 JSB OTCH SEND CHAR ADA .200 APPEND 8TH BIT JSB OTCH SEND CHAR ISZ CNT1 INCREMENT CHAR LDA CNT1 LDB X2FLG 0=STANDARD PRINT MODE, 2=DOUBLE SZB JMP PRT2X SPECIAL HANDLING FOR DOUBLE CPA .200 DONE WITH SECOND LINE? JMP PSM02 PRINT AND EXIT PSMXX CPA D64 DONE WITH FIRST LINE? PSM01 JSB PRINT YES -- PRINT 1 LINE JMP RPRNX RESUME OUTPUT PSM02 JSB PRINT DO FINAL LINE PRINT LDA VF15X PRINT AND VFC CH15 TO SEPARATED OUTPUT JSB CMNDP JMP PSMXX,I EXIT SUBTEST N(N = 1,2 OR 3) * PRT2X LDB .4 FOR DOUBLE SIZE PRINT CPA D32 1ST OF 4 LINES? JMP PSM01 YES - PRINT LINE 1 AT 2X SIZE CPA D64 2ND OF 4 LINES? JMP PSM01 YES - PRINT LINE 2 AT 2X SIZE CPA D96 3RD OF 4 LINES? JMP PSM01 YES - PRINT LINE 3 AT 2X SIZE CPA .200 LAST LINE? JMP PSM02 YES - PRINT IT AND EXIT JMP RPRNX NO - RESUME OUTPUT OF CHARACTERS SPC 3 * TEST 11 * 2X SIZE CHARACTER TEST SPC 1 TST11 EQU * X2TST NOP LDA X2TST LDB .2 2=DOUBLE SIZE FLAG JMP PSMX3 SAME ROUTINE AS FOR PREVIOUS TEST SKP ORG 6000B * TEST 12 * CONTROL CHARACTER TEST SPC 1 TST12 EQU * SIOBS NOP LDA SIOBS STA TSTNN JSB DSCR,I PRINT TEST NUMBER AND DESCRIPTION LDA .2 IS CYRILLIC AVAILABLE? STA CNT4 JSB VER,I RSS NO JMP SIO1 YES, CONTINUE LDA D8 IS FRENCH AVAILABLE? STA CNT4 JSB VER,I CLA NO, ASSIGN SEC LANG TO ASCII SIO1 AND .17 ALF SET SEC = A-REG BITS 4-7, PRI=ASCII ADA LNGCW JSB CMNDP SPC 1 * TEST 12 SUBTEST 1B JSB TSSHD PRINT TEST/SUBTEST HEAD LDB DM200 LDA SI SHIFT IN ST1 JSB OTCH OUTPUT SI 200 TIMES ISZ B DONE? JMP ST1 NO JSB PRINT SHOULD CAUSE BLANK LINE SPC 1 * TEST 12 SUBTEST 2B JSB TSSHD PRINT TEST/SUBTEST HEAD LDB DM200 LDA SO SHIFT OUT ST2 JSB OTCH OUTPUT SO 200 TIMES ISZ B DONE? JMP ST2 NO JSB PRINT SHOULD CAUSE BLANK LINE SPC 1 * TEST 12 SUBTEST 3B JSB TSSHD LDB DM200 LDA BS BACKSPACE ST3 JSB OTCH OUTPUT BS 200 TIMES ISZ B DONE? JMP ST3 NO JSB PRINT SHOULD CAUSE BLANK LINE SPC 1 * TEST 12 SUBTEST 4B JSB TSSHD LDA BS BACKSPACE JSB OTCH FOLLOWED BY LDA CHARA CHARACTER A(101B) JSB OTCH FOLLOWED BY JSB PRINT PRINT COMMAND=BLANK LINE SPC 1 * TEST 12 SUBTEST 5B JSB TSSHD LDA BS BACKSPACE JSB OTCH FOLLOWED BY LDA CHARA CHARACTER A JSB OTCH FOLLOWED BY INA CHARACTER B(102B) JSB OTCH FOLLOWED BY JSB PRINT PRINT = B IN COLUMN 1 SPC 1 * TEST 12 SUBTEST 6B JSB TSSHD LDA CHARA CHARACTER A JSB OTCH FOLLOWED BY INA CHARACTER B JSB OTCH FOLLOWED BY LDA BS BACKSPACE JSB OTCH FOLLOWED BY JSB PRINT PRINT=AB IN COL 1 AND 2 SPC 1 * TEST 12 SUBTEST 7B JSB TSSHD LDA CHARA CHARACTER A JSB OTCH FOLLOWED BY LDA CHARI CHARACTER I JSB OTCH FOLLOWED BY LDA BS BACKSPACE JSB OTCH FOLLOWED BY JSB OTCH ANOTHER BACKSPACE LDA CHARX FOLLOWED BY CHAR X(130B) JSB OTCH JSB PRINT COL1=A:COL2=X OVERLAYED ON I SPC 1 * TEST 12 SUBTEST 10B LDA PRSC IF SEC = 0, SKIP TO NEXT SUB JSB STR,I SZA JMP SUB8 ISZ SUB INCREMENT SUBTEST # JMP SUB9 SUB8 JSB TSSHD LDA SO SHIFT OUT JSB OTCH LDA CHAR] CHARACTER ] LDB DM132 JSB OTX OUTPUT CHAR IN A # OF TIMES IN B JSB PRINT SHOULD BE 135B FROM SEC LANGUAGE LDA CHAR] LDB DM132 JSB OTX JSB PRINT SHOULD STILL BE 135B FROM SEC LANG SPC 1 * TEST 12 SUBTEST 11B SUB9 JSB TSSHD LDA CHARO CHARACTER O(117B) LDB DM132 JSB OTX LDA SL00 JSB CMNDP ALPHA PRINT AND ZERO SLEW LDA CHARI CHARACTER I(111B) LDB DM132 JSB OTX JSB PRINT LINE OF O'S OVERLAYED BY X'S * TEST 12 SUBTEST 12B JSB TSSHD LDA DPRNT JSB CMNDP LDA CHARO CHARACTER O(117B) LDB DM66 JSB OTX LDA SL00 2X PRINT AND ZERO SLEW JSB CMNDP LDA CHARI CHARACTER I(111B) LDB DM66 JSB OTX JSB PRINT 2X O'S OVERLAYED BY 2X I'S SPC 1 * TEST 12 SUBTEST 13B LDA SPRNT JSB CMNDP RETURN TO STANDARD MODE JSB TSSHD JSB T1112 JSB PRINT PRINT WITH VFC CH3 SPC 1 * TEST 12 SUBTEST 14B JSB TSSHD CLA STA SV17 INITIALIZE MARGIN INA AND STEP SIZE STA SV24 ST14 LDA CLBUF IOR SV17 CREATE MARGIN COMMAND JSB CMNDP LDA CHART LDB DM116 OUTPUT 116 T'S JSB OTX LDA SL01 JSB CMNDP PRINT AND SLEW ONE LINE LDA SV17 ADA SV24 CHANGE MARGIN BY STEP SIZE STA SV17 CPA DM1 MARGIN = -1? JMP ST15 YES - END OF SUBTEST CPA .17 MARGIN = 15? RSS YES - SKIP JMP ST14 NO - CONTINUE LOOPING CCA STA SV24 REDEFINE STEP SIZE JMP ST14 SPC 1 * TEST 12 SUBTEST 15B ST15 LDA HPIB LDB CTLCH SZA SKIP TO EXIT IF PARALLEL INTERFACE SZB,RSS CNTL CHAR ENABLED ? JMP EXT15 NO - EXIT JSB TSSHD YES JSB T1112 SAME AS SUBTEST 13B, EXCEPT USE CR NOP JSB PRINT PRINT WITH VFC CH3 SPC 1 * TEST 12 SUBTEST 16B JSB TSSHD LDA CHARA JSB OTCH OUTPUT A TO BUFFER INA JSB OTCH OUTPUT B TO BUFFER LDA LF JSB CMNDP OUTPUT LF LDA CHARC JSB OTCH OUTPUT C INA JSB OTCH OUTPUT D LDA LF JSB CMNDP OUTPUT LF SPC 1 * TEST 12 SUBTEST 17B JSB TSSHD LDA CHARA JSB OTCH OUTPUT A INA JSB OTCH OUTPUT B LDA FMFD JSB CMNDP OUTPUT FORM FEED LDA CHARC JSB OTCH OUTPUT C INA JSB OTCH OUTPUT D LDA LF JSB CMNDP OUTPUT LF EXT15 JSB FF JMP SIOBS,I EXIT TEST SPC 1 T1112 NOP LDA CHARO CHARACTER O(117B) LDB DM132 JSB OTX LDA SL00 PRINT AND ZERO SLEW LDB SUB CPB .15 IF SUB 13, USE CR, NOT PRNT-0 SLEW LDA CR JSB CMNDP LDA CHAR/ CHARACTER /(57B) LDB DM99 JSB OTX LDA SL00 PRINT AND ZERO SLEW LDB SUB IF SUB 13, USE CR AGAIN CPB .15 LDA CR JSB CMNDP LDA CHAR\ CHARACTER \(134B) LDB DM66 JSB OTX LDA SL00 JSB CMNDP ALPHA PRINT AND ZERO SLEW LDA CHARI CHARACTER I(111B) LDB DM33 JSB OTX JMP T1112,I SPC 1 TSSHD NOP ISZ SUB INCREMENT SUBTEST NUMBER LDA SUB JSB CONV,I CONVERT TO ASCII STA HDSUB,I PUT STRING IN HEAD MESSAGE LDB HDSSX "TEST 12, SUBTEST XXB" MESSAGE JSB OTLP JSB PRINT NOW PRINT IT JMP TSSHD,I EXIT SPC 1 OTX NOP OTY JSB OTCH ISZ B DONE? JMP OTY NO! JMP OTX,I YES - EXIT SKP * TEST 13 * GRAPHICS ALIGNMENT TEST SPC 1 TST13 EQU * LDRD NOP LDA LDRD STA TSTNN JSB DSCR,I PRINT TEST NUMBER AND DESCRIPTION LDA GPRNT ASSIGN LP TO GRAPHICS MODE JSB CMNDP SPC 1 * TEST 13 SUBTEST 1B ISZ SUB LDA DM7 STA CNT1 LDA .201 CODE FOR LEFT DOT OF 7 DOTS LDB DM180 180 DOT ROWS OF PAT1 JSB LDRDZ SPC 1 * TEST 13 SUBTEST 2B ISZ SUB LDA .2 PATTERN FOR RIGHT MOST DOT COLUMN ISZ CNT1 LDB DM180 180 DOT ROWS OF PAT2 JSB LDRDZ SPC 1 * TEST 13 SUBTEST 3B ISZ SUB LDA D16 PATTERN FOR CENTER DOT POSITION LDB DM3 STB CNT1 LDB DM180 180 DOT ROWS OF PAT3 JSB LDRDZ SPC 1 * TEST 13 SUBTEST 4B ISZ SUB LDB DM60 60 ITERATIONS OF PAT4 STB SV25 LDZ LDA .377 SOLID HORIZONTAL ROW LDB DM116 132 CHAR COLUMNS ON EACH LINE LDW JSB OTCH OUTPUT PATTERN IN "A" ISZ B DONE WITH 132 COLUMNS? JMP LDW NO--OUTPUT PATTERN AGAIN LDA SL03 SEPARATE LINES WITH BLANK DOT ROWS JSB CMNDP ISZ SV25 DONE WITH 60 ITERATIONS? JMP LDZ NO--SEND ANOTHER PATTERN ROW LDA SPRNT JSB CMNDP RESTORE STANDARD MODE JSB FF FORM FEED JMP LDRD,I EXIT TEST SKP * TEST 14 * GRAPHICS COLUMN WIDTH TEST TST14 EQU * GWDTH NOP LDA GWDTH STA TSTNN JSB DSCR,I LDA GPRNT JSB CMNDP SET GRAPHICS PRINT MODE LDB DM690 OUTPUT 1 PAGE OF 50% PATTERN STB SV25 LDZZZ LDB DM7 7 SETS OF THIS PAT IN ROW STB CNT7 LDZZ CLA OUTPUT BLANKS LDB DM8 8 TIMES LDZB JSB OTCH OUTPUT TO PRINTER ISZ B DONE? JMP LDZB NO, CONTINUE LDA .377 OUTPUT SOLID DOTS 8 TIMES LDB DM8 LDZC JSB OTCH OUTPUT TO PRINTER ISZ B DONE? JMP LDZC NO, CONTINUE ISZ CNT7 DONE WITH OUTPUT FOR 1 DOT ROW? JMP LDZZ NO, CONTINUE PATTERN LDA SL01 YES, PRINT PATTERN JSB CMNDP ISZ SV25 DONE WITH 360 ITERATIONS? JMP LDZZZ NO, CONTINUE ON NEXT DOT ROW LDA SPRNT YES--RETURN LP TO STANDARD MODE JSB CMNDP JSB FF FORM FEED JMP GWDTH,I EXIT TEST SPC 1 LDRDZ NOP STB SV26 SAV DOT ROW COUNT STA SV27 SAVE INITIAL PATTERN LDXY LDB DM20 20 X 7 CHAR COLMS INSURES FULL LINE STB SV28 LDB CNT1 JMP LDY LDX LDA .201 LDB DM7 COUNT OF DOT COLUMNS LDY AND .377 SEND ONLY THE FIRST 8 BITS JSB OTCH OUTPUT PATTERN IN "A" ALS SHIFT PATTERN TO LEFT 1 POSITION ISZ B DONE WITH 7 COLUMNS? JMP LDY CONTINUE ISZ SV28 DONE WITH 132 CHAR COLUMNS? JMP LDX NO--RESTORE PATTERN AND DOT COLM CNT LDA SL01 JSB CMNDP PRINT AND SLEW 1 DOT ROW LDA SV27 RESTORE INITIAL PATTERN ISZ SV26 DONE WITH REQUESTED # OF LINES? JMP LDXY REPEAT PROCESS FOR NEXT LINE JMP LDRDZ,I RETURN SKP * TEST 15 * GRAPHICS DIAGONAL TEST SPC 1 TST15 EQU * DIAG NOP LDA DIAG STA TSTNN JSB DSCR,I PRINT TEST NUMBER AND DESCRIPTION LDA GPRNT ASSIGN LP TO GRAPHICS MODE JSB CMNDP LDB DM690 690 DOT ROWS OF PATTERN STB SV27 LDA .200 PATTERN TO BE SHIFTED DIAGZ LDB DM116 ONLY 1 DOT ROW AT A TIME JSB OTCH OUTPUT 1 DOT ROW OF PATTERN ISZ B JMP *-2 ISZ SV27 DONE WITH ALL DOT ROWS? JMP DIAGX NO, PRINT AND CONTINUE TO OUTPUT LDA VF2X YES, PRINT AND MOVE TO NEXT VFU JSB CMNDP LDA SPRNT RETURN LP TO STANDARD MODE JSB CMNDP JSB FF FORM FEED AND EXIT TEST JMP DIAG,I DIAGX STA SV22 SAVE PATTERN LDA SL01 GRAPHICS PRINT AND SLEW 1 JSB CMNDP LDA SV22 RESTORE PATTERN ARS SHIFT PATTERN SZA,RSS RESTORE TO INITIAL PATTERN IF 0 LDA .200 JMP DIAGZ OUTPUT NEXT LINE SKP * TEST 16 * GRAPHICS PATTERN TEST SPC 1 TST16 EQU * PATRN NOP LDA PATRN STA TSTNN JSB DSCR,I PRINT TEST NUMBER AND DESCRIPTION LDA GPRNT SELECT GRAPHICS MODE JSB CMNDP LDA DM690 COUNTER FOR 690 DOT ROWS STA SV27 PAT0 CLA STA CNT5 INDEX FOR DOT ROW TABLE PAT1 ADA ADPAT START ADDRESS + INDEX LDA A,I GET BIT PATTERN JSB PATX ISZ CNT5 UPDATE INDEX LDA CNT5 CPA D21 AT MIDPOINT OF TABLE? RSS YES - NOW REVERSE INDEXING JMP PAT1 NO - CONTINUE LOOP DOWN TABLE ADA DM1 REDUCE INDEX TO 17 PAT2 STA CNT5 SAVE INDEX ADA ADPAT START ADDRESS + INDEX LDA A,I GET BIT PATTERN JSB PATX OUTPUT IT! LDA CNT5 UPDATE TABLE INDEX ADA DM1 BY MINUS 1 CPA DM1 DONE? JMP PAT0 YES - REPEAT LOOP JMP PAT2 NO - STAY IN REV INDEX LOOP PATXT LDA SPRNT STANDARD MODE FOR FORM FEED JSB CMNDP LDA VF2X INSURE DOT ROW CNT=0 BY MOVING JSB CMNDP TO NEXT SINGLE SPACE JSB FF FORM FEED JMP PATRN,I EXIT TEST SPC 1 PATX NOP LDB DM66 66 X 2 = 132 COLUMNS STB CNT6 STA CNT7 TEMP SAVE AND .377 EXTRACT BOTTOM 8 BITS STA B LDA CNT7 ALF,ALF TOP 8 BITS TO BOTTOM AND .377 EXTRACT TOP 8 BITS STA CNT7 PATXX LDA CNT7 ODD BYTE(COL 1,3,5,ETC) JSB OTCH LDA B EVEN BYTE(COL 2,4,6,ETC) JSB OTCH ISZ CNT6 DONE WITH 132 BYTES? JMP PATXX NO - LOOP ISZ SV27 DONE WITH ALL DOT ROWS? RSS JMP PATXT YES, EXIT TEST LDA SL01 NO, PRINT DOT ROW AND CONTINUE JSB CMNDP JMP PATX,I SPC 1 ADPAT DEF PATTB SKP * TEST 17 * POWER SUPPLY TEST SPC 1 TST17 EQU * POWER NOP LDA POWER STA TSTNN JSB DSCR,I PRINT TEST NUMBER AND DESCRIPTION SPC 1 * TEST 17 SUBTEST 1B ISZ SUB LDA IN8LP SET LP TO 8 LPI JSB CMNDP LDB DM78 1 PAGE OF 8 LPI IS ALMOST 80 LINES STB CNT7 POW5 LDB DM132 CHARACTERS PER LINE LDA CHAR# CHARACTER IS "#" POW4 JSB OTCH OUTPUT TO PRINTER ISZ B DONE WITH THIS LINE? JMP POW4 NO, CONTINUE JSB PRINT YES, PRINT THIS LINE ISZ CNT7 DONE WITH 80 LINES JMP POW5 NO, CONTINUE WITH NEXT LINE SPC 1 * TEST 17 SUBTEST 2B ISZ SUB LDA GPRNT SELECT GRAPHICS MODE JSB CMNDP LDB DM690 690 DOT ROWS AT MAX DENSITY, NO DELAY STB CNT7 POW3 LDA .377 LDB DM116 BYTES PER LINE POW1 JSB OTCH OUTPUT DATA ISZ B DONE WITH 116 BYTES? JMP POW1 NO, CONTINUE TO OUTPUT ISZ CNT7 DONE WITH ALL DOT ROWS? JMP POW2 NO, PRINT CURRENT DOT ROW LDA VF2X PRINT AND MOVE TO NEXT VFU JSB CMNDP LDA SPRNT RETURN LP TO STANDARD PRINT MODE JSB CMNDP LDA LPI68 JSB CMNDP RETURN TO SELECTED 6/8 MODE JSB FF FORM FEED AND EXIT TEST JMP POWER,I POW2 LDA SL01 PRINT AND SLEW 1 DOT ROW JSB CMNDP JMP POW3 SKP STRD NOP STB SV15 STA CODN LDB HPIB IF HPIB, USE IBST ROUTINE SZB JMP STRD4 CPA IO IS THIS IO STATUS? JMP STRD2 YES - GO READ IT ADA FRBCW NO - ADD READBACK COMMAND JSB CMNDP LDA CODN B=CODN UNLESS ROM READ REQUESTED LDB CODN ALF,ALF IF BIT 7 SET FOR ROM READ, RAL DO ONLY 1 LIA FOR CHAR CODE SLA CLB,INB LDA TIMEB TIMEOUT ON FIRST LIA JSB LIAC,I RSS STRD4 JSB IBST GET HPIB STATUS LDB SV15 RESTORE B JMP STRD,I RETURN STRD2 LIA CH GET IO STATUS FOR PARALLEL ALF,ALF MOVE TO LOWER BYTE AND .377 SAVE ONLY 8 BITS LDB STABA SAVE IN TABLE INB STA B,I STA ACT LDB SV15 JMP STRD,I SKP * A = INITIAL TIMEOUT * B = # OF EXPECTED BYTES * LIACH NOP STA TM2 SAVE INITIAL DELAY TIME STB SV19 LDA PPFLG LDB STABA SZA IF PING-PONG FLAG IS SET, LDB CYBFD USE CYBFD FOR BUFFER, STB STOR OTHERWISE USE STAB CLB,INB LDA HPIB IF HPIB LET B=0 SZA,RSS HP-IB? JMP LIACZ NO! LIA0 CLC CH,C YES-CLEAR B & CONTROL+FLAG CLB LIACZ STB SV23 SZA CLB STB SV23 SAVE B LIA1 LIA CH GET STATUS LIA2 STC CH,C SET CONTROL, CLEAR FLAG FOR NEXT BYTE LDB HPIB IF PARALLEL, MOVE STATUS TO 0-7 SZB,RSS JMP LIA5 LDB SV23 IF 0, DISGARD FIRST STATUS BYTE SZB,RSS JMP LIA3 AND CONTINUE RSS LIA5 ALF,ALF AND .377 SAVE ONLY 8 BITS LDB STOR STORE STATUS ADB SV23 STA B,I STA ACT LIA3 SFS CH FLAG SET YET? JMP LIA4 NO--CHECK DELAY TIME LDA ACT RESTORE LAST STATUS BYTE TO A LDB SV23 IF DONE WITH STATUS BYTES, RETURN CPB SV19 JMP LIACH,I ISZ SV23 NO, INCREMENT COUNTER LDA DM5 NEXT TIMEOUT VALUE IS -5 STA TM2 LDA HPIB SZA,RSS IF PARALLEL, JMP LIA1 THEN CONTINUE INB CPB SV19 IF NEXT BYTE IS THE LAST BYTE, RSS THEN SKIP JMP LIA1 OTHERWISE CONTINUE TO READ NEXT BYTE CLA,INA JSB LSTN RETURN PRINTER TO LISTEN MODE DEF *+3 DEF PLTA DEF IBDAT NOP JMP LIA1 GET NEXT STATUS LIA4 CLA,INA WAIT 1 MS JSB TMRR,I ISZ TM2 JMP LIA3 TIME NOT OUT, CHECK FLAG AGAIN JMP E030 TIME OUT--REPORT ERROR, EXIT TEST SPC 1 * STATUS CORRESPONDING TO DATA BYTE IN A-REG * IS STORED IN ACT AND RETURNED IN A-REG * AVAL NOP STA CODN LDA STABA TABLE OF ACTUAL STATUS ADA CODN GET APPROPRIATE STATUS LDA A,I STA ACT STORE JMP AVAL,I RETURN SKP * * CKST PERFORMS STATUS CHECK OF LP * B-REG 0-7 EXP, 8-15 = BITS TO CHECK * A-REG = ACTUAL * CKST NOP LDA B SAVE MASK IN BITS AND MSK3 ALF,ALF STA BITS LDA B SAVE EXPECTED STATUS IN EXP AND .377 STA EXP STA SV16 LDA ACT AND BITS STA ACT SAVE ACTUAL STATUS OF SELECTED BITS XOR EXP SAME AS EXPECTED? SZA,RSS A=0 IF EQUAL JMP CKST,I RETURN --YEA!!! STA SV30 LDA CODN CPA IO IS THIS AN IO STATUS CHECK? JMP BTER YES, CHECK EACH BIT ADA RTAB GET CORRESPONDING ERROR MESSAGE LDA A,I STA CK3 LDA SUB CONVERT SUBTEST NUMBER JSB CONV,I STA SUBM1,I LDA SUB LDA 8-15 WITH SUB, 0-7 =ACT ALF,ALF ADA ACT JSB ERMC,I CK3 NOP LDB ZHL,I GET HALT CODE STB ERHLT JSB ERMC,I DEF SUBM NOP LDB SW14 JSB SWRT,I TEST BIT 14 JMP CKST,I IT'S SET, SO DON'T HALT NOP LDB CODN B-REG 8-15 = CODN, 0-7 = EXP BLF,BLF ADB EXP ERHLT NOP JMP CKST,I RETURN SPC 1 BTER NOP LDA R/ NO SUBTEST MSG UNLESS TEST#=1 STA IOSUB,I LDA TSTN CPA .1 RSS JMP BTER1 LDA SUB JSB CONV,I CONVERT SUBTEST # TO ASCII STA SUBM2,I LDA R; APPEND SUBTEST # STA IOSUB,I BTER1 JSB ERMC,I SEND I/O STATUS ERROR MSG DEF M54 LDA DM8 STA BTCNT LDA SV30 BEGIN CHECKING WRONG BITS BTER2 NOP SLA JMP BTERR BIT IN POSITION 0 IS WRONG BTER4 RAR SHIFT BITS TO CHECK NEXT ONE LDB SV16 RBR STB SV16 ISZ BTCNT JMP BTER2 NOT DONE WITH ALL BITS JSB ERMC,I DEF M55 LDA SUB A-REG 8-15 = SUB, 0-7 = ACT ALF,ALF ADA ACT LDB SW14 JSB SWRT,I IS S-REG BIT 14 SET? JMP CKST,I YES - DON'T HALT LDB CODN B-REG 8-15 = CODN 0-7 = EXP BLF,BLF ADB EXP HLT 54B HALT 54 FOR I-O STATUS ERROR JMP CKST,I RETURN SPC 1 BTERR STA SV30 SAVE BITS IN ERROR LDA BTCNT ADA D8 GET CORRECT BIT MESSAGE ADA ERTAB LDA A,I STA BTER3 LDA SV16 AND .1 CONVERT EXP STATUS OF BIT TO ASCII ADA LBY60 STA BIT1,I AND STORE FOR MESSAGE JSB ERMC,I BTER3 NOP JSB ERMC,I SEND EXPECTED STATUS DEF BIT LDA SV30 CHECK NEXT BIT FOR ERROR JMP BTER4 ZHL DEF ZHLT SKP SPC 1 CONVR NOP STA SV31 AND .70 MASK 1 OCTAL NUMBER AT A TIME ALF MOVE TO UPPER POSITION OF ASCII WORD RAL ADA SR ADD OCTAL 60 TO MAKE CONVERSION FOR FIRST DIGIT STA B LDA SV31 AND .7 MASK LOWER DIGIT ADA B PLACE SECOND DIGIT IN LOWER BYTE OF ASCII WORD JMP CONVR,I RETURN WITH CONVERSION IN A ERTAB DEF ERTB RTAB DEF RTABL BIT1 DEF BIT+5 SKP DMART NOP LDA CPTO CHECK FOR DMA OPTION AND .204 SZA,RSS DMA HARDWARE? JMP H033 NO DMA LDA ROMCW ROM READBACK WORD IOR CNT4 SET TO LANGUAGE TO BE READ SSB IF DMA IS INPUT, JSB CMNDP THEN OUTPUT COMMAND TO PRINTER LDA DMACW DMA CONTROL WORD OTA DMAH CLC DMAL * LDA CYBFD * ADA B SET BIT 15 FOR INPUT(1) OR OUTPUT(0) OTA DMAL * STC DMAL * LDA WCNT OTA DMAL * LDA HPIB SZA,RSS HPIB ? JMP DMSC1 NO - CONTINUE SSB YES - IS THIS INPUT OR OUTPUT JMP DMAA INPUT LDA .3 OUTPUT JSB LSTN SET UP 59310 FOR DMA OUTPUT DEF *+3 DEF PLTA DEF IBDAT JMP DMSC1+1 SKIP SET FLAG INSTRUCTION DMAA LDA .3 JSB TALK SET UP 59310 FOR DMA INPUT DEF *+3 DEF PLTA DEF STAT NOP LIA6 LIA CH ENABLE 59310 FOR INPUT NOP RSS SKIP SET FLAG INSTRUCTION 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 LDB TSTN CPB D11 RESTORE NORMAL I/O STATUS LPX STC CH 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 JMP DMART,I YES--RETURN H033 JSB MSGC,I REPORT MESSAGE DEF DMA1 MESSAGE ADDRESS DMAB LDA SPRNT RE-DEFINE PRINT MODE JSB CMNDP TO STANDARD JSB FF FORM FEED JMP TSTNN,I EXIT TEST DMAL EQU 2 DMAH EQU 6 DMACW OCT 100000 SKP * RDYI CHECKS ON LINE, NOT READY, AND POWER FAIL BITS IN BOTH * THE PARALLEL AND HPIB INTERFACES. IF THE PRINTER IF OFF LINE, * RDYI RETURNS TO P+2 IF LP NOT READY, EXITS CURRENT * TEST IF PF NOT EXPECTED TO BE SET, RESETS TOF AND * RETURNS TO P+1 (P+2 IF LP ALSO OFF LINE). * RDYI NOP STA SV32 SAVE A STB SV33 AND B-REG LDA HPIB SZA,RSS JMP RDY5 JSB RDSJ READ DSJ RESPONSE SLA,RSS IF DSJ RESPONSE BIT 0 = 0, RETURN JMP RDY3 RDY5 CLC CH,C UNLATCH STROBE TO ALLOW STATUS READ ISZ RD SET TO VERIFY RDY HAS BEEN CALLED ALREADY LDA IO GET I-O STATUS JSB STRD AND RDYST CHECK ONLY BITS 0, 6, 7 STA ACT SAVE ACTUAL OF BITS TO BE CHECKED LDB .200 EXPECTED STATUS IS 200B AND .200 CHECK FOR ON LINE CPA B RSS JMP E036 RDY2 LDA ACT CHECK FOR "READY" CONDITION AND .100 SZA SHOULD BE 0, IF NOT, REPORT ERROR JMP E032 AND EXIT TEST LDA ACT CHECK POWER FAIL CONDITION SLA,RSS SHOULD BE 0 IN MOST CASES JMP RDY3 OK, SO EXIT LDA TSTN BIT 0 IS SET CPA .1 CHECK FOR VALID PF CONDITIONS RSS JMP B8PF IF NOT TEST 1, PF IS NOT VALID LDA SUB SOME SUBTESTS OF TEST 1 ADA DM6 ARE VALID FOR PF (1-5, >=18) SSA JMP RDY3 IF VALID, EXIT ADA DM12 SSA,RSS JMP RDY3 ALSO VALID--EXIT B8PF JSB STFRM TELL OPERATOR TO ALIGN TOF, SEND MASTR LDB TSTN IF TEST 1, RETURN CPB .1 JMP RDYI,I JMP TSTNN,I ELSE EXIT CURRENT TEST E036 JSB ERMS,I SEND OFF LINE MESSAGE DEF DMD3 ISZ RDYI RETURN TO P+2 JMP RDY2 NOW CONTINUE CHECKING BITS 6, 0 E032 LDA ACT LOAD A REGISTER WITH ACTUAL OF 7, 6, 0 JSB ERMS,I REPORT NOT READY MESSAGE DEF RDY32 CLC 0,C LDA SPRNT INSURE STANDARD PRINT MODE OF LP JSB CMNDP JSB FF PERFORM FORM FEED JMP TSTNN,I EXIT CURRENT TEST RDY3 LDA SV32 RESTORE A REGISTER LDB SV33 RESTORE B REGISTER JMP RDYI,I RETURN SKP * THE VERIFY ROUTINE EXECUTES A ROM READBACK * OF THE FIRST BYTE OF LANGUAGE CODE=TMP. * IF THE FIRST BYTE = TMP, THE LANGUAGE * IS AVAILABLE AND ROUTINE RETURNS TO P+2. * IF NOT AVAILABLE, A CLEAR BUFFER RESTORES * THE PRINTER'S I/O STATUS, RETURNS P+1 * VERIF NOP LDA .200 ATTEMPT TO READBACK REQUESTED ADA CNT4 JSB STR,I LANGUAGE CODE NOP CPA CNT4 DOES READBACK CODE = REQUESTED CODE? ISZ VERIF RETURN TO P+2 IF REQUESTED LNG AVAL LDA CLBUF NO--SEND CLEAR BUFFER TO RESTORE JSB CMNDP I/O STATUS LDA CNT4 JMP VERIF,I RETURN * * INCREMENTS LANGUAGE CODE TO NEXT DEFINED CODE: * 0-17B * EXITS CURRENT TEST IF INCREMENTED BEYOND 17B SPC 1 INCRL NOP ISZ CNT4 INCREMENT CURRENT CODE LDA CNT4 CPA D16 DONE WITH CURRENT TEST? RSS YES--FORM FEED AND EXIT JMP INCRL,I NO--RETURN LDA SPRNT INSURE STANDARD PRINT MODE JSB CMNDP FOR FF ROUTINE LDA LNGCW RETURN TO ASCII ON EXIT JSB CMNDP LDA SI INSURE "SHIFT IN" MODE JSB OTCH JSB FF JMP TSTNN,I EXIT CURRENT TEST SKP SPC 2 * TOFCK VERIFIES THAT PAPER IS AT TOF. * RET P+1 = E065 MSG UNABLE TO FIND TOF * P+2 = STATUS INDICATES AT TOF SPC 1 TOFCK NOP JSB TOF GET PS-1 STATUS ON CH12 BIT AND D16 CPA D16 JMP TOFX2 YES - EXIT AT P+2 LDA VF11X NO - GOTO TOF VIA VFC CH12 JSB CMNDP JSB TOF GET PS-1 STATUS ON CH12 BIT AND D16 CPA D16 JMP TOFX2 YES--NOW EXIT AT P+2 LDB D16 A=ACTUAL: B=EXPECTED STATUS E065 JSB ERMS,I NO VFC CH12 STATUS DEF MS065 JMP TOFCK,I ERROR EXIT AT P+1 TOFX2 ISZ TOFCK ADJUST RETURN TO P + 2 JMP TOFCK,I SPC 2 TOF NOP LDA HPIB IF HPIB, USE IBST RTN FOR PS-1 SZA JMP TOF1 LDA IO GET PS-1 ON PARALLEL ADA FRBCW JSB CMNDP SEND PS-1 COMMAND LDB IO LDA TIMEB MAX TIME TO ALLOW FOR FLAG JSB LIAC,I GET STATUS BY LIA CH JMP TOF,I RETURN WITH PS-1 STATUS IN A TOF1 CLA,INA STA CODN JSB IBST GET PS-1 FOR HPIB JMP TOF,I RETURN WITH PS-1 STATUS IN A SKP LST * TST18 * OPTIONAL PRINT QUALITY TEST TST18 EQU * TEXT NOP LDA VF0X INSURE PRINT QUALITY AT TOF JSB CMNDP LDA TEXT STA TSTNN JSB DSCR,I SEND TEST # AND DESCRIPTION TO PRINTER NOP NOP LDB DM3 SET FOR NUMBER OF LOOPS STB TST17 NOP TXTS0 CLB TABLE P0INTER FOR TEXT STB TMPTX TXTST LDB TXTAD POINT TO START OF TABLE ADB TMPTX ADD INCREMENT LDB B,I GET ADDRESS (IF IT IS AN ADDRESS) CPB DM1 END OF TABLE? JMP TXTOF YES - EXIT WITH TOF CPB .1 NO - SELECT 2X MODE? JMP X2ON YES CPB .2 SELECT STANDARD MODE? JMP X2OFF YES SZB TIME TO PRINT THE BUFFER? JMP TXDAT NO - SEND MORE DATA LDA VF2X YES - PRINT AND SPACE WITH CH 3 JSB CMNDP LDA VF2X LOOK LIKE DOUBLE SPACE JSB CMNDP JMP TXTLP CONTINUE TXDAT JSB OTLP SEND MORE DATA TO THE PRINTER TXTLP ISZ TMPTX INCREMENT OFFSET JMP TXTST TRY AGAIN NOP NOP TXTOF ISZ TST17 DONE WITH LOOP? JMP TXTS0 NOPE - KEEP TRYING JMP TEXT,I EXIT PRINT QUALITY TEST X2ON LDA DPRNT CW FOR 2X MODE RSS X2OFF LDA SPRNT CW FOR STANDARD MODE JSB CMNDP SEND THE CW JMP TXTLP CONTINUE THROUGH TABLE TMPTX NOP SKP * CODES FOR TABLE * -1 = END OF TABLE * 1 = SELECT 2X PRINT * 2 = SELECT STANDARD SIZE PRINT * 0(NOP)= PRINT BUFFER & GO TO VFC3(TWICE) * OTHER = ASSUMES ADDRESS OF DATA TXTAD DEF *+1 TABLE OF POINTERS TO TEXT MESSAGES OCT 1 DEF TXT00 NOP OCT 2 DEF TXT01 DEF TXT02 DEF TXT03 NOP DEF TXT04 DEF TXT05 DEF TXT06 NOP DEF TXT07 DEF TXT08 DEF TXT09 NOP DEF TXT10 NOP DEF TXT11 DEF TXT12 DEF TXT13 NOP DEF TXT14 DEF TXT15 DEF TXT16 NOP DEF TXT17 NOP DEC -1 TXT00 ASC 24,High Reliability Combined With High Throughput/ TXT01 ASC 28,THE HP 2608A HAS BEEN DESIGNED WITH RELIABILITY IN MIN/ TXT02 ASC 28,D. THE PRINTING MECHANISM HAS FEW MOVING PARTS, OPERA/ TXT03 ASC 11,TES VIRTUALLY WITHOUT/ TXT04 ASC 28,FRICTION, AND REQUIRES MINIMUM MAINTENANCE. THE BASIS/ TXT05 ASC 28, OF THE PRINTING MECHANISM IS A PRINT HAMMER AND COIL / TXT06 ASC 12,SET FOR EACH OF THE 132/ TXT07 ASC 28,PRINT POSITIONS. THE PRINT MECHANISM HORIZONTALLY SCA/ TXT08 ASC 28,NS THE PRINT LINE ALLOWING PRECISE DOT PLACEMENT IN AN/ TXT09 ASC 12,Y OF 924 DOT POSITIONS/ TXT10 ASC 9,ON A PRINT LINE./ TXT11 ASC 28,In addition, the printer is microprocessor controlled / TXT12 ASC 28,for flexibility and increased functional capabilities / TXT13 ASC 9,as well as added/ TXT14 ASC 28,reliability. Microprocessor control also enables inte/ TXT15 ASC 28,rnal diagnostics to be incorporated into the HP 2608A / TXT16 ASC 12,in the form of a self-/ TXT17 ASC 14,test\self-diagnostic mode./ B00 ASC 11, BIT 0 POWER FAIL; _/ B01 ASC 10, BIT 1 RESERVED; _/ B02 ASC 10, BIT 2 6,8 LPI; _/ B03 ASC 10, BIT 3 VFC INIT; _/ B04 ASC 10, BIT 4 VFC CH 12; _/ B05 ASC 10, BIT 5 VFC CH 9; _/ B06 ASC 14, BIT 6 READY, NOT READY; _/ B07 ASC 14, BIT 7 OFF LINE, ON LINE; _/ SPC 2 COD2 ASC 12,E123 DISPLAY STATUS;_ / COD3 ASC 10,E120 PRINT MODE;_ / COD4 ASC 13,E132 PRI-SEC LANGUAGE;_ / COD5 ASC 13,E127 SELF TEST STATUS;_ / COD6 ASC 14,E112 6 LPI DOT ROW COUNT; _/ COD7 ASC 14,E113 6 LPI FORM POSITION; _/ COD11 ASC 14,E115 8 LPI DOT ROW COUNT; _/ COD12 ASC 14,E116 8 LPI FORM POSITION; _/ COD20 ASC 21,E131 PRI-SEC POWER ON CONDITION SWITCH;_ / SPC 2 TSTMS ASC 6,TESTXXXXXX / SUBM ASC 6,SUBTEST B/ BIT ASC 7,SHOULD BE XX/ M54 ASC 18,E054 I-O STATUS ERROR; SUBTEST B/ M55 ASC 1,/ RDY32 ASC 09,E032 LP NOT READY/ DMD3 ASC 09,E036 LP OFF LINE/ MS031 ASC 11,E031 LP FAILED TO INT/ MS030 ASC 12,E030 FLAG FAILED TO SET/ MS065 ASC 15,E065 NO VFC CHANNEL 12 STATUS/ MS063 ASC 16,H063 PUT LANGUAGE CODE IN S-REG ASC 06,; PRESS RUN/ MS66 ASC 20,H066 SET HP-IB ADDRESS SWITCHES TO B; ASC 06, PRESS RUN/ MS66T BSS 3 MS67 ASC 21,H067 SET YOUR HP-IB ADDRESS IN SWITCH AND ASC 09,A-REG; PRESS RUN/ M100 ASC 22,H100 REALIGN TOF, PRESS ON LINE; PRESS RUN/ M104 ASC 15,H104 TAKE DEVICE XX OFF LINE/ M106 ASC 17,E106 NO RESPONSE TO PARALLEL POLL/ M107 ASC 10,E107 HP-IB TIME OUT/ M137 ASC 15,E137 IFC FLAG FAILED TO CLEAR/ SPC 1 ZBE00 ASC 12,E000 CLF 0-SFC 0 ERROR/ ZBE01 ASC 12,E001 CLF 0-SFS 0 ERROR/ ZBE02 ASC 12,E002 STF 0-SFC 0 ERROR/ ZBE03 ASC 12,E003 STF 0-SFS 0 ERROR/ ZBE04 ASC 16,E004 CLF 0 DID NOT INHIBIT INT/ ZBE05 ASC 13,E005 CLF CH-SFC CH ERROR/ ZBE06 ASC 13,E006 CLF CH-SFS CH ERROR/ ZBE07 ASC 13,E007 STF CH-SFC CH ERROR/ ZBE10 ASC 13,E010 STF CH-SFS CH ERROR/ ZBE11 ASC 14,E011 STF XX SET CARD FLAG// 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/ ZBE16 ASC 9,E016 CLC CH ERROR/ ZBE17 ASC 9,E017 CLC 0 ERROR/ ZBE26 ASC 13,E026 INT EXECUTION ERROR/ SPC 2 * REP FACTOR OPER VFC CHAN TBL1 DEC 1 TOF 1 DEC 1 BOF 2 DEC 12 SS 3 DEC 6 DS 4 DEC 3 TS 5 DEC 2 QP 7 DEC 2 HP 6 DEC 3 SP 8 DEC 2 7TH LINE 13 DEC 2 6TH LINE 14 DEC 2 5TH LINE 15 DEC 2 4TH LINE 16 DEC 1 BOF-1 10 DEC 1 BOF 9 DEC 1 TOF-1 11 DEC 1 TOF 12 DEC 1 SLEW 000B DEC 1 SLEW 001B DEC 1 SLEW 002B DEC 1 SLEW 004B DEC 1 SLEW 010B DEC 1 SLEW 020B DEC 1 SLEW 040B DEC 1 SLEW 100B SPC 1 SPC 2 * VFU CHAN # TBL2 OCT 100200 1 TOF VFU0 EQU TBL2 VFU1 OCT 100201 2 BOTTOM OF FORM VFU2 OCT 100202 3 SINGLE SPACE VFU3 OCT 100203 4 DOUBLE SPACE VFU4 OCT 100204 5 TRIPLE SPACE VFU6 OCT 100206 7 NEXT QUARTER PAGE VFU5 OCT 100205 6 HALF PAGE LINE VFU7 OCT 100207 8 NEXT SIXTH PAGE VFU12 OCT 100214 13 NEXT SEVENTH LINE VFU13 OCT 100215 14 NEXT SIXTH LINE VFU14 OCT 100216 15 NEXT FIFTH LINE VFU15 OCT 100217 16 NEXT FOURTH LINE VFU9 OCT 100211 10 BOF-1 VFU8 OCT 100210 9 BOF (WITH STATUS) VFU10 OCT 100212 11 TOF-1 VFU11 OCT 100213 12 TOF(WITH STATUS) LS00 OCT 100000 SLEW 0 LINE LS01 OCT 100001 SLEW 1 LINE LS02 OCT 100002 SLEW 2 LINES LS03 OCT 100004 SLEW 4B LINES LS04 OCT 100010 SLEW 10B LINES LS05 OCT 100020 SLEW 20B LINES LS06 OCT 100040 SLEW 40B LINES LS07 OCT 100100 SLEW 100B LINES SPC 2 TBL3 DEF MSG01 TOF DEF MSG02 BOF DEF MSG03 SS DEF MSG04 DS DEF MSG05 TS DEF MSG07 QP DEF MSG06 HP DEF MSG08 SP DEF MSG29 CH13 DEF MSG30 CH14 DEF MSG31 CH15 DEF MSG32 CH16 DEF MSG26 CH10 DEF MSG25 CH9 DEF MSG27 CH11 DEF MSG28 CH12 DEF MSG24 SLEW 0B DEF MSG09 SLEW 1B DEF MSG10 SLEW 2B DEF MSG11 SLEW 4B DEF MSG12 SLEW 10B DEF MSG13 SLEW 20B DEF MSG14 SLEW 40B DEF MSG15 SLEW 100B SPC 2 MSG01 ASC 20,TEST 05 VERTICAL FORMAT TEST -- 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 05,SLEW 001B/ MSG10 ASC 05,SLEW 002B/ MSG11 ASC 05,SLEW 004B/ MSG12 ASC 05,SLEW 010B/ MSG13 ASC 05,SLEW 020B/ MSG14 ASC 05,SLEW 040B/ MSG15 ASC 05,SLEW 100B/ MSG24 ASC 10 SLEW 000B/ MSG25 ASC 02,CH9/ MSG26 ASC 03,CH10/ MSG27 ASC 03,CH11/ MSG28 ASC 03,CH12/ MSG29 ASC 03,CH13/ MSG30 ASC 03,CH14/ MSG31 ASC 03,CH15/ MSG32 ASC 03,CH16/ SPC 2 ERTB DEF B00 DEF B01 DEF B02 DEF B03 DEF B04 DEF B05 DEF B06 DEF B07 SPC 2 RTABL NOP NOP DEF COD2 DEF COD3 DEF COD4 DEF COD5 DEF COD6 DEF COD7 NOP DEF COD11 DEF COD12 NOP NOP NOP NOP NOP DEF COD20 SPC 2 EXTB DEF * OCT 176630 OCT 177200 OCT 017400 OCT 177400 OCT 177400 OCT 177400 OCT 177400 OCT 177502 OCT 177400 OCT 177400 OCT 177530 SPC 2 BNTAB ASC 4,00000001 ASC 4,00000010 ASC 4,00000100 ASC 4,00001000 ASC 4,00010000 ASC 4,00100000 ASC 4,01000000 ASC 4,10000000 ASC 4,00000000 SPC 2 STAB DEF * NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP SKP * SOFTWARE VFC DATA TABLE SOFT1 OCT 174375 OCT 000004 OCT 000014 OCT 000024 OCT 100014 OCT 040004 OCT 020034 OCT 010004 OCT 100014 OCT 000024 OCT 040214 OCT 000004 OCT 120034 OCT 000004 OCT 010014 OCT 040124 OCT 100014 OCT 000004 OCT 020034 OCT 000004 OCT 140214 OCT 010024 OCT 000014 OCT 000004 OCT 120034 OCT 040004 OCT 000014 OCT 000024 OCT 110014 OCT 000004 OCT 060374 OCT 000004 OCT 100014 OCT 000024 OCT 000014 OCT 050004 OCT 120034 OCT 000004 OCT 000014 OCT 000024 OCT 140214 OCT 000004 OCT 130034 OCT 000004 OCT 100014 OCT 040124 OCT 000014 OCT 000004 OCT 120034 OCT 010004 OCT 040214 OCT 000024 OCT 100014 OCT 000004 OCT 020034 OCT 040004 OCT 110014 OCT 000024 OCT 001014 OCT 000406 OCT 000000 OCT 000000 OCT 000000 OCT 000000 OCT 000000 OCT 002000 OCT 177777 END OF TABLE LST MTABL NOP ZMX01 NOP ZMX02 NOP ZMX03 NOP ZMX04 DEF ZMS04 ZMX05 NOP ZMX06 DEF ZMS06 ZMX07 DEF ZMS07 ZMXO8 DEF ZMS08 ZMX09 DEF ZMS09 ZMX10 DEF ZMS10 ZMX11 DEF ZMS11 ZMX12 DEF ZMS12 ZMX13 DEF ZMS13 ZMX14 DEF ZMS14 ZMX15 DEF ZMS15 ZMX16 DEF ZMS16 ZMX17 DEF ZMS17 ZMX18 DEF ZMS18 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/ ZMS04 ASC 11,TRIANGULAR PRINT TEST/ ZMS06 ASC 10,CHARACTER SET TEST/ ZMS07 ASC 8,DMA--DCPC TEST/ ZMS08 ASC 10,ROM READ-BACK TEST/ ZMS09 ASC 16,PRIMARY--SECONDARY--SELECT TEST/ ZMS10 ASC 17,PRIMARY--SECONDARY--INTERMIX TEST/ ZMS11 ASC 14,DOUBLE SIZE CHARACTER TEST/ ZMS12 ASC 12,CONTROL CHARACTERS TEST/ ZMS13 ASC 12,GRAPHICS ALIGNMENT TEST/ ZMS14 ASC 14,GRAPHICS COLUMN WIDTH TEST/ ZMS15 ASC 12,GRAPHICS DIAGONAL TEST/ ZMS16 ASC 11,GRAPHICS PATTERN TEST/ ZMS17 ASC 9,POWER SUPPLY TEST/ ZMS18 ASC 10,PRINT QUALITY TEST/ HDMS ASC 22,2608A LINE PRINTER DIAGNOSTIC DSN = XXXXXXB, ASC 17, FIRMWARE ID NUMBER = XXXXX DEC/ SPC 2 IOID EQU * DEF LIA0 DEF LIA1 DEF LIA2 DEF LIA3 DEF LIA6 DEF STRD2 DEF TSTO DEF OTCHA DEF OTCHB DEF OTCHC DEF OTCHE DEF OTCHF DEF RDY5 DEF OUTIA DEF OUTIB DEF OUTIC DEF OUTIE DEF OUTID DEF IBO1 DEF IBO2 DEF SIN DEF TCJ DEF DMSC1 DEF DMSC2 DEF DMACW DEF LPX DEF CND1 DEF CND2 DEF PP0 DEF PP1 DEF PP2 DEF IS1 DEF IS2 DEF OA1 DEF OA3 DEF SWOTA DEF SWSFC DEC -1 SPC 2 TSTD EQU * DEF TST.0 BASIC I/O DEF TST01 MANUAL CONTROL DEF TST02 PING-PONG DEF TST03 PARITY DEF TST04 TRIANGULAR PRINT DEF TST05 VERTICAL FORMAT CONTROL DEF TST06 CHARACTER SET DEF TST07 DMA/DCPC DEF TST08 ROM READ-BACK DEF TST09 PRIMARY/SECONDARY SELECT DEF TST10 PRIMARY/SECONDARY/BACKSPACE DEF TST11 2X SIZE CHARACTER DEF TST12 CONTROL CHARACTERS DEF TST13 GRAPHICS ALIGNMENT DEF TST14 GRAPHICS COLUMN WIDTH DEF TST15 GRAPHICS DIAGONAL DEF TST16 GRAPHICS PATTERN DEF TST17 POWER SUPPLY TEST DEF TST18 PRINT QUALITY TEST DEC -1 MCT00 ASC 18,H040 POWER OFF LP (BACK, LOWER LEFT) ASC 06,; PRESS RUN/ MCT01 ASC 17,H041 POWER ON, READY THE PRINTER, ASC 22,CLEAR POWER ON SWITCHES, ON LINE; PRESS RUN/ MCT02 ASC 19,H042 PRESS RESET, ON LINE; PRESS RUN/ MCT03 ASC 16,H043 PRESS OFF LINE; PRESS RUN/ MCT04 ASC 17,H044 PRESS ON LINE, OPEN PLATEN; ASC 06,PRESS RUN/ MCT05 ASC 19,H045 CLOSE PLATEN, ON LINE; PRESS RUN/ MCT06 ASC 14,H046 TEAR PAPER IMMEDIATELY ASC 13, BELOW PRINTER; PRESS RUN/ MCT07 ASC 16,H047 REINSTALL PAPER, ALIGN TOF, ASC 13,PRESS ON LINE; PRESS RUN/ MCT08 ASC 14,H050 PRESS 8LPI; PRESS RUN/ MCT09 ASC 21,H052 PRESS FORM FEED, ON LINE; PRESS RUN/ MCT10 ASC 21,H051 PRESS OFF LINE, LINE FEED; PRESS RUN/ MCT11 ASC 20,H053 SET POWER ON LANGUAGES = XXXXXXXX; ASC 06,PRESS RUN/ MCT12 ASC 21,H055 SET POWER ON 6-8 LPI = X; PRESS RESET ASC 06,; PRESS RUN/ M126 ASC 12,E126 SELF TEST TIMEOUT/ M122 ASC 8,E122 PING-PONG/ M124 ASC 12,E124 SWITCH XXB FAILED/ M121 ASC 5,E121 DSJ/ M130 ASC 11,E130 DEVICE IDENTIFY/ M125 ASC 25,E125 HP-IB SELF TEST STATUS/ M133 ASC 15,E133 ILLEGAL SERVICE REQUEST/ M134 ASC 19,E134 ILLEGAL RESPONSE TO SERIAL POLL/ M135 ASC 12,E135 NO SERVICE REQUEST/ M136 ASC 16,E136 NO RESPONSE TO SERIAL POLL/ M140 ASC 11,E140 HP-IB PING-PONG/ M141 ASC 16,E141 PARITY ERROR NOT DETECTED/ M142 ASC 16,E142 PARITY ERROR NOT REPORTED/ PATTB OCT 130000 OCT 054000 OCT 026000 OCT 013000 OCT 005400 OCT 002600 OCT 001300 OCT 000540 OCT 000260 OCT 000130 OCT 000054 OCT 000026 OCT 000013 OCT 100005 OCT 140002 OCT 060001 OCT 130000 OCT 054000 OCT 026000 OCT 013000 OCT 005400 SPC 3 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/ SPC 1 LNGX ASC 10,LANGUAGE CODE = XXB/ SPC 1 HDSS OCT 7524 PACKED ASCII FOR "SI", "T" ASC 10,EST 12, SUBTEST XXB/ SPC 2 FWAA EQU * END