      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 SYNC COMM INTFC DIAG
* 
* 
      ORG 126B
DSN   OCT 103116    DIAGNOSTIC SERIAL NO. 
      ORG 140B
IOIP  DEF IOID      POINTER TO I-O INSTRUCTIONS 
TSTP  DEF TSTD      POINTER TO TEST DEF TABLE 
HDMP  DEF HDMS      POINTER TO HEADER MESSAGE 
STDA  OCT 001777    STANDARD TESTS
STDB  OCT 000000    STANDARD TESTS
      ORG 150B
IOCLR EQU 0 
SSMI  EQU 12B 
RDERR EQU 2         RESET DATA ERROR
RPERR EQU 1         RESET PARITY ERROR
SRLSA EQU 10B       SECONDARY RECEIVE LINE SIGNAL ARM 
RLSA  EQU 4         RECEIVE LINE SIGNAL ARM 
CLSA  EQU 2         CLEAR TO SEND ARM 
DSRA  EQU 1         DATA SET READY ARM
RNGM  EQU 20B       RING MASK 
SRLSM EQU 10B       SECONDARY RECEIVE LINE SIGNAL MASK
RLSM  EQU 4         RECEIVE LINE SIGNAL MASK
CLSM  EQU 2         CLEAR TO SEND MASK
DSRM  EQU 1         DATA SET READY MASK 
DMAEN EQU 40B       DMA ENABLE
PEN   EQU 20B       PARRITY ENABLE
PSNS  EQU 10B       PARITY SENSE
SRQS  EQU 4         SECONDARY REQUEST TO SEND 
DTR   EQU 2         DATA TERMINAL READY 
RQS   EQU 1         REQUEST TO SEND 
DIAGN EQU 10B       DIAGNOSE
RECVT EQU 4         RECEIVE TEST
TRDTA EQU 2         TEST RECEIVE DATA 
TCLK  EQU 1         TEST CLOCK
CHECK EQU 40000B    CHECK / 2 
MRQ   EQU 40000B    MODEM REQUEST 
DERR  EQU 20000B    DATA ERROR
PERR  EQU 10000B    PARITY ERROR
DRQ   EQU 4000B     DATA REQUEST
RNGI  EQU 1000B     RING INTERRUPT
SRLSI EQU 400B      SECONDARY RECEIVE LINS SIGNAL INTERRUPT 
RLSI  EQU 200B      RECEIVE LINE SIGNAL INTERRUPT 
CLSI  EQU 100B      CLEAR TO SEND INTERRUPT 
DSRI  EQU 40B       DATA SET READY INTERRUPT
RNG   EQU 20B       RING
SRLS  EQU 10B       SECONDARY RECEIVE LINE SIGNAL 
RLS   EQU 4         RECEIVE LINE SIGNAL 
CLS   EQU 2         CLEAR TO SEND 
DSR   EQU 1         DATA SET READY
TSDTA EQU 40000B    TEST SERIAL DATA
RUN   EQU 40000B    RUN FF
ACTV  EQU 20000B    ACTIVE FF 
HUNT  EQU 10000B    HUNT FF 
BYMD  EQU 4000B     BYTE MODE FF
BCOV  EQU 2000B     BIT COUNTER OVERFLOW
SYND  EQU 1000B     SYNK DETECT 
RQSS  EQU 400B      REQUEST TO SEND STATUS
NULL  EQU 0         ALL ZEROS 
SRSTC EQU 10000B    STATUS RESET COMMAND
ARMC  EQU 20000B    ARM COMMAND 
MASKC EQU 30000B    MASK COMMAND
CNTLC EQU 40000B    CONTROL COMMAND 
TESTC EQU 50000B    TEST COMMAND
STRTC EQU 60000B    START COMMAND 
STOPC EQU 70000B    STOP COMMAND
B0    EQU 1 
B1    EQU 2 
B2    EQU 4 
B3    EQU 10B 
B4    EQU 20B 
B5    EQU 40B 
B6    EQU 100B
B7    EQU 200B
SDMAL EQU 2         LOWER SELECT CODE DMA 
SDMAH EQU 6         UPPER SELECT CODE DMA 
IRTN  DEF *-* 
BUFFA BSS 1 
BUFFB BSS 1 
TDATA DEF SMPDA 
ABUFB DEF BUFBB 
ABUFD DEF DMABF 
BUFBB BSS 18
DMABF BSS 36
      SKP 
TRJSB DEF ZTCJI     POINTER 
SW1   OCT 2 
.7    OCT 7 
MD8   DEC -8
MD7   DEC -7
MD38  DEC -38 
MD9   DEC -9
MD18   DEC -18
      SKP 
GUPLO NOP           RETURN ADDRESS
      CLE,ERB 
      LDA B,I       GET CHARACTER 
      SEZ,RSS 
      ALF,ALF 
      AND LOHWD 
      ELB 
      JMP GUPLO,I   RETURN
      SPC 3 
PUPLO NOP           RETURN ADDRESS
      CLE,ERB 
      AND LOHWD 
      STA PCH 
      LDA B,I 
      SEZ,RSS 
      ALF,ALF 
      AND UPHWD 
      IOR PCH 
      SEZ,RSS 
      ALF,ALF 
      STA B,I 
      ELB 
      JMP PUPLO,I   RETURN
PCH   BSS 1 
UPHWD OCT 177400    MASK FOR UPPER HALF WORD
LOHWD OCT 000377    MASK FOR LOWER HALF WORD
      SKP 
SUBT  NOP           RETURN ADDRESS
      LDB SW1       MASK FOR SWITCH 1 
      LDA USSC      GET CONFIGURATION DATA
      SSA,RSS       CHECK FOR SUB-TEST OK 
      JMP SUBC1     CONTINUE
      JSB SWRT,I    CHECK SWITCH 1
      RSS 
      JMP SUBT1     CONINUE 
      LDA TSTN      GET TEST NO.
      LDB SUBT.     GET SUB-TEST NO.
      HLT 70B       HALT
SUBT1 LDB SW0       MASK FOR SWITCH 0 
      JSB SWRT,I    CHECK SWITCH 0
      JMP SUBT,I    RETURN
SUBC1 ISZ SUBT      UPDATE RETURN ADDRESS 
      JMP SUBT,I    RETURN
      SPC 1 
SUBTH NOP           RETURN ADDRESS
      JSB SUBT      CHECK SUB-TEST HALT 
      NOP           BYPASS LOOP 
      JSB SUBUP     UPDATE SUB-TEST NO. 
      JMP SUBTH,I   RETURN
      SPC 1 
SUBTT NOP           RETURN ADDRESS
      JSB SUBT      CHECK SUB-TEST HALT,LOOP
      JMP SUBLL     LOOP ON THIS SUB-TEST 
      JSB SUBUP     UPDATE SUB-TEST NO. 
      JMP SUBTT,I   RETURN
      SPC 1 
STSUB NOP           RETURN ADDRESS
      LDA STSUB     SAVE LOOP ADDRESS 
      INA 
      STA SUBLP 
      LDA STSUB,I   GET SUB-TEST NO.
      STA SUBT.     SAVE
      STA SUBLN     SAVE FOR USE WHEN LOOPING 
      ISZ STSUB     UPDATE RETURN 
      JMP STSUB,I   RETURN
      SPC 1 
SHUTA NOP           RETURN ADDRESS
      JSB SUBT      CHECK SUB-TEST HALT, LOOP 
      JMP SUBLL      LOOP 
      JSB SUBUP     UPDATE SUB-TEST NO. 
      LDA SHUTA     GET LOOP ADDRESS
      STA SUBLP     SAVE
      LDA SUBT.     GET SUB-TST NO. 
      STA SUBLN     SAVE FOR FUTURE LOOPING 
      JMP SHUTA,I   RETURN
      SPC 1 
SUBLL LDA SUBLN     GET SUB-TEST NO.
      STA SUBT.     SAVE
      JMP SUBLP,I   GO LOOP 
      SPC 1 
SUBUP NOP           RETURN ADDRESS
      LDA SUBT.     GET SUB-TEST NO.
      INA 
      AND .77        MASK 
      CPA .70        CHECK FOR OCT X70
      JMP SUBT3      CONTINUE 
      ISZ SUBT.      OK UPDATE SUBT.
      JMP SUBUP,I    RETURN 
SUBT3 LDA SUBT.      GET SUB-TEST NO. 
      AND .300       MASK X00 
      ADA .100       UPDATE SUB-TEST NO.
      STA SUBT.      SAVE 
      JMP SUBUP,I    RETURN 
.300  OCT 300 
.70   OCT 70
.77   OCT 77
SUBLP DEF *-*       LOOP ADDRESS
SUBLN BSS 1         LOOP SUB-TEST NO. 
SUBT. BSS 1         SUB-TEST NUMBER 
.100  OCT 100 
      SKP 
ERNO  NOP           RETURN ADDRESS
      LDB ERNO,I     GET BUFFER POINTER 
      BLS           CONVERT TO BYTE ADDRESS 
      INB 
      LDA SUBT.     GET SUB-TEEST NO. AND E NO. 
      ALF,ALF 
      RAL,RAL 
      AND LOHWD     MASK
      ADA ASC0      CONVERT TO ASCII NO 
      JSB PUPLO     PLACE IN MESSAGE
      INB 
      LDA SUBT. 
      RAR,RAR 
      RAR 
      AND .7
      ADA ASC0      CONVERT TO ASCII
      JSB PUPLO     PLACE IN MESSAGE
      INB 
      LDA SUBT. 
      AND .7        MASK
      ADA ASC0      CONVERT TO ASCII NO 
      JSB PUPLO     PLACE IN MESSAGE
      ISZ ERNO      UPDATE RETURN 
      JMP ERNO,I    RETURN
ASC0  OCT 60        ASCII ZERO
      SKP 
CMND  NOP           RETURN ADDRESS
      LDA CMND,I    GET OPTIONS IN COMMAND
      IOR B15       GENERATE COMMAND
FNIO1 OTA SSMI      GIVE COMMAND TO INTERFACE 
      ISZ CMND      UPDATE RETURN ADDRESS 
      JMP CMND,I    RETURN
      SPC 2 
RSTUS NOP           RETURN ADDRESS
FNIO2 CLC SSMI      INIT INPUT SELECTOR TO SELS 
STIO1 LIA SSMI      READ STATUS 
      JMP RSTUS,I   RETURN
      SPC 2 
MRST  NOP           RETURN ADDRESS
      LDA MRSTC     GET MASTER RESET COMMAND
FNIO0 OTA SSMI      GIVE COMMAND TO INTERFACE 
      LDA D4
      JSB TMRR,I    WAIT 4 MS 
      JMP MRST,I    RETURN
B15   EQU * 
MRSTC OCT 100000    MASTER RESET COMMAND
      SPC 2 
CLF   NOP           RETURN ADDRESS
CNIO1 CLF SSMI      CLEAR INTERFACE FLAG
      JMP CLF,I     RETURN
      SPC 2 
SFS   NOP           RETURN ADDRESS
CNIO2 SFS SSMI      SKIP ON FLAG SET
      JMP SFS,I     RETURN - FLAG CLEAR 
      ISZ SFS       UPDATE RETURN ADDRESS 
      JMP SFS,I     RETURN
      SPC 2 
STC   NOP           RETURN ADDRESS
CNIO3 STC SSMI      SET INTERFACE CONTROL FF
      JMP STC,I     RETURN
      SPC 2 
CLC   NOP           RETURN ADDRESS
CNIO4 CLC SSMI      CLEAR INTERFACE CONTROL FF
      JMP CLC,I     RETURN
      SPC 2 
LIA   NOP           RETURN ADDRESS
CNIO5 LIA SSMI      INPUT FORM INTERFACE
      JMP LIA,I     RETURN
      SPC 2 
CNTRL NOP           RETURN ADDRESS
      LDA CNTRL,I   GET CONTROL COMMAND 
      STA CNTP1 
      JSB CMND      OUTPUT CONTROL COMMAND
CNTP1 BSS 1 
      LDA D4        WAIT 4 MS 
      JSB TMRR,I
      ISZ CNTRL     UPDATE RETURN 
      JMP CNTRL,I   RETURN
      SPC 2 
MCLK  NOP           RETURN ADDRESS
      JSB CMND      GIVE TEST COMMAND 
      ABS TESTC+DIAGN+TCLK
      JSB CMND      GIVE TEST COMMAND 
      ABS TESTC+DIAGN 
      JMP MCLK,I    RETURN
      SPC 2 
XMTI  NOP           RETURN ADDRESS
      JSB CNTRL     RQS=1 
      ABS CNTLC+RQS+DTR 
      JSB CMND      SET RUN 
      ABS STRTC 
      JSB MCLK      SET ACTV
      JSB MCLK      SET BYMD AND DRQ
      JMP XMTI,I    RETURN
      SPC 2 
RCVI  NOP           RETURN ADDRESS
      JSB CNTRL     RQS=0 
      ABS CNTLC+DTR+SRQS
      JSB CMND      SET RUN 
      ABS STRTC 
      JSB MCLK      SET ACTV
      JSB MCLK      SET HUNT
      JMP RCVI,I    RETURN
      SPC 2 
PTYGN NOP           RETURN ADDRESS
      STB PYTYP     SAVE PARITY TYPE
      LDB MD8 
      STB PYCNT 
      CCB 
      AND B0TB6     MASK
PYC01 SLA           GENERATE PARITY 
      CMB 
      RAR 
      ISZ PYCNT 
      JMP PYC01 
      ALF,ALF 
      SZB 
      IOR .B7 
      LDB PYTYP     GIVE CORRECT
      SSB,RSS       PARITY TO 
      XOR .B7       DATA
      JMP PTYGN,I   RETURN
PYCNT BSS 1         COUNTER 
PYTYP BSS 1         PARITY TYPE 
.B7   OCT 200 
B0TB6 ABS B0+B1+B2+B3+B4+B5+B6
      SPC 2 
OTA   NOP           RETURN ADDRESS
      LDA OTA,I     GET DATA
      ISZ OTA       UPDATE RETURN 
OTIO1 OTA SSMI      OUTPUT
      JMP OTA,I     RETURN
      SPC 2 
PENN  DEF *-* 
      SSA 
      JMP PENC1 
      JSB CMND      PARITY ENABLE 
      ABS CNTLC+PEN+RQS 
      JMP PENN,I    RETURN
PENC1 JSB CMND
      ABS CNTLC+PEN+PSNS+RQS
      JMP PENN,I    RETURN
      SPC 2 
SDIN  NOP           RETURN ADDRESS
      LDB SDIN,I    GET DATA
      LDA MD8       INITIALIZE COUNTER
      STA SDINC 
SDC01 LDA MB0       GENERATE TEST COMMAND 
      AND B 
      RAL 
      IOR SDCM1 
CNIO6 OTA SSMI      OUTPUT COMMAND
      XOR MB0       COMPLEMENT TEST CLOCK 
CNIO7 OTA SSMI      OUTPUT COMMAND
      RBR           NEXT BIT
      ISZ SDINC     ALL BITS? 
      JMP SDC01     CONTINUE
      XOR MB0 
CNIO8 OTA SSMI
      ISZ SDIN      YES - UPDATE RETURN 
      JMP SDIN,I    RETURN
SW0   EQU * 
MB0   ABS B0
SDINC BSS 1 
SDCM1 ABS TESTC+DIAGN+RECVT+TCLK+100000B
      SPC 2 
CDSB  NOP           RETURN ADDRESS
      LDA CDSB      GET RETURN
      STA CDATA     SAVE RETURN 
      JSB RDDTA     READ DATA 
      LDA DSBYM 
      AND B 
      LDB A 
      JMP CDAC1     CONTINUE
DSBYM ABS RUN+ACTV+BYMD+BCOV+HUNT+SYND+RQSS 
      SPC 2 
SDOU  NOP           RETURN ADDRESS
      LDA MD8 
      STA SDOUC 
      CLA 
      STA SDCHR 
SDC02 JSB RDDTA     GET TSDTA 
      ELB           CONSTRUCT 
      LDA SDCHR     CHARACTED 
      ERA 
      STA SDCHR     BIT 
      JSB MCLK      SUPPLY TCLK 
      ISZ SDOUC     DONE/ 
      JMP SDC02     CONTINUE
      LDA SDCHR     GET CHARACTER 
      ALF,ALF 
      JMP SDOU,I    RETURN
SDCHR BSS 1 
SDOUC BSS 1 
      SPC 2 
PTG   NOP           RETURN ADDRESS
      LDA PTG,I     GET ADDRESS OF
      STA PTGI      INTERRUPT ROUTINE 
      ISZ PTG 
      LDA PTG,I     GET ADDRESS OF
      STA IRTN      INTERRUPT RETURN
      JSB TRJSB,I   FILL TRAP CELL
PTGI  DEF *-* 
      ISZ PTG       UPDATE RETURN 
      JMP PTG,I     RETURN
      SPC 2 
SMI1  NOP           UNUSED RETURN ADDRESS 
                                                                                                                                                