      JMP *+3       YES 
E012  JSB ERMS,I    E012 INT DURING HOLD OFF
      DEF ZBE12 
      LDA ZBD5A     CHECK RETURN ADDRESS
      LDB CPTO      IF 210X 
      SSB           ADD ONE 
      INA 
      CPA ZBI5
      JMP ZBI5A 
E015  JSB ERMS,I    E015 INT RTN ADDR ERROR 
      DEF ZBE15 
      JMP ZBIO6 
ZBI5A JSB ZTCJI     SET SECOND INT TRAP 
      DEF ZBT5
      STF INTP      TURN I/O SYSTEM ON
      JMP ZBI5,I    CONTINUE TEST 
* *
* *
ZBT5  NOP 
      CLF INTP      TURN I/O SYSTEM OFF 
E013  JSB ERMS,I    E013 SECOND INT OCURRED 
      DEF ZBE13 
* 
* 
* 
* 
* *
      SKP 
*         CLC CH AND  CLC 0 
* 
ZBIO6 JSB ZTCJI     SET JSB INSTRUCTION 
      DEF ZBI61 
ZBS61 STC CH        SET CH CONTROL
ZBS62 STF CH        SET CH FLAG 
      STF INTP      TURN ON INTERRUPTS
ZBS63 CLC CH        CLEAR CH CONTROL
      NOP           GIVE IT A CHANCE
      NOP 
      CLF INTP      TURN INTS OFF 
ZB60  JSB ZTCJI     SET JSB INSTRUCTION 
      DEF ZBI62 
ZBS64 CLF CH        CLEAR CH FLAG 
ZBS65 STC CH        SET CH CONTROL
ZBS66 STF CH        SET CH FLAG 
      STF INTP      TURN ON INTS
      CLC INTP      CLEAR I/O SYSTEM
      NOP           GIVE IT A CHANCE
      NOP 
      CLF INTP      TURN OFF INTS 
      JMP ZBIO7 
* 
* *
ZBI61 NOP 
      CLF INTP      TURN OFF INTS 
E016  JSB ERMS,I    E016 CLC CH ERROR 
      DEF ZBE16 
      JMP ZB60
* 
ZBI62 NOP 
      CLF INTP      TURN OFF INTS 
E017  JSB ERMS,I    E017 CLC 0 ERROR
      DEF ZBE17 
      JMP ZBIO7 
* 
ZBE16 ASC 9,E016 CLC CH ERROR/
ZBE17 ASC 9,E017 CLC 0 ERROR/ 
      SKP 
*         EXTERNAL & INTERNAL PRESET TEST 
* 
ZBIO7 LDB ZS812     CHECK TO SUPPRESS 
      JSB SWRT,I    ? 
      JMP H025      YES - SKIP PRESET TEST
H024  JSB MSGC,I    TELL OPERATOR 
      DEF ZBM24     PRESS PRESET
* 
ZBS71 CLF CH        CLEAR CH FLAG 
      STF INTP      TURN ON INTS
      JSB ZTCJI     SET TRAP CELL JSB INSTRUCTION 
      DEF ZBI70 
      HLT 24B       WAIT FOR OPERATOR 
      CLA,INA       SET UP FLAGS FOR TESTS
      SFS INTP      CHECK INTP FLAG 
      CLA           NOT SET SO CLEAR FLAG 
      RAL           MOVE TO NEXT FLAG 
      CLF INTP      TURN OFF ONTPS
ZBS72 SFS CH        CHECK CHANNEL FLAG
      INA           NOT SET SO FLAG IT
      RAL           MOVE TO NEXT FLAG 
      LIB 0         CHECK I/O BUSS
      SZB           SHOULD BE ZERO
      INA           NOT SO FLAG IT
      RAL           MOVE TO NEXT FLAG 
      STF INTP      CHECK CONTROL ON CARD 
      NOP           GIVE IT A CHANCE
      NOP 
      CLF INTP      TURN OFF INTPS
      SKP 
ZB70  SLA,RSS       CHECK FOR ERRORS
      JMP *+3 
E022  JSB ERMS,I    E022 DID NOT CLEAR CONTROL
      DEF ZBE22 
      RAR 
      SLA,RSS 
      JMP *+3 
E023  JSB ERMS,I    E023 I/O LINES NOT CLEAR
      DEF ZBE23 
      RAR 
      SLA,RSS 
      JMP *+3 
E020  JSB ERMS,I    E020 FLAG NOT SET 
      DEF ZBE20 
      RAR 
      SLA,RSS 
      JMP *+3 
E021  JSB ERMS,I    E021 DID NOT DIABLE INTS
      DEF ZBE21 
H025  JSB MSGC,I    TELL OPERATOR 
      DEF ZBM25     BASIC I/O IS COMPLETE 
      JMP ZBIO,I    RETURN TO CALLER
* 
ZBI70 NOP           CONTROL FAILED
      CLF INTP      TURN OFF INTPS
      INA 
      JMP ZB70
* 
ZBE20 ASC 17,E020 PRESET(EXT) DID NOT SET FLAG/ 
ZBE21 ASC 19,E021 PRESET(INT) DID NOT DISABLE INTS/ 
ZBE22 ASC 20,E022 PRESET(EXT) DID NOT CLEAR CONTROL/
ZBE23 ASC 21,E023 PRESET(EXT) DID NOT CLEAR I-O LINES/
ZBM24 ASC 17,H024 PRESS PRESET (EXT&INT),RUN/ 
ZBM25 ASC 08,H025 BI-O COMP/
      SKP 
ZBIOD DEF *+1 
      DEF ZBS21 
      DEF ZBS22 
      DEF ZBS23 
      DEF ZBS24 
      DEF ZBS25 
      DEF ZBS26 
      DEF ZBS27 
      DEF ZBS31 
      DEF ZBS32 
      DEF ZBS33 
      DEF ZBS41 
      DEF ZBS42 
      DEF ZBS51 
      DEF ZBS52 
      DEF ZBS53 
      DEF ZBS61 
      DEF ZBS62 
      DEF ZBS63 
      DEF ZBS64 
      DEF ZBS65 
      DEF ZBS66 
      DEF ZBS71 
      DEF ZBS72 
      DEC -1
* 
ZCEND EQU * 
      HED BASE PAGE TABLES AND LINKS
      ORG 126B
DSN   OCT 105104    DIAGNOSTIC SERIAL NUMBER
      ORG 140B
IOIP  DEF IOID      POINTER TO I/O INSTRUCTIONS LIST
TSTP  DEF TSTD      POINTER TO TEST LIST
HDMP  DEF HDMS      POINTER TO HEADER MESSAGE 
STDA  OCT 177 
STDB  OCT 0 
* 
      ORG 150B
HDMS  EQU * 
      ASC 16,HP 9866 LINE PRINTER DIAGNOSTIC/ 
IOID  EQU * 
      DEF SC00
      DEF SC01
      DEF SC02
      DEF SC03
      DEF SC04
      DEF SC05
      DEF SC06
      DEF SC07
      DEF SC08
      DEF SC09
      DEF SC10
      DEF SC11
      DEF SC12
      DEF SC13
      DEF SC14
      DEF SC15
      DEF SC16
      DEF SC17
      DEF DMAC1 
      DEC -1        END-OF-LIST 
* 
TSTD  EQU * 
      DEF TST.0     BASIC I/O 
      DEF TST01     STATUS & BUFFER CLEAR 
      DEF TST02     CHARACTER SET 
      DEF TST03     TRIANGLE PRINT & OVER BUFFER FULL 
      DEF TST04     NON-PRINTING CHARACTERS 
      DEF TST05     WORST CASE PATTERN
      DEF TST06     DMA TEST
      DEF TST07     PSEUDO OPDESIGN 
      DEC -1
      SKP 
* 
.12   OCT 12
.37   OCT 37
.40   OCT 40
.177  OCT 177 
D300  DEC 300 
BIT9  OCT 1000
BT812 OCT 10400 
DM10  DEC -10 
DM60  DEC -60 
DM80  DEC -80 
SLASH OCT 57
AA    OCT 101 
BFCLB OCT 100200
BIT7  OCT 200 
LCHR  OCT 176 
* 
CNTR  NOP 
TMP   NOP 
FCHR  NOP 
CHR   NOP 
* 
* 
* 
* *
* 
* 
*              CLEAR CHARACTER IN INTERFACE 
*              BEFORE DOING BASIC I/O 
* *
TST.0 EQU * 
* 
      NOP 
      CLA 
SC00  OTA CH
      JSB *+2,I 
      JMP *-4,I 
      DEF TST00 
      HED   COMMON ROUTINES 
*                   OUTPUT A REG
*                   TIME OUT = E027 FLAG TIME OUT (CHR) 
* *
OTCHR NOP 
      LDB INCHR     SET TRAP CELL JSB 
SC01  STB CH
SC02  OTA CH        OUTPUT CHARACTER
      CLA,INA       SET FOR MAX OF 1MS
      STF INTP      TURN ON INTERRUPTS
SC03  STC CH,C
      JSB TMRR,I    GO WAIT 
      CLC INTP,C    LONG ENOUGH 
E027  JSB ERMS,I    REPORT TIME OUT 
      DEF ER27
      LDB BIT9      CHECK IF ABORT
      JSB SWRT,I
      JMP EXRT,I    YES 
      JMP OTCHR,I   RETURN
* 
ER27  ASC 13,E027 FLAG TIME OUT (CHR)/
* *
INCHR JSB *+1 
      NOP           INTERRUPT LOCATION
      CLF INTP      TURN OFF INTERRUPTS 
      JMP OTCHR,I 
* 
* 
*                   OUTPUT PRINT COMMAND
*                   TIME OUT = E030 FLAG TIME OUT (CMD) 
* 
OTCMD NOP 
      LDA .12       USE LF AS PRINT COMMAND 
      LDB INCMD     SET TRAP CELL JSB 
SC04  STB CH
SC05  OTA CH        OUTPUT PRINT COMMAND
      LDA D300      SET FOR MAX OF 300MS
      STF INTP      TURN ON INTERRUPTS
SC06  STC CH,C
      JSB TMRR,I    GO WAIT 
      CLC INTP,C    LONG ENOUGH 
E030  JSB ERMS,I    REPORT TIME OUT 
      DEF ER30
      LDB BIT9      CHECK IF ABORT
      JSB SWRT,I
      JMP EXRT,I    YES 
      JMP OTCMD,I   RETURN
* 
ER30  ASC 13,E030 FLAG TIME OUT (CMD)/
* 
INCMD JSB *+1 
      NOP           INTERRUPT LOCATION
      CLF INTP      TURN OFF INTERRUPTS 
      JMP OTCMD,I 
      SKP 
*                   OUTPUT A MESSAGE TO THE LINE PRINTER
* *
OTMSG NOP 
      LDB BIT7      GET BIT 7 
      JSB SWRT,I    SUPPRESS MESSAGES 
      JMP OTMSX 
      JSB CFOP      CHECK FOR OUT OF PAPER
      LDA OTMSG,I   GET POINTER TO MESSAGE
      RAL           CONVERT TO BYTE ADDRESS 
      STA TMP       SAVE IT 
OTMS0 LDB TMP       GET A CHARACTER 
      CLE,ERB 
      LDA B,I 
      SEZ,RSS 
      ALF,ALF 
      AND .177
      CPA SLASH     END-OF-MESSAGE
      JMP *+4       YES 
      JSB OTCHR     NO OUTPUT CHARACTER 
      ISZ TMP       MOVE TO NEXT CHARACTER
      JMP OTMS0     DO IT 
      JSB OTCMD     PRINT LINE
OTMSX ISZ OTMSG 
      JMP OTMSG,I   RETURN
* 
*                   CHECK FOR LP OUT OF PAPER 
* 
CFOP  NOP 
SC07  LIA CH        GET STATUS
      SLA,RSS       IF BIT 0 IS CLEAR 
      JMP CFOP,I     THEN IT'S READY
E031  JSB ERMS,I    NOT THEN REPORT IT
      DEF *+2         AS OUT OF PAPER 
      JMP CFOP,I    CONTINUE
* *
      ASC 11,E031 LP OUT OF PAPER/
* 
      HED    L.P.  TESTS
*                   THIS TEST CHECKS THE PAPER OUT STATUS 
*                   AND THE BUFFER CLEAR COMMAND
* 
TST01 EQU * 
* 
STBF  NOP           ENTRY FROM EXEC 
      LDB BT812     CHECK TO SUPPRESS 
      JSB SWRT,I    PAPER OUT STATUS CHECK
      JMP BFCT      YES GO TO BUFFER CLEAR CHECK
H100  JSB MSGH,I    TELL OPERATOR TO
      DEF STPOM     REMOVE PAPER FROM L.P.
SC08  LIA CH        GET STATUS
      SLA           BIT 0 SHOULD BE HIGH
      JMP *+3       OK
E032  JSB ERMS,I    NO TELL OPERATOR
      DEF ER32      THAT STATUS IS IN ERROR 
H101  JSB MSGH,I    TELL OPERATOR TO
      DEF STPIM     READY STALL THE PAPER 
SC09  LIA CH        GET STATUS
      SLA,RSS       BIT 0 SHOULD BE LOW 
      JMP *+3       OK
E033  JSB ERMS,I    NO TELL OPERATOR
      DEF ER33      THAT STATUS IS IN ERROR 
BFCT  JSB OTMSG     OUTPUT TO LP
      DEF STPMM     TITLE 
      JSB OTMSG     OUTPUT LP 
      DEF NLSBB     NEXT LINE SHOULD BE BLANK 
      LDA DM80      SET FOR 80 CHARACTERS 
      STA CNTR
      LDA AA        GET ASCII A 
      JSB OTCHR     OUTPUT IT 
      ISZ CNTR      DONE? 
      JMP *-3       NO
      LDA BFCLB     GET BUFFER CLEAR BIT (7)
SC10  OTA CH        OUTPUT IT 
      CLA 
SC11  OTA CH        CLEAR COMMAND 
      JSB OTCMD     OUTPUT PRINT COMMAND
      JMP STBF,I    RETURN TO EXEC
* 
STPOM ASC 14,H100 REMOVE PAPER FROM L.P./ 
STPIM ASC 11,H101 LOAD L.P. PAPER/
ER32  ASC 19,E032 STATUS IS LOW AND SHOULD BE HIGH/ 
ER33  ASC 19,E033 STATUS IS HIGH AND SHOULD BE LOW/ 
STPMM ASC 15,STATUS & BUFFER CLEAR TEST 01/ 
NLSBB ASC 13,NEXT LINE SHOULD BE BLANK/ 
      SKP 
*                   THIS TEST WILL OUTPUT 60 LINES
*                   OF CYCLIC CHARACTERS
* 
TST02 EQU * 
* *
CYCL  NOP           ENTRY FROM EXEC 
      JSB OTMSG     TELL OPERATOR WHAT TEST 
      DEF CYCLM 
      LDA DM60      SET 60
      STA TMP        LINES
      LDA .40       START WITH A SPACE
      STA FCHR      SAVE FIRST CHARACTER
CYCL0 JSB CFOP      CHECK FOR OUT OF PAPER
      LDA FCHR
      STA CHR       AND CHR INCREMENT 
      LDA DM80      SET FOR 80 CHARACTERS 
      STA CNTR
CYCL1 LDA CHR       GET THE CHARACTER 
      CPA LCHR      CHECK IF LAST CHARACTER 
      LDA .40       YES RESET TO FIRST
      STA CHR 
      JSB OTCHR     GIVE IT TO L.P. 
      ISZ CHR       MOVE TO NEXT CHARACTER
      ISZ CNTR      80 CHRS OUT 
      JMP CYCL1     NO
      JSB OTCMD     OUTPUT PRINT COMMAND
      ISZ FCHR      MOVE TO NEXT CHARACTER
      ISZ TMP       60 LINES
      JMP CYCL0     NO
      JMP CYCL,I    YES RETURN TO EXEC
* 
CYCLM ASC 17,CYCLIC PATTERN TEST 02 (60 LINES)/ 
      SKP 
*         TRIANGLE & OVER BUFFER FULL 
* 
TST03 EQU * 
* 
TROV  NOP 
      JSB OTMSG     TELL OPERATOR WHAT TEST 
      DEF TRM       TRIANGLE PATTERN & OVER BUFFER FULL 
      LDA DM80      START WITH 80 CHARACTERS
      STA CNTR
TRL0  JSB CFOP      CHECK FOR OUT OF PAPER
      LDA CNTR      SET FOR SPACES
      CMA,INA 
      ADA DM80
      ARS           DIVIDE BY 2 
      STA TMP       SAVE AS COUNTER 
TRL1  LDA TMP 
      SZA,RSS       DONE? 
      JMP TRC 
      ISZ TMP       NO - COUNT SPACE
      NOP 
      LDA .40       OUTPUT SPACE
      JSB OTCHR 
      JMP TRL1      DO NEXT ONE 
* 
TRC   LDA CNTR      OUTPUT
      STA TMP         CHARACTER 
      LDA .H            "H" 
      JSB OTCHR 
      ISZ TMP 
      JMP *-3 
      JSB OTCMD     DO A PRINT COMMAND
      ISZ CNTR
      ISZ CNTR      DONE TRIANGLE?
      JMP TRL0      NO
      SKP 
* *
OVBF  JSB OTMSG     TELL OPERATOR 
      DEF NLSBA     NEXT LINE SHOULD BE ALL A'S 
      LDA DM80
      STA CNTR      OUTPUT 80 A'S 
      JSB CFOP      CHECK FOR OUT OF PAPER
      LDA AA
      JSB OTCHR 
      ISZ CNTR
      JMP *-3 
      LDA DM80      OUTPUT 80 H'S 
      STA CNTR
      LDA .H
      JSB OTCHR 
      ISZ CNTR
      JMP *-3 
      JSB OTCMD     DO A PRINT COMMAND
      JMP TROV,I
* 
* 
TRM   ASC 21,TRIANGLE PRINT & OVER BUFFER FULL TEST 03/ 
NLSBA ASC 14,NEXT LINE SHOULD BE ALL A'S/ 
      SKP 
*              THIS TEST OUTPUTS ALL NON-PRINTING CHARACTERS
*              THEN OUTPUTS A PRINT COMMAND 
* 
TST04 EQU * 
* 
NPC   NOP 
      JSB OTMSG     OUTPUT MESSAGE TO PRINTER 
      DEF NPCM      NON-PRINTING CHARACTER TEST 
      JSB OTMSG     OUTPUT
      DEF NLSBB     NEXT LINE SHOULD BE BLANK 
      LDA .177      START WITH LAST CHR 
      STA CHR 
      LDA DM80      SET FOR 80 CHARACTERS 
      STA CNTR
      JSB CFOP      CHECK FOR OUT-OF-PAPER
NPC0  LDA CHR       GET CHARACTER 
      INA           INCREMENT IT
      CPA .40       IS THIS THE FIRST PRINT 
      LDA .177      YES - SKIP TO LAST+1
      AND .177      ROUND TO ZERO 
      CPA .12       SKIP PRINT COMMAND
      INA 
      STA CHR 
      JSB OTCHR     OUTPUT IT TO LP 
      ISZ CNTR      DONE 80?
      JMP NPC0      NO
      JSB OTCMD     YES ATTEMPT PRINT 
      JMP NPC,I 
* 
NPCM  ASC 16,NON-PRINTING CHARACTER TEST 04/
      SKP 
*              OUTPUT WORST CASE PATTERN
*              E H I $ #
* 
TST05 EQU * 
* 
WCP   NOP           ENTRY FROM EXEC 
      JSB OTMSG     OUTPUT MESSAGE TO PRINTER 
      DEF WCPM      WORST CASE PATTERN TEST 
      LDA .E        GET CHARACTER E 
      JSB WCPR      OUTPUT IT 
      LDA .H        GET CHARACTER H 
      JSB WCPR      OUTPUT IT 
      LDA .I        GET CHARACTER I 
      JSB WCPR      OUTPUT IT 
      LDA .$        GET CHARACTER $ 
      JSB WCPR      OUTPUT IT 
      LDA .#        GET CHARACTER # 
      JSB WCPR      OUTPUT IT 
      JMP WCP,I     RETURN
* 
WCPM  ASC 14,WORST CASE PATTERN TEST 05/
* 
WCPR  NOP 
      STA CHR       SAVE CHARACTER
      LDA DM10      SET FOR 10 LINES
      STA TMP 
WCPR0 LDA DM80      AND 80 CHARACTERS 
      STA CNTR
      JSB CFOP      CHECK FOR OUT-OF-PAPER
      LDA CHR       GET CHARACTER 
      JSB OTCHR     OUTPUT IT 
      ISZ CNTR      DONE 80 CHARACTERS? 
      JMP *-3 
      JSB OTCMD     OUTPUT PRINT COMMAND
      ISZ TMP       DONE 10 LINES?
      JMP WCPR0     NO
      JMP WCPR,I    YES-RETURN
* 
.E    OCT 105 
.H    OCT 110 
.I    OCT 111 
.$    OCT 44
.#    OCT 43
      SKP 
*              THIS TEST MAKES OUTPUTS USING DMA
* *
TST06 EQU * 
* 
DMA   NOP 
      LDA CPTO      CHECK IF DMA IS AVAILABLE 
      RAR,RAR 
      SLA,RSS       ? 
      JMP DMA,I     NOT AVAILABLE ABORT TEST
      JSB OTMSG     OUTPUT MESSAGE TO PRINTER 
      DEF DMAM      DMA CYCLIC PATTERN TEST (60 LINES)
      LDA DM60      SET FOR 60 LINES
      STA TMP 
      LDA .40       START WITH A SPACE
      STA FCHR      SAVE FIRST CHARACTER
DMA0  LDA DM80
      STA CNTR      80 CHARACTER PATTERN
      JSB CFOP      CHECK FOR OUT OF PAPER
      LDB DMABF     GET POINTER TO BUFFER 
      LDA FCHR      GET CHARACTER 
DMA1  CPA LCHR      CHECK IF LAST CHARACTER 
      LDA .40       YES - RESET TO FIRST
      STA B,I       PUT IT IN BUFFER
      INA           MOVE TO NEXT CHARACTER
      INB           MOVE TO NEXT LOCATION 
      ISZ CNTR      DONE 80 CHARACTERS
      JMP DMA1      NO
      LDA DMAC1     GET CONTROL WORD
      OTA 6 
      LDA DMABF     GET ADDRESS 
      INA           MOVE PAST FIRST CHARACTER 
      CLC 2         PREPAIR DMA FOR ADDRESS 
      OTA 2         OUTPUT ADDRESS
      LDA DM80      GET COUNT 
      STC 2         PREPAIR DMA FOR COUNT 
      OTA 2         OUTPUT COUNT
      LDA INDMA     SET DMA INTERRUPT TRAP
      STA 6 
      LDA IEDMA     SET LP INTERRUPT
SC12  STA CH
      LDA DMABF,I   GET FIRST CHARACTER 
SC13  OTA CH
SC14  STC CH,C      START L.P.
      STC 6,C       AND DMA 
      STF INTP      TURN ON INTERRUPTS
      CLA,INA       SET 2MS MAX 
      INA 
      JSB TMRR,I    GO WAIT 
      CLC INTP,C    LONG ENOUGH 
E034  JSB ERMS,I    TELL OPERATOR THAT
      DEF DMAE1     DMA TIMED OUT 
      JMP DMA,I     RETURN TO EXEC
      SKP 
DMAM  ASC 22,DMA-DCPC TEST 06 (CYCLIC PATTERN 60 LINES)/
DMAE1 ASC 10,E034 DMA TIMED OUT/
* 
DMAC1 OCT 100000
DMABF DEF *+1 
      BSS 80
      OCT 12        ADD PRINT TO END OF BUFFER
* 
IEDMA JSB *+1       LINE PRINTER INTERRUPT
      NOP 
      CLC INTP,C    TURN OFF I/O
E035  JSB ERMS,I    TELL OPERATOR THAT
      DEF DMAE2     LP INTERRUPTED BEFORE DMA 
      JMP DMA,I     RETURN
* 
DMAE2 ASC 17,E035 L.P. INTERRUPTED BEFORE DMA/
* 
INDMA JSB *+1       DMA INTERRUPT 
      NOP 
      CLF 6         CLEAR DMA FLAG FOR PRIORITY STRING
      LDA INLPC     SET L.P. COMPLETION ADDRESS 
SC17  STA CH
      LDA D300      GET MAX OF 300 MILLSEC
      JSB TMRR,I
      CLF INTP      LONG ENOUGH 
E036  JSB ERMS,I    REPORT ERROR
      DEF DMAE3 
      JMP DMA,I     RETURN TO EXEC
* 
DMAE3 ASC 15,E036 L.P. TIMED OUT AFTER DMA
      ASC 05,TRANSFER/
* *
INLPC JSB *+1       L.P. COMPLETION INTERRUPT 
      NOP 
      CLF INTP      TURN OFF INTERRUPTS 
      ISZ FCHR      MOVE TO NEXT CHARACTER
      ISZ TMP       DONE 60 LINES?
      JMP DMA0      NO
      JMP DMA,I     YES RETURN TO EXEC
      SKP 
*              PSEUDO OPERATOR DESIGN 
* 
*              SWITCH REGISTER MEANING
* 
*              0 = OUTPUT CYCLIC PATTERN
*              1 = OUTPUT ONE CHARACTER 
*              2 = OUTPUT CLEAR BUFFER
*              3 = OUTPUT PRINT COMMAND 
*              4 = LOOP ON SECTION
* 
* 
TST07 EQU * 
* 
POD   NOP           ENTRY FROM EXEC 
      LDA .40       SET FIRST 
      STA FCHR      CHARACTER 
      JSB MSGC,I    TELL OPERATOR TO
      DEF PODM      MAKE SWR SELECTION
PODL  OCT 106002    WAIT FOR HIM
      LDB .37 
      JSB SWRT,I    CHECK TO EXIT 
      JMP *+2 
      JMP POD,I     YES-ALL SWITCHES DONWN
      LDB SW0.1     CHECK TO OUTPUT ANY CHARACTERS
      JSB SWRT,I
      JSB PODOT     YES - OUTPUT
      LDA BFCLB 
      LDB SW2       CHECK FOR CLEAR BUFFER
      JSB SWRT,I
SC15  OTA CH        YES 
      CLA 
SC16  OTA CH
      LDB SW3       CHECK TO PRINT
      JSB SWRT,I
      JSB OTCMD     YES 
      LDB SW4       CHECK TO LOOP 
      JSB SWRT,I
      JMP PODL+1    YES 
      JMP PODL      NO HALT 
* 
PODM  ASC 14,H102 MAKE SWR SELECTION FOR
      ASC 08,PSEUDO OPDESIGN/ 
* 
SW0.1 OCT 3 
SW0   OCT 1 
SW1   OCT 2 
SW2   OCT 4 
SW3   OCT 10
SW4   OCT 20
* 
      SKP 
*              OUTPUT TO LP 
* 
* 
PODOT NOP 
      LDB SW1       CHECK IF A'SINGLE CHARACTER 
      JSB SWRT,I
      JMP PODOC     SINGLE CHARACTER
      LDA FCHR
      STA CHR       SET FIRST CHARACTER 
      LDA DM80      SET FOR 80 CHARACTERS 
      STA CNTR
PODO1 LDA CHR       GET CHARACTER 
      CPA LCHR      IS IT LAST CHARACTER
      LDA .40       YES RESET TO FIRST
      STA CHR 
      JSB OTCHR     GIVE IT TO L.P. 
      ISZ CHR       MOVE TO NEXT CHARACTER
      ISZ CNTR      80 CHRS OUT?
      JMP PODO1     NO
      JMP PODOX     INCREMENT CHARACTER 
* 
PODOC LDA DM80      SET FOR 80 CHRS 
      STA CNTR
      LDA FCHR      GET CHARACTER 
      JSB OTCHR     GIVE IT TO LP 
      ISZ CNTR      80 CHRS OUT?
      JMP *-3       NO
      LDB SW0       CHECK TO INCREMENT CHR
      JSB SWRT,I
      JMP *+2       YES 
      JMP PODOT,I 
PODOX LDA FCHR      GET CHARACTER 
      INA           INCREMENT IT
      CPA LCHR      IS IT THE LAST
      LDA .40       YES RESET TO FIRST
      STA FCHR
      JMP PODOT,I   RETURN
* 
* 
FWAA  EQU ZCEND 
* 
      END 
                                                                                                                                                