Google
 

Trailing-Edge - PDP-10 Archives - BB-D480F-BB_1985_short - forpl2.mac
There are 11 other files named forpl2.mac in the archive. Click here to see a list.
	SEARCH	MTHPRM,FORPRM
	TV	FORPL2	PLOTTER ROUTINES	,10(4023)
	SUBTTL	FORPLT part 2 -- MACRO routines

COMMENT \

***** Begin Revision History *****

1100	CKS	6-Jul-80
	Fix to work with version 6

1351	EDS	16-Mar-81	Q10-04786
	Fix TWOSEG and RELOC problems.

***** Begin Version 7 *****

3121	AHM	24-Mar-82
	Make PLOT.A search MTHPRM,FORPRM so that the special TWOSEG macro  is
	visible when FTXLIB is set.

3125	JLC	1-Jun-82
	Mathlib integration: change TWOSEG/RELOC to SEGMENTs.

3210	PLB	9-Nov-82
	Make SYMBOL take CHARACTER arguments.
	Some conversion for Extended Addressing.

***** End V7 Development *****

3314	TGS	12-May-83	SPR:10-33781
	Save AC 0 around DECP2's call to SYMBOL. Was getting trashed,
	then checked in DECP3 to see if a "0" needs to be output
	after the decimal point in calls to NUMBER.


BEGIN V10
4003	PLB	17-Feb-83	; Logical edit 4000
	More Extended Addressing changes, comments.

4023	JLC	29-Jun-83
	Search MTHPRM also.

***** End V10 Development *****

***** End Revision History *****
\

	PRGEND

;COPYRIGHT (C) DIGITAL EQUIPMENT CORPORATION 1980, 1985
;ALL RIGHTS RESERVED.
;
;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
;ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  SUCH LICENSE AND WITH THE
;INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY  OTHER
;COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
;OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF THE  SOFTWARE  IS  HEREBY
;TRANSFERRED.

;THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT  NOTICE
;AND  SHOULD  NOT  BE  CONSTRUED  AS A COMMITMENT BY DIGITAL EQUIPMENT
;CORPORATION.

;DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY  OF  ITS
;SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.

	TITLE	PLOTF (FEANORIAN CHARACTER SET)
	SUBTTL	BILL WEIHER: STANFORD A-I; 21 OCT 67

	SEARCH	MTHPRM,FORPRM
	SEGMENT	CODE

	ENTRY	PLOTF

PLOTF:	REPEAT 40,<XWD 0,0>
	XWD 1,SP
	XWD 5,LCR
	XWD 3,UDOT
	XWD 7,SCR
	XWD 21,OFTHE
	XWD 14,FQA
	REPEAT 4,<XWD 0,0>
	XWD 17,OF
	XWD 11,FHW
	XWD 11,F12
	XWD 3,OVBR
	XWD 11,F11
	XWD 17,THE
	XWD 12,F0
	XWD 11,FTH
	XWD 11,FSH
	XWD 12,FKH
	XWD 17,FDH
	XWD 17,FZH
	XWD 17,FGH
	XWD 17,F7
	XWD 17,F8
	XWD 11,F9
	XWD 5,FOLY
	XWD 16,MODR
	XWD 13,ALTS
	XWD 0,0
	XWD 25,ALTZ
	XWD 0,0
	XWD 0,0
	XWD 7,FA
	XWD 16,FB
	XWD 11,FC
	XWD 16,FD
	XWD 3,FE
	XWD 12,FF
	XWD 16,FG
	XWD 6,FH
	XWD 3,FI
	XWD 17,FJ
	XWD 11,FK
	XWD 10,FL
	XWD 17,FM
	XWD 17,FN
	XWD 12,FO
	XWD 11,FP
	XWD 14,FQ
	XWD 14,FR
	XWD 13,FS
	XWD 10,FT
	XWD 12,FU
	XWD 17,FV
	XWD 12,FW
	XWD 11,FX
	XWD 7,FY
	XWD 25,FZ
	REPEAT 46,<XWD 0,0>

	RADIX 10
FSH:	BYTE (5) 0,2,15,1,0,13,1,0,8,1,2,6,1,4,6,1,6,8,0,6,21
	BYTE (5) 1,6,6,0,11,6
FKH:	BYTE (5) 0,0,13,1,0,8,1,2,6,1,4,6,1,6,8,0,0,13,1,6,13
	BYTE (5) 0,6,21,1,6,6,0,11,6
FDH:	BYTE (5) 0,0,21,1,0,6,0,0,11,1,2,13,1,4,13,1,6,11,1,6,6
	BYTE (5) 1,4,4,0,6,11,1,8,13,1,10,13,1,12,11,1,12,6,1,10,4
	BYTE (5) 0,17,6
FV:	BYTE (5) 0,0,21,1,0,6,0,0,11,1,2,13,1,4,13,1,6,11,1,6,6
	BYTE (5) 0,6,11,1,8,13,1,10,13,1,12,11,1,12,6,0,0,6,1,13,6
	BYTE (5) 0,17,6
FZH:	BYTE (5) 0,2,15,1,0,13,1,0,8,1,2,6,1,4,6,1,6,8,1,6,13
	BYTE (5) 1,8,15,0,6,8,1,8,6,1,10,6,1,12,8,0,12,21,1,12,6
	BYTE (5) 0,17,6
FGH:	BYTE (5) 0,0,13,1,0,8,1,2,6,1,4,6,1,6,8,1,6,13,0,6,8
	BYTE (5) 1,8,6,1,10,6,1,12,8,0,0,13,1,12,13,0,12,21,1,12,6
	BYTE (5) 0,17,6
F9:	BYTE (5) 0,0,13,1,0,6,0,0,11,1,2,13,1,4,13,1,6,11,1,6,6
	BYTE (5) 1,4,4,0,11,6
F0:	BYTE (5) 0,0,13,1,0,6,0,0,11,1,2,13,1,4,13,1,6,11,1,6,6
	BYTE (5) 0,0,6,1,7,6,0,11,6
FT:	BYTE (5) 0,0,0,1,0,11,1,2,13,1,4,13,1,6,11,1,6,6,1,4,4
	BYTE (5) 0,11,6
FP:	BYTE (5) 0,0,0,1,0,11,1,2,13,1,4,13,1,6,11,1,6,6,0,0,6
	BYTE (5) 1,7,6,0,11,6
FC:	BYTE (5) 0,2,15,1,0,13,1,0,8,1,2,6,1,4,6,1,6,8,0,6,15
	BYTE (5) 1,6,0,0,11,6
FK:	BYTE (5) 0,0,13,1,0,8,1,2,6,1,4,6,1,6,8,0,0,13,1,6,13
	BYTE (5) 1,6,0,0,11,6
FD:	BYTE (5) 0,0,0,1,0,11,1,2,13,1,4,13,1,6,11,1,6,6,1,4,4
	BYTE (5) 0,6,11,1,8,13,1,10,13,1,12,11,1,12,6,1,10,4,0,17,6
FB:	BYTE (5) 0,0,0,1,0,11,1,2,13,1,4,13,1,6,11,1,6,6,0,6,11
	BYTE (5) 1,8,13,1,10,13,1,12,11,1,12,6,0,0,6,1,13,6,0,17,6
FJ:	BYTE (5) 0,2,15,1,0,13,1,0,8,1,2,6,1,4,6,1,6,8,1,6,13
	BYTE (5) 1,8,15,0,6,8,1,8,6,1,10,6,1,12,8,0,12,15,1,12,0
	BYTE (5) 0,17,6
FG:	BYTE (5) 0,0,13,1,0,8,1,2,6,1,4,6,1,6,8,1,6,13,0,6,8
	BYTE (5) 1,8,6,1,10,6,1,12,8,0,0,13,1,12,13,1,12,0,0,17,6
FTH:	BYTE (5) 0,0,21,1,0,6,0,0,11,1,2,13,1,4,13,1,6,11,1,6,6
	BYTE (5) 1,4,4,0,11,6
FF:	BYTE (5) 0,0,21,1,0,6,0,0,11,1,2,13,1,4,13,1,6,11,1,6,6
	BYTE (5) 0,0,6,1,7,6,0,11,6
ALTS:	BYTE (5) 0,4,15,1,0,11,1,0,8,1,2,6,1,4,6,1,6,8,1,6,10
	BYTE (5) 1,4,12,1,3,12,1,2,11,0,11,6
FS:	BYTE (5) 0,4,7,1,3,6,1,2,6,1,0,8,1,0,10,1,2,12,1,4,12
	BYTE (5) 1,6,10,1,6,7,1,2,3,0,11,6
ALTZ:	BYTE (5) 0,4,16,1,0,12,1,0,9,1,2,7,1,4,7,1,6,9,1,6,11
	BYTE (5) 1,4,13,1,3,13,1,2,12,0,2,7,1,0,5,1,0,2,1,2,0
	BYTE (5) 1,4,0,1,6,2,1,6,4,1,4,6,1,3,6,1,2,5,0,11,6
FZ:	BYTE (5) 0,2,0,1,6,4,1,6,7,1,4,9,1,2,9,1,0,7,1,0,5
	BYTE (5) 1,2,3,1,3,3,1,4,4,0,4,9,1,6,11,1,6,14,1,4,16
	BYTE (5) 1,2,16,1,0,14,1,0,12,1,2,10,1,3,10,1,4,11,0,11,6
FU:	BYTE (5) 0,0,16,1,3,19,1,4,19,1,5,18,1,5,17,1,4,16,1,3,16
	BYTE (5) 1,2,17,1,2,18,0,0,6
FO:	BYTE (5) 0,3,18,1,3,17,1,2,16,1,1,16,1,0,17,1,0,18,1,1,19
	BYTE (5) 1,2,19,1,5,16,0,0,6
FI:	BYTE (5) 0,3,16,1,3,18,0,0,6
FE:	BYTE (5) 0,2,16,1,5,19,0,0,6
FA:	BYTE (5) 0,1,16,1,1,18,0,3,18,1,3,20,0,5,16,1,5,18,0,0,6
FOLY:	BYTE (5) 0,2,16,1,2,18,0,4,16,1,4,18,0,0,6
OVBR:	BYTE (5) 0,1,16,1,5,16,0,0,6
OF:	BYTE (5) 0,0,21,1,0,0,0,0,11,1,2,13,1,4,13,1,6,11,1,6,6
	BYTE (5) 0,6,11,1,8,13,1,10,13,1,12,11,1,12,6,0,0,6,1,13,6
	BYTE (5) 0,17,6
OFTHE:	BYTE (5) 0,0,21,1,0,0,0,0,11,1,2,13,1,4,13,1,6,11,1,6,6
	BYTE (5) 0,6,11,1,8,13,1,10,13,1,12,11,1,12,6,0,0,6,1,13,6
	BYTE (5) 0,0,3,1,6,3,0,17,6
THE:	BYTE (5) 0,0,21,1,0,0,0,0,11,1,2,13,1,4,13,1,6,11,1,6,6
	BYTE (5) 1,4,4,0,6,11,1,8,13,1,10,13,1,12,11,1,12,6,1,10,4
	BYTE (5) 0,17,6
SCR:	BYTE (5) 0,7,12,1,2,12,1,0,10,1,0,6,1,2,4,1,7,4,0,12,6
UDOT:	BYTE (5) 0,5,2,1,5,0,0,0,6
LCR:	BYTE (5) 0,5,12,1,5,4,1,2,1,1,0,1,0,11,6
FW:	BYTE (5) 0,0,8,1,2,6,1,4,6,1,6,8,1,6,10,1,4,12,1,2,12
	BYTE (5) 1,0,10,1,0,8,0,11,6
FR:	BYTE (5) 0,0,11,1,5,6,0,4,13,1,6,15,1,8,15,1,10,13,1,10,11
	BYTE (5) 1,2,3,1,2,1,1,3,0,1,5,0,0,15,6
MODR:	BYTE (5) 0,0,11,1,5,6,0,4,13,1,6,15,1,8,15,1,10,13,1,10,11
	BYTE (5) 1,2,3,1,2,1,1,3,0,1,5,0,0,4,8,1,1,5,0,15,6
FH:	BYTE (5) 0,0,15,1,9,6,1,11,6,0,5,10,1,1,6,0,17,6
FY:	BYTE (5) 0,1,12,1,3,12,1,9,6,1,11,6,0,5,10,1,1,6,0,17,6
FL:	BYTE (5) 0,0,11,1,12,11,0,6,11,1,3,8,1,3,4,1,6,1,1,9,1
	BYTE (5) 0,17,6
FX:	BYTE (5) 0,0,11,1,9,11,0,5,11,1,3,9,1,3,7,1,5,5,1,5,3
	BYTE (5) 1,3,1,0,14,6
F11:	BYTE (5) 0,2,15,1,0,13,1,0,8,1,2,6,1,4,6,1,6,8,0,6,15
	BYTE (5) 1,6,6,0,11,6
F12:	BYTE (5) 0,0,13,1,0,8,1,2,6,1,4,6,1,6,8,0,0,13,1,6,13
	BYTE (5)  1,6,6,0,11,6
FN:	BYTE (5) 0,0,13,1,0,6,0,0,11,1,2,13,1,4,13,1,6,11,1,6,6
	BYTE (5) 1,4,4,0,6,11,1,8,13,1,10,13,1,12,11,1,12,6,1,10,4
	BYTE (5) 0,17,6
FM:	BYTE (5) 0,0,13,1,0,6,0,0,11,1,2,13,1,4,13,1,6,11,1,6,6
	BYTE (5) 0,6,11,1,8,13,1,10,13,1,12,11,1,12,6,0,0,6,1,13,6
	BYTE (5) 0,17,6
F7:	BYTE (5) 0,2,15,1,0,13,1,0,8,1,2,6,1,4,6,1,6,8,1,6,13
	BYTE (5) 1,8,15,0,6,8,1,8,6,1,10,6,1,12,8,0,12,15,1,12,6
	BYTE (5) 0,17,6
F8:	BYTE (5) 0,0,13,1,0,8,1,2,6,1,4,6,1,6,8,1,6,13,0,6,8
	BYTE (5) 1,8,6,1,10,6,1,12,8,0,0,13,1,12,13,1,12,6,0,17,6
SP:	BYTE (5) 0,17,6
FHW:	BYTE (5) 0,6,18,1,6,6,0,6,12,1,2,12,1,0,10,1,0,8,1,2,6
	BYTE (5) 1,9,6,0,14,6
FQ:	BYTE (5) 0,0,16,1,2,18,0,2,16,1,2,20,1,3,21,1,4,21,1,5,20
	BYTE (5) 1,5,19,1,4,18,1,3,18,1,2,19,0,0,6
FQA:	BYTE (5) 0,1,16,1,3,18,0,3,16,1,3,20,1,2,21,1,1,21,1,0,20
	BYTE (5) 1,0,19,1,1,18,1,2,18,1,3,19,0,0,6
	PRGEND
	TITLE	PLOTC (RUSSIAN CHARACTER SET)
	SUBTTL	BILL WEIHER: STANFORD A-I; 21 OCT 67

	SEARCH	MTHPRM,FORPRM
	SEGMENT	CODE

	ENTRY	PLOTC

PLOTC:	XWD 0,0
	XWD 10,T21
	XWD 11,T22
	XWD 14,T23
	XWD 4,T24
	XWD 10,T25
	XWD 7,T26
	XWD 13,T27
	XWD 12,T210
	XWD 16,T211
	XWD 7,T212
	XWD 0,0
	XWD 7,T214
	XWD 6,T215
	XWD 5,T216
	XWD 6,T217
	XWD 12,T220
	XWD 4,T221
	XWD 7,T222
	XWD 11,T223
	XWD 5,T224
	XWD 6,T225
	XWD 14,T226
	XWD 4,T227
	XWD 7,T230
	XWD 7,T231
	XWD 10,T232
	XWD 12,T233
	EXP 0,0,0
	XWD 13,T237
	XWD 15,T240
	XWD 12,T241
	REPEAT 37,<XWD 0,0>
	XWD 16,T2101
	XWD 15,T2102
	XWD 12,T2103
	XWD 4,T2104
	XWD 10,T2105
	XWD 13,T2106
	XWD 17,T2107
	XWD 12,T2110
	XWD 14,T2111
	XWD 5,T2112
	XWD 10,T2113
	XWD 5,T2114
	XWD 6,T2115
	XWD 5,T2116
	XWD 6,T2117
	XWD 12,T2120
	XWD 4,T2121
	XWD 12,T2122
	XWD 11,T2123
	XWD 5,T2124
	XWD 6,T2125
	XWD 14,T2126
	XWD 4,T2127
	XWD 7,T2130
	XWD 7,T2131
	XWD 10,T2132
	XWD 12,T2133
	XWD 12,T2134
	XWD 12,T2135
	XWD 10,T2136
	XWD 13,T2137
	XWD 13,T2140
	XWD 11,T2141
	XWD 1,T2142
	REPEAT 36,<XWD 0,0>

	RADIX 10
T21:	BYTE (5) 1,0,12,1,2,14,1,4,14,1,6,12,1,6,6,0,6,9,1,0,9
	BYTE (5) 0,8,6
T22:	BYTE (5) 1,0,14,1,4,14,0,0,10,1,3,10,1,4,9,1,4,7,1,3,6
	BYTE (5) 1,0,6,0,8,6
T23:	BYTE (5) 1,0,14,1,5,14,1,6,13,1,6,11,1,5,10,1,0,10,0,5,10
	BYTE (5) 1,6,9,1,6,7,1,5,6,1,0,6,0,8,6
T24:	BYTE (5) 1,0,14,1,5,14,1,5,12,0,8,6
T25:	BYTE (5) 1,0,7,1,2,9,1,2,14,1,6,14,1,6,6,1,6,7,1,0,7
	BYTE (5) 0,8,6
T26:	BYTE (5) 1,0,14,1,6,14,0,4,10,1,0,10,0,0,6,1,6,6,0,8,6
T27:	BYTE (5) 1,0,14,1,6,14,0,4,10,1,0,10,0,0,6,1,6,6,0,2,15
	BYTE (5) 1,2,16,0,4,16,1,4,15,0,8,6
T210:	BYTE (5) 1,4,10,1,0,14,0,4,10,1,7,10,1,11,14,0,5,14,1,5,6
	BYTE (5) 0,11,6,1,7,10,0,13,6
T211:	BYTE (5) 0,0,7,1,1,6,1,3,6,1,4,7,1,4,9,1,3,10,1,2,10
	BYTE (5) 1,3,10,1,4,11,1,4,13,1,3,14,1,1,14,1,0,13,0,8,6
T212:	BYTE (5) 0,0,14,1,0,6,1,0,7,1,6,13,1,6,14,1,6,6,0,8,6
T214:	BYTE (5) 0,1,6,1,1,14,0,1,10,1,5,14,0,1,10,1,5,6,0,8,6
T215:	BYTE (5) 1,1,6,1,2,7,1,2,14,1,6,14,1,6,6,0,8,6
T216:	BYTE (5) 1,0,14,1,3,11,1,6,14,1,6,6,0,8,6
T217:	BYTE (5) 1,0,14,0,0,10,1,6,10,0,6,14,1,6,6,0,8,6
T220:	BYTE (5) 0,0,8,1,0,12,1,2,14,1,4,14,1,6,12,1,6,8,1,4,6
	BYTE (5) 1,2,6,1,0,8,0,8,6
T221:	BYTE (5) 1,0,14,1,6,14,1,6,6,0,8,6
T222:	BYTE (5) 1,0,14,1,5,14,1,6,13,1,6,11,1,5,10,1,0,10,0,8,6
T223:	BYTE (5) 0,6,13,1,5,14,1,2,14,1,0,12,1,0,8,1,2,6,1,5,6
	BYTE (5) 1,6,7,0,8,6
T224:	BYTE (5) 0,3,6,1,3,14,0,0,14,1,6,14,0,8,6
T225:	BYTE (5) 0,0,14,1,3,11,1,6,14,0,3,11,1,3,6,0,8,6
T226:	BYTE (5) 0,0,9,1,0,11,1,2,13,1,4,13,1,6,11,1,6,9,1,4,7
	BYTE (5) 1,2,7,1,0,9,0,3,14,1,3,6,0,8,6
T227:	BYTE (5) 1,6,12,0,0,12,1,6,6,0,8,6
T230:	BYTE (5) 0,0,14,1,0,6,1,3,6,1,3,14,0,3,6,1,4,5,0,8,6
T231:	BYTE (5) 0,0,14,1,0,12,1,1,11,1,4,11,0,4,14,1,4,6,0,8,6
T232:	BYTE (5) 0,0,14,1,0,6,1,3,6,1,3,14,0,3,6,1,6,6,1,6,14
	BYTE (5) 0,8,6
T233:	BYTE (5) 0,0,14,1,0,6,1,3,6,1,3,14,0,3,6,1,6,6,1,6,14
	BYTE (5) 0,6,6,1,7,5,0,9,6
T237:	BYTE (5) 0,0,13,1,1,14,1,4,14,1,6,12,1,6,8,1,4,6,1,1,6
	BYTE (5) 1,0,7,0,6,10,1,3,10,0,8,6
T240:	BYTE (5) 1,0,14,0,0,10,1,2,10,1,2,13,1,3,14,1,5,14,1,6,13
	BYTE (5) 1,6,7,1,5,6,1,3,6,1,2,7,1,2,10,0,8,6
T241:	BYTE (5) 0,6,6,1,6,14,1,1,14,1,0,13,1,0,11,1,1,10,1,6,10
	BYTE (5) 0,4,10,1,0,6,0,8,6
T2101:	BYTE (5) 0,0,9,1,1,10,1,3,10,1,4,9,1,4,6,0,4,8,1,3,9
	BYTE (5) 1,1,9,1,0,8,1,0,7,1,1,6,1,3,6,1,4,7,0,8,6
T2102:	BYTE (5) 0,0,8,1,1,9,1,3,9,1,4,8,1,4,7,1,3,6,1,1,6
	BYTE (5) 1,0,7,1,0,10,1,2,12,1,3,12,1,4,11,0,8,6
T2103:	BYTE (5) 1,0,10,1,3,10,1,4,9,1,3,8,1,0,8,0,3,8,1,4,7
	BYTE (5) 1,3,6,1,0,6,0,8,6
T2104:	BYTE (5) 1,0,10,1,3,10,1,3,9,0,8,6
T2105:	BYTE (5) 1,0,7,1,1,8,1,1,10,1,4,10,1,4,6,1,4,7,1,0,7
	BYTE (5) 0,8,6
T2106:	BYTE (5) 0,0,8,1,4,8,1,4,9,1,3,10,1,1,10,1,0,9,1,0,7
	BYTE (5) 1,1,6,1,3,6,1,4,7,0,8,6
T2107:	BYTE (5) 0,0,8,1,4,8,1,4,9,1,3,10,1,1,10,1,0,9,1,0,7
	BYTE (5) 1,1,6,1,3,6,1,4,7,0,1,11,1,1,12,0,3,12,1,3,11
	BYTE (5) 0,8,6
T2110:	BYTE (5) 1,2,8,1,0,10,0,3,10,1,3,6,0,6,6,1,4,8,1,6,10
	BYTE (5) 0,2,8,1,4,8,0,8,6
T2111:	BYTE (5) 0,0,9,1,1,10,1,3,10,1,4,9,1,3,8,1,2,8,0,3,8
	BYTE (5) 1,4,7,1,3,6,1,1,6,1,0,7,0,8,6
T2112:	BYTE (5) 0,0,10,1,0,6,1,4,10,1,4,6,0,8,6
T2113:	BYTE (5) 0,0,10,1,0,6,1,4,10,1,4,6,0,1,12,1,2,11,1,3,12
	BYTE (5) 0,8,6
T2114:	BYTE (5) 1,0,10,0,2,10,1,0,8,1,2,6,0,8,6
T2115:	BYTE (5) 1,1,6,1,2,7,1,2,10,1,4,10,1,4,6,0,8,6
T2116:	BYTE (5) 1,0,10,1,2,8,1,4,10,1,4,6,0,8,6
T2117:	BYTE (5) 1,0,10,0,4,10,1,4,6,0,4,8,1,0,8,0,8,6
T2120:	BYTE (5) 0,0,7,1,0,9,1,1,10,1,3,10,1,4,9,1,4,7,1,3,6
	BYTE (5) 1,1,6,1,0,7,0,8,6
T2121:	BYTE (5) 1,0,10,1,4,10,1,4,6,0,8,6
T2122:	BYTE (5) 1,0,9,1,1,10,1,3,10,1,4,9,1,4,7,1,3,6,1,1,6
	BYTE (5) 1,0,7,1,0,4,0,8,6
T2123:	BYTE (5) 0,4,9,1,3,10,1,1,10,1,0,9,1,0,7,1,1,6,1,3,6
	BYTE (5) 1,4,7,0,8,6
T2124:	BYTE (5) 0,0,10,1,4,10,0,2,10,1,2,6,0,8,6
T2125:	BYTE (5) 0,0,9,1,3,6,0,6,9,1,1,4,1,0,4,0,8,6
T2126:	BYTE (5) 0,0,7,1,0,9,1,1,10,1,3,10,1,4,9,1,4,7,1,3,6
	BYTE (5) 1,1,6,1,0,7,0,2,11,1,2,5,0,8,6
T2127:	BYTE (5) 1,4,10,0,0,10,1,4,6,0,8,6
T2130:	BYTE (5) 0,0,10,1,0,6,1,2,6,1,2,10,0,2,6,1,3,5,0,8,6
T2131:	BYTE (5) 0,0,10,1,0,9,1,1,8,1,3,8,0,3,10,1,3,6,0,8,6
T2132:	BYTE (5) 0,0,10,1,0,6,1,2,6,1,2,10,0,2,6,1,4,6,1,4,10
	BYTE (5) 0,8,6
T2133:	BYTE (5) 0,0,10,1,0,6,1,2,6,1,2,10,0,2,6,1,4,6,1,4,10
	BYTE (5) 0,4,6,1,5,5,0,8,6
T2134:	BYTE (5) 0,0,10,1,0,11,1,2,11,1,2,6,1,3,6,1,4,7,1,4,8
	BYTE (5) 1,3,9,1,2,9,0,8,6
T2135:	BYTE (5) 0,0,11,1,0,6,1,1,6,1,2,7,1,2,8,1,1,9,1,0,9
	BYTE (5) 0,3,6,1,3,11,0,8,6
T2136:	BYTE (5) 0,0,11,1,0,6,1,1,6,1,2,7,1,2,8,1,1,9,1,0,9
	BYTE (5) 0,8,6
T2137:	BYTE (5) 0,0,7,1,1,6,1,3,6,1,4,7,1,4,9,1,3,10,1,1,10
	BYTE (5) 1,0,9,0,4,8,1,2,8,0,8,6
T2140:	BYTE (5) 1,0,10,0,0,8,1,2,8,1,2,9,1,3,10,1,4,9,1,4,7
	BYTE (5) 1,3,6,1,2,7,1,2,8,0,8,6
T2141:	BYTE (5) 0,4,6,1,4,10,1,1,10,1,0,9,1,1,8,1,4,8,0,2,8
	BYTE (5) 1,0,6,0,8,6
T2142:	BYTE (5) 0,8,6
	PRGEND
	TITLE	PLOT SUBROUTINES
	SUBTTL R C CLEMENTS/DMN/CKS/EDS/PLB

	SEARCH	MTHPRM,FORPRM
	FSRCH		;[3210]
	SEGMENT	CODE

;FROM	LIB40 V010 - 05 AUG 68
;THIS PACKAGE CONTAINS THE PLOT ROUTINES FOR THE XY10 PLOTTER.
;THE CALLING SEQUENCE IS THAT USED BY FORTRAN 10

;THE CALLS ARE:
;	CALL PLOTS (I)
;	CALL PLOT (X,Y,PEN)
;	CALL SYMBOL (X,Y,SIZE,BCD,THETA,NBCD)
;	CALL SYMBOL (X,Y,SIZE,CHARARCTEREXP,THETA)	![3210]
;	CALL SETABL (TABLE,ANSWER)
;	CALL MKTBL (TABLENUMBER,ADDRESS)
;	CALL WHERE (X,Y)
;	CALL NUMBER (X,Y,SIZE,FPNUM,THETA,FRACTDIGITS)
;
;	X,Y ARE INCHES FROM ORIGIN, FLT PT
;	SIZE IS CHARACTER HEIGHT, FLT PT, SHOULD BE
;	 A MULTIPLE OF .08" IF SMALL
;
;	THETA IS IN DEGREES, FLT PT.
;	PEN IS
;	3 PEN UP
;	2 PEN DOWN
;	1 PEN UNCHANGED
;	-N = N AND THEN CLEAR X,Y AND OUTPUT

;PLOTTER COMMANDS (USING CALCOMP'S AXIS CONVENTIONS)

	PENUP=40
	PENDWN=20
	MVLFT=10	;-X DRUM UP
	MVRT=4		;+X DRUM DOWN
	MVDWN=1		;-Y CARRIAGE RIGHT
	MVUP=2		;+Y CARRIAGE LEFT

IF10,<DFSTEP==100.0>	;DEFAULT STEPS PER INCH
IF20,<DFSTEP==254.0>
;ACCUMULATOR DEFINITIONS

;  0	;TEMP USED BY F4LIB
SC=1	;SCALER IN BRM IN PLOT.
TX=2	;TEMP FOR X IN PLOT.
TY=3	;TEMP FOR Y IN PLOT.
;  4	;CLOBBERED IN PLOT. BY IDIV
CHAR=5	;CHARACTER IN SYMBOL
STROKE=6	;STROKE BYTE POINTER
SCT=7	;STROKE COUNT
XO=10	;ORIGIN OF CHAR IN SYMBOL
YO=11	;ORIGIN OF CHAR IN SYMBOL
TP=12	;BYTE POINTER TO TEXT
TDX=13	;TEMP FOR DAT FOR X IN PLOT.
TDY=14	;TEMP FOR DAT FOR Y IN PLOT.
DAT=15	;ARGUMENT FOR PLT1,TEMP IN SYMBOL
Q=16	;JSA AC

EXTERN OPEN.,WTB.,IOLST.
EXTERN SIND.,COSD.,EXP2.,PLOT.A

	HELLO	(PLOTS)
	SETZM @0(Q)	;MARK SUCCESS
	HLRE T1,-1(Q)	;GET ARG COUNT
	CAMG T1,[-2]	;MORE THAN 1?
	 SKIPN T1,@1(Q)	;YES, GET STEP SIZE
	MOVSI T1,(DFSTEP) ;NONE, USE DEFAULT
	MOVEM T1,STPSIZ	;SET STEP SIZE

	XMOVEI L,OPNARG	;[4003] POINT TO OPEN BLOCK
	PUSHJ P,OPEN.	;SET UP PLOT IO ON CHANNEL -7
	PUSHJ P,PLTINI	;SET UP BUFFER

	SETOM PEN	;MARK PEN DOWN TO FORCE RAISE
	FUNCT (PLOT,<X,Y,[-3]>)	;[4003] MOVE TO HERE, RAISE PEN
	MOVE T1,[IFIW PLOT.A(CHAR)] ;[4003] PTR TO CHAR SET TABLE FOR SYMBOL
	MOVEM T1,T1M

	POPJ P,
	;PLOT ROUTINE

	HELLO	(PLOT)
	MOVE 1,[IOWD 4,ARGS] ;[4003] LOCAL STACK
	PUSH 1,@0(Q)	;SVX
	PUSH 1,@1(Q)	;SVY
	PUSH 1,@2(Q)	;SVPEN
	PUSHJ P,PLOT.	;DO WORK
	POPJ P,

PLT1:	SOSG POB+2
	 PUSHJ P,PLTOUT
	IDPB DAT,POB+1
	POPJ P,0

PLTOUT:	PUSH P,T1	;SAVE TEMP ACS
	HRRZ T1,POB+1	;POINT TO BYTE LAST STORED
	SUBI T1,PLTBUF-1 ;GET COUNT OF WORDS IN BUFFER
	JUMPE T1,PLTSKP	;NONE, SKIP OUTPUT
	MOVEM T1,PLTN	;STORE WORD COUNT
	XMOVEI L,WTBARG	;[4003] WRITE BUFFER
	PUSHJ P,WTB.
	XMOVEI L,IOLARG	;[4003]
	PUSHJ P,IOLST.
	JRST PLTSKP

PLTINI:	PUSH P,T1
PLTSKP:	MOVE T1,[POINT 6,PLTBUF-1,35] ;RESET POINTER
	MOVEM T1,POB+1
	MOVEI T1,6*PLTL	;RESET BYTE COUNT
	MOVEM T1,POB+2
	SETZM PLTBUF	;CLEAR BUFFER
	MOVE T1,[PLTBUF,,PLTBUF+1]
	BLT T1,PLTBUF+PLTL-1
	POP P,T1
	POPJ P,

;	IFIW	     KEYWORD	DATA TYPE	DATA

	XWD -5,0
OPNARG:	BYTE (2)^B10 (7)OK.UNIT (4)TP%INT (5)0 (18)[-7] ;[4003]
	BYTE (2)^B10 (7)OK.ACC  (4)TP%LIT (5)0 (18)[ASCIZ /SEQOUT/] ;[4003]
	BYTE (2)^B10 (7)OK.MOD  (4)TP%LIT (5)0 (18)[ASCIZ /IMAGE/] ;[4003]
	BYTE (2)^B10 (7)OK.DEV  (4)TP%LIT (5)0 (18)[ASCIZ /PLT/] ;[4003]
	BYTE (2)^B10 (7)OK.FIL  (4)TP%LIT (5)0 (18)[ASCIZ /DATA.PLT/] ;[4003]

	XWD -1,0
WTBARG:	BYTE (2)^B10 (7)IK.UNIT (4)TP%INT (5)0 (18)[-7] ;[4003]

	XWD -4,0
IOLARG:	BYTE (2)^B10 (7)2 (4)TP%INT (5)0 (18)PLTN ;[4003] SLIST:  PLTN WORDS
	BYTE (2)^B10 (7)0 (4)TP%INT (5)0 (18)[1]  ;[4003] BY 1
	BYTE (2)^B10 (7)0 (4)TP%INT (5)0 (18)PLTBUF ;[4003] STARTING @ PLTBUF
	BYTE (2)^B10 (7)4 (27)0		;[4003] FIN
PLOT.:
PENCK:	MOVM TX,SVPEN	;SAVE ABS(TX) FOR PEN
	CAIG TX,1	;LEAVE PEN AS IS?
	 JRST PENOK	;YES
	SUBI TX,3
	CAMN TX,PEN
	 JRST PENOK
	MOVEI DAT,PENUP
	SKIPGE TX
	 MOVEI DAT,PENDWN
	PUSHJ P,PLT1
	MOVEM TX,PEN
PENOK:	MOVE TX,SVX
	FMPR TX,STPSIZ
	FADRI TX,(0.5)
	SKIPGE	SVX
	FSBRI TX,(1.0)
	FIX 0,TX
	MOVEM 0,ISX
	MOVE TX,0
	MOVE TY,SVY
	FMPR TY,STPSIZ
	FADRI TY,(0.5)
	SKIPGE	SVY
	FSBRI TY,(1.0)
	FIX 0,TY
	MOVEM 0,ISY
	MOVE TY,0
	SUB TX,IX
	MOVEI TDX,MVLFT
	SKIPL TX
	MOVEI TDX,MVRT
	SUB TY,IY
	MOVEI TDY,MVDWN
	SKIPL TY
	MOVEI TDY,MVUP
	MOVMS TX
	MOVMS TY
	CAMG TY,TX
	JRST NOSWAP
	EXCH TX,TY
	EXCH TDX,TDY
NOSWAP:	JUMPE TX,ENDOU1	;NO MOTION
	JUMPE TY,NORM
	MOVEI SC,0
NY:	TLNE TY,200000
	JRST NX
	LSH TY,1
	TRO TY,1
	AOJA SC,NY
NX:	SUBI SC,^D34
MKSC:	IDIV TY,TX
	MOVN SC,SC
	LSH TY,0(SC)
NORM:	MOVEM TY,STEP
	MOVEI TY,0
	IOR TDY,TDX
INLOOP:	ADD TY,STEP
	MOVE DAT,TDX
	TLZE TY,200000
	MOVE DAT,TDY
	PUSHJ P,PLT1
	SOJG TX,INLOOP

	MOVE TY,ISX
	MOVEM TY,IX
	MOVE TY,SVX
	MOVEM TY,X
	MOVE TY,ISY
	MOVEM TY,IY
	MOVE TY,SVY
	MOVEM TY,Y
ENDOU1:	SKIPL SVPEN
	JRST ENDOUT
	PUSHJ P,PLTOUT
	SETZM X
	SETZM Y
	SETZM IX
	SETZM IY
ENDOUT:	SETZM SVPEN
	POPJ P,0
	;ROUTINE TO PLOT CHARACTERS

	HELLO	(SYMBOL)
	MOVE 1,[IOWD 3,ARGS] ;[3210] LOCAL STACK
	PUSH 1,@0(Q)	;SVX
	PUSH 1,@1(Q)	;SVY

	MOVE 0,@2(Q)	;[3210]
	MOVEM 0,SVSZ	;[3210] SIZE

	MOVE 0,@4(Q)	;[3210]
	MOVEM 0,SVOR	;[3210] THETA

	XMOVEI 1,@3(Q)	;[3210] TEXT ADDR OR DESCRIPTOR ADDR
	LDB 0,[POINTR(3(Q),ARGTYP)] ;[3210] LOAD OUT TYPE
	CAIE 0,TP%CHR	;[3210] CHARACTER?
	 JRST [	$BLDBP 1 ;[3210] MAKE THE RIGHT KIND OF BP
		MOVE 0,@5(Q) ;[3210] LOAD TEXT LENGTH
		JRST SYM1] ;[3210] JOIN COMMON CODE FOR CHAR
	MOVE 0,1(1)	;[3210] FETCH LENGTH FROM DESCRIPTOR
	MOVE 1,0(1)	;[3210] STEAL BYTE POINTER TOO
SYM1:	MOVEM 0,SVNTXT	;[3210] STORE LENGTH
	MOVEM 1,SVTXT	;[3210] STORE TEXT BP

	FUNCT (COSD.,<<TP%SPR,SVOR>>)
	MOVEM 0,COSOR	;COS(THETA)
	FUNCT (SIND.,<<TP%SPR,SVOR>>)
	MOVEM 0,SINOR	;SIN(THETA)
	MOVEI TX,3
	MOVEM TX,SVPEN	;PEN UP
	PUSHJ P,PLOT.	;MOVE TO X,Y SUPPLIED
	SKIPG SVSZ
	 JRST ENDTXT	;SIZE MUST BE >0
	MOVE TP,SVTXT	;[3210] BP TO TEXT

LP1:	SOSGE SVNTXT
	 JRST ENDTXT
	ILDB CHAR,TP	;GET TEXT CHAR

;[4003] The Stroke  table  has one  word  entries of  the  form:
;[4003] CNT,,[STROKES].  The correct stroke table entry is found
;[4003] by an EA calc through the EFIW indexed by CHAR contained
;[4003] in T1M. Since the address of [STROKES] is only 18  bits,
;[4003] the section number from the table entry is used.

	MOVSI 0,<(POINT 5,(STROKE))> ;[4003] STROKES HAVE 5 BIT BYTES
	MOVEM 0,STRKBP	;[4003] SAVE STROKE BP
	XMOVEI STROKE,@T1M ;[4003] GET ADDRESS OF CNT,,[STROKES]
	HRR STROKE,(STROKE) ;[4003] MAKE SECTION,,[STROKES]
			;[4003] THIS WILL CAUSE GLOBAL INDEXING IN STRKBP
	HLRZ SCT,@T1M	;NUMBER OF STROKES
	JUMPE SCT,LP1	;UNDEFINED CHAR

	MOVE XO,X
	MOVE YO,Y	;ORIGIN OF THE CHARACTER
OUT1:	ILDB TX,STRKBP	;1 FOR MARK, 0 FOR BLANK
	MOVN TX,TX
	ADDI TX,3
	MOVEM TX,SVPEN	;2 FOR MARK, 3 FOR BLANK
	ILDB TX,STRKBP	;LOAD X STROKE
	ILDB TY,STRKBP	;LOAD Y STROKE
	SUBI TY,6	;OFFSET FOR VERTICAL
	FSC TX,230	;FLOAT AND DIVIDE BY 8
	FSC TY,230
	FMPR TX,SVSZ	;SCALE UP BY CHARACTER SIZE
	FMPR TY,SVSZ

	MOVE DAT,TX
	FMPR DAT,COSOR	;X*COS(THETA)
	MOVN 0,TY
	FMPR 0,SINOR	;-Y*SIN(THETA)
	FADR 0,DAT	;ADD TOGETHER
	FADR 0,XO	;ADD IN ORIGIN
	MOVEM 0,SVX	;STORE AS X TO PLOT TO

	MOVE DAT,TY
	FMPR DAT,COSOR	;Y*COS(THETA)
	MOVE 0,TX
	FMPR 0,SINOR
	FADR 0,DAT	;+X*SIN(THETA)
	FADR 0,YO	;ADD ON Y ORIGIN
	MOVEM 0,SVY	;Y TO PLOT TO

	PUSHJ P,PLOT.
	SOJG SCT,OUT1	;LOOP FOR ALL STROKES
	JRST LP1	;LOOP FOR ALL CHARACTERS

ENDTXT:	POPJ P,
	;ROUTINE TO ALLOW USE OF DIFFERENT CHARACTER TABLE
	;[4003] REFORMATTED

	HELLO	(SETABL)
	MOVE	T1, @(Q)	;GET CODE
	SETZM	@1(Q)		;INDICATE SUCCESS
	JUMPLE	T1, NOGO	;<= ZERO IS ILLEGAL
	CAILE	T1,^D10		;MUST BE <= 10.
	 JRST	NOGO
	SKIPN	T1, CTBL-1(T1)	;GET INDICATED TABLE
	 JRST	NOGO		;[4003] NO SUCH TABLE (EMPTY)
	MOVEM	T1, T1M		;RESET PARAMETERS IN SYMBOL
	SKIPA
NOGO:	 SETOM	@1(Q)		;GIVE ERROR INDICATION
	POPJ	P,


	;ROUTINE TO ALLOW NEW TABLE TO BE CREATED
	;GIVEN NUMBER AND POINTER TO NEW TABLE
	;[4003] REFORMATTED

	HELLO	(MKTBL)
	MOVE	T1, @(Q)	;FETCH SETNUMBER
	CAIG	T1, ^D10	;TOO BIG?
	 SKIPG	T1		;TOO SMALL?
	  JRST	FOOT		;YES, GIVE IT THE BOOT
	MOVEM	T1, SVTB	;OK, SAVE SETNUMBER
	XMOVEI	T0, @1(Q)	;[4003] GET ADDR OF CHARACTER TABLE
	TLNE	T0, -1		;[4003] NON-ZERO SECTION?
	 TLOA	T0, (<CHAR>B5)	;[4003] YES, USE EFIW
	  HRLI	T0, (IFIW (CHAR)) ;[4003] NO, USE IFIW
	MOVEM	T0, CTBL-1(T1)	;PUT IN POINTER
	SKIPA			;RETURN OK
FOOT:	 SETZM	@0(Q)		;RETURN FAILURE
	POPJ	P,
	;ROUTINE TO GIVE BACK CURRENT X,Y POSITION

	HELLO	(WHERE)
	MOVE T1,X	;RETURN X, Y
	MOVEM T1,@0(L)
	MOVE T1,Y
	MOVEM T1,@1(L)
	POPJ P,
	;ROUTINE TO PLOT NUMBERS

	HELLO	(NUMBER)
	MOVE 1,[IOWD 7,NARGS] ;[4003] LOCAL STACK POINTER TO COPY ARGS
	PUSH 1,@0(Q)	;SVXN	X (LOWER LEFT CORNER OF FIRST DIGIT)
	PUSH 1,@1(Q)	;SVYN	Y (LOWER LEFT CORNER OF FIRST DIGIT)
	PUSH 1,@2(Q)	;SVSZN	SIZE IN INCHES
	PUSH 1,@3(Q)	;SVFN	FNUM - THE FLOATING POINT NUMBER
	PUSH 1,@4(Q)	;SVORN	THETA - DIRECTION (IN DEGREES)
	PUSH 1,@5(Q)	;SVNN	NDIGIT - NUMBER OF DIGITS TO THE RIGHT OF '.'
			;		 IF SVNN < 0 PRINT ROUNDED INTEGER
	FUNCT (PLOT,<SVXN,SVYN,[3]>) ;[4003] MOVE TO X,Y WITH PEN UP

	MOVSI 1,(ASCII '-') ;[4003]
	SKIPGE SVFN	;NEGATIVE?
	 PUSHJ P,DECP2	;YES, TYPE A MINUS
	MOVMS SVFN	;MAKE NUMBER POSTIVE NOW
	SKIPGE 1,SVNN	;FLOATING?
	 MOVEI 1,0	;NO, WILL BE NO DIGITS PAST THE DOT
	MOVNM 1,T2T
	FUNCT (EXP2.,<<TP%SPR,[10.0]>,<TP%SPR,T2T>>) ;[4003]
	MOVEM 0,T2T	;SAVE
	FSC 0,-1	;GET ROUNDING FACTOR (DIVIDE BY 2)
	FADRB 0,SVFN	;ROUND IN FIRST INSIGNIFICANT DIGIT
	FDVR 0,T2T	;SCALE TO AN INTEGER
	FIX 0,0
	MOVEM 0,UNITS
	PUSHJ P,DECPLT	;PLOT IT
	MOVSI 1,(ASCII '.') ;[4003]
	SKIPN SVNN	;TYPING ZERO DIGITS PAST '.'?
	 PUSHJ P,DECP2	;YES, TYPE DECIMAL POINT NOW
ENDNUM:	POPJ P,
; PLOT MAGITUDE DECIMAL INTEGER FROM UNITS

DECPLT:	MOVM T1,UNITS	;TAKE MAGNITUDE
	SETZM DIGITS	;NO DIGITS YET
DECP3:	IDIVI T1,^D10	;DIVIDE OFF A DIGIT
	PUSH P,T2	;[4003] SAVE REMAINDER
	AOS DIGITS	;KEEP COUNT
	SKIPE T1	;ANY DIGITS LEFT?
	 PUSHJ P,DECP3	;YES, RECURSE
; UNWINDING NOW
	MOVE 0,DIGITS	;GET DIGITS TYPES
	CAMLE 0,SVNN
	 JRST DECP4
	MOVSI T1,(ASCII '.') ;[4003]
	PUSHJ P,DECP2	;PLOT A "."
	CAML 0,SVNN
	 JRST DECP4A
DECP5:	MOVSI T1,(ASCII '0') ;[4003]
	PUSHJ P,DECP2	;TYPE IT
	AOS T1,DIGITS	;ANOTHER DIGIT TYPED
	CAMGE T1,SVNN
	 JRST DECP5
DECP4A:	SETOM SVNN	;FAKE OUT TEST NEXT TIME AROUND
DECP4:	SOS DIGITS
	POP P,T1	;GET NEXT DIGIT OFF STACK
	TRO T1,60	;MAKE ASCII
	ROT T1,-7	;MAKE LEFT JUSTIFIED

DECP2:	MOVEM T1,TEMP	;SAVE FOR CALL TO SYMBOL
	PUSH P,0		;[3314] SAVE AC 0
	FUNCT (SYMBOL,<<TP%SPR,X>,<TP%SPR,Y>,<TP%SPR,SVSZN>,<TP%SPR,TEMP>,
<TP%SPR,SVORN>,<TP%INT,[1]>>) ;TYPE AS A SYMBOL
	POP P,0			;[3314] RESTORE AC 0
	POPJ P,0

	SEGMENT	DATA

;ALL SORTS TEMPS AND STUFF

STRKBP:	BLOCK 1		;[4003] BYTE POINTER FOR STROKES
POB:	BLOCK 3

PLTL==200		;LENGTH OF PLOT BUFFER
PLTBUF:	BLOCK	PLTL
PLTN==POB		;COUNT OF WORDS FILLED IN BUFFER

ARGS:	;ARGUMENT STORAGE - DO NOT REARRANGE
SVX:	0
SVY:	0
SVPEN:	0
SVSZ:	0
SVTXT:	0
SVOR:	0
SVNTXT:	0
NARGS:
SVXN:	0
SVYN:	0
SVSZN:	0
SVFN:	0
SVORN:	0
SVNN:	0
X:	0
Y:	0
PEN:	0
STEP:	0
UNITS:	0
DIGITS:	0
TEMP:	0
T2T:	0
SVTB:	0
COSOR:	0
SINOR:	0
ISX:	0
ISY:	0
IX:	0
IY:	0

STPSIZ:	0
T1M:	0

	EXTERNAL PLOTC,PLOTF

CTBL:	IFIW	PLOT.A(CHAR)	;[4003] LINE PRINTER CHARACTER SET
	IFIW	PLOTC(CHAR)	;[4003] RUSSIAN OR 0 IF NOT LOADED
	IFIW	PLOTF(CHAR)	;[4003] FAENORIAN OR 0 IF NOT LOADED
	EXP	0,0,0,0,0,0,0	;FILL OUT TO 10.

	PRGEND
	TITLE	PLOT.A	ASCII CHARACTER DEFS
	SUBTTL	DAVE NEFF/DZN		25-Jul-79

;	CHARS is a module defining a character set for plotting. It
;conforms to the specifications of FORTRAN's plotting subroutines,
;and therefore has the following format:
;
;	XWD	STROKS,ADDR
;
;where STROKS is the number of pen strokes in the character, and
;ADDR is the address of the following:
;
;ADDR:	BYTE	(5)PEN1,X1,Y1,PEN2,X2,Y2,...,PENn,Xn,Yn
;
;PENi is 1 for a visible stroke, and 0 for an invisible one. The
;Xi and Yi have a rather obscure format. The values of Xi and Yi
;can take on the values from 0 to 15, but a character is considered to
;start at (0,6). The character can wander about anywhere in the field of
;dots, but normal characters should end up at (8,6). In fact, all characters
;(except for things like underbars, and lower case characters that go
;below the line) will usually remain in the rectangle (0,6), (0,14), (6,14),
;and (6,6).
;
;	The macros below allow the table to be defined in a manner that
;allows each stroke to be picked out easily. Unfortunately, this has
;required rather complex and obscure macros. Too bad.

; [4003] Note for extended addressing; Since the character table
; [4003] entries are of the form COUNT,,ADDR the ADDR is assumed to
; [4003] come from the same section as the count, address pair.  God
; [4003] help you if you make a table that crosses section boundries.

	SEARCH	MTHPRM,FORPRM		;[3121] Use common library macros
	SALL	;You delete this at your on risk

	ENTRY	PLOT.A
	SEGMENT	CODE
	RADIX	10

	DEFINE	CLEAR<DEFINE CONCAT(FTXT)<DEFINE CONCAT(TEXT)<CON1 <TEXT>,<FTXT>>
					  DEFINE EXPAND<FTXT>>
		      DEFINE EXPAND<>>

	DEFINE	CON1(NTXT,OTXT)<DEFINE CONCAT(TEXT)<CON1<TEXT>,<OTXT','NTXT>>
				DEFINE EXPAND<OTXT','NTXT>>

	DEFINE	C(LIST)<
	$$Z==0
	CLEAR
	IRP	LIST,<
		$$Z==$$Z+1
		CONCAT LIST>
	$$Z,,[BYTE (5)EXPAND]
	>
	SUBTTL	The ASCII Character Set for Plotters

;NUL	^@
PLOT.A:	0

;	^A
	0

;	^B
	0

;	^C
	0

;	^D
	0

;	^E
	0

;	^F
	0

;BEL	^G
	0
;BS	^H
	0

;TAB	^I
	0

;LF	^J
	0

;VT	^K
	0

;FF	^L
	0

;CR	^M
	0

;	^N
	0

;	^O
	0
;	^P
	0

;	^Q
	0

;	^R
	0

;	^S
	0

;	^T
	0

;	^U
	0

;	^V
	0

;	^W
	0
;	^X
	0

;	^Y
	0

;	^Z
	0

;	^[
	0

;	^\
	0

;	^]
	0

;	^^
	0

;	^_
	0
;	<space>
C <<0,8,6>>

;	!
C <<0,3,6>,<1,2,7>,<1,3,8>,<1,4,7>,<1,3,6>,<0,3,9>,<1,2,14>,
<1,4,14>,<1,3,9>,<0,8,6>>

;	"
C <<0,2,12>,<1,3,13>,<1,3,14>,<1,2,14>,<1,2,13>,<1,3,13>,<0,4,12>,
<1,5,13>,<1,5,14>,<1,4,14>,<1,4,13>,<1,5,13>,<0,8,6>>

;	#
C <<0,2,7>,<1,2,13>,<0,4,13>,<1,4,7>,<0,6,9>,<1,0,9>,<0,0,11>,<1,6,11>,
<0,8,6>>

;	$
C <<0,1,8>,<1,2,7>,<1,4,7>,<1,5,8>,<1,5,9>,<1,4,10>,<1,2,10>,<1,1,11>,<1,1,12>,
<1,2,13>,<1,4,13>,<1,5,12>,<0,3,14>,<1,3,6>,<0,8,6>>

;	%
C <<1,6,14>,<0,2,14>,<1,0,14>,<1,0,12>,<1,2,12>,<1,2,14>,<0,4,6>,
<1,4,8>,<1,6,8>,<1,6,6>,<1,4,6>,<0,8,6>>

;	&
C <<0,6,6>,<1,0,12>,<1,0,13>,<1,1,14>,<1,2,14>,<1,3,13>,<1,3,12>,<1,0,8>,
<1,0,7>,<1,1,6>,<1,3,6>,<1,6,9>,<0,8,6>>

;	'
C <<0,2,12>,<1,4,14>,<0,8,6>>
;	(
C <<0,4,6>,<1,3,7>,<1,2,9>,<1,2,11>,<1,3,13>,<1,4,14>,<0,8,6>>

;	)
C <<0,2,6>,<1,3,7>,<1,4,9>,<1,4,11>,<1,3,13>,<1,2,14>,<0,8,6>>

;	*
C <<0,0,10>,<1,6,10>,<0,5,12>,<1,1,8>,<0,3,7>,<1,3,13>,<0,1,12>,<1,5,8>,
<0,8,6>>

;	+
C <<0,0,10>,<1,6,10>,<0,3,13>,<1,3,7>,<0,8,6>>

;	,
C <<0,2,5>,<1,3,6>,<1,3,7>,<1,2,7>,<1,2,6>,<1,3,6>,<0,8,6>>

;	-
C <<0,0,10>,<1,6,10>,<0,8,6>>

;	.
C <<0,3,6>,<1,2,6>,<1,2,7>,<1,3,7>,<1,3,6>,<0,8,6>>

;	/
C <<1,6,14>,<0,8,6>>
;	0
C <<1,6,14>,<0,6,12>,<1,4,14>,<1,2,14>,<1,0,12>,<1,0,8>,<1,2,6>,<1,4,6>,
<1,6,8>,<1,6,12>,<0,8,6>>

;	1
C <<0,1,12>,<1,3,14>,<1,3,6>,<0,1,6>,<1,5,6>,<0,8,6>>

;	2
C <<0,0,13>,<1,1,14>,<1,5,14>,<1,6,13>,<1,6,11>,<1,5,10>,<1,1,8>,
<1,0,7>,<1,0,6>,<1,6,6>,<0,8,6>>

;	3
C <<0,0,13>,<1,1,14>,<1,5,14>,<1,6,13>,<1,6,11>,<1,5,10>,<1,3,10>,
<0,5,10>,<1,6,9>,<1,6,7>,<1,5,6>,<1,1,6>,<1,0,7>,<0,8,6>>

;	4
C <<0,5,6>,<1,5,14>,<1,0,9>,<1,6,9>,<0,8,6>>

;	5
C <<0,0,7>,<1,1,6>,<1,5,6>,<1,6,7>,<1,6,10>,<1,5,11>,<1,1,11>,<1,0,10>,
<1,1,14>,<1,6,14>,<0,8,6>>

;	6
C <<0,0,9>,<1,1,10>,<1,5,10>,<1,6,9>,<1,6,7>,<1,5,6>,<1,1,6>,<1,0,7>,
<1,0,10>,<1,1,12>,<1,2,13>,<1,4,14>,<1,5,14>,<0,8,6>>

;	7
C <<1,6,14>,<1,0,14>,<0,8,6>>
;	8
C <<0,1,10>,<1,0,11>,<1,0,13>,<1,1,14>,<1,5,14>,<1,6,13>,<1,6,11>,
<1,5,10>,<1,1,10>,<1,0,9>,<1,0,7>,<1,1,6>,<1,5,6>,<1,6,7>,<1,6,9>,
<1,5,10>,<0,8,6>>

;	9
C <<0,1,6>,<1,2,6>,<1,4,7>,<1,5,8>,<1,6,10>,<1,6,13>,<1,5,14>,
<1,1,14>,<1,0,13>,<1,0,11>,<1,1,10>,<1,5,10>,<1,6,11>,<0,8,6>>

;	:
C <<0,3,6>,<1,3,7>,<1,2,7>,<1,2,6>,<1,3,6>,<0,3,9>,<1,3,10>,<1,2,10>,
<1,2,9>,<1,3,9>,<0,8,6>>

;	;
C <<0,2,5>,<1,3,6>,<1,3,7>,<1,2,7>,<1,2,6>,<1,3,6>,<0,3,9>,<1,3,10>,<1,2,10>,
<1,2,9>,<1,3,9>,<0,8,6>>

;	<
C <<0,6,7>,<1,0,10>,<1,6,13>,<0,8,6>>

;	=
C <<0,0,9>,<1,6,9>,<0,6,11>,<1,0,11>,<0,8,6>>

;	>
C <<0,0,7>,<1,6,10>,<1,0,13>,<0,8,6>>

;	?
C <<0,3,6>,<1,2,7>,<1,3,8>,<1,4,7>,<1,3,6>,<0,0,13>,<1,1,14>,<1,5,14>,
<1,6,13>,<1,6,11>,<1,5,10>,<1,4,10>,<1,3,9>,<0,8,6>>
;	@
C <<0,4,8>,<1,5,9>,<1,5,11>,<1,4,12>,<1,2,12>,<1,1,11>,<1,1,9>,
<1,2,8>,<1,5,8>,<1,6,9>,<1,6,12>,<1,4,14>,<1,2,14>,<1,0,12>,<1,0,8>,
<1,2,6>,<1,4,6>,<1,5,7>,<0,8,6>>

;	A
C <<1,3,14>,<1,6,6>,<0,1,9>,<1,5,9>,<0,8,6>>

;	B
C <<1,0,14>,<1,5,14>,<1,6,13>,<1,6,11>,<1,5,10>,<1,0,10>,<0,5,10>,<1,6,9>,
<1,6,7>,<1,5,6>,<1,0,6>,<0,8,6>>

;	C
C <<0,6,13>,<1,5,14>,<1,1,14>,<1,0,13>,<1,0,7>,<1,1,6>,<1,5,6>,<1,6,7>,
<0,8,6>>

;	D
C <<1,0,14>,<1,3,14>,<1,5,13>,<1,6,11>,<1,6,9>,<1,5,7>,<1,3,6>,<1,0,6>,
<0,8,6>>

;	E
C <<1,0,14>,<1,6,14>,<0,4,10>,<1,0,10>,<0,0,6>,<1,6,6>,<0,8,6>>

;	F
C <<1,0,14>,<1,6,14>,<0,4,10>,<1,0,10>,<0,8,6>>

;	G
C <<0,3,10>,<1,6,10>,<1,6,7>,<1,5,6>,<1,1,6>,<1,0,7>,<1,0,13>,<1,1,14>,
<1,5,14>,<1,6,13>,<0,8,6>>
;	H
C <<1,0,14>,<0,0,10>,<1,6,10>,<0,6,14>,<1,6,6>,<0,8,6>>

;	I
C <<0,1,14>,<1,5,14>,<0,3,14>,<1,3,6>,<0,1,6>,<1,5,6>,<0,8,6>>

;	J
C <<0,0,8>,<1,0,7>,<1,1,6>,<1,3,6>,<1,4,7>,<1,4,14>,<0,2,14>,<1,6,14>,
<0,8,6>>

;	K
C <<1,0,14>,<0,0,10>,<1,6,14>,<0,0,10>,<1,6,6>,<0,8,6>>

;	L
C <<0,0,14>,<1,0,6>,<1,6,6>,<0,8,6>>

;	M
C <<1,0,14>,<1,3,10>,<1,6,14>,<1,6,6>,<0,8,6>>

;	N
C <<1,0,14>,<1,6,6>,<1,6,14>,<0,8,6>>

;	O
C <<0,0,7>,<1,0,13>,<1,1,14>,<1,5,14>,<1,6,13>,<1,6,7>,<1,5,6>,<1,1,6>,
<1,0,7>,<0,8,6>>
;	P
C <<1,0,14>,<1,5,14>,<1,6,13>,<1,6,11>,<1,5,10>,<1,0,10>,<0,8,6>>

;	Q
C <<0,1,6>,<1,0,7>,<1,0,13>,<1,1,14>,<1,5,14>,<1,6,13>,<1,6,7>,
<1,5,6>,<1,1,6>,<0,3,8>,<1,4,8>,<1,6,6>,<1,7,6>,<0,8,6>>

;	R
C <<1,0,14>,<1,5,14>,<1,6,13>,<1,6,11>,<1,5,10>,<1,0,10>,<0,2,10>,
<1,6,6>,<0,8,6>>

;	S
C <<0,0,7>,<1,1,6>,<1,5,6>,<1,6,7>,<1,6,9>,<1,5,10>,<1,1,10>,<1,0,11>,
<1,0,13>,<1,1,14>,<1,5,14>,<1,6,13>,<0,8,6>>

;	T
C <<0,3,6>,<1,3,14>,<0,0,14>,<1,6,14>,<0,8,6>>

;	U
C <<0,0,14>,<1,0,7>,<1,1,6>,<1,5,6>,<1,6,7>,<1,6,14>,<0,8,6>>

;	V
C <<0,0,14>,<1,3,6>,<1,6,14>,<0,8,6>>

;	W
C <<0,0,14>,<1,0,6>,<1,3,10>,<1,6,6>,<1,6,14>,<0,8,6>>
;	X
C <<1,6,14>,<0,0,14>,<1,6,6>,<0,8,6>>

;	Y
C <<0,3,6>,<1,3,10>,<1,0,14>,<0,6,14>,<1,3,10>,<0,8,6>>

;	Z
C <<1,6,14>,<1,0,14>,<0,2,10>,<1,4,10>,<0,0,6>,<1,6,6>,<0,8,6>>

;	[
C <<0,5,14>,<1,3,14>,<1,3,6>,<1,5,6>,<0,8,6>>

;	\
C <<0,0,14>,<1,6,6>,<0,8,6>>

;	]
C <<0,1,14>,<1,3,14>,<1,3,6>,<1,1,6>,<0,8,6>>

;	^
C <<0,0,12>,<1,3,14>,<1,6,12>,<0,8,6>>

;	_
C <<0,0,4>,<1,6,4>,<0,8,6>>
;	`
C <<0,2,14>,<1,4,12>,<0,8,6>>

;	a
C <<0,5,7>,<1,4,6>,<1,1,6>,<1,0,7>,<1,0,10>,<1,1,11>,<1,4,11>,
<1,5,10>,<0,5,11>,<1,5,6>,<0,8,6>>

;	b
C <<1,0,14>,<0,0,10>,<1,1,11>,<1,4,11>,<1,5,10>,<1,5,7>,<1,4,6>,
<1,1,6>,<1,0,7>,<0,8,6>>

;	c
C <<0,5,10>,<1,4,11>,<1,1,11>,<1,0,10>,<1,0,7>,<1,1,6>,<1,4,6>,
<1,5,7>,<0,8,6>>

;	d
C <<0,5,14>,<1,5,6>,<0,5,7>,<1,4,6>,<1,1,6>,<1,0,7>,<1,0,10>,<1,1,11>,
<1,4,11>,<1,5,10>,<0,8,6>>

;	e
C <<0,0,8>,<1,5,9>,<1,5,10>,<1,4,11>,<1,1,11>,<1,0,10>,<1,0,7>,
<1,1,6>,<1,4,6>,<1,5,7>,<0,8,6>>

;	f
C <<0,0,10>,<1,2,10>,<0,1,6>,<1,1,13>,<1,2,14>,<1,4,14>,<1,5,13>,
<0,8,6>>

;	g
C <<0,0,3>,<1,1,2>,<1,4,2>,<1,5,3>,<1,5,11>,<0,5,10>,<1,4,11>,
<1,1,11>,<1,0,10>,<1,0,7>,<1,1,6>,<1,4,6>,<1,5,7>,<0,8,6>>
;	h
C <<1,0,14>,<0,0,10>,<1,1,11>,<1,4,11>,<1,5,10>,<1,5,6>,<0,8,6>>

;	i
C <<0,2,6>,<1,4,6>,<0,3,6>,<1,3,11>,<1,2,11>,<0,3,12>,<1,3,13>,
<1,2,13>,<1,2,12>,<1,3,12>,<0,8,6>>

;	j
C <<0,0,3>,<1,1,2>,<1,4,2>,<1,5,3>,<1,5,11>,<1,4,11>,<0,4,12>,
<1,4,13>,<1,5,13>,<1,5,12>,<1,4,12>,<0,8,6>>

;	k
C <<1,0,14>,<0,0,9>,<1,4,11>,<1,5,11>,<0,2,10>,<1,5,6>,<0,8,6>>

;	l
C <<0,2,6>,<1,4,6>,<0,3,6>,<1,3,14>,<1,2,14>,<0,8,6>>

;	m
C <<1,0,11>,<0,0,10>,<1,1,11>,<1,2,11>,<1,3,10>,<1,3,6>,<0,3,10>,
<1,4,11>,<1,5,11>,<1,6,10>,<1,6,6>,<0,8,6>>

;	n
C <<1,0,11>,<0,0,10>,<1,1,11>,<1,4,11>,<1,5,10>,<1,5,6>,<0,8,6>>

;	o
C <<0,1,6>,<1,0,7>,<1,0,10>,<1,1,11>,<1,4,11>,<1,5,10>,<1,5,7>,
<1,4,6>,<1,1,6>,<0,8,6>>
;	p
C <<0,0,7>,<1,1,6>,<1,4,6>,<1,5,7>,<1,5,10>,<1,4,11>,<1,1,11>,<1,0,10>,
<0,0,11>,<1,0,2>,<0,8,6>>

;	q
C <<0,5,7>,<1,4,6>,<1,1,6>,<1,0,7>,<1,0,10>,<1,1,11>,<1,4,11>,<1,5,10>,
<0,5,11>,<1,5,2>,<0,8,6>>

;	r
C <<0,1,6>,<1,1,10>,<1,0,11>,<0,1,10>,<1,2,11>,<1,4,11>,<1,5,10>,<0,8,6>>

;	s
C <<0,0,7>,<1,1,6>,<1,4,6>,<1,5,7>,<1,4,8>,<1,1,9>,<1,0,10>,<1,1,11>,
<1,4,11>,<1,5,10>,<0,8,6>>

;	t
C <<0,0,11>,<1,4,11>,<0,2,13>,<1,2,7>,<1,3,6>,<1,4,6>,<1,5,7>,<0,8,6>>

;	u
C <<0,0,11>,<1,0,7>,<1,1,6>,<1,4,6>,<1,5,7>,<0,5,11>,<1,5,6>,<0,8,6>>

;	v
C <<0,0,11>,<1,3,6>,<1,6,11>,<0,8,6>>

;	w
C <<0,0,11>,<1,1,6>,<1,3,10>,<1,5,6>,<1,6,11>,<0,8,6>>
;	x
C <<0,0,11>,<1,5,6>,<0,0,6>,<1,5,11>,<0,8,6>>

;	y
C <<0,0,2>,<1,3,6>,<1,0,11>,<0,3,6>,<1,6,11>,<0,8,6>>

;	z
C <<0,0,11>,<1,5,11>,<1,0,6>,<1,5,6>,<0,8,6>>

;	{
C <<0,4,14>,<1,3,13>,<1,3,11>,<1,2,10>,<1,3,9>,<1,3,7>,<1,4,6>,<0,8,6>>

;	|
C <<0,3,14>,<1,3,6>,<0,8,6>>

;	}
C <<0,2,14>,<1,3,13>,<1,3,11>,<1,4,10>,<1,3,9>,<1,3,7>,<1,2,6>,<0,8,6>>

;	~
C <<0,0,13>,<1,2,14>,<1,4,12>,<1,6,13>,<0,8,6>>

;DEL
C <<1,0,10>,<1,1,9>,<1,1,7>,<1,0,6>,<0,3,10>,<1,2,10>,<1,2,6>,<1,3,6>,
<0,2,8>,<1,3,8>,<0,4,10>,<1,4,6>,<1,5,6>,<0,8,6>>
	SUBTTL	The End

	LIT

	PRGEND
TITLE PLOTCD (DUMMY PLOTC)
ENTRY PLOTC
NOSYM
PLOTC==0
PRGEND
TITLE PLOTFD (DUMMY PLOTF)
ENTRY PLOTF
NOSYM
PLOTF==0
END