Google
 

Trailing-Edge - PDP-10 Archives - decuslib10-02 - 43,50263/fasbol.fas
There are 2 other files named fasbol.fas in the archive. Click here to see a list.
;*	*	*	*	*	*	*	*	*
;*	*	DECLARATIONS	*	*	*	*	*
;*	*	*	*	*	*	*	*	*
;*
;*		LOCAL
;*
;	DECLARE('SNOBOL.MAIN','FASBOL')
;	DECLARE('OPTION','HASHSIZE=509')
;	DECLARE('OPTION','NO.STNO')
;	DECLARE('PURGE.VARIABLE',ALL)
;	DECLARE('PURGE.LABEL',ALL)
;	DECLARE('EXTERNAL.FUNCTION','INITLZ,DECLPH,EXECPH,EACTPH,
;.CROSPH')
;	DECLARE('GLOBAL.VARIABLE','SRCLIN,OBJLIN,OBJCHR,LSTLIN,LSTCHR')
;	DECLARE('STRING','SNUMB(5)')
;	DECLARE('INTEGER','I,J,K,DIAGNO,NXTNAM,NXTLAB,MSLI,CRSFLG')
;	DECLARE('ENTRY.FUNCTION','PRTOUT(MESG,TTYFLG,CHRMOD)')
;	DECLARE('ENTRY.FUNCTION','PUTOUT(MESG,CHRMOD)')
;	DECLARE('ENTRY.FUNCTION','NEWNAM()')
;	DECLARE('ENTRY.FUNCTION','NEWLAB()')
;	DECLARE('ENTRY.FUNCTION','ERRMSG(MESG)')
;	DECLARE('ENTRY.FUNCTION','STXERR(MESG)')
;	DECLARE('ENTRY.FUNCTION','GETSTA()')
;	DECLARE('ENTRY.FUNCTION','GETATR()')
;	DECLARE('ENTRY.FUNCTION','GETITM()')
;	DECLARE('ENTRY.FUNCTION','PARLIT(QTYP,BRKPAT)')
;	DECLARE('ENTRY.FUNCTION','SUBS(SKEL,P1,P2,P3,P4,P5)')
;*
;*		SYSTEM COMMON
;*
;*	TABLES AND LISTS
;	DECLARE('ENTRY.VARIABLE',
;.'SYMBTB,XNAMTB,KEYWTB,CTRLTB,DECLTB,CROSTB,CONSTB,ENTFTB,DSIZTB,
;.BOPRTB,UOPRTB')
;	DECLARE('ENTRY.VARIABLE',
;.'ENTRLS,EXTRLS,FORTLS')
;*	ARRAYS
;	DECLARE('ENTRY.VARIABLE',
;.'PTVRAR,PTFNAR,PRIMAR,GOTOAR,DECLAR,PROGAR,VARBAR,MACHAR,STENAR,BOPRAR,
;.UOPRAR,PATRAR,EXPRAR,AROPAR,ARITAR,EACTAR')
;*	PARAMETERS (STRINGS,DATATYPES)
;	DECLARE('ENTRY.VARIABLE',
;.'C,INDENT,SPLASH,ITNAM,ITENT,NOFAIL,SNONAM,SUBNAM,PARBLK,PRGNAM,STARTP,
;.TEMLOC,P1,P2,P3,P4,P5')
;*	PARAMETERS (INTEGERS)
;	DECLARE('ENTRY.VARIABLE',
;.'P,OBJFLG,LISTSR,INTGER,ITTYP,ITATR,PRGALV,PRGALL,PRGALF,STNFLG,HSHSIZ,
;.STRTIM,DMPFLG,LISTOB,STNO,MAXTMP')
;	DECLARE('INTEGER',
;.'P,OBJFLG,LISTSR,INTGER,ITTYP,ITATR,PRGALV,PRGALL,PRGALF,STNFLG,HSHSIZ,
;.STRTIM,DMPFLG,LISTOB,STNO,MAXTMP')
;	DECLARE('ENTRY.VARIABLE',
;.'XNATRB,VTATRB,VDATRB,LTATRB,FTATRB,FDATRB,TXATRB,VNATRB,VXATRB,VIATRB,
;.VGATRB,LIATRB,LGATRB,FIATRB,FGATRB,FXATRB,SKATRB,SDATRB,BTATRB')
;	DECLARE('INTEGER',
;.'XNATRB,VTATRB,VDATRB,LTATRB,FTATRB,FDATRB,TXATRB,VNATRB,VXATRB,VIATRB,
;.VGATRB,LIATRB,LGATRB,FIATRB,FGATRB,FXATRB,SKATRB,SDATRB,BTATRB')
;	DECLARE('ENTRY.VARIABLE',
;.'XNVATR,XNLATR,XNFATR,XNXMSK,VTVATR,VDDATR,VDPATR,VDDMSK,LTDATR,LTTMSK,
;.FTFATR,FDPATR,FDIATR,FDDMSK,TXTATR,TXTMSK,VNNATR,VXXATR,VIPATR,VGGATR,
;.LIPATR,LGGATR,FIPATR,FGGATR,FXXATR,FXXMSK,SKRATR,SDRATR,BTRATR')
;	DECLARE('INTEGER',
;.'XNVATR,XNLATR,XNFATR,XNXMSK,VTVATR,VDDATR,VDPATR,VDDMSK,LTDATR,LTTMSK,
;.FTFATR,FDPATR,FDIATR,FDDMSK,TXTATR,TXTMSK,VNNATR,VXXATR,VIPATR,VGGATR,
;.LIPATR,LGGATR,FIPATR,FGGATR,FXXATR,FXXMSK,SKRATR,SDRATR,BTRATR')
;*	SPECIAL CHARACTERS,CHARACTER SEQUENCES, AND CHARACTER CLASSES
;	DECLARE('ENTRY.VARIABLE',
;.'FFCHR,CRLCHR,LFCHR,CRCHR,SQCHR,DQCHR,TBCHR,LCSCHR,BLNCHR,EQLCHR,
;.QTSCHR,ELTCHR,LBCHR')
;*	PATTERNS AND MATCHES
;	DECLARE('ENTRY.VARIABLE',
;.'COMSPT,INTGPT,BLNKPT,OPBLPT,PCOMPT,PCPRMT,IDENPT,DCLCMT,RSIDPT,LABLPT,
;.POPRMT,IDENMT,SQLTPT,DQLTPT,LBDCPT,IDDCPT')
;*
;*	MINIMAL SYMBOL TABLE
;*
;	DECLARE('UNPURGE.VARIABLE','PRTOUT,MESG,TTYFLG,CHRMOD,PUTOUT,
;.NEWNAM,NEWLAB,ERRMSG,STXERR,GETSTA,GETATR,GETITM,PARLIT,QTYP,BRKPAT,
;.SUBS,SKEL,P1,P2,P3,P4,P5,SUB1')
;	DECLARE('UNPURGE.LABEL','PRTOUT PUTOUT NEWNAM NEWLAB ERRMSG
;. STXERR GETSTA GETATR GETITM PARLIT SUBS SUB1 CTL1 CTL2 CTL3 CTL4
;. CTL5 CTL6 CTL7 CTL8 CTL9 CTL10')
;	DECLARE('PURGE.FUNCTION','DEFINE,DATA,DIFFER,TIME,IDENT,LPAD,
;.RPAD,SIZE,DUPL,SUBSTR,TABLE,DATATYPE,REPLACE')
;*	*	*	*	*	*	*	*	*
;*	*	MAIN PROCESSING SEQUENCE	*	*	*
;*	*	*	*	*	*	*	*	*
;*
;*	LOCAL INITIALIZATION
;	DEFINE('SUB1(SKEL)')
TITLE FASBOL
	OPDEF	UFERR$	[1B8]
	OPDEF	CFERR$	[2B8]
	OPDEF	FCALV$	[3B8]
	OPDEF	FCALN$	[4B8]
	OPDEF	DASGN$	[5B8]
	OPDEF	DCONC$	[6B8]
	OPDEF	DICNV$	[7B8]
	OPDEF	DRCNV$	[10B8]
	OPDEF	AREFV$	[11B8]
	OPDEF	AREFN$	[12B8]
ENTRY IDDCPT,LBDCPT,DQLTPT,SQLTPT,IDENMT,POPRMT,LABLPT,RSIDPT,DCLCMT,IDENPT
ENTRY PCPRMT,PCOMPT,OPBLPT,BLNKPT,INTGPT,COMSPT,LBCHR,ELTCHR,QTSCHR,EQLCHR
ENTRY BLNCHR,LCSCHR,TBCHR,DQCHR,SQCHR,CRCHR,LFCHR,CRLCHR,FFCHR,BTRATR
ENTRY SDRATR,SKRATR,FXXMSK,FXXATR,FGGATR,FIPATR,LGGATR,LIPATR,VGGATR,VIPATR
ENTRY VXXATR,VNNATR,TXTMSK,TXTATR,FDDMSK,FDIATR,FDPATR,FTFATR,LTTMSK,LTDATR
ENTRY VDDMSK,VDPATR,VDDATR,VTVATR,XNXMSK,XNFATR,XNLATR,XNVATR,BTATRB,SDATRB
ENTRY SKATRB,FXATRB,FGATRB,FIATRB,LGATRB,LIATRB,VGATRB,VIATRB,VXATRB,VNATRB
ENTRY TXATRB,FDATRB,FTATRB,LTATRB,VDATRB,VTATRB,XNATRB,MAXTMP,STNO,LISTOB
ENTRY DMPFLG,STRTIM,HSHSIZ,STNFLG,PRGALF,PRGALL,PRGALV,ITATR,ITTYP,INTGER
ENTRY LISTSR,OBJFLG,P,P5,P4,P3,P2,P1,TEMLOC,STARTP
ENTRY PRGNAM,PARBLK,SUBNAM,SNONAM,NOFAIL,ITENT,ITNAM,SPLASH,INDENT,C
ENTRY EACTAR,ARITAR,AROPAR,EXPRAR,PATRAR,UOPRAR,BOPRAR,STENAR,MACHAR,VARBAR
ENTRY PROGAR,DECLAR,GOTOAR,PRIMAR,PTFNAR,PTVRAR,FORTLS,EXTRLS,ENTRLS,UOPRTB
ENTRY BOPRTB,DSIZTB,ENTFTB,CONSTB,CROSTB,DECLTB,CTRLTB,KEYWTB,XNAMTB,SYMBTB
ENTRY SUBS,PARLIT,GETITM,GETATR,GETSTA,STXERR,ERRMSG,NEWLAB,NEWNAM,PUTOUT
ENTRY PRTOUT
EXTERN CROSPH,EACTPH,EXECPH,DECLPH,INITLZ
Q10002:	JSP	14,S$$ILZ##
	XWD	^D509,Q10000
	JRST	Q10003
	MOVEI	14,Q10004
	MOVEM	14,S$$FLP##
	MOVE	1,S10284
	FCALV$	^D1,F10066
Q10004:
;	DATA('SYM(INAM,ATRB)')
	MOVEI	14,Q10005
	MOVEM	14,S$$FLP##
	MOVE	1,S10285
	FCALV$	^D1,F10060
Q10005:
;	DATA('CRS(NEXT,CRSI)')
	MOVEI	14,Q10006
	MOVEM	14,S$$FLP##
	MOVE	1,S10286
	FCALV$	^D1,F10060
Q10006:
;	DATA('NOD(FRNT,BACK)')
	MOVEI	14,Q10007
	MOVEM	14,S$$FLP##
	MOVE	1,S10287
	FCALV$	^D1,F10060
Q10007:
;	NXTNAM	= 10000
	MOVE	^D1,K10288
	MOVEM	1,V10100
;	NXTLAB	= 10000
	MOVE	^D1,K10288
	MOVEM	1,V10101
;	ERRCHR	= DUPL(' ',9) SUBSTR(&ALPHABET,1,9) DUPL(' ',118)
	MOVEI	14,Q10008
	MOVEM	14,S$$FLP##
	MOVE	1,S10290
	PUSH	16,1
	MOVE	1,I10291
	FCALV$	^D2,F10065
	PUSH	16,1
	MOVE	1,S$$KWD##+^D7
	PUSH	16,1
	MOVE	1,I10292
	PUSH	16,1
	MOVE	1,I10291
	FCALV$	^D3,F10081
	PUSH	16,1
	MOVE	1,S10290
	PUSH	16,1
	MOVE	1,I10293
	FCALV$	^D2,F10065
	JSP	14,S$$CNC##
	EXP	^D3
	MOVEM	1,@N10289
Q10008:
;*	INITIALIZE SYSTEM
;	&DENSITY	= 90
	MOVE	^D1,K10294
	MOVEM	1,S$$KWD##+^D15
;	NXTLIN	= INITLZ()	:F(ENDMSG)
	MOVEI	14,L10296
	MOVEM	14,S$$FLP##
	FCALV$	^D0,INITLZ
	MOVEM	1,@N10295
;*	PROCESS DECLARATIONS
;	DECLPH()
	MOVEI	14,Q10009
	MOVEM	14,S$$FLP##
	FCALV$	^D0,DECLPH
Q10009:
;*	PROCESS EXECUTABLE STATEMENTS
;	EXECPH()
	MOVEI	14,Q10010
	MOVEM	14,S$$FLP##
	FCALV$	^D0,EXECPH
Q10010:
;*	GENERATE END-ACTION STORAGE
;	EACTPH()
	MOVEI	14,Q10011
	MOVEM	14,S$$FLP##
	FCALV$	^D0,EACTPH
Q10011:
;*	OPTIONAL CROSS-REFERENCE DICTIONARY
;	(?DIFFER(CROSTB) ?CROSPH())
	MOVEI	14,Q10012
	MOVEM	14,S$$FLP##
	MOVE	1,@CROSTB
	FCALV$	^D1,F10071
	SETZ	1,
	FCALV$	^D0,CROSPH
	SETZ	1,
Q10012:
;*	END PROCESSING
;ENDMSG	PRTOUT(CRLCHR '*TOTAL COMPILATION TIME: ' TIME() - STRTIM
;. ' MS., ' DIAGNO ' ERROR DIAGNOSTICS*' CRLCHR,1,1)
L10296:
	MOVEI	14,Q10013
	MOVEM	14,S$$FLP##
	MOVE	1,@CRLCHR
	PUSH	16,1
	MOVE	1,S10297
	PUSH	16,1
	FCALV$	^D0,F10045
	DICNV$	0
	SUB	^D1,STRTIM
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	MOVE	1,S10298
	PUSH	16,1
	MOVE	^D1,V10099
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	MOVE	1,S10299
	PUSH	16,1
	MOVE	1,@CRLCHR
	JSP	14,S$$CNC##
	EXP	^D7
	PUSH	16,1
	MOVE	1,I10292
	PUSH	16,1
	MOVE	1,I10292
	FCALV$	^D3,PRTOUT
Q10013:
;	&OUTPUT	=	:(END)
	MOVEI	14,S$$SXT##
	MOVEM	14,S$$FLP##
	SETZM	S$$KWD##+^D17
	JRST	S$$SXT##
;*	*	*	*	*	*	*	*	*
;*	*	SUBROUTINES	*	*	*	*	*
;*	*	*	*	*	*	*	*	*
;*		PRTOUT(MESG,TTYFLG,CHRMOD) OUTPUT MESSAGE ON LISTING DEV
;*	IF TTYFLG IS NON-NULL, THE MESSAGE IS ALSO OUTPUT ON THE USER
;*	TTY. IF CHRMOD IS NON-NULL, THE MESSAGE IS OUTPUT IN CHAR MODE
;*
;PRTOUT	LSTLIN	= ?IDENT(CHRMOD) MESG	:F(PRTOU1)
L10104:
	MOVEI	14,L10300
	MOVEM	14,S$$FLP##
	MOVE	1,@N10268
	FCALV$	^D1,F10072
	SETZ	1,
	MOVE	1,@N10266
	MOVEM	1,@N10093
;	OUTPUT	= ?DIFFER(TTYFLG) MESG	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10071
	SETZ	1,
	MOVE	1,@N10266
	MOVEM	1,@S$$OUT##
	JRST	S$$SRT##
;PRTOU1	LSTCHR	= MESG
L10300:
	MOVEI	14,Q10014
	MOVEM	14,S$$FLP##
	MOVE	1,@N10266
	MOVEM	1,@N10094
Q10014:
;	OUTPUTC	= ?DIFFER(TTYFLG) MESG	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10071
	SETZ	1,
	MOVE	1,@N10266
	MOVEM	1,@S$$OUC##
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;*		PUTOUT(MESG,CHRMOD) OUTPUT MESSAGE ON OBJECT DEV
;*	ALSO OUTPUTS MESSAGE ON LISTING DEVICE IF LISTOB IS NONZERO
;*	IF CHRMOD IS NON-NULL, THE OBJECT DEVICE OUTPUT IS IN CHARACTER
;*	MODE AND NO LISTING IS ATTEMPTED
;*
;PUTOUT	OBJLIN	= ?IDENT(CHRMOD) MESG	:S(PUTOU1)
L10106:
	MOVEI	14,Q10015
	MOVEM	14,S$$FLP##
	MOVE	1,@N10268
	FCALV$	^D1,F10072
	SETZ	1,
	MOVE	1,@N10266
	MOVEM	1,@N10091
	JRST	L10301
Q10015:
;	OBJCHR	= MESG	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10266
	MOVEM	1,@N10092
	JRST	S$$SRT##
;PUTOU1	MESG	?INE(LISTOB,0)  ';' ! REM $ LSTLIN	:(RETURN)
L10301:
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10266
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,LISTOB
	JUMP	0,K10302
	ADD	16,S$$STB##
	SETZ	1,
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	JSP	11,S$$APS##
	XWD	.-.,Q10017
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	MOVE	1,S10303
	JSP	11,S$$MST##
	JRST	Q10016
Q10017:
	JSP	11,S$$APF##
	JSP	11,S$$VAS##
	JSP	11,S$$REM##
	MOVE	1,N10093
	JSP	11,S$$IVA##
Q10016:
	JSP	11,S$$MTS##
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;*		NEWNAM() NEW SYMBOL INTERNAL NAME
;*	PRODUCES A 5-CHARACTER INTEGER STRING REPRESENTING THE NEXT
;*	AVAILABLE INAM FOR PROGRAM SYMBOLS
;*
;NEWNAM	SNUMB	= NXTNAM
L10108:
	MOVEI	14,Q10018
	MOVEM	14,S$$FLP##
	MOVE	^D1,V10100
	TLO	1,1B18
	TLZ	1,1B19
	DASGN$	1,V10095
Q10018:
;	NXTNAM	= NXTNAM + 1
	MOVE	^D1,V10100
	ADD	^D1,K10292
	MOVEM	1,V10100
;	NEWNAM	= SNUMB	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10095
	JSP	7,S$$CPS##
	MOVEM	1,@N10108
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;*		NEWLAB() NEW INTERNAL LABEL
;*	PRODUCES A 6-CHARACTER STRING OF THE FORM 'QNNNNN' REPRESENTING
;*	THE NEXT AVAILABLE INTERNAL LABEL
;*
;NEWLAB	SNUMB	= NXTLAB
L10110:
	MOVEI	14,Q10019
	MOVEM	14,S$$FLP##
	MOVE	^D1,V10101
	TLO	1,1B18
	TLZ	1,1B19
	DASGN$	1,V10095
Q10019:
;	NXTLAB	= NXTLAB + 1
	MOVE	^D1,V10101
	ADD	^D1,K10292
	MOVEM	1,V10101
;	NEWLAB	= 'Q' SNUMB	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,S10304
	PUSH	16,1
	MOVE	1,@N10095
	JSP	7,S$$CPS##
	JSP	14,S$$CNC##
	EXP	^D2
	MOVEM	1,@N10110
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;*		ERRMSG(MESG) ERROR MESSAGE
;*	OUTPUTS APPRPRIATE MESSAGE AND INCREMENTS DIAGNOSTIC COUNT
;*
;ERRMSG	DIAGNO	= ?PRTOUT(SPLASH 'ERROR   **' LPAD(RPAD(MESG,SIZE(
;. MESG) + (38 - SIZE(MESG)) / 2,' '),38,' ') '**' CRLCHR SPLASH,1)
;. DIAGNO + 1	:(RETURN)
L10112:
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@SPLASH
	PUSH	16,1
	MOVE	1,S10305
	PUSH	16,1
	MOVE	1,@N10266
	PUSH	16,1
	MOVE	1,@N10266
	FCALV$	^D1,F10050
	DICNV$	0
	PUSH	17,1
	MOVE	^D1,K10306
	PUSH	17,1
	MOVE	1,@N10266
	FCALV$	^D1,F10050
	DICNV$	0
	POP	17,0
	SUB	^D0,1
	MOVE	1,0
	IDIV	^D1,K10307
	POP	17,0
	ADD	^D1,0
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	MOVE	1,S10290
	FCALV$	^D3,F10080
	PUSH	16,1
	MOVE	1,I10306
	PUSH	16,1
	MOVE	1,S10290
	FCALV$	^D3,F10079
	PUSH	16,1
	MOVE	1,S10308
	PUSH	16,1
	MOVE	1,@CRLCHR
	PUSH	16,1
	MOVE	1,@SPLASH
	JSP	14,S$$CNC##
	EXP	^D6
	PUSH	16,1
	MOVE	1,I10292
	FCALV$	^D2,PRTOUT
	SETZ	1,
	MOVE	^D1,V10099
	ADD	^D1,K10292
	MOVEM	1,V10099
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;*		STXERR(MESG) SYNTAX ERROR
;*	CALLS ERRMSG IF MESG IS NON-NULL, THEN OUTPUTS APPROPRIATE
;*	SECTION OF STATEMENT WITH POINTER INDICATING POSITION OF ERROR
;*	EXPECTS STATEMENT IN C AND POINTER IN P
;*
;STXERR	(?DIFFER(MESG) ?ERRMSG(MESG))
L10114:
	MOVEI	14,Q10020
	MOVEM	14,S$$FLP##
	MOVE	1,@N10266
	FCALV$	^D1,F10071
	SETZ	1,
	MOVE	1,@N10266
	FCALV$	^D1,ERRMSG
	SETZ	1,
Q10020:
;	I	= P
	MOVE	^D1,P
	MOVEM	1,V10096
;	STXERR	= C
	MOVEI	14,Q10021
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	MOVEM	1,@N10114
Q10021:
;	STXERR	BREAK(CRCHR)  @J	:S(STXER2)
	MOVEI	14,Q10022
	MOVEM	14,S$$FLP##
	MOVE	1,@N10114
	PUSH	16,1
	MOVE	1,@CRCHR
	JSP	11,S$$MBT##
	EXP	.
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	1,^D1(15)
	JSP	11,S$$BRK##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,V10097
	JSP	11,S$$MTS##
	JRST	L10309
Q10022:
;STXER1	PRTOUT(STXERR CRLCHR REPLACE(SUBSTR(STXERR,I),&ALPHABET,ERRCHR)
;. '^',1)	:(RETURN)
L10310:
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10114
	PUSH	16,1
	MOVE	1,@CRLCHR
	PUSH	16,1
	MOVE	1,@N10114
	PUSH	16,1
	MOVE	^D1,V10096
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,F10081
	PUSH	16,1
	MOVE	1,S$$KWD##+^D7
	PUSH	16,1
	MOVE	1,@N10289
	FCALV$	^D3,F10083
	PUSH	16,1
	MOVE	1,S10311
	JSP	14,S$$CNC##
	EXP	^D4
	PUSH	16,1
	MOVE	1,I10292
	FCALV$	^D2,PRTOUT
	JRST	S$$SRT##
;STXER2	K	=
L10309:
	MOVEI	14,Q10023
	MOVEM	14,S$$FLP##
	SETZM	V10098
Q10023:
;STXER3	STXERR	= ?ILE(I,J) SUBSTR(STXERR,J - K,K)	:F(STXER4)
L10312:
	MOVEI	14,L10313
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10096
	JUMP	0,V10097
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10114
	PUSH	16,1
	MOVE	^D1,V10097
	SUB	^D1,V10098
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	MOVE	^D1,V10098
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D3,F10081
	MOVEM	1,@N10114
;	I	= I - K	:(STXER1)
	MOVE	^D1,V10096
	SUB	^D1,V10098
	MOVEM	1,V10096
	JRST	L10310
;STXER4	K	= J + 1
L10313:
	MOVE	^D1,V10097
	ADD	^D1,K10292
	MOVEM	1,V10098
;	STXERR	LEN(*K)  (BREAK(CRCHR) ! REM)  @J	:(STXER3)
	MOVEI	14,L10312
	MOVEM	14,S$$FLP##
	MOVE	1,@N10114
	PUSH	16,1
	MOVE	1,@CRCHR
	JSP	11,S$$MBT##
	EXP	.
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	^D1,V10098
	JUMPL	1,S$$MIE##
	JSP	11,S$$LEN##
	JSP	11,S$$APS##
	XWD	.-.,Q10025
	MOVE	1,^D1(15)
	JSP	11,S$$BRK##
	JRST	Q10024
Q10025:
	JSP	11,S$$APF##
	JSP	11,S$$REM##
Q10024:
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,V10097
	JSP	11,S$$MTS##
	JRST	L10312
;*	*	*	*	*	*	*	*	*
;*		GETSTA() GET NEXT STATEMENT
;*	RETURNS STRING CORRESPONDING TO NEXT STATEMENT, WHICH IS NOT
;*	A COMMENT OR CONTROL LINE, OR FAILS IF SOURCE END-OF-FILE
;*	CARRIAGE RETURN CHARACTERS ARE SUBSTITUTED FOR CONTINUATION
;*	CHARACTERS IN MULTI-LINE STATEMENTS
;*
;GETSTA	?IEQ(MSLI,0)	:F(GETST2)
L10116:
	MOVEI	14,L10314
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10102
	JUMP	0,K10302
	ADD	16,S$$STB##
	SETZ	1,
;GETST1	MSLI	=
L10315:
	MOVEI	14,Q10026
	MOVEM	14,S$$FLP##
	SETZM	V10102
Q10026:
;	CURLIN	= ?DIFFER(NXTLIN,1) NXTLIN	:F(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10295
	PUSH	16,1
	MOVE	1,I10292
	FCALV$	^D2,F10071
	SETZ	1,
	MOVE	1,@N10295
	MOVEM	1,@N10316
;	NXTLIN	= SRCLIN	:S(GETST2)
	MOVEI	14,Q10027
	MOVEM	14,S$$FLP##
	MOVE	1,@N10090
	MOVEM	1,@N10295
	JRST	L10314
Q10027:
;	NXTLIN	= 1
	MOVEI	14,Q10028
	MOVEM	14,S$$FLP##
	MOVE	1,I10292
	MOVEM	1,@N10295
Q10028:
;* CHECK FOR COMMENT, CONTROL, PAGE EJECT
;GETST2	CURLIN	COMSPT $ STR1	:F(GETST5)
L10314:
	MOVEI	14,L10318
	MOVEM	14,S$$FLP##
	MOVE	1,@N10316
	PUSH	16,1
	MOVE	1,@COMSPT
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	JSP	11,S$$VAS##
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	MOVE	1,N10317
	JSP	11,S$$IVA##
	JSP	11,S$$MTS##
;* PAGE EJECT
;	CURLIN	= ?IDENT(STR1,FFCHR) ?PRTOUT(FFCHR,'',1) SUBSTR(CURLIN,
;.SIZE(CURLIN) - 1,1)	:S(GETST2)
	MOVEI	14,Q10029
	MOVEM	14,S$$FLP##
	MOVE	1,@N10317
	PUSH	16,1
	MOVE	1,@FFCHR
	FCALV$	^D2,F10072
	SETZ	1,
	MOVE	1,@FFCHR
	PUSH	16,1
	SETZ	1,
	PUSH	16,1
	MOVE	1,I10292
	FCALV$	^D3,PRTOUT
	SETZ	1,
	MOVE	1,@N10316
	PUSH	16,1
	MOVE	1,@N10316
	FCALV$	^D1,F10050
	DICNV$	0
	SUB	^D1,K10292
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	MOVE	1,I10292
	FCALV$	^D3,F10081
	MOVEM	1,@N10316
	JRST	L10314
Q10029:
;	(?IEQ(MSLI,0) ?PUTOUT(';' CURLIN) ?INE(LISTSR,0) ?PRTOUT(
;.INDENT INDENT CURLIN))
	MOVEI	14,Q10030
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10102
	JUMP	0,K10302
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,S10303
	PUSH	16,1
	MOVE	1,@N10316
	JSP	14,S$$CNC##
	EXP	^D2
	FCALV$	^D1,PUTOUT
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,LISTSR
	JUMP	0,K10302
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@INDENT
	PUSH	16,1
	MOVE	1,@INDENT
	PUSH	16,1
	MOVE	1,@N10316
	JSP	14,S$$CNC##
	EXP	^D3
	FCALV$	^D1,PRTOUT
	SETZ	1,
Q10030:
;* COMMENT
;	DIFFER(STR1,'*')	:F(GETST1)
	MOVEI	14,L10315
	MOVEM	14,S$$FLP##
	MOVE	1,@N10317
	PUSH	16,1
	MOVE	1,S10319
	FCALV$	^D2,F10071
;* CONTROL
;	INTGER	=
	MOVEI	14,Q10031
	MOVEM	14,S$$FLP##
	SETZM	INTGER
Q10031:
;	CURLIN	LEN(1)  OPBLPT  SPAN('ABCDEFGHIJKLMNOPQRSTUVWXYZ') $
;. STR1  OPBLPT  FENCE  (RPOS(0) ! INTGPT  OPBLPT  RPOS(0))
;.	:F(GETST4)
	MOVEI	14,L10321
	MOVEM	14,S$$FLP##
	MOVE	1,@N10316
	PUSH	16,1
	MOVE	1,@OPBLPT
	JSP	11,S$$MKP##
	PUSH	16,1
	MOVE	1,@OPBLPT
	JSP	11,S$$MKP##
	PUSH	16,1
	MOVE	1,@INTGPT
	JSP	11,S$$MKP##
	PUSH	16,1
	MOVE	1,@OPBLPT
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D5,0
	HRRZ	1,K10292
	JSP	11,S$$LEN##
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	JSP	11,S$$VAS##
	MOVEI	1,B10320
	JSP	11,S$$SPN##
	MOVE	1,N10317
	JSP	11,S$$IVA##
	MOVE	1,^D2(15)
	JSP	11,S$$PTX##
	PUSHJ	16,.+2
	JRST	S$$MTA##
	JSP	11,S$$APS##
	XWD	.-.,Q10033
	HRRZ	1,K10302
	CAIE	1,(13)
	POPJ	16,
	JRST	Q10032
Q10033:
	JSP	11,S$$APF##
	MOVE	1,^D3(15)
	JSP	11,S$$PTX##
	MOVE	1,^D4(15)
	JSP	11,S$$PTX##
	HRRZ	1,K10302
	CAIE	1,(13)
	POPJ	16,
Q10032:
	JSP	11,S$$MTS##
;	STR1	= CTRLTB[STR1]
	MOVEI	14,Q10034
	MOVEM	14,S$$FLP##
	MOVE	1,@N10317
	AREFV$	^D1,CTRLTB
	MOVEM	1,@N10317
Q10034:
;	IDENT(STR1)	:F($STR1)
	MOVEI	14,Q10035
	MOVEM	14,S$$FLP##
	MOVE	1,@N10317
	FCALV$	^D1,F10072
	JRST	Q10036
Q10035:
	MOVEI 14,S$$BGT##
	MOVEM 14,S$$FLP##
	MOVE	1,@N10317
	JSP 14,S$$ILB##
Q10036:
;GETST4	ERRMSG('BAD CONTROL LINE')	:(GETST1)
L10321:
	MOVEI	14,L10315
	MOVEM	14,S$$FLP##
	MOVE	1,S10322
	FCALV$	^D1,ERRMSG
	JRST	L10315
;* NEXT STATEMENT
;GETST5	STNO	= ?DIFFER(CURLIN) STNO + 1	:F(GETST1)
L10318:
	MOVEI	14,L10315
	MOVEM	14,S$$FLP##
	MOVE	1,@N10316
	FCALV$	^D1,F10071
	SETZ	1,
	MOVE	^D1,STNO
	ADD	^D1,K10292
	MOVEM	1,STNO
;	(?IEQ(MSLI,0) ?PUTOUT(';' CURLIN) ?INE(LISTSR,0) ?PRTOUT(INDENT
;. LPAD(STNO,7,' ') ' ' CURLIN))
	MOVEI	14,Q10037
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10102
	JUMP	0,K10302
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,S10303
	PUSH	16,1
	MOVE	1,@N10316
	JSP	14,S$$CNC##
	EXP	^D2
	FCALV$	^D1,PUTOUT
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,LISTSR
	JUMP	0,K10302
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@INDENT
	PUSH	16,1
	MOVE	^D1,STNO
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	MOVE	1,I10323
	PUSH	16,1
	MOVE	1,S10290
	FCALV$	^D3,F10079
	PUSH	16,1
	MOVE	1,S10290
	PUSH	16,1
	MOVE	1,@N10316
	JSP	14,S$$CNC##
	EXP	^D4
	FCALV$	^D1,PRTOUT
	SETZ	1,
Q10037:
;GETST6	(GETSTA CURLIN)	BREAKQ(';') $ GETSTA  LEN(1)  REM $ CURLIN
;.	:F(GETST7)
L10324:
	MOVEI	14,L10325
	MOVEM	14,S$$FLP##
	MOVE	1,@N10116
	PUSH	16,1
	MOVE	1,@N10316
	JSP	14,S$$CNC##
	EXP	^D2
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D-1,0
	BYTE	(2)2(16)1(18).+1
	JSP	11,S$$VAS##
	MOVEI	1,B10303
	JSP	11,S$$BRQ##
	MOVE	1,N10116
	JSP	11,S$$IVA##
	HRRZ	1,K10292
	JSP	11,S$$LEN##
	JSP	11,S$$VAS##
	JSP	11,S$$REM##
	MOVE	1,N10316
	JSP	11,S$$IVA##
	JSP	11,S$$MTS##
;* MULTI-STATEMENT LINE
;	MSLI	= 1	:(RETURN)
	MOVE	^D1,K10292
	MOVEM	1,V10102
	JRST	S$$SRT##
;GETST7	GETSTA	= GETSTA CURLIN
L10325:
	MOVEI	14,Q10038
	MOVEM	14,S$$FLP##
	MOVE	1,@N10116
	PUSH	16,1
	MOVE	1,@N10316
	JSP	14,S$$CNC##
	EXP	^D2
	MOVEM	1,@N10116
Q10038:
;* CONTINUATION CHECK
;	NXTLIN	ANY('.+')  REM $ STR1	:F(GETST8)
	MOVEI	14,L10327
	MOVEM	14,S$$FLP##
	MOVE	1,@N10295
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D-1,0
	BYTE	(2)2(16)1(18).+1
	MOVEI	1,B10326
	JSP	11,S$$ANY##
	JSP	11,S$$VAS##
	JSP	11,S$$REM##
	MOVE	1,N10317
	JSP	11,S$$IVA##
	JSP	11,S$$MTS##
;	(?PUTOUT(';' NXTLIN) ?INE(LISTSR,0) ?PRTOUT(INDENT LPAD(STNO,
;.7,' ') ' ' NXTLIN))
	MOVEI	14,Q10039
	MOVEM	14,S$$FLP##
	MOVE	1,S10303
	PUSH	16,1
	MOVE	1,@N10295
	JSP	14,S$$CNC##
	EXP	^D2
	FCALV$	^D1,PUTOUT
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,LISTSR
	JUMP	0,K10302
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@INDENT
	PUSH	16,1
	MOVE	^D1,STNO
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	MOVE	1,I10323
	PUSH	16,1
	MOVE	1,S10290
	FCALV$	^D3,F10079
	PUSH	16,1
	MOVE	1,S10290
	PUSH	16,1
	MOVE	1,@N10295
	JSP	14,S$$CNC##
	EXP	^D4
	FCALV$	^D1,PRTOUT
	SETZ	1,
Q10039:
;	CURLIN	= CRCHR STR1
	MOVEI	14,Q10040
	MOVEM	14,S$$FLP##
	MOVE	1,@CRCHR
	PUSH	16,1
	MOVE	1,@N10317
	JSP	14,S$$CNC##
	EXP	^D2
	MOVEM	1,@N10316
Q10040:
;	NXTLIN	= SRCLIN	:S(GETST6)
	MOVEI	14,Q10041
	MOVEM	14,S$$FLP##
	MOVE	1,@N10090
	MOVEM	1,@N10295
	JRST	L10324
Q10041:
;	NXTLIN	= 1	:(GETST6)
	MOVEI	14,L10324
	MOVEM	14,S$$FLP##
	MOVE	1,I10292
	MOVEM	1,@N10295
	JRST	L10324
;GETST8	MSLI	=	:(RETURN)
L10327:
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	SETZM	V10102
	JRST	S$$SRT##
;*	CONTROL ACTIONS
;* LIST
;CTL1	LISTSR	= 1	:(GETST1)
L10273:
	MOVE	^D1,K10292
	MOVEM	1,LISTSR
	JRST	L10315
;* UNLIST
;CTL2	LISTSR	=	:(GETST1)
L10274:
	MOVEI	14,L10315
	MOVEM	14,S$$FLP##
	SETZM	LISTSR
	JRST	L10315
;* NOCODE
;CTL3	LISTOB	=	:(GETST1)
L10275:
	MOVEI	14,L10315
	MOVEM	14,S$$FLP##
	SETZM	LISTOB
	JRST	L10315
;* CODE
;CTL4	LISTOB	= 1	:(GETST1)
L10276:
	MOVE	^D1,K10292
	MOVEM	1,LISTOB
	JRST	L10315
;* EJECT
;CTL5	(?PRTOUT(FFCHR,'',1) ?PUTOUT(FFCHR,1))	:(GETST1)
L10277:
	MOVEI	14,L10315
	MOVEM	14,S$$FLP##
	MOVE	1,@FFCHR
	PUSH	16,1
	SETZ	1,
	PUSH	16,1
	MOVE	1,I10292
	FCALV$	^D3,PRTOUT
	SETZ	1,
	MOVE	1,@FFCHR
	PUSH	16,1
	MOVE	1,I10292
	FCALV$	^D2,PUTOUT
	SETZ	1,
	JRST	L10315
;* SPACE N
;CTL6	PRTOUT(DUPL(CRLCHR,INTGER),'',1)	:(GETST1)
L10278:
	MOVEI	14,L10315
	MOVEM	14,S$$FLP##
	MOVE	1,@CRLCHR
	PUSH	16,1
	MOVE	^D1,INTGER
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,F10065
	PUSH	16,1
	SETZ	1,
	PUSH	16,1
	MOVE	1,I10292
	FCALV$	^D3,PRTOUT
	JRST	L10315
;* FAIL
;CTL7	NOFAIL	=	:(GETST1)
L10279:
	MOVEI	14,L10315
	MOVEM	14,S$$FLP##
	SETZM	@NOFAIL
	JRST	L10315
;* NOFAIL
;CTL8	NOFAIL	= GOTOAR<1>	:(GETST1)
L10280:
	MOVEI	14,L10315
	MOVEM	14,S$$FLP##
	MOVE	1,I10292
	AREFV$	^D1,GOTOAR
	MOVEM	1,@NOFAIL
	JRST	L10315
;* NOCROSS
;CTL9	CRSFLG	=	:(GETST1)
L10281:
	MOVEI	14,L10315
	MOVEM	14,S$$FLP##
	SETZM	V10103
	JRST	L10315
;* CROSREF
;CTL10	CRSFLG	= 1
L10282:
	MOVE	^D1,K10292
	MOVEM	1,V10103
;	CROSTB	= ?IDENT(CROSTB) TABLE(15,7)	:(GETST1)
	MOVEI	14,L10315
	MOVEM	14,S$$FLP##
	MOVE	1,@CROSTB
	FCALV$	^D1,F10072
	SETZ	1,
	MOVE	1,I10328
	PUSH	16,1
	MOVE	1,I10323
	FCALV$	^D2,F10064
	MOVEM	1,@CROSTB
	JRST	L10315
;*	*	*	*	*	*	*	*	*
;*		PARLIT(QTYP,BRKPAT) PARSE LITERAL
;*	PARSES LITERAL AND RETURNS STRING WITH CR'S EXTRACTED AND PAIRS
;*	OF QUOTES OF QTYP REDUCED TO ONE QUOTE
;*	EXPECTS P TO POINT IMMEDIATELY AFTER THE STARTING QUOTE, AND
;*	LEAVES P POINTING TO JUST BEFORE THE CLOSING QUOTE OR ANY OTHER
;*	CHARACTER (OTHER THAN CR) INCLUDED IN BRKPAT (A BREAK PATTERN)
;*
;PARLIT	C	LEN(*P)  BRKPAT $ STR1  @P  LEN(1) $ STR2
;.	:F(FRETURN)
L10122:
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@N10270
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	^D1,P
	JUMPL	1,S$$MIE##
	JSP	11,S$$LEN##
	JSP	11,S$$VAS##
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	MOVE	1,N10317
	JSP	11,S$$IVA##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	JSP	11,S$$VAS##
	HRRZ	1,K10292
	JSP	11,S$$LEN##
	MOVE	1,N10329
	JSP	11,S$$IVA##
	JSP	11,S$$MTS##
;	PARLIT	= PARLIT STR1
	MOVEI	14,Q10042
	MOVEM	14,S$$FLP##
	MOVE	1,@N10122
	PUSH	16,1
	MOVE	1,@N10317
	JSP	14,S$$CNC##
	EXP	^D2
	MOVEM	1,@N10122
Q10042:
;	P	= ?IDENT(STR2,CRCHR) P + 1	:S(PARLIT)
	MOVEI	14,Q10043
	MOVEM	14,S$$FLP##
	MOVE	1,@N10329
	PUSH	16,1
	MOVE	1,@CRCHR
	FCALV$	^D2,F10072
	SETZ	1,
	MOVE	^D1,P
	ADD	^D1,K10292
	MOVEM	1,P
	JRST	L10122
Q10043:
;	STR2	= ?IDENT(STR2,QTYP) SUBSTR(C,1,P + 1)	:F(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10329
	PUSH	16,1
	MOVE	1,@N10269
	FCALV$	^D2,F10072
	SETZ	1,
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,I10292
	PUSH	16,1
	MOVE	^D1,P
	ADD	^D1,K10292
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D3,F10081
	MOVEM	1,@N10329
;	PARLIT	= ?IDENT(STR2,QTYP) PARLIT QTYP	:F(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10329
	PUSH	16,1
	MOVE	1,@N10269
	FCALV$	^D2,F10072
	SETZ	1,
	MOVE	1,@N10122
	PUSH	16,1
	MOVE	1,@N10269
	JSP	14,S$$CNC##
	EXP	^D2
	MOVEM	1,@N10122
;	P	= P + 2	:(PARLIT)
	MOVE	^D1,P
	ADD	^D1,K10307
	MOVEM	1,P
	JRST	L10122
;*	*	*	*	*	*	*	*	*
;*		SUBS(SKEL,P1,P2,P3,P4,P5) SUBSTITUTE PARAMETERS
;*	FORMS STRING BY SUBSTITUTING PARAMETERS P1 THROUGH P5 IN
;*	SKELETON TREE SKEL. DOES NOTHING IF BOTH OBJECT CODE AND LISTING
;*	OF IT ARE TURNED OFF
;*
;SUBS	SUBS	= ?INE(OBJFLG + LISTOB,0) SUB1(SKEL)	:(RETURN)
L10124:
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	^D1,OBJFLG
	ADD	^D1,LISTOB
	MOVEM	1,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,Q10001+^D0
	JUMP	0,K10302
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10271
	FCALV$	^D1,F10272
	MOVEM	1,@N10124
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;*		SUB1(SKEL) WALK TREE AND SUBSTITUTE
;*	WALKS OVER SKELETON TREE FROM LEFT TO RIGHT AND BOTTOM TO TOP
;*	PRODUCING STRING RECURSIVELY
;*
;SUB1	SUB1	= DATATYPE(SKEL)
L10272:
	MOVEI	14,Q10044
	MOVEM	14,S$$FLP##
	MOVE	1,@N10271
	FCALV$	^D1,F10052
	MOVEM	1,@N10272
Q10044:
;	SUB1	= ?IDENT(SUB1,'STRING') SKEL	:S(RETURN)
	MOVEI	14,Q10045
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	PUSH	16,1
	MOVE	1,S10330
	FCALV$	^D2,F10072
	SETZ	1,
	MOVE	1,@N10271
	MOVEM	1,@N10272
	JRST	S$$SRT##
Q10045:
;	SUB1	= ?IDENT(SUB1,'NAME') $SKEL	:S(RETURN)
	MOVEI	14,Q10046
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	PUSH	16,1
	MOVE	1,S10331
	FCALV$	^D2,F10072
	SETZ	1,
	MOVE	1,@N10271
	JSP	14,S$$IVV##
	MOVEM	1,@N10272
	JRST	S$$SRT##
Q10046:
;	SUB1	= SUB1(FRNT(SKEL)) SUB1(BACK(SKEL))	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10271
	FCALV$	^D1,F10332
	FCALV$	^D1,F10272
	PUSH	16,1
	MOVE	1,@N10271
	FCALV$	^D1,F10333
	FCALV$	^D1,F10272
	JSP	14,S$$CNC##
	EXP	^D2
	MOVEM	1,@N10272
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;*		GETITM() GET ITEM FROM SYMBOL TABLE
;*	EXPECTS ITTYP, ITATR, AND ITNAM SET TO THE TYPE, ATTRIBUTES,
;*	AND NAME OF THE SYMBOL, AND DOES LOOKUP TO GET ITENT. CREATES
;*	NEW SYM DATATYPE FOR NEW ENTRIES, OR RESETS ITATR FOR OLD ONES
;*	CALLS GETATR TO SET ALL THE APPROPRIATE INDIVIDUAL ATTRIBUTES
;*	AND MAKES A CROSS-REFERENCE ENTRY IF THE FLAG IS ON
;*
;GETITM	ITPTR	= .SYMBTB[ITNAM]
L10120:
	MOVEI	14,Q10047
	MOVEM	14,S$$FLP##
	MOVE	1,@ITNAM
	AREFN$	^D1,SYMBTB
	MOVEM	1,@N10334
Q10047:
;	ITENT	= $ITPTR
	MOVEI	14,Q10048
	MOVEM	14,S$$FLP##
	MOVE	1,@N10334
	JSP	14,S$$IVV##
	MOVEM	1,@ITENT
Q10048:
;	$ITPTR	= ?IDENT(ITENT) SYM(NEWNAM(),ITATR)	:F(GETIT2)
	MOVEI	14,L10336
	MOVEM	14,S$$FLP##
	MOVE	1,@N10334
	JSP	14,S$$IVN##
	PUSH	16,1
	MOVE	1,@ITENT
	FCALV$	^D1,F10072
	SETZ	1,
	FCALV$	^D0,NEWNAM
	PUSH	16,1
	MOVE	^D1,ITATR
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,F10335
	JSP	11,S$$ASG##
;	ITENT	= $ITPTR
	MOVEI	14,Q10049
	MOVEM	14,S$$FLP##
	MOVE	1,@N10334
	JSP	14,S$$IVV##
	MOVEM	1,@ITENT
Q10049:
;GETIT1	(?GETATR() ?INE(CRSFLG,0))	:F(RETURN)
L10337:
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	FCALV$	^D0,GETATR
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10103
	JUMP	0,K10302
	ADD	16,S$$STB##
	SETZ	1,
;	ITPTR	= .CROSTB[ITNAM]
	MOVEI	14,Q10050
	MOVEM	14,S$$FLP##
	MOVE	1,@ITNAM
	AREFN$	^D1,CROSTB
	MOVEM	1,@N10334
Q10050:
;	$ITPTR	= CRS($ITPTR,LSHIFT(STNO,3) + ITTYP)	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10334
	JSP	14,S$$IVN##
	PUSH	16,1
	MOVE	1,@N10334
	JSP	14,S$$IVV##
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LSH##
	JUMP	0,STNO
	JUMP	0,K10339
	ADD	16,S$$STB##
	MOVE	1,0
	ADD	^D1,ITTYP
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,F10338
	JSP	11,S$$ASG##
	JRST	S$$SRT##
;GETIT2	ITATR	= ATRB(ITENT)	:(GETIT1)
L10336:
	MOVEI	14,L10337
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALV$	^D1,F10340
	DASGN$	2,ITATR
	JRST	L10337
;*	*	*	*	*	*	*	*	*
;*		GETATR() GET ATTRIBUTES
;*	ENTER WITH ITTYP AND ITATR SET, AND SETS THE INDIVIDUAL 'XXATRB'
;*	ATTRIBUTES FOR THE GIVEN TYPE
;*
;GETATR	?INE(ITTYP,0)	:F(GETAVR)
L10118:
	MOVEI	14,L10341
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,ITTYP
	JUMP	0,K10302
	ADD	16,S$$STB##
	SETZ	1,
;	?INE(ITTYP,1)	:F(GETALB)
	MOVEI	14,L10342
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,ITTYP
	JUMP	0,K10292
	ADD	16,S$$STB##
	SETZ	1,
;	?INE(ITTYP,2)	:F(GETAFN)
	MOVEI	14,L10343
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,ITTYP
	JUMP	0,K10307
	ADD	16,S$$STB##
	SETZ	1,
;	?INE(ITTYP,3)	:F(GETAST)
	MOVEI	14,L10344
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,ITTYP
	JUMP	0,K10339
	ADD	16,S$$STB##
	SETZ	1,
;	?INE(ITTYP,4)	:F(GETABT)
	MOVEI	14,L10346
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,ITTYP
	JUMP	0,K10345
	ADD	16,S$$STB##
	SETZ	1,
;	?INE(ITTYP,5)	:F(GETAVX)
	MOVEI	14,L10348
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,ITTYP
	JUMP	0,K10347
	ADD	16,S$$STB##
	SETZ	1,
;	?INE(ITTYP,6)	:F(GETALX)
	MOVEI	14,L10350
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,ITTYP
	JUMP	0,K10349
	ADD	16,S$$STB##
	SETZ	1,
;* EXTENDED FUNCTION
;	FXATRB	= AND(ITATR,FXXMSK)
	MOVEI	14,Q10051
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$AND##
	JUMP	0,ITATR
	JUMP	0,FXXMSK
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,FXATRB
Q10051:
;	FGATRB	= AND(ITATR,FGGATR)
	MOVEI	14,Q10052
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$AND##
	JUMP	0,ITATR
	JUMP	0,FGGATR
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,FGATRB
Q10052:
;	FIATRB	= AND(ITATR,FIPATR)
	MOVEI	14,Q10053
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$AND##
	JUMP	0,ITATR
	JUMP	0,FIPATR
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,FIATRB
Q10053:
;* NORMAL FUNCTION
;GETAFN	FTATRB	= AND(ITATR,FTFATR)
L10343:
	MOVEI	14,Q10054
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$AND##
	JUMP	0,ITATR
	JUMP	0,FTFATR
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,FTATRB
Q10054:
;	FDATRB	= AND(ITATR,FDDMSK)	:(GETATX)
	MOVEI	14,L10351
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$AND##
	JUMP	0,ITATR
	JUMP	0,FDDMSK
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,FDATRB
	JRST	L10351
;* EXTENDED LABEL
;GETALX	LGATRB	= AND(ITATR,LGGATR)
L10350:
	MOVEI	14,Q10055
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$AND##
	JUMP	0,ITATR
	JUMP	0,LGGATR
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,LGATRB
Q10055:
;	LIATRB	= AND(ITATR,LIPATR)
	MOVEI	14,Q10056
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$AND##
	JUMP	0,ITATR
	JUMP	0,LIPATR
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,LIATRB
Q10056:
;* NORMAL LABEL
;GETALB	LTATRB	= AND(ITATR,LTTMSK)	:(GETAXN)
L10342:
	MOVEI	14,L10352
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$AND##
	JUMP	0,ITATR
	JUMP	0,LTTMSK
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,LTATRB
	JRST	L10352
;* EXTENDED VARIABLE
;GETAVX	VXATRB	= AND(ITATR,VXXATR)
L10348:
	MOVEI	14,Q10057
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$AND##
	JUMP	0,ITATR
	JUMP	0,VXXATR
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,VXATRB
Q10057:
;	VGATRB	= AND(ITATR,VGGATR)
	MOVEI	14,Q10058
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$AND##
	JUMP	0,ITATR
	JUMP	0,VGGATR
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,VGATRB
Q10058:
;	VIATRB	= AND(ITATR,VIPATR)
	MOVEI	14,Q10059
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$AND##
	JUMP	0,ITATR
	JUMP	0,VIPATR
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,VIATRB
Q10059:
;	VNATRB	= AND(ITATR,VNNATR)
	MOVEI	14,Q10060
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$AND##
	JUMP	0,ITATR
	JUMP	0,VNNATR
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,VNATRB
Q10060:
;* NORMAL VARIABLE
;GETAVR	VTATRB	= AND(ITATR,VTVATR)
L10341:
	MOVEI	14,Q10061
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$AND##
	JUMP	0,ITATR
	JUMP	0,VTVATR
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,VTATRB
Q10061:
;	VDATRB	= AND(ITATR,VDDMSK)
	MOVEI	14,Q10062
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$AND##
	JUMP	0,ITATR
	JUMP	0,VDDMSK
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,VDATRB
Q10062:
;GETATX	TXATRB	= AND(ITATR,TXTMSK)
L10351:
	MOVEI	14,Q10063
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$AND##
	JUMP	0,ITATR
	JUMP	0,TXTMSK
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,TXATRB
Q10063:
;GETAXN	XNATRB	= AND(ITATR,XNXMSK)	:(RETURN)
L10352:
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$AND##
	JUMP	0,ITATR
	JUMP	0,XNXMSK
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,XNATRB
	JRST	S$$SRT##
;* STRING
;GETAST	SKATRB	= AND(ITATR,SKRATR)
L10344:
	MOVEI	14,Q10064
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$AND##
	JUMP	0,ITATR
	JUMP	0,SKRATR
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,SKATRB
Q10064:
;	SDATRB	= AND(ITATR,SDRATR)	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$AND##
	JUMP	0,ITATR
	JUMP	0,SDRATR
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,SDATRB
	JRST	S$$SRT##
;* BREAK TABLE
;GETABT	BTATRB	= AND(ITATR,BTRATR)	:(RETURN)
L10346:
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$AND##
	JUMP	0,ITATR
	JUMP	0,BTRATR
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,BTATRB
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;END
Q10003=Q10002+3
	JRST	S$$SXT##
Q10001:	BLOCK	^D1
K10288:	EXP	^D10000
I10291:	EXP	^D9!1B0
K10292:	EXP	^D1
I10292:	EXP	^D1!1B0
I10293:	EXP	^D118!1B0
K10294:	EXP	^D90
K10302:	EXP	^D0
K10306:	EXP	^D38
I10306:	EXP	^D38!1B0
K10307:	EXP	^D2
I10323:	EXP	^D7!1B0
I10328:	EXP	^D15!1B0
K10339:	EXP	^D3
K10345:	EXP	^D4
K10347:	EXP	^D5
K10349:	EXP	^D6
F10045:	BYTE	(4)4(4)0(5)^D0(5)0(18)P$$TIM##
F10050:	BYTE	(4)4(4)0(5)^D1(5)0(18)P$$SIZ##
F10052:	BYTE	(4)4(4)0(5)^D1(5)0(18)P$$DTY##
F10060:	BYTE	(4)4(4)0(5)^D1(5)0(18)P$$DAT##
F10064:	BYTE	(4)4(4)0(5)^D2(5)0(18)P$$TBL##
F10065:	BYTE	(4)4(4)0(5)^D2(5)0(18)P$$DUP##
F10066:	BYTE	(4)4(4)0(5)^D2(5)0(18)P$$DEF##
F10071:	BYTE	(4)4(4)0(5)^D2(5)0(18)P$$DIF##
F10072:	BYTE	(4)4(4)0(5)^D2(5)0(18)P$$IDT##
F10079:	BYTE	(4)4(4)0(5)^D3(5)0(18)P$$LPD##
F10080:	BYTE	(4)4(4)0(5)^D3(5)0(18)P$$RPD##
F10081:	BYTE	(4)4(4)0(5)^D3(5)0(18)P$$SBS##
F10083:	BYTE	(4)4(4)0(5)^D3(5)0(18)P$$RPL##
A10090:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'SRCLIN'
A10091:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'OBJLIN'
A10092:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'OBJCHR'
A10093:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'LSTLIN'
A10094:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'LSTCHR'
V10095:	POINT	7,.+1,35
	BYTE	(2)0(16)^D1+1(18)0
	BLOCK	^D1
N10095:	BYTE	(4)4(2)1(12)0(18)V10095
V10096:	EXP	0
V10097:	EXP	0
V10098:	EXP	0
V10099:	EXP	0
V10100:	EXP	0
V10101:	EXP	0
V10102:	EXP	0
V10103:	EXP	0
A10104:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'PRTOUT'
A10105:	BYTE	(2)2(16)^D6+1(18)^D26
	ASCII	'PRTOUT(MESG,TTYFLG,CHRMOD)'
A10106:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'PUTOUT'
A10107:	BYTE	(2)2(16)^D4+1(18)^D19
	ASCII	'PUTOUT(MESG,CHRMOD)'
A10108:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'NEWNAM'
A10109:	BYTE	(2)2(16)^D2+1(18)^D8
	ASCII	'NEWNAM()'
A10110:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'NEWLAB'
A10111:	BYTE	(2)2(16)^D2+1(18)^D8
	ASCII	'NEWLAB()'
A10112:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'ERRMSG'
A10113:	BYTE	(2)2(16)^D3+1(18)^D12
	ASCII	'ERRMSG(MESG)'
A10114:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'STXERR'
A10115:	BYTE	(2)2(16)^D3+1(18)^D12
	ASCII	'STXERR(MESG)'
A10116:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'GETSTA'
A10117:	BYTE	(2)2(16)^D2+1(18)^D8
	ASCII	'GETSTA()'
A10118:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'GETATR'
A10119:	BYTE	(2)2(16)^D2+1(18)^D8
	ASCII	'GETATR()'
A10120:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'GETITM'
A10121:	BYTE	(2)2(16)^D2+1(18)^D8
	ASCII	'GETITM()'
A10122:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'PARLIT'
A10123:	BYTE	(2)2(16)^D4+1(18)^D19
	ASCII	'PARLIT(QTYP,BRKPAT)'
A10124:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'SUBS'
A10125:	BYTE	(2)2(16)^D5+1(18)^D25
	ASCII	'SUBS(SKEL,P1,P2,P3,P4,P5)'
SYMBTB:	BYTE	(4)4(14)0(18)Q10065+^D17
XNAMTB:	BYTE	(4)4(14)0(18)Q10065+^D18
KEYWTB:	BYTE	(4)4(14)0(18)Q10065+^D19
CTRLTB:	BYTE	(4)4(14)0(18)Q10065+^D20
DECLTB:	BYTE	(4)4(14)0(18)Q10065+^D21
CROSTB:	BYTE	(4)4(14)0(18)Q10065+^D22
CONSTB:	BYTE	(4)4(14)0(18)Q10065+^D23
ENTFTB:	BYTE	(4)4(14)0(18)Q10065+^D24
DSIZTB:	BYTE	(4)4(14)0(18)Q10065+^D25
BOPRTB:	BYTE	(4)4(14)0(18)Q10065+^D26
UOPRTB:	BYTE	(4)4(14)0(18)Q10065+^D27
ENTRLS:	BYTE	(4)4(14)0(18)Q10065+^D28
EXTRLS:	BYTE	(4)4(14)0(18)Q10065+^D29
FORTLS:	BYTE	(4)4(14)0(18)Q10065+^D30
PTVRAR:	BYTE	(4)4(14)0(18)Q10065+^D31
PTFNAR:	BYTE	(4)4(14)0(18)Q10065+^D32
PRIMAR:	BYTE	(4)4(14)0(18)Q10065+^D33
GOTOAR:	BYTE	(4)4(14)0(18)Q10065+^D34
DECLAR:	BYTE	(4)4(14)0(18)Q10065+^D35
PROGAR:	BYTE	(4)4(14)0(18)Q10065+^D36
VARBAR:	BYTE	(4)4(14)0(18)Q10065+^D37
MACHAR:	BYTE	(4)4(14)0(18)Q10065+^D38
STENAR:	BYTE	(4)4(14)0(18)Q10065+^D39
BOPRAR:	BYTE	(4)4(14)0(18)Q10065+^D40
UOPRAR:	BYTE	(4)4(14)0(18)Q10065+^D41
PATRAR:	BYTE	(4)4(14)0(18)Q10065+^D42
EXPRAR:	BYTE	(4)4(14)0(18)Q10065+^D43
AROPAR:	BYTE	(4)4(14)0(18)Q10065+^D44
ARITAR:	BYTE	(4)4(14)0(18)Q10065+^D45
EACTAR:	BYTE	(4)4(14)0(18)Q10065+^D46
C:	BYTE	(4)4(14)0(18)Q10065+^D47
INDENT:	BYTE	(4)4(14)0(18)Q10065+^D48
SPLASH:	BYTE	(4)4(14)0(18)Q10065+^D49
ITNAM:	BYTE	(4)4(14)0(18)Q10065+^D50
ITENT:	BYTE	(4)4(14)0(18)Q10065+^D51
NOFAIL:	BYTE	(4)4(14)0(18)Q10065+^D52
SNONAM:	BYTE	(4)4(14)0(18)Q10065+^D53
SUBNAM:	BYTE	(4)4(14)0(18)Q10065+^D54
PARBLK:	BYTE	(4)4(14)0(18)Q10065+^D55
PRGNAM:	BYTE	(4)4(14)0(18)Q10065+^D56
STARTP:	BYTE	(4)4(14)0(18)Q10065+^D57
TEMLOC:	BYTE	(4)4(14)0(18)Q10065+^D58
A10168:	BYTE	(2)2(16)^D1+1(18)^D2
	ASCII	'P1'
A10169:	BYTE	(2)2(16)^D1+1(18)^D2
	ASCII	'P2'
A10170:	BYTE	(2)2(16)^D1+1(18)^D2
	ASCII	'P3'
A10171:	BYTE	(2)2(16)^D1+1(18)^D2
	ASCII	'P4'
A10172:	BYTE	(2)2(16)^D1+1(18)^D2
	ASCII	'P5'
P:	EXP	0
OBJFLG:	EXP	0
LISTSR:	EXP	0
INTGER:	EXP	0
ITTYP:	EXP	0
ITATR:	EXP	0
PRGALV:	EXP	0
PRGALL:	EXP	0
PRGALF:	EXP	0
STNFLG:	EXP	0
HSHSIZ:	EXP	0
STRTIM:	EXP	0
DMPFLG:	EXP	0
LISTOB:	EXP	0
STNO:	EXP	0
MAXTMP:	EXP	0
XNATRB:	EXP	0
VTATRB:	EXP	0
VDATRB:	EXP	0
LTATRB:	EXP	0
FTATRB:	EXP	0
FDATRB:	EXP	0
TXATRB:	EXP	0
VNATRB:	EXP	0
VXATRB:	EXP	0
VIATRB:	EXP	0
VGATRB:	EXP	0
LIATRB:	EXP	0
LGATRB:	EXP	0
FIATRB:	EXP	0
FGATRB:	EXP	0
FXATRB:	EXP	0
SKATRB:	EXP	0
SDATRB:	EXP	0
BTATRB:	EXP	0
XNVATR:	EXP	0
XNLATR:	EXP	0
XNFATR:	EXP	0
XNXMSK:	EXP	0
VTVATR:	EXP	0
VDDATR:	EXP	0
VDPATR:	EXP	0
VDDMSK:	EXP	0
LTDATR:	EXP	0
LTTMSK:	EXP	0
FTFATR:	EXP	0
FDPATR:	EXP	0
FDIATR:	EXP	0
FDDMSK:	EXP	0
TXTATR:	EXP	0
TXTMSK:	EXP	0
VNNATR:	EXP	0
VXXATR:	EXP	0
VIPATR:	EXP	0
VGGATR:	EXP	0
LIPATR:	EXP	0
LGGATR:	EXP	0
FIPATR:	EXP	0
FGGATR:	EXP	0
FXXATR:	EXP	0
FXXMSK:	EXP	0
SKRATR:	EXP	0
SDRATR:	EXP	0
BTRATR:	EXP	0
FFCHR:	BYTE	(4)4(14)0(18)Q10065+^D64
CRLCHR:	BYTE	(4)4(14)0(18)Q10065+^D65
LFCHR:	BYTE	(4)4(14)0(18)Q10065+^D66
CRCHR:	BYTE	(4)4(14)0(18)Q10065+^D67
SQCHR:	BYTE	(4)4(14)0(18)Q10065+^D68
DQCHR:	BYTE	(4)4(14)0(18)Q10065+^D69
TBCHR:	BYTE	(4)4(14)0(18)Q10065+^D70
LCSCHR:	BYTE	(4)4(14)0(18)Q10065+^D71
BLNCHR:	BYTE	(4)4(14)0(18)Q10065+^D72
EQLCHR:	BYTE	(4)4(14)0(18)Q10065+^D73
QTSCHR:	BYTE	(4)4(14)0(18)Q10065+^D74
ELTCHR:	BYTE	(4)4(14)0(18)Q10065+^D75
LBCHR:	BYTE	(4)4(14)0(18)Q10065+^D76
COMSPT:	BYTE	(4)4(14)0(18)Q10065+^D77
INTGPT:	BYTE	(4)4(14)0(18)Q10065+^D78
BLNKPT:	BYTE	(4)4(14)0(18)Q10065+^D79
OPBLPT:	BYTE	(4)4(14)0(18)Q10065+^D80
PCOMPT:	BYTE	(4)4(14)0(18)Q10065+^D81
PCPRMT:	BYTE	(4)4(14)0(18)Q10065+^D82
IDENPT:	BYTE	(4)4(14)0(18)Q10065+^D83
DCLCMT:	BYTE	(4)4(14)0(18)Q10065+^D84
RSIDPT:	BYTE	(4)4(14)0(18)Q10065+^D85
LABLPT:	BYTE	(4)4(14)0(18)Q10065+^D86
POPRMT:	BYTE	(4)4(14)0(18)Q10065+^D87
IDENMT:	BYTE	(4)4(14)0(18)Q10065+^D88
SQLTPT:	BYTE	(4)4(14)0(18)Q10065+^D89
DQLTPT:	BYTE	(4)4(14)0(18)Q10065+^D90
LBDCPT:	BYTE	(4)4(14)0(18)Q10065+^D91
IDDCPT:	BYTE	(4)4(14)0(18)Q10065+^D92
A10266:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'MESG'
A10267:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'TTYFLG'
A10268:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'CHRMOD'
A10269:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'QTYP'
A10270:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'BRKPAT'
A10271:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'SKEL'
A10272:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'SUB1'
A10273:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'CTL1'
A10274:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'CTL2'
A10275:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'CTL3'
A10276:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'CTL4'
A10277:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'CTL5'
A10278:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'CTL6'
A10279:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'CTL7'
A10280:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'CTL8'
A10281:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'CTL9'
A10282:	BYTE	(2)2(16)^D1+1(18)^D5
	ASCII	'CTL10'
A10283:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'FASBOL'
S10284:	POINT	7,A10284,35
A10284:	BYTE	(2)2(16)^D2+1(18)^D10
	ASCII	'SUB1(SKEL)'
S10285:	POINT	7,A10285,35
A10285:	BYTE	(2)2(16)^D3+1(18)^D14
	ASCII	'SYM(INAM,ATRB)'
S10286:	POINT	7,A10286,35
A10286:	BYTE	(2)2(16)^D3+1(18)^D14
	ASCII	'CRS(NEXT,CRSI)'
S10287:	POINT	7,A10287,35
A10287:	BYTE	(2)2(16)^D3+1(18)^D14
	ASCII	'NOD(FRNT,BACK)'
N10289:	BYTE	(4)4(14)0(18)Q10065+^D100
S10290:	POINT	7,A10290,35
A10290:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	' '
N10295:	BYTE	(4)4(14)0(18)Q10065+^D101
S10297:	POINT	7,A10297,35
A10297:	BYTE	(2)2(16)^D5+1(18)^D25
	ASCII	'*TOTAL COMPILATION TIME: '
S10298:	POINT	7,A10298,35
A10298:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	' MS., '
S10299:	POINT	7,A10299,35
A10299:	BYTE	(2)2(16)^D4+1(18)^D19
	ASCII	' ERROR DIAGNOSTICS*'
B10303:	EXP	^D0
	XWD	^D0,^D0
	XWD	^D0,^D0
	XWD	^D0,^D64
S10303:	POINT	7,A10303,35
A10303:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	';'
S10304:	POINT	7,A10304,35
A10304:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	'Q'
S10305:	POINT	7,A10305,35
A10305:	BYTE	(2)2(16)^D2+1(18)^D10
	ASCII	'ERROR   **'
S10308:	POINT	7,A10308,35
A10308:	BYTE	(2)2(16)^D1+1(18)^D2
	ASCII	'**'
S10311:	POINT	7,A10311,35
A10311:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	'^'
N10316:	BYTE	(4)4(14)0(18)Q10065+^D102
N10317:	BYTE	(4)4(14)0(18)Q10065+^D103
S10319:	POINT	7,A10319,35
A10319:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	'*'
B10320:	EXP	^D32256
	XWD	^D0,^D32512
	XWD	^D0,^D32512
	XWD	^D0,^D16128
A10320:	BYTE	(2)2(16)^D6+1(18)^D26
	ASCII	'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
S10322:	POINT	7,A10322,35
A10322:	BYTE	(2)2(16)^D4+1(18)^D16
	ASCII	'BAD CONTROL LINE'
B10326:	EXP	^D0
	XWD	^D0,^D0
	XWD	^D0,^D8
	XWD	^D0,^D4
A10326:	BYTE	(2)2(16)^D1+1(18)^D2
	ASCII	'.+'
N10329:	BYTE	(4)4(14)0(18)Q10065+^D104
S10330:	POINT	7,A10330,35
A10330:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'STRING'
S10331:	POINT	7,A10331,35
A10331:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'NAME'
A10332:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'FRNT'
A10333:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'BACK'
N10334:	BYTE	(4)4(14)0(18)Q10065+^D105
A10335:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'SYM'
A10338:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'CRS'
A10340:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'ATRB'
Q10065:	BYTE	(2)2(16)^D105+1(18)0
	REPEAT	^D105,<0>
Q10066:	BYTE	(2)2(16)^D67*4+1(18)-^D67
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10340,35
F10340:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10338,35
F10338:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10335,35
F10335:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10333,35
F10333:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10332,35
F10332:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10282,35
	JRST	L10282
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10281,35
	JRST	L10281
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10280,35
	JRST	L10280
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10279,35
	JRST	L10279
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10278,35
	JRST	L10278
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10277,35
	JRST	L10277
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10276,35
	JRST	L10276
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10275,35
	JRST	L10275
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10274,35
	JRST	L10274
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10273,35
	JRST	L10273
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10272,35
F10272:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10272,35
	JRST	L10272
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10272,35
N10272:	BYTE	(4)4(14)0(18)Q10065+^D99
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10271,35
N10271:	BYTE	(4)4(14)0(18)Q10065+^D98
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10270,35
N10270:	BYTE	(4)4(14)0(18)Q10065+^D97
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10269,35
N10269:	BYTE	(4)4(14)0(18)Q10065+^D96
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10268,35
N10268:	BYTE	(4)4(14)0(18)Q10065+^D95
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10267,35
N10267:	BYTE	(4)4(14)0(18)Q10065+^D94
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10266,35
N10266:	BYTE	(4)4(14)0(18)Q10065+^D93
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10172,35
P5:	BYTE	(4)4(14)0(18)Q10065+^D63
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10171,35
P4:	BYTE	(4)4(14)0(18)Q10065+^D62
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10170,35
P3:	BYTE	(4)4(14)0(18)Q10065+^D61
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10169,35
P2:	BYTE	(4)4(14)0(18)Q10065+^D60
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10168,35
P1:	BYTE	(4)4(14)0(18)Q10065+^D59
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10124,35
SUBS:	BYTE	(4)4(4)0(5)^D6(5)0(18)E10124
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10124,35
	JRST	L10124
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10124,35
N10124:	BYTE	(4)4(14)0(18)Q10065+^D16
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10122,35
PARLIT:	BYTE	(4)4(4)0(5)^D2(5)0(18)E10122
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10122,35
	JRST	L10122
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10122,35
N10122:	BYTE	(4)4(14)0(18)Q10065+^D15
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10120,35
GETITM:	BYTE	(4)4(4)0(5)^D0(5)0(18)E10120
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10120,35
	JRST	L10120
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10120,35
N10120:	BYTE	(4)4(14)0(18)Q10065+^D14
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10118,35
GETATR:	BYTE	(4)4(4)0(5)^D0(5)0(18)E10118
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10118,35
	JRST	L10118
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10118,35
N10118:	BYTE	(4)4(14)0(18)Q10065+^D13
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10116,35
GETSTA:	BYTE	(4)4(4)0(5)^D0(5)0(18)E10116
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10116,35
	JRST	L10116
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10116,35
N10116:	BYTE	(4)4(14)0(18)Q10065+^D12
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10114,35
STXERR:	BYTE	(4)4(4)0(5)^D1(5)0(18)E10114
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10114,35
	JRST	L10114
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10114,35
N10114:	BYTE	(4)4(14)0(18)Q10065+^D11
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10112,35
ERRMSG:	BYTE	(4)4(4)0(5)^D1(5)0(18)E10112
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10112,35
	JRST	L10112
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10112,35
N10112:	BYTE	(4)4(14)0(18)Q10065+^D10
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10110,35
NEWLAB:	BYTE	(4)4(4)0(5)^D0(5)0(18)E10110
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10110,35
	JRST	L10110
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10110,35
N10110:	BYTE	(4)4(14)0(18)Q10065+^D9
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10108,35
NEWNAM:	BYTE	(4)4(4)0(5)^D0(5)0(18)E10108
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10108,35
	JRST	L10108
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10108,35
N10108:	BYTE	(4)4(14)0(18)Q10065+^D8
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10106,35
PUTOUT:	BYTE	(4)4(4)0(5)^D2(5)0(18)E10106
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10106,35
	JRST	L10106
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10106,35
N10106:	BYTE	(4)4(14)0(18)Q10065+^D7
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10104,35
PRTOUT:	BYTE	(4)4(4)0(5)^D3(5)0(18)E10104
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10104,35
	JRST	L10104
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10104,35
N10104:	BYTE	(4)4(14)0(18)Q10065+^D6
	EXP	0
	BYTE	(5)2(31)0
	POINT	7,A10094,35
N10094:	BYTE	(4)4(14)0(18)Q10065+^D5
	EXP	0
	BYTE	(5)2(31)0
	POINT	7,A10093,35
N10093:	BYTE	(4)4(14)0(18)Q10065+^D4
	EXP	0
	BYTE	(5)2(31)0
	POINT	7,A10092,35
N10092:	BYTE	(4)4(14)0(18)Q10065+^D3
	EXP	0
	BYTE	(5)2(31)0
	POINT	7,A10091,35
N10091:	BYTE	(4)4(14)0(18)Q10065+^D2
	EXP	0
	BYTE	(5)2(31)0
	POINT	7,A10090,35
N10090:	BYTE	(4)4(14)0(18)Q10065+^D1
	POINT	7,A10283,35
Q10000:	XWD	0,Q10065
	XWD	Q10066,^D0
	EXP	Q10066
	XWD	^D10,Q10000
E10104:	JSP	13,S$$EFI##
	POINT	7,A10105,35
	EXP	0
	XWD	^D11,Q10000
E10106:	JSP	13,S$$EFI##
	POINT	7,A10107,35
	EXP	0
	XWD	^D12,Q10000
E10108:	JSP	13,S$$EFI##
	POINT	7,A10109,35
	EXP	0
	XWD	^D13,Q10000
E10110:	JSP	13,S$$EFI##
	POINT	7,A10111,35
	EXP	0
	XWD	^D14,Q10000
E10112:	JSP	13,S$$EFI##
	POINT	7,A10113,35
	EXP	0
	XWD	^D15,Q10000
E10114:	JSP	13,S$$EFI##
	POINT	7,A10115,35
	EXP	0
	XWD	^D16,Q10000
E10116:	JSP	13,S$$EFI##
	POINT	7,A10117,35
	EXP	0
	XWD	^D17,Q10000
E10118:	JSP	13,S$$EFI##
	POINT	7,A10119,35
	EXP	0
	XWD	^D18,Q10000
E10120:	JSP	13,S$$EFI##
	POINT	7,A10121,35
	EXP	0
	XWD	^D19,Q10000
E10122:	JSP	13,S$$EFI##
	POINT	7,A10123,35
	EXP	0
	XWD	^D20,Q10000
E10124:	JSP	13,S$$EFI##
	POINT	7,A10125,35
	EXP	0
	END	Q10002