Trailing-Edge
-
PDP-10 Archives
-
decuslib20-02
-
decus/20-0057/crosph.new
There is 1 other file named crosph.new in the archive. Click here to see a list.
;* * * * * * * * *
;* * 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<I,1> :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<ENT,1> :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<ENT,1> ']')
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<ENT,2> :(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<I,0> = CRS(AR<I,0>,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<I - 5,0> = CRS(AR<I - 5,0>,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<I,0>
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<I,1> :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