Google
 

Trailing-Edge - PDP-10 Archives - decuslib10-02 - 43,50263/execph.fas
There are 2 other files named execph.fas in the archive. Click here to see a list.
;*	*	*	*	*	*	*	*	*
;*	*	DECLARATIONS	*	*	*	*	*
;*	*	*	*	*	*	*	*	*
;*
;*		LOCAL
;*
;	DECLARE('SNOBOL.SUBPROGRAM','EXECPH')
;	DECLARE('OPTION','NO.STNO')
;	DECLARE('PURGE.VARIABLE',ALL)
;	DECLARE('PURGE.LABEL',ALL)
;	DECLARE('EXTERNAL.FUNCTION','GETSTA,PUTOUT,GETITM,ERRMSG,STXERR,
;.NEWLAB,SUBS,PARLIT,GETATR,NEWNAM')
;	DECLARE('INTEGER','SW,I,J,NPAR,VARTYP,OBJTYP,RGL,LOPER,ROPER,
;.OPER,TYPE,RSTFLG,MAXLVL,MODFLG,FAILFL,TML,LSGN,RTYP,RSGN,RTYPE,TP,
;.DEDFLG')
;	DECLARE('ENTRY.FUNCTION','INIEXE()')
;	DECLARE('ENTRY.FUNCTION','EXECPH()VARCOD,PATCOD,OBJCOD,STACOD,
;.GOTCOD,EVLCOD,STR1,STR2')
;*
;*		SYSTEM COMMON
;*
;*	TABLES AND LISTS
;	DECLARE('EXTERNAL.VARIABLE',
;.'SYMBTB,XNAMTB,KEYWTB,CTRLTB,DECLTB,CROSTB,CONSTB,ENTFTB,DSIZTB,
;.BOPRTB,UOPRTB')
;	DECLARE('EXTERNAL.VARIABLE',
;.'ENTRLS,EXTRLS,FORTLS')
;*	ARRAYS
;	DECLARE('EXTERNAL.VARIABLE',
;.'PTVRAR,PTFNAR,PRIMAR,GOTOAR,DECLAR,PROGAR,VARBAR,MACHAR,STENAR,BOPRAR,
;.UOPRAR,PATRAR,EXPRAR,AROPAR,ARITAR,EACTAR')
;*	PARAMETERS (STRINGS,DATATYPES)
;	DECLARE('EXTERNAL.VARIABLE',
;.'C,INDENT,SPLASH,ITNAM,ITENT,NOFAIL,SNONAM,SUBNAM,PARBLK,PRGNAM,STARTP,
;.TEMLOC,P1,P2,P3,P4,P5')
;*	PARAMETERS (INTEGERS)
;	DECLARE('EXTERNAL.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('EXTERNAL.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('EXTERNAL.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('EXTERNAL.VARIABLE',
;.'FFCHR,CRLCHR,LFCHR,CRCHR,SQCHR,DQCHR,TBCHR,LCSCHR,BLNCHR,EQLCHR,
;.QTSCHR,ELTCHR,LBCHR')
;*	PATTERNS AND MATCHES
;	DECLARE('EXTERNAL.VARIABLE',
;.'COMSPT,INTGPT,BLNKPT,OPBLPT,PCOMPT,PCPRMT,IDENPT,DCLCMT,RSIDPT,LABLPT,
;.POPRMT,IDENMT,SQLTPT,DQLTPT,LBDCPT,IDDCPT')
;*
;*	MINIMAL SYMBOL TABLE
;*
;	DECLARE('UNPURGE.VARIABLE','INIEXE,EXECPH,VARCOD,PATCOD,OBJCOD,
;.STACOD,GOTCOD,EVLCOD,STR1,STR2,PR.X,TP,ROPER,PR.U,PR.L,NOD,NPAR,DEFSTR,
;.GETLIT,GETINT,MODFLG,GETREL,DEFLAB,GETLAB,DEFVAR,GETDVR,GETVAR,GTOPTY,
;.I,GTPVAL,PUTTRE,G.EX,E.EX,RSTFLG,EVLCOD,V.EX,P.EX,TLAB1,TLAB2,P.VR,
;.U.EX,FUNC,MAXLVL,FAILFL,S.EX,DEDVAR,S.PR,S.VR,D.EX,RTYPE,D.PR,A.EX,
;.RGL,LSGN,LOPER')
;	DECLARE('UNPURGE.LABEL','INIEXE EXECPH PR.X PR.U PR.L DEFSTR
;. GETLIT GETINT GETREL DEFLAB GETLAB DEFVAR GETVAR GTOPTY GTPVAL PUTTRE
;. G.EX E.EX V.EX P.EX P.VR U.EX S.EX S.PR S.VR D.EX D.PR A.EX A B C D
;. E F G')
;	DECLARE('PURGE.FUNCTION','DEFINE,DATA,DIFFER,IDENT,DATATYPE,
;.ITEM,SUBSTR,REPLACE,APPLY,SIZE')
;*	*	*	*	*	*	*	*	*
;*	*	INITIALIZE EXECUTABLE STATEMENT PHASE	*	*
;*	*	*	*	*	*	*	*	*
;INIEXE	DEFINE('PR.X()TP,ROPER')
TITLE EXECPH
	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 EXECPH,INIEXE
EXTERN IDDCPT,LBDCPT,DQLTPT,SQLTPT,IDENMT,POPRMT,LABLPT,RSIDPT,DCLCMT,IDENPT
EXTERN PCPRMT,PCOMPT,OPBLPT,BLNKPT,INTGPT,COMSPT,LBCHR,ELTCHR,QTSCHR,EQLCHR
EXTERN BLNCHR,LCSCHR,TBCHR,DQCHR,SQCHR,CRCHR,LFCHR,CRLCHR,FFCHR,BTRATR
EXTERN SDRATR,SKRATR,FXXMSK,FXXATR,FGGATR,FIPATR,LGGATR,LIPATR,VGGATR,VIPATR
EXTERN VXXATR,VNNATR,TXTMSK,TXTATR,FDDMSK,FDIATR,FDPATR,FTFATR,LTTMSK,LTDATR
EXTERN VDDMSK,VDPATR,VDDATR,VTVATR,XNXMSK,XNFATR,XNLATR,XNVATR,BTATRB,SDATRB
EXTERN SKATRB,FXATRB,FGATRB,FIATRB,LGATRB,LIATRB,VGATRB,VIATRB,VXATRB,VNATRB
EXTERN TXATRB,FDATRB,FTATRB,LTATRB,VDATRB,VTATRB,XNATRB,MAXTMP,STNO,LISTOB
EXTERN DMPFLG,STRTIM,HSHSIZ,STNFLG,PRGALF,PRGALL,PRGALV,ITATR,ITTYP,INTGER
EXTERN LISTSR,OBJFLG,P,P5,P4,P3,P2,P1,TEMLOC,STARTP
EXTERN PRGNAM,PARBLK,SUBNAM,SNONAM,NOFAIL,ITENT,ITNAM,SPLASH,INDENT,C
EXTERN EACTAR,ARITAR,AROPAR,EXPRAR,PATRAR,UOPRAR,BOPRAR,STENAR,MACHAR,VARBAR
EXTERN PROGAR,DECLAR,GOTOAR,PRIMAR,PTFNAR,PTVRAR,FORTLS,EXTRLS,ENTRLS,UOPRTB
EXTERN BOPRTB,DSIZTB,ENTFTB,CONSTB,CROSTB,DECLTB,CTRLTB,KEYWTB,XNAMTB,SYMBTB
EXTERN NEWNAM,GETATR,PARLIT,SUBS,NEWLAB,STXERR,ERRMSG,GETITM,PUTOUT,GETSTA

L10117:
	MOVEI	14,Q10002
	MOVEM	14,S$$FLP##
	MOVE	1,S10307
	FCALV$	^D1,F10066
Q10002:
;	DEFINE('PR.U()TP,ROPER')
	MOVEI	14,Q10003
	MOVEM	14,S$$FLP##
	MOVE	1,S10308
	FCALV$	^D1,F10066
Q10003:
;	DEFINE('PR.L()NOD,NPAR,TP,ROPER')
	MOVEI	14,Q10004
	MOVEM	14,S$$FLP##
	MOVE	1,S10309
	FCALV$	^D1,F10066
Q10004:
;	DEFINE('DEFSTR(STR1)')
	MOVEI	14,Q10005
	MOVEM	14,S$$FLP##
	MOVE	1,S10310
	FCALV$	^D1,F10066
Q10005:
;	DEFINE('GETLIT(STR1)')
	MOVEI	14,Q10006
	MOVEM	14,S$$FLP##
	MOVE	1,S10311
	FCALV$	^D1,F10066
Q10006:
;	DEFINE('GETINT(STR1,MODFLG)')
	MOVEI	14,Q10007
	MOVEM	14,S$$FLP##
	MOVE	1,S10312
	FCALV$	^D1,F10066
Q10007:
;	DEFINE('GETREL(STR1,MODFLG)')
	MOVEI	14,Q10008
	MOVEM	14,S$$FLP##
	MOVE	1,S10313
	FCALV$	^D1,F10066
Q10008:
;	DEFINE('DEFLAB()')
	MOVEI	14,Q10009
	MOVEM	14,S$$FLP##
	MOVE	1,S10314
	FCALV$	^D1,F10066
Q10009:
;	DEFINE('GETLAB()')
	MOVEI	14,Q10010
	MOVEM	14,S$$FLP##
	MOVE	1,S10315
	FCALV$	^D1,F10066
Q10010:
;	DEFINE('DEFVAR()')
	MOVEI	14,Q10011
	MOVEM	14,S$$FLP##
	MOVE	1,S10316
	FCALV$	^D1,F10066
Q10011:
;	DEFINE('GETDVR(STR1)')
	MOVEI	14,Q10012
	MOVEM	14,S$$FLP##
	MOVE	1,S10317
	FCALV$	^D1,F10066
Q10012:
;	DEFINE('GETVAR(STR1)')
	MOVEI	14,Q10013
	MOVEM	14,S$$FLP##
	MOVE	1,S10318
	FCALV$	^D1,F10066
Q10013:
;	DEFINE('GTOPTY(I)')
	MOVEI	14,Q10014
	MOVEM	14,S$$FLP##
	MOVE	1,S10319
	FCALV$	^D1,F10066
Q10014:
;	DEFINE('GTPVAL(NOD)')
	MOVEI	14,Q10015
	MOVEM	14,S$$FLP##
	MOVE	1,S10320
	FCALV$	^D1,F10066
Q10015:
;	DEFINE('PUTTRE(NOD)')
	MOVEI	14,Q10016
	MOVEM	14,S$$FLP##
	MOVE	1,S10321
	FCALV$	^D1,F10066
Q10016:
;	DEFINE('G.EX()')
	MOVEI	14,Q10017
	MOVEM	14,S$$FLP##
	MOVE	1,S10322
	FCALV$	^D1,F10066
Q10017:
;	DEFINE('E.EX(NOD)NPAR,RSTFLG,EVLCOD')
	MOVEI	14,Q10018
	MOVEM	14,S$$FLP##
	MOVE	1,S10323
	FCALV$	^D1,F10066
Q10018:
;	DEFINE('V.EX(NOD)')
	MOVEI	14,Q10019
	MOVEM	14,S$$FLP##
	MOVE	1,S10324
	FCALV$	^D1,F10066
Q10019:
;	DEFINE('P.EX(NOD,ROPER)TLAB1,TLAB2')
	MOVEI	14,Q10020
	MOVEM	14,S$$FLP##
	MOVE	1,S10325
	FCALV$	^D1,F10066
Q10020:
;	DEFINE('P.VR(NOD)ROPER')
	MOVEI	14,Q10021
	MOVEM	14,S$$FLP##
	MOVE	1,S10326
	FCALV$	^D1,F10066
Q10021:
;	DEFINE('U.EX(NOD,FUNC,MAXLVL)FAILFL')
	MOVEI	14,Q10022
	MOVEM	14,S$$FLP##
	MOVE	1,S10327
	FCALV$	^D1,F10066
Q10022:
;	DEFINE('S.EX(NOD,DEDVAR)NPAR')
	MOVEI	14,Q10023
	MOVEM	14,S$$FLP##
	MOVE	1,S10328
	FCALV$	^D1,F10066
Q10023:
;	DEFINE('S.PR(NOD)ROPER')
	MOVEI	14,Q10024
	MOVEM	14,S$$FLP##
	MOVE	1,S10329
	FCALV$	^D1,F10066
Q10024:
;	DEFINE('S.VR(NOD,MODFLG)TLAB1,NPAR')
	MOVEI	14,Q10025
	MOVEM	14,S$$FLP##
	MOVE	1,S10330
	FCALV$	^D1,F10066
Q10025:
;	DEFINE('D.EX(NOD,MODFLG)ROPER,RTYPE')
	MOVEI	14,Q10026
	MOVEM	14,S$$FLP##
	MOVE	1,S10331
	FCALV$	^D1,F10066
Q10026:
;	DEFINE('D.PR(NOD,MODFLG)ROPER,RTYPE,TLAB1')
	MOVEI	14,Q10027
	MOVEM	14,S$$FLP##
	MOVE	1,S10332
	FCALV$	^D1,F10066
Q10027:
;	DEFINE('A.EX(NOD,MODFLG,RGL)ROPER,RTYPE,LSGN,LOPER')
	MOVEI	14,Q10028
	MOVEM	14,S$$FLP##
	MOVE	1,S10333
	FCALV$	^D1,F10066
Q10028:
;	DATA('SYM(INAM,ATRB)')
	MOVEI	14,Q10029
	MOVEM	14,S$$FLP##
	MOVE	1,S10334
	FCALV$	^D1,F10060
Q10029:
;	DATA('CRS(NEXT,CRSI)')
	MOVEI	14,Q10030
	MOVEM	14,S$$FLP##
	MOVE	1,S10335
	FCALV$	^D1,F10060
Q10030:
;	DATA('NOD(FRNT,BACK)')
	MOVEI	14,Q10031
	MOVEM	14,S$$FLP##
	MOVE	1,S10336
	FCALV$	^D1,F10060
Q10031:
;	DATA('BON(OPTY,LFTS,RGTS)')
	MOVEI	14,Q10032
	MOVEM	14,S$$FLP##
	MOVE	1,S10337
	FCALV$	^D1,F10060
Q10032:
;	DATA('ELN(OPTY,SBJT,PVAL)')
	MOVEI	14,Q10033
	MOVEM	14,S$$FLP##
	MOVE	1,S10338
	FCALV$	^D1,F10060
Q10033:
;	DATA('PLN(NXTL,PARP,PVAL)')
	MOVEI	14,Q10034
	MOVEM	14,S$$FLP##
	MOVE	1,S10339
	FCALV$	^D1,F10060
Q10034:
;	EMPTMT	= TAB(*P)  @TP  (RPOS(0) ! SPAN(BLNCHR)  @TP  (RPOS(0)
;. ! ':'))
	MOVEI	14,Q10040
	MOVEM	14,S$$FLP##
	MOVE	1,@BLNCHR
	JSP	11,S$$MBT##
	EXP	.
	PUSH	16,1
	JSP	14,S$$GPB##
	XWD	^D-2,Q10039
	MOVE	^D1,P
	JUMPL	1,S$$MIE##
	JSP	11,S$$TAB##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,V10115
	JSP	11,S$$APS##
	XWD	.-.,Q10036
	HRRZ	1,K10341
	CAIE	1,(13)
	POPJ	16,
	JRST	Q10035
Q10036:
	JSP	11,S$$APF##
	MOVE	1,^D1(15)
	JSP	11,S$$SPN##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,V10115
	JSP	11,S$$APS##
	XWD	.-.,Q10038
	HRRZ	1,K10341
	CAIE	1,(13)
	POPJ	16,
	JRST	Q10037
Q10038:
	JSP	11,S$$APF##
	MOVE	1,S10342
	JSP	11,S$$MST##
Q10037:
Q10035:
	JRST	S$$PTS##
Q10039:
	MOVEM	1,@N10340
Q10040:
;	MAXLVL	= 12	:(RETURN)
	MOVE	^D1,K10343
	MOVEM	1,V10107
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;*	*	GENERATE CODE PREAMBLE	*	*	*	*
;*	*	*	*	*	*	*	*	*
;EXECPH	PRGNAM	= ?DIFFER(SNONAM) SNONAM	:S(PRGHD1)
L10119:
	MOVEI	14,Q10041
	MOVEM	14,S$$FLP##
	MOVE	1,@SNONAM
	FCALV$	^D1,F10071
	SETZ	1,
	MOVE	1,@SNONAM
	MOVEM	1,@PRGNAM
	JRST	L10344
Q10041:
;	PRGNAM	= ?DIFFER(SUBNAM) SUBNAM	:S(PRGHD1)
	MOVEI	14,Q10042
	MOVEM	14,S$$FLP##
	MOVE	1,@SUBNAM
	FCALV$	^D1,F10071
	SETZ	1,
	MOVE	1,@SUBNAM
	MOVEM	1,@PRGNAM
	JRST	L10344
Q10042:
;	PRGNAM	= '.MAIN.'
	MOVEI	14,Q10043
	MOVEM	14,S$$FLP##
	MOVE	1,S10345
	MOVEM	1,@PRGNAM
Q10043:
;	SNONAM	= PRGNAM
	MOVEI	14,Q10044
	MOVEM	14,S$$FLP##
	MOVE	1,@PRGNAM
	MOVEM	1,@SNONAM
Q10044:
;PRGHD1	?INE(OBJFLG + LISTOB,0)	:F(PRGHD7)
L10344:
	MOVEI	14,L10346
	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,K10341
	ADD	16,S$$STB##
	SETZ	1,
;	PUTOUT(SUBS(DECLAR<1>,PRGNAM))
	MOVEI	14,Q10045
	MOVEM	14,S$$FLP##
	MOVE	1,I10347
	AREFV$	^D1,DECLAR
	PUSH	16,1
	MOVE	1,@PRGNAM
	FCALV$	^D2,SUBS
	FCALV$	^D1,PUTOUT
Q10045:
;	STR1	= ENTRLS
	MOVEI	14,Q10046
	MOVEM	14,S$$FLP##
	MOVE	1,@ENTRLS
	MOVEM	1,@N10267
Q10046:
;	STR2	= DECLAR<2>
	MOVEI	14,Q10047
	MOVEM	14,S$$FLP##
	MOVE	1,I10348
	AREFV$	^D1,DECLAR
	MOVEM	1,@N10268
Q10047:
;	SW	= 1	:(PRGHD3)
	MOVE	^D1,K10347
	MOVEM	1,V10095
	JRST	L10349
;PRGHD2	STR1	= EXTRLS
L10350:
	MOVEI	14,Q10048
	MOVEM	14,S$$FLP##
	MOVE	1,@EXTRLS
	MOVEM	1,@N10267
Q10048:
;	STR2	= DECLAR<4>
	MOVEI	14,Q10049
	MOVEM	14,S$$FLP##
	MOVE	1,I10351
	AREFV$	^D1,DECLAR
	MOVEM	1,@N10268
Q10049:
;	SW	=
	MOVEI	14,Q10050
	MOVEM	14,S$$FLP##
	SETZM	V10095
Q10050:
;PRGHD3	STR3	=
L10349:
	MOVEI	14,Q10051
	MOVEM	14,S$$FLP##
	SETZM	@N10352
Q10051:
;	I	=
	MOVEI	14,Q10052
	MOVEM	14,S$$FLP##
	SETZM	V10096
Q10052:
;PRGHD4	(?IDENT(STR1) ?PUTOUT(STR3))	:F(PRGHD5)
L10353:
	MOVEI	14,L10354
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10072
	SETZ	1,
	MOVE	1,@N10352
	FCALV$	^D1,PUTOUT
	SETZ	1,
;	?IEQ(SW,0)	:F(PRGHD2)S(PRGHD7)
	MOVEI	14,L10350
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10095
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	JRST	L10346
;PRGHD5	STR3	= ?IEQ(I,0) SUBS(STR2,CRSI(STR1))	:S(PRGHD6)
L10354:
	MOVEI	14,Q10053
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10096
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10268
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D1,F10355
	FCALV$	^D2,SUBS
	MOVEM	1,@N10352
	JRST	L10356
Q10053:
;	STR3	= STR3 SUBS(DECLAR<3>,CRSI(STR1))
	MOVEI	14,Q10054
	MOVEM	14,S$$FLP##
	MOVE	1,@N10352
	PUSH	16,1
	MOVE	1,I10357
	AREFV$	^D1,DECLAR
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D1,F10355
	FCALV$	^D2,SUBS
	JSP	14,S$$CNC##
	EXP	^D2
	MOVEM	1,@N10352
Q10054:
;PRGHD6	STR1	= NEXT(STR1)
L10356:
	MOVEI	14,Q10055
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10358
	MOVEM	1,@N10267
Q10055:
;	(?IGE(I,9) ?PUTOUT(STR3))	:S(PRGHD3)
	MOVEI	14,Q10056
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$GEP##
	JUMP	0,V10096
	JUMP	0,K10359
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10352
	FCALV$	^D1,PUTOUT
	SETZ	1,
	JRST	L10349
Q10056:
;	I	= I + 1	:(PRGHD4)
	MOVE	^D1,V10096
	ADD	^D1,K10347
	MOVEM	1,V10096
	JRST	L10353
;PRGHD7	ENTRLS	=
L10346:
	MOVEI	14,Q10057
	MOVEM	14,S$$FLP##
	SETZM	@ENTRLS
Q10057:
;	EXTRLS	=
	MOVEI	14,Q10058
	MOVEM	14,S$$FLP##
	SETZM	@EXTRLS
Q10058:
;	PARBLK	= NEWLAB()
	MOVEI	14,Q10059
	MOVEM	14,S$$FLP##
	FCALV$	^D0,NEWLAB
	MOVEM	1,@PARBLK
Q10059:
;	TEMLOC	= NEWLAB()
	MOVEI	14,Q10060
	MOVEM	14,S$$FLP##
	FCALV$	^D0,NEWLAB
	MOVEM	1,@TEMLOC
Q10060:
;	PRGNAM	= INAM(DEFSTR(PRGNAM))
	MOVEI	14,Q10061
	MOVEM	14,S$$FLP##
	MOVE	1,@PRGNAM
	FCALV$	^D1,F10273
	FCALV$	^D1,F10360
	MOVEM	1,@PRGNAM
Q10061:
;	STARTP	= ?DIFFER(SNONAM) NEWLAB()	:F(CHKEOF)
	MOVEI	14,L10361
	MOVEM	14,S$$FLP##
	MOVE	1,@SNONAM
	FCALV$	^D1,F10071
	SETZ	1,
	FCALV$	^D0,NEWLAB
	MOVEM	1,@STARTP
;	STARTL	= NEWLAB()
	MOVEI	14,Q10062
	MOVEM	14,S$$FLP##
	FCALV$	^D0,NEWLAB
	MOVEM	1,@N10362
Q10062:
;	PUTOUT(SUBS(PROGAR<1>,STARTP,HSHSIZ,PARBLK,STARTL))
	MOVEI	14,Q10063
	MOVEM	14,S$$FLP##
	MOVE	1,I10347
	AREFV$	^D1,PROGAR
	PUSH	16,1
	MOVE	1,@STARTP
	PUSH	16,1
	MOVE	^D1,HSHSIZ
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	MOVE	1,@PARBLK
	PUSH	16,1
	MOVE	1,@N10362
	FCALV$	^D5,SUBS
	FCALV$	^D1,PUTOUT
Q10063:
;* CHECK IF DECLPH HIT EOF
;CHKEOF	IDENT(C)	:F(LABL)S(NOEND)
L10361:
	MOVEI	14,L10363
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	FCALV$	^D1,F10072
	JRST	L10364
;*	*	*	*	*	*	*	*	*
;*	*	STATEMENT PROCESSING LOOP	*	*	*
;*	*	*	*	*	*	*	*	*
;*
;STLOOP	C	= GETSTA()	:F(NOEND)
L10365:
	MOVEI	14,L10364
	MOVEM	14,S$$FLP##
	FCALV$	^D0,GETSTA
	MOVEM	1,@C
;*
;*	PROCESS LABEL FIELD
;LABL	C	@P  LABLPT  @P	:F(BODY)
L10363:
	MOVEI	14,L10366
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@LABLPT
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	JSP	11,S$$MTS##
;	PUTOUT(SUBS(PROGAR<6>,DEFLAB()))	:S(BODY)
	MOVEI	14,Q10064
	MOVEM	14,S$$FLP##
	MOVE	1,I10367
	AREFV$	^D1,PROGAR
	PUSH	16,1
	FCALV$	^D0,F10277
	FCALV$	^D2,SUBS
	FCALV$	^D1,PUTOUT
	JRST	L10366
Q10064:
;	(?DIFFER(ITNAM,'END') ?ERRMSG('MULTIPLY-DEFINED LABEL: ' ITNAM
;. ', IGNORED'))	:S(BODY)
	MOVEI	14,Q10065
	MOVEM	14,S$$FLP##
	MOVE	1,@ITNAM
	PUSH	16,1
	MOVE	1,S10007
	FCALV$	^D2,F10071
	SETZ	1,
	MOVE	1,S10368
	PUSH	16,1
	MOVE	1,@ITNAM
	PUSH	16,1
	MOVE	1,S10369
	JSP	14,S$$CNC##
	EXP	^D3
	FCALV$	^D1,ERRMSG
	SETZ	1,
	JRST	L10366
Q10065:
;	DIFFER(SNONAM)	:F(LABL2)
	MOVEI	14,L10370
	MOVEM	14,S$$FLP##
	MOVE	1,@SNONAM
	FCALV$	^D1,F10071
;	C	LEN(*P)  BLNKPT  @P  LABLPT	:F(LABL1)
	MOVEI	14,L10371
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@BLNKPT
	JSP	11,S$$MKP##
	PUSH	16,1
	MOVE	1,@LABLPT
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D3,0
	MOVE	^D1,P
	JUMPL	1,S$$MIE##
	JSP	11,S$$LEN##
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	MOVE	1,^D2(15)
	JSP	11,S$$PTX##
	JSP	11,S$$MTS##
;	PUTOUT(SUBS(PROGAR<5>,STARTL,GETLAB()))	:(LABL2)
	MOVEI	14,L10370
	MOVEM	14,S$$FLP##
	MOVE	1,I10372
	AREFV$	^D1,PROGAR
	PUSH	16,1
	MOVE	1,@N10362
	PUSH	16,1
	FCALV$	^D0,F10278
	FCALV$	^D3,SUBS
	FCALV$	^D1,PUTOUT
	JRST	L10370
;LABL1	PUTOUT(SUBS(PROGAR<4>,STARTL,STARTP))
L10371:
	MOVEI	14,Q10066
	MOVEM	14,S$$FLP##
	MOVE	1,I10351
	AREFV$	^D1,PROGAR
	PUSH	16,1
	MOVE	1,@N10362
	PUSH	16,1
	MOVE	1,@STARTP
	FCALV$	^D3,SUBS
	FCALV$	^D1,PUTOUT
Q10066:
;LABL2	PUTOUT(PROGAR<2>)	:(RETURN)
L10370:
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,I10348
	AREFV$	^D1,PROGAR
	FCALV$	^D1,PUTOUT
	JRST	S$$SRT##
;NOEND	(?ERRMSG('NO END STATEMENT') ?DIFFER(SNONAM))	:S(LABL1)F(LABL2
;.)
L10364:
	MOVEI	14,L10370
	MOVEM	14,S$$FLP##
	MOVE	1,S10373
	FCALV$	^D1,ERRMSG
	SETZ	1,
	MOVE	1,@SNONAM
	FCALV$	^D1,F10071
	SETZ	1,
	JRST	L10371
;*
;*	PROCESS STATEMENT BODY
;BODY	STACOD	=
L10366:
	MOVEI	14,Q10067
	MOVEM	14,S$$FLP##
	SETZM	@N10264
Q10067:
;	VARCOD	=
	MOVEI	14,Q10068
	MOVEM	14,S$$FLP##
	SETZM	@N10261
Q10068:
;	PATCOD	=
	MOVEI	14,Q10069
	MOVEM	14,S$$FLP##
	SETZM	@N10262
Q10069:
;	OBJCOD	=
	MOVEI	14,Q10070
	MOVEM	14,S$$FLP##
	SETZM	@N10263
Q10070:
;	TML	=
	MOVEI	14,Q10071
	MOVEM	14,S$$FLP##
	SETZM	V10110
Q10071:
;	DEDFLG	= 1
	MOVE	^D1,K10347
	MOVEM	1,V10116
;* CHECK FOR EMPTY BODY
;	C	EMPTMT	:F(BODY1)
	MOVEI	14,L10374
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@N10340
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	JSP	11,S$$MTS##
;	P	= TP	:(GOTO)
	MOVE	^D1,V10115
	MOVEM	1,P
	JRST	L10375
;BODY1	P	= ?INE(P,TP) TP	:F(SYNTAX)
L10374:
	MOVEI	14,L10376
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,P
	JUMP	0,V10115
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,V10115
	MOVEM	1,P
;	DEDFLG	=
	MOVEI	14,Q10072
	MOVEM	14,S$$FLP##
	SETZM	V10116
Q10072:
;* PARSE SUBJECT
;	VARCOD	= PR.U()	:F(ERRPTR)
	MOVEI	14,L10377
	MOVEM	14,S$$FLP##
	FCALV$	^D0,F10270
	MOVEM	1,@N10261
;	C	EMPTMT	:S(DEGEN)
	MOVEI	14,Q10073
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@N10340
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	JSP	11,S$$MTS##
	JRST	L10378
Q10073:
;	P	= ?INE(P,TP) TP	:F(SYNTAX)
	MOVEI	14,L10376
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,P
	JUMP	0,V10115
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,V10115
	MOVEM	1,P
;* CHECK FOR ASSIGNMENT
;	C	LEN(*P)  NOTANY(EQLCHR)	:F(PARSOB)
	MOVEI	14,L10379
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@EQLCHR
	JSP	11,S$$MBT##
	EXP	.
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	^D1,P
	JUMPL	1,S$$MIE##
	JSP	11,S$$LEN##
	MOVE	1,^D1(15)
	JSP	11,S$$NTA##
	JSP	11,S$$MTS##
;* PARSE PATTERN
;	PATCOD	= PR.X()	:F(ERRPTR)
	MOVEI	14,L10377
	MOVEM	14,S$$FLP##
	FCALV$	^D0,F10269
	MOVEM	1,@N10262
;	C	EMPTMT	:S(MATCH)
	MOVEI	14,Q10074
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@N10340
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	JSP	11,S$$MTS##
	JRST	L10380
Q10074:
;	P	= ?INE(P,TP) TP	:F(SYNTAX)
	MOVEI	14,L10376
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,P
	JUMP	0,V10115
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,V10115
	MOVEM	1,P
;* PARSE EQUALS BEFORE OBJECT
;PARSOB	C	LEN(*P)  ANY(EQLCHR)  @P	:F(SYNTAX)
L10379:
	MOVEI	14,L10376
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@EQLCHR
	JSP	11,S$$MBT##
	EXP	.
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	^D1,P
	JUMPL	1,S$$MIE##
	JSP	11,S$$LEN##
	MOVE	1,^D1(15)
	JSP	11,S$$ANY##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	JSP	11,S$$MTS##
;	C	EMPTMT	:S(PARSFN)
	MOVEI	14,Q10075
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@N10340
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	JSP	11,S$$MTS##
	JRST	L10381
Q10075:
;	P	= ?INE(P,TP) TP	:F(SYNTAX)
	MOVEI	14,L10376
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,P
	JUMP	0,V10115
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,V10115
	MOVEM	1,P
;	OBJCOD	= PR.X()	:F(ERRPTR)
	MOVEI	14,L10377
	MOVEM	14,S$$FLP##
	FCALV$	^D0,F10269
	MOVEM	1,@N10263
;	C	EMPTMT	:S(PARSFN)
	MOVEI	14,Q10076
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@N10340
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	JSP	11,S$$MTS##
	JRST	L10381
Q10076:
;	P	= TP	:(SYNTAX)
	MOVE	^D1,V10115
	MOVEM	1,P
	JRST	L10376
;PARSFN	P	= TP
L10381:
	MOVE	^D1,V10115
	MOVEM	1,P
;	IDENT(PATCOD)	:F(REPLAC)S(ASSIGN)
	MOVEI	14,L10382
	MOVEM	14,S$$FLP##
	MOVE	1,@N10262
	FCALV$	^D1,F10072
	JRST	L10383
;*	DEGENERATE
;DEGEN	P	= TP
L10378:
	MOVE	^D1,V10115
	MOVEM	1,P
;	VARTYP	= GTOPTY(OPTY(VARCOD))
	MOVEI	14,Q10077
	MOVEM	14,S$$FLP##
	MOVE	1,@N10261
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	DASGN$	2,V10099
Q10077:
;	DEDFLG	= ?ILE(VARTYP,1) 1
	MOVEI	14,Q10078
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10099
	JUMP	0,K10347
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,K10347
	MOVEM	1,V10116
Q10078:
;	VARTYP	= ?ILE(VARTYP,3) REMDR(VARTYP,2)	:F(DEGEN1)
	MOVEI	14,L10385
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10099
	JUMP	0,K10357
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$RMD##
	JUMP	0,V10099
	JUMP	0,K10348
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,V10099
;	STACOD	= D.EX(VARCOD,VARTYP)	:F(ERRPTR)S(GOTO)
	MOVEI	14,L10377
	MOVEM	14,S$$FLP##
	MOVE	1,@N10261
	PUSH	16,1
	MOVE	^D1,V10099
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,F10298
	MOVEM	1,@N10264
	JRST	L10375
;DEGEN1	STACOD	= E.EX(VARCOD)	:F(ERRPTR)S(GOTO)
L10385:
	MOVEI	14,L10377
	MOVEM	14,S$$FLP##
	MOVE	1,@N10261
	FCALV$	^D1,F10286
	MOVEM	1,@N10264
	JRST	L10375
;*	ASSIGNMENT
;ASSIGN	VARTYP	= GTOPTY(OPTY(VARCOD))
L10383:
	MOVEI	14,Q10079
	MOVEM	14,S$$FLP##
	MOVE	1,@N10261
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	DASGN$	2,V10099
Q10079:
;	(?ILE(VARTYP,1) ?ILE(OPER,1))	:F(ASGSTR)
	MOVEI	14,L10386
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10099
	JUMP	0,K10347
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10104
	JUMP	0,K10347
	ADD	16,S$$STB##
	SETZ	1,
;	I	= ?IEQ(OPER,1) SBJT(VARCOD)	:F(DASG1)
	MOVEI	14,L10388
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10347
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10261
	FCALV$	^D1,F10387
	DASGN$	2,V10096
;	P	= ?ILE(I,7) ?ERRMSG('ASSIGNMENT TO PROTECTED KEYWORD')
;. PVAL(VARCOD)	:S(ERRPTR)
	MOVEI	14,Q10080
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10096
	JUMP	0,K10389
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,S10390
	FCALV$	^D1,ERRMSG
	SETZ	1,
	MOVE	1,@N10261
	FCALV$	^D1,F10391
	DASGN$	2,P
	JRST	L10377
Q10080:
;	VARCOD	= SUBS(VARBAR<1>,I)	:(DASG2)
	MOVEI	14,L10392
	MOVEM	14,S$$FLP##
	MOVE	1,I10347
	AREFV$	^D1,VARBAR
	PUSH	16,1
	MOVE	^D1,V10096
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,SUBS
	MOVEM	1,@N10261
	JRST	L10392
;DASG1	VARCOD	= GETDVR(SBJT(VARCOD))
L10388:
	MOVEI	14,Q10081
	MOVEM	14,S$$FLP##
	MOVE	1,@N10261
	FCALV$	^D1,F10387
	FCALV$	^D1,F10280
	MOVEM	1,@N10261
Q10081:
;DASG2	STACOD	= ?IDENT(OBJCOD) SUBS(VARBAR<3>,VARCOD)	:S(GOTO)
L10392:
	MOVEI	14,Q10082
	MOVEM	14,S$$FLP##
	MOVE	1,@N10263
	FCALV$	^D1,F10072
	SETZ	1,
	MOVE	1,I10357
	AREFV$	^D1,VARBAR
	PUSH	16,1
	MOVE	1,@N10261
	FCALV$	^D2,SUBS
	MOVEM	1,@N10264
	JRST	L10375
Q10082:
;	OBJTYP	= GTOPTY(OPTY(OBJCOD))
	MOVEI	14,Q10083
	MOVEM	14,S$$FLP##
	MOVE	1,@N10263
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	DASGN$	2,V10100
Q10083:
;	VARTYP	= ?IGT(OBJTYP,3) VARTYP + 2	:S(DASG3)
	MOVEI	14,Q10084
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$GTP##
	JUMP	0,V10100
	JUMP	0,K10357
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,V10099
	ADD	^D1,K10348
	MOVEM	1,V10099
	JRST	L10393
Q10084:
;	DEDFLG	= ?ILE(OBJTYP,1) 1
	MOVEI	14,Q10085
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10100
	JUMP	0,K10347
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,K10347
	MOVEM	1,V10116
Q10085:
;	STACOD	= NOD(D.EX(OBJCOD,VARTYP),SUBS(VARBAR<2>,VARCOD))
;.	:F(ERRPTR)S(GOTO)
	MOVEI	14,L10377
	MOVEM	14,S$$FLP##
	MOVE	1,@N10263
	PUSH	16,1
	MOVE	^D1,V10099
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,F10298
	PUSH	16,1
	MOVE	1,I10348
	AREFV$	^D1,VARBAR
	PUSH	16,1
	MOVE	1,@N10261
	FCALV$	^D2,SUBS
	FCALV$	^D2,F10272
	MOVEM	1,@N10264
	JRST	L10375
;DASG3	P	= ?IEQ(OBJTYP,5) ?ERRMSG('ILLEGAL ASSIGNMENT TO DEDICA
;.TED VAR') PVAL(VARCOD)	:S(ERRPTR)
L10393:
	MOVEI	14,Q10086
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10100
	JUMP	0,K10372
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,S10394
	FCALV$	^D1,ERRMSG
	SETZ	1,
	MOVE	1,@N10261
	FCALV$	^D1,F10391
	DASGN$	2,P
	JRST	L10377
Q10086:
;	STACOD	= NOD(S.EX(OBJCOD),SUBS(VARBAR<5>,VARTYP,VARCOD))
;.	:F(ERRPTR)S(GOTO)
	MOVEI	14,L10377
	MOVEM	14,S$$FLP##
	MOVE	1,@N10263
	FCALV$	^D1,F10294
	PUSH	16,1
	MOVE	1,I10372
	AREFV$	^D1,VARBAR
	PUSH	16,1
	MOVE	^D1,V10099
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	MOVE	1,@N10261
	FCALV$	^D3,SUBS
	FCALV$	^D2,F10272
	MOVEM	1,@N10264
	JRST	L10375
;ASGSTR	ITATR	= ?IEQ(OPER,0) ATRB(SBJT(VARCOD))	:F(ASGVAR)
L10386:
	MOVEI	14,L10396
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10261
	FCALV$	^D1,F10387
	FCALV$	^D1,F10395
	DASGN$	2,ITATR
;	ITTYP	=
	MOVEI	14,Q10087
	MOVEM	14,S$$FLP##
	SETZM	ITTYP
Q10087:
;	(?GETATR() ?IEQ(VDATRB,VDDATR))	:F(ASGIDF)
	MOVEI	14,L10397
	MOVEM	14,S$$FLP##
	FCALV$	^D0,GETATR
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,VDATRB
	JUMP	0,VDDATR
	ADD	16,S$$STB##
	SETZ	1,
;	STACOD	= S.EX(OBJCOD,GETDVR(SBJT(VARCOD))) :F(ERRPTR)S(GOTO)
	MOVEI	14,L10377
	MOVEM	14,S$$FLP##
	MOVE	1,@N10263
	PUSH	16,1
	MOVE	1,@N10261
	FCALV$	^D1,F10387
	FCALV$	^D1,F10280
	FCALV$	^D2,F10294
	MOVEM	1,@N10264
	JRST	L10375
;ASGIDF	P	= ?IEQ(VDATRB,VDPATR) ?ERRMSG('IMPROPER USE OF PATTERN P
;.RIMITIVE') PVAL(VARCOD)	:S(ERRPTR)
L10397:
	MOVEI	14,Q10088
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,VDATRB
	JUMP	0,VDPATR
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,S10398
	FCALV$	^D1,ERRMSG
	SETZ	1,
	MOVE	1,@N10261
	FCALV$	^D1,F10391
	DASGN$	2,P
	JRST	L10377
Q10088:
;	STACOD	= ?IDENT(OBJCOD) SUBS(VARBAR<6>,GETVAR(SBJT(VARCOD)))
;.	:S(GOTO)
	MOVEI	14,Q10089
	MOVEM	14,S$$FLP##
	MOVE	1,@N10263
	FCALV$	^D1,F10072
	SETZ	1,
	MOVE	1,I10367
	AREFV$	^D1,VARBAR
	PUSH	16,1
	MOVE	1,@N10261
	FCALV$	^D1,F10387
	FCALV$	^D1,F10281
	FCALV$	^D2,SUBS
	MOVEM	1,@N10264
	JRST	L10375
Q10089:
;	STACOD	= NOD(E.EX(OBJCOD),SUBS(VARBAR<7>,GETVAR(SBJT(VARCOD))))
;.	:F(ERRPTR)S(GOTO)
	MOVEI	14,L10377
	MOVEM	14,S$$FLP##
	MOVE	1,@N10263
	FCALV$	^D1,F10286
	PUSH	16,1
	MOVE	1,I10389
	AREFV$	^D1,VARBAR
	PUSH	16,1
	MOVE	1,@N10261
	FCALV$	^D1,F10387
	FCALV$	^D1,F10281
	FCALV$	^D2,SUBS
	FCALV$	^D2,F10272
	MOVEM	1,@N10264
	JRST	L10375
;ASGVAR	STACOD	= S.VR(VARCOD,1)	:F(ERRPTR)
L10396:
	MOVEI	14,L10377
	MOVEM	14,S$$FLP##
	MOVE	1,@N10261
	PUSH	16,1
	MOVE	1,I10347
	FCALV$	^D2,F10297
	MOVEM	1,@N10264
;	STACOD	= ?IDENT(OBJCOD) NOD(STACOD,VARBAR<8>)	:S(GOTO)
	MOVEI	14,Q10090
	MOVEM	14,S$$FLP##
	MOVE	1,@N10263
	FCALV$	^D1,F10072
	SETZ	1,
	MOVE	1,@N10264
	PUSH	16,1
	MOVE	1,I10399
	AREFV$	^D1,VARBAR
	FCALV$	^D2,F10272
	MOVEM	1,@N10264
	JRST	L10375
Q10090:
;	STACOD	= NOD(NOD(STACOD,VARBAR<9>),NOD(E.EX(OBJCOD),VARBAR<10>
;.))	:F(ERRPTR)S(GOTO)
	MOVEI	14,L10377
	MOVEM	14,S$$FLP##
	MOVE	1,@N10264
	PUSH	16,1
	MOVE	1,I10359
	AREFV$	^D1,VARBAR
	FCALV$	^D2,F10272
	PUSH	16,1
	MOVE	1,@N10263
	FCALV$	^D1,F10286
	PUSH	16,1
	MOVE	1,I10400
	AREFV$	^D1,VARBAR
	FCALV$	^D2,F10272
	FCALV$	^D2,F10272
	MOVEM	1,@N10264
	JRST	L10375
;*	REPLACEMENT
;REPLAC	NPAR	=
L10382:
	MOVEI	14,Q10091
	MOVEM	14,S$$FLP##
	SETZM	V10098
Q10091:
;	EVLCOD	=
	MOVEI	14,Q10092
	MOVEM	14,S$$FLP##
	SETZM	@N10266
Q10092:
;	STACOD	= P.EX(PATCOD)	:F(ERRPTR)
	MOVEI	14,L10377
	MOVEM	14,S$$FLP##
	MOVE	1,@N10262
	FCALV$	^D1,F10288
	MOVEM	1,@N10264
;	STACOD	= ?IEQ(NPAR,0) NOD(NOD(SUBS(MACHAR<2>,-1),MACHAR<3>),
;.STACOD)	:S(REPL2)
	MOVEI	14,Q10093
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10098
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,I10348
	AREFV$	^D1,MACHAR
	PUSH	16,1
	MOVN	^D1,K10347
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,SUBS
	PUSH	16,1
	MOVE	1,I10357
	AREFV$	^D1,MACHAR
	FCALV$	^D2,F10272
	PUSH	16,1
	MOVE	1,@N10264
	FCALV$	^D2,F10272
	MOVEM	1,@N10264
	JRST	L10401
Q10093:
;	STACOD	= NOD(SUBS(MACHAR<2>,NPAR + 1),STACOD)
	MOVEI	14,Q10094
	MOVEM	14,S$$FLP##
	MOVE	1,I10348
	AREFV$	^D1,MACHAR
	PUSH	16,1
	MOVE	^D1,V10098
	ADD	^D1,K10347
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,SUBS
	PUSH	16,1
	MOVE	1,@N10264
	FCALV$	^D2,F10272
	MOVEM	1,@N10264
Q10094:
;REPL2	STACOD	= ?DIFFER(EVLCOD) NOD(EVLCOD,STACOD)
L10401:
	MOVEI	14,Q10095
	MOVEM	14,S$$FLP##
	MOVE	1,@N10266
	FCALV$	^D1,F10071
	SETZ	1,
	MOVE	1,@N10266
	PUSH	16,1
	MOVE	1,@N10264
	FCALV$	^D2,F10272
	MOVEM	1,@N10264
Q10095:
;	OBJCOD	= ?IDENT(OBJCOD) MACHAR<9>	:S(REPL3)
	MOVEI	14,Q10096
	MOVEM	14,S$$FLP##
	MOVE	1,@N10263
	FCALV$	^D1,F10072
	SETZ	1,
	MOVE	1,I10359
	AREFV$	^D1,MACHAR
	MOVEM	1,@N10263
	JRST	L10402
Q10096:
;	OBJCOD	= S.EX(OBJCOD)	:F(ERRPTR)
	MOVEI	14,L10377
	MOVEM	14,S$$FLP##
	MOVE	1,@N10263
	FCALV$	^D1,F10294
	MOVEM	1,@N10263
;REPL3	STACOD	= NOD(NOD(MACHAR<1>,STACOD),NOD(NOD(MACHAR<7>,OBJCOD),
;.MACHAR<8>))
L10402:
	MOVEI	14,Q10097
	MOVEM	14,S$$FLP##
	MOVE	1,I10347
	AREFV$	^D1,MACHAR
	PUSH	16,1
	MOVE	1,@N10264
	FCALV$	^D2,F10272
	PUSH	16,1
	MOVE	1,I10389
	AREFV$	^D1,MACHAR
	PUSH	16,1
	MOVE	1,@N10263
	FCALV$	^D2,F10272
	PUSH	16,1
	MOVE	1,I10399
	AREFV$	^D1,MACHAR
	FCALV$	^D2,F10272
	FCALV$	^D2,F10272
	MOVEM	1,@N10264
Q10097:
;	(?GTOPTY(OPTY(VARCOD)) ?IEQ(OPER,0) ?IEQ(TYPE,4)) :F(REPL4)
	MOVEI	14,L10403
	MOVEM	14,S$$FLP##
	MOVE	1,@N10261
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10105
	JUMP	0,K10351
	ADD	16,S$$STB##
	SETZ	1,
;	VARCOD	= GETVAR(SBJT(VARCOD)) ?IEQ(VDATRB,0)	:F(REPL4)
	MOVEI	14,L10403
	MOVEM	14,S$$FLP##
	MOVE	1,@N10261
	FCALV$	^D1,F10387
	FCALV$	^D1,F10281
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,VDATRB
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	POP	16,1
	MOVEM	1,@N10261
;	STACOD	= NOD(NOD(SUBS(MACHAR<5>,VARCOD),STACOD),SUBS(VARBAR<7>,
;.VARCOD))	:(GOTO)
	MOVEI	14,L10375
	MOVEM	14,S$$FLP##
	MOVE	1,I10372
	AREFV$	^D1,MACHAR
	PUSH	16,1
	MOVE	1,@N10261
	FCALV$	^D2,SUBS
	PUSH	16,1
	MOVE	1,@N10264
	FCALV$	^D2,F10272
	PUSH	16,1
	MOVE	1,I10389
	AREFV$	^D1,VARBAR
	PUSH	16,1
	MOVE	1,@N10261
	FCALV$	^D2,SUBS
	FCALV$	^D2,F10272
	MOVEM	1,@N10264
	JRST	L10375
;REPL4	VARCOD	= V.EX(VARCOD)	:F(ERRPTR)
L10403:
	MOVEI	14,L10377
	MOVEM	14,S$$FLP##
	MOVE	1,@N10261
	FCALV$	^D1,F10287
	MOVEM	1,@N10261
;	STACOD	= NOD(NOD(VARCOD,NOD(VARBAR<9>,MACHAR<6>)),NOD(STACOD,
;.VARBAR<10>))	:(GOTO)
	MOVEI	14,L10375
	MOVEM	14,S$$FLP##
	MOVE	1,@N10261
	PUSH	16,1
	MOVE	1,I10359
	AREFV$	^D1,VARBAR
	PUSH	16,1
	MOVE	1,I10367
	AREFV$	^D1,MACHAR
	FCALV$	^D2,F10272
	FCALV$	^D2,F10272
	PUSH	16,1
	MOVE	1,@N10264
	PUSH	16,1
	MOVE	1,I10400
	AREFV$	^D1,VARBAR
	FCALV$	^D2,F10272
	FCALV$	^D2,F10272
	MOVEM	1,@N10264
	JRST	L10375
;*	MATCH
;MATCH	P	= TP
L10380:
	MOVE	^D1,V10115
	MOVEM	1,P
;	VARCOD	= S.PR(VARCOD)	:F(ERRPTR)
	MOVEI	14,L10377
	MOVEM	14,S$$FLP##
	MOVE	1,@N10261
	FCALV$	^D1,F10296
	MOVEM	1,@N10261
;	NPAR	=
	MOVEI	14,Q10098
	MOVEM	14,S$$FLP##
	SETZM	V10098
Q10098:
;	EVLCOD	=
	MOVEI	14,Q10099
	MOVEM	14,S$$FLP##
	SETZM	@N10266
Q10099:
;	STACOD	= P.EX(PATCOD)	:F(ERRPTR)
	MOVEI	14,L10377
	MOVEM	14,S$$FLP##
	MOVE	1,@N10262
	FCALV$	^D1,F10288
	MOVEM	1,@N10264
;	STACOD	= ?IEQ(NPAR,0) NOD(NOD(SUBS(MACHAR<2>,-1),MACHAR<3>),
;.STACOD)	:S(MATCH1)
	MOVEI	14,Q10100
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10098
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,I10348
	AREFV$	^D1,MACHAR
	PUSH	16,1
	MOVN	^D1,K10347
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,SUBS
	PUSH	16,1
	MOVE	1,I10357
	AREFV$	^D1,MACHAR
	FCALV$	^D2,F10272
	PUSH	16,1
	MOVE	1,@N10264
	FCALV$	^D2,F10272
	MOVEM	1,@N10264
	JRST	L10404
Q10100:
;	STACOD	= NOD(SUBS(MACHAR<2>,NPAR + 1),STACOD)
	MOVEI	14,Q10101
	MOVEM	14,S$$FLP##
	MOVE	1,I10348
	AREFV$	^D1,MACHAR
	PUSH	16,1
	MOVE	^D1,V10098
	ADD	^D1,K10347
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,SUBS
	PUSH	16,1
	MOVE	1,@N10264
	FCALV$	^D2,F10272
	MOVEM	1,@N10264
Q10101:
;MATCH1	STACOD	= ?DIFFER(EVLCOD) NOD(EVLCOD,STACOD)
L10404:
	MOVEI	14,Q10102
	MOVEM	14,S$$FLP##
	MOVE	1,@N10266
	FCALV$	^D1,F10071
	SETZ	1,
	MOVE	1,@N10266
	PUSH	16,1
	MOVE	1,@N10264
	FCALV$	^D2,F10272
	MOVEM	1,@N10264
Q10102:
;	STACOD	= NOD(NOD(VARCOD,MACHAR<1>),NOD(STACOD,MACHAR<4>))
	MOVEI	14,Q10103
	MOVEM	14,S$$FLP##
	MOVE	1,@N10261
	PUSH	16,1
	MOVE	1,I10347
	AREFV$	^D1,MACHAR
	FCALV$	^D2,F10272
	PUSH	16,1
	MOVE	1,@N10264
	PUSH	16,1
	MOVE	1,I10351
	AREFV$	^D1,MACHAR
	FCALV$	^D2,F10272
	FCALV$	^D2,F10272
	MOVEM	1,@N10264
Q10103:
;*
;*	PROCESS GOTO FIELD
;GOTO	GOTCOD	=
L10375:
	MOVEI	14,Q10104
	MOVEM	14,S$$FLP##
	SETZM	@N10265
Q10104:
;	GLOBF	= NOFAIL
	MOVEI	14,Q10105
	MOVEM	14,S$$FLP##
	MOVE	1,@NOFAIL
	MOVEM	1,@N10405
Q10105:
;	C	LEN(*P)  @TP  (RPOS(0) ! ':'  NSPAN(BLNCHR)  @TP)
;.	:F(SYNTAX)
	MOVEI	14,L10376
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@BLNCHR
	JSP	11,S$$MBT##
	EXP	.
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	^D1,P
	JUMPL	1,S$$MIE##
	JSP	11,S$$LEN##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,V10115
	JSP	11,S$$APS##
	XWD	.-.,Q10107
	HRRZ	1,K10341
	CAIE	1,(13)
	POPJ	16,
	JRST	Q10106
Q10107:
	JSP	11,S$$APF##
	MOVE	1,S10342
	JSP	11,S$$MST##
	MOVE	1,^D1(15)
	JSP	11,S$$NSP##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,V10115
Q10106:
	JSP	11,S$$MTS##
;	P	= ?INE(P,TP) TP	:F(STLFIN)
	MOVEI	14,L10406
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,P
	JUMP	0,V10115
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,V10115
	MOVEM	1,P
;	C	LEN(*P)  ANY('SF') $ STR1  @P	:S(GOTO2)
	MOVEI	14,Q10108
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D-1,0
	BYTE	(2)2(16)1(18).+1
	MOVE	^D1,P
	JUMPL	1,S$$MIE##
	JSP	11,S$$LEN##
	JSP	11,S$$VAS##
	MOVEI	1,B10407
	JSP	11,S$$ANY##
	MOVE	1,N10267
	JSP	11,S$$IVA##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	JSP	11,S$$MTS##
	JRST	L10408
Q10108:
;* UNCONDITIONAL GOTO
;	GOTCOD	= G.EX()	:F(ERRPTR)
	MOVEI	14,L10377
	MOVEM	14,S$$FLP##
	FCALV$	^D0,F10285
	MOVEM	1,@N10265
;	DIFFER(DATATYPE(GOTCOD),'NOD')	:F(GOTO1)
	MOVEI	14,L10409
	MOVEM	14,S$$FLP##
	MOVE	1,@N10265
	FCALV$	^D1,F10052
	PUSH	16,1
	MOVE	1,S10272
	FCALV$	^D2,F10071
;	GLOBF	= ?IDENT(GLOBF) GOTCOD
	MOVEI	14,Q10109
	MOVEM	14,S$$FLP##
	MOVE	1,@N10405
	FCALV$	^D1,F10072
	SETZ	1,
	MOVE	1,@N10265
	MOVEM	1,@N10405
Q10109:
;	GOTCOD	= SUBS(GOTOAR<5>,GOTCOD)	:(GOTO7)
	MOVEI	14,L10410
	MOVEM	14,S$$FLP##
	MOVE	1,I10372
	AREFV$	^D1,GOTOAR
	PUSH	16,1
	MOVE	1,@N10265
	FCALV$	^D2,SUBS
	MOVEM	1,@N10265
	JRST	L10410
;GOTO1	GLOBF	= ?IDENT(GLOBF) NEWLAB()	:F(GOTO7)
L10409:
	MOVEI	14,L10410
	MOVEM	14,S$$FLP##
	MOVE	1,@N10405
	FCALV$	^D1,F10072
	SETZ	1,
	FCALV$	^D0,NEWLAB
	MOVEM	1,@N10405
;	GOTCOD	= NOD(SUBS(GOTOAR<4>,GLOBF),GOTCOD)	:(GOTO7)
	MOVEI	14,L10410
	MOVEM	14,S$$FLP##
	MOVE	1,I10351
	AREFV$	^D1,GOTOAR
	PUSH	16,1
	MOVE	1,@N10405
	FCALV$	^D2,SUBS
	PUSH	16,1
	MOVE	1,@N10265
	FCALV$	^D2,F10272
	MOVEM	1,@N10265
	JRST	L10410
;* CONDITIONAL GOTO(S)
;GOTO2	IDENT(STR1,'F')	:F(GOTO5)
L10408:
	MOVEI	14,L10411
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	PUSH	16,1
	MOVE	1,S10305
	FCALV$	^D2,F10072
;* FAILURE GOTO
;	STR1	= G.EX()	:F(ERRPTR)
	MOVEI	14,L10377
	MOVEM	14,S$$FLP##
	FCALV$	^D0,F10285
	MOVEM	1,@N10267
;	GLOBF	= ?DIFFER(DATATYPE(STR1),'NOD') STR1	:S(GOTO3)
	MOVEI	14,Q10110
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10052
	PUSH	16,1
	MOVE	1,S10272
	FCALV$	^D2,F10071
	SETZ	1,
	MOVE	1,@N10267
	MOVEM	1,@N10405
	JRST	L10412
Q10110:
;	GLOBF	= NEWLAB()
	MOVEI	14,Q10111
	MOVEM	14,S$$FLP##
	FCALV$	^D0,NEWLAB
	MOVEM	1,@N10405
Q10111:
;	GOTCOD	= NOD(SUBS(GOTOAR<4>,GLOBF),STR1)
	MOVEI	14,Q10112
	MOVEM	14,S$$FLP##
	MOVE	1,I10351
	AREFV$	^D1,GOTOAR
	PUSH	16,1
	MOVE	1,@N10405
	FCALV$	^D2,SUBS
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D2,F10272
	MOVEM	1,@N10265
Q10112:
;* CHECK FOR SUCCESS GOTO FOLLOWING FAILURE
;GOTO3	C	LEN(*P)  NSPAN(BLNCHR)  'S'  @P	:S(GOTO4)
L10412:
	MOVEI	14,Q10113
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@BLNCHR
	JSP	11,S$$MBT##
	EXP	.
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	^D1,P
	JUMPL	1,S$$MIE##
	JSP	11,S$$LEN##
	MOVE	1,^D1(15)
	JSP	11,S$$NSP##
	MOVE	1,S10413
	JSP	11,S$$MST##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	JSP	11,S$$MTS##
	JRST	L10414
Q10113:
;	STR1	= ?DIFFER(GOTCOD) NEWLAB()	:F(GOTO7)
	MOVEI	14,L10410
	MOVEM	14,S$$FLP##
	MOVE	1,@N10265
	FCALV$	^D1,F10071
	SETZ	1,
	FCALV$	^D0,NEWLAB
	MOVEM	1,@N10267
;	GOTCOD	= NOD(NOD(SUBS(GOTOAR<5>,STR1),GOTCOD),SUBS(GOTOAR<4>,
;.STR1))	:(GOTO7)
	MOVEI	14,L10410
	MOVEM	14,S$$FLP##
	MOVE	1,I10372
	AREFV$	^D1,GOTOAR
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D2,SUBS
	PUSH	16,1
	MOVE	1,@N10265
	FCALV$	^D2,F10272
	PUSH	16,1
	MOVE	1,I10351
	AREFV$	^D1,GOTOAR
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D2,SUBS
	FCALV$	^D2,F10272
	MOVEM	1,@N10265
	JRST	L10410
;GOTO4	STR1	= G.EX()	:F(ERRPTR)
L10414:
	MOVEI	14,L10377
	MOVEM	14,S$$FLP##
	FCALV$	^D0,F10285
	MOVEM	1,@N10267
;	STR1	= ?DIFFER(DATATYPE(STR1),'NOD') SUBS(GOTOAR<5>,STR1)
	MOVEI	14,Q10114
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10052
	PUSH	16,1
	MOVE	1,S10272
	FCALV$	^D2,F10071
	SETZ	1,
	MOVE	1,I10372
	AREFV$	^D1,GOTOAR
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D2,SUBS
	MOVEM	1,@N10267
Q10114:
;	GOTCOD	= ?IDENT(GOTCOD) STR1	:S(GOTO7)
	MOVEI	14,Q10115
	MOVEM	14,S$$FLP##
	MOVE	1,@N10265
	FCALV$	^D1,F10072
	SETZ	1,
	MOVE	1,@N10267
	MOVEM	1,@N10265
	JRST	L10410
Q10115:
;	GOTCOD	= NOD(STR1,GOTCOD)
	MOVEI	14,Q10116
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	PUSH	16,1
	MOVE	1,@N10265
	FCALV$	^D2,F10272
	MOVEM	1,@N10265
Q10116:
;* SUCCESS GOTO
;GOTO5	GOTCOD	= G.EX()	:F(ERRPTR)
L10411:
	MOVEI	14,L10377
	MOVEM	14,S$$FLP##
	FCALV$	^D0,F10285
	MOVEM	1,@N10265
;	GOTCOD	= ?DIFFER(DATATYPE(GOTCOD),'NOD') SUBS(GOTOAR<5>,GOTCOD)
	MOVEI	14,Q10117
	MOVEM	14,S$$FLP##
	MOVE	1,@N10265
	FCALV$	^D1,F10052
	PUSH	16,1
	MOVE	1,S10272
	FCALV$	^D2,F10071
	SETZ	1,
	MOVE	1,I10372
	AREFV$	^D1,GOTOAR
	PUSH	16,1
	MOVE	1,@N10265
	FCALV$	^D2,SUBS
	MOVEM	1,@N10265
Q10117:
;* CHECK FOR FAILURE GOTO FOLLOWING SUCCESS
;	C	LEN(*P)  NSPAN(BLNCHR)  'F'  @P	:S(GOTO6)
	MOVEI	14,Q10118
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@BLNCHR
	JSP	11,S$$MBT##
	EXP	.
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	^D1,P
	JUMPL	1,S$$MIE##
	JSP	11,S$$LEN##
	MOVE	1,^D1(15)
	JSP	11,S$$NSP##
	MOVE	1,S10305
	JSP	11,S$$MST##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	JSP	11,S$$MTS##
	JRST	L10415
Q10118:
;	GLOBF	= ?IEQ(DEDFLG,0) NEWLAB()	:F(GOTO7)
	MOVEI	14,L10410
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10116
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	FCALV$	^D0,NEWLAB
	MOVEM	1,@N10405
;	GOTCOD	= NOD(GOTCOD,SUBS(GOTOAR<4>,GLOBF))	:(GOTO7)
	MOVEI	14,L10410
	MOVEM	14,S$$FLP##
	MOVE	1,@N10265
	PUSH	16,1
	MOVE	1,I10351
	AREFV$	^D1,GOTOAR
	PUSH	16,1
	MOVE	1,@N10405
	FCALV$	^D2,SUBS
	FCALV$	^D2,F10272
	MOVEM	1,@N10265
	JRST	L10410
;GOTO6	STR1	= G.EX()	:F(ERRPTR)
L10415:
	MOVEI	14,L10377
	MOVEM	14,S$$FLP##
	FCALV$	^D0,F10285
	MOVEM	1,@N10267
;	GLOBF	= ?DIFFER(DATATYPE(STR1),'NOD') STR1	:S(GOTO7)
	MOVEI	14,Q10119
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10052
	PUSH	16,1
	MOVE	1,S10272
	FCALV$	^D2,F10071
	SETZ	1,
	MOVE	1,@N10267
	MOVEM	1,@N10405
	JRST	L10410
Q10119:
;	GLOBF	= NEWLAB()
	MOVEI	14,Q10120
	MOVEM	14,S$$FLP##
	FCALV$	^D0,NEWLAB
	MOVEM	1,@N10405
Q10120:
;	GOTCOD	= NOD(GOTCOD,NOD(SUBS(GOTOAR<4>,GLOBF),STR1))
	MOVEI	14,Q10121
	MOVEM	14,S$$FLP##
	MOVE	1,@N10265
	PUSH	16,1
	MOVE	1,I10351
	AREFV$	^D1,GOTOAR
	PUSH	16,1
	MOVE	1,@N10405
	FCALV$	^D2,SUBS
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D2,F10272
	FCALV$	^D2,F10272
	MOVEM	1,@N10265
Q10121:
;* CHECK FOR CLEAN ENDING
;GOTO7	C	LEN(*P)  NSPAN(BLNCHR)  @P  RPOS(0)	:F(SYNTAX)
L10410:
	MOVEI	14,L10376
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@BLNCHR
	JSP	11,S$$MBT##
	EXP	.
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	^D1,P
	JUMPL	1,S$$MIE##
	JSP	11,S$$LEN##
	MOVE	1,^D1(15)
	JSP	11,S$$NSP##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	HRRZ	1,K10341
	CAIE	1,(13)
	POPJ	16,
	JSP	11,S$$MTS##
;*
;*	OUTPUT CODE FOR STATEMENT ENTRY, BODY, AND GOTO
;STLFIN	GLOBF	= ?IDENT(GLOBF) ?IEQ(DEDFLG,0) NEWLAB()	:F(STLFN1)
L10406:
	MOVEI	14,L10416
	MOVEM	14,S$$FLP##
	MOVE	1,@N10405
	FCALV$	^D1,F10072
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10116
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	FCALV$	^D0,NEWLAB
	MOVEM	1,@N10405
;	GOTCOD	= SUBS(GOTOAR<4>,GLOBF)
	MOVEI	14,Q10122
	MOVEM	14,S$$FLP##
	MOVE	1,I10351
	AREFV$	^D1,GOTOAR
	PUSH	16,1
	MOVE	1,@N10405
	FCALV$	^D2,SUBS
	MOVEM	1,@N10265
Q10122:
;STLFN1	?INE(OBJFLG + LISTOB,0)	:F(STLOOP)
L10416:
	MOVEI	14,L10365
	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,K10341
	ADD	16,S$$STB##
	SETZ	1,
;	(?ILT(STNFLG,0) ?IEQ(DEDFLG,1))	:S(STLFN2)
	MOVEI	14,Q10123
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LTP##
	JUMP	0,STNFLG
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10116
	JUMP	0,K10347
	ADD	16,S$$STB##
	SETZ	1,
	JRST	L10417
Q10123:
;	PUTOUT(SUBS(STENAR<STNFLG>,GLOBF,STNO))
	MOVEI	14,Q10124
	MOVEM	14,S$$FLP##
	MOVE	^D1,STNFLG
	TLO	1,1B18
	TLZ	1,1B19
	AREFV$	^D1,STENAR
	PUSH	16,1
	MOVE	1,@N10405
	PUSH	16,1
	MOVE	^D1,STNO
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D3,SUBS
	FCALV$	^D1,PUTOUT
Q10124:
;STLFN2	(?DIFFER(STACOD) ?PUTTRE(STACOD))
L10417:
	MOVEI	14,Q10125
	MOVEM	14,S$$FLP##
	MOVE	1,@N10264
	FCALV$	^D1,F10071
	SETZ	1,
	MOVE	1,@N10264
	FCALV$	^D1,F10284
	SETZ	1,
Q10125:
;	(?DIFFER(GOTCOD) ?PUTTRE(GOTCOD))	:(STLOOP)
	MOVEI	14,L10365
	MOVEM	14,S$$FLP##
	MOVE	1,@N10265
	FCALV$	^D1,F10071
	SETZ	1,
	MOVE	1,@N10265
	FCALV$	^D1,F10284
	SETZ	1,
	JRST	L10365
;*	ERRORS
;SYNTAX	STXERR('ERROR IN SYNTAX')	:(ERRCLR)
L10376:
	MOVEI	14,L10419
	MOVEM	14,S$$FLP##
	MOVE	1,S10418
	FCALV$	^D1,STXERR
	JRST	L10419
;ERRPTR	STXERR()
L10377:
	MOVEI	14,Q10126
	MOVEM	14,S$$FLP##
	FCALV$	^D0,STXERR
Q10126:
;ERRCLR	STACOD	= PROGAR<7>
L10419:
	MOVEI	14,Q10127
	MOVEM	14,S$$FLP##
	MOVE	1,I10389
	AREFV$	^D1,PROGAR
	MOVEM	1,@N10264
Q10127:
;	GOTCOD	=
	MOVEI	14,Q10128
	MOVEM	14,S$$FLP##
	SETZM	@N10265
Q10128:
;	GLOBF	=	:(STLFN1)
	MOVEI	14,L10416
	MOVEM	14,S$$FLP##
	SETZM	@N10405
	JRST	L10416
;*	*	*	*	*	*	*	*	*
;*	*	SUBROUTINES	*	*	*	*	*
;*	*	*	*	*	*	*	*	*
;*		PR.X()TP,ROPER PARSE EXPRESSION
;*	PARSES A SERIES OF ELEMENTS SEPARATED BY THE BINARY OPERATIONS
;*	**,^,/,*,+,-,$,.,(SPACE), AND !, AND BUILDS A TEXT TREE WITH THE
;*	LOWEST PRECEDENCE OPERATOR AT THE TOP. **,^,(SPACE), AND ! ARE
;*	CONSIDERED RIGHT-ASSOCIATIVE, AND THE REST LEFT-ASSOCIATIVE
;*
;PR.X	ROPER	= 42
L10269:
	MOVE	^D1,K10420
	MOVEM	1,V10103
;	RGL	=
	MOVEI	14,Q10129
	MOVEM	14,S$$FLP##
	SETZM	V10101
Q10129:
;PR.X0	PR.X	= BON(ROPER + LSHIFT(RGL,6),PR.X,PR.U()) :F(FRETURN)
L10421:
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	^D1,V10103
	PUSH	17,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LSH##
	JUMP	0,V10101
	JUMP	0,K10367
	ADD	16,S$$STB##
	MOVE	1,0
	POP	17,0
	ADD	^D1,0
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	MOVE	1,@N10269
	PUSH	16,1
	FCALV$	^D0,F10270
	FCALV$	^D3,F10422
	MOVEM	1,@N10269
;	C	LEN(*P)  SPAN(BLNCHR)  @RGL	:F(PR.X9)
	MOVEI	14,L10423
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@BLNCHR
	JSP	11,S$$MBT##
	EXP	.
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	^D1,P
	JUMPL	1,S$$MIE##
	JSP	11,S$$LEN##
	MOVE	1,^D1(15)
	JSP	11,S$$SPN##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,V10101
	JSP	11,S$$MTS##
;	C	LEN(*RGL)  (ANY('^*/+-.$!') ! '**') . STR1  SPAN(BLNCHR)
;.  @P	:F(PR.X8)
	MOVEI	14,L10426
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@BLNCHR
	JSP	11,S$$MBT##
	EXP	.
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	^D1,V10101
	JUMPL	1,S$$MIE##
	JSP	11,S$$LEN##
	JSP	11,S$$VAS##
	JSP	11,S$$APS##
	XWD	.-.,Q10131
	MOVEI	1,B10424
	JSP	11,S$$ANY##
	JRST	Q10130
Q10131:
	JSP	11,S$$APF##
	MOVE	1,S10425
	JSP	11,S$$MST##
Q10130:
	MOVE	1,N10267
	JSP	11,S$$CVA##
	MOVE	1,^D1(15)
	JSP	11,S$$SPN##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	JSP	11,S$$MTS##
;	ROPER	= BOPRTB[STR1]
	MOVEI	14,Q10132
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	AREFV$	^D1,BOPRTB
	DASGN$	2,V10103
Q10132:
;PR.X1	I	= RSHIFT(ROPER,1)
L10427:
	MOVEI	14,Q10133
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$RSH##
	JUMP	0,V10103
	JUMP	0,K10347
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,V10096
Q10133:
;PR.X2	RGL	= OPTY(PR.X)
L10428:
	MOVEI	14,Q10134
	MOVEM	14,S$$FLP##
	MOVE	1,@N10269
	FCALV$	^D1,F10384
	DASGN$	2,V10101
Q10134:
;	LOPER	= AND(RGL,63)
	MOVEI	14,Q10135
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$AND##
	JUMP	0,V10101
	JUMP	0,K10429
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,V10102
Q10135:
;	J	= RSHIFT(LOPER,1)
	MOVEI	14,Q10136
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$RSH##
	JUMP	0,V10102
	JUMP	0,K10347
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,V10097
Q10136:
;	?IGE(I,J)	:F(PR.X0)
	MOVEI	14,L10421
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$GEP##
	JUMP	0,V10096
	JUMP	0,V10097
	ADD	16,S$$STB##
	SETZ	1,
;	?IEQ(I,J)	:F(PR.X3)
	MOVEI	14,L10430
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10096
	JUMP	0,V10097
	ADD	16,S$$STB##
	SETZ	1,
;	(?INE(I,15) ?INE(I,19) ?INE(I,20))	:F(PR.X0)
	MOVEI	14,L10421
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10096
	JUMP	0,K10431
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10096
	JUMP	0,K10432
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10096
	JUMP	0,K10433
	ADD	16,S$$STB##
	SETZ	1,
;	PR.X	= ?IEQ(I,21) RGTS(PR.X)	:S(RETURN)
	MOVEI	14,Q10137
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10096
	JUMP	0,K10434
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10269
	FCALV$	^D1,F10435
	MOVEM	1,@N10269
	JRST	S$$SRT##
Q10137:
;PR.X3	STR1	= LFTS(PR.X)
L10430:
	MOVEI	14,Q10138
	MOVEM	14,S$$FLP##
	MOVE	1,@N10269
	FCALV$	^D1,F10436
	MOVEM	1,@N10267
Q10138:
;	LFTS(PR.X)	= RGTS(STR1)
	MOVEI	14,Q10139
	MOVEM	14,S$$FLP##
	MOVE	1,@N10269
	FCALN$	^D1,F10436
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D1,F10435
	JSP	11,S$$ASG##
Q10139:
;	RGTS(STR1)	= PR.X
	MOVEI	14,Q10140
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALN$	^D1,F10435
	PUSH	16,1
	MOVE	1,@N10269
	JSP	11,S$$ASG##
Q10140:
;	J	= ITEM(BOPRAR<J>,GTOPTY(OPTY(LFTS(PR.X))),GTOPTY(OPTY(
;.RGTS(PR.X))))
	MOVEI	14,Q10141
	MOVEM	14,S$$FLP##
	MOVE	^D1,V10097
	TLO	1,1B18
	TLZ	1,1B19
	AREFV$	^D1,BOPRAR
	PUSH	16,1
	MOVE	1,@N10269
	FCALV$	^D1,F10436
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	PUSH	16,1
	MOVE	1,@N10269
	FCALV$	^D1,F10435
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	FCALV$	^D3,F10043
	DASGN$	2,V10097
Q10141:
;	P	= ?IEQ(J,7) RSHIFT(RGL,6)	:F(PR.X5)
	MOVEI	14,L10437
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10097
	JUMP	0,K10389
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$RSH##
	JUMP	0,V10101
	JUMP	0,K10367
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,P
;PR.X4	ERRMSG('IMPROPER TYPE FOR OPERATOR')	:(FRETURN)
L10438:
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,S10439
	FCALV$	^D1,ERRMSG
	JRST	S$$FRT##
;PR.X5	J	= ?IEQ(J,6) TYPE	:F(PR.X7)
L10437:
	MOVEI	14,L10440
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10097
	JUMP	0,K10367
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,V10105
	MOVEM	1,V10097
;	J	= ?IEQ(OPER,11) GTOPTY(OPTY(LFTS(PR.X))) :S(PR.X6)
	MOVEI	14,Q10142
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10441
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10269
	FCALV$	^D1,F10436
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	DASGN$	2,V10097
	JRST	L10442
Q10142:
;	J	= ?GTOPTY(OPTY(LFTS(PR.X))) ?INE(OPER,11) 4 :S(PR.X7)
	MOVEI	14,Q10143
	MOVEM	14,S$$FLP##
	MOVE	1,@N10269
	FCALV$	^D1,F10436
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10104
	JUMP	0,K10441
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,K10351
	MOVEM	1,V10097
	JRST	L10440
Q10143:
;PR.X6	J	= ?ILE(J,1) J + 2
L10442:
	MOVEI	14,Q10144
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10097
	JUMP	0,K10347
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,V10097
	ADD	^D1,K10348
	MOVEM	1,V10097
Q10144:
;PR.X7	OPTY(PR.X)	= LSHIFT(LOPER,3) + J
L10440:
	MOVEI	14,Q10145
	MOVEM	14,S$$FLP##
	MOVE	1,@N10269
	FCALN$	^D1,F10384
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LSH##
	JUMP	0,V10102
	JUMP	0,K10357
	ADD	16,S$$STB##
	MOVE	1,0
	ADD	^D1,V10097
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
Q10145:
;	PR.X	= STR1	:(PR.X2)
	MOVEI	14,L10428
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	MOVEM	1,@N10269
	JRST	L10428
;PR.X8	C	LEN(*RGL)  NOTANY(':=_)>],')	:F(PR.X9)
L10426:
	MOVEI	14,L10423
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D-1,0
	BYTE	(2)2(16)1(18).+1
	MOVE	^D1,V10101
	JUMPL	1,S$$MIE##
	JSP	11,S$$LEN##
	MOVEI	1,B10443
	JSP	11,S$$NTA##
	JSP	11,S$$MTS##
;	ROPER	= 38
	MOVE	^D1,K10444
	MOVEM	1,V10103
;	P	= RGL	:(PR.X1)
	MOVE	^D1,V10101
	MOVEM	1,P
	JRST	L10427
;PR.X9	ROPER	= 42	:(PR.X1)
L10423:
	MOVE	^D1,K10420
	MOVEM	1,V10103
	JRST	L10427
;*	*	*	*	*	*	*	*	*
;*		PR.U()TP,ROPER PARSE ELEMENT
;*	PARSES A SINGLE ELEMENT AND RETURNS THE ELN DATATYPE FOR IT
;*
;PR.U	TP	= P
L10270:
	MOVE	^D1,P
	MOVEM	1,V10115
;* CONVERT FIRST CHAR INTO CHARACTERS A-G REPRESENTING: A-UNRECOGNIZA-
;* BLE, B-KEYWORD, C-UNARY OPERATOR, D-STRING LITERAL, E-NUMERIC, F-OPEN
;* PARENTHESIS, G-ALPHABETIC
;	STR1	= SUBSTR(C,1,P)	:S($REPLACE(STR1,&ALPHABET,ELTCHR))
	MOVEI	14,Q10146
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,I10347
	PUSH	16,1
	MOVE	^D1,P
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D3,F10081
	MOVEM	1,@N10267
	MOVEI 14,S$$BGT##
	MOVEM 14,S$$FLP##
	MOVE	1,@N10267
	PUSH	16,1
	MOVE	1,S$$KWD##+^D7
	PUSH	16,1
	MOVE	1,@ELTCHR
	FCALV$	^D3,F10083
	JSP 14,S$$ILB##
Q10146:
;* UNRECOGNIZABLE ELEMENT
;A	ERRMSG('UNRECOGNIZABLE ELEMENT')	:(FRETURN)
L10301:
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,S10445
	FCALV$	^D1,ERRMSG
	JRST	S$$FRT##
;* KEYWORD
;B	P	= P + 1
L10302:
	MOVE	^D1,P
	ADD	^D1,K10347
	MOVEM	1,P
;	C	IDENMT	:F(PR.U2)
	MOVEI	14,L10446
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@IDENMT
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	JSP	11,S$$MTS##
;	PR.U	= KEYWTB[ITNAM]
	MOVEI	14,Q10147
	MOVEM	14,S$$FLP##
	MOVE	1,@ITNAM
	AREFV$	^D1,KEYWTB
	MOVEM	1,@N10270
Q10147:
;	I	= ?DIFFER(PR.U) 0	:F(PR.U2)
	MOVEI	14,L10446
	MOVEM	14,S$$FLP##
	MOVE	1,@N10270
	FCALV$	^D1,F10071
	SETZ	1,
	MOVE	^D1,K10341
	MOVEM	1,V10096
;	I	= ?IEQ(PR.U / 2,3) 4
	MOVEI	14,Q10148
	MOVEM	14,S$$FLP##
	DICNV$	@N10270
	IDIV	^D1,K10348
	MOVEM	1,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,Q10001+^D0
	JUMP	0,K10357
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,K10351
	MOVEM	1,V10096
Q10148:
;	DMPFLG	= ?IEQ(PR.U,18) 1
	MOVEI	14,Q10149
	MOVEM	14,S$$FLP##
	MOVE	1,@N10270
	DASGN$	2,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,Q10001+^D0
	JUMP	0,K10447
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,K10347
	MOVEM	1,DMPFLG
Q10149:
;	I	= I + 8
	MOVE	^D1,V10096
	ADD	^D1,K10399
	MOVEM	1,V10096
;PR.U1	PR.U	= ELN(I,PR.U,TP)	:(RETURN)
L10448:
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	^D1,V10096
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	MOVE	1,@N10270
	PUSH	16,1
	MOVE	^D1,V10115
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D3,F10449
	MOVEM	1,@N10270
	JRST	S$$SRT##
;PR.U2	P	= ?ERRMSG('UNRECOGNIZABLE KEYWORD') TP + 1 :(FRETURN)
L10446:
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,S10450
	FCALV$	^D1,ERRMSG
	SETZ	1,
	MOVE	^D1,V10115
	ADD	^D1,K10347
	MOVEM	1,P
	JRST	S$$FRT##
;* UNARY OPERATOR
;C	ROPER	= UOPRTB[STR1]
L10151:
	MOVEI	14,Q10150
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	AREFV$	^D1,UOPRTB
	DASGN$	2,V10103
Q10150:
;	P	= P + 1
	MOVE	^D1,P
	ADD	^D1,K10347
	MOVEM	1,P
;	PR.U	= PR.U()	:F(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	FCALV$	^D0,F10270
	MOVEM	1,@N10270
;	I	= ITEM(UOPRAR<ROPER>,GTOPTY(OPTY(PR.U)))
	MOVEI	14,Q10151
	MOVEM	14,S$$FLP##
	MOVE	^D1,V10103
	TLO	1,1B18
	TLZ	1,1B19
	AREFV$	^D1,UOPRAR
	PUSH	16,1
	MOVE	1,@N10270
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	FCALV$	^D2,F10043
	DASGN$	2,V10096
Q10151:
;	P	= ?IEQ(I,7) TP	:S(PR.X4)
	MOVEI	14,Q10152
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10096
	JUMP	0,K10389
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,V10115
	MOVEM	1,P
	JRST	L10438
Q10152:
;	I	= LSHIFT(ROPER,3) + I	:(PR.U1)
	MOVEI	14,L10448
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LSH##
	JUMP	0,V10103
	JUMP	0,K10357
	ADD	16,S$$STB##
	MOVE	1,0
	ADD	^D1,V10096
	MOVEM	1,V10096
	JRST	L10448
;* STRING LITERAL
;D	P	= P + 1
L10303:
	MOVE	^D1,P
	ADD	^D1,K10347
	MOVEM	1,P
;	ITPAT	= ?IDENT(STR1,SQCHR) SQLTPT	:S(PR.U3)
	MOVEI	14,Q10153
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	PUSH	16,1
	MOVE	1,@SQCHR
	FCALV$	^D2,F10072
	SETZ	1,
	MOVE	1,@SQLTPT
	MOVEM	1,@N10451
	JRST	L10452
Q10153:
;	ITPAT	= DQLTPT
	MOVEI	14,Q10154
	MOVEM	14,S$$FLP##
	MOVE	1,@DQLTPT
	MOVEM	1,@N10451
Q10154:
;PR.U3	ITNAM	= PARLIT(STR1,ITPAT)	:F(A)
L10452:
	MOVEI	14,L10301
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	PUSH	16,1
	MOVE	1,@N10451
	FCALV$	^D2,PARLIT
	MOVEM	1,@ITNAM
;	P	= P + 1
	MOVE	^D1,P
	ADD	^D1,K10347
	MOVEM	1,P
;	PR.U	= ?DIFFER(ITNAM) DEFSTR()
	MOVEI	14,Q10155
	MOVEM	14,S$$FLP##
	MOVE	1,@ITNAM
	FCALV$	^D1,F10071
	SETZ	1,
	FCALV$	^D0,F10273
	MOVEM	1,@N10270
Q10155:
;	I	= 36	:(PR.U1)
	MOVE	^D1,K10453
	MOVEM	1,V10096
	JRST	L10448
;* NUMERIC
;E	C	LEN(*P)  INTGPT  NSPAN('.') $ STR1  @P	:F(A)
L10304:
	MOVEI	14,L10301
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@INTGPT
	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##
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	JSP	11,S$$VAS##
	MOVEI	1,B10454
	JSP	11,S$$NSP##
	MOVE	1,N10267
	JSP	11,S$$IVA##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	JSP	11,S$$MTS##
;	ITATR	=
	MOVEI	14,Q10156
	MOVEM	14,S$$FLP##
	SETZM	ITATR
Q10156:
;	ITNAM	= ?IDENT(STR1) INTGER	:F(PR.U5)
	MOVEI	14,L10455
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10072
	SETZ	1,
	MOVE	^D1,INTGER
	TLO	1,1B18
	TLZ	1,1B19
	MOVEM	1,@ITNAM
;	I	= 16
	MOVE	^D1,K10456
	MOVEM	1,V10096
;PR.U4	ITPTR	= .CONSTB[ITNAM]
L10457:
	MOVEI	14,Q10157
	MOVEM	14,S$$FLP##
	MOVE	1,@ITNAM
	AREFN$	^D1,CONSTB
	MOVEM	1,@N10458
Q10157:
;	PR.U	= ?DIFFER($ITPTR) $ITPTR	:S(PR.U1)
	MOVEI	14,Q10158
	MOVEM	14,S$$FLP##
	MOVE	1,@N10458
	JSP	14,S$$IVV##
	FCALV$	^D1,F10071
	SETZ	1,
	MOVE	1,@N10458
	JSP	14,S$$IVV##
	MOVEM	1,@N10270
	JRST	L10448
Q10158:
;	ITATR	= ?IEQ(I,16) ?ILE(INTGER,262143) 262144 + INTGER
	MOVEI	14,Q10159
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10096
	JUMP	0,K10456
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,INTGER
	JUMP	0,K10459
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,K10460
	ADD	^D1,INTGER
	MOVEM	1,ITATR
Q10159:
;	$ITPTR	= SYM(NEWNAM(),ITATR)
	MOVEI	14,Q10160
	MOVEM	14,S$$FLP##
	MOVE	1,@N10458
	JSP	14,S$$IVN##
	PUSH	16,1
	FCALV$	^D0,NEWNAM
	PUSH	16,1
	MOVE	^D1,ITATR
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,F10461
	JSP	11,S$$ASG##
Q10160:
;	PR.U	= $ITPTR	:(PR.U1)
	MOVEI	14,L10448
	MOVEM	14,S$$FLP##
	MOVE	1,@N10458
	JSP	14,S$$IVV##
	MOVEM	1,@N10270
	JRST	L10448
;PR.U5	P	= ?DIFFER(STR1,'.') P - 1	:S(A)
L10455:
	MOVEI	14,Q10161
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	PUSH	16,1
	MOVE	1,S10454
	FCALV$	^D2,F10071
	SETZ	1,
	MOVE	^D1,P
	SUB	^D1,K10347
	MOVEM	1,P
	JRST	L10301
Q10161:
;	ITNAM	= INTGER
	MOVEI	14,Q10162
	MOVEM	14,S$$FLP##
	MOVE	^D1,INTGER
	TLO	1,1B18
	TLZ	1,1B19
	MOVEM	1,@ITNAM
Q10162:
;	INTGER	=
	MOVEI	14,Q10163
	MOVEM	14,S$$FLP##
	SETZM	INTGER
Q10163:
;	C	LEN(*P)  NSPAN('0123456789') $ STR1  @P
	MOVEI	14,Q10164
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D-1,0
	BYTE	(2)2(16)1(18).+1
	MOVE	^D1,P
	JUMPL	1,S$$MIE##
	JSP	11,S$$LEN##
	JSP	11,S$$VAS##
	MOVEI	1,B10462
	JSP	11,S$$NSP##
	MOVE	1,N10267
	JSP	11,S$$IVA##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	JSP	11,S$$MTS##
Q10164:
;	P	= ?IGE(SIZE(STR1),10) P - SIZE(STR1)	:S(A)
	MOVEI	14,Q10165
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10050
	DASGN$	2,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$GEP##
	JUMP	0,Q10001+^D0
	JUMP	0,K10400
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,P
	PUSH	17,1
	MOVE	1,@N10267
	FCALV$	^D1,F10050
	DICNV$	0
	POP	17,0
	SUB	^D0,1
	MOVE	1,0
	MOVEM	1,P
	JRST	L10301
Q10165:
;	ITNAM	= ITNAM + ('0.' STR1)
	MOVEI	14,Q10166
	MOVEM	14,S$$FLP##
	MOVE	1,@ITNAM
	PUSH	16,1
	MOVE	1,S10463
	PUSH	16,1
	MOVE	1,@N10267
	JSP	14,S$$CNC##
	EXP	^D2
	JSP	14,S$$ADD##
	MOVEM	1,@ITNAM
Q10166:
;	I	= 25	:(PR.U4)
	MOVE	^D1,K10464
	MOVEM	1,V10096
	JRST	L10457
;* OPEN PARENTHESIS
;F	C	POPRMT	:F(A)
L10305:
	MOVEI	14,L10301
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@POPRMT
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	JSP	11,S$$MTS##
;	PR.U	= PR.X()	:F(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	FCALV$	^D0,F10269
	MOVEM	1,@N10270
;	C	PCPRMT	:F(PR.U9)
	MOVEI	14,L10465
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@PCPRMT
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	JSP	11,S$$MTS##
;	I	= 56 + GTOPTY(OPTY(PR.U))	:(PR.U1)
	MOVEI	14,L10448
	MOVEM	14,S$$FLP##
	MOVE	^D1,K10466
	PUSH	17,1
	MOVE	1,@N10270
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	DICNV$	0
	POP	17,0
	ADD	^D1,0
	MOVEM	1,V10096
	JRST	L10448
;* ALPHABETIC
;G	C	IDENMT  (ANY('(<[') ! '') $ STR1	:F(A)
L10306:
	MOVEI	14,L10301
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@IDENMT
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	JSP	11,S$$VAS##
	JSP	11,S$$APS##
	XWD	.-.,Q10168
	MOVEI	1,B10467
	JSP	11,S$$ANY##
	JRST	Q10167
Q10168:
	JSP	11,S$$APF##

Q10167:
	MOVE	1,N10267
	JSP	11,S$$IVA##
	JSP	11,S$$MTS##
;	PR.U	= ?IDENT(STR1) DEFVAR()	:F(PR.U6)
	MOVEI	14,L10468
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10072
	SETZ	1,
	FCALV$	^D0,F10279
	MOVEM	1,@N10270
;	I	= ?ILE(VDATRB,VDDATR) 4	:S(PR.U1)
	MOVEI	14,Q10169
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,VDATRB
	JUMP	0,VDDATR
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,K10351
	MOVEM	1,V10096
	JRST	L10448
Q10169:
;	I	= ?ILT(VDATRB,VDPATR) VDATRB / VDDATR - 2 :S(PR.U1)
	MOVEI	14,Q10170
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LTP##
	JUMP	0,VDATRB
	JUMP	0,VDPATR
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,VDATRB
	IDIV	^D1,VDDATR
	SUB	^D1,K10348
	MOVEM	1,V10096
	JRST	L10448
Q10170:
;	I	= 5	:(PR.U1)
	MOVE	^D1,K10372
	MOVEM	1,V10096
	JRST	L10448
;PR.U6	ITATR	= ?IDENT(STR1,'(') FTFATR + PRGALF	:F(PR.U7)
L10468:
	MOVEI	14,L10470
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	PUSH	16,1
	MOVE	1,S10469
	FCALV$	^D2,F10072
	SETZ	1,
	MOVE	^D1,FTFATR
	ADD	^D1,PRGALF
	MOVEM	1,ITATR
;	ITTYP	= 2
	MOVE	^D1,K10348
	MOVEM	1,ITTYP
;	GETITM()
	MOVEI	14,Q10171
	MOVEM	14,S$$FLP##
	FCALV$	^D0,GETITM
Q10171:
;	ATRB(ITENT)	= ?IEQ(FTATRB,0) OR(ITATR,FTFATR)
	MOVEI	14,Q10172
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10395
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,FTATRB
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,FTFATR
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
Q10172:
;	I	= FDATRB / FDPATR
	MOVE	^D1,FDATRB
	IDIV	^D1,FDPATR
	MOVEM	1,V10096
;	I	= ?ILE(I,1) I + 4
	MOVEI	14,Q10173
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10096
	JUMP	0,K10347
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,V10096
	ADD	^D1,K10351
	MOVEM	1,V10096
Q10173:
;	C	POPRMT	:F(A)
	MOVEI	14,L10301
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@POPRMT
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	JSP	11,S$$MTS##
;	PR.U	= ELN(48 + I,PR.L(),TP)	:F(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	^D1,K10471
	ADD	^D1,V10096
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	FCALV$	^D0,F10271
	PUSH	16,1
	MOVE	^D1,V10115
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D3,F10449
	MOVEM	1,@N10270
;	C	PCPRMT	:F(PR.U9)S(RETURN)
	MOVEI	14,L10465
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@PCPRMT
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	JSP	11,S$$MTS##
	JRST	S$$SRT##
;PR.U7	PR.U	= ?DEFVAR() ?IEQ(VDATRB,0) ELN(44,'',STR1) :F(PR.U10)
L10470:
	MOVEI	14,L10473
	MOVEM	14,S$$FLP##
	FCALV$	^D0,F10279
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,VDATRB
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,I10472
	PUSH	16,1
	SETZ	1,
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D3,F10449
	MOVEM	1,@N10270
;	C	LEN(*P)  STR1  NSPAN(BLNCHR)  @P	:F(A)
	MOVEI	14,L10301
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@N10267
	JSP	11,S$$MKP##
	PUSH	16,1
	MOVE	1,@BLNCHR
	JSP	11,S$$MBT##
	EXP	.
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D3,0
	MOVE	^D1,P
	JUMPL	1,S$$MIE##
	JSP	11,S$$LEN##
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	MOVE	1,^D2(15)
	JSP	11,S$$NSP##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	JSP	11,S$$MTS##
;	SBJT(PR.U)	= PR.L()	:F(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10270
	FCALN$	^D1,F10387
	PUSH	16,1
	FCALV$	^D0,F10271
	JSP	11,S$$ASG##
;	STR1	= PVAL(PR.U)
	MOVEI	14,Q10174
	MOVEM	14,S$$FLP##
	MOVE	1,@N10270
	FCALV$	^D1,F10391
	MOVEM	1,@N10267
Q10174:
;	STR1	= ?IDENT(STR1,'<') '>'	:S(PR.U8)
	MOVEI	14,Q10175
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	PUSH	16,1
	MOVE	1,S10474
	FCALV$	^D2,F10072
	SETZ	1,
	MOVE	1,S10475
	MOVEM	1,@N10267
	JRST	L10476
Q10175:
;	STR1	= ']'
	MOVEI	14,Q10176
	MOVEM	14,S$$FLP##
	MOVE	1,S10477
	MOVEM	1,@N10267
Q10176:
;PR.U8	C	LEN(*P)  NSPAN(BLNCHR)  @P  STR1  @P	:F(PR.U9)
L10476:
	MOVEI	14,L10465
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@BLNCHR
	JSP	11,S$$MBT##
	EXP	.
	PUSH	16,1
	MOVE	1,@N10267
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D3,0
	MOVE	^D1,P
	JUMPL	1,S$$MIE##
	JSP	11,S$$LEN##
	MOVE	1,^D1(15)
	JSP	11,S$$NSP##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	MOVE	1,^D2(15)
	JSP	11,S$$PTX##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	JSP	11,S$$MTS##
;	PVAL(PR.U)	= TP	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10270
	FCALN$	^D1,F10391
	PUSH	16,1
	MOVE	^D1,V10115
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
	JRST	S$$SRT##
;PR.U9	P	= ?STXERR('UNBALANCED EXPRESSION OR PARM LIST') TP
;.	:(FRETURN)
L10465:
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,S10478
	FCALV$	^D1,STXERR
	SETZ	1,
	MOVE	^D1,V10115
	MOVEM	1,P
	JRST	S$$FRT##
;PR.U10	P	= ?ERRMSG('ILLEGAL ARRAY REF, DEDICATED VAR') TP
;.	:(FRETURN)
L10473:
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,S10479
	FCALV$	^D1,ERRMSG
	SETZ	1,
	MOVE	^D1,V10115
	MOVEM	1,P
	JRST	S$$FRT##
;*	*	*	*	*	*	*	*	*
;*		PR.L()NOD,NPAR,TP,ROPER PARSE PARAMETER LIST
;*	PARSES 0 OR MORE EXPRESSIONS SEPARATED BY COMMAS, AND RETURNS
;*	A PLN DATATYPE FOR THE LIST. EXPECTS ITENT SET TO THE VARIABLE
;*	OR FUNCTION ENTRY, AND SETS PVAL OF THE FIRST PLN TO THE # OF
;*	PARMS * 8 + THE MAX OF THE TYPES OF ALL PARMS
;*
;PR.L	PR.L	= PLN('',ITENT,0)
L10271:
	MOVEI	14,Q10177
	MOVEM	14,S$$FLP##
	SETZ	1,
	PUSH	16,1
	MOVE	1,@ITENT
	PUSH	16,1
	MOVE	1,I10341
	FCALV$	^D3,F10480
	MOVEM	1,@N10271
Q10177:
;	C	LEN(*P)  ANY(')>]')	:S(RETURN)
	MOVEI	14,Q10178
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D-1,0
	BYTE	(2)2(16)1(18).+1
	MOVE	^D1,P
	JUMPL	1,S$$MIE##
	JSP	11,S$$LEN##
	MOVEI	1,B10481
	JSP	11,S$$ANY##
	JSP	11,S$$MTS##
	JRST	S$$SRT##
Q10178:
;	NOD	= .NXTL(PR.L)
	MOVEI	14,Q10179
	MOVEM	14,S$$FLP##
	MOVE	1,@N10271
	FCALN$	^D1,F10482
	MOVEM	1,@N10272
Q10179:
;PR.L1	TP	= P
L10483:
	MOVE	^D1,P
	MOVEM	1,V10115
;	STR1	= PR.X()	:F(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	FCALV$	^D0,F10269
	MOVEM	1,@N10267
;	NPAR	= NPAR + 1
	MOVE	^D1,V10098
	ADD	^D1,K10347
	MOVEM	1,V10098
;	ROPER	= ?IGT(GTOPTY(OPTY(STR1)),ROPER) TYPE
	MOVEI	14,Q10180
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	DASGN$	2,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$GTP##
	JUMP	0,Q10001+^D0
	JUMP	0,V10103
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,V10105
	MOVEM	1,V10103
Q10180:
;	$NOD	= PLN('',STR1,TP)
	MOVEI	14,Q10181
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	JSP	14,S$$IVN##
	PUSH	16,1
	SETZ	1,
	PUSH	16,1
	MOVE	1,@N10267
	PUSH	16,1
	MOVE	^D1,V10115
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D3,F10480
	JSP	11,S$$ASG##
Q10181:
;	C	LEN(*P)  PCOMPT  @P	:F(PR.L2)
	MOVEI	14,L10484
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@PCOMPT
	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##
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	JSP	11,S$$MTS##
;	NOD	= .NXTL($NOD)	:(PR.L1)
	MOVEI	14,L10483
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	JSP	14,S$$IVV##
	FCALN$	^D1,F10482
	MOVEM	1,@N10272
	JRST	L10483
;PR.L2	PVAL(PR.L)	= ?ILE(NPAR,15) LSHIFT(NPAR,3) + ROPER
;.	:S(RETURN)
L10484:
	MOVEI	14,Q10182
	MOVEM	14,S$$FLP##
	MOVE	1,@N10271
	FCALN$	^D1,F10391
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10098
	JUMP	0,K10431
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LSH##
	JUMP	0,V10098
	JUMP	0,K10357
	ADD	16,S$$STB##
	MOVE	1,0
	ADD	^D1,V10103
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
	JRST	S$$SRT##
Q10182:
;	ERRMSG('TOO MANY (>15) PARAMETERS IN LIST')	:(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,S10485
	FCALV$	^D1,ERRMSG
	JRST	S$$FRT##
;*	*	*	*	*	*	*	*	*
;*		DEFSTR(STR1) DEFINE STRING
;*	SETS STRING BLOCK ATTRIBUTE AND RETURNS ITENT
;*
;DEFSTR	ITNAM	= ?DIFFER(STR1) STR1
L10273:
	MOVEI	14,Q10183
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10071
	SETZ	1,
	MOVE	1,@N10267
	MOVEM	1,@ITNAM
Q10183:
;	ITTYP	= 3
	MOVE	^D1,K10357
	MOVEM	1,ITTYP
;	ITATR	= SKRATR
	MOVE	^D1,SKRATR
	MOVEM	1,ITATR
;	DEFSTR	= ?GETITM() ITENT
	MOVEI	14,Q10184
	MOVEM	14,S$$FLP##
	FCALV$	^D0,GETITM
	SETZ	1,
	MOVE	1,@ITENT
	MOVEM	1,@N10273
Q10184:
;	ATRB(ITENT)	= ?IEQ(SKATRB,0) OR(ITATR,SKRATR) :(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10395
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,SKATRB
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,SKRATR
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;*		GETLIT(STR1) GET STRING DESCRIPTOR NAME
;*	SETS DESCRIPTOR ATTRIBUTE, RETURNS DESCRIPTOR LOC
;*
;GETLIT	ATRB(STR1)	= OR(ATRB(STR1),SDRATR)
L10274:
	MOVEI	14,Q10185
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALN$	^D1,F10395
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D1,F10395
	DASGN$	2,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,Q10001+^D0
	JUMP	0,SDRATR
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
Q10185:
;	GETLIT	= 'S' INAM(STR1)	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,S10413
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D1,F10360
	JSP	14,S$$CNC##
	EXP	^D2
	MOVEM	1,@N10274
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;*		GETINT(STR1,MODFLG) GET INTEGER
;*	IF MODFLG IS 0, GETS LOC OF CONST OR IMMED VAL. IF MODFLG IS
;*	1, GETS LOC OF DESCRIPTOR. IF MODFLG IS -1, GETS LOC OF CONST,
;*	EVEN IF VALUE CAN BE IMMEDIATE
;*
;GETINT	ITATR	= ATRB(STR1)
L10275:
	MOVEI	14,Q10186
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10395
	DASGN$	2,ITATR
Q10186:
;	?ILE(MODFLG,0)	:F(GETIN1)
	MOVEI	14,L10486
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10108
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
;	GETINT	= ?IEQ(MODFLG,0) ?INE(AND(ITATR,262144),0) SUBS(ARITAR<
;.29>,AND(ITATR,262143))	:S(RETURN)
	MOVEI	14,Q10187
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10108
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$AND##
	JUMP	0,ITATR
	JUMP	0,K10460
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,Q10001+^D0
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,I10487
	AREFV$	^D1,ARITAR
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$AND##
	JUMP	0,ITATR
	JUMP	0,K10459
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,SUBS
	MOVEM	1,@N10275
	JRST	S$$SRT##
Q10187:
;	ATRB(STR1)	= OR(ITATR,1048576)
	MOVEI	14,Q10188
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALN$	^D1,F10395
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,K10488
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
Q10188:
;	GETINT	= 'K' INAM(STR1)	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,S10489
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D1,F10360
	JSP	14,S$$CNC##
	EXP	^D2
	MOVEM	1,@N10275
	JRST	S$$SRT##
;GETIN1	ATRB(STR1)	= OR(ITATR,524288)
L10486:
	MOVEI	14,Q10189
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALN$	^D1,F10395
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,K10490
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
Q10189:
;	GETINT	= 'I' INAM(STR1)	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,S10096
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D1,F10360
	JSP	14,S$$CNC##
	EXP	^D2
	MOVEM	1,@N10275
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;*		GETREL(STR1,MODFLG) GET REAL
;*	IF MODFLG IS 0 OR -1, GETS LOC OF CONST. IF MODFLG IS 1, GETS
;*	LOC OF DESCRIPTOR
;*
;GETREL	ITATR	= ATRB(STR1)
L10276:
	MOVEI	14,Q10190
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10395
	DASGN$	2,ITATR
Q10190:
;	ATRB(STR1)	= ?ILE(MODFLG,0) OR(ITATR,1048576) :F(GETRE1)
	MOVEI	14,L10491
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALN$	^D1,F10395
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10108
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,K10488
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
;	GETREL	= 'C' INAM(STR1)	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,S10151
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D1,F10360
	JSP	14,S$$CNC##
	EXP	^D2
	MOVEM	1,@N10276
	JRST	S$$SRT##
;GETRE1	ATRB(STR1)	= OR(ITATR,524288)
L10491:
	MOVEI	14,Q10191
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALN$	^D1,F10395
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,K10490
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
Q10191:
;	GETREL	= 'R' INAM(STR1)	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,S10492
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D1,F10360
	JSP	14,S$$CNC##
	EXP	^D2
	MOVEM	1,@N10276
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;*		DEFLAB() DEFINE LABEL
;*	EXPECTS LABEL IN ITNAM, RETURNS INTERNAL SYMBOL OR FAILS IF AL-
;*	READY DEFINED
;*
;DEFLAB	ITTYP	= 1
L10277:
	MOVE	^D1,K10347
	MOVEM	1,ITTYP
;	ITATR	= PRGALL
	MOVE	^D1,PRGALL
	MOVEM	1,ITATR
;	(?GETITM() ?INE(LTATRB,LTDATR))	:F(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	FCALV$	^D0,GETITM
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,LTATRB
	JUMP	0,LTDATR
	ADD	16,S$$STB##
	SETZ	1,
;	ATRB(ITENT)	= OR(ITATR - LTATRB,LTDATR)
	MOVEI	14,Q10192
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10395
	PUSH	16,1
	MOVE	^D1,ITATR
	SUB	^D1,LTATRB
	MOVEM	1,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,Q10001+^D0
	JUMP	0,LTDATR
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
Q10192:
;	DEFLAB	= ?INE(XNATRB,XNLATR) 'L' INAM(ITENT)	:S(RETURN)
	MOVEI	14,Q10193
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,XNATRB
	JUMP	0,XNLATR
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,S10493
	PUSH	16,1
	MOVE	1,@ITENT
	FCALV$	^D1,F10360
	JSP	14,S$$CNC##
	EXP	^D2
	MOVEM	1,@N10277
	JRST	S$$SRT##
Q10193:
;	DEFLAB	= XNAMTB[INAM(ITENT)]	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALV$	^D1,F10360
	AREFV$	^D1,XNAMTB
	MOVEM	1,@N10277
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;*		GETLAB() GET LABEL NAME
;*	EXPECTS LABEL IN ITNAM, RETURNS INTERNAL SYMBOL
;*
;GETLAB	ITTYP	= 1
L10278:
	MOVE	^D1,K10347
	MOVEM	1,ITTYP
;	ITATR	= 2 * LTDATR + PRGALL
	MOVE	^D1,K10348
	IMUL	^D1,LTDATR
	ADD	^D1,PRGALL
	MOVEM	1,ITATR
;	GETITM()
	MOVEI	14,Q10194
	MOVEM	14,S$$FLP##
	FCALV$	^D0,GETITM
Q10194:
;	ATRB(ITENT)	= ?IEQ(LTATRB,0) OR(ITATR,2 * LTDATR + PRGALL)
	MOVEI	14,Q10195
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10395
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,LTATRB
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,K10348
	IMUL	^D1,LTDATR
	ADD	^D1,PRGALL
	MOVEM	1,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,Q10001+^D0
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
Q10195:
;	GETLAB	= ?INE(XNATRB,XNLATR) 'L' INAM(ITENT)	:S(RETURN)
	MOVEI	14,Q10196
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,XNATRB
	JUMP	0,XNLATR
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,S10493
	PUSH	16,1
	MOVE	1,@ITENT
	FCALV$	^D1,F10360
	JSP	14,S$$CNC##
	EXP	^D2
	MOVEM	1,@N10278
	JRST	S$$SRT##
Q10196:
;	GETLAB	= XNAMTB[INAM(ITENT)]	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALV$	^D1,F10360
	AREFV$	^D1,XNAMTB
	MOVEM	1,@N10278
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;*		DEFVAR() DEFINE VARIABLE
;*	EXPECTS ITNAM SET TO VARIABLE NAME, RETURNS ENTRY
;*
;DEFVAR	ITTYP	=
L10279:
	MOVEI	14,Q10197
	MOVEM	14,S$$FLP##
	SETZM	ITTYP
Q10197:
;	ITATR	= VTVATR + PRGALV
	MOVE	^D1,VTVATR
	ADD	^D1,PRGALV
	MOVEM	1,ITATR
;	DEFVAR	= ?GETITM() ITENT
	MOVEI	14,Q10198
	MOVEM	14,S$$FLP##
	FCALV$	^D0,GETITM
	SETZ	1,
	MOVE	1,@ITENT
	MOVEM	1,@N10279
Q10198:
;	ATRB(ITENT)	= ?IEQ(VTATRB,0) OR(ITATR,VTVATR + PRGALV)
;.	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10395
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,VTATRB
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,VTVATR
	ADD	^D1,PRGALV
	MOVEM	1,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,Q10001+^D0
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;*		GETDVR(STR1) GET DEDICATED VARIABLE LOC
;*
;GETDVR	ITTYP	=
L10280:
	MOVEI	14,Q10199
	MOVEM	14,S$$FLP##
	SETZM	ITTYP
Q10199:
;	ITATR	= ATRB(STR1)
	MOVEI	14,Q10200
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10395
	DASGN$	2,ITATR
Q10200:
;	GETDVR	= ?GETATR() ?INE(XNATRB,XNVATR) 'V' INAM(STR1)
;.	:S(RETURN)
	MOVEI	14,Q10201
	MOVEM	14,S$$FLP##
	FCALV$	^D0,GETATR
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,XNATRB
	JUMP	0,XNVATR
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,S10494
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D1,F10360
	JSP	14,S$$CNC##
	EXP	^D2
	MOVEM	1,@N10280
	JRST	S$$SRT##
Q10201:
;	GETDVR	= XNAMTB[INAM(STR1)]	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10360
	AREFV$	^D1,XNAMTB
	MOVEM	1,@N10280
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;*		GETVAR(STR1) GET VARIABLE NAMETYPE LOC
;*
;GETVAR	ITTYP	=
L10281:
	MOVEI	14,Q10202
	MOVEM	14,S$$FLP##
	SETZM	ITTYP
Q10202:
;	ITATR	= ATRB(STR1)
	MOVEI	14,Q10203
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10395
	DASGN$	2,ITATR
Q10203:
;	ATRB(STR1)	= ?GETATR() ?INE(VDATRB,0) OR(ITATR,VNNATR)
;.	:F(GETVA1)
	MOVEI	14,L10495
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALN$	^D1,F10395
	PUSH	16,1
	FCALV$	^D0,GETATR
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,VDATRB
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,VNNATR
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
;	GETVAR	= 'N' INAM(STR1)	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,S10496
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D1,F10360
	JSP	14,S$$CNC##
	EXP	^D2
	MOVEM	1,@N10281
	JRST	S$$SRT##
;GETVA1	GETVAR	= ?INE(XNATRB,XNVATR) 'N' INAM(STR1)	:S(RETURN)
L10495:
	MOVEI	14,Q10204
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,XNATRB
	JUMP	0,XNVATR
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,S10496
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D1,F10360
	JSP	14,S$$CNC##
	EXP	^D2
	MOVEM	1,@N10281
	JRST	S$$SRT##
Q10204:
;	GETVAR	= XNAMTB[INAM(STR1)]	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10360
	AREFV$	^D1,XNAMTB
	MOVEM	1,@N10281
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;*		GTOPTY(I) GET OPER AND TYPE
;*	SETS OPER AND TYPE FROM I = OPER*8 + TYPE, RETURNS TYPE
;*
;GTOPTY	OPER	= RSHIFT(I,3)
L10282:
	MOVEI	14,Q10205
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$RSH##
	JUMP	0,V10096
	JUMP	0,K10357
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,V10104
Q10205:
;	TYPE	= AND(I,7)
	MOVEI	14,Q10206
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$AND##
	JUMP	0,V10096
	JUMP	0,K10389
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,V10105
Q10206:
;	GTOPTY	= TYPE	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	^D1,V10105
	TLO	1,1B18
	TLZ	1,1B19
	MOVEM	1,@N10282
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;*		GTPVAL(NOD) GETS LEFTMOST PVAL OF TEXT TREE
;*	RETURNS THE LEFTMOST POINTER IN A TREE OF BINARY OPERATIONS
;*
;GTPVAL	NOD	= ?GTOPTY(OPTY(NOD)) ?IGE(OPER,30) LFTS(NOD) :S(GTPVAL)
L10283:
	MOVEI	14,Q10207
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$GEP##
	JUMP	0,V10104
	JUMP	0,K10497
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10272
	FCALV$	^D1,F10436
	MOVEM	1,@N10272
	JRST	L10283
Q10207:
;	GTPVAL	= PVAL(NOD)	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10391
	MOVEM	1,@N10283
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;*		PUTTRE(NOD) OUTPUT OBJECT TREE
;*	OUTPUTS COMPONENTS OF TREE IN LEFT-TO-RIGHT,BOTTOM-TO-TOP SE-
;*	QUENCE
;*
;PUTTRE	(?IDENT(DATATYPE(NOD),'NOD') ?PUTTRE(FRNT(NOD)) ?PUTTRE(BACK(
;.NOD)))	:S(RETURN)
L10284:
	MOVEI	14,Q10208
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10052
	PUSH	16,1
	MOVE	1,S10272
	FCALV$	^D2,F10072
	SETZ	1,
	MOVE	1,@N10272
	FCALV$	^D1,F10498
	FCALV$	^D1,F10284
	SETZ	1,
	MOVE	1,@N10272
	FCALV$	^D1,F10499
	FCALV$	^D1,F10284
	SETZ	1,
	JRST	S$$SRT##
Q10208:
;	PUTOUT(NOD)	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,PUTOUT
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;*		G.EX() GOTO EXPRESSION PARSE AND CODE GENERATION
;*	RETURNS STRING (LABEL NAME) IF SIMPLE LABEL OR INDIRECT LITERAL,
;*	OR CODE NOD OTHERWISE
;*
;G.EX	C	POPRMT	:F(G.EX6)
L10285:
	MOVEI	14,L10500
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@POPRMT
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	JSP	11,S$$MTS##
;	C	IDENMT	:F(G.EX3)
	MOVEI	14,L10501
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@IDENMT
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	JSP	11,S$$MTS##
;G.EX1	G.EX	= GETLAB()
L10502:
	MOVEI	14,Q10209
	MOVEM	14,S$$FLP##
	FCALV$	^D0,F10278
	MOVEM	1,@N10285
Q10209:
;G.EX2	C	PCPRMT	:F(G.EX6)S(RETURN)
L10503:
	MOVEI	14,L10500
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@PCPRMT
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	JSP	11,S$$MTS##
	JRST	S$$SRT##
;G.EX3	P	= ?IDENT(SUBSTR(C,1,P),'$') P + 1	:F(G.EX6)
L10501:
	MOVEI	14,L10500
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,I10347
	PUSH	16,1
	MOVE	^D1,P
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D3,F10081
	PUSH	16,1
	MOVE	1,S10504
	FCALV$	^D2,F10072
	SETZ	1,
	MOVE	^D1,P
	ADD	^D1,K10347
	MOVEM	1,P
;	C	LEN(*P)  ANY(QTSCHR) $ STR1  @P	:F(G.EX5)
	MOVEI	14,L10505
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@QTSCHR
	JSP	11,S$$MBT##
	EXP	.
	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$$ANY##
	MOVE	1,N10267
	JSP	11,S$$IVA##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	JSP	11,S$$MTS##
;	ITPAT	= ?IDENT(STR1,SQCHR) SQLTPT	:S(G.EX4)
	MOVEI	14,Q10210
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	PUSH	16,1
	MOVE	1,@SQCHR
	FCALV$	^D2,F10072
	SETZ	1,
	MOVE	1,@SQLTPT
	MOVEM	1,@N10451
	JRST	L10506
Q10210:
;	ITPAT	= DQLTPT
	MOVEI	14,Q10211
	MOVEM	14,S$$FLP##
	MOVE	1,@DQLTPT
	MOVEM	1,@N10451
Q10211:
;G.EX4	ITNAM	= PARLIT(STR1,ITPAT)	:F(G.EX6)S(G.EX1)
L10506:
	MOVEI	14,L10500
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	PUSH	16,1
	MOVE	1,@N10451
	FCALV$	^D2,PARLIT
	MOVEM	1,@ITNAM
	JRST	L10502
;G.EX5	G.EX	= PR.U()	:F(FRETURN)
L10505:
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	FCALV$	^D0,F10270
	MOVEM	1,@N10285
;	TP	= P
	MOVE	^D1,P
	MOVEM	1,V10115
;	VARTYP	= GTOPTY(OPTY(G.EX))
	MOVEI	14,Q10212
	MOVEM	14,S$$FLP##
	MOVE	1,@N10285
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	DASGN$	2,V10099
Q10212:
;	G.EX	= NOD(S.PR(G.EX),GOTOAR<3>)	:F(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10285
	FCALV$	^D1,F10296
	PUSH	16,1
	MOVE	1,I10357
	AREFV$	^D1,GOTOAR
	FCALV$	^D2,F10272
	MOVEM	1,@N10285
;	P	= TP
	MOVE	^D1,V10115
	MOVEM	1,P
;	G.EX	= ?IGT(VARTYP,1) NOD(GOTOAR<2>,G.EX)	:(G.EX2)
	MOVEI	14,L10503
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$GTP##
	JUMP	0,V10099
	JUMP	0,K10347
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,I10348
	AREFV$	^D1,GOTOAR
	PUSH	16,1
	MOVE	1,@N10285
	FCALV$	^D2,F10272
	MOVEM	1,@N10285
	JRST	L10503
;G.EX6	ERRMSG('BAD GOTO SYNTAX')	:(FRETURN)
L10500:
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,S10507
	FCALV$	^D1,ERRMSG
	JRST	S$$FRT##
;*	*	*	*	*	*	*	*	*
;*		E.EX(NOD)NPAR,RSTFLG,EVLCOD EXPRESSION
;*	IF NOD IS AN EXPLICIT PATTERN, GENERATES CODE FOR A PATTERN
;*	EXPRESSION WHICH RETURNS A PATTERN DESCRIPTOR IN R1. OTHERWISE
;*	GENERATES CODE FOR A STRING EXPRESSION WHICH RETURNS A DES-
;*	CRIPTOR IN R1
;*
;E.EX	(?GTOPTY(OPTY(NOD)) ?INE(TYPE,5))	:F(E.EX1)
L10286:
	MOVEI	14,L10508
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10105
	JUMP	0,K10372
	ADD	16,S$$STB##
	SETZ	1,
;	E.EX	= S.EX(NOD)	:F(FRETURN)S(RETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10294
	MOVEM	1,@N10286
	JRST	S$$SRT##
;E.EX1	E.EX	= P.EX(NOD,OPER)	:F(FRETURN)
L10508:
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	PUSH	16,1
	MOVE	^D1,V10104
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,F10288
	MOVEM	1,@N10286
;	STR1	= NEWLAB()
	MOVEI	14,Q10213
	MOVEM	14,S$$FLP##
	FCALV$	^D0,NEWLAB
	MOVEM	1,@N10267
Q10213:
;	STR2	= SUBS(PATRAR<1>,(-2 * RSTFLG + 1) * (NPAR + 1),STR1)
	MOVEI	14,Q10214
	MOVEM	14,S$$FLP##
	MOVE	1,I10347
	AREFV$	^D1,PATRAR
	PUSH	16,1
	MOVN	^D1,K10348
	IMUL	^D1,V10106
	ADD	^D1,K10347
	MOVE	^D2,V10098
	ADD	^D2,K10347
	IMUL	^D1,^D2
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D3,SUBS
	MOVEM	1,@N10268
Q10214:
;	STR2	= ?IEQ(NPAR,0) NOD(STR2,PATRAR<2>)
	MOVEI	14,Q10215
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10098
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10268
	PUSH	16,1
	MOVE	1,I10348
	AREFV$	^D1,PATRAR
	FCALV$	^D2,F10272
	MOVEM	1,@N10268
Q10215:
;	E.EX	= NOD(NOD(STR2,E.EX),SUBS(PATRAR<3>,STR1))
	MOVEI	14,Q10216
	MOVEM	14,S$$FLP##
	MOVE	1,@N10268
	PUSH	16,1
	MOVE	1,@N10286
	FCALV$	^D2,F10272
	PUSH	16,1
	MOVE	1,I10357
	AREFV$	^D1,PATRAR
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D2,SUBS
	FCALV$	^D2,F10272
	MOVEM	1,@N10286
Q10216:
;	E.EX	= ?DIFFER(EVLCOD) NOD(EVLCOD,E.EX)	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10266
	FCALV$	^D1,F10071
	SETZ	1,
	MOVE	1,@N10266
	PUSH	16,1
	MOVE	1,@N10286
	FCALV$	^D2,F10272
	MOVEM	1,@N10286
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;*		V.EX(NOD) VARIABLE EXPRESSION
;*	ACCEPTS A NODE WHICH IS EITHER AN IDENTIFIER, UNPROTECTED KEY-
;*	WORD, OR STRING VARIABLE, AND RETURNS CODE THAT LEAVES A NAME
;*	DESCRIPTOR IN R1
;*
;V.EX	I	= ?GTOPTY(OPTY(NOD)) ?IEQ(OPER,1) SBJT(NOD) :F(V.EX1)
L10287:
	MOVEI	14,L10509
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10347
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	DASGN$	2,V10096
;	P	= ?ILE(I,7) ?ERRMSG('ASSIGNMENT TO PROTECTED KEYWORD')
;. PVAL(NOD)	:S(FRETURN)
	MOVEI	14,Q10217
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10096
	JUMP	0,K10389
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,S10390
	FCALV$	^D1,ERRMSG
	SETZ	1,
	MOVE	1,@N10272
	FCALV$	^D1,F10391
	DASGN$	2,P
	JRST	S$$FRT##
Q10217:
;	V.EX	= SUBS(VARBAR<12>,I)	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,I10343
	AREFV$	^D1,VARBAR
	PUSH	16,1
	MOVE	^D1,V10096
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,SUBS
	MOVEM	1,@N10287
	JRST	S$$SRT##
;V.EX1	V.EX	= ?IEQ(OPER,0) GETVAR(SBJT(NOD))	:F(V.EX2)
L10509:
	MOVEI	14,L10510
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	FCALV$	^D1,F10281
	MOVEM	1,@N10287
;	V.EX	= ?INE(VDATRB,VDPATR) SUBS(VARBAR<11>,V.EX) :S(RETURN)
	MOVEI	14,Q10218
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,VDATRB
	JUMP	0,VDPATR
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,I10441
	AREFV$	^D1,VARBAR
	PUSH	16,1
	MOVE	1,@N10287
	FCALV$	^D2,SUBS
	MOVEM	1,@N10287
	JRST	S$$SRT##
Q10218:
;	P	= ?ERRMSG('IMPROPER USE OF PATTERN PRIMITIVE') PVAL(NOD)
;.	:(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,S10398
	FCALV$	^D1,ERRMSG
	SETZ	1,
	MOVE	1,@N10272
	FCALV$	^D1,F10391
	DASGN$	2,P
	JRST	S$$FRT##
;V.EX2	V.EX	= S.VR(NOD,1)	:F(FRETURN)S(RETURN)
L10510:
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	PUSH	16,1
	MOVE	1,I10347
	FCALV$	^D2,F10297
	MOVEM	1,@N10287
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;*		P.EX(NOD,ROPER)TLAB1,TLAB2 PATTERN EXPRESSION
;*	GENERATES CODE FOR PATTERN EXPRESSIONS, RETURNING THE MATCH CODE
;*	AS VALUE, AND APPENDING ANY EVALUATION CODE TO THE CODE CON-
;*	TAINED IN EVLCOD. MAY INCREMENT NPAR AND/OR SET RSTFLG
;*
;P.EX	ROPER	= ?IEQ(ROPER,0) ?GTOPTY(OPTY(NOD)) OPER
L10288:
	MOVEI	14,Q10219
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10103
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10272
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	SETZ	1,
	MOVE	^D1,V10104
	MOVEM	1,V10103
Q10219:
;	?IGT(ROPER,35)	:F(P.EX7)
	MOVEI	14,L10512
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$GTP##
	JUMP	0,V10103
	JUMP	0,K10511
	ADD	16,S$$STB##
	SETZ	1,
;* BINARY PATTERN OPERATOR
;	?IEQ(ROPER,40)	:F(P.EX3)
	MOVEI	14,L10514
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10103
	JUMP	0,K10513
	ADD	16,S$$STB##
	SETZ	1,
;* ALTERNATION
;	TLAB1	= NEWLAB()
	MOVEI	14,Q10220
	MOVEM	14,S$$FLP##
	FCALV$	^D0,NEWLAB
	MOVEM	1,@N10289
Q10220:
;	TLAB2	= NEWLAB()
	MOVEI	14,Q10221
	MOVEM	14,S$$FLP##
	FCALV$	^D0,NEWLAB
	MOVEM	1,@N10290
Q10221:
;	P.EX	= NOD(NOD(SUBS(PATRAR<4>,TLAB2),P.EX(LFTS(NOD))),
;.SUBS(PATRAR<5>,TLAB1,TLAB2))	:F(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,I10351
	AREFV$	^D1,PATRAR
	PUSH	16,1
	MOVE	1,@N10290
	FCALV$	^D2,SUBS
	PUSH	16,1
	MOVE	1,@N10272
	FCALV$	^D1,F10436
	FCALV$	^D1,F10288
	FCALV$	^D2,F10272
	PUSH	16,1
	MOVE	1,I10372
	AREFV$	^D1,PATRAR
	PUSH	16,1
	MOVE	1,@N10289
	PUSH	16,1
	MOVE	1,@N10290
	FCALV$	^D3,SUBS
	FCALV$	^D2,F10272
	MOVEM	1,@N10288
;P.EX1	NOD	= RGTS(NOD)
L10515:
	MOVEI	14,Q10222
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10435
	MOVEM	1,@N10272
Q10222:
;	TLAB2	= ?GTOPTY(OPTY(NOD)) ?IEQ(OPER,40) NEWLAB() :S(P.EX2)
	MOVEI	14,Q10223
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10513
	ADD	16,S$$STB##
	SETZ	1,
	FCALV$	^D0,NEWLAB
	MOVEM	1,@N10290
	JRST	L10516
Q10223:
;	P.EX	= NOD(P.EX,NOD(NOD(PATRAR<7>,P.EX(NOD,OPER)),SUBS(
;.PATRAR<8>,TLAB1)))	:F(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10288
	PUSH	16,1
	MOVE	1,I10389
	AREFV$	^D1,PATRAR
	PUSH	16,1
	MOVE	1,@N10272
	PUSH	16,1
	MOVE	^D1,V10104
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,F10288
	FCALV$	^D2,F10272
	PUSH	16,1
	MOVE	1,I10399
	AREFV$	^D1,PATRAR
	PUSH	16,1
	MOVE	1,@N10289
	FCALV$	^D2,SUBS
	FCALV$	^D2,F10272
	FCALV$	^D2,F10272
	MOVEM	1,@N10288
;P.EXR	RSTFLG	= 1	:(RETURN)
L10517:
	MOVE	^D1,K10347
	MOVEM	1,V10106
	JRST	S$$SRT##
;P.EX2	P.EX	= NOD(P.EX,NOD(NOD(SUBS(PATRAR<6>,TLAB2),P.EX(LFTS(NOD))
;.),SUBS(PATRAR<5>,TLAB1,TLAB2)))	:F(FRETURN)S(P.EX1)
L10516:
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10288
	PUSH	16,1
	MOVE	1,I10367
	AREFV$	^D1,PATRAR
	PUSH	16,1
	MOVE	1,@N10290
	FCALV$	^D2,SUBS
	PUSH	16,1
	MOVE	1,@N10272
	FCALV$	^D1,F10436
	FCALV$	^D1,F10288
	FCALV$	^D2,F10272
	PUSH	16,1
	MOVE	1,I10372
	AREFV$	^D1,PATRAR
	PUSH	16,1
	MOVE	1,@N10289
	PUSH	16,1
	MOVE	1,@N10290
	FCALV$	^D3,SUBS
	FCALV$	^D2,F10272
	FCALV$	^D2,F10272
	MOVEM	1,@N10288
	JRST	L10515
;P.EX3	?IEQ(ROPER,38)	:F(P.EX6)
L10514:
	MOVEI	14,L10518
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10103
	JUMP	0,K10444
	ADD	16,S$$STB##
	SETZ	1,
;* PATTERN CONCATENATION
;	P.EX	= P.EX(LFTS(NOD))	:F(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10436
	FCALV$	^D1,F10288
	MOVEM	1,@N10288
;P.EX4	NOD	= RGTS(NOD)
L10519:
	MOVEI	14,Q10224
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10435
	MOVEM	1,@N10272
Q10224:
;	(?GTOPTY(OPTY(NOD)) ?IEQ(OPER,38))	:F(P.EX5)
	MOVEI	14,L10520
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10444
	ADD	16,S$$STB##
	SETZ	1,
;	P.EX	= NOD(P.EX,P.EX(LFTS(NOD)))	:F(FRETURN)S(P.EX4)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10288
	PUSH	16,1
	MOVE	1,@N10272
	FCALV$	^D1,F10436
	FCALV$	^D1,F10288
	FCALV$	^D2,F10272
	MOVEM	1,@N10288
	JRST	L10519
;P.EX5	P.EX	= NOD(P.EX,P.EX(NOD,OPER))	:F(FRETURN)S(RETURN)
L10520:
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10288
	PUSH	16,1
	MOVE	1,@N10272
	PUSH	16,1
	MOVE	^D1,V10104
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,F10288
	FCALV$	^D2,F10272
	MOVEM	1,@N10288
	JRST	S$$SRT##
;* IMMEDIATE AND CONDITIONAL PATTERN ASSIGNMENT
;P.EX6	P.EX	= NOD(NOD(PATRAR<9>,P.EX(LFTS(NOD))),NOD(P.VR(RGTS(NOD))
;.,PATRAR<ROPER - 26>))	:F(FRETURN)S(P.EXR)
L10518:
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,I10359
	AREFV$	^D1,PATRAR
	PUSH	16,1
	MOVE	1,@N10272
	FCALV$	^D1,F10436
	FCALV$	^D1,F10288
	FCALV$	^D2,F10272
	PUSH	16,1
	MOVE	1,@N10272
	FCALV$	^D1,F10435
	FCALV$	^D1,F10291
	PUSH	16,1
	MOVE	^D1,V10103
	SUB	^D1,K10521
	TLO	1,1B18
	TLZ	1,1B19
	AREFV$	^D1,PATRAR
	FCALV$	^D2,F10272
	FCALV$	^D2,F10272
	MOVEM	1,@N10288
	JRST	L10517
;*
;*	PATTERN PRIMARY
;P.EX7	?IGE(ROPER,16)	:F(P.EX14)
L10512:
	MOVEI	14,L10522
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$GEP##
	JUMP	0,V10103
	JUMP	0,K10456
	ADD	16,S$$STB##
	SETZ	1,
;	?ILT(ROPER,30)	:F(P.EX11)
	MOVEI	14,L10523
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LTP##
	JUMP	0,V10103
	JUMP	0,K10497
	ADD	16,S$$STB##
	SETZ	1,
;	NOD	= SBJT(NOD)
	MOVEI	14,Q10225
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	MOVEM	1,@N10272
Q10225:
;	(?GTOPTY(OPTY(NOD)) ?IEQ(ROPER,16))	:F(P.EX8)
	MOVEI	14,L10524
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10103
	JUMP	0,K10456
	ADD	16,S$$STB##
	SETZ	1,
;* CURSOR POSITION ASSIGNMENT
;	P.EX	= ?IEQ(OPER + TYPE,0) SUBS(PATRAR<12>,GETDVR(SBJT(NOD)))
;.	:S(RETURN)
	MOVEI	14,Q10226
	MOVEM	14,S$$FLP##
	MOVE	^D1,V10104
	ADD	^D1,V10105
	MOVEM	1,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,Q10001+^D0
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,I10343
	AREFV$	^D1,PATRAR
	PUSH	16,1
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	FCALV$	^D1,F10280
	FCALV$	^D2,SUBS
	MOVEM	1,@N10288
	JRST	S$$SRT##
Q10226:
;	P.EX	= NOD(P.VR(NOD),PATRAR<14>)	:F(FRETURN)S(RETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10291
	PUSH	16,1
	MOVE	1,I10525
	AREFV$	^D1,PATRAR
	FCALV$	^D2,F10272
	MOVEM	1,@N10288
	JRST	S$$SRT##
;* UNEVALUATED EXPRESSION
;P.EX8	?IEQ(OPER,4)	:F(P.EX10)
L10524:
	MOVEI	14,L10526
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10351
	ADD	16,S$$STB##
	SETZ	1,
;P.EX9	P.EX	= ?DIFFER(SBJT(NOD)) SUBS(PATRAR<15>,GETLIT(SBJT(NOD)))
;.	:(RETURN)
L10527:
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	FCALV$	^D1,F10071
	SETZ	1,
	MOVE	1,I10431
	AREFV$	^D1,PATRAR
	PUSH	16,1
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	FCALV$	^D1,F10274
	FCALV$	^D2,SUBS
	MOVEM	1,@N10288
	JRST	S$$SRT##
;P.EX10	ROPER	= OPER
L10526:
	MOVE	^D1,V10104
	MOVEM	1,V10103
;	P.EX	= U.EX(NOD,'S.PR',11)	:F(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	PUSH	16,1
	MOVE	1,S10296
	PUSH	16,1
	MOVE	1,I10441
	FCALV$	^D3,F10292
	MOVEM	1,@N10288
;	P.EX	= ?INE(ROPER,11) NOD(P.EX,PATRAR<16>) :F(RETURN)S(P.EXR)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10103
	JUMP	0,K10441
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10288
	PUSH	16,1
	MOVE	1,I10456
	AREFV$	^D1,PATRAR
	FCALV$	^D2,F10272
	MOVEM	1,@N10288
	JRST	L10517
;* SUM, TERM, OR FACTOR
;P.EX11	STR1	= S.EX(NOD)	:F(FRETURN)
L10523:
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10294
	MOVEM	1,@N10267
;P.EX12	STR1	= NOD(STR1,PATRAR<17>)
L10528:
	MOVEI	14,Q10227
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	PUSH	16,1
	MOVE	1,I10529
	AREFV$	^D1,PATRAR
	FCALV$	^D2,F10272
	MOVEM	1,@N10267
Q10227:
;	P.EX	= PATRAR<20>
	MOVEI	14,Q10228
	MOVEM	14,S$$FLP##
	MOVE	1,I10433
	AREFV$	^D1,PATRAR
	MOVEM	1,@N10288
Q10228:
;P.EX13	NPAR	= NPAR + 1
L10530:
	MOVE	^D1,V10098
	ADD	^D1,K10347
	MOVEM	1,V10098
;	P.EX	= SUBS(P.EX,NPAR)
	MOVEI	14,Q10229
	MOVEM	14,S$$FLP##
	MOVE	1,@N10288
	PUSH	16,1
	MOVE	^D1,V10098
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,SUBS
	MOVEM	1,@N10288
Q10229:
;	EVLCOD	= ?IDENT(EVLCOD) STR1	:S(RETURN)
	MOVEI	14,Q10230
	MOVEM	14,S$$FLP##
	MOVE	1,@N10266
	FCALV$	^D1,F10072
	SETZ	1,
	MOVE	1,@N10267
	MOVEM	1,@N10266
	JRST	S$$SRT##
Q10230:
;	EVLCOD	= NOD(EVLCOD,STR1)	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10266
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D2,F10272
	MOVEM	1,@N10266
	JRST	S$$SRT##
;* STRING OR PATTERN PRIMARIES
;P.EX14	?INE(TYPE,5)	:F(P.EX15)
L10522:
	MOVEI	14,L10531
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10105
	JUMP	0,K10372
	ADD	16,S$$STB##
	SETZ	1,
;	?INE(ROPER,4)	:F(P.EX9)
	MOVEI	14,L10527
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10103
	JUMP	0,K10351
	ADD	16,S$$STB##
	SETZ	1,
;	STR1	= S.PR(NOD)	:F(FRETURN)S(P.EX12)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10296
	MOVEM	1,@N10267
	JRST	L10528
;P.EX15	NOD	= ?IEQ(ROPER,7) SBJT(NOD)	:F(P.EX16)
L10531:
	MOVEI	14,L10532
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10103
	JUMP	0,K10389
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	MOVEM	1,@N10272
;* PARENTHESIZED EXPR
;	ROPER	=	:(P.EX)
	MOVEI	14,L10288
	MOVEM	14,S$$FLP##
	SETZM	V10103
	JRST	L10288
;* PRIMITIVE PATTERN VARIABLE OR FUNCTION
;P.EX16	OPER	= ?IEQ(ROPER,0) AND(ATRB(SBJT(NOD)),TXTMSK) / TXTATR
;.	:F(P.EX17)
L10532:
	MOVEI	14,L10533
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10103
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	FCALV$	^D1,F10395
	DASGN$	2,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$AND##
	JUMP	0,Q10001+^D0
	JUMP	0,TXTMSK
	ADD	16,S$$STB##
	MOVE	1,0
	IDIV	^D1,TXTATR
	MOVEM	1,V10104
;* FAIL, FENCE, ABORT, ARB, BAL, SUCCEED, REM
;	P.EX	= PTVRAR<OPER>
	MOVEI	14,Q10231
	MOVEM	14,S$$FLP##
	MOVE	^D1,V10104
	TLO	1,1B18
	TLZ	1,1B19
	AREFV$	^D1,PTVRAR
	MOVEM	1,@N10288
Q10231:
;	(?INE(OPER,1) ?INE(OPER,3) ?INE(OPER,7)) :F(RETURN)S(P.EXR)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10104
	JUMP	0,K10347
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10104
	JUMP	0,K10357
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10104
	JUMP	0,K10389
	ADD	16,S$$STB##
	SETZ	1,
	JRST	L10517
;P.EX17	STR1	= SBJT(NOD)
L10533:
	MOVEI	14,Q10232
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	MOVEM	1,@N10267
Q10232:
;	ROPER	= AND(ATRB(PARP(STR1)),TXTMSK) / TXTATR
	MOVEI	14,Q10233
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10534
	FCALV$	^D1,F10395
	DASGN$	2,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$AND##
	JUMP	0,Q10001+^D0
	JUMP	0,TXTMSK
	ADD	16,S$$STB##
	MOVE	1,0
	IDIV	^D1,TXTATR
	MOVEM	1,V10103
Q10233:
;	(?GTOPTY(PVAL(STR1)) ?INE(OPER,1))	:F(P.EX19)
	MOVEI	14,L10535
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10391
	FCALV$	^D1,F10282
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10104
	JUMP	0,K10347
	ADD	16,S$$STB##
	SETZ	1,
;P.EX18	P	= ?ERRMSG('IMPROPER ARG(S) TO PATTERN PRIMITIVE') PVAL(
;.NOD)	:(FRETURN)
L10536:
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,S10537
	FCALV$	^D1,ERRMSG
	SETZ	1,
	MOVE	1,@N10272
	FCALV$	^D1,F10391
	DASGN$	2,P
	JRST	S$$FRT##
;P.EX19	NOD	= PARP(NXTL(STR1))
L10535:
	MOVEI	14,Q10234
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10482
	FCALV$	^D1,F10534
	MOVEM	1,@N10272
Q10234:
;	P.EX	= PTFNAR<ROPER>
	MOVEI	14,Q10235
	MOVEM	14,S$$FLP##
	MOVE	^D1,V10103
	TLO	1,1B18
	TLZ	1,1B19
	AREFV$	^D1,PTFNAR
	MOVEM	1,@N10288
Q10235:
;	?ILE(ROPER,5)	:F(P.EX25)
	MOVEI	14,L10538
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10103
	JUMP	0,K10372
	ADD	16,S$$STB##
	SETZ	1,
;* LEN, TAB, RTAB, POS, RPOS
;	(?GTOPTY(OPTY(NOD)) ?ILE(TYPE,4))	:F(P.EX22)
	MOVEI	14,L10539
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10105
	JUMP	0,K10351
	ADD	16,S$$STB##
	SETZ	1,
;	P.EX	= ?IEQ(OPER,2) NOD(SUBS(PATRAR<21>,GETINT(SBJT(NOD))),
;.P.EX)	:S(RETURN)
	MOVEI	14,Q10236
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10348
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,I10434
	AREFV$	^D1,PATRAR
	PUSH	16,1
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	FCALV$	^D1,F10275
	FCALV$	^D2,SUBS
	PUSH	16,1
	MOVE	1,@N10288
	FCALV$	^D2,F10272
	MOVEM	1,@N10288
	JRST	S$$SRT##
Q10236:
;	?ILE(TYPE,3)	:F(P.EX20)
	MOVEI	14,L10540
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10105
	JUMP	0,K10357
	ADD	16,S$$STB##
	SETZ	1,
;	STR1	= NOD(D.EX(NOD),PATRAR<22>)	:F(FRETURN)S(P.EX21)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10298
	PUSH	16,1
	MOVE	1,I10541
	AREFV$	^D1,PATRAR
	FCALV$	^D2,F10272
	MOVEM	1,@N10267
	JRST	L10542
;P.EX20	STR1	= NOD(S.EX(NOD),PATRAR<24>)	:F(FRETURN)
L10540:
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10294
	PUSH	16,1
	MOVE	1,I10543
	AREFV$	^D1,PATRAR
	FCALV$	^D2,F10272
	MOVEM	1,@N10267
;P.EX21	P.EX	= NOD(PATRAR<23>,P.EX)	:(P.EX13)
L10542:
	MOVEI	14,L10530
	MOVEM	14,S$$FLP##
	MOVE	1,I10544
	AREFV$	^D1,PATRAR
	PUSH	16,1
	MOVE	1,@N10288
	FCALV$	^D2,F10272
	MOVEM	1,@N10288
	JRST	L10530
;P.EX22	P.EX	= ?IEQ(OPER,17) NOD(PATRAR<25>,P.EX)	:F(P.EX18)
L10539:
	MOVEI	14,L10536
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10529
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,I10464
	AREFV$	^D1,PATRAR
	PUSH	16,1
	MOVE	1,@N10288
	FCALV$	^D2,F10272
	MOVEM	1,@N10288
;	NOD	= SBJT(NOD)
	MOVEI	14,Q10237
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	MOVEM	1,@N10272
Q10237:
;	(?GTOPTY(OPTY(NOD)) ?ILE(TYPE,4))	:F(P.EX18)
	MOVEI	14,L10536
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10105
	JUMP	0,K10351
	ADD	16,S$$STB##
	SETZ	1,
;	STR2	= ?ILE(TYPE,3) 'D.EX'	:F(P.EX23)
	MOVEI	14,L10545
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10105
	JUMP	0,K10357
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,S10298
	MOVEM	1,@N10268
;	I	= ?IGE(TYPE,2) 11	:S(P.EX24)
	MOVEI	14,Q10238
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$GEP##
	JUMP	0,V10105
	JUMP	0,K10348
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,K10441
	MOVEM	1,V10096
	JRST	L10546
Q10238:
;	I	= 8	:(P.EX24)
	MOVE	^D1,K10399
	MOVEM	1,V10096
	JRST	L10546
;P.EX23	STR2	= 'S.EX'
L10545:
	MOVEI	14,Q10239
	MOVEM	14,S$$FLP##
	MOVE	1,S10294
	MOVEM	1,@N10268
Q10239:
;	I	= 11
	MOVE	^D1,K10441
	MOVEM	1,V10096
;	P.EX	= NOD(PATRAR<26>,P.EX)
	MOVEI	14,Q10240
	MOVEM	14,S$$FLP##
	MOVE	1,I10521
	AREFV$	^D1,PATRAR
	PUSH	16,1
	MOVE	1,@N10288
	FCALV$	^D2,F10272
	MOVEM	1,@N10288
Q10240:
;P.EX24	P.EX	= NOD(U.EX(NOD,STR2,I),P.EX)	:F(FRETURN)S(RETURN)
L10546:
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	PUSH	16,1
	MOVE	1,@N10268
	PUSH	16,1
	MOVE	^D1,V10096
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D3,F10292
	PUSH	16,1
	MOVE	1,@N10288
	FCALV$	^D2,F10272
	MOVEM	1,@N10288
	JRST	S$$SRT##
;P.EX25	?ILE(ROPER,12)	:F(P.EX28)
L10538:
	MOVEI	14,L10547
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10103
	JUMP	0,K10343
	ADD	16,S$$STB##
	SETZ	1,
;* SPAN, BREAK, ANY, NOTANY, NSPAN, BREAKX, BREAKQ
;	(?ILE(TYPE,4) ?GTOPTY(OPTY(NOD)))	:F(P.EX27)
	MOVEI	14,L10548
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10105
	JUMP	0,K10351
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10272
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	SETZ	1,
;	STR2	= ?IEQ(OPER,4) SBJT(NOD)	:F(P.EX26)
	MOVEI	14,L10549
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10351
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	MOVEM	1,@N10268
;	P.EX	= ?DIFFER(STR2) NOD(SUBS(PATRAR<27>,'B' INAM(STR2)),
;.P.EX)	:F(P.EX18)
	MOVEI	14,L10536
	MOVEM	14,S$$FLP##
	MOVE	1,@N10268
	FCALV$	^D1,F10071
	SETZ	1,
	MOVE	1,I10550
	AREFV$	^D1,PATRAR
	PUSH	16,1
	MOVE	1,S10302
	PUSH	16,1
	MOVE	1,@N10268
	FCALV$	^D1,F10360
	JSP	14,S$$CNC##
	EXP	^D2
	FCALV$	^D2,SUBS
	PUSH	16,1
	MOVE	1,@N10288
	FCALV$	^D2,F10272
	MOVEM	1,@N10288
;	STR1	= .ATRB(STR2)
	MOVEI	14,Q10241
	MOVEM	14,S$$FLP##
	MOVE	1,@N10268
	FCALN$	^D1,F10395
	MOVEM	1,@N10267
Q10241:
;	$STR1	= OR($STR1,BTRATR)
	MOVEI	14,Q10242
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	JSP	14,S$$IVN##
	PUSH	16,1
	MOVE	1,@N10267
	JSP	14,S$$IVV##
	DASGN$	2,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,Q10001+^D0
	JUMP	0,BTRATR
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
Q10242:
;	RSTFLG	= ?IEQ(ROPER,11) 1	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10103
	JUMP	0,K10441
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,K10347
	MOVEM	1,V10106
	JRST	S$$SRT##
;P.EX26	STR1	= NOD(S.EX(NOD),PATRAR<29>)	:F(FRETURN)
L10549:
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10294
	PUSH	16,1
	MOVE	1,I10487
	AREFV$	^D1,PATRAR
	FCALV$	^D2,F10272
	MOVEM	1,@N10267
;	P.EX	= NOD(PATRAR<19>,P.EX)
	MOVEI	14,Q10243
	MOVEM	14,S$$FLP##
	MOVE	1,I10432
	AREFV$	^D1,PATRAR
	PUSH	16,1
	MOVE	1,@N10288
	FCALV$	^D2,F10272
	MOVEM	1,@N10288
Q10243:
;	RSTFLG	= ?IEQ(ROPER,11) 1	:(P.EX13)
	MOVEI	14,L10530
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10103
	JUMP	0,K10441
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,K10347
	MOVEM	1,V10106
	JRST	L10530
;P.EX27	P.EX	= ?IEQ(OPER,17) NOD(PATRAR<28>,P.EX)	:F(P.EX18)
L10548:
	MOVEI	14,L10536
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10529
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,I10551
	AREFV$	^D1,PATRAR
	PUSH	16,1
	MOVE	1,@N10288
	FCALV$	^D2,F10272
	MOVEM	1,@N10288
;	NOD	= SBJT(NOD)
	MOVEI	14,Q10244
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	MOVEM	1,@N10272
Q10244:
;	?ILE(GTOPTY(OPTY(NOD)),4)	:F(P.EX18)
	MOVEI	14,L10536
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	DASGN$	2,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,Q10001+^D0
	JUMP	0,K10351
	ADD	16,S$$STB##
	SETZ	1,
;	P.EX	= NOD(U.EX(NOD,'S.EX',11),P.EX)	:F(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	PUSH	16,1
	MOVE	1,S10294
	PUSH	16,1
	MOVE	1,I10441
	FCALV$	^D3,F10292
	PUSH	16,1
	MOVE	1,@N10288
	FCALV$	^D2,F10272
	MOVEM	1,@N10288
;	RSTFLG	= ?IEQ(ROPER,11) 1	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10103
	JUMP	0,K10441
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,K10347
	MOVEM	1,V10106
	JRST	S$$SRT##
;* ARBNO
;P.EX28	TLAB1	= NEWLAB()
L10547:
	MOVEI	14,Q10245
	MOVEM	14,S$$FLP##
	FCALV$	^D0,NEWLAB
	MOVEM	1,@N10289
Q10245:
;	P.EX	= NOD(SUBS(FRNT(P.EX),TLAB1),NOD(P.EX(NOD),SUBS(BACK(
;.P.EX),TLAB1)))	:F(FRETURN)S(P.EXR)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10288
	FCALV$	^D1,F10498
	PUSH	16,1
	MOVE	1,@N10289
	FCALV$	^D2,SUBS
	PUSH	16,1
	MOVE	1,@N10272
	FCALV$	^D1,F10288
	PUSH	16,1
	MOVE	1,@N10288
	FCALV$	^D1,F10499
	PUSH	16,1
	MOVE	1,@N10289
	FCALV$	^D2,SUBS
	FCALV$	^D2,F10272
	FCALV$	^D2,F10272
	MOVEM	1,@N10288
	JRST	L10517
;*	*	*	*	*	*	*	*	*
;*		P.VR(NOD)ROPER PATTERN VARIABLE
;*	GENERATES MATCH CODE THAT PRODUCES A NAME DATATYPE IN R1, WITH
;*	ANY EVALUATION CODE BEING ADDED TO EVLCOD
;*
;P.VR	NOD	= ?GTOPTY(OPTY(NOD)) ?IEQ(OPER,17) SBJT(NOD) :S(P.VR1)
L10291:
	MOVEI	14,Q10246
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10529
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	MOVEM	1,@N10272
	JRST	L10552
Q10246:
;	ROPER	= OPER
	MOVE	^D1,V10104
	MOVEM	1,V10103
;	P.VR	= V.EX(NOD)	:F(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10287
	MOVEM	1,@N10291
;	STR1	= ?IGT(ROPER,1) NOD(P.VR,PATRAR<18>)	:F(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$GTP##
	JUMP	0,V10103
	JUMP	0,K10347
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10291
	PUSH	16,1
	MOVE	1,I10447
	AREFV$	^D1,PATRAR
	FCALV$	^D2,F10272
	MOVEM	1,@N10267
;	NPAR	= NPAR + 1
	MOVE	^D1,V10098
	ADD	^D1,K10347
	MOVEM	1,V10098
;	P.VR	= SUBS(PATRAR<30>,NPAR)
	MOVEI	14,Q10247
	MOVEM	14,S$$FLP##
	MOVE	1,I10497
	AREFV$	^D1,PATRAR
	PUSH	16,1
	MOVE	^D1,V10098
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,SUBS
	MOVEM	1,@N10291
Q10247:
;	EVLCOD	= ?IDENT(EVLCOD) STR1	:S(RETURN)
	MOVEI	14,Q10248
	MOVEM	14,S$$FLP##
	MOVE	1,@N10266
	FCALV$	^D1,F10072
	SETZ	1,
	MOVE	1,@N10267
	MOVEM	1,@N10266
	JRST	S$$SRT##
Q10248:
;	EVLCOD	= NOD(EVLCOD,STR1)	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10266
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D2,F10272
	MOVEM	1,@N10266
	JRST	S$$SRT##
;P.VR1	P.VR	= U.EX(NOD,'V.EX',11)	:F(FRETURN)S(RETURN)
L10552:
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	PUSH	16,1
	MOVE	1,S10287
	PUSH	16,1
	MOVE	1,I10441
	FCALV$	^D3,F10292
	MOVEM	1,@N10291
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;*		U.EX(NOD,FUNC,MAXLVL)FAILFL
;*	GENERATES MATCH CODE FOR UNEVALUATED EXPRESSIONS OF TYPE SPE-
;*	CIFIED BY FUNC, WITH ARITHMETIC RESTRICTED TO LEVEL SPECIFIED
;*	BY MAXLVL
;*
;U.EX	U.EX	= APPLY(FUNC,NOD)	:F(FRETURN)
L10292:
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10293
	PUSH	16,1
	MOVE	1,@N10272
	FCALV$	^D2,F10042
	MOVEM	1,@N10292
;	(?GTOPTY(OPTY(NOD)) ?INE(OPER,0) ?IGT(TYPE,1))	:F(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10104
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$GTP##
	JUMP	0,V10105
	JUMP	0,K10347
	ADD	16,S$$STB##
	SETZ	1,
;	U.EX	= ?IEQ(FAILFL,0) NOD(PATRAR<31>,NOD(U.EX,PATRAR<32>))
;.	:S(RETURN)
	MOVEI	14,Q10249
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10109
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,I10553
	AREFV$	^D1,PATRAR
	PUSH	16,1
	MOVE	1,@N10292
	PUSH	16,1
	MOVE	1,I10554
	AREFV$	^D1,PATRAR
	FCALV$	^D2,F10272
	FCALV$	^D2,F10272
	MOVEM	1,@N10292
	JRST	S$$SRT##
Q10249:
;	U.EX	= NOD(PATRAR<33>,NOD(U.EX,PATRAR<34>))	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,I10555
	AREFV$	^D1,PATRAR
	PUSH	16,1
	MOVE	1,@N10292
	PUSH	16,1
	MOVE	1,I10556
	AREFV$	^D1,PATRAR
	FCALV$	^D2,F10272
	FCALV$	^D2,F10272
	MOVEM	1,@N10292
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;*		S.EX(NOD,DEDVAR)NPAR STRING EXPRESSION
;*	GENERATES CODE FOR STRING CONCATENATION AND NON-DEDICATED ARITH-
;*	METIC WHICH LEAVES DESCRIPTOR IN R1, OR SAVES STRING IN DEDVAR
;*
;S.EX	?IEQ(GTOPTY(OPTY(NOD)),5)	:F(S.EX0)
L10294:
	MOVEI	14,L10557
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	DASGN$	2,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,Q10001+^D0
	JUMP	0,K10372
	ADD	16,S$$STB##
	SETZ	1,
;S.EXE	P	= ?ERRMSG('BAD CONTEXT FOR PATTERN') GTPVAL(NOD)
;.	:(FRETURN)
L10558:
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,S10559
	FCALV$	^D1,ERRMSG
	SETZ	1,
	MOVE	1,@N10272
	FCALV$	^D1,F10283
	DASGN$	2,P
	JRST	S$$FRT##
;S.EX0	?ILT(OPER,30)	:F(S.EX2)
L10557:
	MOVEI	14,L10560
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LTP##
	JUMP	0,V10104
	JUMP	0,K10497
	ADD	16,S$$STB##
	SETZ	1,
;* STRING PRIMARY
;	S.EX	= S.PR(NOD)	:F(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10296
	MOVEM	1,@N10294
;S.EX1	S.EX	= ?DIFFER(DEDVAR) NOD(S.EX,SUBS(VARBAR<5>,1,DEDVAR))
;.	:(RETURN)
L10561:
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10295
	FCALV$	^D1,F10071
	SETZ	1,
	MOVE	1,@N10294
	PUSH	16,1
	MOVE	1,I10372
	AREFV$	^D1,VARBAR
	PUSH	16,1
	MOVE	1,I10347
	PUSH	16,1
	MOVE	1,@N10295
	FCALV$	^D3,SUBS
	FCALV$	^D2,F10272
	MOVEM	1,@N10294
	JRST	S$$SRT##
;S.EX2	NPAR	= ?ILE(TYPE,3) REMDR(TYPE,2)	:F(S.EX3)
L10560:
	MOVEI	14,L10562
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10105
	JUMP	0,K10357
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$RMD##
	JUMP	0,V10105
	JUMP	0,K10348
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,V10098
;* DEDICATED EXPRESSION
;	S.EX	= NOD(D.EX(NOD,NPAR),EXPRAR<NPAR + 3>)
;.	:F(FRETURN)S(S.EX1)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	PUSH	16,1
	MOVE	^D1,V10098
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,F10298
	PUSH	16,1
	MOVE	^D1,V10098
	ADD	^D1,K10357
	TLO	1,1B18
	TLZ	1,1B19
	AREFV$	^D1,EXPRAR
	FCALV$	^D2,F10272
	MOVEM	1,@N10294
	JRST	L10561
;S.EX3	?IEQ(OPER,38)	:F(S.EX9)
L10562:
	MOVEI	14,L10563
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10444
	ADD	16,S$$STB##
	SETZ	1,
;* STRING CONCATENATION
;	S.EX	= S.EX(LFTS(NOD))	:F(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10436
	FCALV$	^D1,F10294
	MOVEM	1,@N10294
;S.EX4	(?GTOPTY(OPTY(LFTS(NOD))) ?INE(OPER,11) ?INE(OPER,12)) :F(S.EX5)
L10564:
	MOVEI	14,L10565
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10436
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10104
	JUMP	0,K10441
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10104
	JUMP	0,K10343
	ADD	16,S$$STB##
	SETZ	1,
;	NPAR	= NPAR + 1
	MOVE	^D1,V10098
	ADD	^D1,K10347
	MOVEM	1,V10098
;	S.EX	= NOD(S.EX,EXPRAR<1>)
	MOVEI	14,Q10250
	MOVEM	14,S$$FLP##
	MOVE	1,@N10294
	PUSH	16,1
	MOVE	1,I10347
	AREFV$	^D1,EXPRAR
	FCALV$	^D2,F10272
	MOVEM	1,@N10294
Q10250:
;S.EX5	NOD	= RGTS(NOD)
L10565:
	MOVEI	14,Q10251
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10435
	MOVEM	1,@N10272
Q10251:
;	(?GTOPTY(OPTY(NOD)) ?IEQ(OPER,38) ?IGT(TYPE,3))	:F(S.EX6)
	MOVEI	14,L10566
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10444
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$GTP##
	JUMP	0,V10105
	JUMP	0,K10357
	ADD	16,S$$STB##
	SETZ	1,
;	S.EX	= NOD(S.EX,S.EX(LFTS(NOD)))	:F(FRETURN)S(S.EX4)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10294
	PUSH	16,1
	MOVE	1,@N10272
	FCALV$	^D1,F10436
	FCALV$	^D1,F10294
	FCALV$	^D2,F10272
	MOVEM	1,@N10294
	JRST	L10564
;S.EX6	S.EX	= NOD(S.EX,S.EX(NOD))	:F(FRETURN)
L10566:
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10294
	PUSH	16,1
	MOVE	1,@N10272
	FCALV$	^D1,F10294
	FCALV$	^D2,F10272
	MOVEM	1,@N10294
;	(?GTOPTY(OPTY(NOD)) ?INE(OPER,11) ?INE(OPER,12)) :F(S.EX8)
	MOVEI	14,L10567
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10104
	JUMP	0,K10441
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10104
	JUMP	0,K10343
	ADD	16,S$$STB##
	SETZ	1,
;	NPAR	= NPAR + 1
	MOVE	^D1,V10098
	ADD	^D1,K10347
	MOVEM	1,V10098
;S.EX7	?IGT(NPAR,1)	:F(S.EX1)
L10568:
	MOVEI	14,L10561
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$GTP##
	JUMP	0,V10098
	JUMP	0,K10347
	ADD	16,S$$STB##
	SETZ	1,
;	S.EX	= ?IDENT(DEDVAR) NOD(S.EX,SUBS(EXPRAR<2>,NPAR))
;.	:S(RETURN)
	MOVEI	14,Q10252
	MOVEM	14,S$$FLP##
	MOVE	1,@N10295
	FCALV$	^D1,F10072
	SETZ	1,
	MOVE	1,@N10294
	PUSH	16,1
	MOVE	1,I10348
	AREFV$	^D1,EXPRAR
	PUSH	16,1
	MOVE	^D1,V10098
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,SUBS
	FCALV$	^D2,F10272
	MOVEM	1,@N10294
	JRST	S$$SRT##
Q10252:
;	S.EX	= ?ILE(NPAR,15) NOD(S.EX,SUBS(VARBAR<4>,NPAR,DEDVAR))
;.	:S(RETURN)
	MOVEI	14,Q10253
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10098
	JUMP	0,K10431
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10294
	PUSH	16,1
	MOVE	1,I10351
	AREFV$	^D1,VARBAR
	PUSH	16,1
	MOVE	^D1,V10098
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	MOVE	1,@N10295
	FCALV$	^D3,SUBS
	FCALV$	^D2,F10272
	MOVEM	1,@N10294
	JRST	S$$SRT##
Q10253:
;	S.EX	= NOD(S.EX,SUBS(EXPRAR<2>,NPAR))	:(S.EX1)
	MOVEI	14,L10561
	MOVEM	14,S$$FLP##
	MOVE	1,@N10294
	PUSH	16,1
	MOVE	1,I10348
	AREFV$	^D1,EXPRAR
	PUSH	16,1
	MOVE	^D1,V10098
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,SUBS
	FCALV$	^D2,F10272
	MOVEM	1,@N10294
	JRST	L10561
;S.EX8	S.EX	= ?IGT(NPAR,0) NOD(S.EX,EXPRAR<6>)	:(S.EX7)
L10567:
	MOVEI	14,L10568
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$GTP##
	JUMP	0,V10098
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10294
	PUSH	16,1
	MOVE	1,I10367
	AREFV$	^D1,EXPRAR
	FCALV$	^D2,F10272
	MOVEM	1,@N10294
	JRST	L10568
;* UNDEDICATED ARITHMETIC OPERATIONS
;S.EX9	NPAR	= OPER
L10563:
	MOVE	^D1,V10104
	MOVEM	1,V10098
;	S.EX	= NOD(NOD(S.EX(LFTS(NOD)),EXPRAR<1>),NOD(S.EX(RGTS(NOD))
;.,EXPRAR<NPAR - 25>))	:F(FRETURN)S(S.EX1)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10436
	FCALV$	^D1,F10294
	PUSH	16,1
	MOVE	1,I10347
	AREFV$	^D1,EXPRAR
	FCALV$	^D2,F10272
	PUSH	16,1
	MOVE	1,@N10272
	FCALV$	^D1,F10435
	FCALV$	^D1,F10294
	PUSH	16,1
	MOVE	^D1,V10098
	SUB	^D1,K10464
	TLO	1,1B18
	TLZ	1,1B19
	AREFV$	^D1,EXPRAR
	FCALV$	^D2,F10272
	FCALV$	^D2,F10272
	MOVEM	1,@N10294
	JRST	L10561
;*	*	*	*	*	*	*	*	*
;*		S.PR(NOD)ROPER STRING PRIMARY
;*	GENERATES CODE FOR STRING PRIMARIES WHICH LEAVES DESCRIPTOR IN
;*	R1
;*
;S.PR	(?GTOPTY(OPTY(NOD)) ?ILE(TYPE,3))	:F(S.PR2)
L10296:
	MOVEI	14,L10569
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10105
	JUMP	0,K10357
	ADD	16,S$$STB##
	SETZ	1,
;	ROPER	= ?INE(OPER,2) ?INE(OPER,3) REMDR(TYPE,2) :F(S.PR1)
	MOVEI	14,L10570
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10104
	JUMP	0,K10348
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10104
	JUMP	0,K10357
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$RMD##
	JUMP	0,V10105
	JUMP	0,K10348
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,V10103
;* DEDICATED PRIMARY
;	S.PR	= NOD(D.PR(NOD,ROPER),EXPRAR<ROPER + 3>)
;.	:F(FRETURN)S(RETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	PUSH	16,1
	MOVE	^D1,V10103
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,F10299
	PUSH	16,1
	MOVE	^D1,V10103
	ADD	^D1,K10357
	TLO	1,1B18
	TLZ	1,1B19
	AREFV$	^D1,EXPRAR
	FCALV$	^D2,F10272
	MOVEM	1,@N10296
	JRST	S$$SRT##
;* INTEGER OR REAL CONSTANT
;S.PR1	S.PR	= ?IEQ(OPER,2) SUBS(VARBAR<11>,GETINT(SBJT(NOD),1))
;.	:S(RETURN)
L10570:
	MOVEI	14,Q10254
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10348
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,I10441
	AREFV$	^D1,VARBAR
	PUSH	16,1
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	PUSH	16,1
	MOVE	1,I10347
	FCALV$	^D2,F10275
	FCALV$	^D2,SUBS
	MOVEM	1,@N10296
	JRST	S$$SRT##
Q10254:
;	S.PR	= SUBS(VARBAR<11>,GETREL(SBJT(NOD),1))	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,I10441
	AREFV$	^D1,VARBAR
	PUSH	16,1
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	PUSH	16,1
	MOVE	1,I10347
	FCALV$	^D2,F10276
	FCALV$	^D2,SUBS
	MOVEM	1,@N10296
	JRST	S$$SRT##
;S.PR2	?ILE(OPER,10)	:F(S.PR6)
L10569:
	MOVEI	14,L10571
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10104
	JUMP	0,K10400
	ADD	16,S$$STB##
	SETZ	1,
;	?ILE(OPER,4)	:F(S.PR5)
	MOVEI	14,L10572
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10104
	JUMP	0,K10351
	ADD	16,S$$STB##
	SETZ	1,
;	STR1	= ?IEQ(OPER,4) SBJT(NOD)	:F(S.PR3)
	MOVEI	14,L10573
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10351
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	MOVEM	1,@N10267
;* STRING LITERAL
;	S.PR	= ?DIFFER(STR1) SUBS(VARBAR<11>,GETLIT(STR1)) :S(RETURN)
	MOVEI	14,Q10255
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10071
	SETZ	1,
	MOVE	1,I10441
	AREFV$	^D1,VARBAR
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D1,F10274
	FCALV$	^D2,SUBS
	MOVEM	1,@N10296
	JRST	S$$SRT##
Q10255:
;	S.PR	= EXPRAR<13>	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,I10574
	AREFV$	^D1,EXPRAR
	MOVEM	1,@N10296
	JRST	S$$SRT##
;* &ALPHABET OR &RTNTYPE KEYWORD
;S.PR3	S.PR	= ?IEQ(OPER,1) SUBS(EXPRAR<11>,SUBS(VARBAR<1>,SBJT(NOD))
;.)	:S(RETURN)
L10573:
	MOVEI	14,Q10256
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10347
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,I10441
	AREFV$	^D1,EXPRAR
	PUSH	16,1
	MOVE	1,I10347
	AREFV$	^D1,VARBAR
	PUSH	16,1
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	FCALV$	^D2,SUBS
	FCALV$	^D2,SUBS
	MOVEM	1,@N10296
	JRST	S$$SRT##
Q10256:
;* IDENTIFIER
;	S.PR	= ?INE(TYPE,5) SUBS(EXPRAR<12>,GETVAR(SBJT(NOD)))
;.	:F(S.EXE)
	MOVEI	14,L10558
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10105
	JUMP	0,K10372
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,I10343
	AREFV$	^D1,EXPRAR
	PUSH	16,1
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	FCALV$	^D1,F10281
	FCALV$	^D2,SUBS
	MOVEM	1,@N10296
;* DEDICATED STRING
;	S.PR	= ?IEQ(VDATRB,VDDATR) NOD(S.PR,EXPRAR<14>) :(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,VDATRB
	JUMP	0,VDDATR
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10296
	PUSH	16,1
	MOVE	1,I10525
	AREFV$	^D1,EXPRAR
	FCALV$	^D2,F10272
	MOVEM	1,@N10296
	JRST	S$$SRT##
;* PARENTHESIZED EXPR
;S.PR5	NOD	= ?IEQ(OPER,7) SBJT(NOD)	:F(S.PR5A)
L10572:
	MOVEI	14,L10575
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10389
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	MOVEM	1,@N10272
;	S.PR	= S.EX(NOD)	:F(FRETURN)S(RETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10294
	MOVEM	1,@N10296
	JRST	S$$SRT##
;* STRING VARIABLE
;S.PR5A	S.PR	= S.VR(NOD)	:F(FRETURN)S(RETURN)
L10575:
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10297
	MOVEM	1,@N10296
	JRST	S$$SRT##
;S.PR6	ROPER	= ?INE(OPER,15) OPER	:F(S.PR7)
L10571:
	MOVEI	14,L10576
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10104
	JUMP	0,K10431
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,V10104
	MOVEM	1,V10103
;* ?, \, +, -
;	S.PR	= S.PR(SBJT(NOD))	:F(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	FCALV$	^D1,F10296
	MOVEM	1,@N10296
;* +
;	?INE(ROPER,13)	:F(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10103
	JUMP	0,K10574
	ADD	16,S$$STB##
	SETZ	1,
;* ?, -
;	S.PR	= ?INE(ROPER,12) NOD(S.PR,EXPRAR<ROPER + 2>) :S(S.PR8)
	MOVEI	14,Q10257
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10103
	JUMP	0,K10343
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10296
	PUSH	16,1
	MOVE	^D1,V10103
	ADD	^D1,K10348
	TLO	1,1B18
	TLZ	1,1B19
	AREFV$	^D1,EXPRAR
	FCALV$	^D2,F10272
	MOVEM	1,@N10296
	JRST	L10577
Q10257:
;* \
;	STR1	= NEWLAB()
	MOVEI	14,Q10258
	MOVEM	14,S$$FLP##
	FCALV$	^D0,NEWLAB
	MOVEM	1,@N10267
Q10258:
;	S.PR	= NOD(SUBS(EXPRAR<15>,STR1),NOD(S.PR,SUBS(EXPRAR<17>,
;.STR1)))	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,I10431
	AREFV$	^D1,EXPRAR
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D2,SUBS
	PUSH	16,1
	MOVE	1,@N10296
	PUSH	16,1
	MOVE	1,I10529
	AREFV$	^D1,EXPRAR
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D2,SUBS
	FCALV$	^D2,F10272
	FCALV$	^D2,F10272
	MOVEM	1,@N10296
	JRST	S$$SRT##
;* .
;S.PR7	S.PR	= V.EX(SBJT(NOD))	:F(FRETURN)S(RETURN)
L10576:
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	FCALV$	^D1,F10287
	MOVEM	1,@N10296
	JRST	S$$SRT##
;* TRY TO OPTIMIZE ? A LITTLE
;S.PR8	STR1	= ?IEQ(ROPER,11) SBJT(NOD)	:F(RETURN)
L10577:
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10103
	JUMP	0,K10441
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	MOVEM	1,@N10267
;	STR1	= ?GTOPTY(OPTY(STR1)) ?ILE(TYPE,3) ?IEQ(OPER,6)
;. FRNT(FRNT(FRNT(S.PR)))	:F(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10105
	JUMP	0,K10357
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10367
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10296
	FCALV$	^D1,F10498
	FCALV$	^D1,F10498
	FCALV$	^D1,F10498
	MOVEM	1,@N10267
;* ELIMINATES THE MOVING OF RESULT TO R1 AND CONVERSION TO DESCRIPTOR
;* MODE IN THE CASE OF ?FORTRAN.FUNC
;	FRNT(S.PR)	= STR1	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10296
	FCALN$	^D1,F10498
	PUSH	16,1
	MOVE	1,@N10267
	JSP	11,S$$ASG##
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;*		S.VR(NOD,MODFLG)TLAB1,NPAR STRING VARIABLE
;*	GENERATES CODE FOR INDIRECTION, ARRAY REFERENCES, AND NON-
;*	FORTRAN FUNCTION CALLS, LEAVING VALUE IN R1 IF CALL FOR VALUE
;*	(MODFLG=0), OR NAME DESCR IN R1 IF CALL FOR NAME (MODFLG=1)
;*
;S.VR	(?GTOPTY(OPTY(NOD)) ?INE(TYPE,5))	:F(S.EXE)
L10297:
	MOVEI	14,L10558
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10105
	JUMP	0,K10372
	ADD	16,S$$STB##
	SETZ	1,
;	?INE(TYPE,4)	:F(S.VR1)
	MOVEI	14,L10578
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10105
	JUMP	0,K10351
	ADD	16,S$$STB##
	SETZ	1,
;S.VR0	P	= ?ERRMSG('ILLEGAL VARIABLE EXPRESSION') GTPVAL(NOD)
;.	:(FRETURN)
L10579:
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,S10580
	FCALV$	^D1,ERRMSG
	SETZ	1,
	MOVE	1,@N10272
	FCALV$	^D1,F10283
	DASGN$	2,P
	JRST	S$$FRT##
;S.VR1	S.VR	= ?IEQ(OPER,10) EXPRAR<18 + MODFLG>	:F(S.VR2)
L10578:
	MOVEI	14,L10581
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10400
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,K10447
	ADD	^D1,V10108
	TLO	1,1B18
	TLZ	1,1B19
	AREFV$	^D1,EXPRAR
	MOVEM	1,@N10297
;	S.VR	= NOD(S.PR(SBJT(NOD)),S.VR)	:F(FRETURN)S(RETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	FCALV$	^D1,F10296
	PUSH	16,1
	MOVE	1,@N10297
	FCALV$	^D2,F10272
	MOVEM	1,@N10297
	JRST	S$$SRT##
;S.VR2	NOD	= ?IGE(OPER,5) ?ILE(OPER,6) SBJT(NOD)	:F(S.VR0)
L10581:
	MOVEI	14,L10579
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$GEP##
	JUMP	0,V10104
	JUMP	0,K10372
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10104
	JUMP	0,K10367
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	MOVEM	1,@N10272
;	TLAB1	= ?IEQ(OPER,5) GETVAR(PARP(NOD))	:S(S.VR3)
	MOVEI	14,Q10259
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10372
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10272
	FCALV$	^D1,F10534
	FCALV$	^D1,F10281
	MOVEM	1,@N10289
	JRST	L10582
Q10259:
;	FAILFL	= 1
	MOVE	^D1,K10347
	MOVEM	1,V10109
;	ITTYP	= 2
	MOVE	^D1,K10348
	MOVEM	1,ITTYP
;	ITATR	= ATRB(PARP(NOD))
	MOVEI	14,Q10260
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10534
	FCALV$	^D1,F10395
	DASGN$	2,ITATR
Q10260:
;	TLAB1	= ?GETATR() ?INE(XNATRB,XNFATR) 'F' INAM(PARP(NOD))
;.	:S(S.VR3)
	MOVEI	14,Q10261
	MOVEM	14,S$$FLP##
	FCALV$	^D0,GETATR
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,XNATRB
	JUMP	0,XNFATR
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,S10305
	PUSH	16,1
	MOVE	1,@N10272
	FCALV$	^D1,F10534
	FCALV$	^D1,F10360
	JSP	14,S$$CNC##
	EXP	^D2
	MOVEM	1,@N10289
	JRST	L10582
Q10261:
;	TLAB1	= XNAMTB[INAM(PARP(NOD))]
	MOVEI	14,Q10262
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10534
	FCALV$	^D1,F10360
	AREFV$	^D1,XNAMTB
	MOVEM	1,@N10289
Q10262:
;S.VR3	NPAR	= RSHIFT(PVAL(NOD),3)
L10582:
	MOVEI	14,Q10263
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10391
	DASGN$	2,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$RSH##
	JUMP	0,Q10001+^D0
	JUMP	0,K10357
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,V10098
Q10263:
;	TLAB1	= SUBS(EXPRAR<OPER + 2 * MODFLG + 16>,NPAR,TLAB1)
	MOVEI	14,Q10264
	MOVEM	14,S$$FLP##
	MOVE	^D1,V10104
	MOVE	^D2,K10348
	IMUL	^D2,V10108
	ADD	^D1,^D2
	ADD	^D1,K10456
	TLO	1,1B18
	TLZ	1,1B19
	AREFV$	^D1,EXPRAR
	PUSH	16,1
	MOVE	^D1,V10098
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	MOVE	1,@N10289
	FCALV$	^D3,SUBS
	MOVEM	1,@N10289
Q10264:
;	S.VR	= ?IEQ(NPAR,0) TLAB1	:S(RETURN)
	MOVEI	14,Q10265
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10098
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10289
	MOVEM	1,@N10297
	JRST	S$$SRT##
Q10265:
;	NOD	= NXTL(NOD)
	MOVEI	14,Q10266
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10482
	MOVEM	1,@N10272
Q10266:
;	S.VR	= E.EX(PARP(NOD))	:F(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10534
	FCALV$	^D1,F10286
	MOVEM	1,@N10297
;S.VR4	NPAR	= NPAR - 1
L10583:
	MOVE	^D1,V10098
	SUB	^D1,K10347
	MOVEM	1,V10098
;	S.VR	= ?IEQ(NPAR,0) NOD(S.VR,TLAB1)	:S(RETURN)
	MOVEI	14,Q10267
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10098
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10297
	PUSH	16,1
	MOVE	1,@N10289
	FCALV$	^D2,F10272
	MOVEM	1,@N10297
	JRST	S$$SRT##
Q10267:
;	NOD	= NXTL(NOD)
	MOVEI	14,Q10268
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10482
	MOVEM	1,@N10272
Q10268:
;	S.VR	= NOD(S.VR,NOD(EXPRAR<1>,E.EX(PARP(NOD))))
;.	:F(FRETURN)S(S.VR4)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10297
	PUSH	16,1
	MOVE	1,I10347
	AREFV$	^D1,EXPRAR
	PUSH	16,1
	MOVE	1,@N10272
	FCALV$	^D1,F10534
	FCALV$	^D1,F10286
	FCALV$	^D2,F10272
	FCALV$	^D2,F10272
	MOVEM	1,@N10297
	JRST	L10583
;*	*	*	*	*	*	*	*	*
;*		D.EX(NOD,MODFLG)ROPER,RTYPE DEDICATED EXPRESSION
;*	GENERATES CODE THAT RETURNS INTEGER (MODFLG=0) OR REAL
;*	(MODFLG=1) IN R1
;*
;D.EX	?INE(GTOPTY(OPTY(NOD)),5)	:F(S.EXE)
L10298:
	MOVEI	14,L10558
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	DASGN$	2,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,Q10001+^D0
	JUMP	0,K10372
	ADD	16,S$$STB##
	SETZ	1,
;	?ILT(OPER,30)	:F(D.EX1)
	MOVEI	14,L10584
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LTP##
	JUMP	0,V10104
	JUMP	0,K10497
	ADD	16,S$$STB##
	SETZ	1,
;* DEDICATED PRIMARY
;	D.EX	= D.PR(NOD,MODFLG)	:F(FRETURN)S(RETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	PUSH	16,1
	MOVE	^D1,V10108
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,F10299
	MOVEM	1,@N10298
	JRST	S$$SRT##
;D.EX1	?ILE(TYPE,1)	:F(D.EX2)
L10584:
	MOVEI	14,L10585
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10105
	JUMP	0,K10347
	ADD	16,S$$STB##
	SETZ	1,
;* PURE DEDICATED EXPRESSION
;	D.EX	= A.EX(NOD,MODFLG)	:F(FRETURN)S(RETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	PUSH	16,1
	MOVE	^D1,V10108
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,F10300
	MOVEM	1,@N10298
	JRST	S$$SRT##
;D.EX2	?IEQ(TYPE,4)	:F(D.EX3)
L10585:
	MOVEI	14,L10586
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10105
	JUMP	0,K10351
	ADD	16,S$$STB##
	SETZ	1,
;* DESCRIPTOR EXPRESSION
;	D.EX	= NOD(S.EX(NOD),ARITAR<1 + MODFLG>) :F(FRETURN)S(RETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10294
	PUSH	16,1
	MOVE	^D1,K10347
	ADD	^D1,V10108
	TLO	1,1B18
	TLZ	1,1B19
	AREFV$	^D1,ARITAR
	FCALV$	^D2,F10272
	MOVEM	1,@N10298
	JRST	S$$SRT##
;D.EX3	?IEQ(OPER,38)	:F(D.EX5)
L10586:
	MOVEI	14,L10587
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10444
	ADD	16,S$$STB##
	SETZ	1,
;* CONCATENATION OF ? AND DED EXPR (OR VICE VERSA), OR CONCATENATION
;* OF ? AND ?
;	(?GTOPTY(OPTY(LFTS(NOD))) ?IEQ(OPER,11))	:F(D.EX4)
	MOVEI	14,L10588
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10436
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10441
	ADD	16,S$$STB##
	SETZ	1,
;	D.EX	= NOD(S.EX(LFTS(NOD)),D.EX(RGTS(NOD),MODFLG))
;.	:F(FRETURN)S(RETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10436
	FCALV$	^D1,F10294
	PUSH	16,1
	MOVE	1,@N10272
	FCALV$	^D1,F10435
	PUSH	16,1
	MOVE	^D1,V10108
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,F10298
	FCALV$	^D2,F10272
	MOVEM	1,@N10298
	JRST	S$$SRT##
;D.EX4	D.EX	= NOD(NOD(D.EX(LFTS(NOD),MODFLG),ARITAR<3>),NOD(S.EX(
;.RGTS(NOD)),ARITAR<4>))	:F(FRETURN)S(RETURN)
L10588:
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10436
	PUSH	16,1
	MOVE	^D1,V10108
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,F10298
	PUSH	16,1
	MOVE	1,I10357
	AREFV$	^D1,ARITAR
	FCALV$	^D2,F10272
	PUSH	16,1
	MOVE	1,@N10272
	FCALV$	^D1,F10435
	FCALV$	^D1,F10294
	PUSH	16,1
	MOVE	1,I10351
	AREFV$	^D1,ARITAR
	FCALV$	^D2,F10272
	FCALV$	^D2,F10272
	MOVEM	1,@N10298
	JRST	S$$SRT##
;D.EX5	ROPER	= ?IGE(OPER,32) OPER	:F(D.EX7)
L10587:
	MOVEI	14,L10589
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$GEP##
	JUMP	0,V10104
	JUMP	0,K10554
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,V10104
	MOVEM	1,V10103
;* IMPURE DEDICATED *, /, +, -
;	RTYPE	= REMDR(TYPE,2)
	MOVEI	14,Q10269
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$RMD##
	JUMP	0,V10105
	JUMP	0,K10348
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,V10114
Q10269:
;	D.EX	= D.EX(LFTS(NOD),RTYPE)	:F(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10436
	PUSH	16,1
	MOVE	^D1,V10114
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,F10298
	MOVEM	1,@N10298
;	STR1	= RGTS(NOD)
	MOVEI	14,Q10270
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10435
	MOVEM	1,@N10267
Q10270:
;	(?GTOPTY(OPTY(STR1)) ?IGE(TYPE,2))	:F(D.EX6A)
	MOVEI	14,L10590
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$GEP##
	JUMP	0,V10105
	JUMP	0,K10348
	ADD	16,S$$STB##
	SETZ	1,
;* RIGHT SIDE IMPURE
;	D.EX	= NOD(NOD(D.EX,ARITAR<3>),NOD(D.EX(STR1,RTYPE),NOD(
;.ARITAR<5>,SUBS(ARITAR<ROPER - 26>,AROPAR<ROPER,RTYPE>)))) :F(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10298
	PUSH	16,1
	MOVE	1,I10357
	AREFV$	^D1,ARITAR
	FCALV$	^D2,F10272
	PUSH	16,1
	MOVE	1,@N10267
	PUSH	16,1
	MOVE	^D1,V10114
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,F10298
	PUSH	16,1
	MOVE	1,I10372
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	^D1,V10103
	SUB	^D1,K10521
	TLO	1,1B18
	TLZ	1,1B19
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	^D1,V10103
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	MOVE	^D1,V10114
	TLO	1,1B18
	TLZ	1,1B19
	AREFV$	^D2,AROPAR
	FCALV$	^D2,SUBS
	FCALV$	^D2,F10272
	FCALV$	^D2,F10272
	FCALV$	^D2,F10272
	MOVEM	1,@N10298
;* ADJUST TYPE IF NECESSARY
;D.EX6	D.EX	= ?INE(RTYPE,MODFLG) NOD(D.EX,ARITAR<10 + MODFLG>)
;.	:(RETURN)
L10591:
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10114
	JUMP	0,V10108
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10298
	PUSH	16,1
	MOVE	^D1,K10400
	ADD	^D1,V10108
	TLO	1,1B18
	TLZ	1,1B19
	AREFV$	^D1,ARITAR
	FCALV$	^D2,F10272
	MOVEM	1,@N10298
	JRST	S$$SRT##
;* RIGHT SIDE PURE
;D.EX6A	STR1	= A.EX(STR1,RTYPE,2)	:F(FRETURN)
L10590:
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	PUSH	16,1
	MOVE	^D1,V10114
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	MOVE	1,I10348
	FCALV$	^D3,F10300
	MOVEM	1,@N10267
;	D.EX	= ?DIFFER(STR1) NOD(D.EX,STR1)
	MOVEI	14,Q10271
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10071
	SETZ	1,
	MOVE	1,@N10298
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D2,F10272
	MOVEM	1,@N10298
Q10271:
;	D.EX	= ?IGE(ROPER,34) NOD(D.EX,SUBS(ARITAR<16>,
;.AROPAR<RSGN * (69 - ROPER) + (1 - RSGN) * ROPER,RTYPE>,SUBS(ARITAR<13>,
;.'1',RLOC)))	:S(D.EX6)
	MOVEI	14,Q10272
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$GEP##
	JUMP	0,V10103
	JUMP	0,K10556
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10298
	PUSH	16,1
	MOVE	1,I10456
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	^D1,V10113
	MOVE	^D2,K10592
	SUB	^D2,V10103
	IMUL	^D1,^D2
	MOVE	^D2,K10347
	SUB	^D2,V10113
	IMUL	^D2,V10103
	ADD	^D1,^D2
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	MOVE	^D1,V10114
	TLO	1,1B18
	TLZ	1,1B19
	AREFV$	^D2,AROPAR
	PUSH	16,1
	MOVE	1,I10574
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	1,S10593
	PUSH	16,1
	MOVE	1,@N10594
	FCALV$	^D3,SUBS
	FCALV$	^D3,SUBS
	FCALV$	^D2,F10272
	MOVEM	1,@N10298
	JRST	L10591
Q10272:
;	D.EX	= NOD(D.EX,SUBS(ARITAR<16>,AROPAR<ROPER,RTYPE>,SUBS(
;.ARITAR<13>,'1',RLOC)))
	MOVEI	14,Q10273
	MOVEM	14,S$$FLP##
	MOVE	1,@N10298
	PUSH	16,1
	MOVE	1,I10456
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	^D1,V10103
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	MOVE	^D1,V10114
	TLO	1,1B18
	TLZ	1,1B19
	AREFV$	^D2,AROPAR
	PUSH	16,1
	MOVE	1,I10574
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	1,S10593
	PUSH	16,1
	MOVE	1,@N10594
	FCALV$	^D3,SUBS
	FCALV$	^D3,SUBS
	FCALV$	^D2,F10272
	MOVEM	1,@N10298
Q10273:
;	D.EX	= ?INE(RSGN,0) NOD(D.EX,SUBS(ARITAR<17>,'1')) :(D.EX6)
	MOVEI	14,L10591
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10113
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10298
	PUSH	16,1
	MOVE	1,I10529
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	1,S10593
	FCALV$	^D2,SUBS
	FCALV$	^D2,F10272
	MOVEM	1,@N10298
	JRST	L10591
;* DEDICATED ** (ALWAYS IMPURE)
;D.EX7	RTYPE	= REMDR(TYPE,2)
L10589:
	MOVEI	14,Q10274
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$RMD##
	JUMP	0,V10105
	JUMP	0,K10348
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,V10114
Q10274:
;	D.EX	= D.EX(LFTS(NOD),RTYPE)	:F(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10436
	PUSH	16,1
	MOVE	^D1,V10114
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,F10298
	MOVEM	1,@N10298
;	ROPER	= RTYPE * 2
	MOVE	^D1,V10114
	IMUL	^D1,K10348
	MOVEM	1,V10103
;	I	= RTYPE
	MOVE	^D1,V10114
	MOVEM	1,V10096
;	STR1	= RGTS(NOD)
	MOVEI	14,Q10275
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10435
	MOVEM	1,@N10267
Q10275:
;	(?GTOPTY(OPTY(STR1)) ?IEQ(RTYPE,1) ?IEQ(REMDR(TYPE,2),0))
;.	:F(D.EX8)
	MOVEI	14,L10595
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10114
	JUMP	0,K10347
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$RMD##
	JUMP	0,V10105
	JUMP	0,K10348
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,Q10001+^D0
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
;	ROPER	= 1
	MOVE	^D1,K10347
	MOVEM	1,V10103
;	I	=
	MOVEI	14,Q10276
	MOVEM	14,S$$FLP##
	SETZM	V10096
Q10276:
;D.EX8	D.EX	= NOD(NOD(D.EX,ARITAR<3>),NOD(D.EX(STR1,I),NOD(ARITAR<5>
;.,ARITAR<18 + ROPER>)))	:(D.EX6)
L10595:
	MOVEI	14,L10591
	MOVEM	14,S$$FLP##
	MOVE	1,@N10298
	PUSH	16,1
	MOVE	1,I10357
	AREFV$	^D1,ARITAR
	FCALV$	^D2,F10272
	PUSH	16,1
	MOVE	1,@N10267
	PUSH	16,1
	MOVE	^D1,V10096
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,F10298
	PUSH	16,1
	MOVE	1,I10372
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	^D1,K10447
	ADD	^D1,V10103
	TLO	1,1B18
	TLZ	1,1B19
	AREFV$	^D1,ARITAR
	FCALV$	^D2,F10272
	FCALV$	^D2,F10272
	FCALV$	^D2,F10272
	MOVEM	1,@N10298
	JRST	L10591
;*	*	*	*	*	*	*	*	*
;*		D.PR(NOD,MODFLG)ROPER,RTYPE,TLAB1 DEDICATED PRIMARY
;*	GENERATES CODE THAT RETURNS INTEGER (MODFLG=0) OR REAL
;*	(MODFLG=1) IN R1
;*
;D.PR	?INE(GTOPTY(OPTY(NOD)),5)	:F(S.EXE)
L10299:
	MOVEI	14,L10558
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	DASGN$	2,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,Q10001+^D0
	JUMP	0,K10372
	ADD	16,S$$STB##
	SETZ	1,
;	?ILE(TYPE,1)	:F(D.PR1)
	MOVEI	14,L10596
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10105
	JUMP	0,K10347
	ADD	16,S$$STB##
	SETZ	1,
;* PURE DEDICATED EXPRESSION
;	D.PR	= A.EX(NOD,MODFLG)	:F(FRETURN)S(RETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	PUSH	16,1
	MOVE	^D1,V10108
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,F10300
	MOVEM	1,@N10299
	JRST	S$$SRT##
;D.PR1	?IEQ(TYPE,4)	:F(D.PR2)
L10596:
	MOVEI	14,L10597
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10105
	JUMP	0,K10351
	ADD	16,S$$STB##
	SETZ	1,
;* DESCRIPTOR PRIMARY
;	D.PR	= ?IEQ(OPER,0) SUBS(ARITAR<21 + MODFLG>,GETVAR(SBJT(
;.NOD)))	:S(RETURN)
	MOVEI	14,Q10277
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,K10434
	ADD	^D1,V10108
	TLO	1,1B18
	TLZ	1,1B19
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	FCALV$	^D1,F10281
	FCALV$	^D2,SUBS
	MOVEM	1,@N10299
	JRST	S$$SRT##
Q10277:
;	D.PR	= NOD(S.PR(NOD),ARITAR<1 + MODFLG>) :F(FRETURN)S(RETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10296
	PUSH	16,1
	MOVE	^D1,K10347
	ADD	^D1,V10108
	TLO	1,1B18
	TLZ	1,1B19
	AREFV$	^D1,ARITAR
	FCALV$	^D2,F10272
	MOVEM	1,@N10299
	JRST	S$$SRT##
;D.PR2	ROPER	= ?IGE(OPER,13) OPER	:F(D.PR3)
L10597:
	MOVEI	14,L10598
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$GEP##
	JUMP	0,V10104
	JUMP	0,K10574
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,V10104
	MOVEM	1,V10103
;* UNARY + OR -
;	D.PR	= D.PR(SBJT(NOD),MODFLG)	:F(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	PUSH	16,1
	MOVE	^D1,V10108
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,F10299
	MOVEM	1,@N10299
;	D.PR	= ?IEQ(ROPER,14) NOD(D.PR,SUBS(ARITAR<17>,'1'))
;.	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10103
	JUMP	0,K10525
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10299
	PUSH	16,1
	MOVE	1,I10529
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	1,S10593
	FCALV$	^D2,SUBS
	FCALV$	^D2,F10272
	MOVEM	1,@N10299
	JRST	S$$SRT##
;D.PR3	?IEQ(OPER,7)	:F(D.PR3A)
L10598:
	MOVEI	14,L10599
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10389
	ADD	16,S$$STB##
	SETZ	1,
;* PARENTHESIZED EXPR
;	D.PR	= D.EX(SBJT(NOD),MODFLG)	:F(FRETURN)S(RETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	PUSH	16,1
	MOVE	^D1,V10108
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,F10298
	MOVEM	1,@N10299
	JRST	S$$SRT##
;* FORTRAN FUNCTION CALL
;D.PR3A	ROPER	= TML
L10599:
	MOVE	^D1,V10110
	MOVEM	1,V10103
;	RTYPE	= TYPE - 2
	MOVE	^D1,V10105
	SUB	^D1,K10348
	MOVEM	1,V10114
;	FAILFL	= 1
	MOVE	^D1,K10347
	MOVEM	1,V10109
;	NOD	= SBJT(NOD)
	MOVEI	14,Q10278
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	MOVEM	1,@N10272
Q10278:
;	TLAB1	= XNAMTB[INAM(PARP(NOD))]
	MOVEI	14,Q10279
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10534
	FCALV$	^D1,F10360
	AREFV$	^D1,XNAMTB
	MOVEM	1,@N10289
Q10279:
;	TLAB1	= SUBS(ARITAR<23>,TLAB1)
	MOVEI	14,Q10280
	MOVEM	14,S$$FLP##
	MOVE	1,I10544
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	1,@N10289
	FCALV$	^D2,SUBS
	MOVEM	1,@N10289
Q10280:
;D.PR4	NOD	= NXTL(NOD)
L10600:
	MOVEI	14,Q10281
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10482
	MOVEM	1,@N10272
Q10281:
;	STR1	= ?DIFFER(NOD) PARP(NOD)	:F(D.PR11)
	MOVEI	14,L10601
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10071
	SETZ	1,
	MOVE	1,@N10272
	FCALV$	^D1,F10534
	MOVEM	1,@N10267
;	(?GTOPTY(OPTY(STR1)) ?IEQ(TYPE,5))	:S(S.EXE)
	MOVEI	14,Q10282
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10105
	JUMP	0,K10372
	ADD	16,S$$STB##
	SETZ	1,
	JRST	L10558
Q10282:
;	?ILE(TYPE,3)	:F(D.PR8)
	MOVEI	14,L10602
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10105
	JUMP	0,K10357
	ADD	16,S$$STB##
	SETZ	1,
;	TYPE	= ?ILE(OPER,3) ?INE(OPER,1) TYPE * 2	:F(D.PR6)
	MOVEI	14,L10603
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10104
	JUMP	0,K10357
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10104
	JUMP	0,K10347
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,V10105
	IMUL	^D1,K10348
	MOVEM	1,V10105
;	STR1	= SBJT(STR1)
	MOVEI	14,Q10283
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10387
	MOVEM	1,@N10267
Q10283:
;	RLOC	= ?IEQ(OPER,0) GETDVR(STR1)	:S(D.PR5)
	MOVEI	14,Q10284
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10267
	FCALV$	^D1,F10280
	MOVEM	1,@N10594
	JRST	L10604
Q10284:
;	RLOC	= ?IEQ(OPER,2) GETINT(STR1,-1)	:S(D.PR5)
	MOVEI	14,Q10285
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10348
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10267
	PUSH	16,1
	MOVN	^D1,K10347
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,F10275
	MOVEM	1,@N10594
	JRST	L10604
Q10285:
;	RLOC	= GETREL(STR1,-1)
	MOVEI	14,Q10286
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	PUSH	16,1
	MOVN	^D1,K10347
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,F10276
	MOVEM	1,@N10594
Q10286:
;D.PR5	TLAB1	= NOD(TLAB1,SUBS(ARITAR<24>,TYPE,RLOC))	:(D.PR4)
L10604:
	MOVEI	14,L10600
	MOVEM	14,S$$FLP##
	MOVE	1,@N10289
	PUSH	16,1
	MOVE	1,I10543
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	^D1,V10105
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	MOVE	1,@N10594
	FCALV$	^D3,SUBS
	FCALV$	^D2,F10272
	MOVEM	1,@N10289
	JRST	L10600
;D.PR6	TYPE	= REMDR(TYPE,2)
L10603:
	MOVEI	14,Q10287
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$RMD##
	JUMP	0,V10105
	JUMP	0,K10348
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,V10105
Q10287:
;	TLAB1	= NOD(TLAB1,SUBS(ARITAR<24>,TYPE * 2,SUBS(ARITAR<25>,
;.TEMLOC,TML)))
	MOVEI	14,Q10288
	MOVEM	14,S$$FLP##
	MOVE	1,@N10289
	PUSH	16,1
	MOVE	1,I10543
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	^D1,V10105
	IMUL	^D1,K10348
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	MOVE	1,I10464
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	1,@TEMLOC
	PUSH	16,1
	MOVE	^D1,V10110
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D3,SUBS
	FCALV$	^D3,SUBS
	FCALV$	^D2,F10272
	MOVEM	1,@N10289
Q10288:
;	TML	= TML + 1
	MOVE	^D1,V10110
	ADD	^D1,K10347
	MOVEM	1,V10110
;	STR1	= NOD(D.EX(STR1,TYPE),SUBS(VARBAR<2>,SUBS(ARITAR<25>,
;.TEMLOC,TML - 1)))	:F(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	PUSH	16,1
	MOVE	^D1,V10105
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,F10298
	PUSH	16,1
	MOVE	1,I10348
	AREFV$	^D1,VARBAR
	PUSH	16,1
	MOVE	1,I10464
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	1,@TEMLOC
	PUSH	16,1
	MOVE	^D1,V10110
	SUB	^D1,K10347
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D3,SUBS
	FCALV$	^D2,SUBS
	FCALV$	^D2,F10272
	MOVEM	1,@N10267
;D.PR7	D.PR	= ?DIFFER(D.PR) NOD(D.PR,STR1)	:S(D.PR4)
L10605:
	MOVEI	14,Q10289
	MOVEM	14,S$$FLP##
	MOVE	1,@N10299
	FCALV$	^D1,F10071
	SETZ	1,
	MOVE	1,@N10299
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D2,F10272
	MOVEM	1,@N10299
	JRST	L10600
Q10289:
;	D.PR	= STR1	:(D.PR4)
	MOVEI	14,L10600
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	MOVEM	1,@N10299
	JRST	L10600
;D.PR8	TYPE	= ?ILE(OPER,4) ?INE(OPER,1) 5	:F(D.PR10)
L10602:
	MOVEI	14,L10606
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10104
	JUMP	0,K10351
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10104
	JUMP	0,K10347
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,K10372
	MOVEM	1,V10105
;	STR1	= ?IEQ(OPER,4) SBJT(STR1)	:F(D.PR9)
	MOVEI	14,L10607
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10351
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10267
	FCALV$	^D1,F10387
	MOVEM	1,@N10267
;	RLOC	= ?DIFFER(STR1) SUBS(ARITAR<25>,'A' INAM(STR1),'1')
;.	:S(D.PR5)
	MOVEI	14,Q10290
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10071
	SETZ	1,
	MOVE	1,I10464
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	1,S10301
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D1,F10360
	JSP	14,S$$CNC##
	EXP	^D2
	PUSH	16,1
	MOVE	1,S10593
	FCALV$	^D3,SUBS
	MOVEM	1,@N10594
	JRST	L10604
Q10290:
;	P	= ?ERRMSG('NULL IS BAD ARG FOR FORTRAN') PVAL(NOD)
;.	:(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,S10608
	FCALV$	^D1,ERRMSG
	SETZ	1,
	MOVE	1,@N10272
	FCALV$	^D1,F10391
	DASGN$	2,P
	JRST	S$$FRT##
;D.PR9	STR2	= SBJT(STR1)
L10607:
	MOVEI	14,Q10291
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10387
	MOVEM	1,@N10268
Q10291:
;	ITATR	= ATRB(STR2)
	MOVEI	14,Q10292
	MOVEM	14,S$$FLP##
	MOVE	1,@N10268
	FCALV$	^D1,F10395
	DASGN$	2,ITATR
Q10292:
;	RLOC	= ?GETATR() ?IEQ(VDATRB,VDDATR) SUBS(ARITAR<25>,GETDVR(
;.STR2),'2')	:S(D.PR5)
	MOVEI	14,Q10293
	MOVEM	14,S$$FLP##
	FCALV$	^D0,GETATR
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,VDATRB
	JUMP	0,VDDATR
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,I10464
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	1,@N10268
	FCALV$	^D1,F10280
	PUSH	16,1
	MOVE	1,S10609
	FCALV$	^D3,SUBS
	MOVEM	1,@N10594
	JRST	L10604
Q10293:
;D.PR10	TLAB1	= NOD(TLAB1,SUBS(ARITAR<24>,'0',SUBS(ARITAR<25>,TEMLOC,
;.TML)))
L10606:
	MOVEI	14,Q10294
	MOVEM	14,S$$FLP##
	MOVE	1,@N10289
	PUSH	16,1
	MOVE	1,I10543
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	1,S10610
	PUSH	16,1
	MOVE	1,I10464
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	1,@TEMLOC
	PUSH	16,1
	MOVE	^D1,V10110
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D3,SUBS
	FCALV$	^D3,SUBS
	FCALV$	^D2,F10272
	MOVEM	1,@N10289
Q10294:
;	TML	= TML + 1
	MOVE	^D1,V10110
	ADD	^D1,K10347
	MOVEM	1,V10110
;	STR1	= NOD(S.EX(STR1),SUBS(VARBAR<5>,'2',SUBS(ARITAR<25>,
;.TEMLOC,TML - 1)))	:F(FRETURN)S(D.PR7)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10267
	FCALV$	^D1,F10294
	PUSH	16,1
	MOVE	1,I10372
	AREFV$	^D1,VARBAR
	PUSH	16,1
	MOVE	1,S10609
	PUSH	16,1
	MOVE	1,I10464
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	1,@TEMLOC
	PUSH	16,1
	MOVE	^D1,V10110
	SUB	^D1,K10347
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D3,SUBS
	FCALV$	^D3,SUBS
	FCALV$	^D2,F10272
	MOVEM	1,@N10267
	JRST	L10605
;* FINISHED
;D.PR11	MAXTMP	= ?IGT(TML,MAXTMP) TML
L10601:
	MOVEI	14,Q10295
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$GTP##
	JUMP	0,V10110
	JUMP	0,MAXTMP
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,V10110
	MOVEM	1,MAXTMP
Q10295:
;	TML	= ROPER
	MOVE	^D1,V10103
	MOVEM	1,V10110
;	TLAB1	= NOD(TLAB1,ARITAR<26>)
	MOVEI	14,Q10296
	MOVEM	14,S$$FLP##
	MOVE	1,@N10289
	PUSH	16,1
	MOVE	1,I10521
	AREFV$	^D1,ARITAR
	FCALV$	^D2,F10272
	MOVEM	1,@N10289
Q10296:
;	D.PR	= ?DIFFER(D.PR) NOD(D.PR,TLAB1)	:S(D.PR12)
	MOVEI	14,Q10297
	MOVEM	14,S$$FLP##
	MOVE	1,@N10299
	FCALV$	^D1,F10071
	SETZ	1,
	MOVE	1,@N10299
	PUSH	16,1
	MOVE	1,@N10289
	FCALV$	^D2,F10272
	MOVEM	1,@N10299
	JRST	L10611
Q10297:
;	D.PR	= TLAB1
	MOVEI	14,Q10298
	MOVEM	14,S$$FLP##
	MOVE	1,@N10289
	MOVEM	1,@N10299
Q10298:
;D.PR12	STR1	= ARITAR<27>
L10611:
	MOVEI	14,Q10299
	MOVEM	14,S$$FLP##
	MOVE	1,I10550
	AREFV$	^D1,ARITAR
	MOVEM	1,@N10267
Q10299:
;	STR1	= ?INE(MODFLG,RTYPE) NOD(STR1,ARITAR<10 + MODFLG>)
	MOVEI	14,Q10300
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10108
	JUMP	0,V10114
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10267
	PUSH	16,1
	MOVE	^D1,K10400
	ADD	^D1,V10108
	TLO	1,1B18
	TLZ	1,1B19
	AREFV$	^D1,ARITAR
	FCALV$	^D2,F10272
	MOVEM	1,@N10267
Q10300:
;	D.PR	= NOD(D.PR,STR1)	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10299
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D2,F10272
	MOVEM	1,@N10299
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;*		A.EX(NOD,MODFLG,RGL)ROPER,RTYPE,LSGN,LOPER PURE DEDI-
;*		CATED ARITHMETIC EXPRESSION
;*	GENERATES CODE, AND ASSURES RESULT IN R1 WITH NORMAL SIGN SENSE
;*	IF RGL=0, OTHERWISE RESULT IS IN RLOC, OF TYPE RTYP (0-REGIS-
;*	TER, 1-STORAGE), AND WITH SIGN SENSE RSGN (0-NORMAL, 1-
;*	REVERSED). OPERATIONS ARE AT REGISTER LEVEL RGL
;*
;A.EX	LOPER	= ?IEQ(RGL,0) 1	:F(A.EX1)
L10300:
	MOVEI	14,L10612
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10101
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,K10347
	MOVEM	1,V10102
;	RGL	= 1
	MOVE	^D1,K10347
	MOVEM	1,V10101
;A.EX1	RTYPE	= REMDR(GTOPTY(OPTY(NOD)),2)
L10612:
	MOVEI	14,Q10301
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10384
	FCALV$	^D1,F10282
	DASGN$	2,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$RMD##
	JUMP	0,Q10001+^D0
	JUMP	0,K10348
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,V10114
Q10301:
;	ROPER	= OPER
	MOVE	^D1,V10104
	MOVEM	1,V10103
;	?IGT(RGL,MAXLVL)	:F(A.EX2)
	MOVEI	14,L10613
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$GTP##
	JUMP	0,V10101
	JUMP	0,V10107
	ADD	16,S$$STB##
	SETZ	1,
;	P	= ?ERRMSG('NESTING TOO DEEP, SIMPLIFY EXPR') GTPVAL(NOD)
;.	:(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,S10614
	FCALV$	^D1,ERRMSG
	SETZ	1,
	MOVE	1,@N10272
	FCALV$	^D1,F10283
	DASGN$	2,P
	JRST	S$$FRT##
;A.EX2	?IGE(OPER,32)	:F(A.EX8)
L10613:
	MOVEI	14,L10615
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$GEP##
	JUMP	0,V10104
	JUMP	0,K10554
	ADD	16,S$$STB##
	SETZ	1,
;	A.EX	= A.EX(LFTS(NOD),RTYPE,RGL)	:F(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10436
	PUSH	16,1
	MOVE	^D1,V10114
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	MOVE	^D1,V10101
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D3,F10300
	MOVEM	1,@N10300
;	A.EX	= ?INE(RTYP,0) SUBS(ARITAR<16>,ARITAR<14 + RSGN>,SUBS(
;.ARITAR<13>,RGL,RLOC))	:F(A.EX3)
	MOVEI	14,L10616
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10112
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,I10456
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	^D1,K10525
	ADD	^D1,V10113
	TLO	1,1B18
	TLZ	1,1B19
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	1,I10574
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	^D1,V10101
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	MOVE	1,@N10594
	FCALV$	^D3,SUBS
	FCALV$	^D3,SUBS
	MOVEM	1,@N10300
;	RSGN	=
	MOVEI	14,Q10302
	MOVEM	14,S$$FLP##
	SETZM	V10113
Q10302:
;A.EX3	LSGN	= RSGN
L10616:
	MOVE	^D1,V10113
	MOVEM	1,V10111
;	STR1	= A.EX(RGTS(NOD),RTYPE,RGL + 1)	:F(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10435
	PUSH	16,1
	MOVE	^D1,V10114
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	MOVE	^D1,V10101
	ADD	^D1,K10347
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D3,F10300
	MOVEM	1,@N10267
;	A.EX	= ?IEQ(RTYP,0) NOD(A.EX,STR1)
	MOVEI	14,Q10303
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10112
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10300
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D2,F10272
	MOVEM	1,@N10300
Q10303:
;	A.EX	= ?ILE(ROPER,33) NOD(A.EX,SUBS(ARITAR<16>,AROPAR<ROPER,
;.RTYPE>,SUBS(ARITAR<13>,RGL,RLOC)))	:F(A.EX4)
	MOVEI	14,L10617
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10103
	JUMP	0,K10555
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10300
	PUSH	16,1
	MOVE	1,I10456
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	^D1,V10103
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	MOVE	^D1,V10114
	TLO	1,1B18
	TLZ	1,1B19
	AREFV$	^D2,AROPAR
	PUSH	16,1
	MOVE	1,I10574
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	^D1,V10101
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	MOVE	1,@N10594
	FCALV$	^D3,SUBS
	FCALV$	^D3,SUBS
	FCALV$	^D2,F10272
	MOVEM	1,@N10300
;	RSGN	= XOR(RSGN,LSGN)	:(A.EX5)
	MOVEI	14,L10618
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$XOR##
	JUMP	0,V10113
	JUMP	0,V10111
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,V10113
	JRST	L10618
;A.EX4	A.EX	= NOD(A.EX,SUBS(ARITAR<16>,AROPAR<34 + XOR(ROPER - 34,
;.XOR(LSGN,RSGN)),RTYPE>,SUBS(ARITAR<13>,RGL,RLOC)))
L10617:
	MOVEI	14,Q10304
	MOVEM	14,S$$FLP##
	MOVE	1,@N10300
	PUSH	16,1
	MOVE	1,I10456
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	^D1,K10556
	PUSH	17,1
	MOVE	^D1,V10103
	SUB	^D1,K10556
	MOVEM	1,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$XOR##
	JUMP	0,V10111
	JUMP	0,V10113
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,Q10001+^D1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$XOR##
	JUMP	0,Q10001+^D0
	JUMP	0,Q10001+^D1
	ADD	16,S$$STB##
	MOVE	1,0
	POP	17,0
	ADD	^D1,0
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	MOVE	^D1,V10114
	TLO	1,1B18
	TLZ	1,1B19
	AREFV$	^D2,AROPAR
	PUSH	16,1
	MOVE	1,I10574
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	^D1,V10101
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	MOVE	1,@N10594
	FCALV$	^D3,SUBS
	FCALV$	^D3,SUBS
	FCALV$	^D2,F10272
	MOVEM	1,@N10300
Q10304:
;	RSGN	= LSGN
	MOVE	^D1,V10111
	MOVEM	1,V10113
;A.EX5	RTYP	=
L10618:
	MOVEI	14,Q10305
	MOVEM	14,S$$FLP##
	SETZM	V10112
Q10305:
;	RLOC	= SUBS(ARITAR<12>,RGL)
	MOVEI	14,Q10306
	MOVEM	14,S$$FLP##
	MOVE	1,I10343
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	^D1,V10101
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,SUBS
	MOVEM	1,@N10594
Q10306:
;A.EX6	?INE(MODFLG,RTYPE)	:F(A.EX7)
L10619:
	MOVEI	14,L10620
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10108
	JUMP	0,V10114
	ADD	16,S$$STB##
	SETZ	1,
;	A.EX	= ?IEQ(RGL,1) NOD(A.EX,ARITAR<10 + MODFLG>) :S(A.EX7)
	MOVEI	14,Q10307
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10101
	JUMP	0,K10347
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10300
	PUSH	16,1
	MOVE	^D1,K10400
	ADD	^D1,V10108
	TLO	1,1B18
	TLZ	1,1B19
	AREFV$	^D1,ARITAR
	FCALV$	^D2,F10272
	MOVEM	1,@N10300
	JRST	L10620
Q10307:
;	A.EX	= NOD(A.EX,SUBS(ARITAR<28>,RGL))	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10300
	PUSH	16,1
	MOVE	1,I10551
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	^D1,V10101
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,SUBS
	FCALV$	^D2,F10272
	MOVEM	1,@N10300
	JRST	S$$SRT##
;A.EX7	A.EX	= ?IEQ(LOPER,1) ?INE(RSGN,0) NOD(A.EX,SUBS(ARITAR<17>,
;.RGL))	:F(RETURN)
L10620:
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10102
	JUMP	0,K10347
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10113
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10300
	PUSH	16,1
	MOVE	1,I10529
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	^D1,V10101
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,SUBS
	FCALV$	^D2,F10272
	MOVEM	1,@N10300
;	RSGN	=	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	SETZM	V10113
	JRST	S$$SRT##
;A.EX8	?ILE(OPER,3)	:F(A.EX11)
L10615:
	MOVEI	14,L10621
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$LEP##
	JUMP	0,V10104
	JUMP	0,K10357
	ADD	16,S$$STB##
	SETZ	1,
;	STR1	= SBJT(NOD)
	MOVEI	14,Q10308
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	MOVEM	1,@N10267
Q10308:
;	RLOC	= ?IEQ(OPER,0) GETDVR(STR1)	:S(A.EX9)
	MOVEI	14,Q10309
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10267
	FCALV$	^D1,F10280
	MOVEM	1,@N10594
	JRST	L10622
Q10309:
;	RLOC	= ?IEQ(OPER,2) GETINT(STR1)	:S(A.EX9)
	MOVEI	14,Q10310
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10348
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10267
	FCALV$	^D1,F10275
	MOVEM	1,@N10594
	JRST	L10622
Q10310:
;	RLOC	= ?IEQ(OPER,3) GETREL(STR1)	:S(A.EX9)
	MOVEI	14,Q10311
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10357
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@N10267
	FCALV$	^D1,F10276
	MOVEM	1,@N10594
	JRST	L10622
Q10311:
;	RLOC	= SUBS(VARBAR<1>,STR1)
	MOVEI	14,Q10312
	MOVEM	14,S$$FLP##
	MOVE	1,I10347
	AREFV$	^D1,VARBAR
	PUSH	16,1
	MOVE	1,@N10267
	FCALV$	^D2,SUBS
	MOVEM	1,@N10594
Q10312:
;A.EX9	RTYP	= 1
L10622:
	MOVE	^D1,K10347
	MOVEM	1,V10112
;	RSGN	=
	MOVEI	14,Q10313
	MOVEM	14,S$$FLP##
	SETZM	V10113
Q10313:
;	(?INE(LOPER,1) ?IEQ(MODFLG,RTYPE))	:S(RETURN)
	MOVEI	14,Q10314
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10102
	JUMP	0,K10347
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10108
	JUMP	0,V10114
	ADD	16,S$$STB##
	SETZ	1,
	JRST	S$$SRT##
Q10314:
;A.EX10	A.EX	= SUBS(ARITAR<16>,ARITAR<14 + RSGN>,SUBS(ARITAR<13>,
;.RGL,RLOC))
L10623:
	MOVEI	14,Q10315
	MOVEM	14,S$$FLP##
	MOVE	1,I10456
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	^D1,K10525
	ADD	^D1,V10113
	TLO	1,1B18
	TLZ	1,1B19
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	1,I10574
	AREFV$	^D1,ARITAR
	PUSH	16,1
	MOVE	^D1,V10101
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	MOVE	1,@N10594
	FCALV$	^D3,SUBS
	FCALV$	^D3,SUBS
	MOVEM	1,@N10300
Q10315:
;	RSGN	=	:(A.EX5)
	MOVEI	14,L10618
	MOVEM	14,S$$FLP##
	SETZM	V10113
	JRST	L10618
;A.EX11	ROPER	= ?IEQ(OPER,7) 13
L10621:
	MOVEI	14,Q10316
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10104
	JUMP	0,K10389
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,K10574
	MOVEM	1,V10103
Q10316:
;	A.EX	= A.EX(SBJT(NOD),MODFLG,RGL)	:F(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@N10272
	FCALV$	^D1,F10387
	PUSH	16,1
	MOVE	^D1,V10108
	TLO	1,1B18
	TLZ	1,1B19
	PUSH	16,1
	MOVE	^D1,V10101
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D3,F10300
	MOVEM	1,@N10300
;	RSGN	= XOR(RSGN,ROPER - 13)
	MOVEI	14,Q10317
	MOVEM	14,S$$FLP##
	MOVE	^D1,V10103
	SUB	^D1,K10574
	MOVEM	1,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$XOR##
	JUMP	0,V10113
	JUMP	0,Q10001+^D0
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,V10113
Q10317:
;	RTYPE	= ?IEQ(LOPER,1) MODFLG	:F(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10102
	JUMP	0,K10347
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,V10108
	MOVEM	1,V10114
;	?IEQ(RTYP,0)	:F(A.EX10)S(A.EX6)
	MOVEI	14,L10623
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10112
	JUMP	0,K10341
	ADD	16,S$$STB##
	SETZ	1,
	JRST	L10619
;*	*	*	*	*	*	*	*	*
;END
	JRST	S$$SXT##
Q10001:	BLOCK	^D2
K10341:	EXP	^D0
I10341:	EXP	^D0!1B0
K10343:	EXP	^D12
I10343:	EXP	^D12!1B0
K10347:	EXP	^D1
I10347:	EXP	^D1!1B0
K10348:	EXP	^D2
I10348:	EXP	^D2!1B0
K10351:	EXP	^D4
I10351:	EXP	^D4!1B0
K10357:	EXP	^D3
I10357:	EXP	^D3!1B0
K10359:	EXP	^D9
I10359:	EXP	^D9!1B0
K10367:	EXP	^D6
I10367:	EXP	^D6!1B0
K10372:	EXP	^D5
I10372:	EXP	^D5!1B0
K10389:	EXP	^D7
I10389:	EXP	^D7!1B0
K10399:	EXP	^D8
I10399:	EXP	^D8!1B0
K10400:	EXP	^D10
I10400:	EXP	^D10!1B0
K10420:	EXP	^D42
K10429:	EXP	^D63
K10431:	EXP	^D15
I10431:	EXP	^D15!1B0
K10432:	EXP	^D19
I10432:	EXP	^D19!1B0
K10433:	EXP	^D20
I10433:	EXP	^D20!1B0
K10434:	EXP	^D21
I10434:	EXP	^D21!1B0
K10441:	EXP	^D11
I10441:	EXP	^D11!1B0
K10444:	EXP	^D38
K10447:	EXP	^D18
I10447:	EXP	^D18!1B0
K10453:	EXP	^D36
K10456:	EXP	^D16
I10456:	EXP	^D16!1B0
K10459:	EXP	^D262143
K10460:	EXP	^D262144
K10464:	EXP	^D25
I10464:	EXP	^D25!1B0
K10466:	EXP	^D56
K10471:	EXP	^D48
I10472:	EXP	^D44!1B0
I10487:	EXP	^D29!1B0
K10488:	EXP	^D1048576
K10490:	EXP	^D524288
K10497:	EXP	^D30
I10497:	EXP	^D30!1B0
K10511:	EXP	^D35
K10513:	EXP	^D40
K10521:	EXP	^D26
I10521:	EXP	^D26!1B0
K10525:	EXP	^D14
I10525:	EXP	^D14!1B0
K10529:	EXP	^D17
I10529:	EXP	^D17!1B0
I10541:	EXP	^D22!1B0
I10543:	EXP	^D24!1B0
I10544:	EXP	^D23!1B0
I10550:	EXP	^D27!1B0
I10551:	EXP	^D28!1B0
I10553:	EXP	^D31!1B0
K10554:	EXP	^D32
I10554:	EXP	^D32!1B0
K10555:	EXP	^D33
I10555:	EXP	^D33!1B0
K10556:	EXP	^D34
I10556:	EXP	^D34!1B0
K10574:	EXP	^D13
I10574:	EXP	^D13!1B0
K10592:	EXP	^D69
S10007:	POINT	7,A10007,35
A10007:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'END'
F10042:	BYTE	(4)4(4)0(5)^D16(5)0(18)P$$APL##
F10043:	BYTE	(4)4(4)0(5)^D16(5)0(18)P$$ITM##
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##
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##
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##
V10095:	EXP	0
V10096:	EXP	0
A10096:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	'I'
V10097:	EXP	0
V10098:	EXP	0
A10098:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'NPAR'
V10099:	EXP	0
V10100:	EXP	0
V10101:	EXP	0
A10101:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'RGL'
V10102:	EXP	0
A10102:	BYTE	(2)2(16)^D1+1(18)^D5
	ASCII	'LOPER'
V10103:	EXP	0
A10103:	BYTE	(2)2(16)^D1+1(18)^D5
	ASCII	'ROPER'
V10104:	EXP	0
V10105:	EXP	0
V10106:	EXP	0
A10106:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'RSTFLG'
V10107:	EXP	0
A10107:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'MAXLVL'
V10108:	EXP	0
A10108:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'MODFLG'
V10109:	EXP	0
A10109:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'FAILFL'
V10110:	EXP	0
V10111:	EXP	0
A10111:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'LSGN'
V10112:	EXP	0
V10113:	EXP	0
V10114:	EXP	0
A10114:	BYTE	(2)2(16)^D1+1(18)^D5
	ASCII	'RTYPE'
V10115:	EXP	0
A10115:	BYTE	(2)2(16)^D1+1(18)^D2
	ASCII	'TP'
V10116:	EXP	0
A10117:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'INIEXE'
A10118:	BYTE	(2)2(16)^D2+1(18)^D8
	ASCII	'INIEXE()'
A10119:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'EXECPH'
A10120:	BYTE	(2)2(16)^D12+1(18)^D59
	ASCII	'EXECPH()VARCOD,PATCOD,OBJCOD,STACOD,GOTCOD,EVLCOD,STR1,STR2'
A10151:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	'C'
A10261:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'VARCOD'
A10262:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'PATCOD'
A10263:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'OBJCOD'
A10264:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'STACOD'
A10265:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'GOTCOD'
A10266:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'EVLCOD'
A10267:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'STR1'
A10268:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'STR2'
A10269:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'PR.X'
A10270:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'PR.U'
A10271:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'PR.L'
A10272:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'NOD'
A10273:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'DEFSTR'
A10274:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'GETLIT'
A10275:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'GETINT'
A10276:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'GETREL'
A10277:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'DEFLAB'
A10278:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'GETLAB'
A10279:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'DEFVAR'
A10280:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'GETDVR'
A10281:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'GETVAR'
A10282:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'GTOPTY'
A10283:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'GTPVAL'
A10284:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'PUTTRE'
A10285:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'G.EX'
A10286:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'E.EX'
A10287:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'V.EX'
A10288:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'P.EX'
A10289:	BYTE	(2)2(16)^D1+1(18)^D5
	ASCII	'TLAB1'
A10290:	BYTE	(2)2(16)^D1+1(18)^D5
	ASCII	'TLAB2'
A10291:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'P.VR'
A10292:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'U.EX'
A10293:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'FUNC'
A10294:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'S.EX'
A10295:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'DEDVAR'
A10296:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'S.PR'
A10297:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'S.VR'
A10298:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'D.EX'
A10299:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'D.PR'
A10300:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'A.EX'
A10301:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	'A'
A10302:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	'B'
A10303:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	'D'
A10304:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	'E'
A10305:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	'F'
A10306:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	'G'
S10307:	POINT	7,A10307,35
A10307:	BYTE	(2)2(16)^D3+1(18)^D14
	ASCII	'PR.X()TP,ROPER'
S10308:	POINT	7,A10308,35
A10308:	BYTE	(2)2(16)^D3+1(18)^D14
	ASCII	'PR.U()TP,ROPER'
S10309:	POINT	7,A10309,35
A10309:	BYTE	(2)2(16)^D5+1(18)^D23
	ASCII	'PR.L()NOD,NPAR,TP,ROPER'
S10310:	POINT	7,A10310,35
A10310:	BYTE	(2)2(16)^D3+1(18)^D12
	ASCII	'DEFSTR(STR1)'
S10311:	POINT	7,A10311,35
A10311:	BYTE	(2)2(16)^D3+1(18)^D12
	ASCII	'GETLIT(STR1)'
S10312:	POINT	7,A10312,35
A10312:	BYTE	(2)2(16)^D4+1(18)^D19
	ASCII	'GETINT(STR1,MODFLG)'
S10313:	POINT	7,A10313,35
A10313:	BYTE	(2)2(16)^D4+1(18)^D19
	ASCII	'GETREL(STR1,MODFLG)'
S10314:	POINT	7,A10314,35
A10314:	BYTE	(2)2(16)^D2+1(18)^D8
	ASCII	'DEFLAB()'
S10315:	POINT	7,A10315,35
A10315:	BYTE	(2)2(16)^D2+1(18)^D8
	ASCII	'GETLAB()'
S10316:	POINT	7,A10316,35
A10316:	BYTE	(2)2(16)^D2+1(18)^D8
	ASCII	'DEFVAR()'
S10317:	POINT	7,A10317,35
A10317:	BYTE	(2)2(16)^D3+1(18)^D12
	ASCII	'GETDVR(STR1)'
S10318:	POINT	7,A10318,35
A10318:	BYTE	(2)2(16)^D3+1(18)^D12
	ASCII	'GETVAR(STR1)'
S10319:	POINT	7,A10319,35
A10319:	BYTE	(2)2(16)^D2+1(18)^D9
	ASCII	'GTOPTY(I)'
S10320:	POINT	7,A10320,35
A10320:	BYTE	(2)2(16)^D3+1(18)^D11
	ASCII	'GTPVAL(NOD)'
S10321:	POINT	7,A10321,35
A10321:	BYTE	(2)2(16)^D3+1(18)^D11
	ASCII	'PUTTRE(NOD)'
S10322:	POINT	7,A10322,35
A10322:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'G.EX()'
S10323:	POINT	7,A10323,35
A10323:	BYTE	(2)2(16)^D6+1(18)^D27
	ASCII	'E.EX(NOD)NPAR,RSTFLG,EVLCOD'
S10324:	POINT	7,A10324,35
A10324:	BYTE	(2)2(16)^D2+1(18)^D9
	ASCII	'V.EX(NOD)'
S10325:	POINT	7,A10325,35
A10325:	BYTE	(2)2(16)^D6+1(18)^D26
	ASCII	'P.EX(NOD,ROPER)TLAB1,TLAB2'
S10326:	POINT	7,A10326,35
A10326:	BYTE	(2)2(16)^D3+1(18)^D14
	ASCII	'P.VR(NOD)ROPER'
S10327:	POINT	7,A10327,35
A10327:	BYTE	(2)2(16)^D6+1(18)^D27
	ASCII	'U.EX(NOD,FUNC,MAXLVL)FAILFL'
S10328:	POINT	7,A10328,35
A10328:	BYTE	(2)2(16)^D4+1(18)^D20
	ASCII	'S.EX(NOD,DEDVAR)NPAR'
S10329:	POINT	7,A10329,35
A10329:	BYTE	(2)2(16)^D3+1(18)^D14
	ASCII	'S.PR(NOD)ROPER'
S10330:	POINT	7,A10330,35
A10330:	BYTE	(2)2(16)^D6+1(18)^D26
	ASCII	'S.VR(NOD,MODFLG)TLAB1,NPAR'
S10331:	POINT	7,A10331,35
A10331:	BYTE	(2)2(16)^D6+1(18)^D27
	ASCII	'D.EX(NOD,MODFLG)ROPER,RTYPE'
S10332:	POINT	7,A10332,35
A10332:	BYTE	(2)2(16)^D7+1(18)^D33
	ASCII	'D.PR(NOD,MODFLG)ROPER,RTYPE,TLAB1'
S10333:	POINT	7,A10333,35
A10333:	BYTE	(2)2(16)^D9+1(18)^D42
	ASCII	'A.EX(NOD,MODFLG,RGL)ROPER,RTYPE,LSGN,LOPER'
S10334:	POINT	7,A10334,35
A10334:	BYTE	(2)2(16)^D3+1(18)^D14
	ASCII	'SYM(INAM,ATRB)'
S10335:	POINT	7,A10335,35
A10335:	BYTE	(2)2(16)^D3+1(18)^D14
	ASCII	'CRS(NEXT,CRSI)'
S10336:	POINT	7,A10336,35
A10336:	BYTE	(2)2(16)^D3+1(18)^D14
	ASCII	'NOD(FRNT,BACK)'
S10337:	POINT	7,A10337,35
A10337:	BYTE	(2)2(16)^D4+1(18)^D19
	ASCII	'BON(OPTY,LFTS,RGTS)'
S10338:	POINT	7,A10338,35
A10338:	BYTE	(2)2(16)^D4+1(18)^D19
	ASCII	'ELN(OPTY,SBJT,PVAL)'
S10339:	POINT	7,A10339,35
A10339:	BYTE	(2)2(16)^D4+1(18)^D19
	ASCII	'PLN(NXTL,PARP,PVAL)'
N10340:	BYTE	(4)4(14)0(18)Q10318+^D43
S10342:	POINT	7,A10342,35
A10342:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	':'
S10345:	POINT	7,A10345,35
A10345:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'.MAIN.'
N10352:	BYTE	(4)4(14)0(18)Q10318+^D44
A10355:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'CRSI'
A10358:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'NEXT'
A10360:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'INAM'
N10362:	BYTE	(4)4(14)0(18)Q10318+^D45
S10368:	POINT	7,A10368,35
A10368:	BYTE	(2)2(16)^D5+1(18)^D24
	ASCII	'MULTIPLY-DEFINED LABEL: '
S10369:	POINT	7,A10369,35
A10369:	BYTE	(2)2(16)^D2+1(18)^D9
	ASCII	', IGNORED'
S10373:	POINT	7,A10373,35
A10373:	BYTE	(2)2(16)^D4+1(18)^D16
	ASCII	'NO END STATEMENT'
A10384:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'OPTY'
A10387:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'SBJT'
S10390:	POINT	7,A10390,35
A10390:	BYTE	(2)2(16)^D7+1(18)^D31
	ASCII	'ASSIGNMENT TO PROTECTED KEYWORD'
A10391:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'PVAL'
S10394:	POINT	7,A10394,35
A10394:	BYTE	(2)2(16)^D7+1(18)^D35
	ASCII	'ILLEGAL ASSIGNMENT TO DEDICATED VAR'
A10395:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'ATRB'
S10398:	POINT	7,A10398,35
A10398:	BYTE	(2)2(16)^D7+1(18)^D33
	ASCII	'IMPROPER USE OF PATTERN PRIMITIVE'
N10405:	BYTE	(4)4(14)0(18)Q10318+^D46
B10407:	EXP	^D0
	XWD	^D0,^D0
	XWD	^D0,^D512
	XWD	^D0,^D4096
A10407:	BYTE	(2)2(16)^D1+1(18)^D2
	ASCII	'SF'
S10413:	POINT	7,A10413,35
A10413:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	'S'
S10418:	POINT	7,A10418,35
A10418:	BYTE	(2)2(16)^D3+1(18)^D15
	ASCII	'ERROR IN SYNTAX'
A10422:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'BON'
B10424:	EXP	^D2
	XWD	^D0,^D9
	XWD	^D0,^D32780
	XWD	^D0,^D12
A10424:	BYTE	(2)2(16)^D2+1(18)^D8
	ASCII	'^*/+-.$!'
S10425:	POINT	7,A10425,35
A10425:	BYTE	(2)2(16)^D1+1(18)^D2
	ASCII	'**'
A10435:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'RGTS'
A10436:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'LFTS'
S10439:	POINT	7,A10439,35
A10439:	BYTE	(2)2(16)^D6+1(18)^D26
	ASCII	'IMPROPER TYPE FOR OPERATOR'
B10443:	EXP	^D8
	XWD	^D0,^D32900
	XWD	^D0,^D192
	XWD	^D0,^D32768
A10443:	BYTE	(2)2(16)^D2+1(18)^D7
	ASCII	':=_)>],'
S10445:	POINT	7,A10445,35
A10445:	BYTE	(2)2(16)^D5+1(18)^D22
	ASCII	'UNRECOGNIZABLE ELEMENT'
A10449:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'ELN'
S10450:	POINT	7,A10450,35
A10450:	BYTE	(2)2(16)^D5+1(18)^D22
	ASCII	'UNRECOGNIZABLE KEYWORD'
N10451:	BYTE	(4)4(14)0(18)Q10318+^D47
B10454:	EXP	^D0
	XWD	^D0,^D0
	XWD	^D0,^D8
	XWD	^D0,^D0
S10454:	POINT	7,A10454,35
A10454:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	'.'
N10458:	BYTE	(4)4(14)0(18)Q10318+^D48
A10461:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'SYM'
B10462:	EXP	^D112
	XWD	^D0,^D112
	XWD	^D0,^D48
	XWD	^D0,^D48
A10462:	BYTE	(2)2(16)^D2+1(18)^D10
	ASCII	'0123456789'
S10463:	POINT	7,A10463,35
A10463:	BYTE	(2)2(16)^D1+1(18)^D2
	ASCII	'0.'
B10467:	EXP	^D132
	XWD	^D0,^D0
	XWD	^D0,^D0
	XWD	^D0,^D16384
A10467:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'(<['
S10469:	POINT	7,A10469,35
A10469:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	'('
S10474:	POINT	7,A10474,35
A10474:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	'<'
S10475:	POINT	7,A10475,35
A10475:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	'>'
S10477:	POINT	7,A10477,35
A10477:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	']'
S10478:	POINT	7,A10478,35
A10478:	BYTE	(2)2(16)^D7+1(18)^D34
	ASCII	'UNBALANCED EXPRESSION OR PARM LIST'
S10479:	POINT	7,A10479,35
A10479:	BYTE	(2)2(16)^D7+1(18)^D32
	ASCII	'ILLEGAL ARRAY REF, DEDICATED VAR'
A10480:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'PLN'
B10481:	EXP	^D0
	XWD	^D0,^D32772
	XWD	^D0,^D128
	XWD	^D0,^D0
A10481:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	')>]'
A10482:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'NXTL'
S10485:	POINT	7,A10485,35
A10485:	BYTE	(2)2(16)^D7+1(18)^D33
	ASCII	'TOO MANY (>15) PARAMETERS IN LIST'
S10489:	POINT	7,A10489,35
A10489:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	'K'
S10492:	POINT	7,A10492,35
A10492:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	'R'
S10493:	POINT	7,A10493,35
A10493:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	'L'
S10494:	POINT	7,A10494,35
A10494:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	'V'
S10496:	POINT	7,A10496,35
A10496:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	'N'
A10498:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'FRNT'
A10499:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'BACK'
S10504:	POINT	7,A10504,35
A10504:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	'$'
S10507:	POINT	7,A10507,35
A10507:	BYTE	(2)2(16)^D3+1(18)^D15
	ASCII	'BAD GOTO SYNTAX'
A10534:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'PARP'
S10537:	POINT	7,A10537,35
A10537:	BYTE	(2)2(16)^D8+1(18)^D36
	ASCII	'IMPROPER ARG(S) TO PATTERN PRIMITIVE'
S10559:	POINT	7,A10559,35
A10559:	BYTE	(2)2(16)^D5+1(18)^D23
	ASCII	'BAD CONTEXT FOR PATTERN'
S10580:	POINT	7,A10580,35
A10580:	BYTE	(2)2(16)^D6+1(18)^D27
	ASCII	'ILLEGAL VARIABLE EXPRESSION'
S10593:	POINT	7,A10593,35
A10593:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	'1'
N10594:	BYTE	(4)4(14)0(18)Q10318+^D49
S10608:	POINT	7,A10608,35
A10608:	BYTE	(2)2(16)^D6+1(18)^D27
	ASCII	'NULL IS BAD ARG FOR FORTRAN'
S10609:	POINT	7,A10609,35
A10609:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	'2'
S10610:	POINT	7,A10610,35
A10610:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	'0'
S10614:	POINT	7,A10614,35
A10614:	BYTE	(2)2(16)^D7+1(18)^D31
	ASCII	'NESTING TOO DEEP, SIMPLIFY EXPR'
Q10318:	BYTE	(2)2(16)^D49+1(18)0
	REPEAT	^D49,<0>
Q10319:	BYTE	(2)2(16)^D137*4+1(18)-^D137
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10534,35
F10534:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10499,35
F10499:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10498,35
F10498:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10482,35
F10482:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10480,35
F10480:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10461,35
F10461:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10449,35
F10449:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10436,35
F10436:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10435,35
F10435:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10422,35
F10422:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10395,35
F10395:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10391,35
F10391:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10387,35
F10387:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10384,35
F10384:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10360,35
F10360:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10358,35
F10358:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10355,35
F10355:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10306,35
	JRST	L10306
	EXP	0
	BYTE	(5)3(31)0
S10305:	POINT	7,A10305,35
	JRST	L10305
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10304,35
	JRST	L10304
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10303,35
	JRST	L10303
	EXP	0
	BYTE	(5)3(31)0
S10302:	POINT	7,A10302,35
	JRST	L10302
	EXP	0
	BYTE	(5)3(31)0
S10301:	POINT	7,A10301,35
	JRST	L10301
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10300,35
F10300:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10300,35
	JRST	L10300
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10300,35
N10300:	BYTE	(4)4(14)0(18)Q10318+^D42
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10299,35
F10299:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10299,35
	JRST	L10299
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10299,35
N10299:	BYTE	(4)4(14)0(18)Q10318+^D41
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10298,35
F10298:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10298,35
	JRST	L10298
	EXP	0
	BYTE	(5)1(31)0
S10298:	POINT	7,A10298,35
N10298:	BYTE	(4)4(14)0(18)Q10318+^D40
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10297,35
F10297:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10297,35
	JRST	L10297
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10297,35
N10297:	BYTE	(4)4(14)0(18)Q10318+^D39
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10296,35
F10296:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10296,35
	JRST	L10296
	EXP	0
	BYTE	(5)1(31)0
S10296:	POINT	7,A10296,35
N10296:	BYTE	(4)4(14)0(18)Q10318+^D38
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10295,35
N10295:	BYTE	(4)4(14)0(18)Q10318+^D37
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10294,35
F10294:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10294,35
	JRST	L10294
	EXP	0
	BYTE	(5)1(31)0
S10294:	POINT	7,A10294,35
N10294:	BYTE	(4)4(14)0(18)Q10318+^D36
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10293,35
N10293:	BYTE	(4)4(14)0(18)Q10318+^D35
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10292,35
F10292:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10292,35
	JRST	L10292
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10292,35
N10292:	BYTE	(4)4(14)0(18)Q10318+^D34
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10291,35
F10291:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10291,35
	JRST	L10291
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10291,35
N10291:	BYTE	(4)4(14)0(18)Q10318+^D33
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10290,35
N10290:	BYTE	(4)4(14)0(18)Q10318+^D32
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10289,35
N10289:	BYTE	(4)4(14)0(18)Q10318+^D31
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10288,35
F10288:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10288,35
	JRST	L10288
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10288,35
N10288:	BYTE	(4)4(14)0(18)Q10318+^D30
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10287,35
F10287:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10287,35
	JRST	L10287
	EXP	0
	BYTE	(5)1(31)0
S10287:	POINT	7,A10287,35
N10287:	BYTE	(4)4(14)0(18)Q10318+^D29
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10286,35
F10286:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10286,35
	JRST	L10286
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10286,35
N10286:	BYTE	(4)4(14)0(18)Q10318+^D28
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10285,35
F10285:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10285,35
	JRST	L10285
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10285,35
N10285:	BYTE	(4)4(14)0(18)Q10318+^D27
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10284,35
F10284:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10284,35
	JRST	L10284
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10284,35
N10284:	BYTE	(4)4(14)0(18)Q10318+^D26
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10283,35
F10283:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10283,35
	JRST	L10283
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10283,35
N10283:	BYTE	(4)4(14)0(18)Q10318+^D25
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10282,35
F10282:	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)1(31)0
	POINT	7,A10282,35
N10282:	BYTE	(4)4(14)0(18)Q10318+^D24
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10281,35
F10281:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10281,35
	JRST	L10281
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10281,35
N10281:	BYTE	(4)4(14)0(18)Q10318+^D23
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10280,35
F10280:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10280,35
	JRST	L10280
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10280,35
N10280:	BYTE	(4)4(14)0(18)Q10318+^D22
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10279,35
F10279:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10279,35
	JRST	L10279
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10279,35
N10279:	BYTE	(4)4(14)0(18)Q10318+^D21
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10278,35
F10278:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10278,35
	JRST	L10278
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10278,35
N10278:	BYTE	(4)4(14)0(18)Q10318+^D20
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10277,35
F10277:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10277,35
	JRST	L10277
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10277,35
N10277:	BYTE	(4)4(14)0(18)Q10318+^D19
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10276,35
F10276:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10276,35
	JRST	L10276
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10276,35
N10276:	BYTE	(4)4(14)0(18)Q10318+^D18
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10275,35
F10275:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10275,35
	JRST	L10275
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10275,35
N10275:	BYTE	(4)4(14)0(18)Q10318+^D17
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10274,35
F10274:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10274,35
	JRST	L10274
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10274,35
N10274:	BYTE	(4)4(14)0(18)Q10318+^D16
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10273,35
F10273:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10273,35
	JRST	L10273
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10273,35
N10273:	BYTE	(4)4(14)0(18)Q10318+^D15
	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)1(31)0
S10272:	POINT	7,A10272,35
N10272:	BYTE	(4)4(14)0(18)Q10318+^D14
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10271,35
F10271:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10271,35
	JRST	L10271
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10271,35
N10271:	BYTE	(4)4(14)0(18)Q10318+^D13
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10270,35
F10270:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10270,35
	JRST	L10270
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10270,35
N10270:	BYTE	(4)4(14)0(18)Q10318+^D12
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10269,35
F10269:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10269,35
	JRST	L10269
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10269,35
N10269:	BYTE	(4)4(14)0(18)Q10318+^D11
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10268,35
N10268:	BYTE	(4)4(14)0(18)Q10318+^D10
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10267,35
N10267:	BYTE	(4)4(14)0(18)Q10318+^D9
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10266,35
N10266:	BYTE	(4)4(14)0(18)Q10318+^D8
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10265,35
N10265:	BYTE	(4)4(14)0(18)Q10318+^D7
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10264,35
N10264:	BYTE	(4)4(14)0(18)Q10318+^D6
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10263,35
N10263:	BYTE	(4)4(14)0(18)Q10318+^D5
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10262,35
N10262:	BYTE	(4)4(14)0(18)Q10318+^D4
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10261,35
N10261:	BYTE	(4)4(14)0(18)Q10318+^D3
	EXP	0
	BYTE	(5)3(31)0
S10151:	POINT	7,A10151,35
	JRST	L10151
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10119,35
EXECPH:	BYTE	(4)4(4)0(5)^D0(5)0(18)E10119
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10119,35
	JRST	L10119
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10119,35
N10119:	BYTE	(4)4(14)0(18)Q10318+^D2
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10117,35
INIEXE:	BYTE	(4)4(4)0(5)^D0(5)0(18)E10117
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10117,35
	JRST	L10117
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10117,35
N10117:	BYTE	(4)4(14)0(18)Q10318+^D1
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10115,35
N10115:	BYTE	(4)4(2)2(12)0(18)V10115
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10114,35
N10114:	BYTE	(4)4(2)2(12)0(18)V10114
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10111,35
N10111:	BYTE	(4)4(2)2(12)0(18)V10111
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10109,35
N10109:	BYTE	(4)4(2)2(12)0(18)V10109
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10108,35
N10108:	BYTE	(4)4(2)2(12)0(18)V10108
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10107,35
N10107:	BYTE	(4)4(2)2(12)0(18)V10107
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10106,35
N10106:	BYTE	(4)4(2)2(12)0(18)V10106
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10103,35
N10103:	BYTE	(4)4(2)2(12)0(18)V10103
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10102,35
N10102:	BYTE	(4)4(2)2(12)0(18)V10102
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10101,35
N10101:	BYTE	(4)4(2)2(12)0(18)V10101
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10098,35
N10098:	BYTE	(4)4(2)2(12)0(18)V10098
	EXP	0
	BYTE	(5)1(31)0
S10096:	POINT	7,A10096,35
N10096:	BYTE	(4)4(2)2(12)0(18)V10096
	POINT	7,A10119,35
Q10000:	XWD	0,Q10318
	XWD	Q10319,^D0
	EXP	Q10319
	XWD	^D7,Q10000
E10117:	JSP	13,S$$EFI##
	POINT	7,A10118,35
	EXP	0
	XWD	^D8,Q10000
E10119:	JSP	13,S$$EFI##
	POINT	7,A10120,35
	EXP	0
	END