Google
 

Trailing-Edge - PDP-10 Archives - decuslib10-12 - 43,50547/setsym.mac
There is 1 other file named setsym.mac in the archive. Click here to see a list.
SUBTTL	Subroutine Descriptions -- SETSYM - Get data from SYMBOL.DAT
	SEARCH	PLTUNV	;Search the universal file
TTL	(<SETSYM - Gets the data tables for SYMBOL>)

;  This subroutine reads the SYMBOL table from either SYS:SYMBOL.DAT[1,4]
;or SYMBOL:SYMBOL.DAT[-], or returns information about the tables.
;NOTE:  In order to use the negative tables, the user must define the
;logical device SYMBOL: via the ASSIGN or PATH commands to the Monitor.

;Calling sequence:
;	CALL SETSYM(IFUNC,IARG,IANS)	!The 3rd arg may be a REAL variable
; IFUNC = (input)  Name of the function to perform.  INTEGER or CHARACTER*5.
; IARG  = (input)  The argument of the function
; IANS  = (output) Returned answer (not necessarily an integer)

;	CALL SETSYM('TABLE',ITABLE,IERR)
;  IFUNC  = 'TABLE' - Change tables or return the value of the current one.
; ITABLE = The number of the table to be loaded into memory for SYMBOL.
;   + = Positive values read from SYS:SYMBOL.DAT[1,4]
;   - = Negative values read from SYMBOL:SYMBOL.DAT[-]
;   0 = Same as CALL SETSYM('NUMBER',0,IANS)
; IERR   = The error flag .  Returned as 0 if no errors, as -1 if errors.

;	CALL SETSYM('NUMBER',0,IANS)
;  IFUNC  = 'NUMBE' - Read the current table number.
;  IARG   = Ignored.
;  IANS   = The table number.  Positive if the table was read from
;	    SYS:SYMBOL.DAT[1,4], negative if from SYMBOL:SYMBOL.DAT[-].

;	CALL SETSYM('NAME',IARG,CANS)
;  IFUNC  = 'NAME' - Return name corresponding with table number.
;  IARG   = Table number, zero means current table.
;  CANS   = The table name returned as CHARACTER*15.

;	CALL SETSYM('WIDTH',LETTER,WIDTH)
;  IFUNC  = 'WIDTH' - Read the width for the specified letter.
;  LETTER = The ASCII code or CHARACTER*1 variable.  "A"=65.
;  WIDTH  = The width as compared to the height, a number from 0.0 to 1.0.

		PAGE
;The tables defined in SYS:SYMBOL.DAT are:
;
;     Description	Upper	Lower	Number	Punctu-	Bracket	Symbols
;			case	case		ation	[\]^_	#$%+-<=>@
; --  --------------    -----   -----   ------  ------  ------- ---------
; 1.  CSM standard	Yes	Yes	Yes	Yes	Yes	Yes
; 2.  DEC standard	Yes	No	Yes	Yes	Yes	Yes
; 3.  Olde English	Yes	Yes	Yes	Yes	Yes	$ only
; 4.  Old German	Yes	Yes	No	No	No	No
; 5.  Old Itialian	Yes	Yes	No	No	No	No
; 6.  Script		Yes	Yes	No	No	No	No
; 7.  Double line	Yes	Yes	Yes	Yes	[]	+-/<=>
; 8.  Italics		Yes	Yes	Yes	Yes	[]	+-/<=>
; 9.  Triple line	Yes	Yes	Yes	Yes	No	#$%+-=
; 10. Triple Italics	Yes	Yes	Yes	Yes	No	#$%+-=
; 11. Round letters	Yes	Yes	Yes	Yes	No	#$%+-=
; 12. Greek letters	Yes	Yes	No	No	No	No
; 13. Double Greek	Yes	Yes	No	No	No	No

;There are 26 centered symbols in SETSYM tables +1 and +2.
;	0	Square box		 8	Z
;	1	Circle			 9	Y
;	2	Triangle		10	Square star
;	3	Plus sign		11	Asterisk
;	4	X			12	Hourglass
;	5	Diamond			13	Vertical bar
;	6	Up arrow		14	Five pointed star
;	7	X with a bar on top	15	Horizontal bar
;     16-25	Digits 0 through 9, centered about the point
SUBTTL	SETSYM -- Dispatch, 'NUMBE' and 'WIDTH'

	ND	MAXSET,^D20
	ND	SETSIZ,^D12*200

	A=P1			;Preserved AC
	B=P2			;Byte pointer
	C=P3			;Counter
	D=P4			;Data
	PURGE	P1,P2,P3,P4

;	CALL SETSYM(IFUNC,IARG,IANS)

	ENTRY	SETSYM		;Set up entry point
	SIXBIT	/SETSYM/
SETSYM:	LDB	T1,[ACPNTR 0(L)] ;Get type of argument
	CAIN	T1,ACTYPE(CHARACT) ;CHARACTER expression?
	 SKIPA	T1,@0(L)	;Yes, get byte pointer
	  XMOVEI T1,@0(L)	;No, get addr of numeric variable
	MOVE	T1,@T1		;Get one word of data
	ANDCM	T1,[BYTE(7)40,40,40,40,40]	;Translate lower to uppercase
				;(also converts spaces to nulls)
	MOVSI	T2,-FUNLEN	;Set up AOBJN counter
SETSY1:	CAMN	T1,FUNASC(T2)	;Match?
	 JRST	@FUNDSP(T2)	;Yes, do it
	AOBJN	T2,SETSY1	;Try next
	ERRSTR	(<SETSYM - Unknown function>)
	PUSHJ	P,TRACE.##	;Trace the subroutine calls
	POPJ	P,

DEFINE SETFUN,<XALL
  XX TABLE  ;Change symbol tables
  XX NUMBE  ;Return current table number
  XX NAME   ;Return table name
  XX WIDTH  ;Get width of a symbol
SALL>  ;End of DEFINE SETFUN

	DEFINE XX(ARG),<
	ASCII/ARG/>

FUNASC:	SETFUN		;Function names
FUNLEN==.-FUNASC

	DEFINE XX(ARG),<
	IFIW D'ARG>

FUNDSP:	SETFUN		;Dispatch table


;'NUMBE' - Return current table number

DNUMBE:	MOVE	T1,NUMB0	;Get old number (+ or -)
	MOVEM	T1,@2(L)	;Return as IANS
	POPJ	P,


;'WIDTH' - Return width of a particular letter

DWIDTH:	MOVE	D,@1(L)		;Get the character
	TLNE	D,774000	;Left justified ASCII?
	 LSH	D,-^D29		;Yes, right justify it
	SUB	D,MINC.N	;Subtract min
	CAMG	D,MAXC.N	;Within range?
	SKIPN	B,IPOINT(D)	;And pointer non-zero
	 POPJ	P,		;No, return 0
	AND	B,[777700,,007777] ;Remove byte count
	ADDI	B,STROKS	;Point to the data area
	ILDB	T1,B		;Get the width of the character
	FLOAT	T1		;To floating point
	FDVR	T1,HITE.N	;Ratio of width/height
	MOVEM	T1,@2(L)	;Return WIDTH fraction
	POPJ	P,


;'NAME' - Return name of table

DNAME:	MOVE	T1,@1(L)	;Get arg
	CAME	T1,OLDSET	;Skip if asking for current table name
	 JUMPN	T1,DNAME1	;Zero means current table name
	GETBC	T1,2		;Get byte pointer and count (T2=max if INTEGER)
	CAILE	T2,^D15		;More than size of name?
	 MOVEI	T2,^D15
	MOVE	T3,[POINT 7,TNAME]	;Point to table name

DNAME0:	ILDB	T4,T3		;Get a char
	IDPB	T4,T1		;Store
	SOJG	T2,DNAME0	;Copy 15 bytes
	POPJ	P,

DNAME1:	POPJ	P,	;**** NOT IMPLEMENTED **********************************
SUBTTL	SETSYM -- 'TABLE' - Change symbol tables

DTABLE:	MOVE	T1,@1(L)	;Get the table to use
	JUMPE	T1,DNUMBE	;Zero to return current table
	CAILE	T1,MAXSET	;If out of range,
	 JRST	ISETA3		; return error
	MOVMM	T1,NUMB		;Save it for later
	MOVEM	T1,NUMB0	;Positive means table was set up by ISETAB
	CAMN	T1,OLDSET	;Is this table already set up?
	 JRST	ISETA5		;Yes, use it
	SKIPG	T1		;Positive?
	 SKIPA	T3,['SYMBOL']	;Use SIXBIT/SYMBOL/ for negative (MSETAB)
	  MOVSI	T3,'SYS'	;Use SIXBIT/SYS/ for positive (ISETAB)
	MOVEI	T2,.IODMP	;Dump mode
	MOVEI	T4,0		;No buffers

	FT701==0	;*HACK*

IFN FT701,<PRINTX %Need to write 701 code at ISETA1: and ISETA3:>
IFE FT701,<	;Use OPEN/LOOKUP instead of FILOP.
	OPEN	%0,T2		;INIT SYS: or SYMBOL:
	  JRST	ISETA3		;No
	MOVE	T1,['SYMBOL']	;File name
	MOVSI	T2,'DAT'	;Extension
	SETZB	T3,T4		;Implied directory
	LOOKUP	%0,T1		;Find SYMBOL.DAT
	  JRST	ISETA2		;Not there
; The first block is an index, each entry is <-WORD.LENGTH,,BLOCK.NUMBER>

	INPUT	%0,[IOWD MAXSET,SETBUF
			0]	;Read in the index block
	MOVE	T1,NUMB		;Get requested number again
	SKIPN	T3,SETBUF-1(T1)	;Skip if the pointer to table is non-zero
	 JRST	ISETA2		;Go die
	USETI	%0,(T3)		;Get the right block to start with
	CAML	T3,[-SETSIZ,,0]	;If the IOWD is bigger than our buffer
	TLNN	T3,-1		; or zero
	 HRLI	T3,-SETSIZ	;Use the biggest we can handle
	HRRI	T3,BUFFER-1	;Complete RH of IOWD
	MOVEI	T4,0		;Stop word
	IN	%0,T3		;Read in the data for this table
	  JRST	ISETA4		;Data read in OK
	PFALL	ISETA2		;Error, return -1

ISETA2:	RELEAS	%0,		;Release the DSK
ISETA3:	SETO	T2,		;Set the error indicator to bad
	JRST	ISETA6		;Return the value

ISETA4:	RELEAS	%0,		;Release the DSK
>  ;End of IFE FT701
	MOVE	T1,NUMB0	;Get the number of the stoke table read in
	MOVEM	T1,OLDSET	;Save the number for later
	HLLZS	SYMPTR		;Not centered and not normal yet

ISETA5:	MOVEI	T2,0		;Set error indicator to good
ISETA6:	MOVEM	T2,@2(L)	;Store IERR as 3rd arg to SETSYM
	SKIPE	TNAME		;Is table name set up?
	 POPJ	P,		;Yes
	MOVE	T1,[[ASCII/(unknown table)/],,TNAME]
	BLT	T1,TNAME+2	;No, set name to 15 characters
	POPJ	P,		;End of ISETAB/MSETAB

IFN FTMKTB,<	SUBTTL	MKTBL & SETABL -- Entry points

MKTBL::	SETABL::
	ERRSTR	(<MKTBL and SETABL not implemented>)
**** MORE WORK NEEDED HERE *****************************************************
	POPJ	P,
>  ;End of IFN FTMKTB

NUMB:	BLOCK	1		;Argument to ISETAB/MSETAB (always positive)
NUMB0:	BLOCK	1		;Positive if from ISETAB, negative if from MSETAB
SUBTTL	ISETAB table #1 -- Pointers

	.DIRECTIVE FLBLST	;First line binary list

SETBUF:	BLOCK	MAXSET		;First block of SYMBOL.DAT, index pointers

OLDSET:	EXP	1		;The last symbol table used, table #1 is set up

SYMB0L::
BUFFER:		;This data gets overwritten when ISETAB is called
PENU.N:	37			;Pen-up code, -1 in 5 bits
HITE.N:	8.0			;Units of height in floating point
MINC.N:	40			;First normal character (octal code for SPACE)
MAXC.N:	140			;Number of normal chars (96 including RUBOUT)
PENU.C:	7			;-1 expressed in 3 bits
HITE.C:	6.0			;Units of height in floating point
MINC.C:	0			;First centered symbol
MAXC.C:	^D26			;Number of centered symbols
TNAME:	ASCII /CSM Standard   /	;CHARACTER*15 table name
	      ;123456789012345
	EXP 0, 0,0,0,0		;Reserved for future expansion
;The next 200 words are byte pointers, the address an offset from STROKS,
; the count of strokes is in the middle 12 bits.  All zero if no such character
IPOINT:	<POINT 5,000,-1>+01_^D12	;space	40
	<POINT 5,000,14>+06_^D12	;!	41
XLIST	;Save paper
	<POINT 5,002,04>+06_^D12	;"	42
	<POINT 5,003,29>+14_^D12	;#	43
	<POINT 5,006,34>+21_^D12	;$	44
	<POINT 5,013,24>+25_^D12	;%	45
	<POINT 5,021,24>+14_^D12	;&	46
	<POINT 5,025,09>+03_^D12	;'	47
	<POINT 5,026,09>+05_^D12	;(	50
	<POINT 5,027,29>+05_^D12	;)	51
	<POINT 5,031,14>+14_^D12	;*	52
	<POINT 5,034,19>+06_^D12	;+	53
	<POINT 5,036,09>+07_^D12	;,	54
	<POINT 5,040,14>+03_^D12	;-	55
	<POINT 5,041,14>+06_^D12	;.	56
	<POINT 5,043,09>+03_^D12	;/	57
	<POINT 5,044,09>+15_^D12	;0	60
	<POINT 5,047,34>+04_^D12	;1	61
	<POINT 5,051,09>+12_^D12	;2	62
	<POINT 5,054,09>+14_^D12	;3	63
	<POINT 5,057,29>+05_^D12	;4	64
	<POINT 5,061,14>+13_^D12	;5	65
	<POINT 5,064,24>+13_^D12	;6	66
	<POINT 5,067,34>+04_^D12	;7	67
	<POINT 5,071,09>+21_^D12	;8	70
	<POINT 5,076,09>+13_^D12	;9	71
	<POINT 5,101,19>+14_^D12	;:	72
	<POINT 5,104,34>+15_^D12	;;	73
	<POINT 5,110,24>+04_^D12	;<	74
	<POINT 5,111,34>+06_^D12	;=	75
	<POINT 5,113,24>+04_^D12	;>	76
	<POINT 5,114,34>+13_^D12	;?	77
LIST
	<POINT 5,120,04>+24_^D12	;@	100
	<POINT 5,125,29>+07_^D12	;A	101
XLIST
	<POINT 5,127,29>+16_^D12	;B	102
	<POINT 5,133,29>+11_^D12	;C	103
	<POINT 5,136,19>+10_^D12	;D	104
	<POINT 5,140,34>+12_^D12	;E	105
	<POINT 5,143,24>+07_^D12	;F	106
	<POINT 5,145,24>+13_^D12	;G	107
	<POINT 5,150,34>+11_^D12	;H	110
	<POINT 5,153,14>+11_^D12	;I	111
	<POINT 5,155,29>+11_^D12	;J	112
	<POINT 5,160,14>+11_^D12	;K	113
	<POINT 5,162,29>+06_^D12	;L	114
	<POINT 5,164,19>+06_^D12	;M	115
	<POINT 5,166,14>+05_^D12	;N	116
	<POINT 5,167,34>+12_^D12	;O	117
	<POINT 5,172,34>+10_^D12	;P	120
	<POINT 5,175,14>+15_^D12	;Q	121
	<POINT 5,201,04>+13_^D12	;R	122
	<POINT 5,204,09>+13_^D12	;S	123
	<POINT 5,207,19>+06_^D12	;T	124
	<POINT 5,211,09>+07_^D12	;U	125
	<POINT 5,213,14>+04_^D12	;V	126
	<POINT 5,214,24>+06_^D12	;W	127
	<POINT 5,216,19>+06_^D12	;X	130
	<POINT 5,220,09>+07_^D12	;Y	131
	<POINT 5,222,09>+05_^D12	;Z	132
	<POINT 5,223,29>+05_^D12	;[	133
	<POINT 5,225,14>+03_^D12	;\	134
	<POINT 5,226,14>+05_^D12	;]	135
	<POINT 5,227,34>+07_^D12	;^	136
	<POINT 5,231,34>+07_^D12	;_	137
	<POINT 5,233,34>+03_^D12	;`	140
	<POINT 5,234,34>+17_^D12	;a	141
	<POINT 5,241,09>+14_^D12	;b	142
	<POINT 5,244,24>+11_^D12	;c	143
	<POINT 5,247,14>+15_^D12	;d	144
	<POINT 5,253,04>+13_^D12	;e	145
	<POINT 5,256,14>+11_^D12	;f	146
	<POINT 5,260,34>+17_^D12	;g	147
	<POINT 5,265,09>+11_^D12	;h	150
	<POINT 5,267,29>+10_^D12	;i	151
	<POINT 5,272,04>+10_^D12	;j	152
	<POINT 5,274,14>+11_^D12	;k	153
	<POINT 5,276,29>+03_^D12	;l	154
	<POINT 5,277,29>+17_^D12	;m	155
	<POINT 5,303,34>+11_^D12	;n	156
	<POINT 5,306,19>+12_^D12	;o	157
	<POINT 5,311,19>+14_^D12	;p	160
	<POINT 5,314,34>+14_^D12	;q	161
	<POINT 5,320,14>+10_^D12	;r	162
	<POINT 5,322,24>+13_^D12	;s	163
	<POINT 5,325,34>+11_^D12	;t	164
	<POINT 5,330,19>+10_^D12	;u	165
	<POINT 5,332,34>+04_^D12	;v	166
	<POINT 5,334,09>+06_^D12	;w	167
	<POINT 5,336,04>+06_^D12	;x	170
	<POINT 5,337,29>+07_^D12	;y	171
	<POINT 5,341,29>+05_^D12	;z	172
	<POINT 5,343,14>+10_^D12	;{	173
	<POINT 5,345,29>+03_^D12	;|	174
	<POINT 5,346,29>+10_^D12	;}	175
LIST	
	<POINT 5,351,09>+05_^D12	;~	176
	<POINT 5,352,29>+04_^D12	;<DEL>	177
;Centered symbols
	<POINT 3,354,04>+10_^D12	;	0
	<POINT 3,355,20>+14_^D12	;	1
XLIST
	<POINT 3,357,23>+06_^D12	;	2
	<POINT 3,360,26>+07_^D12	;	3
	<POINT 3,361,35>+07_^D12	;	4
	<POINT 3,363,08>+07_^D12	;	5
	<POINT 3,364,17>+07_^D12	;	6
	<POINT 3,365,26>+06_^D12	;	7
	<POINT 3,366,29>+07_^D12	;	8
	<POINT 3,367,35>+07_^D12	;	9
	<POINT 3,371,08>+16_^D12	;	10
	<POINT 3,373,23>+15_^D12	;	11
	<POINT 3,375,32>+07_^D12	;	12
	<POINT 3,377,05>+04_^D12	;	13
	<POINT 3,377,32>+11_^D12	;	14
	<POINT 3,401,14>+04_^D12	;	15
	<POINT 3,402,05>+14_^D12	;	16
	<POINT 3,404,05>+10_^D12	;1	17
	<POINT 3,405,17>+13_^D12	;2	18
	<POINT 3,407,11>+20_^D12	;3	19
	<POINT 3,411,35>+11_^D12	;4	20
	<POINT 3,413,14>+14_^D12	;5	21
	<POINT 3,415,14>+17_^D12	;6	22
	<POINT 3,417,32>+11_^D12	;7	23
	<POINT 3,421,14>+24_^D12	;8	24
LIST
	<POINT 3,424,26>+17_^D12	;9	25
	BLOCK 200-<.-IPOINT>	;Unused pointers
SUBTTL	ISETAB table #1 -- Data

STROKS:	BYTE (5) 10,0,6 (5)10,0,6,2,	6,2,7,-1,2,10,2
	BYTE (5) 15 (5)10,0,6,2,14,2,	16,-1,4,16,4,14 (5)10
	BYTE (5) 0,6,2,7,2,15,-1,	4,15,4,7,-1,6,11
XLIST	;More of the same
	BYTE (5) 0,11,-1,0,13,6,13	(5)10,0,6,0,10,2,6
	BYTE (5) 4,6,6,10,4,12,2,	12,0,14,2,16,4,16
	BYTE (5) 6,14,-1,4,16,4,6,	-1,2,6,2,16 (5)10,0
	BYTE (5) 6,0,6,6,14,1,14,	0,13,0,12,1,11,2
	BYTE (5) 11,3,12,3,13,2,14,	-1,4,11,3,10,3,7
	BYTE (5) 4,6,5,6,6,7,6,		10,5,11,4,11 (5)10,0
	BYTE (5) 6,6,6,1,13,1,15,	2,16,3,16,4,15,0
	BYTE (5) 11,0,7,1,6,3,6,	5,10 (5)10,0,6,2,14
	BYTE (5) 4,16 (5)10,0,6,2,6,	0,10,0,14,2,16 (5)10
	BYTE (5) 0,6,0,6,2,10,2,	14,0,16 (5)10,0,6,0
	BYTE (5) 10,4,14,-1,2,14,2,	10,-1,4,10,0,14,-1
	BYTE (5) 0,12,4,12 (5)10,0,6,	2,7,2,13,-1,0,11
	BYTE (5) 4,11 (5)10,0,6,3,6,	3,7,2,7,2,6,3
	BYTE (5) 6,2,5 (5)10,0,6,0,	11,4,11 (5)10,0,6,2
	BYTE (5) 6,3,6,3,7,2,7,		2,6 (5)10,0,6,0,6
	BYTE (5) 6,14 (5)10,0,6,0,7,	6,15,-1,6,14,4,16
	BYTE (5) 2,16,0,14,0,10,2,	6,4,6,6,10,6,14
	BYTE (5)10,0,6,1,14,3,16,	3,6 (5)10,0,6,0,14
	BYTE (5) 0,15,1,16,5,16,6,	15,6,13,0,7,0,6
	BYTE (5) 6,6 (5)10,0,6,0,15,	1,16,5,16,6,15,6
	BYTE (5) 14,4,12,6,10,6,7,	5,6,1,6,0,7 (5)10
	BYTE (5) 0,6,5,6,5,16,0,	11,6,11 (5)10,0,6,0
	BYTE (5) 7,1,6,4,6,6,10,	6,11,5,12,1,12,0
	BYTE (5) 11,0,16,6,16 (5)10,0,	6,0,11,1,12,5,12
	BYTE (5) 6,11,6,7,5,6,1,	6,0,7,0,12,4,16
	BYTE (5)10,0,6,0,16,6,16,	1,6 (5)10,0,6,1,12
	BYTE (5) 0,11,0,7,1,6,5,	6,6,7,6,11,5,12
	BYTE (5) 6,13,6,15,5,16,1,	16,0,15,0,13,1,12
	BYTE (5) 5,12 (5)10,0,6,2,6,	6,12,6,15,5,16,1
	BYTE (5) 16,0,15,0,13,1,12,	5,12,6,13 (5)10,0,6
	BYTE (5) 2,6,3,6,3,7,2,		7,2,6,-1,2,12,3
	BYTE (5) 12,3,13,2,13,2,12	(5)10,0,6,3,6,3,7
	BYTE (5) 2,7,2,6,3,6,2,		5,-1,2,12,3,12,3
	BYTE (5) 13,2,13,2,12 (5)10,0,	6,3,7,0,12,3,15
	BYTE (5)10,0,6,0,10,6,10,	-1,6,12,0,12 (5)10,0
	BYTE (5) 6,0,7,3,12,0,15	(5)10,0,6,1,15,2,16
	BYTE (5) 4,16,5,15,5,14,3,	12,3,10,-1,3,7,3
	BYTE (5) 6 (5)10,0,6,1,6,0,	7,0,13,1,14,5,14
	BYTE (5) 6,13,6,10,5,7,4,	10,4,13,-1,4,12,3
	BYTE (5) 13,2,13,1,12,1,11,	2,10,3,10,4,11 (5)10
	BYTE (5) 0,6,0,6,3,16,6,	6,-1,1,11,5,11 (5)10
	BYTE (5) 0,6,0,6,0,16,5,	16,6,15,6,13,5,12
	BYTE (5) 0,12,-1,5,12,6,11,	6,7,5,6,0,6 (5)10
	BYTE (5) 0,6,6,15,5,16,2,	16,0,14,0,10,2,6
	BYTE (5) 5,6,6,7 (5)10,0,6,	0,6,0,16,4,16,6
	BYTE (5) 14,6,10,4,6,0,6	(5)10,0,6,0,6,0,16
	BYTE (5) 6,16,-1,4,12,0,12,	-1,0,6,6,6 (5)10,0
	BYTE (5) 6,0,6,0,16,6,16,	-1,4,12,0,12 (5)10,0
	BYTE (5) 6,6,15,5,16,2,16,	0,14,0,10,2,6,4
	BYTE (5) 6,6,10,6,12,4,12	(5)10,0,6,0,6,0,16
	BYTE (5) -1,6,16,6,6,-1,0,	12,6,12 (5)10,0,6,1
	BYTE (5) 6,5,6,-1,3,6,3,	16,-1,1,16,5,16 (5)10
	BYTE (5) 0,6,1,7,2,6,3,		6,4,7,4,16,-1,2
	BYTE (5) 16,6,16 (5)10,0,6,1,	6,1,16,-1,1,12,5
	BYTE (5) 16,-1,1,12,5,6 (5)10,	0,6,0,6,0,16,-1
	BYTE (5) 0,6,6,6 (5)10,0,6,	0,6,0,16,3,13,6
	BYTE (5) 16,6,6 (5)10,0,6,0,	6,0,16,6,6,6,16
	BYTE (5)10,0,6,0,10,0,14,	2,16,4,16,6,14,6
	BYTE (5) 10,4,6,2,6,0,10	(5)10,0,6,0,6,0,16
	BYTE (5) 5,16,6,15,6,13,5,	12,0,12 (5)10,0,6,0
	BYTE (5) 10,0,14,2,16,4,16,	6,14,6,10,4,6,2
	BYTE (5) 6,0,10,-1,4,10,6,	6 (5)10,0,6,0,6,0
	BYTE (5) 16,5,16,6,15,6,13,	5,12,0,12,-1,2,12
	BYTE (5) 6,6 (5)10,0,6,0,10,	2,6,4,6,6,10,4
	BYTE (5) 12,2,12,0,14,2,16,	4,16,6,14 (5)10,0,6
	BYTE (5) 3,6,3,16,-1,0,16,	6,16 (5)10,0,6,0,16
	BYTE (5) 0,7,1,6,5,6,6,		7,6,16 (5)10,0,6,0
	BYTE (5) 16,3,6,6,16 (5)10,0,	6,0,16,0,6,3,11
	BYTE (5) 6,6,6,16 (5)10,0,6,	0,6,6,16,-1,0,16
	BYTE (5) 6,6 (5)10,0,6,0,16,	3,13,6,16,-1,3,13
	BYTE (5) 3,6 (5)10,0,6,0,16,	6,16,0,6,6,6 (5)10
	BYTE (5) 0,6,3,4,0,4,0,		16,3,16 (5)10,0,6,0
	BYTE (5) 14,6,6 (5)10,0,6,3,	4,6,4,6,16,3,16
	BYTE (5)10,0,6,0,13,3,16,	6,13,-1,3,16,3,6
	BYTE (5)10,0,6,3,7,0,12,	3,15,-1,0,12,6,12
	BYTE (5)10,0,6,2,16,4,14	(5)10,0,6,0,11,1,12
	BYTE (5) 3,12,4,11,4,6,-1,	4,10,3,11,1,11,0
	BYTE (5) 10,0,7,1,6,3,6,	4,7 (5)10,0,6,0,6
	BYTE (5) 0,15,-1,0,11,1,12,	3,12,4,11,4,7,3
	BYTE (5) 6,1,6,0,7 (5)10,0,	6,4,11,3,12,1,12
	BYTE (5) 0,11,0,7,1,6,3,	6,4,7 (5)10,0,6,0
	BYTE (5) 7,0,11,1,12,3,12,	4,11,4,7,3,6,1
	BYTE (5) 6,0,7,-1,4,6,4,	15 (5)10,0,6,4,7,3
	BYTE (5) 6,1,6,0,7,0,11,	1,12,3,12,4,11,4
	BYTE (5) 10,0,10 (5)10,0,6,2,	6,2,14,3,15,4,15
	BYTE (5) 5,14,-1,0,13,4,13	(5)10,0,6,4,11,3,12
	BYTE (5) 1,12,0,11,0,7,1,	6,3,6,4,7,-1,4
	BYTE (5) 12,4,5,3,4,1,4,	0,5 (5)10,0,6,0,6
	BYTE (5) 0,15,-1,0,11,1,12,	3,12,4,11,4,6 (5)10
	BYTE (5) 0,6,3,14,3,13,-1,	3,12,3,7,4,6,5
	BYTE (5) 6 (5)10,0,6,3,14,3,	13,-1,3,12,3,5,2
	BYTE (5) 4,1,4 (5)10,0,6,0,	6,0,15,-1,0,10,2
	BYTE (5) 12,-1,0,10,2,6 (5)10,	0,6,2,6,2,15 (5)10
	BYTE (5) 0,6,0,6,0,12,-1,	0,11,1,12,2,12,3
	BYTE (5) 11,3,6,-1,3,11,4,	12,5,12,6,11,6,6
	BYTE (5)10,0,6,0,6,0,12,	-1,0,11,1,12,2,12
	BYTE (5) 3,11,3,6 (5)10,0,6,	0,7,0,11,1,12,3
	BYTE (5) 12,4,11,4,7,3,6,	1,6,0,7 (5)10,0,6
	BYTE (5) 0,4,0,12,-1,0,11,	1,12,3,12,4,11,4
	BYTE (5) 7,3,6,1,6,0,7		(5)10,0,6,4,11,3,12
	BYTE (5) 1,12,0,11,0,7,1,	6,3,6,4,7,-1,4
	BYTE (5) 12,4,4 (5)10,0,6,0,	6,0,12,-1,0,11,1
	BYTE (5) 12,3,12,4,11 (5)10,0,	6,0,7,1,6,3,6
	BYTE (5) 4,7,3,10,1,10,0,	11,1,12,3,12,4,11
	BYTE (5)10,0,6,2,15,2,7,	3,6,4,6,5,7,-1
	BYTE (5) 1,13,3,13 (5)10,0,6,	0,12,0,7,1,6,3
	BYTE (5) 6,4,7,4,12,4,6		(5)10,0,6,0,12,2,6
	BYTE (5) 4,12 (5)10,0,6,0,12,	0,6,2,10,4,6,4
	BYTE (5) 12 (5)10,0,6,0,6,4,	12,-1,0,12,4,6 (5)10
	BYTE (5) 0,6,0,12,2,6,-1,	4,12,1,4,0,4 (5)10
	BYTE (5) 0,6,0,12,4,12,0,	6,4,6 (5)10,0,6,3
	BYTE (5) 16,2,15,2,13,0,11,	2,7,2,5,3,4 (5)10
	BYTE (5) 0,6,2,4,2,16 (5)10,	0,6,0,16,1,15,1
LIST
	BYTE (5) 13,3,11,1,7,1,5,	0,4 (5)0,0,6,2,20	;350 & 351 = "~"
	BYTE (5) 3,21,4,20,5,21 (5)0,	0,6,1,20,4,20,4		;352 & 353
	BYTE (5) 17 (3) 3,3,3,3,5,5,5,5,1,1  ;Start of centered symbols
	BYTE (3) 1,1,5,3,5,3,3,3,3,3,3,5			;355
	BYTE (3) 4,5,5,4,5,2,4,1,2,1,1,2,	1,4,2,5,3,5,3,3,3,3,3,3
	BYTE (3) 5,5,1,1,1,3,5,3,3,3,3,3,	3,5,3,1,3,3,1,3,5,3,3,3
XLIST
	BYTE (3) 3,3,3,5,5,1,1,3,3,1,5,5,	1,3,3,3,3,3,3,5,5,3,3,1
	BYTE (3) 1,3,3,5,3,3,3,3,3,3,1,3,	5,5,3,1,3,3,5,3,3,3,3,3
	BYTE (3) 1,1,5,5,1,5,5,1,3,3,3,3,	3,1,5,5,5,1,1,5,1,-1,3,3
	BYTE (3) 3,3,3,1,5,3,3,5,5,3,3,3,	1,3,3,3,3,3,5,5,4,4,2,4
	BYTE (3) 1,5,2,4,2,2,1,1,2,2,4,2,	5,1,4,2,4,4,3,3,3,3,3,3
	BYTE (3) 5,3,1,3,3,5,5,1,1,3,3,5,	3,1,3,3,3,5,1,1,5,3,3,3
	BYTE (3) 3,3,3,3,5,5,1,5,5,1,1,1,	3,3,3,3,3,3,5,3,1,3,3,3
	BYTE (3) 3,3,3,6,5,1,1,4,5,4,1,1,	3,6,-1,3,3,3,3,3,1,3,5,3
	BYTE (3) 3,3,3,3,3,2,0,4,0,5,1,5,	5,4,6,2,6,1,5,1,1,2,0,-1
	BYTE (3) 3,3,3,3,3,2,5,3,6,3,0,2,	0,4,0,-1,3,3,3,3,3,1,5,2
	BYTE (3) 6,4,6,5,5,5,4,1,1,1,0,5,	0,-1,3,3,3,3,3,1,5,2,6,4
	BYTE (3) 6,5,5,5,4,4,3,2,3,4,3,5,	2,5,1,4,0,2,0,1,1,-1,3,3
	BYTE (3) 3,3,3,1,6,1,3,5,3,-1,4,6,	4,0,-1,3,3,3,3,3,1,1,2,0
	BYTE (3) 4,0,5,1,5,2,4,3,1,3,1,6,	5,6,-1,3,3,3,3,3,5,5,4,6
	BYTE (3) 2,6,1,5,1,1,2,0,4,0,5,1,	5,2,4,3,2,3,1,2,-1,3,3,3
	BYTE (3) 3,3,1,5,1,6,5,6,5,5,3,1,	3,0,-1,3,3,3,3,3,1,5,2,6
	BYTE (3) 4,6,5,5,5,4,4,3,2,3,4,3,	5,2,5,1,4,0,2,0,1,1,1,2
	BYTE (3) 2,3,1,4,1,5,-1,3,3,3,3,3,	1,1,2,0,4,0,5,1,5,5,4,6
LIST
	BYTE (3) 2,6,1,5,1,4,2,3,4,3,5,4,	-1,3,3,0  ;End of centered data
	BLOCK	SETSIZ-<.-BUFFER>	;Reserve the rest of the space
	SETEND==.-1

	$HISEG
	END