;* * * * * * * * * ;* * 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,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,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,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)) :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 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 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) ;. :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)) :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) ;. :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) :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,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,AROPAR)))) :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,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,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,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