{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: IDFCANC867)}}
====== IDFCANC867 ======
(George Source)
**Macros used:** [[george:macro:ALTLEN|ALTLEN]], [[george:macro:BXE|BXE]], [[george:macro:CLOSE|CLOSE]], [[george:macro:ERRORX|ERRORX]], [[george:macro:FINDPEREC|FINDPEREC]], [[george:macro:FREECORE|FREECORE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:HUNT2|HUNT2]], [[george:macro:HUNTMISB|HUNTMISB]], [[george:macro:IDFOPEN|IDFOPEN]], [[george:macro:IDFWRITE|IDFWRITE]], [[george:macro:LFCCAT|LFCCAT]], [[george:macro:LGEOG|LGEOG]], [[george:macro:LTYPE|LTYPE]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MFREEALL|MFREEALL]], [[george:macro:MGETCELL|MGETCELL]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:MSEARCH|MSEARCH]], [[george:macro:MXB|MXB]], [[george:macro:OPEN|OPEN]], [[george:macro:OUTNUM|OUTNUM]], [[george:macro:PARSORT|PARSORT]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:TRACE|TRACE]], [[george:macro:UP|UP]], [[george:macro:UPPLUS|UPPLUS]]
22FL #SEG IDFCANC8 [G CONSTANTINIDES
22PD ...# COPYRIGHT INTERNATIONAL COMPUTERS 1982
22^= #OPT K0IDFCANC=0
23DW #LIS K0IDFCANC>K0ALLGEO>K0GREATGEO>K0COMMAND>K0IDF
23YG 8HIDFCANC8
24D6 # ENTRY POINTS
24XQ SEGENTRY K1IDFCANC,Z1IDFCANC
25CB SEGENTRY K2IDFCANC,Z2IDFCANC
25X2 SEGENTRY K3IDFCANC,Z3IDFCANC
26#J ...#
26BL MENDAREA 50,K100IDFCANC
26W= XILLUN +ILLUN [ILLEGAL UNIT NO
27*W XILLINE +ILLINE [ILLEGAL LINE NO
27TG XILLIDE +ILLIDE [ILLEGAL IDENTIFIER
28*6 XINTEM +INTERM [7020 TERM/INTERFACE NOT IN IDF
28SQ #
29#B # THIS IS EXACTLY THE SAME IN IDFASAT-SEE IDFASAT FOR COMMENTS
29S2 PARSORT [CPAR/JSCE MUST ALREADY EXIST
2=?L [AND IT MUST DESCRIBE AN IPB,UX,MPX
2=R= MHUNTW 3,CPAR,JSCE
2?=W LDX 1 JSCEP(3) [DEVICE LIST POINTER
2?QG LGEOG 1,6
2#=6 LDX 4 JSCEB(3)
2#PQ BNG 4 XREMDEV
2*9B LDN 5 0
2*P2 BRN XFINI
2B8L XREMDEV
2BN= SLL 4 1
2C7W LDX 5 JSCEA(3)
2CMG BPZ 4 XONUXMX
2D76 LDCT 0 #400
2DLQ ORX 6 0
2F6B ANDN 5 #7777
2FL2 BRN XFINI
2G5L XONUXMX
2GK= SLL 5 6
2H4W BZE 5 XNOID
2HJG LDCT 0 #200
2J46 ORX 6 0
2JHQ XNOID
2K3B SRL 4 10
2KH2 DCH 4 5
2L2L XFINI STO 5 ACOMMUNE4(2)
2LG= STO 6 ACOMMUNE3(2)
2L^W LDX 1 FX1
2MFG EXIT 7 0
2M^6 OPEN SBX 6 FX1 [OPEN IDF
2N8Y ... IDFOPEN XBRK
2NYB ADX 6 FX1
2PD2 EXIT 6 0
2PMS ...XBRK UP
2PXL #
2QC= WRITECLOSE
2QWW SBX 7 FX1
2RBG IDFWRITE
2RW6 BRN WR
2S*Q ZCLOSE
2STB SBX 7 FX1
2T*2 MFREEALL FILE,FRRB
2TSL WR CLOSE
2W#= ADX 7 FX1
2WRW EXIT 7 0
2X?G #
2XR6 SELL SBX 7 FX1
2Y=Q MGETCELL 2,3
2YQB ADX 7 FX1
2^=2 EXIT 7 0
2^PL #
329= SFREE SBX 6 FX1 [FREE CELL ONTO FREE CHAIN
32NW MFREECEL 2,3
338G ADX 6 FX1
33N6 EXIT 6 0
347Q #
34MB SEARCH
3572 SBX 6 FX1
35LL MSEARCH 2,3,4
366= SMO FX2
36KW LDX 0 ACOMMUNE1
375G ADX 6 FX1
37K6 EXIT 6 0
384Q #
38JB RECFIND
3942 LDX 2 FX2
39HL REC HUNT2 2,FILE,FRRB
3=3= TXU 6 BRECNO+A1(2)
3=GW BCS REC
3?2G ADN 2 A1
3?G6 EXIT 7 0
3?^Q #
3#FB YREC BPZ 3 SAME [FIND CELL X3 POINTS TO
3#^2 YREC1 SBX 6 FX1
3*DL LDX 0 3
3*Y= SRL 0 9
3BCW ANDN 0 #7777
3BXG LDX 2 FX2
3CC6 STO 0 ACOMMUNE3(2)
3CWQ MXB 2
3DBB ADX 6 FX1
3DW2 SAME ANDN 3 #777
3F*L EXIT 6 0
3FT= #
3G#W TRACE LDX 4 ACOMMUNE3(2) [UNIT NO
3GSG LDX 5 ACOMMUNE4(2) [LINE/IDENTIFIER NO
3H#6 SBX 7 FX1
3HRQ LDX 0 ACOMMUNE2(2)
3J?B STO 0 AWORK2(2) [KEEP PROPERTY PARAMETER
3JR2 CALL 6 OPEN
3K=L BNG 4 T7900 [J.IF 7900
3KQ= LDN 3 BUNIT
3L9W CALL 6 SEARCH
3LPG BZE 0 UINV [J.IF NOT FOUND-INVALID UNIT
3M96 LDN 3 BLINE(3)
3MNQ SLL 4 1 [MOVE UP B1(SET IF 7020 INFO. IN X5)
3N8B ANDX 4 GSIGN [AND ONLY KEEP B1
3NN2 DCH 5 4 [LINE NO INTO X4
3P7L CALL 6 SEARCH
3PM= BZE 0 MINV [J.IF NOT FOUND-INVALID LINE
3Q6W BPZ 4 TR1 [J.IF NO IDENTIFIER
3QLG SMO 2 [NOW KEEP X4 AS MARKER
3R66 LDX 3 BLINE(3)
3RKQ TR3 BZE 3 TINV [J.FOR INVALID TERMINAL
3S5B CALL 6 YREC
3SK2 ADX 3 2
3T4L LDX 0 BNO(3) [IDENTIFIER/POLLING ADDRESS
3TJ= ERX 0 5
3W3W ANDX 0 HALFTOP [ONLY IDENTIFIER SIGNIFICANT
3WHG BZE 0 TR2 [J.IF RIGHT IDENTIFIER
3X36 LDX 3 0(3)
3XGQ BRN TR3
3Y2B TR2 ANDN 5 #7700 [MASK OUT INTERFACE NO
3YG2 BZE 5 TR11 [J.IF INTERFACE NOT REQUIRED
3Y^L SRL 5 6 [INTERFACE NO INTO CHAR3
3^F= TR4 LDX 0 BTYPE(3)
3^YW LDCH 6 0
42DG ERX 6 5
42Y6 BZE 6 TR11 [J.IF CORRECT INTERFACE
43CQ LDX 0 BTYPE+1(3)
43XB LDCH 6 0 [CHECK POSSIBLE CONSOLE INTERFACE
44C2 ERX 6 5
44WL BZE 6 TR11 [J.IF CORRECT INTERFACE
45B= LDX 0 BTYPE+2(3)
45TW BNG 0 TINV [J.FOR INVALID TERMINAL INTERFACE
46*G LDX 3 0(3)
46T6 BNZ 3 TR5
47#Q TGEO GEOERR 1,IDF7020 [SOMETHING UP WITH 7020'S IN IDF
47SB TR5 CALL 6 YREC
48#2 ADX 3 2
48RL BRN TR4
49?= TR11 SBX 3 2
49QW TR1 ADX 7 FX1
4==G EXIT 7 0 [ON EXIT X4 NEG IF 7020 IDENTIFIER EXISTED
4=Q6 T7900 LDN 3 BIPB
4?9Q CALL 6 SEARCH
4?PB BZE 0 UINV [J.FOR INVALID UNIT
4#92 LDN 3 BLINE(3)
4#NL LDX 4 5
4*8= CALL 6 SEARCH
4*MW BZE 0 RINV [J.FOR INVALID IDENTIFIER
4B7G BRN TR1
4BM6 #
4C6Q # ERRORS!!!!
4CLB UINV LDX 3 XILLUN(1) [ILLEGAL UNIT
4D62 ONVMA ANDN 4 #7777
4DKL ONUM OUTNUM 4,0
4F5= YERC CALL 7 ZCLOSE
4FJW ERRORX 3
4FSN ... UPPLUS 1
4GJ6 MINV LDX 3 XILLINE(1) [ILLEGAL LINE
4H3Q BRN ONVMA
4HHB RINV LDX 3 XILLIDE(1) [ILLEGAL IDENTIFIER
4J32 BRN ONVMA
4JGL TINV LDX 3 XINTEM(1) [7020 TERM/INTERFACE NOT IN IDF
4K2= BRN YERC
4KFW #
4K^G #
4LF6 ZACAN1 [PRE-ZACAN ENTRY:USE X4 TO SET UP X3 & X2 WITHOUT CO-ORD.
4LYQ LDX 3 4
4MDB CALL 6 YREC1
4MY2 ZACAN [ROUTINE TO CANCEL ASSOCIATES(IF X7=0) OR ATTRIBUTES(IF-
4NCL [X7=1.X2 & X3 POINT TO PARENT CELL:X4=IDF PTR TO PARENT
4NX= SBX 5 FX1
4PBW ADX 3 2
4PWG SMO 7
4QB6 LDX 3 BASS(3) [PICK UP ASS/ATT IDF POINTER
4QTQ BZE 3 ZC1 [J.NOTHING TO DO
4R*B CALL 6 YREC [FIND ASS/ATT CELL
4RT2 ADX 3 2
4S#L LDX 2 3 [EXTRA COPY OF ABSOLUTE POINTER
4SS= SMO FX2
4T?W LDX 6 AWORK2 [PICK UP PROPERTY NUMBER PARAMETER
4TRG BNZ 7 ZCATT [J.FOR ATT.CANCEL
4W?6 LDN 1 ASSMAX
4WQQ ZC3 ADN 3 2 [LOOK FOR PROPERTY THIS ASSOCIATION-
4X=B LDX 0 1(3) [CONCERNS
4XQ2 ERX 0 6
4Y9L ANDX 0 BITS22LS
4YP= BZE 0 ZC2 [J.IF PROPERTY FOUND
4^8W ZC11 BCT 1 ZC3 [OTHERWISE J.FOR NEXT PERHAPS
4^NG ZC1 ADX 5 FX1 [EXIT:REQUIRED ASS/ATT NOT FOUND
5286 EXIT 5 0
52MQ #
537B ZC2 SMO FX2 [REQUIRED ASSOC.FOUND PERHAPS:CLEAR!!
53M2 LDX 0 AWORK1 [PICK UP BIT WORD
546L ANDX 0 0(3) [MAKE SURE COMMANDS MATCH
54L= ANDX 0 HALFTOP
555W BZE 0 ZC11 [J.IF COMMANDS DIFFER
55KG SMO FX2
5656 LDX 0 AWORK1 [PICK UP BIT WORD AGAIN
56JQ ANDN 0 #7777
574B ORS 0 0(3) [MAKE SURE REQUIRED BITS SET AND SO-
57J2 ERS 0 0(3) [CLEAR OUT REQUIRED BITS
583L LDX 0 0(3) [PICK UP"ASSOC"WORD
58H= ANDN 0 #7777 [ONLY LOOK AT DEVICES-COMMAND IS SET!
592W BNZ 0 ZC4 [& J.IF SOME ASSOCS STILL EXIST:DONE!
59GG STOZ 0(3) [TO CLEAR OUT COMMAND BIT
5=26 ZC5 STOZ 1(3) [CLEAR
5=FQ ZC10 LDX 0 BNO(2)
5=^B SBN 0 1
5?F2 STO 0 BNO(2) [ADJUST COUNT
5?YL BNZ 0 ZC4 [& J.IF STILL SOME ASS/ATT LEFT
5#D= [OTHERWISE-
5#XW LDX 3 4 [FREE ASS/ATT CELL
5*CG CALL 6 YREC1
5*X6 SMO 7
5BBQ ADN 3 BASS
5BWB CALL 6 SFREE
5CB2 ZC4 ADX 5 FX1
5CTL EXIT 5 1
5D*= ZCATT
5DSW ADN 3 1 [ADJUST X3 FOR CONVENIENCE OF LOOP
5F#G BPZ 6 ZC6 [J.IF NON-CONSOLE PROP.
5FS6 ERX 6 1(3) [OTHERWISE INVESTIGATE CONSOLE PROP.
5G?Q ANDX 6 BITS22LS
5GRB BNZ 6 ZC1 [J.IF THIS CONSOLE PROP NOT ATT.
5H?2 BRN ZC5 [OTHERWISE GO & CANCEL ATTRIBUTION
5HQL ZC6 LDN 1 ATTMAX [ATTMAX<6 I HOPE!
5J== ZC7 ADN 3 1
5JPW LDX 0 1(3) [PICK UP NO.OF ATTRIBUTED PROPERTY
5K9G ERX 0 6
5KP6 ANDX 0 BITS22LS
5L8Q BZE 0 ZC8 [J.IF SAME AS REQUIRED NO.
5LNB BCT 1 ZC7 [J.FOR NEXT ATTRIBUTION
5M82 BRN ZC1 [EXIT-ATTRIBUTION NOT FOUND
5MML ZC8 SMO 1 [NOW MOVE
5N7= LDX 0 0(3)
5NLW BNZ 0 ZC9
5P6G BCT 1 ZC8
5PL6 GEOERR 1,ZEROPROP [ERROR CANCEL OF ZERO PROP.NO
5Q5Q ZC9 STO 0 1(3)
5QKB SMO 1
5R52 STOZ 0(3)
5RJL BRN ZC10
5S4= #
5SHW #
5T3G #
5TH6 Z1IDFCANC [CANCEL PROPERTY ENTRY
5W2Q LDX 7 ACOMMUNE2(2)
5WGB STO 7 AWORK2(2) [STORE PROPERTY NO
5X22 NGN 0 1
5XFL STO 0 AWORK1(2) [ASSOCIATES WORD FOR CANCELLING
5X^= CALL 6 OPEN
5YDW BPZ 7 YP1 [J.IF NOT CONSOLE PROP
5YYG LDN 5 BEXOT [X5 INITIALIZED:NEEDED FOR FREEING-
5^D6 LDX 4 BEXOT(2) [CONSOLE PROP.CELL
5^XQ BZE 4 YGEO
62CB YP2 LDX 3 4
62X2 CALL 6 YREC [FIND CONSOLE PROP CELL
63BL ADX 3 2
63W= LDX 0 BNO(3)
64*W ERX 0 7 [COMPARE PROP.NOS.
64TG ANDX 0 BITS22LS
65*6 BZE 0 YP3 [AND J.IF SAME
65SQ LDX 5 4 [OTHERWISE UPDATE X5
66#B LDX 4 0(3) [UPDATE X4
66S2 BNZ 4 YP2 [AND J.FOR NEXT CONSOLE PROP.
67?L YGEO GEOERR 1,CLUSTERC
67?^ ...#
67## ...# ENTRY IF PROPERTY NO. NOT FOUND IN APERI-CONSOLE BLOCK OR BLOCK
67#M ...# DOES NOT EXIST.
67*2 ...#
67** ...# VALUES ON ENTRY X4 = POINTER TO NOMINATED CONSOLE CELL
67*N ...# X5 = POINTER TO CONSOLE PROPERTY CELL
67B3 ...YGEO1 LDX 3 4
67BB ... CALL 6 YREC1 [FIND NOMINATED CONSOLE CELL
67BP ... LDX 1 4 [SV X4 IN X1
67C4 ... SMO 2
67CC ... LDX 6 BNUMB(3)
67CQ ... SLL 6 1
67D5 ... BNG 6 YGEO2 [J. IDENTIFIER CELL
67DD ... SMO 2
67DR ... LDX 4 4(3) [LD. WD. CONTAINING GEOG.NO. OF UNIT
67F6 ... SRL 4 6
67FF ... LDN 3 BUNIT [LD. BASE OF UNIT CELL
67FS ... BRN YGEO3
67G7 ...YGEO2 SMO 2
67GG ... LDX 4 BTYPE(3) [LD. GEOG.NO.
67GT ... LDN 3 BIPB [LD. BASE OF UNIT CHAIN - 7900.
67H8 ...YGEO3 ANDN 4 #7777
67HH ... LDN 6 0
67HW ... CALL 7 RECFIND [FIND RECORD ZERO.
67J9 ... LDX 7 1 [SV X1 WHICH HOLDS X4 IN X7
67JJ ... CALL 6 SEARCH [SEARCH FOR UNIT CELL
67JX ... LDX 1 7 [RELOAD X7 TO X1 WHICH IS X4
67K= ... SMO 3
67KK ... LDX 0 BNUMB(2)
67KY ... SLL 0 1
67L? ... BPZ 0 YGEO [J. ERROR UNIT RIGHTED.
67LL ... SMO 2
67L^ ... LDX 7 BTYPE(3) [LD. DEVICE TYPE OF IDF UNIT
67M# ... SLC 7 6
67MM ... ANDN 7 #77
67N2 ... FINDPEREC 3,APGEOG,4 [FIND DEVICE LIST
67N* ... BNG 3 YGEO4 [J. GEOG.NOS. DEVICE LIST NOT FOUND
67NN ... LTYPE 3,4 [X4 = DEVICE TYPE.
67P3 ... BXE 4 7,YGEO [J. SOMETHING WRONG - DEVICES MATCH
67PB ...YGEO4 LDX 4 1 [RE-LOAD VALUE OF X4
67PP ... BRN YP44 [J. TO REMOVE ENTRY.
67R= YP3 LDX 0 BLINE(3) [INVESTIGATE ANY ATTRIBUTIONS CELLS
68=W BZE 0 YP4 [AND J.IF NONE
68QG SBX 3 2 [OTHERWISE FREE THEM ALL
69=6 ADN 3 BLINE
69PQ YP5 CALL 6 SFREE
6=9B SMO 2
6=P2 LDX 0 0(3)
6?8L BNZ 0 YP5 [J.TO FREE NEXT SUBSID.CELL
6?N= SBN 3 BLINE
6#7W ADX 3 2
6#MG YP4 LDX 4 BTYPE(3) [NOW INVESTIGATE APERI/CONSOLE BLK??
6*76 BZE 4 YP41 [J.IF INVESTIGATION NOT NEEDED
6*LQ HUNTMISB 2,APERI,CONSOLE
6B6B ... BNG 2 YGEO1 [BLOCK SHOULD EXIST!
6BL2 ... LDX 1 2 [KEEP COPY OF X2
6GH2 LDX 3 2 [KEEP COPY OF X2
6H2L YP42 ADN 2 2
6HG= LDX 0 A1-1(2) [PICK UP PROP.NO & COMPARE WITH X7
6H^W ... BZE 0 YGEO1 [BUT BIG ERROR IF AT END OF CONS.BLK
6JFG ERX 0 7
6J^6 ANDX 0 BITS22LS
6KDQ BNZ 0 YP42 [J.IF NOT SAME PROP.NO
6KYB LDX 7 A1(2) [KEEP DESCRIPTION OF CONSOLE
6LD2 LDN 2 A1-1(2) [NOW OVERWRITE OLD ENTRY IN-
6LXL LDN 0 2 [APERI/CONSOLE BLOCK(IF NECESSARY)
6MC= SBS 0 A1(1)
6MWW ADX 1 A1(1)
6NBG LDN 1 A1-1(1)
6NW6 MOVE 1 2
6P*Q STOZ 0(1)
6PCF ... LDX 1 3 [ADDITIONAL COPY OF X2 INTO X1
6PF8 ... LDX 6 A1(3) [PICK UP COUNT OF NO OF WORDS USED
6PGX ... SBN 6 2
6PJL ... BNZ 6 YP43 [J.IF CONSOLE BLOCK WONT BE EMPTY
6PL* ... FREECORE 1 [OTHERWISE FREE IT
6PN4 ... BRN YP44 [J.TO UNSET"THIS IS CLUSTER CONS"BIT.
6PPR ...YP43 SBX 6 ALOGLEN(1)
6PRG ... ADN 6 16 [PREPARE X6 FOR ALTLEN TEST
6PTB BPZ 6 YP45 [DONT ALTER LENGTH
6Q*2 LDX 6 A1(3)
6QSL ALTLEN 3,6
6R4D ... HUNTMISB 3,APERI,CONSOLE [RE-HUNT APERI-CONSOLE AFTER ALTLEN
6R#= YP45 LDN 6 0 [AS"CONSOLE NOT YET FOUND"SWITCH
6RRW YP48 TXU 7 A1+2(3) [NOW GO THROUGH APERI/CONSOLE BLOCK-
6S?G BCS YP46 [TO SET/UNSET B1 OF ENTRIES USING-
6SR6 BNZ 6 YP47 [CONSOLE DESCRIBED IN X7
6T=Q LDCT 6 #200
6TQB ORS 6 A1+1(3)
6W=2 ERS 6 A1+1(3) [MAKE SURE B1 UNSET
6WPL BRN YP46
6X9= YP47 ORS 6 A1+1(3)
6XNW YP46 ADN 3 2
6Y8G LDX 0 A1+1(3)
6YN6 BNZ 0 YP48
6^7Q BNZ 6 YP41 [J.AS NO NEED TO UNSET"THIS IS CLUS-
6^MB [CONS."BIT,FOR CONSOLE STILL USED
7272 YP44 LDX 3 4
72LL CALL 6 YREC1 [NOW FIND CLUSTER CONSOLE CELL IN IDF
736= LDCT 0 #40
73KW SMO 2
745G ERS 0 BTYPE+1(3)
74K6 YP41 LDX 3 5 [NOW FREE CONSOLE PROPERTY CELL USING
754Q CALL 6 YREC1 [-PTR PRESERVED IN X5
75JB CALL 6 SFREE
7642 YP1 LDN 6 0
76HL CALL 7 RECFIND [FIND RECORD ZERO
773= LDX 3 BUNIT(2) [INVESTIGATE 7007'S FIRST
77GW BZE 3 YP6
782G CALL 6 YREC
78G6 YP12 ADX 3 2
78^Q LDX 0 0(3)
79FB SMO FX2
79^2 STO 0 AWORK3 [POINTER TO NEXT UNIT IN AWORK3
7=DL LDX 4 BLINE(3)
7=Y= BZE 4 YGEO
7?CW YP10 LDX 3 4 [KEEP X4 SAFE FOR ZACAN
7?XG CALL 6 YREC
7#C6 LDN 7 0
7#WQ CALL 5 ZACAN
7*BB BRN £
7*W2 LDN 7 BATT-BASS [ASSUMES BATT>BASS!
7B*L CALL 5 ZACAN1
7BT= BRN £
7C#W LDX 3 4
7CSG CALL 6 YREC1 [GO BACK TO LINE CELL
7D#6 ADX 3 2
7DRQ LDX 4 BLINE(3)
7F?B BZE 4 YP7 [J.IF NO 7020
7FR2 LDX 0 0(3)
7G=L SMO FX2
7GQ= STO 0 AWORK4 [STORE POINTER TO NEXT LINE CELL
7H9W YP8 LDX 3 4
7HPG CALL 6 YREC
7J96 LDN 7 0
7JNQ CALL 5 ZACAN
7K8B BRN £
7KN2 LDN 7 BATT-BASS
7L7L CALL 5 ZACAN1
7LM= BRN £
7M6W LDX 3 4
7MLG CALL 6 YREC1 [FIND 7020 CELL AGAIN
7N66 ADX 3 2
7NKQ LDX 4 0(3)
7P5B BNZ 4 YP8 [J FOR NEXT 7020 CELL
7PK2 SMO FX2
7Q4L LDX 4 AWORK4 [RESCE"NEXT LINE PTR"
7QJ= BNZ 4 YP10 [J.FOR NEXT LINE
7R3W BRN YP9 [OTHERWISE NEXT UNIT
7RHG YP7 LDX 4 0(3)
7S36 BNZ 4 YP10 [J.FOR NEXT LINE
7SGQ YP9 SMO FX2 [OTHERWISE INVESTIGATE NEXT UNIT
7T2B LDX 3 AWORK3
7TG2 BZE 3 YP11 [J.IF NO MORE UNITS
7T^L CALL 6 YREC1
7WF= BRN YP12
7WYW YP11 LDN 6 0 [SEARCH IPB CHAIN
7XDG CALL 7 RECFIND
7XY6 YP6 LDX 3 BIPB(2)
7YCQ BZE 3 YP21 [J.IF NO IPB'S
7YXB CALL 6 YREC [OTHERWISE FIND FIRST IPB UNIT
7^C2 YP15 ADX 3 2
7^WL LDX 0 0(3)
82B= SMO FX2
82TW STO 0 AWORK3 [STORE POINTER TO NEXT IPB UNIT
83*G LDX 4 BLINE(3)
83T6 BZE 4 YP16 [J.IF NO IDENTIFIERS
84#Q LDX 3 4
84SB CALL 6 YREC
85#2 YP14 SMO 2
85RL LDX 0 0(3)
86?= SMO FX2
86QW STO 0 AWORK4
87=G LDN 7 0
87Q6 CALL 5 ZACAN
889Q BRN £
88PB LDN 7 BATT-BASS
8992 CALL 5 ZACAN1
89NL BRN £
8=8= SMO FX2
8=MW LDX 4 AWORK4
8?7G BZE 4 YP16
8?M6 LDX 3 4
8#6Q CALL 6 YREC1
8#LB BRN YP14
8*62 YP16 SMO FX2
8*KL LDX 3 AWORK3
8B5= BNZ 3 YP20
8BJW YP21 LFCCAT
8C4G CALL 7 WRITECLOSE
8C## ... UPPLUS 1
8D3Q YP20 CALL 6 YREC1
8DHB BRN YP15
8F32 #
8FGL #
8G2= Z2IDFCANC [CANCEL ASSOCIATE ENTRY
8GFW CALL 7 PARSORT
8G^G LDX 0 ACOMMUNE1(2)
8HF6 STO 0 AWORK1(2) [KEEP "BITS" WORD
8HYQ CALL 7 TRACE [FIND PARENT CELL
8JDB LDX 4 BRECNO(2)
8JY2 SLL 4 9
8KCL ORX 4 3 [MAKE IDF POINTER IN X4 TO PARENT CEL
8KX= LDN 7 0 ["ASSOCIATE" SWITCH
8LBW CALL 5 ZACAN [CANCEL ASSOC
8LWG BRN ZA1 [NOTHING DONE EXIT
8MB6 CALL 7 WRITECLOSE
8MKY ... UPPLUS 2
8N*B ZA1 CALL 7 ZCLOSE
8NK8 ... UPPLUS 2
8P#L #
8PS= #
8Q?W Z3IDFCANC [CANCEL ATTRIBUTE ENTRY
8QRG CALL 7 PARSORT
8R?6 CALL 7 TRACE [FIND PARENT CELL
8RQQ LDX 4 BRECNO(2) [CREATE IDF POINTER TO PARENT CELL
8S=B SLL 4 9
8SQ2 ORX 4 3
8T9L LDN 7 BATT-BASS [SET X7 FOR ZACAN
8TP= CALL 5 ZACAN
8W8W BRN ZT1 [J.IF ATTRIBUTION NOT FOUND
8WNG SMO FX2
8X86 LDX 5 AWORK2
8XMQ BNG 5 ZT2 [J.IF CONSOLE PROP
8Y7B ZTXIT
8YM2 LFCCAT
8^6L CALL 7 WRITECLOSE
8^BD ... UPPLUS 3
925W ZT1 CALL 7 ZCLOSE
92*N ... UPPLUS 2
9356 ZT2 LDN 6 0 [NOW REMOVE ATT FROM PROP.CONS.CELL
93JQ CALL 7 RECFIND
944B LDX 3 BEXOT(2)
94J2 BZE 3 YGEO
953L ZT4 LDN 5 BLINE(3) [LEAST THIS NEXT IS RIGHT CONS.PROP.
95H= CALL 6 YREC [FIND NEW CONSOLE PROP CELL
962W ADX 3 2
96GG LDX 0 BNO(3)
9726 SMO FX2
97FQ ERX 0 AWORK2 [TO COMPARE PROP.NOS
97^B ANDX 0 BITS22LS
98F2 BZE 0 ZT3 [J.IF PROPERTIES THE SAME
98YL LDX 3 0(3)
99D= BNZ 3 ZT4 [OTHERWISE J.FOR NEXT PROP.
99XW BRN YGEO
9=CG ZT3 LDN 6 5 [SET X6 AS CELL PTR TO FIRST ATT.PTR
9=X6 LDX 0 BNUMB(3) [COUVT OF NO OF ATTRIBUTIONS
9?BQ SBN 0 1 [ADJUST COUNT
9?WB STO 0 BNUMB(3) [STORE COUNT BACK
9#B2 BZE 0 ZT11 [& IF COUNT ZERO J.AS LESS TO DO
9#TL LDX 7 BLINE(3)
9**= SMO FX2
9*SW STO 5 AWORK3
9B#G LDN 5 3 [X5 IS CT.OF NO.OF ATTS LEFT IN CELL
9BS6 ZT6 SMO 6
9C?Q LDX 0 0(3) [PICK UP ATTRIB.PTR
9CRB ERX 0 4 [COMPARE WITH POINTER IN X4
9D?2 ANDX 0 BITS22LS
9DQL BZE 0 ZT5 [J.IF SAME
9F== ADN 6 1 [UPDATE X6
9FPW BCT 5 ZT6 [J.FOR NEXT POINTER IF NOT IN NEW CEL
9G9G BZE 7 YGEO
9GP6 LDX 3 7 [OTHERWISE GET NEW CELL
9H8Q LDX 1 FX2
9HNB LDX 0 AWORK3(1) [SWAP AROUND AND SO UPDATE "PREVIOUS"
9J82 STO 0 AWORK4(1) [-POINTERS
9JML STO 7 AWORK3(1)
9K7= CALL 6 YREC
9KLW ADX 3 2
9L6G LDX 7 0(3) [UPDATE X7,X6 & X5
9LL6 LDN 6 1
9M5Q LDN 5 7
9MKB BRN ZT6 [J.FOR NEXT COMPARISON
9N52 ZT5 LDX 4 BRECNO(2) [NOW MAKE IDF POINTER TO ATTRIB.PTR
9NJL SLL 4 9
9P4= SBX 3 2 [ADJUST X3 TO MAKE IDF POINTER
9PHW ORX 4 3
9Q3G ADX 4 6 [MAKE PTR POINT TO RIGHT PART OF CELL
9QH6 ADX 3 2
9R2Q BNZ 7 ZT7 [J.IF STILL MORE SUBSID.CELLS
9RGB BCT 5 ZT8 [J.IF NOT AT END OF CELL YET
9S22 ZT11 SMO 6
9SFL STOZ 0(3) [ZEROIZE ATT.PTR(LAST ENTRY)
9S^= BRN ZTXIT [ALL DONE!
9TDW ZT7 LDX 3 7 [NOW FIND LAST SUBSID CELL
9TYG LDX 1 FX2
9WD6 LDX 0 AWORK3(1) [SWAP TO UPDATE "PREVIOUS"POINTERS
9WXQ STO 0 AWORK4(1)
9XCB STO 7 AWORK3(1)
9XX2 CALL 6 YREC
9YBL ADX 3 2
9YW= LDX 7 0(3)
9^*W BNZ 7 ZT7 [J.IF LAST CELL NOT YET FOUND
9^TG LDN 6 0
=2*6 LDN 5 6
=2SQ LDN 5 7
=3#B ZT8 ADN 6 1 [INVESTIGATE LAST CELL TO FIND LAST-
=3S2 SMO 6 [POINTER
=4?L LDX 7 0(3)
=4R= BZE 7 ZT9 [J.IF PAST LAST POINTER
=5=W BCT 5 ZT8 [OTHERWISE CONTINUE INVESTIGATION
=5QG SMO 6
=6=6 STOZ 0(3)
=6PQ BRN ZT12
=79B ZT9 SBN 6 1
=7P2 SMO 6
=88L LDX 7 0(3) [PICK UP LAST POINTER
=8N= SBN 6 1 [ADJUST X6
=97W BZE 6 ZT10 [& J.IF CELL MUST BE FREED
=9MG SMO 6 [OTHERWISE ZEROIZE LAST ENTRY
==76 STOZ 1(3)
==LQ ZT12 LDX 3 4 [AND PUT LAST ENTRY ON TOP OF CANCEL
=?6B CALL 6 YREC1 [LED ENTRY
=?L2 ADX 3 2
=#5L LDX 0 0(3) [MAKE SURE THIS IS NOT LAST ENTRY
=#K= BZE 0 ZTXIT [& J.IF IT IS
=*4W ANDX 7 BITS22LS [NOW CHECK IF B0 OF X7 SHOULD BE SET
=*JG ERX 4 7 [TO COMPARE RECORD NOS
=B46 SRL 4 9
=BHQ ANDN 4 #7777
=C3B BZE 4 ZT14 [J.IF RECORD NOS EQUAL
=CH2 ORX 7 GSIGN [OTHERWISE SET B0
=D2L ZT14 STO 7 0(3)
=DG= BRN ZTXIT [ALL DONE
=D^W ZT10 SMO FX2 [FREE LAST SUBSID.CELL
=FFG LDX 3 AWORK4
=F^6 CALL 6 YREC1
=GDQ CALL 6 SFREE
=GYB BRN ZT12 [J.TO PLACE LAST ENTRY IN NEW POSN.
=GYH ...[
=H*^ ...[
=HD2 #END
^^^^ ...42553145000100000000