Trailing-Edge
-
PDP-10 Archives
-
decuslib10-02
-
43,50303/plot.mac
There are 3 other files named plot.mac in the archive. Click here to see a list.
00010 TITLE PLOT SUBROUTINES - V010 - 05 AUG 68
00020 SUBTTL R C CLEMENTS
00030
00040 ;THIS PACKAGE CONTAINS THE PLOT ROUTINES FOR THE XY10 PLOTTER.
00050 ;THE CALLING SEQUENCE IS THAT USED BY FORTRAN IV
00060 ;
00070 ; MODIFIED TO PERMIT PLOTTING OF SEVERAL TYPES OF DASHED
00080 ; LINES BY DOUG BRACY, THE BROOKINGS INSTITUTION, MAY 1971.
00090
00100 ;THE CALLS ARE:
00110 ; CALL PLOTS (I) OR CALL PLOTS (I,NAME)
00120 ; CALL PLOT (X,Y,PEN)
00130 ; CALL SYMBOL (X,Y,SIZE,BCD,THETA,NBCD)
00140 ; CALL SETABL (TABLE,ANSWER)
00150 ; CALL MKTBL (TABLENUMBER,ADDRESS)
00160 ; CALL WHERE (X,Y)
00170 ; CALL NUMBER (X,Y,SIZE,FPNUM,THETA,FRACTDIGITS)
00180 ;
00190 ; X,Y ARE INCHES FROM ORIGIN, FLT PT
00200 ; SIZE IS CHARACTER HEIGHT, FLT PT, SHOULD BE
00210 ; A MULTIPLE OF .08" IF SMALL
00220 ;
00230 ; THETA IS IN DEGREES, FLT PT.
00240 ; PEN IS
00250 ; 1 - PEN UNCHANGED
00260 ; 2 - PEN DOWN
00270 ; 3 - PEN UP
00280 ; 4 - DASHED LINE PATTERN #1
00290 ; 5 - DASHED LINE PATTERN #2
00300 ; 6 - DASHED LINE PATTERN #3
00310 ; -N = N AND THEN CLEAR X,Y AND OUTPUT
00320
00330 ;PLOTTER COMMANDS (USING CALCOMP'S AXIS CONVENTIONS)
00340
00350 PENUP=40
00360 PENDWN=20
00370 MVLFT=10 ;-X DRUM UP
00380 MVRT=4 ;+X DRUM DOWN
00390 MVDWN=1 ;-Y CARRIAGE RIGHT
00400 MVUP=2 ;+Y CARRIAGE LEFT
00410
00420 ;THE PLOTTER IS ON CHANNEL 17 TO AVOID CONFLICT WITH F4
00430 ;ACCUMULATOR DEFINITIONS
00440
00450 ; 0 ;TEMP USED BY F4LIB
00460 SC=1 ;SCALER IN BRM IN PLOT.
00470 TX=2 ;TEMP FOR X IN PLOT.
00480 TY=3 ;TEMP FOR Y IN PLOT.
00490 ; 4 ;CLOBBERED IN PLOT. BY IDIV
00500 CHAR=5 ;CHARACTER IN SYMBOL
00510 STROKE=6 ;STROKE BYTE POINTER
00520 SCT=7 ;STROKE COUNT
00530 XO=10 ;ORIGIN OF CHAR IN SYMBOL
00540 YO=11 ;ORIGIN OF CHAR IN SYMBOL
00550 TP=12 ;BYTE POINTER TO TEXT
00560 TDX=13 ;TEMP FOR DAT FOR X IN PLOT.
00570 TDY=14 ;TEMP FOR DAT FOR Y IN PLOT.
00580 DAT=15 ;ARGUMENT FOR PLT1,TEMP IN SYMBOL
00590 Q=16 ;JSA AC
00600 P=17 ;PUSHDOWN POINTER
00610
00620 PAGE
00630 PAGE
00640 EXTERN CHAN,CHREL
00650 ENTRY PLOTS
00660
00670 PLOTS: 0
00680 MOVEM 17,SV17
00690 MOVEI 17,SV0
00700 BLT 17,SV0+16
00710 GETCHN: JSP 17,CHAN
00720 JUMP CHNOPN
00730 JRST SNOOZE
00740 DPB TX, [POINT 4,ENT,12]
00750 DPB TX, [POINT 4,OU,12]
00760 DPB TX, [POINT 4,OU1,12]
00770 DPB TX, [POINT 4,OU2,12]
00780 DPB TX, [POINT 4,CLOS,12]
00790 DPB TX, [POINT 4,PENCN1,12]
00800 MOVEM TX,TXSAV
00810 LDB 17, [POINT 9,1(Q),8]; IS THERE A FILENAME ARGUMENT,
00820 CAIE 17, 320 ; SPECIFIED BY A JUMP OPCODE?
00830 JRST SETUP ; NO, USE 'DATA' AS FILENAME
00840 MOVE 1,[POINT 7,@1(Q)]
00850 MOVE 2,[POINT 6,PFNAM]
00860 MOVEI 4,5
00870 PLNAM: ILDB 3,1
00880 SUBI 3,40
00890 IDPB 3,2
00900 SOJG 4,PLNAM
00910 GOTNAM: MOVE 17,SV17
00920 HLLZS PFNAM+1
00930 SETZM PFNAM+2
00940 SETZM PFNAM+3
00950 ENT: ENTER 0,PFNAM ;IN CASE ASSIGNED DSK
00960 JRST FOOP ;CANT ENTER FILE
00970 SETOM PEN ;MARK PEN DOWN TO FORCE RAISE
00980 OU: OUTBUF 0,2 ;SETUP THE BUFFER RING
00990 MOVSI 0,600 ;IMPROVE PACKING
01000 HLLM 0,POB+1 ;BY CHANGING BYTE SIZE
01010 SETZM @0(Q) ;MARK SUCCESS
01020 JSA Q,PLOT ;LIFT PEN
01030 EXP X,Y,[-3] ;MOVE TO HERE, RAISE PEN
01040 JSA Q,PENCNG
01050 EXP [1]
01060 ;
01070 EXTERN OTOA,DATE,TIME
01080 JSA Q,PLOT ;MOVE PEN TO EXTREME RIGHT-HAND SIDE.
01090 EXP [0.0],[-11.0],[-3]
01100 JSA Q,PLOT ;BACK ONE INCH TO THE RIGHT (+Y DIR.)
01110 EXP [0.0],[1.0],[-3]
01120 JSA Q,PLOT ;DRAW LINE TO MARK BEGINNING OF OUTPUT
01130 EXP [0.0],[9.0],[2]
01140 JSA Q,PLOT ;AND RETRACE COMING BACK
01150 EXP [0.0],[0.0],[2]
01160 MOVEI 0,0 ;GET PROJECT, PROGRAMMER NUMBER
01170 CALL 0,[SIXBIT /GETPPN/]
01180 CAI ;SKIP OVER ERROR RETURN
01190 MOVEM 0,PPN
01200 JSA Q,OTOA ;CONVERT TO ASCII
01210 EXP PPN,PPN+1
01220 JSA Q,SYMBOL ;PLOT PROJ,PROG NR
01230 EXP [1.0],[0.0],[0.8],PPN+1,[90.0],[^D11]
01240 MOVE 1,@1(16) ;GET ASCII FILE NAME
01250 MOVEM 1,FNAME
01260 MOVE 2,[ASCII /.PLT /] ;AND EXTENSION
01270 MOVEM 2,FNAME+1
01280 JSA Q,SYMBOL ;PLOT FILE NAME AND EXT.
01290 EXP [2.4],[0.0],[1.0],FNAME,[90.0],[^D9]
01300 JSA Q,DATE ;GET TODAY'S DATE
01310 ARG HEADER
01320 JSA Q,TIME ;GET TIME OF DAY (HH:MM)
01330 ARG HEADER+2
01340 JSA Q,SYMBOL ;PLOT DATE AND TIME
01350 EXP [3.2],[0.0],[0.6],HEADER,[90.0],[^D15]
01360 JSA Q,PLOT ;SPACE OVER A LITTLE AND CALL THAT
01370 EXP [6.0],[-1.],[-3] ; OUR NEW ORIGIN.
01380 JRA Q,1(Q)
01390 ENTRY CPLOT
01400 CPLOT: 0 ;TO CLOSE PLOT FILE
01410 JSA Q,WHERE
01420 EXP SX,SY ;FIND WHERE PEN IS
01430 JSA Q,PLOT ;SET NEW ORIGIN
01440 EXP SX,[0.],[-3]
01450 JSA Q,PLOT ;ADVANCE 4 INCHES.SET NEW ORIGIN
01460 EXP [4.],[0.],[-3]
01470 JSA Q,PLOT
01480 EXP [0.],[1.],[3]
01490 JSA Q,PENCNG
01500 EXP [1]
01510 JSA Q,PLOT ;PLOT LINE
01520 EXP [0.],[9.],[2]
01530 JSA Q,SYMBOL ;PLOT FILE NAME
01540 EXP [.6],[1.],[.3],FNAME,[90.],[^D9]
01550 JSA Q,SYMBOL ;PLOT PPN
01560 EXP [.6],[5.5],[.3],PPN+1,[90.],[^D11]
01570 JSA Q,PLOT ;SET NEW ORIGIN
01580 EXP [4.],[0.],[-3]
01590 CLOS: CLOSE 0,0
01600 MOVE TX,TXSAV
01610 JSP 17,CHREL ;RELEASE CHANNEL
01620 JRA Q,0(Q) ;RETURN
01630
01640 SETUP: MOVE 17,[SIXBIT/DATA/]
01650 MOVEM 17,PFNAM
01660 JRST GOTNAM
01670 ENTRY PENCNG
01680 PENCNG: Z
01690 MOVEM TX,SAVTX
01700 MOVEM DAT,SAVDAT ;SAVE 3 AC'S
01710 MOVEM P,SAVP ;THAT WE USE
01720 MOVE P,PPDP ;SET UP PUSHDOWN POINTER
01730 MOVEI DAT,40 ;RAISE PEN
01740 PUSHJ P,PLT1 ;
01750
01760 PENCN1: OUTPUT 0,0 ;EMPTY OUTPUT BUFFER
01770 AOS TX,POB+1 ;SET OUTPUT BYTE POINTER TO
01780 ;THE CORRECT WORD
01790 SKIPLE DAT,@0(16) ;IF COLOR CODE ARG IS ZERO OR LESS
01800 CAILE DAT,^D12 ; OR GREATER THAN DECIMAL 12
01810 MOVEI DAT,1 ; WE WILL USE THE GOOD OLD STANDARD
01820
01830 MOVNM DAT,0(TX) ; STORE OUR CODE WORD
01840 MOVEI TX,6 ; AND PREPARE TO DECREMENT THE
01850 SUBM TX,POB+2 ; CHARACTER COUNT BY 6
01860
01870 MOVE P,SAVP ; RESTORE THE 3 AC'S WE USED
01880 MOVE DAT,SAVDAT
01890 MOVE TX,SAVTX
01900 JRA 16,1(16) ; RETURN TO CALLER
01910
01920 SAVTX: BLOCK 1
01930 SAVDAT: BLOCK 1
01940 SAVP: BLOCK 1
01950 FOOP: SETOM @0(Q) ;ERROR INDICATION
01960 JRA Q,1(Q) ;RETURN
01970
01980 PFNAM: 0
01990 SIXBIT /PLT/
02000 0
02010 0
02020 ENTRY PLOT
02030
02040 PLOT: 0
02050 MOVEM 17,SV17
02060 MOVEI 17,ARGS-1
02070 PUSH 17,@0(Q) ;SVX
02080 PUSH 17,@1(Q) ;SVY
02090 PUSH 17,@2(Q) ;SVPEN
02100 MOVEI 17,SV0
02110 BLT 17,SV0+16 ;SAVE AC'S
02120 MOVE P,PPDP ;PLOT PUSHDOWN POINTER
02130 PUSHJ P,PLOT. ;DO WORK
02140 MOVSI 17,SV0
02150 BLT 17,17
02160 JRA Q,3(Q) ;RETURN TO CALLER
02170
02180 PLT1: SOSG POB+2
02190 OU2: OUTPUT 0,0
02200 IDPB DAT,POB+1
02210 POPJ P,0
02220
02230 PAGE
02240 ENTRY PLOT.
02250 EXTERN INT
02260 PLOT.:
02270 PENCK: MOVM TX,SVPEN
02280 CAIG TX,1
02290 JRST PENOK
02300 SUBI TX,3
02310 CAMN TX,PEN
02320 JRST PENOK
02330 MOVEI DAT,PENUP
02340 SKIPE TX ;USED TO BE SKIPGE - CHANGED BY DB
02350 ; FOR DASH PATTERNS
02360 MOVEI DAT,PENDWN
02370 PUSHJ P,PLT1
02380 MOVEM TX,PEN
02390 PENOK: MOVE TX,SVX
02400 FMPR TX,STPSIZ
02410 FADR TX,[DEC 0.5]
02420 JSA Q,INT
02430 JUMP 2,TX
02440 MOVEM 0,ISX ;NUMBER OF STEPS IN X DIRECTION
02450 MOVE TX,0
02460 MOVE TY,SVY
02470 FMPR TY,STPSIZ
02480 FADR TY,[DEC 0.5]
02490 JSA Q,INT
02500 JUMP 2,TY
02510 MOVEM 0,ISY ;NUMBER OF STEPS IN Y DIRECTION
02520 MOVE TY,0
02530 SUB TX,IX
02540 MOVEI TDX,MVLFT
02550 SKIPL TX
02560 MOVEI TDX,MVRT ;TDX HOLDS COMMAND TO MOVE LEFT
02570 ; (DELTA X < 0) OR RIGHT (DELTA X > 0)
02580 SUB TY,IY
02590 MOVEI TDY,MVDWN
02600 SKIPL TY
02610 MOVEI TDY,MVUP ;TDY HOLDS COMMAND TO MOVE DOWN
02620 ; (DELTA-Y < 0) OR UP (DELTA-Y > 0)
02630 MOVMS TX
02640 MOVMS TY
02650 CAMG TY,TX ;EXCHANGE IF NECESSARY SO TX HAS MOVES
02660 ; IN MAJOR DIRECTION, TY IN MINOR.
02670 JRST NOSWAP
02680 EXCH TX,TY
02690 EXCH TDX,TDY
02700 NOSWAP: MOVEI SC,0
02702 JUMPE TX,ENDOU1 ; NO MOTION
02710 JUMPE TY,NORM
02730 NY: TLNE TY,200000
02740 JRST NX
02750 LSH TY,1
02760 TRO TY,1
02770 AOJA SC,NY
02780 NX: SUBI SC,^D34
02790 MKSC: IDIV TY,TX
02800 MOVNS SC
02810 LSH TY,0(SC)
02820 NORM: MOVEM TY,STEP
02830 MOVEI TY,0
02840 IOR TDY,TDX
02850 MOVM SC,SVPEN ;GET PEN CODE - 3
02860 SUBI SC,3
02870 SKIPLE SC
02880 MOVE TP,PATTRN-1(SC) ;GET PATTERN TO BE USED.
02890 INLOOP: ADD TY,STEP
02900 MOVE DAT,TDX
02910 TLZE TY,200000
02920 MOVE DAT,TDY
02930 PUSHJ P,PLT1
02940 SKIPLE SC ;IF DASHED LINE, CALL ROUTINE TO
02950 PUSHJ P,DOT ; MAYBE RAISE/LOWER PEN.
02960 SOJG TX,INLOOP
02970
02980 MOVE TY,ISX
02990 MOVEM TY,IX
03000 MOVE TY,SVX
03010 MOVEM TY,X
03020 MOVE TY,ISY
03030 MOVEM TY,IY
03040 MOVE TY,SVY
03050 MOVEM TY,Y
03060 ENDOU1: SKIPL SVPEN
03070 JRST ENDOUT
03080 OU1: OUTPUT 0,0
03090 SETZM X
03100 SETZM Y
03110 SETZM IX
03120 SETZM IY
03130 ENDOUT: SETZM SVPEN
03140 SKIPLE SC ;WAS THIS A DASHED LINE?
03142 CAILE SC,3
03144 SKIPA
03150 MOVEM TP,PATTRN-1(SC) ;IF SO, SAVE PATTERN FOR NEXT TIME
03160 POPJ P,0
03170 DOT: ROT TP,1 ;ROTATE TP TO GET NEXT BIT.
03180 SKIPL TP ;IS BIT SET?
03190 POPJ P, ;NO. FORGET IT.
03200 SKIPE PEN ;PEN UP?
03210 JRST RAISE ;NO. GO RAISE IT.
03220 MOVEI DAT,PENDWN ;YES. LOWER IT.
03230 PUSHJ P,PLT1
03240 SETOM PEN ;MARK IT AS DOWN.
03250 POPJ P, ;BACK TO MAIN LOOP.
03260 RAISE: MOVEI DAT,PENUP ;RAISE PEN COMMAND
03270 PUSHJ P,PLT1
03280 SETZM PEN ;MARK IT AS UP
03290 POPJ P, ;BACK TO MAIN LOOP.
03300 PAGE
03310 ENTRY SYMBOL
03320 EXTERN SIND,COSD
03330 SYMBOL: 0
03340 MOVEM 17,SV17
03350 MOVEI 17,ARGS-1
03360 PUSH 17,@0(Q) ;SVX
03370 PUSH 17,@1(Q) ;SVY
03380 MOVEI 17,SVSZ-1
03390 PUSH 17,@2(Q) ;SVSZ
03400 PUSH 17,3(Q) ;SVTXT
03410 PUSH 17,@4(Q) ;SVOR
03420 PUSH 17,@5(Q) ;SVNTXT
03430 MOVEI 17,SV0
03440 BLT 17,SV0+16 ;SAVE AC'S
03450 MOVE P,PPDP
03460 JSA Q,COSD
03470 JUMP 2,SVOR
03480 MOVEM 0,COSOR
03490 JSA Q,SIND
03500 JUMP 2,SVOR
03510 MOVEM 0,SINOR
03520 MOVEI TX,3
03530 MOVEM TX,SVPEN ;PEN UP
03540 PUSHJ P,PLOT. ;MOVE TO X,Y SUPPLIED
03550 SKIPG SVSZ
03560 JRST ENDTXT ;SIZE MUST BE >0
03570 MOVE TP,SVTXT
03580 HRLI TP,440700 ;POINTER TO ASCII
03590 LP1: SOSGE SVNTXT
03600 JRST ENDTXT
03610 ILDB CHAR,TP ;GET TEXT CHAR
03620 MOVSI STROKE,440500 ;SET UP FOR SYM STROKES
03630
03640 ;FOLLOWING TWO LOCATIONS ARE MODIFIED TO GET DIFFERENT
03650 ;CHARACTER SETS.
03660 T1M: HRR STROKE,TBL1(CHAR)
03670 T2M: HLRZ SCT,TBL1(CHAR) ;NUMBER OF STROKES
03680 JUMPE SCT,LP1 ;UNDEFINED CHAR
03690 MOVE XO,X
03700 MOVE YO,Y ;ORIGIN OF THE CHARACTER
03710 OUT1: ILDB TX,STROKE ;1 FOR MARK, 0 FOR BLANK
03720 MOVNS TX
03730 ADDI TX,3
03740 MOVEM TX,SVPEN
03750 ILDB TX,STROKE
03760 ILDB TY,STROKE
03770 SUBI TY,6 ;OFFSET FOR VERTICAL
03780 FSC TX,230 ;FLOAT AND DIVIDE BY 8
03790 FSC TY,230 ;"
03800 FMPR TX,SVSZ
03810 FMPR TY,SVSZ
03820 MOVE DAT,TX
03830 FMPR DAT,COSOR
03840 MOVN 0,TY
03850 FMPR 0,SINOR
03860 FADR 0,DAT
03870 FADR 0,XO
03880 MOVEM 0,SVX
03890 MOVE DAT,TY
03900 FMPR DAT,COSOR
03910 MOVE 0,TX
03920 FMPR 0,SINOR
03930 FADR 0,DAT
03940 FADR 0,YO
03950 MOVEM 0,SVY
03960 PUSHJ P,PLOT.
03970 SOJG SCT,OUT1
03980 JRST LP1
03990
04000 ENDTXT: MOVSI 17,SV0
04010 BLT 17,17 ;RESTORE AC'S
04020 JRA Q,6(Q) ;RETURN TO CALLER
04030 PAGE
04040 ;FORMAT OF CHARACTER TABLE IS: LEFT HALF, NUMBER OF LINE
04050 ;SEGMENTS IN CHARACTER. RIGHT HALF, ADDRESS OF BYTE TABLE
04060 ;DESCRIBING SEGMENTS
04070 TBL1:
04080 XWD 0,0 ;CHARACTER TABLE
04090 XWD 6,T11
04100 XWD 11,T12
04110 XWD 17,T13
04120 XWD 4,T14
04130 XWD 4,T15
04140 XWD 13,T16
04150 XWD 7,T17
04160 XWD 5,T110
04170 XWD 13,T111
04180 XWD 15,T112
04190 XWD 11,T113
04200 XWD 7,T114
04210 XWD 16,T115
04220 XWD 14,T116
04230 XWD 14,T117
04240 XWD 7,T120
04250 XWD 7,T121
04260 XWD 7,T122
04270 XWD 7,T123
04280 XWD 6,T124
04290 XWD 6,T125
04300 XWD 15,T126
04310 XWD 11,T127
04320 XWD 3,T130
04330 XWD 6,T131
04340 XWD 4,T132
04350 XWD 6,T133
04360 XWD 5,T134
04370 XWD 5,T135
04380 XWD 7,T136
04390 XWD 4,T137
04400 XWD 1,T140
04410 XWD 5,T141
04420 XWD 5,T142
04430 XWD 11,T143
04440 XWD 17,T144
04450 XWD 23,T145
04460 XWD 14,T146
04470 XWD 3,T147
04480 XWD 5,T150
04490 XWD 4,T151
04500 XWD 11,T152
04510 XWD 5,T153
04520 XWD 7,T154
04530 XWD 3,T155
04540 XWD 6,T156
04550 XWD 2,T157
04560 XWD 14,T160
04570 XWD 4,T161
04580 XWD 12,T162
04590 XWD 14,T163
04600 XWD 5,T164
04610 XWD 13,T165
04620 XWD 13,T166
04630 XWD 4,T167
04640 XWD 21,T170
04650 XWD 13,T171
04660 XWD 13,T172
04670 XWD 14,T173
04680 XWD 4,T174
04690 XWD 5,T175
04700 XWD 4,T176
04710 XWD 12,T177
04720 XWD 23,T1100
04730 XWD 5,T1101
04740 XWD 14,T1102
04750 XWD 11,T1103
04760 XWD 7,T1104
04770 XWD 7,T1105
04780 XWD 5,T1106
04790 XWD 13,T1107
04800 XWD 6,T1110
04810 XWD 7,T1111
04820 XWD 10,T1112
04830 XWD 7,T1113
04840 XWD 4,T1114
04850 XWD 5,T1115
04860 XWD 4,T1116
04870 XWD 12,T1117
04880 XWD 7,T1120
04890 XWD 14,T1121
04900 XWD 11,T1122
04910 XWD 13,T1123
04920 XWD 5,T1124
04930 XWD 7,T1125
04940 XWD 4,T1126
04950 XWD 6,T1127
04960 XWD 4,T1130
04970 XWD 6,T1131
04980 XWD 5,T1132
04990 XWD 5,T1133
05000 XWD 3,T1134
05010 XWD 5,T1135
05020 XWD 6,T1136
05030 XWD 6,T1137
05040 XWD 3,T1140
05050 XWD 16,T1141
05060 XWD 12,T1142
05070 XWD 11,T1143
05080 XWD 14,T1144
05090 XWD 13,T1145
05100 XWD 10,T1146
05110 XWD 16,T1147
05120 XWD 7,T1150
05130 XWD 7,T1151
05140 XWD 7,T1152
05150 XWD 6,T1153
05160 XWD 3,T1154
05170 XWD 14,T1155
05180 XWD 7,T1156
05190 XWD 12,T1157
05200 XWD 13,T1160
05210 XWD 13,T1161
05220 XWD 6,T1162
05230 XWD 13,T1163
05240 XWD 10,T1164
05250 XWD 10,T1165
05260 XWD 4,T1166
05270 XWD 6,T1167
05280 XWD 4,T1170
05290 XWD 6,T1171
05300 XWD 5,T1172
05310 XWD 10,T1173
05320 XWD 3,T1174
05330 XWD 10,T1175
05340 XWD 5,T1176
05350 XWD 4,T1177
05360 RADIX 10
05370 ;FORMAT OF BYTE TABLE: BYTE COME IN TRIPLES. FIRST IS
05380 ;0 FOR PEN UP, 1 PEN DOWN. SECOND IS X COORDINATE OF OTHER
05390 ;END OF SEGMENT. THIRD IS SAME FOR Y. CHARACTER ASSUMED
05400 ;TO START AT (0,6)
05410 T11: BYTE (5) 0,0,9,1,3,6,1,3,14,0,3,6,1,6,9,0,8,6
05420 T12: BYTE (5) 0,6,6,1,3,9,1,1,9,1,0,8,1,0,7,1,1,6,1,3,6
05430 BYTE (5) 1,6,9,0,8,6
05440 T13: BYTE (5) 1,2,8,1,2,13,1,3,14,1,5,14,1,6,13,1,6,12,1,5,11
05450 BYTE (5) 1,2,11,0,5,11,1,6,10,1,6,9,1,5,8,1,3,8,1,2,9
05460 BYTE (5) 0,8,6
05470 T14: BYTE (5) 0,0,8,1,3,11,1,6,8,0,8,6
05480 T15: BYTE (5) 0,1,10,1,5,10,1,5,8,0,8,6
05490 T16: BYTE (5) 0,3,9,1,2,10,1,1,10,1,0,9,1,0,7,1,1,6,1,2,6
05500 BYTE (5) 1,3,7,0,2,8,1,0,8,0,8,6
05510 T17: BYTE (5) 0,0,10,1,6,10,0,4,10,1,4,6,0,2,6,1,2,10,0,8,6
05520 T110: BYTE (5) 1,3,9,0,0,11,1,1,11,1,6,6,0,8,6
05530 T111: BYTE (5) 0,0,11,1,1,12,1,2,12,1,5,9,1,5,7,1,4,6,1,3,6
05540 BYTE (5) 1,2,7,1,2,8,1,6,12,0,8,6
05550 T112: BYTE (5) 0,2,10,1,1,10,1,0,9,1,0,7,1,1,6,1,3,6,1,4,7
05560 BYTE (5) 1,4,9,1,3,10,1,2,10,1,2,12,1,4,12,0,8,6
05570 T113: BYTE (5) 0,0,7,1,1,6,1,2,6,1,3,7,1,3,12,1,4,13,1,5,13
05580 BYTE (5) 1,6,12,0,8,6
05590 T114: BYTE (5) 0,0,9,1,4,9,0,2,11,1,2,7,0,0,7,1,4,7,0,8,6
05600 T115: BYTE (5) 0,0,8,1,0,7,1,1,6,1,3,6,1,4,7,1,4,9,1,3,10
05610 BYTE (5) 1,1,10,1,0,9,1,0,8,1,4,8,0,2,10,1,2,6,0,8,6
05620 T116: BYTE (5) 0,0,10,1,1,9,1,2,9,1,4,11,1,5,11,1,6,10,1,5,9
05630 BYTE (5) 1,4,9,1,2,11,1,1,11,1,0,10,0,8,6
05640 T117: BYTE (5) 0,4,8,1,3,9,1,1,9,1,0,8,1,0,7,1,1,6,1,3,6
05650 BYTE (5) 1,4,7,1,4,10,1,2,12,1,1,12,0,8,6
05660 T120: BYTE (5) 0,3,11,1,1,11,1,0,10,1,0,8,1,1,7,1,3,7,0,8,6
05670 T121: BYTE (5) 0,0,11,1,2,11,1,3,10,1,3,8,1,2,7,1,0,7,0,8,6
05680 T122: BYTE (5) 0,0,10,1,0,8,1,1,7,1,3,7,1,4,8,1,4,10,0,8,6
05690 T123: BYTE (5) 0,0,7,1,0,9,1,1,10,1,3,10,1,4,9,1,4,7,0,8,6
05700 T124: BYTE (5) 0,0,14,1,3,6,1,6,14,0,1,11,1,5,11,0,8,6
05710 T125: BYTE (5) 1,6,6,1,6,14,1,0,14,0,2,10,1,6,10,0,8,6
05720 T126: BYTE (5) 1,4,10,0,0,10,1,4,6,0,3,6,1,1,6,1,0,7,1,0,9
05730 BYTE (5) 1,1,10,1,3,10,1,4,9,1,4,7,1,3,6,0,8,6
05740 T127: BYTE (5) 0,2,8,1,0,10,1,2,12,0,0,10,1,6,10,0,4,12,1,6,10
05750 BYTE (5) 1,4,8,0,8,6
05760 T130: BYTE (5) 0,0,5,1,4,5,0,0,6
05770 T131: BYTE (5) 0,0,10,1,6,10,0,3,13,1,6,10,1,3,7,0,8,6
05780 T132: BYTE (5) 0,2,16,1,3,17,1,4,16,0,0,6
05790 T133: BYTE (5) 1,6,12,0,0,10,1,6,10,0,0,8,1,6,8,0,8,6
05800 T134: BYTE (5) 1,3,6,0,3,7,1,0,10,1,3,13,0,8,6
05810 T135: BYTE (5) 1,3,6,0,0,7,1,3,10,1,0,13,0,8,6
05820 T136: BYTE (5) 0,0,7,1,6,7,0,6,9,1,0,9,0,0,11,1,6,11,0,8,6
05830 T137: BYTE (5) 0,0,11,1,3,8,1,6,11,0,8,6
05840 T140: BYTE (5) 0,8,6
05850 T141: BYTE (5) 0,2,6,1,2,7,0,2,8,1,2,13,0,8,6
05860 T142: BYTE (5) 0,2,12,1,2,14,0,4,14,1,4,12,0,8,6
05870 T143: BYTE (5) 0,2,7,1,2,13,0,4,13,1,4,7,0,6,9,1,0,9,0,0,11
05880 BYTE (5) 1,6,11,0,8,6
05890 T144: BYTE (5) 0,0,8,1,2,6,1,4,6,1,6,8,1,4,10,1,2,10,1,0,12
05900 BYTE (5) 1,2,14,1,4,14,1,6,12,0,4,14,1,4,6,0,2,6,1,2,14
05910 BYTE (5) 0,8,6
05920 T145: BYTE (5) 1,6,12,1,1,12,1,0,11,1,0,10,1,1,9,1,2,9,1,3,10
05930 BYTE (5) 1,3,11,1,2,12,0,4,9,1,3,8,1,3,7,1,4,6,1,5,6
05940 BYTE (5) 1,6,7,1,6,8,1,5,9,1,4,9,0,8,6
05950 T146: BYTE (5) 0,6,6,1,1,11,1,1,13,1,2,14,1,3,14,1,4,13,1,0,9
05960 BYTE (5) 1,0,7,1,1,6,1,3,6,1,5,8,0,8,6
05970 T147: BYTE (5) 0,2,12,1,4,14,0,8,6
05980 T150: BYTE (5) 0,2,6,1,0,8,1,0,12,1,2,14,0,8,6
05990 T151: BYTE (5) 1,2,8,1,2,12,1,0,14,0,8,6
06000 T152: BYTE (5) 0,0,8,1,4,12,0,2,12,1,2,8,0,4,8,1,0,12,0,0,10
06010 BYTE (5) 1,4,10,0,8,6
06020 T153: BYTE (5) 0,2,7,1,2,11,0,0,9,1,4,9,0,8,6
06030 T154: BYTE (5) 0,3,6,1,3,7,1,2,7,1,2,6,1,3,6,1,2,5,0,8,6
06040 T155: BYTE (5) 0,0,9,1,4,9,0,8,6
06050 T156: BYTE (5) 0,2,6,1,3,6,1,3,7,1,2,7,1,2,6,0,8,6
06060 T157: BYTE (5) 1,6,12,0,8,6
06070 T160: BYTE (5) 0,0,7,1,6,13,0,6,12,1,4,14,1,2,14,1,0,12,1,0,8
06080 BYTE (5) 1,2,6,1,4,6,1,6,8,1,6,12,0,8,6
06090 T161: BYTE (5) 0,1,12,1,3,14,1,3,6,0,8,6
06100 T162: BYTE (5) 0,0,12,1,0,13,1,1,14,1,5,14,1,6,13,1,6,11,1,0,7
06110 BYTE (5) 1,0,6,1,6,6,0,8,6
06120 T163: BYTE (5) 0,0,13,1,1,14,1,5,14,1,6,13,1,6,12,1,4,10,1,6,8
06130 BYTE (5) 1,6,7,1,5,6,1,1,6,1,0,7,0,8,6
06140 T164: BYTE (5) 0,5,6,1,5,14,1,0,9,1,6,9,0,8,6
06150 T165: BYTE (5) 0,0,7,1,1,6,1,4,6,1,6,8,1,6,9,1,5,10,1,1,10
06160 BYTE (5) 1,0,9,1,0,14,1,6,14,0,8,6
06170 T166: BYTE (5) 0,0,9,1,1,10,1,5,10,1,6,9,1,6,7,1,5,6,1,1,6
06180 BYTE (5) 1,0,7,1,0,10,1,4,14,0,8,6
06190 T167: BYTE (5) 0,0,14,1,6,14,1,1,6,0,8,6
06200 T170: BYTE (5) 0,1,10,1,0,9,1,0,7,1,1,6,1,5,6,1,6,7,1,6,9
06210 BYTE (5) 1,5,10,1,6,11,1,6,13,1,5,14,1,1,14,1,0,13,1,0,11
06220 BYTE (5) 1,1,10,1,5,10,0,8,6
06230 T171: BYTE (5) 0,2,6,1,6,10,1,6,13,1,5,14,1,1,14,1,0,13,1,0,11
06240 BYTE (5) 1,1,10,1,5,10,1,6,11,0,8,6
06250 T172: BYTE (5) 0,2,6,1,3,6,1,3,7,1,2,7,1,2,6,0,2,10,1,3,10
06260 BYTE (5) 1,3,11,1,2,11,1,2,10,0,8,6
06270 T173: BYTE (5) 0,3,6,1,3,7,1,2,7,1,2,6,1,3,6,1,2,5,0,2,10
06280 BYTE (5) 1,3,10,1,3,11,1,2,11,1,2,10,0,8,6
06290 T174: BYTE (5) 0,3,7,1,0,10,1,3,13,0,8,6
06300 T175: BYTE (5) 0,0,8,1,6,8,0,6,10,1,0,10,0,8,6
06310 T176: BYTE (5) 0,0,7,1,3,10,1,0,13,0,8,6
06320 T177: BYTE (5) 0,1,13,1,2,14,1,4,14,1,5,13,1,5,12,1,3,10,1,3,8
06330 BYTE (5) 0,3,7,1,3,6,0,8,6
06340 T1100: BYTE (5) 0,1,6,1,0,7,1,0,11,1,1,12,1,5,12,1,6,11,1,6,8
06350 BYTE (5) 1,5,7,1,4,8,1,4,11,0,4,10,1,3,11,1,2,11,1,1,10
06360 BYTE (5) 1,1,9,1,2,8,1,3,8,1,4,9,0,8,6
06370 T1101: BYTE (5) 1,3,14,1,6,6,0,1,9,1,5,9,0,8,6
06380 T1102: BYTE (5) 1,0,14,1,5,14,1,6,13,1,6,11,1,5,10,1,0,10,0,5,10
06390 BYTE (5) 1,6,9,1,6,7,1,5,6,1,0,6,0,8,6
06400 T1103: BYTE (5) 0,6,13,1,5,14,1,2,14,1,0,12,1,0,8,1,2,6,1,5,6
06410 BYTE (5) 1,6,7,0,8,6
06420 T1104: BYTE (5) 1,0,14,1,4,14,1,6,12,1,6,8,1,4,6,1,0,6,0,8,6
06430 T1105: BYTE (5) 1,0,14,1,6,14,0,4,10,1,0,10,0,0,6,1,6,6,0,8,6
06440 T1106: BYTE (5) 1,0,14,1,6,14,0,4,10,1,0,10,0,8,6
06450 T1107: BYTE (5) 0,6,13,1,5,14,1,2,14,1,0,12,1,0,8,1,2,6,1,4,6
06460 BYTE (5) 1,6,8,1,6,10,1,4,10,0,8,6
06470 T1110: BYTE (5) 1,0,14,0,6,14,1,6,6,0,0,10,1,6,10,0,8,6
06480 T1111: BYTE (5) 0,1,6,1,5,6,0,3,6,1,3,14,0,1,14,1,5,14,0,8,6
06490 T1112: BYTE (5) 0,1,7,1,2,6,1,3,6,1,4,7,1,4,14,0,2,14,1,6,14
06500 BYTE (5) 0,8,6
06510 T1113: BYTE (5) 0,1,6,1,1,14,0,1,10,1,5,14,0,1,10,1,5,6,0,8,6
06520 T1114: BYTE (5) 1,0,14,0,0,6,1,6,6,0,8,6
06530 T1115: BYTE (5) 1,0,14,1,3,11,1,6,14,1,6,6,0,8,6
06540 T1116: BYTE (5) 1,0,14,1,6,6,1,6,14,0,8,6
06550 T1117: BYTE (5) 0,0,8,1,0,12,1,2,14,1,4,14,1,6,12,1,6,8,1,4,6
06560 BYTE (5) 1,2,6,1,0,8,0,8,6
06570 T1120: BYTE (5) 1,0,14,1,5,14,1,6,13,1,6,11,1,5,10,1,0,10,0,8,6
06580
06590 T1121: BYTE (5) 0,0,8,1,0,12,1,2,14,1,4,14,1,6,12,1,6,8,1,4,6
06600 BYTE (5) 1,2,6,1,0,8,0,4,8,1,6,6,0,8,6
06610 T1122: BYTE (5) 1,0,14,1,5,14,1,6,13,1,6,11,1,5,10,1,0,10,0,2,10
06620 BYTE (5) 1,6,6,0,8,6
06630 T1123: BYTE (5) 0,0,8,1,2,6,1,4,6,1,6,8,1,4,10,1,2,10,1,0,12
06640 BYTE (5) 1,2,14,1,4,14,1,6,12,0,8,6
06650 T1124: BYTE (5) 0,3,6,1,3,14,0,0,14,1,6,14,0,8,6
06660 T1125: BYTE (5) 0,0,14,1,0,7,1,1,6,1,5,6,1,6,7,1,6,14,0,8,6
06670 T1126: BYTE (5) 0,0,14,1,3,6,1,6,14,0,8,6
06680 T1127: BYTE (5) 0,0,14,1,0,6,1,3,9,1,6,6,1,6,14,0,8,6
06690 T1130: BYTE (5) 1,6,14,0,0,14,1,6,6,0,8,6
06700 T1131: BYTE (5) 0,0,14,1,3,11,1,6,14,0,3,11,1,3,6,0,8,6
06710 T1132: BYTE (5) 0,0,14,1,6,14,1,0,6,1,6,6,0,8,6
06720 T1133: BYTE (5) 0,3,4,1,0,4,1,0,14,1,3,14,0,8,6
06730 T1134: BYTE (5) 0,0,12,1,6,6,0,8,6
06740 T1135: BYTE (5) 0,0,4,1,3,4,1,3,14,1,0,14,0,8,6
06750 T1136: BYTE (5) 0,0,11,1,3,14,1,6,11,0,3,14,1,3,6,0,8,6
06760 T1137: BYTE (5) 0,3,7,1,0,10,1,3,13,0,0,10,1,6,10,0,8,6
06770 T1140: BYTE (5) 0,2,14,1,4,12,0,8,6
06780 T1141: BYTE (5) 0,0,9,1,1,10,1,3,10,1,4,9,1,4,6,0,4,8,1,3,9
06790 BYTE (5) 1,1,9,1,0,8,1,0,7,1,1,6,1,3,6,1,4,7,0,8,6
06800 T1142: BYTE (5) 1,0,13,0,0,9,1,1,10,1,3,10,1,4,9,1,4,7,1,3,6
06810 BYTE (5) 1,1,6,1,0,7,0,8,6
06820 T1143: BYTE (5) 0,4,9,1,3,10,1,1,10,1,0,9,1,0,7,1,1,6,1,3,6
06830 BYTE (5) 1,4,7,0,8,6
06840 T1144: BYTE (5) 0,0,7,1,0,9,1,1,10,1,3,10,1,4,9,1,4,7,1,3,6
06850 BYTE (5) 1,1,6,1,0,7,0,4,6,1,4,13,0,8,6
06860 T1145: BYTE (5) 0,4,7,1,3,6,1,1,6,1,0,7,1,0,9,1,1,10,1,3,10
06870 BYTE (5) 1,4,9,1,4,8,1,0,8,0,8,6
06880 T1146: BYTE (5) 0,2,6,1,2,12,1,3,13,1,4,13,1,5,12,0,0,11,1,4,11
06890 BYTE (5) 0,8,6
06900 T1147: BYTE (5) 0,4,9,1,3,10,1,1,10,1,0,9,1,0,7,1,1,6,1,3,6
06910 BYTE (5) 1,4,7,0,4,10,1,4,5,1,3,4,1,1,4,1,0,5,0,8,6
06920 T1150: BYTE (5) 1,0,13,0,0,9,1,1,10,1,3,10,1,4,9,1,4,6,0,8,6
06930 T1151: BYTE (5) 0,3,12,1,3,11,0,3,10,1,3,7,1,4,6,1,5,6,0,8,6
06940 T1152: BYTE (5) 0,3,12,1,3,11,0,3,10,1,3,5,1,2,4,1,1,4,0,8,6
06950 T1153: BYTE (5) 1,0,13,0,0,8,1,2,10,0,0,8,1,2,6,0,8,6
06960 T1154: BYTE (5) 0,2,6,1,2,13,0,8,6
06970 T1155: BYTE (5) 1,0,10,0,0,9,1,1,10,1,2,10,1,3,9,1,3,6,0,3,9
06980 BYTE (5) 1,4,10,1,5,10,1,6,9,1,6,6,0,8,6
06990 T1156: BYTE (5) 1,0,10,0,0,9,1,1,10,1,2,10,1,3,9,1,3,6,0,8,6
07000 T1157: BYTE (5) 0,0,7,1,0,9,1,1,10,1,3,10,1,4,9,1,4,7,1,3,6
07010 BYTE (5) 1,1,6,1,0,7,0,8,6
07020 T1160: BYTE (5) 0,0,4,1,0,10,0,0,9,1,1,10,1,3,10,1,4,9,1,4,7
07030 BYTE (5) 1,3,6,1,1,6,1,0,7,0,8,6
07040 T1161: BYTE (5) 0,4,9,1,3,10,1,1,10,1,0,9,1,0,7,1,1,6,1,3,6
07050 BYTE (5) 1,4,7,0,4,10,1,4,4,0,8,6
07060 T1162: BYTE (5) 1,0,10,0,0,9,1,1,10,1,3,10,1,4,9,0,8,6
07070 T1163: BYTE (5) 0,0,7,1,1,6,1,3,6,1,4,7,1,3,8,1,1,8,1,0,9
07080 BYTE (5) 1,1,10,1,3,10,1,4,9,0,8,6
07090 T1164: BYTE (5) 0,2,13,1,2,7,1,3,6,1,4,6,1,5,7,0,1,11,1,3,11
07100 BYTE (5) 0,8,6
07110 T1165: BYTE (5) 0,0,10,1,0,7,1,1,6,1,3,6,1,4,7,1,4,10,1,4,6
07120 BYTE (5) 0,8,6
07130 T1166: BYTE (5) 0,0,10,1,2,6,1,4,10,0,8,6
07140 T1167: BYTE (5) 0,0,10,1,0,6,1,2,8,1,4,6,1,4,10,0,8,6
07150 T1170: BYTE (5) 1,4,10,0,0,10,1,4,6,0,8,6
07160 T1171: BYTE (5) 0,0,10,1,2,6,0,4,10,1,1,4,1,0,4,0,8,6
07170 T1172: BYTE (5) 0,0,10,1,4,10,1,0,6,1,4,6,0,8,6
07180 T1173: BYTE (5) 0,3,14,1,2,13,1,2,11,1,0,9,1,2,7,1,2,5,1,3,4
07190 BYTE (5) 0,8,6
07200 T1174: BYTE (5) 0,2,4,1,2,14,0,8,6
07210 T1175: BYTE (5) 0,0,14,1,1,13,1,1,11,1,3,9,1,1,7,1,1,5,1,0,4
07220 BYTE (5) 0,8,6
07230 T1176: BYTE (5) 0,2,16,1,3,17,1,4,16,1,5,17,0,0,6
07240 T1177: BYTE (5) 0,1,16,1,4,16,1,4,15,0,0,6
07250 RADIX 8
07260 LIST
07270 ;END OF BYTE TABLES
07280 PAGE
07290 PAGE
07300 PAGE
07310 ;ROUTINE TO ALLOW USE OF DIFFERENT CHARACTER
07320 ;TABLE
07330 ENTRY SETABL
07340
07350 SETABL: 0
07360 MOVEM 17,SV17 ;GET NUMBER OF DESIRED TABLE
07370 MOVE 17,@(Q)
07380 SETZM @1(Q)
07390 JUMPLE 17,NOGO
07400 CAILE 17,12
07410 JRST NOGO
07420 MOVE 17,CTBL-1(17)
07430 JUMPE 17,NOGO ;NO SUCH TABLE
07440 HRRM 17,T1M ;RESET PARAMETERS IN SYMBOL
07450 HRRM 17,T2M
07460 SKIPA
07470 NOGO: SETOM @1(Q)
07480 MOVE 17,SV17 ;GIVE ERROR INDICATION
07490 JRA Q,2(Q)
07500 CTBL: EXP TBL1 ;LINE PRINTER CHARACTER SET
07510 EXP 0 ;RUSSIAN OR 0 IF NOT LOADED
07520 EXP 0 ;FAENORIAN OR 0 IF NOT LOADED
07530 EXP 0,0,0,0,0,0,0
07540 ;ROUTINE TO ALLOW NEW TABLE TO BE CREATED
07550 ;GIVEN NUMBER AND POINTER TO NEW TABLE
07560 ENTRY MKTBL
07570
07580 MKTBL: 0
07590 MOVEM 17,SV17
07600 MOVE 17,@(Q)
07610 CAIG 17,12
07620 SKIPG 17
07630 JRST FOOT
07640 MOVEM 17,SVTB
07650 MOVE 17,SV17
07660 MOVE 17,@1(Q)
07670 EXCH 1,SVTB
07680 MOVEM 17,CTBL-1(1) ;PUT IN POINTER
07690 SKIPA 1,SVTB
07700 FOOT: SETZM @0(Q)
07710 MOVE 17,SV17
07720 JRA Q,2(Q)
07730 ;ROUTINE TO GIVE BACK CURRENT X,Y POSITION
07740 ENTRY WHERE
07750
07760 WHERE: 0
07770 MOVEM 17,SV17 ;SAVE AC'S
07780 MOVEI 17,SV0
07790 BLT 17,SV0+16
07800 MOVE 1,1(Q)
07810 MOVEM 1,SVY
07820 MOVE 1,SV0+1
07830 MOVE 1,(Q)
07840 MOVE 2,X
07850 CAIG 1,17 ;IF ONE OF AC'S SPECIFIED
07860 ;PUT IT IN THE TEMP STORAGE LOCATION
07870 ADDI 1,SV0
07880 MOVEM 2,(1)
07890 MOVE 1,SVY
07900 MOVE 2,Y
07910 CAIG 1,17
07920 ADDI 1,SV0
07930 MOVEM 2,(1)
07940 HRLZI 17,SV0
07950 BLT 17,17
07960 JRA Q,2(Q)
07970 PAGE
07980 EXTERN IFIX,FLOAT,EXP2.0
07990 ENTRY NUMBER
08000
08010 NUMBER: 0
08020 MOVEM 17,SV17N
08030 MOVEI 17,NARGS-1
08040 PUSH 17,@0(Q) ;SVXN
08050 PUSH 17,@1(Q) ;SVYN
08060 PUSH 17,@2(Q) ;SVSZN
08070 PUSH 17,@3(Q) ;SVFN
08080 PUSH 17,@4(Q) ;SVORN
08090 PUSH 17,@5(Q) ;SVNN
08100 MOVEI 17,SV0N
08110 BLT 17,SV0N+2 ;SAVE AC'S
08120 MOVE P,PNPDP
08130 JSA Q,PLOT
08140 EXP SVXN,SVYN,[3]
08150 MOVSI 1,264000
08160 SKIPGE SVFN
08170 PUSHJ P,DECP2
08180 MOVMS SVFN
08190 SKIPGE 1,SVNN
08200 MOVEI 1,0
08210 MOVNS 1
08220 MOVSI 0,(10.0)
08230 PUSHJ P,EXP2.0
08240 MOVEM 0,T2
08250 FSC 0,-1
08260 FADRB 0,SVFN ;ROUND IN FIRST INSIGNIFICANT DIGIT
08270 FDVR 0,T2 ;SCALE TO AN INTEGER
08280 MOVEM 0,TEMP
08290 JSA Q,IFIX
08300 JUMP 0,TEMP ;AN INTEGER INTEGER
08310 MOVEM 0,UNITS
08320 PUSHJ P,DECPLT
08330 MOVSI 1,270000
08340 SKIPN SVNN ;NEED A DEC. PT. IN ONE CASE
08350 PUSHJ P,DECP2
08360 ENDNUM: MOVSI 17,SV0N
08370 BLT 17,2
08380 MOVE 17,SV17N
08390 JRA Q,6(Q)
08400 DECPLT: MOVM 1,UNITS
08410 SETZM DIGITS
08420 DECP3: IDIVI 1,12
08430 HRLM 2,0(P)
08440 AOS DIGITS
08450 SKIPE 1
08460 PUSHJ P,DECP3
08470 MOVE 0,DIGITS
08480 CAMLE 0,SVNN
08490 JRST DECP4
08500 MOVSI 1,270000
08510 PUSHJ P,DECP2 ;PLOT A "."
08520 CAML 0,SVNN
08530 JRST DECP4A
08540 DECP5: MOVSI 1,300000 ;A ZERO
08550 PUSHJ P,DECP2
08560 AOS 1,DIGITS
08570 CAMGE 1,SVNN
08580 JRST DECP5
08590 DECP4A: SETOM SVNN ;FAKE OUT TEST NEXT TIME AROUND
08600 DECP4: SOS DIGITS
08610 HLRZ 1,0(P)
08620 TRO 1,60
08630 ROT 1,-7
08640 DECP2: MOVEM 1,TEMP
08650 JSA Q,SYMBOL
08660 JUMP 2,X
08670 JUMP 2,Y
08680 JUMP 2,SVSZN
08690 JUMP 2,TEMP
08700 JUMP 2,SVORN
08710 JUMP 0,[1]
08720 POPJ P,0
08730 PAGE
08740 ;ALL SORTS TEMPS AND STUFF
08750
08760 POB: BLOCK 3
08770 PPDP: XWD -6,.
08780 BLOCK 6
08790 PNPDP: XWD -15,.
08800 BLOCK 15
08810 ARGS: ;ARGUMENT STORAGE - DO NOT REARRANGE
08820 SVX: 0
08830 SVY: 0
08840 SVPEN: 0
08850 SVSZ: 0
08860 SVTXT: 0
08870 SVOR: 0
08880 SVNTXT: 0
08890 SV0: BLOCK 17
08900 SV17: 0
08910 SV0N: BLOCK 3
08920 SV17N: 0
08930 NARGS:
08940 SVXN: 0
08950 SVYN: 0
08960 SVSZN: 0
08970 SVFN: 0
08980 SVORN: 0
08990 SVNN: 0
09000 X: 0
09010 Y: 0
09020 PEN: 0
09030 STEP: 0
09040 UNITS: 0
09050 DIGITS: 0
09060 TEMP: 0
09070 T2: 0
09080 SVTB: 0
09090 COSOR: 0
09100 SINOR: 0
09110 ISX: 0
09120 ISY: 0
09130 IX: 0
09140 IY: 0
09150
09160 INTERN STPSIZ
09170 STPSIZ: DEC 100.0 ;STEPS PER INCH
09180 PATTRN: OCT 400004400004 ;LONG DASH
09190 OCT 505050505050 ;SHORTER DASH
09200 OCT 400430400430 ;LONG AND SHORT PATTERN
09210
09220 HEADER: REPEAT 4,<ASCII/ />
09230 PPN: BLOCK 4
09240 FNAME: BLOCK 4
09250 SX: 0
09260 SY: 0
09270 TXSAV: 0
09280 CHNOPN: 13
09290 SIXBIT/DSK/
09300 XWD POB,0
09310 SNOOZE: MOVEI SC,1
09320 CALL SC,[SIXBIT/SLEEP/]
09330 JRST GETCHN
09340 END