Trailing-Edge
-
PDP-10 Archives
-
decuslib20-02
-
decus/20-0057/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