ZBS52 STF SC          CARD
      STF INTP      AND INTERRUPTS
      STC 1         * 
      STF 1         * 
      CLC 1         * 
      CLF 1         *  NO INTERRUPT 
      JMP *+1,I     *  SHOULD OCCUR 
      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 4
      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 SC        TURN OFF SC FLAG
      JMP ZBIO6     GO TO NEXT SECTION
* 
ZBD5  DEF ZBF5-1
ZBD5A DEF ZBF5+1
* 
ZBE12 ASC 16,E012 INT DURING HOLD OFF INSTR/
ZBE13 ASC 12,E013 SECOND INT OCURRED/ 
ZBE14 ASC 06,E014 NO INT/ 
ZBE15 ASC 12,E015 INT RTN ADDR ERROR/ 
ZBE26 ASC 13,E026 INT EXECUTION ERROR/
      SKP 
ZBI5  NOP 
      CLF INTP      TURN I/O SYSTEM OFF 
      LDA ZBD5      CHECK TO SEE IF ALL 
      CPA ZBF5          INSTRUCTIONS 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 P
      CLF INTP      TURN I/O SYSTEM OFF 
E013  JSB ERMS,I    E013 SECOND INT OCURRED 
      DEF ZBE13 
      SKP 
*         CLC SC AND  CLC 0 
* 
ZBIO6 JSB ZTCJI     SET JSB INSTRUCTION 
      DEF ZBI61 1~
ZBS61 STC SC        SET SC CONTROL
ZBS62 STF SC        SET SC FLAG 
      STF INTP      TURN ON INTERRUPTS
ZBS63 CLC SC        CLEAR SC CONTROL
      NOP           GIVE IT A CHANCE
      NOP 
      CLF INTP      TURN INTS OFF 
ZB60  JSB ZTCJI     SET JSB INSTRUCTION 
      DEF ZBI62 
ZBS64 CLF SC        CLEAR SC FLAG 
ZBS65 STC SC        SET SC CONTROL
ZBS66 STF SC        SET SC 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 SC 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 SC 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 SC        CLEAR SC 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 INTPS
ZBS72 SFS SC        CHECK SELECT CODE 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 3H
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 3H
E020  JSB ERMS,I    E020 FLAG NOT SET 
      DEF ZBE20 
      RAR 
      SLA,RSS 
      JMP *+3 
E021  JSB ERMS,I    E021 DID NOT DISABLE 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 5]
      DEF ZBS66 
      DEF ZBS71 
      DEF ZBS72 
      DEC -1
* *
ZCEND EQU * 
      SKP 
      ORG 140B
IOIP  DEF IOID      POINTER TO I/O INSTRUCTIONS 
TSTP  DEF TSTD      POINTER TO TESTS LIST 
HDMP  DEF HDMS      POINTER TO HEADER MESSAGE 
STDA  OCT 17
STDB  OCT 0 
* 
      ORG 150B
HDMS  EQU * 
      ASC 18,CALCOMP PLOTTER DIAGNOSTIC/
* 
IOID  EQU * 
      DEF PEN01 
      DEF PEN02 
      DEF PEN03 
      DEC -1
* 
TSTD  EQU * 
      DEF TST00     BASIC I/O 
      DEF TST01     TIME CHECKS 
      DEF TST02     OCTAGON 
      DEF TST03     OVERDRAW
      DEF TST04     PSEUDO OPDESIGN 
      DEC -1
      SKP 
*        TIME CHECKS (ONE SHOTS)
*        2.9/4.5 MS AND 60 MS 
* 
* 
TST01 EQU * *f
* 
TMCK  NOP 
      CLA           OUTPUT A NULL 
      JSB PEN         TO GET SHORTER ONE SHOT 
      SSA           ERROR?
      JMP TMCK0     YES TRY 60
      ADA N5
      LDB USSC      CHECK IF LARGE PLOTTER
      SSB 
      ADA N3        YES THEN LONGER TIME
      SSA,RSS       GREATER THAN 2.5(4.0) 
      JMP *+4       YES 
E031  JSB ERMS,I    NO REPORT ERROR 
      DEF MS031 
      JMP TMCK0     DO OTHER ONE SHOT 
      ADA N3
      SSA            OVER 3.5(5.0)? 
      JMP *+3 
E032  JSB ERMS,I    YES REPORT ERROR
      DEF MS032 
TMCK0 LDA PENDN     OUTPUT PEN DOWN 
      JSB PEN 
      SSA           ERROR?
      JMP TMCK,I    YES RETURN
      ADA N100
      SSA,RSS       GREATER THAN 50 MS? 
      JMP *+4       YES 
E033  JSB ERMS,I    NO REPORT ERROR 
      DEF MS033 
      JMP TMCK,I    RETURN
      ADA N40 
      SSA           OVER 70 MS? 
      JMP TMCK,I    NO OK RETURN
E034  JSB ERMS,I    YES REPORT ERROR
      DEF MS034 
      JMP TMCK,I    RETURN TO EXEC
* 
N5    DEC -5
N3    DEC -3
N100  DEC -100
N40   DEC -40 
MS031 ASC 18,E031 2.9(4.5)MS ONE SHOT TOO SHORT/
MS032 ASC 17,E032 2.9(4.5)MS ONE SHOT TOO LONG/ 
MS033 ASC 15,E033 60MS ONE SHOT TOO SHORT/
MS034 ASC 15,E034 60MS ONE SHOT TOO LONG/ 
      SKP 
*              OCTAGON PATTERN
*              DRAWS DECREASING CONCENTRIC OCTAGONS 
* 
TST02 EQU * 
* 
OCT   NOP 
      LDA PENUP 
      JSB PEN       LIFT PEN AND MOVE 
      LDA VUHR        UP AND RIGHT
      LDB INIC      USE INITIALIZE COUNT
      JSB PLOT      GO TO STARTING POINT
      LDA HL        MOVE IN JUST A LITTLE 
      LDB D10        TO AVOID PERFORATION 
      JSB PLOT
      LDA SIZE      GET STARTING SIZE 
      STA LINE      SAVE LINE LENGTH
OCTL  CCB,RSS       DRAW A SOLID LINE 
      LDB ALT       THEN A DOTTED LINE
      STB TYPE
      JSB DRAW      DO IT 
      LDA PENUP 
      JSB PEN N
      LDA HL        MOVE PEN IN 
      LDB DEC 
      BLS 
      JSB PLOT
      LDA VDHL        AND DOWN TO 
      LDB DEC 
      JSB PLOT             NEXT OCTAGON 
      LDA DEC 
      ALS 
      CMA,INA 
      ADA LINE      DECREASE OCTAGON SIZE 
      STA LINE
      SZA,RSS       FINISHED? 
      JMP OCT,I     YES EXIT
      LDB TYPE      CHANGE LINE TYPE
      CPB ALT       IF PREVIOUS WAS DOTED 
      JMP OCTL        USE SOLID 
      INB,SZB       IF PREVIOUS WAS SOLID 
      JMP OCTL+1
      JMP OCTL+2      USE NO LINE 
      SKP 
*              OCTAGON PATTERN
*              DRAWS DECREASING OCTAGONS
*              WITH THE SAME ORIGIN 
* 
TST03 EQU * 
* 
OCTX  NOP P
      LDA PENUP 
      JSB PEN       LIFT PEN AND MOVE 
      LDA VUHR        UP AND RIGHT
      LDB INIC      USE INITIALIZE COUNT
      JSB PLOT      GO TO STARTING POINT
      LDA HL        MOVE IN JUST A LITTLE 
      LDB D10        TO AVOID PERFORATION 
      JSB PLOT
      LDA SIZE      GET STARTING SIZE 
      STA LINE      SAVE LINE LENGTH
OCTXL CCB           DRAW A SOLID LINE 
      JSB DRAW      DO IT 
      LDA DEC 
      ALS 
      CMA,INA 
      ADA LINE      DECREASE OCTAGON SIZE 
      STA LINE
      SZA           DONE? 
      JMP OCTXL     NO
      LDA PENUP     YES LIFT PEN AND EXIT 
      JSB PEN 
      JMP OCTX,I
      SKP 
*     PSEUDO OPDESIGN 
*     SWR 
*     BIT     MEANING 
*      0      DRUM DOWN +X AXIS (VERTICAL UP) 
*      1      DRUM UP   -X AXIS (VERTICAL DOWN) 
*      2      CARRIAGE LEFT  +Y AXIS (HORIZONTAL LEFT)
*      3      CARRIAGE RIGHT -Y AXIS (HORIZONTAL RIGHT) 
*      4      PEN UP
*      5      PEN DOWN
*      6      LOOP ON SELECTION 
* 
TST04 EQU * 
* 
OPDSN NOP P
      JSB MSGC,I    TELL OPERATOR TO
      DEF MS035       MAKE SWR SELECTION PRESS RUN
H035  HLT 35B       WAIT FOR OPERATOR 
      LDB .177      CHECK IF ANY SELECTION
      JSB SWRT,I    ? 
      RSS 
      JMP OPDSN,I   NO SELECTION EXIT 
      LDA B 
      AND .77       ISOLATE COMMANDS
      JSB PEN       DO IT(THEM) 
      LDB BIT6      CHECK FOR LOOP
      JSB SWRT,I
      JMP *-5       YES 
      JMP H035      NO HALT AGAIN 
* 
MS035 ASC 19,H035 MAKE SWR SELECTION FOR OPDESIGN/
.177  OCT 177 
.77   OCT 77
BIT6  OCT 100 
      SKP 
*              THIS ROUTINE DRAWS AN OCTAGON
* 
*              A-REG. = SIDE "LINE" LENGTH
*              B-REG. = LINE TYPE 0= NO LINE
*                                -1= SOLID LINE 
*                             52525= -------- 
* 
DRAW  NOP 
      STA DRAWC     SAVE LENGTH 
      STB DRAWT       AND TYPE OF LINE
      JSB DRAWL     DRAW ONE LINE 
VD    OCT 2         VERTICAL DOWN 
      JSB DRAWL 
VDHL  OCT 6         VERTICAL DOWN + HORIZONTAL LEFT 
      JSB DRAWL 
HL    OCT 4         HORIZONTAL LEFT 
      JSB DRAWL 
HLVU  OCT 5         HORIZONTAL LEFT + VERTICAL UP 
      JSB DRAWL 
VU    OCT 1         VERTICAL UP 
      JSB DRAWL 
VUHR  OCT 11        VERTICAL UP + HORIZONTAL RIGHT
      JSB DRAWL 
HR    OCT 10        HORIZONTAL RIGHT
      JSB DRAWL 
HRVD  OCT 12        HORIZONTAL RIGHT + VERTICAL DOWN
      JMP DRAW,I
      SKP 
*              THIS ROUTINE DRAWS ONE LINE OF 
*              AN OCTAGON.
* 
*                JSB DRAWL
*                OCT XX       DIRECTION 
* 
* 
DRAWL NOP 
      LDA DRAWC     GET LENGTH
      CMA,INA         MAKE NEGATIVE 
      LDB DRAWT     GET TYPE
      STA WORK      SAVE LENGTH AND 
      STB WORK+1      TYPE IN WORK AREA 
DRWL0 LDA PENUP     START WITH PEN UP 
      SLB           SHOULD IT BE DOWN?
      LDA PENDN       YES 
      JSB PEN 
DRWL1 LDA DRAWL,I   GET DIRECTION OF LINE 
      LDB DASH        AND DASH LENGTH 
      JSB PLOT      DRAW IT 
      LDA WORK
      ADA DASH      SUBTRACT FROM TOTAL LENGTH
      LDB WORK+1    ROTATE DASH FLAG BIT
      RBR 
      SSA           DONE WITH LINE? 
      JMP *+3       NO DRAW ANOTHER PART
      ISZ DRAWL     YES - ADJUST RETURN 
      JMP DRAWL,I   AND RETURN
      STA WORK      SAVE LENGTH 
      STB WORK+1      AND TYPE
      SZB,RSS       IF NO LINE DONT CHANGE PEN
      JMP DRWL1 
      CPB .M1       IF SOLID LINE DONT CHANGE PEN 
      JMP DRWL1 
      JMP DRWL0 
* 
* 
PLOT  NOP 
      STA PLOTC 
      CMB,INB       MAKE LINE LENGTH NEG. 
      STB PLOTM       SAVE IT 
      JSB PEN       DRAW DOT
      LDA PLOTC     RESTORE COMMAND 
      ISZ PLOTM     DONE ALL? 
      JMP *-3       NO
      JMP PLOT,I    YES RETURN
      SKP 
*              OUTPUT ROUTINE 
* 
*              LDA CMD
*              JSB PEN
* 
PEN   NOP 
      STA PENC      SAVE COMMAND
      LDB BIT9      CHECK FOR ABORT 
      JSB SWRT,I
      JMP EXRT,I    YES - RETURN TO EXEC
      LDA PENIJ     PUT "JSB" IN
PEN01 STA SC          TRAP CELL 
      LDB PENC      GET COMMAND 
      LDA PENT        AND TIME
      STF INTP      TURN ON INTERRUPTS
PEN02 OTB SC        OUTPUT COMMAND
PEN03 STC SC,C      START ONE-SHOT
      JSB TMRR,I    WAIT FOR COMPLETION 
      CLF INTP      TOO LONG
      LDA PENC      GET COMMAND FOR DISPLAY 
E030  JSB ERMS,I    REPORT ERROR
      DEF MS030     FLAG DID NOT RESPOND
      CCA           INDICATE ERROR
      CLB 
      JMP PEN,I 
* 
PENI  NOP           INTERRUPTED 
      CLF INTP      TURN OFF INTERRUPTS 
      ADA PENT      CALCULATE 
      ALS             TIME WITHIN 
      CMB,INB            .5 MILL SEC
      BLS 
      ADB TMC 
      SSB 
      INA 
      JMP PEN,I 
      SKP 
MS030 ASC 11,E030 FLAG DID NOT SET/ 
PENIJ JSB PENI
PENT  DEC 100 0
PENUP OCT 20
PENDN OCT 40
BIT9  OCT 1000
ALT   OCT 125252
D10   DEC 10
.M1   DEC -1
INIS  DEC 1300      SMALL PLOTTER INITIALIZE COUNT
SIZES DEC 360       SMALL PLTR STARTING LINE LENGTH 
DECS  DEC 20
DASHS DEC 8 
INIC  ABS 0 
SIZE  ABS 0 
DEC   ABS 0 
DASH  ABS 0 
TYPE  ABS 0 0
DRAWC ABS 0 
DRAWT ABS 0 
LINE  ABS 0 
WORK  ABS 0 
      ABS 0 
PLOTC ABS 0 
PLOTM ABS 0 
PENC  ABS 0 
FWAA  EQU ZCEND 
      END 
                                                                                                    