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