;* * * * * * * * * ;* * DECLARATIONS * * * * * ;* * * * * * * * * ;* ;* LOCAL ;* ; DECLARE('SNOBOL.SUBPROGRAM','CROSPH') ; DECLARE('OPTION','NO.STNO') ; DECLARE('PURGE.VARIABLE',ALL) ; DECLARE('PURGE.LABEL',ALL) ; DECLARE('EXTERNAL.FUNCTION','PRTOUT') ; DECLARE('STRING','SSTNO(5)') ; DECLARE('INTEGER','I,J,PUTSYM') ; DECLARE('ENTRY.FUNCTION','INICRS()') ; DECLARE('ENTRY.FUNCTION','CROSPH()TREEHD') ;* ;* 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','INICRS,CROSPH,TREEHD,PUTSYM,ENT, ;.WALK') ; DECLARE('UNPURGE.LABEL','INICRS CROSPH PUTSYM WALK') ; DECLARE('PURGE.FUNCTION','DEFINE,DATA,ARRAY,DIFFER,DATATYPE,LGT, ;.COPY,SIZE,TIME') ;* * * * * * * * * ;* * INITIALIZE CROSS-REFERENCE PHASE * * ;* * * * * * * * * ;INICRS DEFINE('PUTSYM(ENT)') TITLE CROSPH 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 CROSPH,INICRS 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 PRTOUT L10090: MOVEI 14,Q10002 MOVEM 14,S$$FLP## MOVE 1,S10237 FCALV$ ^D1,F10066 Q10002: ; DEFINE('WALK(ENT)') MOVEI 14,Q10003 MOVEM 14,S$$FLP## MOVE 1,S10238 FCALV$ ^D1,F10066 Q10003: ; DATA('CRS(NEXT,CRSI)') MOVEI 14,Q10004 MOVEM 14,S$$FLP## MOVE 1,S10239 FCALV$ ^D1,F10060 Q10004: ; DATA('NOD(FRNT,BACK)') MOVEI 14,Q10005 MOVEM 14,S$$FLP## MOVE 1,S10240 FCALV$ ^D1,F10060 Q10005: ; ATRARR = ARRAY('0:4,0:1') MOVEI 14,Q10006 MOVEM 14,S$$FLP## MOVE 1,S10242 FCALV$ ^D1,F10063 MOVEM 1,@N10241 Q10006: ; ATRARR<0,1> = INDENT 'VARIABLE' MOVEI 14,Q10007 MOVEM 14,S$$FLP## MOVE 1,I10243 PUSH 16,1 MOVE 1,I10244 AREFN$ ^D2,N10241 PUSH 16,1 MOVE 1,@INDENT PUSH 16,1 MOVE 1,S10245 JSP 14,S$$CNC## EXP ^D2 JSP 11,S$$ASG## Q10007: ; ATRARR<1,1> = INDENT 'LABEL' MOVEI 14,Q10008 MOVEM 14,S$$FLP## MOVE 1,I10244 PUSH 16,1 MOVE 1,I10244 AREFN$ ^D2,N10241 PUSH 16,1 MOVE 1,@INDENT PUSH 16,1 MOVE 1,S10246 JSP 14,S$$CNC## EXP ^D2 JSP 11,S$$ASG## Q10008: ; ATRARR<2,1> = INDENT 'FUNCTION' MOVEI 14,Q10009 MOVEM 14,S$$FLP## MOVE 1,I10247 PUSH 16,1 MOVE 1,I10244 AREFN$ ^D2,N10241 PUSH 16,1 MOVE 1,@INDENT PUSH 16,1 MOVE 1,S10248 JSP 14,S$$CNC## EXP ^D2 JSP 11,S$$ASG## Q10009: ; ATRARR<3,1> = INDENT 'STRING' MOVEI 14,Q10010 MOVEM 14,S$$FLP## MOVE 1,I10249 PUSH 16,1 MOVE 1,I10244 AREFN$ ^D2,N10241 PUSH 16,1 MOVE 1,@INDENT PUSH 16,1 MOVE 1,S10250 JSP 14,S$$CNC## EXP ^D2 JSP 11,S$$ASG## Q10010: ; ATRARR<4,1> = INDENT 'BREAK TABLE' :(RETURN) MOVEI 14,S$$SRT## MOVEM 14,S$$FLP## MOVE 1,I10251 PUSH 16,1 MOVE 1,I10244 AREFN$ ^D2,N10241 PUSH 16,1 MOVE 1,@INDENT PUSH 16,1 MOVE 1,S10252 JSP 14,S$$CNC## EXP ^D2 JSP 11,S$$ASG## JRST S$$SRT## ;* * * * * * * * * ;* * PRODUCE CROSS-REFERENCE LISTING * * * ;* * * * * * * * * ;CROSPH ?INE(LISTSR,0) :F(RETURN) L10092: MOVEI 14,S$$SRT## MOVEM 14,S$$FLP## SUB 16,S$$STB## MOVEM 16,S$$STS## JSA 16,F$$NEP## JUMP 0,LISTSR JUMP 0,K10243 ADD 16,S$$STB## SETZ 1, ; LISTAR = ARRAY(CROSTB) :F(RETURN) MOVEI 14,S$$SRT## MOVEM 14,S$$FLP## MOVE 1,@CROSTB FCALV$ ^D1,F10063 MOVEM 1,@N10253 ; PRTOUT(FFCHR CRLCHR CRLCHR SPLASH INDENT ;. '******* CROSS-REFERENCE DICTIONARY *******' CRLCHR SPLASH CRLCHR ;. '[SYMBOL]' CRLCHR INDENT 'ATTRIBUTE,STATEMENT NUMBERS' CRLCHR CRLCHR ;. CRLCHR) MOVEI 14,Q10011 MOVEM 14,S$$FLP## MOVE 1,@FFCHR PUSH 16,1 MOVE 1,@CRLCHR PUSH 16,1 MOVE 1,@CRLCHR PUSH 16,1 MOVE 1,@SPLASH PUSH 16,1 MOVE 1,@INDENT PUSH 16,1 MOVE 1,S10254 PUSH 16,1 MOVE 1,@CRLCHR PUSH 16,1 MOVE 1,@SPLASH PUSH 16,1 MOVE 1,@CRLCHR PUSH 16,1 MOVE 1,S10255 PUSH 16,1 MOVE 1,@CRLCHR PUSH 16,1 MOVE 1,@INDENT PUSH 16,1 MOVE 1,S10256 PUSH 16,1 MOVE 1,@CRLCHR PUSH 16,1 MOVE 1,@CRLCHR PUSH 16,1 MOVE 1,@CRLCHR JSP 14,S$$CNC## EXP ^D16 FCALV$ ^D1,PRTOUT Q10011: ; I = 1 MOVE ^D1,K10244 MOVEM 1,V10087 ; TREEHD = 1 MOVEI 14,Q10012 MOVEM 14,S$$FLP## MOVE 1,I10244 MOVEM 1,@N10234 Q10012: ;* LOOP TO PUT SYMBOL INDICES IN TREE ;CROS1 I = I + 1 L10257: MOVE ^D1,V10087 ADD ^D1,K10244 MOVEM 1,V10087 ; ITNAM = LISTAR :F(CROS2) MOVEI 14,L10258 MOVEM 14,S$$FLP## MOVE ^D1,V10087 TLO 1,1B18 TLZ 1,1B19 PUSH 16,1 MOVE 1,I10244 AREFV$ ^D2,N10253 MOVEM 1,@ITNAM ; J = PUTSYM(TREEHD) MOVEI 14,Q10013 MOVEM 14,S$$FLP## MOVE 1,@N10234 FCALV$ ^D1,F10089 DASGN$ 2,V10088 Q10013: ; ?INE(J,0) :F(CROS1) MOVEI 14,L10257 MOVEM 14,S$$FLP## SUB 16,S$$STB## MOVEM 16,S$$STS## JSA 16,F$$NEP## JUMP 0,V10088 JUMP 0,K10243 ADD 16,S$$STB## SETZ 1, ; TREEHD = ?ILT(J,0) NOD(I,TREEHD) :S(CROS1) MOVEI 14,Q10014 MOVEM 14,S$$FLP## SUB 16,S$$STB## MOVEM 16,S$$STS## JSA 16,F$$LTP## JUMP 0,V10088 JUMP 0,K10243 ADD 16,S$$STB## SETZ 1, MOVE ^D1,V10087 TLO 1,1B18 TLZ 1,1B19 PUSH 16,1 MOVE 1,@N10234 FCALV$ ^D2,F10259 MOVEM 1,@N10234 JRST L10257 Q10014: ; TREEHD = NOD(TREEHD,I) :(CROS1) MOVEI 14,L10257 MOVEM 14,S$$FLP## MOVE 1,@N10234 PUSH 16,1 MOVE ^D1,V10087 TLO 1,1B18 TLZ 1,1B19 FCALV$ ^D2,F10259 MOVEM 1,@N10234 JRST L10257 ;* WALK TREE AND LIST SYMBOLS IN ORDER ;CROS2 WALK(TREEHD) :(RETURN) L10258: MOVEI 14,S$$SRT## MOVEM 14,S$$FLP## MOVE 1,@N10234 FCALV$ ^D1,F10236 JRST S$$SRT## ;* * * * * * * * * ;* * SUBROUTINES * * * * * ;* * * * * * * * * ;* PUTSYM(ENT) PUT SYMBOL IN TREE IN LEXICAL ORDER ;* RETURNS -N, 0, 0R N DEPENDING ON WHETHER THE NEW SYMBOL IS TO ;* THE LEFT (LESS), WITHIN, OR TO THE RIGHT (GREATER) OF THE ;* SUBTREE. N IS THE FUNCTION (TREE) DEPTH AT WHICH THE COMPARISON ;* WAS MADE, AND IS USED TO KEEP THE TREE AS BALANCED AS POSSIBLE ;* ;PUTSYM ENT = ?DIFFER(DATATYPE(ENT),'NOD') LISTAR :F(PUTS1) L10089: MOVEI 14,L10260 MOVEM 14,S$$FLP## MOVE 1,@N10235 FCALV$ ^D1,F10052 PUSH 16,1 MOVE 1,S10259 FCALV$ ^D2,F10071 SETZ 1, MOVE 1,@N10235 PUSH 16,1 MOVE 1,I10244 AREFV$ ^D2,N10253 MOVEM 1,@N10235 ; PUTSYM = LGT(ENT,ITNAM) -&FNCLEVEL :S(RETURN) MOVEI 14,Q10015 MOVEM 14,S$$FLP## MOVE 1,@N10235 PUSH 16,1 MOVE 1,@ITNAM FCALV$ ^D2,F10061 PUSH 16,1 MOVN ^D1,S$$KWD##+^D3 TLO 1,1B18 TLZ 1,1B19 JSP 14,S$$CNC## EXP ^D2 DASGN$ 2,V10089 JRST S$$SRT## Q10015: ; PUTSYM = &FNCLEVEL :(RETURN) MOVE ^D1,S$$KWD##+^D3 MOVEM 1,V10089 JRST S$$SRT## ;PUTS1 PUTSYM = PUTSYM(FRNT(ENT)) L10260: MOVEI 14,Q10016 MOVEM 14,S$$FLP## MOVE 1,@N10235 FCALV$ ^D1,F10261 FCALV$ ^D1,F10089 DASGN$ 2,V10089 Q10016: ; J = ?IGT(PUTSYM,0) PUTSYM(BACK(ENT)) :F(RETURN) MOVEI 14,S$$SRT## MOVEM 14,S$$FLP## SUB 16,S$$STB## MOVEM 16,S$$STS## JSA 16,F$$GTP## JUMP 0,V10089 JUMP 0,K10243 ADD 16,S$$STB## SETZ 1, MOVE 1,@N10235 FCALV$ ^D1,F10262 FCALV$ ^D1,F10089 DASGN$ 2,V10088 ; PUTSYM = ?IGE(J,0) J :S(RETURN) MOVEI 14,Q10017 MOVEM 14,S$$FLP## SUB 16,S$$STB## MOVEM 16,S$$STS## JSA 16,F$$GEP## JUMP 0,V10088 JUMP 0,K10243 ADD 16,S$$STB## SETZ 1, MOVE ^D1,V10088 MOVEM 1,V10089 JRST S$$SRT## Q10017: ; FRNT(ENT) = ?ILT(PUTSYM + J,0) NOD(FRNT(ENT),I) :S(PUTS2) MOVEI 14,Q10018 MOVEM 14,S$$FLP## MOVE 1,@N10235 FCALN$ ^D1,F10261 PUSH 16,1 MOVE ^D1,V10089 ADD ^D1,V10088 MOVEM 1,Q10001+^D0 SUB 16,S$$STB## MOVEM 16,S$$STS## JSA 16,F$$LTP## JUMP 0,Q10001+^D0 JUMP 0,K10243 ADD 16,S$$STB## SETZ 1, MOVE 1,@N10235 FCALV$ ^D1,F10261 PUSH 16,1 MOVE ^D1,V10087 TLO 1,1B18 TLZ 1,1B19 FCALV$ ^D2,F10259 JSP 11,S$$ASG## JRST L10263 Q10018: ; BACK(ENT) = ?IGT(PUTSYM + J,0) NOD(I,BACK(ENT)) :S(PUTS2) MOVEI 14,Q10019 MOVEM 14,S$$FLP## MOVE 1,@N10235 FCALN$ ^D1,F10262 PUSH 16,1 MOVE ^D1,V10089 ADD ^D1,V10088 MOVEM 1,Q10001+^D0 SUB 16,S$$STB## MOVEM 16,S$$STS## JSA 16,F$$GTP## JUMP 0,Q10001+^D0 JUMP 0,K10243 ADD 16,S$$STB## SETZ 1, MOVE ^D1,V10087 TLO 1,1B18 TLZ 1,1B19 PUSH 16,1 MOVE 1,@N10235 FCALV$ ^D1,F10262 FCALV$ ^D2,F10259 JSP 11,S$$ASG## JRST L10263 Q10019: ; FRNT(ENT) = ?IEQ(AND(TIME(),1),0) NOD(FRNT(ENT),I) ;. :S(PUTS2) MOVEI 14,Q10020 MOVEM 14,S$$FLP## MOVE 1,@N10235 FCALN$ ^D1,F10261 PUSH 16,1 FCALV$ ^D0,F10045 DASGN$ 2,Q10001+^D1 SUB 16,S$$STB## MOVEM 16,S$$STS## JSA 16,F$$AND## JUMP 0,Q10001+^D1 JUMP 0,K10244 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,K10243 ADD 16,S$$STB## SETZ 1, MOVE 1,@N10235 FCALV$ ^D1,F10261 PUSH 16,1 MOVE ^D1,V10087 TLO 1,1B18 TLZ 1,1B19 FCALV$ ^D2,F10259 JSP 11,S$$ASG## JRST L10263 Q10020: ; BACK(ENT) = NOD(I,BACK(ENT)) MOVEI 14,Q10021 MOVEM 14,S$$FLP## MOVE 1,@N10235 FCALN$ ^D1,F10262 PUSH 16,1 MOVE ^D1,V10087 TLO 1,1B18 TLZ 1,1B19 PUSH 16,1 MOVE 1,@N10235 FCALV$ ^D1,F10262 FCALV$ ^D2,F10259 JSP 11,S$$ASG## Q10021: ;PUTS2 PUTSYM = :(RETURN) L10263: MOVEI 14,S$$SRT## MOVEM 14,S$$FLP## SETZM V10089 JRST S$$SRT## ;* * * * * * * * * ;* WALK(ENT) WALK TREE ;* DOES A LEFT-TO-RIGHT, BOTTOM-TO-TOP TREE WALK, PRINTING THE ;* INFORMATION FOR EACH SYMBOL AS IT IS ENCOUNTERED IN THE TREE ;* ;WALK (?DIFFER(DATATYPE(ENT),'INTEGER') ?WALK(FRNT(ENT)) ;. ?WALK(BACK(ENT))) :S(RETURN) L10236: MOVEI 14,Q10022 MOVEM 14,S$$FLP## MOVE 1,@N10235 FCALV$ ^D1,F10052 PUSH 16,1 MOVE 1,S10048 FCALV$ ^D2,F10071 SETZ 1, MOVE 1,@N10235 FCALV$ ^D1,F10261 FCALV$ ^D1,F10236 SETZ 1, MOVE 1,@N10235 FCALV$ ^D1,F10262 FCALV$ ^D1,F10236 SETZ 1, JRST S$$SRT## Q10022: ; AR = COPY(ATRARR) MOVEI 14,Q10023 MOVEM 14,S$$FLP## MOVE 1,@N10241 FCALV$ ^D1,F10053 MOVEM 1,@N10264 Q10023: ; PRTOUT(CRLCHR '[' LISTAR ']') MOVEI 14,Q10024 MOVEM 14,S$$FLP## MOVE 1,@CRLCHR PUSH 16,1 MOVE 1,S10265 PUSH 16,1 MOVE 1,@N10235 PUSH 16,1 MOVE 1,I10244 AREFV$ ^D2,N10253 PUSH 16,1 MOVE 1,S10266 JSP 14,S$$CNC## EXP ^D4 FCALV$ ^D1,PRTOUT Q10024: ; ENT = LISTAR :(WLK2) MOVEI 14,L10267 MOVEM 14,S$$FLP## MOVE 1,@N10235 PUSH 16,1 MOVE 1,I10247 AREFV$ ^D2,N10253 MOVEM 1,@N10235 JRST L10267 ;WLK1 ENT = NEXT(ENT) L10268: MOVEI 14,Q10025 MOVEM 14,S$$FLP## MOVE 1,@N10235 FCALV$ ^D1,F10269 MOVEM 1,@N10235 Q10025: ;WLK2 I = ?DIFFER(ENT) CRSI(ENT) :F(WLK3) L10267: MOVEI 14,L10271 MOVEM 14,S$$FLP## MOVE 1,@N10235 FCALV$ ^D1,F10071 SETZ 1, MOVE 1,@N10235 FCALV$ ^D1,F10270 DASGN$ 2,V10087 ; J = RSHIFT(I,3) MOVEI 14,Q10026 MOVEM 14,S$$FLP## SUB 16,S$$STB## MOVEM 16,S$$STS## JSA 16,F$$RSH## JUMP 0,V10087 JUMP 0,K10249 ADD 16,S$$STB## MOVE 1,0 MOVEM 1,V10088 Q10026: ; I = AND(I,7) MOVEI 14,Q10027 MOVEM 14,S$$FLP## SUB 16,S$$STB## MOVEM 16,S$$STS## JSA 16,F$$AND## JUMP 0,V10087 JUMP 0,K10272 ADD 16,S$$STB## MOVE 1,0 MOVEM 1,V10087 Q10027: ; AR = CRS(AR,J) :S(WLK1) MOVEI 14,Q10028 MOVEM 14,S$$FLP## MOVE ^D1,V10087 TLO 1,1B18 TLZ 1,1B19 PUSH 16,1 MOVE 1,I10243 AREFN$ ^D2,N10264 PUSH 16,1 MOVE ^D1,V10087 TLO 1,1B18 TLZ 1,1B19 PUSH 16,1 MOVE 1,I10243 AREFV$ ^D2,N10264 PUSH 16,1 MOVE ^D1,V10088 TLO 1,1B18 TLZ 1,1B19 FCALV$ ^D2,F10273 JSP 11,S$$ASG## JRST L10268 Q10028: ; AR = CRS(AR,J) :(WLK1) MOVEI 14,L10268 MOVEM 14,S$$FLP## MOVE ^D1,V10087 SUB ^D1,K10274 TLO 1,1B18 TLZ 1,1B19 PUSH 16,1 MOVE 1,I10243 AREFN$ ^D2,N10264 PUSH 16,1 MOVE ^D1,V10087 SUB ^D1,K10274 TLO 1,1B18 TLZ 1,1B19 PUSH 16,1 MOVE 1,I10243 AREFV$ ^D2,N10264 PUSH 16,1 MOVE ^D1,V10088 TLO 1,1B18 TLZ 1,1B19 FCALV$ ^D2,F10273 JSP 11,S$$ASG## JRST L10268 ;WLK3 I = L10271: MOVEI 14,Q10029 MOVEM 14,S$$FLP## SETZM V10087 Q10029: ;WLK4 ENT = AR L10275: MOVEI 14,Q10030 MOVEM 14,S$$FLP## MOVE ^D1,V10087 TLO 1,1B18 TLZ 1,1B19 PUSH 16,1 MOVE 1,I10243 AREFV$ ^D2,N10264 MOVEM 1,@N10235 Q10030: ; WALK = ?DIFFER(ENT) AR :F(WLK8) MOVEI 14,L10276 MOVEM 14,S$$FLP## MOVE 1,@N10235 FCALV$ ^D1,F10071 SETZ 1, MOVE ^D1,V10087 TLO 1,1B18 TLZ 1,1B19 PUSH 16,1 MOVE 1,I10244 AREFV$ ^D2,N10264 MOVEM 1,@N10236 ; J = ?PRTOUT(WALK,'',1) SIZE(WALK) :(WLK6) MOVEI 14,L10277 MOVEM 14,S$$FLP## MOVE 1,@N10236 PUSH 16,1 SETZ 1, PUSH 16,1 MOVE 1,I10244 FCALV$ ^D3,PRTOUT SETZ 1, MOVE 1,@N10236 FCALV$ ^D1,F10050 DASGN$ 2,V10088 JRST L10277 ;WLK5 ENT = NEXT(ENT) L10278: MOVEI 14,Q10031 MOVEM 14,S$$FLP## MOVE 1,@N10235 FCALV$ ^D1,F10269 MOVEM 1,@N10235 Q10031: ;WLK6 SSTNO = ?DIFFER(ENT) CRSI(ENT) :F(WLK7) L10277: MOVEI 14,L10279 MOVEM 14,S$$FLP## MOVE 1,@N10235 FCALV$ ^D1,F10071 SETZ 1, MOVE 1,@N10235 FCALV$ ^D1,F10270 DASGN$ 1,V10086 ; WALK = ',' SSTNO MOVEI 14,Q10032 MOVEM 14,S$$FLP## MOVE 1,S10280 PUSH 16,1 MOVE 1,@N10086 JSP 7,S$$CPS## JSP 14,S$$CNC## EXP ^D2 MOVEM 1,@N10236 Q10032: ; J = ?PRTOUT(WALK,'',1) J + SIZE(WALK) MOVEI 14,Q10033 MOVEM 14,S$$FLP## MOVE 1,@N10236 PUSH 16,1 SETZ 1, PUSH 16,1 MOVE 1,I10244 FCALV$ ^D3,PRTOUT SETZ 1, MOVE ^D1,V10088 PUSH 17,1 MOVE 1,@N10236 FCALV$ ^D1,F10050 DICNV$ 0 POP 17,0 ADD ^D1,0 MOVEM 1,V10088 Q10033: ; J = ?IGE(J,60) ?PRTOUT(CRLCHR INDENT,'',1) SIZE(INDENT) ;. :(WLK5) MOVEI 14,L10278 MOVEM 14,S$$FLP## SUB 16,S$$STB## MOVEM 16,S$$STS## JSA 16,F$$GEP## JUMP 0,V10088 JUMP 0,K10281 ADD 16,S$$STB## SETZ 1, MOVE 1,@CRLCHR PUSH 16,1 MOVE 1,@INDENT JSP 14,S$$CNC## EXP ^D2 PUSH 16,1 SETZ 1, PUSH 16,1 MOVE 1,I10244 FCALV$ ^D3,PRTOUT SETZ 1, MOVE 1,@INDENT FCALV$ ^D1,F10050 DASGN$ 2,V10088 JRST L10278 ;WLK7 PRTOUT() L10279: MOVEI 14,Q10034 MOVEM 14,S$$FLP## FCALV$ ^D0,PRTOUT Q10034: ;WLK8 I = ?INE(I,4) I + 1 :F(RETURN)S(WLK4) L10276: MOVEI 14,S$$SRT## MOVEM 14,S$$FLP## SUB 16,S$$STB## MOVEM 16,S$$STS## JSA 16,F$$NEP## JUMP 0,V10087 JUMP 0,K10251 ADD 16,S$$STB## SETZ 1, MOVE ^D1,V10087 ADD ^D1,K10244 MOVEM 1,V10087 JRST L10275 ;* * * * * * * * * ;END JRST S$$SXT## Q10001: BLOCK ^D2 K10243: EXP ^D0 I10243: EXP ^D0!1B0 K10244: EXP ^D1 I10244: EXP ^D1!1B0 I10247: EXP ^D2!1B0 K10249: EXP ^D3 I10249: EXP ^D3!1B0 K10251: EXP ^D4 I10251: EXP ^D4!1B0 K10272: EXP ^D7 K10274: EXP ^D5 K10281: EXP ^D60 F10045: BYTE (4)4(4)0(5)^D0(5)0(18)P$$TIM## S10048: POINT 7,A10048,35 A10048: BYTE (2)2(16)^D2+1(18)^D7 ASCII 'INTEGER' 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## F10053: BYTE (4)4(4)0(5)^D1(5)0(18)P$$CPY## F10060: BYTE (4)4(4)0(5)^D1(5)0(18)P$$DAT## F10061: BYTE (4)4(4)0(5)^D2(5)0(18)P$$LGT## F10063: BYTE (4)4(4)0(5)^D2(5)0(18)P$$ARR## 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## V10086: POINT 7,.+1,35 BYTE (2)0(16)^D1+1(18)0 BLOCK ^D1 N10086: BYTE (4)4(2)1(12)0(18)V10086 V10087: EXP 0 V10088: EXP 0 V10089: EXP 0 A10089: BYTE (2)2(16)^D2+1(18)^D6 ASCII 'PUTSYM' A10090: BYTE (2)2(16)^D2+1(18)^D6 ASCII 'INICRS' A10091: BYTE (2)2(16)^D2+1(18)^D8 ASCII 'INICRS()' A10092: BYTE (2)2(16)^D2+1(18)^D6 ASCII 'CROSPH' A10093: BYTE (2)2(16)^D3+1(18)^D14 ASCII 'CROSPH()TREEHD' A10234: BYTE (2)2(16)^D2+1(18)^D6 ASCII 'TREEHD' A10235: BYTE (2)2(16)^D1+1(18)^D3 ASCII 'ENT' A10236: BYTE (2)2(16)^D1+1(18)^D4 ASCII 'WALK' S10237: POINT 7,A10237,35 A10237: BYTE (2)2(16)^D3+1(18)^D11 ASCII 'PUTSYM(ENT)' S10238: POINT 7,A10238,35 A10238: BYTE (2)2(16)^D2+1(18)^D9 ASCII 'WALK(ENT)' S10239: POINT 7,A10239,35 A10239: BYTE (2)2(16)^D3+1(18)^D14 ASCII 'CRS(NEXT,CRSI)' S10240: POINT 7,A10240,35 A10240: BYTE (2)2(16)^D3+1(18)^D14 ASCII 'NOD(FRNT,BACK)' N10241: BYTE (4)4(14)0(18)Q10035+^D6 S10242: POINT 7,A10242,35 A10242: BYTE (2)2(16)^D2+1(18)^D7 ASCII '0:4,0:1' S10245: POINT 7,A10245,35 A10245: BYTE (2)2(16)^D2+1(18)^D8 ASCII 'VARIABLE' S10246: POINT 7,A10246,35 A10246: BYTE (2)2(16)^D1+1(18)^D5 ASCII 'LABEL' S10248: POINT 7,A10248,35 A10248: BYTE (2)2(16)^D2+1(18)^D8 ASCII 'FUNCTION' S10250: POINT 7,A10250,35 A10250: BYTE (2)2(16)^D2+1(18)^D6 ASCII 'STRING' S10252: POINT 7,A10252,35 A10252: BYTE (2)2(16)^D3+1(18)^D11 ASCII 'BREAK TABLE' N10253: BYTE (4)4(14)0(18)Q10035+^D7 S10254: POINT 7,A10254,35 A10254: BYTE (2)2(16)^D9+1(18)^D42 ASCII '******* CROSS-REFERENCE DICTIONARY *******' S10255: POINT 7,A10255,35 A10255: BYTE (2)2(16)^D2+1(18)^D8 ASCII '[SYMBOL]' S10256: POINT 7,A10256,35 A10256: BYTE (2)2(16)^D6+1(18)^D27 ASCII 'ATTRIBUTE,STATEMENT NUMBERS' A10259: BYTE (2)2(16)^D1+1(18)^D3 ASCII 'NOD' A10261: BYTE (2)2(16)^D1+1(18)^D4 ASCII 'FRNT' A10262: BYTE (2)2(16)^D1+1(18)^D4 ASCII 'BACK' N10264: BYTE (4)4(14)0(18)Q10035+^D8 S10265: POINT 7,A10265,35 A10265: BYTE (2)2(16)^D1+1(18)^D1 ASCII '[' S10266: POINT 7,A10266,35 A10266: BYTE (2)2(16)^D1+1(18)^D1 ASCII ']' A10269: BYTE (2)2(16)^D1+1(18)^D4 ASCII 'NEXT' A10270: BYTE (2)2(16)^D1+1(18)^D4 ASCII 'CRSI' A10273: BYTE (2)2(16)^D1+1(18)^D3 ASCII 'CRS' S10280: POINT 7,A10280,35 A10280: BYTE (2)2(16)^D1+1(18)^D1 ASCII ',' Q10035: BYTE (2)2(16)^D8+1(18)0 REPEAT ^D8,<0> Q10036: BYTE (2)2(16)^D20*4+1(18)-^D20 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)5(31)0 POINT 7,A10270,35 F10270: BYTE (4)4(4)0(5)20(5)0(18)S$$UDF## 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)5(31)0 POINT 7,A10262,35 F10262: BYTE (4)4(4)0(5)20(5)0(18)S$$UDF## EXP 0 BYTE (5)5(31)0 POINT 7,A10261,35 F10261: BYTE (4)4(4)0(5)20(5)0(18)S$$UDF## EXP 0 BYTE (5)5(31)0 S10259: POINT 7,A10259,35 F10259: BYTE (4)4(4)0(5)20(5)0(18)S$$UDF## EXP 0 BYTE (5)5(31)0 POINT 7,A10236,35 F10236: BYTE (4)4(4)0(5)20(5)0(18)S$$UDF## EXP 0 BYTE (5)3(31)0 POINT 7,A10236,35 JRST L10236 EXP 0 BYTE (5)1(31)0 POINT 7,A10236,35 N10236: BYTE (4)4(14)0(18)Q10035+^D5 EXP 0 BYTE (5)1(31)0 POINT 7,A10235,35 N10235: BYTE (4)4(14)0(18)Q10035+^D4 EXP 0 BYTE (5)1(31)0 POINT 7,A10234,35 N10234: BYTE (4)4(14)0(18)Q10035+^D3 EXP 0 BYTE (5)5(31)0 POINT 7,A10092,35 CROSPH: BYTE (4)4(4)0(5)^D0(5)0(18)E10092 EXP 0 BYTE (5)3(31)0 POINT 7,A10092,35 JRST L10092 EXP 0 BYTE (5)1(31)0 POINT 7,A10092,35 N10092: BYTE (4)4(14)0(18)Q10035+^D2 EXP 0 BYTE (5)5(31)0 POINT 7,A10090,35 INICRS: BYTE (4)4(4)0(5)^D0(5)0(18)E10090 EXP 0 BYTE (5)3(31)0 POINT 7,A10090,35 JRST L10090 EXP 0 BYTE (5)1(31)0 POINT 7,A10090,35 N10090: BYTE (4)4(14)0(18)Q10035+^D1 EXP 0 BYTE (5)5(31)0 POINT 7,A10089,35 F10089: BYTE (4)4(4)0(5)20(5)0(18)S$$UDF## EXP 0 BYTE (5)3(31)0 POINT 7,A10089,35 JRST L10089 EXP 0 BYTE (5)1(31)0 POINT 7,A10089,35 N10089: BYTE (4)4(2)2(12)0(18)V10089 POINT 7,A10092,35 Q10000: XWD 0,Q10035 XWD Q10036,^D0 EXP Q10036 XWD ^D8,Q10000 E10090: JSP 13,S$$EFI## POINT 7,A10091,35 EXP 0 XWD ^D9,Q10000 E10092: JSP 13,S$$EFI## POINT 7,A10093,35 EXP 0 END