File: XYPLOT.RA of Tape: Various/Decus/decus-4
(Source file text) 

/XYPLOT - FOR PLOTTING TO DISK
/
/MODIFICATION OF DEC'S <XYPLOT> TO USE A
/DISK FILE AS AN INTERMEDIATE OUTPUT DEVICE FOR
/PLOTS.  PLOTS CAN THEN BE PLOTTED FROM DISK IN
/BACKGROUND MODE WHILE OTHER FORTRAN PROGRAMS
/ARE RUNNING.  FOR INSTRUCTIONS, SEE WRITE-UP.
/
/	BY R. W. PHELPS
/	  DEPT. RAD. BIOL. & BIOPHYSICS
/	  UNIVERSITY OF ROCHESTER MEDICAL CENTER
/	  ROCHESTER, NY  14642
/
/	IT WAS NECESSARY TO MODIFY AND REASSEMBLE THIS
/WHOLE PROGRAM INCLUDING THE ROUTINE <SYMBOL> BECAUSE
/DEC WROTE THESE ROUTINES WITH COMMON VARIABLES AND
/SPECIAL ENTRY POINTS.  
/
/
	SECT	XYPLOT
	JA	#ST
#XR,	ORG	.+10
	TEXT	+XYPLOT+
#RET,	SETX	#XR
	SETB	#BASE
	JA	.+3
#BASE,	ORG	.+6
XX,	ORG	.+3
YY,	ORG	.+3
PENX,	ORG	.+3
FACT,	ORG	.+3
INC,	ORG	.+3
	ORG	#BASE+30
	FNOP
	JA	#RET
	FNOP
#GOBAK,	0;0
#ARGS,	ORG	.+3
FACTR,	ORG	.+0003
INX,	ORG	.+0003
XXX,	F 0.0
YYY,	F 0.0
ZZZ,	F 0.0
BIASX,	F 0.0
BIASY,	F 0.0
#TMP,	ORG	.+0011
#LIT,	0001
	2000
	0000
	0002
	3000
	0000
	0003
	3000
	0000
	0004
	2200
	0000
	F 0.0		/OFFSET
	JA BUFFER-0003
BUFFER,	ORG .+0377
#RTN,	BASE	#BASE
	JA	#GOBAK
#ST,	STARTD
	0210
	FSTA	#GOBAK,0
	0200
	SETX	#XR
	SETB	#BASE
	LDX	0,1
	FSTA	#BASE
	FSTA	#ARGS
	FLDA%	#BASE,1+
	FSTA	XX
	FLDA%	#BASE,1+
	FSTA	YY
	FLDA%	#BASE,1+
	FSTA	PENX
	STARTF
	FLDA%	XX
	FSTA XXX
	FADD BIASX
	FMUL	FACTR
	FDIV	INX
	FADD	#LIT+0014
	ATX 5		/LOAD X PARAMETER FOR OUTPUT
	FLDA%	YY
	FSTA YYY
	FADD BIASY
	FMUL	FACTR
	FDIV	INX
	FADD	#LIT+0014
	ATX 6		/LOAD Y PARAMETER FOR OUTPUT
	FLDA%	PENX
	FSTA ZZZ
	ATX 7		/LOAD PEN PARAMETER FOR OUTPUT
	JGE #L002	/JUMP IF PEN CONTROL IS +
	FADD #LIT+3	/F 3.0
	JNE #L001	/PEN CONTROL NOT -3
	FLDA XXX	/PEN CONTROL = -3 -- RESET BIAS
	FADD BIASX
	FSTA BIASX
	FLDA YYY
	FADD BIASY
	FSTA BIASY
	LDX 3,7		/NOW TREAT AS +3 PEN CONTROL
	JA #L002
/
#L001,	FCLA		/PEN CONTROL NEG. BUT NOT -3
	FSTA BIASX	/ASSUME FRAME CONTROL
	FSTA BIASY
	LDX -3,7
/
#L002,	FLDA #XR+5	/GET PACKED WORD FOR OUTPUT
	FSTA BUFFER-27401,2	/STORE IN NEXT BUFFER LOC
	XTA 7
	JLT #G000	/SKIP REST OF PAGE IF FRAME END
	JXN #RTN,2+		/RETURN IF BUFFER NOT FULL
/
	EXTERN #WUO
#G000,	TRAP3 #WUO	/OPEN UNFORMATTED FILE
	JA #LIT+0011	/UNIT 9
	LDX -0125,1	/NUMBER OF ENTRYS
#G001,	FLDA BUFFER-27401,1	/GET NEXT ENTRY
	EXTERN #RSVO
	TRAP3 #RSVO	/OUTPUT IT
	JXN #G001,1+	/REPEAT 85 TIMES
	EXTERN #RENDO
	TRAP3 #RENDO	/CLOSE FILE
PROTC,	TRAP3 #WUO	/OUTPUT END OF PLOT CODE
	JA #LIT+11
	FCLA
	TRAP3 #RSVO
	TRAP3 #RENDO
	FLDA #LIT+11	/THEN BACKSPACE OVER IT
	EXTERN #BAK
	TRAP3 #BAK
	LDX -0125,2	/RESET COUNTER
	JA	#RTN
/
/
ENTRY	PLOTS
PLOTS,	STARTD
	0210
	FSTA #GOBAK,0
	0200
	SETX	#XR
	SETB	#BASE
	FSTA	#BASE
	FSTA	#ARGS
	LDX	1,1
	FLDA%	#BASE,1
	FSTA	INC
	STARTF
	LDX -0125,2	/SET UP COUNTER TO START
	FLDA%	INC
	FSTA	INX
	FLDA	#LIT+0000
	FSTA	FACTR
	FCLA
	FSTA BIASX
	FSTA BIASY	/INITIALIZE BIAS
	JA	PROTC	/PROTECT FROM PLOT START IF NOTHING
			/WRITTEN IN THE FILE

/
/
ENTRY PLEXIT
PLEXIT,	STARTD
	0210
	FSTA #GOBAK,0
	SETB	#BASE
	SETX	#XR
	STARTF
	FCLA		/FORCE PLOT TERMINATION
	FSTA BUFFER-27401,2
	JA #G000	/WRITE OUT FINAL BUFFER
/
/
ENTRY FACTOR
FACTOR,	STARTD
	0210
	FSTA #GOBAK,0
	0200
	SETX #XR
	SETB #BASE
	FSTA #BASE
	FSTA #ARGS
	LDX 1,1
	FLDA% #BASE,1
	FSTA FACT
	STARTF
	FLDA% FACT
	FSTA FACTR
	JA #RTN
ENTRY WHERE
WHERE,	STARTD
	210
	FSTA #GOBAK,0
	200
	SETX #XR
	SETB #BASE
	LDX 0,1
	FSTA #BASE
	FSTA #ARGS
	FLDA% #BASE,1+
	FSTA XX
	FLDA% #BASE,1+
	FSTA YY
	FLDA% #BASE,1+
	FSTA PENX
	STARTF
	FLDA XXX
	FSTA% XX
	FLDA YYY
	FSTA% YY
	FLDA ZZZ
	FSTA% PENX
	JA #RTN
/
/	COPYRIGHT 1973
/	DIGITAL EQUIPMENT CORPORATION
/	MAYNARD, MASSACHUSETTS 01754
/
/	PLOTTER ROUTINES FOR OS/8 FORTRAN 4
/
/
	FIELD1	PDPPLT
/
/MODIFIED BY R. W. PHELPS
/		RADIATION BIOL & BIOPHYSICS
/		UNIV. OF ROCHESTER
/
/	WILL USE AN INDEPENDENT PROGRAM <XYPLOT> SO THAT
/	PLOT FILES CAN BE WRITTEN TO DISK AND PLOTTED AS
/	A BACKGROUND JOB DURING OTHER FORTRAN JOBS, EITHER
/	REAL-TIME OR NORMAL.
/
/	DEC DID NOT WRITE THESE ROUTINES TO BE TAKEN APART --
/	PROBABLY TO MAKE THINGS HARD FOR MODIFICATION --
/	BUT I HAVE TRIED TO DO SO WITHOUT COMPLETELY REWRITING
/	THEM.  EXCUSE THE KLUDGES.
	ORG	.+20		/SKIP INDEX REGISTERS
/THESE ROUTINES GET THE PLOTTING CODES WITHIN A LETTER
/PASS THEM AS X,Y PAIRS FOR PLOT ROUTINE
LEFT,	0
	JMS	GETXYS		/GET A LEFT HAND X,Y PAIR
	RTR
	RTR
	RTR
	JMS	PASSXY
	CDF	CIF
	JMP%	LEFT
P7,	7
PASSXY,	0
	DCA	LETCD2		/SAVE XY PAIR
	TAD	LETCD2
	CLL	RTR
	RAR			/GET IN LO 3 BITS
	AND	P7
	DCA	LETCD1		/PASS X VALUE
	TAD	LETCD2		/NOW FOR THE Y PART
	AND	P7
	DCA	LETCD2		/PASS THE Y VALUE
	JMP%	PASSXY
RIGHT,	0			/GET A RIGHT HAND X,Y PAIR
	JMS	GETXYS
	JMS	PASSXY
	CDF	CIF
	JMP%	RIGHT
LETCOD,	0
LETCD1,	0
LETCD2,	0
/THIS RTN GETS XY PAIRS FROM THE PACKED SEQ FOR EACH LETTER
GETXYS,	0
	TAD	LETCOD
	CLL
	TAD	LOCNPT		/START OF LETTER CODE
	DCA	LETCD2		/UPDATE PTR TO LETTER
	RAL			/IF LINK SET,CROSSED FIELDS
				/SO UPDATE FIELD POINTER
	TAD	LOCNFL		/FIELD PASSED FROM FINDIT RTN
	CLL	RTL
	RAL
	TAD	CDFINS
	DCA	NFLD
NFLD,	0			/SET FIELD
	TAD%	LETCD2		/GET PLOTTING CODES
	CDF	10
	JMP%	GETXYS
CDFINS,	6201
LOCNFL,	0			/FIELD
LOCNPT,	0
	ORG LEFT+200-20
NXTLCN,
PLETPS,	ADDR	LOCNPT		/POINTS TO START OF CODE FOR PASSED LETTER
COUNT,				/COUNT OF STEPS INTO CHAR PLOTTING CODE TABLE

PLCNM1,	ADDR	LOCNFL		/USED TO PASS FIELD
TXTADR,	0
	0
	0			/ADDRESS OF PACKED 6 BIT LETTERS TO PRINT
LETTER,	0
PSYMB,	ADDR	SYMTBL
PP7,	7
/THESE ROUTINES DETERMINE THE START OF PLOTTING CODES FOR A CHAR
/PASSED AS A HOLLERITH (6 BIT) FROM SYMBOL RTN.
/FIND LOCN OF START OF PLOT VECTORS
/FOR LEFT HALF OF 2 6BIT CHARACTERS
FINDLF,	0		
	TAD	TXTADR+1	/DO FIELD STUFF
	AND	PP7
	CLL RTL
	RAL
	TAD	CDF
	DCA	DOCDF
DOCDF,	NOP
	TAD%	TXTADR+2	/GET 2 6-BIT VALUES
	CDF	10
	DCA	LETTER
	CLL
	TAD	LETTER		/MOVE LEFT CHAR
	RTR
	RTR
	RTR
	AND	P77		/INTO RIGHTMOST 6 BITS
	JMS	FINDIT
	ISZ	TXTADR+2	/PREPARE FOR NEXT CHAR TO LEFT
	JMP 	FLDOK		/IF SKIPS,THEN AT FIELD BOUNDARY
	ISZ	TXTADR+1	/SO UPDATE FIELD ALSO
FLDOK,	CDF CIF
	JMP%	FINDLF
FINDIT,	0			/GET LOCN OF LETTER IN SYMBOL TABLE
	SPA	SNA		/CHECK FOR 0
	TAD	P40		/WHICH DEFAULTS TO SPACE
	CIA	CLL		/MAKE A COUNTER
	DCA	TXTADR
	DCA	COUNT		/ZERO TOTAL STEP COUNTER
	TAD	PTRTBL+1
	DCA	NXTLCN		/POINTS TO LOCN IN POINTER TABLE
/THIS TBL HAS STEPS FOR EACH LETTER, SO COUNT TOTAL STEPS TO 
/DESIRED LETTER

	TAD	PTRTBL
	CLL RTL
	RAL
	TAD CDF
	DCA	SCANTB
SCANTB,	NOP
	TAD%	NXTLCN		/GET NEXT STEP COUNT
	CDF	10
	TAD	COUNT		/AND ADD IT TO TOTAL STEP COUNT
	DCA	COUNT
	ISZ	NXTLCN		/BUMP POINTER
	SKP			/SKIP IF DIDN'T CROSS BOUNDARIES
	TAD	P10		/IT DID.UPDATE FIELD WORD
	TAD	SCANTB
	DCA	SCANTB
	ISZ	TXTADR
	JMP	SCANTB		/NOT THERE YET
	CLL
	TAD	COUNT		/ADD COUNT TO
	TAD	PSYMB+1		/START OF CODE TABLE
	DCA%	PLETPS+1	/NOW ITS CORRECT PTR
	RAL			/IF LINK SET,CROSSED FLD BOUNDS
	TAD	PSYMB		/GET FIELD OF TABLE
	DCA%	PLCNM1+1	/PASS IT
	JMP%	FINDIT		/GOT THE LETTER
P40,	40
P77,	77
PTRTBL,	ADDR	SYMCNT
CDF,	6201
P10,	10
FINDRT,	0
	TAD	LETTER		/LEFT FROM LAST LEFT LETTER
	AND	P77
	JMS	FINDIT
	CDF CIF
	JMP%	FINDRT
/ROUTINE TO HANDLE NUMBERS FROM FORTRAN SUBR NUMBER
/NOT CALLED BY USER DIRECTLY
PASNUM,	0
	TAD	TXTADR
	IAC
	SNA
	JMP USZRO		/IF EQ -1, USE 0
	TAD	T2
	SPA			/L.T. -3 BAD
	JMP	USZRO		/SO USE 0
	TAD	M15
	SPA CLA			/G.T. 9 BAD TOO
	JMP	USEIT		/IT'S -3,-2,0-9
USZRO,	CLA
INDEX,	TAD	P60		/INDEX INTO TABLE
	JMS	FINDIT
	CDF CIF
	JMP%	PASNUM
USEIT,	TAD	TXTADR
	JMP	INDEX
/PLOT AN INTEGER EQUIV OR CENTERED (100-117 DEC = 144-165 OCT)
PASINT,	0		
	TAD	TXTADR
	SPA SNA			/L.T. 0 NO GOOD
	JMP	USSPAC
	TAD	M166		/G.T. 117 DEC. BAD
	SMA 
	JMP	USSPAC
	TAD	A22
	SMA
	JMP	OKVAL		/ITS A CENTERED 100-121 (144-165)
	TAD	P44
	SMA	CLA
	JMP	USSPAC		/64-99 DEC (100-143 OCT) ILLEGAL
	TAD	TXTADR
ACHAR,	JMS	FINDIT
	CDF CIF
	JMP%	PASINT
USSPAC,	CLA 
	TAD	P40		/DEFAULT TO SPACE
	JMP	ACHAR
OKVAL,	TAD	P100		/PASS CENTEREDS AS 100-121
	JMP	ACHAR
P100,	100
A22,	22
P44,	44
M166,	-166
P60,	60
M15,	-15
T2,	2
#PLSTR,	JA	.		/SAVE 2 WORDS FOR RETURN
	JA	#XPLOT
	TEXT	+XYPLOT+
PLOTXR,	SETX	XRPLOT
	SETB	BPPLOT
BPPLOT,	FNOP
	0
	0
XRPLOT,	0		/MULTI PURPOSE XRS
XR1,	0	
XR2,	0	
TERM2,	0
XR4,	0
XR5,	0
YPT,	F 0.			/VALUE ACTUALLY PLOTTED
XPT,	F 0.
TERM1,	F 0.			
ARG1,	F 0.
YDIFF,	F 0.			/PEN VALUE
	ORG 10*3+BPPLOT
	FNOP
	JA	PLOTXR
	0
PLTRTN,	JA	.
PEN,	F 2.0
P1,	F 1.
PF2,	F 2.
P3,	F 3.
P4,	F 4.
PF7,	F 7.
XCHRPT,	F 0.			/X,Y VALUES FROM PDP TABLES
YCHRPT,	F 0.
NUMENT,	F 0.		/INDICATES ENTRY FROM NUMBER SUBRTN
COSANG,	F 0.
SINANG,	F 0.
DEGRAD,	F 0.017453293		/RADIANS TO DEGRRES
F100,	F 100.
CENTSY,	F 0.			/CENTERED SYMBOL INDICATOR	
NUMSYM,	F 0.			/NO. OF CHARS TO PLOT
ANGADJ,	F 0.
X0,	F 0.0
Y0,	F 0.0
	BASE 0
#XPLOT,	STARTD
	FLDA	10*3		/SAVE CALLER'S NEXT LOCN
	FSTA	PLTRTN
	FLDA	0
	SETX	XRPLOT		/GET POINTER TO START OF CALLER'S ARG LIST
	SETB	BPPLOT
	BASE	BPPLOT
	LDX	1,1
	FSTA	ARG1
	JA	#PLSTR
	SECT	SYMBOL
	EXTERN	SIN
	EXTERN	COS
	JSA	#PLSTR
SYM1,	FLDA%	ARG1,1
	FSTA	XPT		/X POINT
	FLDA%	ARG1,1+
	FSTA	YPT		/Y VALUE
	FLDA%	ARG1,1+
	FSTA	YDIFF		/HEIGHT
	FLDA%	ARG1,1+
	FSTA	TERM1		/TEXT
	FLDA%	ARG1,1+
	FSTA	TERM2		/ANGLE
	FLDA%	ARG1,1+
	FSTA	ARG1		/NUMBER CHARS.
	STARTF
	FLDA%	TERM2
	FMUL	DEGRAD		/CONVERT TO RADIANS
	FSTA	XCHRPT		/THEN DONT NEED SIND
	FLDA%	XPT
	FSTA	X0		/VALUE OF X

	FLDA%	YPT		
	FSTA	Y0
	FCLA
	FSTA	CENTSY
	FLDA	TERM1		/GET TEXT ADDRESS
	FSTA	TXTADR		/PUT IT DOWN IN PDP PART
	FLDA%	YDIFF		/ASSUME ITS A REGULAR
	JGE	NOTNEG		/NEGATIVE SIZE IS NOT NICE
	FNEG
NOTNEG,	FDIV	PF7		/ADJUST LATER IF A CENT
	FSTA	ANGADJ
	FLDA%	ARG1		/SHOWS NUM. CHARS + PEN STATUS
	FSTA	NUMSYM
	JGE	REGSYM		/GT OR =0 IS REG SYM
	FLDA%	TERM1		/CHECK FOR REG CHAR PASSED
	FSUB	F100		/AS AN INTEGER EQUIV.
	JLT	INTEQ		/ITS A INTEGER EQUIV
	FLDA%	YDIFF		/CENTERED SYMBOL
	JGE	NOTNG1
	FNEG
NOTNG1,	FDIV	P4
	FSTA	ANGADJ
	FLDA	NUMSYM		/-1=PEN UP;-2=PEN DOWN (CNTRD ONLY)
	FADD	P1
	JGE	UPPEN		/MOVE WITH PEN UP
	FSTA	CENTSY		/NEG MEANS DOWN FROM THE START
PTITDN,	FLDA	PF2
CPEN,	FSTA	YCHRPT		/=-2 FOR DOWN(CENT. + INTEQ ONLY)
/ -3 FOR UP FOR ALL SYMBOLS + INTEQ
	JSR XYPLOT		/PLOT ORIGIN
	JA	.+10
	JA	X0
	JA	Y0
	JA	YCHRPT	
	FLDA	CENTSY
	JLE	PENOK
	JSA	PNDOWN		/PUT PEN DOWN NOW(CENT ONLY)
PENOK,	JSR	SIN
	JA	.+4
	JA	XCHRPT
	FMUL	ANGADJ
	FSTA	SINANG		/SAVE SIN*HGT. USE FOR ALL VALUES
	JSR	COS
	JA	.+4
	JA	XCHRPT
	FMUL	ANGADJ
	FSTA	COSANG		/COS(ANGLE)*HGT (IN INCREMENTS NOW)
	LDX	0,4		/ZERO STEP COUNT
	FLDA	NUMENT
	JGT	NUM2		/JUMP IF FROM NUMBER
	JA	FSTLFT
UPPEN,	FLDA	P3
	FSTA	CENTSY		/PUT PEN DOWN AFTER INITIAL MOVE
	JA	CPEN		/MOVE WITH PEN UP
PENSET,	JSA	PNDOWN
ONEXY,	JA	.
	SETX	LETCOD
	XTA	2		/GET Y	
	FSTA	YCHRPT
	XTA	1		/GET X
	FSTA	XCHRPT		/GET 1ST  MOVE	
	SETX	XRPLOT
	FSUB	PF7		/7,0=PEN UP 7,7=END
	JEQ	PENUPM
	FLDA	CENTSY
	JEQ	CALALL		/CENTEREDS REQUIRE MODIFIED ORIGIN
	FLDA	PF2
	FNEG
	FADDM	XCHRPT
	FADDM	YCHRPT
CALALL,	JSA	CALANG
	JXN	PENSET,5	/PUT PEN BACK DOWN IF NEC
	JA	ONEXY
INTEQ,	FLDA	NUMSYM		/CHECK ON PEN
	FADD	P1
	JLT	PTITDN
REGSYM,	FLDA	P3
	JA	CPEN
PENUPM,	JSA	PENUP
	FLDA	YCHRPT		/CHECK FOR 7,7 END
	FSUB	PF7
	JEQ	NXTCHR		/JUMP IF END OF CHAR
	JA	ONEXY		/ON TO NEXT PAIR
PENUP,	JA	.
	FLDA P3
	FSTA PEN
	JA	PENUP	
PNDOWN,	JA	.
	FLDA PF2
	FSTA PEN
	JA	PNDOWN
CALANG,	JA	.
	FLDA	YCHRPT
	FMUL	SINANG
	FNEG
	FSTA	TERM1		/=-SINA*Y
	FLDA	XCHRPT
	FMUL	COSANG
	FADD	TERM1
	FADD X0
	FSTA	XPT		/X*COSA+OLDX-SINA*Y
/REQUIRES AN OLDX + OLDY TERM,BUT I DO THIS ALL REL TO A 
/LOGICAL 0,0 FOR EACH CHAR, SO I LEFT THEM OUT.
	FLDA	YCHRPT
	FMUL	COSANG
	FSTA	TERM1		/COSA*Y
	FLDA	XCHRPT
	FMUL	SINANG
	FADD	TERM1
	FADD Y0
	FSTA	YPT		/NEWX*SINA+OLDY+COSA*Y
	JSR XYPLOT		/DO THE PLOTTING WITH XYPLOT
	  JA .+10
	  JA XPT
	  JA YPT
	  JA PEN
	JA	CALANG
LEFTJS,	XTA	4		/NUM OF MOVES
	SETX	LETCOD
	ATX	0		/PASS NUMBER OF STEPS INTO LETTER
	SETX	XRPLOT
	TRAP4	LEFT		/RETURN WITH A X,Y PAIR
	JSA	ONEXY
	XTA	4
	SETX	LETCOD
	ATX	0		/STEP COUNT
	SETX	XRPLOT
	JNE	NOTFST		/CHANGE IF BEFORE 1ST MOVE OF CHAR
	JSA	PNDOWN		/PUT PEN DOWN NOW
NOTFST,	TRAP4	RIGHT		/GET NEXT XY PAIR
	JSA	ONEXY
	ADDX	1,4		/UPDATE COUNT
	JA	LEFTJS		/77 AT END OF CHAR USED TO DET END
CENTEX,	JSA	PENUP
	JA	CENTOO
NXTCHR,	FLDA	CENTSY
	JNE	CENTEX		/LEAVE PEN AT CENTER FOR CENTS ONLY
	FSTA	YCHRPT
	FLDA	PF7
	FSTA	XCHRPT		/MOVE PEN TO 7,0 FOR REG CHARS
	JSA	CALANG		/PLOT IT
	FLDA XPT
	FSTA X0
	FLDA YPT
	FSTA Y0
CENTOO,	LDX	0,4		/ZERO STEP NUM WITHIN CHAR
	FLDA	P1
	FNEG
	FADD	NUMSYM		/UPDATE COUNTER
	JLE	SYMDON		/NO MORE
	FSTA	NUMSYM		/MORE. SAVE COUNT
	FLDA	NUMENT
	JGT	NUM3		/EXIT FOR NUMB SUBR
	FCLA
	JXN	RTCHAR,3	/1=CHAR  IS RIGHT 6 BITS
FSTLFT,	LDX	1,3		/POINT TO RIGHT 6 WHEN TIME FOR NEXT CHAR
	FLDA	NUMSYM
	JLT	NUM5		/JUMP IF CENTERED SYM OR INTEQ
/CENTEREDS + INTEG EQUIV PASSING A 3 WORD VALUE IN NUM5
/REG SYM USES PDP RTN TO GET 1 WORD OF LIST
	FCLA
	TRAP4	FINDLF
	JA	LEFTJS		/GO PLOT THE ACTUAL CHAR
RTCHAR,	LDX	0,3		/POINT TO LEFT 6 BITS FOR NEXT TIME
	TRAP4	FINDRT
	JA	LEFTJS
SYMDON,	FCLA
		FSTA	NUMENT
	JA	PLTRTN
	ENTRY	SYMB
SYMB,	JSA	#PLSTR		/SPEC ENTRY FOR NUMBER SUB
	STARTF
	FLDA	P1
	FSTA	NUMENT
	STARTD
	JA	SYM1
NUM2,	SETX	NUMENT		/FOR NUMBER SUBRTN ONLY
/HERE ONLY FOR 1ST NUMBER OF STRING
	LDX -1,2		
NUM3,	JSA	GETARG		/FOR 2ND + LATER NUMBERS
	TRAP4	PASNUM
	JA	LEFTJS
NUM5,	SETX	NUMENT		/FOR INTEQ + CENTEREDS
	LDX	-1,2
	JSA	GETARG
	TRAP4	PASINT
	JA	LEFTJS
GETARG,	JA	.
	SETX	NUMENT		/USED FOR MORE THAN 1 CHAR
	STARTD
	FLDA	TXTADR+1	/CENTERED SYMBOLS AND NUM SUBRTN
/PASS VALUES AS 3 WORDS
	FSTA	ARG1
	STARTF
	FLDA%	ARG1,2+		/PASS A NUMBER
	SETX	TXTADR
	FADD PT5
	ATX	0
	SETX	XRPLOT
	JA	GETARG
PT5,	F 0.5
	SECT	SYMBTB
SYMTBL,	
A,	0005	/1
	1636
	4540
	7043
	0377
B,	0006
	3645
	4433
	0333
	4241
	3000
	7777
C,	4130
	1001
	0516
	3645
	7777
D,	0006
	3645
	4130
	0077
E,	4000
	0646
	7033
	0377
F,	0006
	4670
	0333
	7777
G,	4616
	0501
	1030
	4143
	2377
H,	0006	/10 OCTAL
	7003
	4370
	4640
	7777
I,	0646
	7026
	2070
	0040
	7777
J,	0100	/10 DEC
	3036
	7016
	4677
K,	0006
	7046
	1303
	1340
	7777
L,	0600
	4077
LM,	0006
	2346
	4077
LN,	0006
	4046
	7777
O,	0110
	3041
	4536
	1605
	0177
P,	0006	/20 OCT	
	4643
	0377
Q,	0110
	3041
	4536
	1605
	0170
	2240
	7777
R,	0006
	3645
	4433
	1303
	1340
	7777
S,	0110
	3041
	4233
	1304
	0516
	3645
	7777
T,	2026	/20 DEC
	7006
	4677
U,	0601
	1030
	4146
	7777
V,	0620
	4677
W,	0600
	2240
	4677
X,	0046
	7006
	4077
Y,	0624
	2070
	2446
	7777
Z,	0646	/26
	0040
	7777
LBRACK,	3010
	1636
	7777
BSLASH,	0640
	7777
RBRACK,	1030
	3616
	7777
UPAROW,	2026
	7004
	2644
	7777
LARROW,	2103
	2570
	0343
	7777
SPAC,	7777	/SPACE - 32 DEC, 40 OCT
EXCLPT,	2622
	7021
	2077
DBLQOT,	1416
	7036
	3477
NUMSGN,	0242
	7044
	0470
	1511
	7031
	3577
DOLSGN,	1211
	3133
	1315
	3534
	7026
	2077
PRCNT,	0405
	1514
	0470
	4501
	7031
	3242
	4131
	7777
PI,	1014
	7004
	4470
	3430
	7777
SNGQOT,	2624
	7777
LPAR,	3020	/40
	1115
	2636
	7777
RPAR,	1626
	3531
	2010
	7777
STAR,	0145	/42
	7025
	2170
	4105
	7003
	4377
PLUS,	2125
	7003
	4377
COM,	2111
	1222
	2110
	7777
DASH,	0343
	7777
PER,	2021	
	1110
	2077
SLASH,	0046
	7777
ZER,	0110	
	2031
	3526
	1605
	0170
	3600
	7777
ONE,	1436
	3070
	1040
	7777
TWO,	0516
	3645
	4401
	0040
	7777
THR,	0516
	3645
	4433
	1333
	4241
	3010
	0177
FOUR,	3036
	0343
	7777
FIV,	0110
	3041
	4233
	1304
	0646
	7777
SIX,	0213
	3342
	4130
	1001
	0516
	3645
	7777
SEV,	0506
	4645
	2120
	7777
EIG,	1333	
	4241
	3010
	0102
	1304
	0516
	3645
	4433
	7777
NIN,	0110
	3041
	4536
	1605
	0413
	3344
	7777
COLON,	1415	
	2524
	1470
	1222
	2111
	1277
SEMI,	1415	
	2524
	1470
	1222
	2011
	1277
LT,	4503	/LESS THAN 60=74
	4177
EQ,	0444	/EQUAL 61
	7002
	4277
GT,	0543	/GRTR THAN 62=76
	0177
QM,	0516	/Q MARK 63=77
	3645
	4433
	3270
	3130
	7777
/START OF CENTEREDS-EXPECT TO START AND END IN MIDDLE
/PLOTTED WITH 2,2 AS MIDDLE. ALL MUSR END AT 2,2.
CBOX,	2224	/BOX 0
	0400
	4044
	2422
	7777
COCT,	2224	/OCTAGON 1
	1403
	0110
	3041
	4334
	2422
	7777
CTRI,	2223	/TRIANGLE 2
	0141
	2322
	7777
CPL,	2420	/+ 3
	7002
	4222
	7777
CX,	0440	/X 4
	7044
	0022
	7777
CDIM,	2224	/DIAMOND 5
	0220
	4224
	2277
CUP,	2220	/UP ARROW 6
	7002
	2442
	0222
	7777
CHAIR,	2244	/CHAIR 7
	0440
	7000
	2277
ZORRO,	3270	/Z 8
	4000
	4404
	7012
	2277
YCENT,	2244	/Y 9
	7020
	2204
	2277
CSHIP,	2233	/SHIP 10
	1311
	3133
	7040
	3170
	1100
	7004
	1370
	4422
	7777
CSTAR,	0242	/STAR 11
	7044
	0070
	2024
	7004
	4022
	7777
TWOTRI,	2244	/2 TRIANGLES 12
	0440
	0022
	7777
CVERT,	2420	/VERTICAL LINE 13
	2277
HDSH,	0242	/HORIZ DASH 14
	2277
ABSEQ,	2242	/ABSOLUTELY EQUAL TO 15
	7044
	0470
	4000
	7002
	2277
NOTEQ,	2200	/NOT EQUAL 16
	7001
	4170
	4303
	7044
	2277
PLSMNS,	2224	/+ OR - 17
	7013
	3370
	3111
	7022
	7777
/THIS TABLE COUNTS THE NUMBER OF STEPS (12 BIT) BETWEEN
/EACH CHARACTER. USED TO DETERMINE LOCATION AT WHICH TO
/START PICKING UP PLOTTING CODES.
SYMCNT,	0	/TO A
	B-A
	C-B
	D-C
	E-D
	F-E
	G-F
	H-G
	I-H
	J-I
	K-J
	L-K
	LM-L
	LN-LM
	O-LN
	P-O
	Q-P
	R-Q
	S-R
	T-S
	U-T
	V-U
	W-V
	X-W
	Y-X
	Z-Y
	LBRACK-Z
	BSLASH-LBRACK
	RBRACK-BSLASH
	UPAROW-RBRACK
	LARROW-UPAROW
	SPAC-LARROW
	EXCLPT-SPAC
	DBLQOT-EXCLPT
	NUMSGN-DBLQOT
	DOLSGN-NUMSGN
	PRCNT-DOLSGN
	PI-PRCNT
	SNGQOT-PI
	LPAR-SNGQOT
	RPAR-LPAR
	STAR-RPAR
	PLUS-STAR
	COM-PLUS
	DASH-COM
	PER-DASH
	SLASH-PER
	ZER-SLASH
	ONE-ZER
	TWO-ONE
	THR-TWO
	FOUR-THR
	FIV-FOUR
	SIX-FIV
	SEV-SIX
	EIG-SEV
	NIN-EIG
	COLON-NIN
	SEMI-COLON
	LT-SEMI
	EQ-LT
	GT-EQ
	QM-GT
	CBOX-QM
	COCT-CBOX
	CTRI-COCT
	CPL-CTRI
	CX-CPL
	CDIM-CX
	CUP-CDIM
	CHAIR-CUP
	ZORRO-CHAIR
	YCENT-ZORRO
	CSHIP-YCENT
	CSTAR-CSHIP
	TWOTRI-CSTAR
	CVERT-TWOTRI
	HDSH-CVERT
	ABSEQ-HDSH
	NOTEQ-ABSEQ
	PLSMNS-NOTEQ