Google
 

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