{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: TWINSETD866)}}
====== TWINSETD866 ======
(George Source)
**Macros used:** [[george:macro:ALTLEN|ALTLEN]], [[george:macro:CHAIN|CHAIN]], [[george:macro:COOR3|COOR3]], [[george:macro:DERING|DERING]], [[george:macro:DERINGD|DERINGD]], [[george:macro:DOWN|DOWN]], [[george:macro:ENRING|ENRING]], [[george:macro:FINDPEREC|FINDPEREC]], [[george:macro:FREECORE|FREECORE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:HUNT2J|HUNT2J]], [[george:macro:HUNTW|HUNTW]], [[george:macro:IPCREAD|IPCREAD]], [[george:macro:IPCREP|IPCREP]], [[george:macro:IPCWRITE|IPCWRITE]], [[george:macro:JSHARED|JSHARED]], [[george:macro:JTWIN|JTWIN]], [[george:macro:LADDP|LADDP]], [[george:macro:LGEOG|LGEOG]], [[george:macro:LONGCLEAR|LONGCLEAR]], [[george:macro:LONGON|LONGON]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MHUNT|MHUNT]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:NAME|NAME]], [[george:macro:RINGTWO|RINGTWO]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:SETUPCORE|SETUPCORE]], [[george:macro:SUSPEND|SUSPEND]], [[george:macro:TCLOSE|TCLOSE]], [[george:macro:TRACE|TRACE]], [[george:macro:TWTRACE|TWTRACE]], [[george:macro:UP|UP]], [[george:macro:UPPLUS|UPPLUS]], [[george:macro:V|V]]
22FL #SEG TWINSETD70 [BOB NICHOLSON
22^= #LIS K0TWINSET>K0TWINSETD
23DW 8HTWINSETD
23YG #
24D6 # THIS SEGMENT RECEIVES K1,AND SENDS K2,MESSAGE CONCERNED WITH
24XQ # TWINNING
25CB #
25X2 SEGENTRY K1TWINSETD,QK1
26BL SEGENTRY K2TWINSETD,QK2
26W= SEGENTRY K3TWINSETD,QK3
27*W SEGENTRY K4TWINSETD,QK4
27J6 ... SEGENTRY K5TWINSETD,QK5 [SETS NOT INITIALISED REPLIES
27M= ... SEGENTRY K7TWINSETD
27QB ... +0 [=-1 IF TRACING
27TG #
28*6 # IPCREAD SUBROUTINE
28SQ #
29#B QK1 [*****
29S2 #SKI K6TWINSETC>99-99
2=?L TRACE 2,TWREADC
2=R= LDN 3 ETBUFS(2)
2?=W IPCREAD ABS,3,ETNBLEN,ETIOUT [DO ACTUAL READ
2?QG ... LDN 0 JROUTS [SET READ OUTSTANDING MKR
2#=6 BRN XIT
2#PQ #
2*9B # IPCWRITE SUBROUTINE
2*P2 #
2B8L QK2 [*****
2BN= MHUNTW 3,EWDAS,ESEND [SEARCH FOR DATA BLOCK
2C2L ... NAME 3,EWDAS,ESENDT [IN CASE OTHER ESENDS ARE CHND BEFORE
2C7W #SKI K6TWINSETC>99-99
2CMG TRACE ENMARK(3),TWRITEC
2D76 LDX 2 ALOGLEN(3)
2DLQ SBN 2 2
2F6B LDX 5 XTYPE(1)
2FL2 IPCWRITE BLK,5,2,ETIOUT [SEND MESSAGE
2FRG ... SMO FX1
2FRS ... LDX 0 K7TWINSETD
2FS6 ... BZE 0 NTRAC1 [J IF NO TRACING
2FSQ ... MHUNTW 3,EWDAS,ESENDT
2FYB ... LDN 3 ENMARK(3)
2F^M ...NTRAC1
2G5L LDN 0 JIOUTS
2GK= XIT ORS 0 ETWINMK
2GMN ... SMO FX1
2GMY ... LDX 5 K7TWINSETD
2GN8 ... BZE 5 NTRAC2 [J IF NOT TRACING
2GNH ... LDN 5 #6463 [TS
2GPL ... SLL 5 12
2GQP ... ANDN 0 JIOUTS+JROUTS
2GRS ... ORX 5 0
2GSX ... LDX 0 ETWINMK
2GW2 ... STO 0 ACOMMUNE2(2)
2GX5 ... STO 5 ACOMMUNE1(2)
2GXX ... STO 7 ACOMMUNE3(2) [USUALLY LINK IN CALLING SEG
2GYP ... LDN 4 ACOMMUNE4(2)
2G^H ... MOVE 3 2
2H2B ... TWTRACE
2H2X ...NTRAC2
2H4W TRACE ETWINMK,ETWINMK
2HJG UP
2J46 #
2JHQ [ SUBROUTINE TO SEARCH FOR ESEND WITH REQUEST TYPE
2K3B [ IN X6 AND NUMBER IN X5.
2KH2 [ X7 LINK - EXITS 0 IF FOUND,1 IF NOT FOUND:X3 PTS TO ENLINK IF 0
2L2L [
2LG= SEAR LDX 3 FX2
2L^W TA HUNT2J 3,EWDAS,ESEND,,NFOUND
2MFG LDEX 0 ENMARK(3)
2M^6 SBX 0 6
2NDQ BNZ 0 TA [J IF REQUEST TYPE DIFFERS
2NYB LDX 0 ENSTART(3)
2PD2 SBX 0 5
2PXL BNZ 0 TA [J IF NUMBER DIFFERS
2QC= TRACE 6,TFOUND
2QWW EXIT 7 0 [FOUND
2RBG NFOUND
2RW6 EXIT 7 1 [NOT FOUND
2S*Q [
2STB #
2T*2 # CONSTANTS
2TSL #
2W#= XTYPE
2WGG ...#HAL EWDAS+ESENDT,+ENMARK
2X?G XM6 #76007777 [CLEARS BITS 5,6,7,8,9,10,11
2XR6 #
2Y=Q #
2YQB #
2^=2 # SUBROUTINE TO ASSEMBLE HELLO MESSAGE
2^PL #
329= # FORMAT OF WORD IS
32NW #
338G # B0-B2 NOT USED
33N6 # B3 =1 IF WE HAVE RIGHT TO DISENGAGE
347Q # B5 IS THE LOCK-OUT BIT (=0 IF WE HAVE IT)
34MB # B7 =1 IF THIS PROCESSOR GOING TO SEND LOCK-OUT
3572 # B9-B10 IS THE STATUS AS FOR BSUNIT
35LL # B15-23 GEOG. NO.
366= #
36KW QK3 [*****
375G LDX 6 ETNBLEN
37K6 ADN 6 2
3826 ...[ SET UP ENLINK TO CONTAIN REPLY. WILL BE
38C6 ...[ RENAMED TO ESEND BY CALLING SEGMENT
38S6 ...[ AS IPC MAY OTHERWISE PICK IT UP AS TRANSFER BUFFER
3996 ...[ IF A WRITE HAS ALREADY BEEN ISSUED
39L6 ... SETUPCORE 6,1,EWDAS,ENLINK,,1
3=3= LDN 0 ENTRGA(1)
3=GW STO 0 ENTRGA(1)
3?2G STO 0 ENTRGA+1(1) [MAKE RING EMPTY
3?G6 LDN 2 ENSTART(1)
3?^Q CALL 7 X6 [GET PTR TO FIRST
3#FB BRN NOTWINS
3#^2 R22 LADDP 3,4 [X4 PTS TO APIA
3*DL LGEOG 3,0
3*Y= STO 0 0(2) [STORE GEOG. NO
3BCW SMO 4
3BXG LDX 0 BSUNIT3
3CC6 ANDN 0 4
3CWQ DCH 0 0(2) [DISENGAGE BIT TO B3
3DBB SMO FX1
3DW2 LDX 0 XBIT5910
3F*L SMO 4
3FT= ANDX 0 BSUNIT
3G#W ORS 0 0(2) [STATUS AND LOCK-OUT
3R66 ADN 2 1 [UPDATE MOD
3RKQ CALL 7 X3
3S5B BRN R21 [NO MORE
3SK2 BRN R22 [J IF DO NEXT
3T4L R21 NGN 0 1
3TJ= STO 0 0(2) [-1 TO TERMINATE
3W3W UP
3WHG [
3X36 #
3XGQ # SUBROUTINE TO GO ROUND JOBRING WAKING UP WAITING ACTIVITIES
3Y2B # WHOSE NUMBER (X5) AND REQUEST TYPE (X6) AGREE : REPLY IN X4
3YG2 #
3Y^L R7 LDX 2 FX2
3^F= LDX 3 ETFRING(2)
3^YW R7A LDN 0 ETFRING(2)
42DG TXU 0 3
42Y6 BCC (7) [J IF NO MORE
43CQ SBN 3 ENLA [PTR TO NEXT ENLINK
43XB #SKI K6TWINSET>99-99
44C2 (
44WL LDX 0 ATYPE(3) [CHECK IF ENLINK
45B= SRL 0 12
45TW SBN 0 EWDAS+ENLINK
46*G BZE 0 R8
46T6 GEOERR 1,NOT ENLK
47#Q R8
47SB )
48#2 BNG 5 R9 [J IF NOT TO CHECK DETAILS
48RL TXU 6 ENRQ(3)
49?= TXU 5 ENBR(3)
49QW BCC R9 [J IF MATCH
4==G R8F LDX 3 ENLA(3) [GET NEXT
4=Q6 LDX 2 FX2
4?9Q BRN R7A
4?PB R9 LDX 0 ENRQ(3) [REQUEST TYPE
4#92 SBN 0 CLIP
4#NL BZE 0 R8F [IGNORE IF CLOSE
4*8= LDX 0 ENRQ(3)
4*MW SBN 0 INIT
4B7G BZE 0 R8F [OR IF INITIALISE
4BM6 STO 4 ENRP(3) [STORE REPLY
4C6Q LDX 2 3
4CLB LDX 1 ENWTS(3) [WAITING STYLE
4D62 R10 LDX 2 BPTR(2) [SEARCH FOR WAITING ACTIVITY
4DKL LDX 0 ATYPE(2)
4F5= TXL 0 CACT
4FJW BCS R10 [J IF NOT ACTIVITY
4G4G LONGCLEAR 2,0(1),R11 [WAKE UP IF POSSIBLE
4GJ6 R11 LDX 2 3
4H3Q LDX 3 ENLA(3) [NEXT ON RING
4HHB DERINGD ENLA(2) [DECHAIN
4J32 BRN R7A
4JGL #
4RWW ...#
4RX* ...# SUBROUTINE TO DO THE FOLLOWING
4RXS ...#
4RY? ...# X6=0 CHAIN ENLINK ON TO JOBRING
4RYQ ...#
4R^9 ...# X6 NON ZERO DECHAIN ENLINK FROM ESEND,LONGCLEAR ACTIVITY (IF ANY)
4R^N ...# AND PUT REPLY IN
4S27 ...#
4S2L ...R1A MHUNTW 3,EWDAS,ESEND
4S35 ...R1 LDN 0 ENTRGA(3)
4S3J ... TXU 0 ENTRGA+1(3)
4S43 ... BCC R2 [J IF NOTHING CHAINED
4S4G ... LDX 4 ENTRGA(3)
4S4^ ... DERING ENTRGA(3) [ELSE DECHAIN
4S5D ... SBN 4 ENLA [PTR TO START OF ENLINK
4S5X ... LDX 1 4
4S6B ... STO 6 ENRP(1) [STORE REPLY
4S6T ... BZE 6 R3 [J IF ACTIVITY NOT TO BE WOKEN
4S7# ...R4 LDX 1 BPTR(1) [LOOK BACK FOR ACTIVITY
4S7R ... LDX 0 ATYPE(1)
4S8= ... TXL 0 CACT
4S8P ... BCS R4 [J NOT ACTIVITY
4S98 ... SMO 4
4S9M ... LDX 3 ENWTS [GET WAITING STYLE
4S=6 ... LONGCLEAR 1,0(3),R3A [AND WAKE UP IF WAITING
4S=K ...R3A EXIT 7 0
4S?4 ...R3 ENRING 1,ETBRING(2) [PUT ON END OF JOBRING
4S?H ...R2 EXIT 7 0
4S#L [
4SS= [ SUBROUTINE TO RING ESEND AND ENLINK TOGETHER AND CHAIN
4T?W [ ESEND AS LAST BLOCK IN TWINNING ACTIVITY .X1-> ESEND X3-> ENLINK
4TRG [
4W?6 SETOFF
4WQQ RINGTWO ENTRGA(1),ENLA(3) [RING THEM TO GETHER
4X=B LDX 2 FX2
4XQ2 LDX 2 ACTRING(2)
4Y9L SBN 2 ACTRING
4YP= LDX 2 BPTR(2) [PTR TO LAST BLK
4^8W CHAIN 1,2 [PUT ESEND ON END
4^NG EXIT 7 0
5=FQ #
5=^B # SUBROUTINE TO GO THOUGH ALL UDAS DEVICES LOOKING FOR TWINNED ONES
5?F2 #
5?YL X6 LDX 1 FX1
5#D= X4 ADN 1 1
5#XW LDX 0 TB-1(1) [NEXT DEVICE
5*CG BNG 0 (7)
5*X6 ... FINDPEREC 3,APFOTY,TB-1(1),X3,,XCME,XCME [GET PTR
5BBQ BNG 3 X4 [J IF NO MORE OF THIS TYPE
5BWB JTWIN 3,X5 [J IF TWINNED
5CB2 BRN X3 [LOOK FOR NEXT
5CTL X5 EXIT 7 1
5D*= #
5DSW NOTWINS
5F#G GEOERR 1,NOTWINS
5FS6 #
5G?Q TB +6
5GRB +13
5H?2 +26
5HQL -1
5J== #
5JPW #
5K9G XBIT5910 #01060000
5KP6 #
5L8Q # SUBROUTINE TO CHECK REPLY FROM GHL OR GHLR
5LNB #
5M82 QK4 [*****
5MML LDN 1 ETBUFS+1(2) [START OF BUFFER
5N7= V8 LDX 4 0(1)
5N8S ... STO 4 ACOMMUNE4(2) [STORE FOR TRACING
5N*G ... BNG 4 V1 [J IF NO MORE
5P6G LDEX 4 0(1)
5PL6 ... FINDPEREC 3,APGEOG,4,,,XCME [GET DL PTR
5Q5Q ... BNG 3 V2 [ERROR IF NOT THERE
5QKB JTWIN 3,V3 [J IF TWINNED
5R52 ... BRN V2 [ELSE ERROR
5RJL V3 LADDP 3,3
5S4= LDX 5 BSUNIT(3)
5S#4 ... STO 5 ACOMMUNE5(2) [STORE FOR TRACING
5SHW ANDX 5 BITS910 [STATE IN OUR LISTS
5T3G LDX 6 0(1)
5TH6 ANDX 6 BITS910 [STATE IN THEIRS
5W2Q BZE 6 V4 [J IF DEDICATED IN THEIR LISTS
5WGB ERX 6 BITS910
5X22 BZE 6 V5 [J IF UNDEDICATED IN THEIR LISTS
5XFL BZE 5 V6 [J IF DEDICATED IN OURS - ERROR
5X^= ERX 5 BITS910
5YDW BNZ 5 V [J IF SHARED IN BOTH PROCESSORS
5YL4 ... BRN V6 [SHARED-UNDEDICATED
66S2 V9 ADN 1 1 [UPDATE MOD
67?L BRN V8 [GO FOR NEXT
67R= #
68=W # SHARED IN BOTH PROCESSORS
68QG #
68RN ...[ CHECK IF BISENGAGE RIGHTS DIFFER
68SW ...[
68W4 ...V LDX 5 BSUNIT3(3) [DR FROM THIS PROCESSOR
68X= ... ANDN 5 4
68YD ... LDCH 6 0(1)
68^L ... ANDN 6 4 [DR FROM OTHER PROCESSOR
692S ... ERX 5 6
6942 ... BNZ 5 XDIF [DRS DIFFER
6958 ... LDX 0 AFTERU
696B ... BNG 0 XDIF [J IF THIS PROCESSOR STAYS AS IT IS
697J ... LDN 0 4
698Q ... ERS 0 BSUNIT3(3) [REVERSE DR
699Y ...[ NOW CLEAR ANY GHOLD MESSAGES WAITING
69?6 ... LDX 2 FX2
69## ... STO 1 AWORK4(2) [SAVE X1 AND X3
69*G ... STO 3 AWORK3(2)
69BN ... LDN 6 GHOLD [REQUEST TYPE
69CW ... LDEX 5 0(1) [GEOG NO
69F4 ... CALL 7 SEAR [FIND ESEND IF THERE
69G= ... BRN XHLD [J IF FOUND
69HD ... BRN RST [J IF NOT FOUND
69JL ...XHLD FREECORE 3
69KS ...RST LDX 3 AWORK3(2) [RESTORE X1 AND X3
69M2 ... LDX 1 AWORK4(2)
69M5 ...XDIF
69M6 ...[
69M7 ...[ WE GET ALL ACTIVITIES TO REISSUE TRANSFERS BY SETTING NOT INITIAL-
69M8 ...[ ISED REPLY. THIS IS BECAUSE THE OTHER PROCESSOR MAY HAVE FORGOTTEN
69M9 ...[ ABOUT ANY REPLIES IT WAS SENDING TO US.
69M= ...[
69M? ... LDX 2 FX2
69M# ... LDX 5 ETWINMK
69M* ... STO 5 ACOMMUNE1(2) [REMEMBER OLD SETTING
69MB ... STO 1 AWORK4(2) [AND MOD
69MC ... STO 3 AWORK3(2) [AND APIA
69MD ... LDCT 0 #400 [STOPS USE OF TWINNING
69MF ... ORN 0 INITCOM [WHILE BSUNIT BEING CHANGED
69MG ... STO 0 ETWINMK
69MH ... LDX 0 5
69MJ ... ANDN 0 JIOUTS
69MK ... TRACE 5,WRITEOS
69ML ... BZE 0 NWOS [J IF NO WRITE OUTSTANDING
69MM ...XTY IPCREP W,3 [SEE HOW ITS GOING
69MN ... BPZ 3 XFIN [J IF FINISHED
69MP ... SUSPEND [ELSE WAIT
69MQ ... BRN XTY
69MR ...XFIN MHUNT 3,EWDAS,ESENDT
69MS ... NAME 3,EWDAS,ESEND
69MT ... TRACE ENMARK(3),WAITED
69MW ... LDN 0 JIOUTS
69MX ... ERS 0 ACOMMUNE1(2) [CLEAR WRITE OUTSTANDING MKR
69MY ...NWOS LDN 6 7 [NOT INITIALISED REPLY
69M^ ... STO 6 ACOMMUNE2(2)
69N2 ... DOWN TWINSETD,5 [CLEAR OUT EVERYTHING
69N3 ... LDX 3 AWORK3(2) [APIA PTR
69N4 ... SMO BSUNIT4(3)
69N5 ... LDN 0 0
69N6 ... BZE 0 NOUSERS [J IF NO ONE HAS LOCK-OUT
69N7 ... COOR3 #41 [WAIT FOR SPRING CLEAN
69N8 ... BRN NWOS [AND TRY AGAIN
69N9 ...NOUSERS
69N= ... LDCT 7 #10 [LO BIT
69N? ... LDX 5 BSUNIT(3)
69N# ... LDX 1 AWORK4(2)
69N* ... LDX 6 0(1)
69NB ... TRACE 5,OURS
69NC ... TRACE 6,THEIRS
69ND ... ANDX 5 7
69NF ... ANDX 6 7
69NG ... ERX 5 6
69NH ... BNZ 5 V9B [J IF LOCK-OUTS DIFFER
69NJ ... LDX 0 AFTERU
69NK ... BNG 0 V9B [J IF WE STAY AS WE ARE
69NL ... ERS 7 BSUNIT(3) [OTHERWISE REVERSE
69NM ... TRACE BSUNIT(3),CHANGED
69NN ...V9B SMO FX1
69NP ... LDX 0 XM7
69NQ ... ANDS 0 BSUNIT(3) [CLEAR BITS 6 AND 7
69NR ... LDX 0 ACOMMUNE1(2)
69NS ... STO 0 ETWINMK [RESTORE ETWINMK
69NT ... BRN V9 [GO FOR NEXT
7CSG V4 BZE 5 V6 [DEDICATED IN BOTH LISTS
7D#6 ERX 5 BITS910
7DRQ BZE 5 V9 [DEDICATED TO THEM-UNDEDICATED TO US
7F?B V6 LDX 4 1 [COMPILE MESSAGE FOR GEOSTOP
7FR2 HUNTW 3,EWDAS,EGOT
7G=L BPZ 3 V10 [J IF ALREADY EXISTS
7GQ= SETNCORE 2,3,EWDAS,EGOT [ELSE SET ONE UP
7H9W LDN 0 0
7HPG STO 0 ENTRGA(3)
7J96 BRN V11
7JNQ V10 LDX 5 ALOGLEN(3)
7K8B ADN 5 1
7KN2 ALTLEN 3,5 [EXTEND IT
7L7L MHUNTW 3,EWDAS,EGOT
7LM= V11 SMO 4
7M6W LDEX 1 0
7M?5 ... SMO ENTRGA(3)
7M#G ... STO 1 ENTRGA+1(3) [STO UNIT NO OF BAD UNIT
7M*X ... LDN 0 1
7MC# ... ADS 0 ENTRGA(3) [UPDATE MOD
7WF= VE LDX 1 4
7WYW BRN V9 [GO FOR NEXT
7XDG #
7XY6 # DEVICE IS UNDEDICATED IN OTHER PROCESSOR
7YCQ #
7YXB V5 BZE 5 V9 [J IF DEDICATED TO US
7^4J ... BRN V6 [ERROR IF UNDEDICATED OR SHARED
8?M6 V2 GEOERR 1,NO DEV
8#6Q #
8SQ2 [
8STT ...V1 HUNTW 2,EWDAS,ITCH
8SX6 ... BNG 2 NTH
8SYC ... FREECORE 2 [FREE ALL ITCHES
8S^N ... BRN V1
8T2^ ...NTH
8T4= ... HUNTW 2,EWDAS,EGOT
8TP= BNG 2 V1A [J IF NO ERRORS
8TS7 ... LDN 0 1
8TT6 ... ADS 0 ENTRGA(2) [ONE FOR RECORD HEADER
8TW5 ... TCLOSE
8TX4 ... LDN 0 IPBDOWN+GEODOWN+ETMFAIL
8TY3 ... ANDX 0 ETWINMK
8T^2 ... ERS 0 ETWINMK
8T^^ ... UP
8W2Y ...V1A LONGON IPBDE
8W3X ... UPPLUS 1
98F2 #
98YL #
99D= XM7 #77177777
99XW #
99YL ...[
99YW ...QK5
99^6 ...[
99^B ...[ PUT IN REPLY IN ACOMMUNE2 TO EVERYTHING
99^L ...[
99^W ... LDX 6 ACOMMUNE2(2)
9=26 ... STO 6 AWORK1(2)
9=2B ...N2B LDX 3 FX2 [SEARCH ESENDS ON ACTIVITY CHAIN
9=2L ...N2A HUNT2J 3,EWDAS,ESEND,,NES
9=2W ... LDX 0 ENMARK(3)
9=36 ... SBN 0 INIT
9=3B ... BZE 0 N2A [BUT NOT INITIALISE
9=3L ... SBN 0 CLIP-INIT
9=3W ... BZE 0 N2A [OR CLOSE
9=46 ... LDX 5 3 [REMEMBER ESEND
9=4B ... CALL 7 R1 [PUT REPLY IN ENLINK
9=4L ... FREECORE 5 [FREE ESEND
9=4W ... BRN N2B [GO FOR NEXT
9=56 ...[
9=5B ...[ NO MORE ON ACTIVITY CHAIN-SEARCH JOBRING
9=5L ...[
9=5W ...NES LDX 2 FX2
9=66 ... TRACE AWORK1(2),K5TD
9=6W ... SMO FX1
9=76 ... LDX 0 K7TWINSETD
9=7B ... BZE 0 NTRAC3 [J IF NOT TRACING
9=7L ... LDN 0 #5305 [K5
9=7W ... STO 0 ACOMMUNE3(2)
9=86 ... TWTRACE
9=8B ...NTRAC3
9=8W ... LDX 4 AWORK1(2) [REPLY
9=96 ... NGN 5 1 [DON'T CHECK DETAILS
9=9B ... CALL 7 R7
9=9L ...[
9=9W ...[ FREE EWDAS/ITCH BLOCKS
9==6 ...[
9==B ...NCH HUNTW 1,EWDAS,ITCH
9==L ... BNG 1 YCH [NO MORE LEFT
9==W ... FREECORE 1
9=?6 ... BRN NCH [FREE NEXT
9=?B ...[
9=?L ...[ NOW ADJUST BSUNIT FOR ALL SHARED DISCS
9=?W ...[
9=#6 ...YCH CALL 7 X6 [GET PTR (X3) TO FIRST TWINNED DEVICE
9=#B ... BRN NOTWINS [GEOERR IF NONE
9=#L ...XGN LADDP 3,2 [X2 PTR TO APIA
9=#W ... JSHARED 2,NSH [TO NSH IF SHARED
9=*6 ... BRN XNT [ELSE LOOK FOR NEXT
9=*B ...NSH SMO FX1
9=*L ... LDX 0 XM7
9=*W ... ANDS 0 BSUNIT(2) [CLEAR B6 AND B7
9=B6 ...XNT CALL 7 X3 [GET NEXT TWINNED DEVICE
9=BB ... BRN XALL [NO MORE
9=BL ... BRN XGN
9=BW ...XALL UP
9=C8 ...XCME GEOERR 1,NOTCME
9=CG MENDAREA 50,K99TWINSETD
9=X6 #
9?BQ #END
^^^^ ...33365745000100000000