{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: BSQ867)}}
====== BSQ867 ======
(George Source)
**Macros used:** [[george:macro:ADJUSTLK|ADJUSTLK]], [[george:macro:BBS|BBS]], [[george:macro:BXE|BXE]], [[george:macro:BXGE|BXGE]], [[george:macro:BXL|BXL]], [[george:macro:BXU|BXU]], [[george:macro:CHAIN|CHAIN]], [[george:macro:CLINK|CLINK]], [[george:macro:COOR1|COOR1]], [[george:macro:DATUMADD|DATUMADD]], [[george:macro:DATUMBLK|DATUMBLK]], [[george:macro:DCA|DCA]], [[george:macro:DERING|DERING]], [[george:macro:DISENGPER|DISENGPER]], [[george:macro:ENRING|ENRING]], [[george:macro:FIXTRA|FIXTRA]], [[george:macro:FON|FON]], [[george:macro:FPUT|FPUT]], [[george:macro:FPUTX|FPUTX]], [[george:macro:FREECORE|FREECORE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GETEMSCR|GETEMSCR]], [[george:macro:GETQUE|GETQUE]], [[george:macro:GPERI|GPERI]], [[george:macro:HUNT2|HUNT2]], [[george:macro:HUNTW|HUNTW]], [[george:macro:JBUSY|JBUSY]], [[george:macro:JENVNOT|JENVNOT]], [[george:macro:LABFIX|LABFIX]], [[george:macro:NAME|NAME]], [[george:macro:NAMEX|NAMEX]], [[george:macro:ONQUE|ONQUE]], [[george:macro:PULLINK|PULLINK]], [[george:macro:PUSHLINK|PUSHLINK]], [[george:macro:REQUE|REQUE]], [[george:macro:SQOSS2|SQOSS2]], [[george:macro:SWAP|SWAP]], [[george:macro:TRACE|TRACE]], [[george:macro:TRANSFIX|TRANSFIX]]
22FL #LIS K0BSQ
22^= #SEG BSQ60 [BOB NICHOLSON
23DW #
23YG #
24D6 # THIS SEGMENT IS CONCERNED WITH QUEUING TRANSFER REQUESTS TO
24XQ # THE APPROPRIATE BACKING STORE ACTIVITY (BSA).THE INITALLY ENTRY
25CB # IS AT P4 WHICH MERELY DUMPS THE ACCUMULATORS AND PRESERVES
25X2 # POSSIBLE PARAMETERS IN EX4,EX5,EX6 AND EX7.THE MAIN ENTRY IS AT P1
26BL # THE CHAPTER CHANGE ENTRY IS AT BCHR
26W= #
27*W #
27TG FIXTRA K1BSQ
28*6 LABFIX AP4
28SQ P4 STO 2 BSP13 [PRESERVE X2
29#B LDX 2 FX2
29S2 STO 3 ACC3(2) [DUMP ACCS
2=?L STO 4 ACC4(2)
2=R= STO 5 ACC5(2)
2?=W STO 6 ACC6(2)
2?QG STO 7 ACC7(2)
2#=6 STO 4 EX4 [NAD PRESERVE POSSIBLE PARAMETER
2#PQ STO 5 EX5
2*9B STO 6 EX6
2*P2 STO 7 EX7
2B8L LDX 2 BSP13 [RESTORE X2
2BN= EXIT 0 0
2C7W #
2CMG LABFIX AP1
2D76 P1 LDX 2 FX2
2DLQ STOZ ACOMMUNE7(2) [NO ADDITIVE MODE SPECIFIED
2F6B LABFIX AP2
2FL2 P2 SQOSS2 [DUMP LINK
2G5L STO 4 BA1(2) [AND BA AREA
2GK= STO 5 BA2(2)
2H4W STO 6 BA3(2)
2HJG STO 7 BA4(2)
2J46 LDX 7 BA1(2)
2JHQ SLC 7 7
2K3B ANDN 7 #17
2KH2 ORS 7 ACOMMUNE7(2) [MODE OF TRANSFER
2L2L LDN 4 0
2LG= SLL 45 16 [X4=LENGTH OF TRANSFER
2L^W SRL 5 16 [X5=LOGICAL FILE NUMBER OR BSUN
2MFG LDX 0 BA1(2)
2M^6 ANDN 0 BOBJ+BSET
2NDQ BNZ 0 TB3 [J IF OBJECT PROGRAM OR SET CORE
2NYB BZE 7 T13A [J IF READ TRANSFER
2PD2 LDX 1 FPTR(2)
2PXL NAME 1,BSTB,BWRITE
2QC= BNZ 5 TB3 [J IF BS HOME SPECIFIED IN PARAMETERS
2QWW LDX 5 BACK1(1) [LFN FROM WRITE BLOCK
2RBG ORS 5 BA2(2) [AND TO X5
2RW6 LDX 6 BACK2(1) [BLOCK NO.
2S*Q STO 6 BA3(2)
2STB BRN TB3
2T*2 #
2TSL # RE-ENTER HERE IF THE GETCORE FOR THE READ BLOCK FAILED
2W#= # AND TRY AGAIN TO GET SOME CORE
2WRW #
2X?G LABFIX BP2D
2XR6 LDX 4 BA2(2)
2Y=Q SRL 4 8 [RESET LENGTH OF BLOCK
2YQB BRN T13Z [AND TRY TO GET CORE AGAIN
2^=2 #
2^PL T13A LDX 0 BA1(2)
329= ANDN 0 BUSE
32NW BNZ 0 T10 [J IF BUSE SET
338G T13 PUSHLINK BSEN1 [CHANGE LINK IN CASE GETCORE FAILS
33N6 T13Z GETEMSCR 4 [GET READ BLOCK
347Q PULLINK [PUT CORRECT LINK BACK IN ALINK2
34MB LDX 4 BA2(2)
3572 SRL 45 8 [X4=LENGTH OF TRANSFER
35LL SRL 5 16 [X5=LFN OR BSUN
366= LDX 6 BA3(2) [X6=BLOCK NO.
36KW BRN T11
375G T10 HUNTW 1,BSTB,BFREEW [SEE IF FREE WRITE BLOCK
37K6 BNG 1 T13 [J IF NOT
384Q LDX 0 ALOGLEN(1)
38JB SBX 0 4
3942 BPZ 0 T14 [J IF THIS BLOCK IS BIG ENOUGH
39HL FREECORE 1 [OTHERWISE FREE IT
3=3= BRN T13 [AND GET A NEW BLOCK
3=GW T14 CHAIN 1,2 [PUT READ BLOCK BEHIND ACTIVITY
3?2G T11 LDX 1 FPTR(2)
3?G6 NAME 1,BSTB,FLOUR
3?^Q STO 5 BACK1(1) [PUT IN RED TAPE
3#FB STO 6 BACK2(1)
3#^2 TB3 LDX 0 BA1(2)
3*DL BPZ 0 T1 [J NOT AUTO
3*Y= BRN T4 [J IF AUTONOMUS TO GET QBLK
3BCW #
3BXG #
3CC6 # RE-ENTER HERE IF THE GETQUE FAILED
3CWQ #
3DBB LABFIX AT4J
3DW2 LDCT 0 2
3F*L ANDX 0 BA1(2) [TEST IF SWAPTRAN
3FT= BZE 0 T4A [J IF NOT TRY GETQUE AGAIN
3G#W PULLINK [PUT PROPER LINK BACK IN ALINK2
3GSG FPUT [AND FPUT-GETQUE FAILED
3H#6 TRANSFIX BRN,FQOB
3HRQ #
3J?B # GETQUE FAILED FOR FILESTORE AUTONOMUS WRITE.
3JR2 # SINCE WAITING FOR CORE MAY RESULT IN READS TO THE SAME BLOCK
3K=L # GETTING ISSUED BEFORE THE WRITE,THE TRANSFER IS MADE NON-AUTONOMUS
3KQ= # (I.E. BOTH MAY BE HELD UP WAITING FOR CORE-READ MAY GET IN ON FON
3L9W # NOTE- THE CODE TO WHICH THIS COMMENT REFERS IS BEING RE-THUNK#
3LPG #
3M96 # TRY TO GET A NEW QBLK IF NO FQBLKS AVAILABLE
3MNQ #
3N8B T4 PUSHLINK BSEN2 [CHANGE LINK IN CASE GETQUE FAILS
3NN2 LDCT 0 2
3P7L ANDX 0 BA1(2) [TEST IF SWAPTRAN
3PM= BZE 0 T4A [AND J IF NOT TO DO NORMAL GETQUE
3Q6W GETQUE SWAP [ELSE DO SPECIAL GETQUE (NO WAITING)
3QLG BRN T2 [BACK TO MAIN PATH
3R66 T4A GETQUE [GET A QBLK
3RKQ T2 PULLINK [PUT CORRECT LINK BACK IN ALINK2
3S5B LDX 3 FPTR(2) [GET POINTER TO QBLK
3SK2 T5 LDCT 0 2
3T4L ANDX 0 BA1(2) [TEST IF SWAPTRAN
3TJ= BZE 0 T4B [AND JUMP IF NOT-NO NEED TO UPDATE LI
3W3W LDN 0 1
3WHG ADJUSTLK 2 [ADD ONE TO LINK
3X36 T4B LDX 0 BSP10 [NAME QBLK
3XGQ NAMEX 3 [ABSTB/BQBLK
3Y2B STOZ BACKCHAN(3)
3YG2 LDN 0 BA1(2) [MOVE DETAILS
3Y^L LDN 1 ATRAN(3) [OF TRANSFER
3^F= MOVE 0 5 [TO QBLK
3^YW LDX 0 ACOMMUNE7(2) [MODE OF TRANSFER
42DG STO 0 BSMODE(3) [..STORE IN BSTB/BQBLK
42Y6 N1 LDX 4 BA2(2) [RESET ACCUMULATORS
43CQ SRL 45 8 [X4=LENGTH
43XB SRL 5 16 [X5=LFN
44C2 LDX 6 BA3(2) [BLOCK NO
44WL T1 LDX 0 BA1(2)
45B= ANDN 0 BONL
45TW BNZ 0 T25 [J IF ONLINE
46*G #SKI K6BSQ>99-99
46T6 (
47#Q LDX 7 BA1(2)
47SB ANDX 6 BITS22LS [REMOVE CORRUPT BLOCK MARK-IF ANY
48#2 LDX 2 6 [BLOCK NO
48RL LDN 0 BLN [MAKE SURE TRANSFER DOSNT GO BEYOND B
49?= DVS 1 0
49QW ANDN 7 ASWAP
4==G BNZ 7 T15A [J IF SWAP
4=Q6 SBX 0 1
4?9Q SLL 0 GSBSLOG-BLS [MAX LENGTH FOR THIS TRANSFER
4?PB SBX 0 4
4#92 BPZ 0 T15
4#NL GEOERR 0,BSLENGTH [TRANSFER GOES BEYOND BLOCK
4*8= T15A SBN 4 1
4*MW TXL 4 BSSS
4B7G BCS T15B
4BM6 GEOERR 0,BIGSHEET [TRANSFER LONGER THAN A SHEET
4C6Q T15B ADN 4 1
4CLB T15 TXL 5 BLMP [TEST LFN
4D62 BCS T16
4DKL GEOERR 0,FNUM2BIG [FILE NUMBER TOO BIG
4F5= )
4FJW T16 LDX 1 ALFTP [POINTER TO LF TABLE
4G4G SLL 5 1
4GJ6 SMO 5
4H3Q LDX 7 A1(1) [GET ENTRY FROM LF TABLE
4HHB #SKI K6BSQ>99-99
4J32 (
4JGL BPZ 7 T17
4K2= GEOERR 0,NOSUCHLF [ILLEGAL LOGICAL FILE NO
4KFW T17 SMO 5
4K^G TXL 6 A1+1(1)
4LF6 BCS T18
4LYQ GEOERR 0,TOO BIG [BLOCK NO TOO BIG
4MDB )
4MY2 T18 LDX 1 7
4NCL ANDN 1 #7777 [MODIFIER TO FILE DESCRIPTION TABLE
4NX= ADX 1 AFDTP [ADD ON ADDRESS OF FD TABLE
4PBW DATUMBLK 6,1,4 [DATUMISE BLOCK NUMBER
4PWG #SKI K6BSQ>99-99
4QB6 (
4QTQ BNZ 1 T19
4R*B GEOERR 0,LARGEBLK
4RT2 )
4S#L T19 LDX 2 FX2
4SS= T19A STO 1 EX5
4T?W LDX 0 GMIN4
4TRG ANDS 0 EX5 [REMEMBER BLOCK NO FOR OPTIMISATION
4W?6 LDX 0 BA1(2)
4WQQ BNG 0 T20 [J IF AUTO
4X=B STO 1 ACOMMUNE9(2) [DATUMISED BLOCK NO TO ACTIVITY
4XQ2 LDX 3 2 [POINTER TO QBLK
4Y9L BRN T21
4YP= T20 STO 1 ADBLKNO(3) [DATUMISED BLOCK NO TO QBLK
4^8W ANDN 0 BONL+ASWAP
4^NG BNZ 0 T21 [DON'T REMOVE FAILURE BIT FOR BONL OR
5286 LDN 0 #1000
52MQ ERS 0 BA1(2) [FAILURE SHOULD NOT UPDATE BA WORDS N
537B T21 SRL 7 12 [BSUN
53M2 ANDN 7 #1777 [BSUN
546L T27 MPY 7 ASBSAB [DETERMINE WHICH BSA
54L= LDX 6 0 [SAVE X0 FOR SEA BREAKS
555W #SKI K6BSQ>199-199
55KG TRACE FX2,CALL ACT
5656 #SKI BSOPT<1$1
56JQ (
574B NGX 2 0
57J2 ADX 2 BBAC
583L ADX 2 ASBSAB
58H= TRANSFIX CALL 7 ,BP8
592W LDX 2 BSBKCHAN(2)
59GG LDN 3 CHAINADD(3)
5=26 ONQUE 3,2
5=FQ TRANSFIX BRN,FQOB
5=^B )
5?F2 #SKI BSOPT
5?YL (
5#D= LDN 3 CHAINADD(3)
5#XW STO 3 EX6 [REM5MBER CHAINING ADDRESS OF QBLK
5*CG #SKI K6BSQ>299-299
5*X6 TRACE EX5,EX5
5BBQ NGX 3 0
5BWB ADX 3 BBAC
5CB2 ADX 3 ASBSAB
5CTL CALL 0 P13 [OPTIMISE THIS TRANSFER
5D*= LDX 2 FX2
5DSW LDX 0 BA1(2)
5F#G TRANSFIX BPZ 0,FQOB
5FS6 FPUT [FPUT CALLING ACTIVITY IF AUTO
5G?Q TRANSFIX BRN,FQOB
5GRB LABFIX AP13
5H?2 P13 STO 0 EX7 [STORE LINK
5HQL LDN 0 1 [ADD ONE TO COUNT OF OUTSTANDING
5J== ADS 0 ACOMMUNE7(3) [TRANSFERS FOR THIS BSA
5JPW #UNS ICTON
5K9G (
5KP6 FIXTRA ASFP13 [USED BY BSPRI RESTORE TIME MACRO
5L8Q NULL [MENDED TO BRN ASFBS1
5LNB )
5M82 LDN 0 BSCHANAD(3) [BASE OF PRIMARY QUEUE
5MML LDN 1 BSSCHAD(3) [BASE OF SECONDARY QUEUE
5N7= TXU 0 BSCHANAD(3) [SEE IF EQUAL
5NLW TXU 1 BSSCHAD(3) [TO BASE
5P6G BCC TDRUM [AND JUMP IF BOTH QUEUES ARE EMPTY
5PL6 LDX 0 AWORK1(3) [DEVICE TYPE
5Q5Q ANDN 0 #7777
5QKB SBN 0 9
5R52 BZE 0 TDROM [NO OPTIMISATION FOR DRUM TRANSFERS
5RJL SBN 0 16
5S4= BZE 0 TDROM
5SHW DCA CPPTR(3),LDX,2,DTSA [CURRENT HEAD POSITION
5T3G LDCT 0 #200
5TH6 ANDX 0 ACOMMUNE1(3)
5W2Q BNZ 0 PT4C [DON'T ROUND DOWN IF CHAPTER CHANGE
5WGB ANDX 2 GMIN4 [ROUND DOWN TO NEXT GEORGE BLOCK
5X22 PT4C SBX 2 EX5 [COMPARE CURRENT POSITION OF HEADS
5XFL LDX 0 2 [WITH POSITION REQUIRED FOR THIS
5X^= ERX 0 AWAY(3) [QBLK
5YDW BNG 0 OPT4 [J IF THIS TRANSFER WILL
5YYG BZE 2 OPT4 [FIT IN PRIMARY QUEUE OTHERWISE...
5^D6 NGN 1 1 [PUT ON SECONDARY QUEUE
5^XQ ERX 1 AWAY(3) [INVERT DIRECTION INDICATOR
62CB LDN 3 BSSCHAD(3) [BASE OF SECONDARY QUEUE
62X2 BRN OPT5
63BL OPT4 LDX 1 AWAY(3) [DIRECTION FOR PRIMARY QUEUE
63W= LDN 3 BSCHANAD(3) [BASE OF PRIMARY QUEUE
64*W OPT5 STO 3 BSP11 [REMEMBER BASE
64TG BRN PT1
65*6 PT2 ADN 3 CHAINADD
65SQ PT1 LDX 3 FPTR(3) [GET FIRST/NEXT QBLK
66#B TXU 3 BSP11
66S2 BCC PT4 [J IF END OF QUEUE
67?L SBN 3 CHAINADD [START OF QUEEU BLOCK
67R= LDX 0 ATYPE(3)
68=W TXL 0 CACT
68QG BCC OPT7 [J IF ACTIVITY BLOCK
69=6 LDX 2 ADBLKNO(3) [DATUMISED BS ADDRESS FROM QBLK
69PQ BRN OPT8
6=9B TDRUM LDX 2 3
6=P2 LDX 0 EX5 [REMEMBER IN CA5 OF ASSOCIATED BSA
6?8L DCA CPPTR(3),STO,0,DTSA
6?N= [BEFORE THE BSA IS WOKEN UP
6#7W LDX 0 AWORK2(3)
6#MG BNG 0 TDROM [DON'T FPUT BSA IF ON COOR2
6*76 FPUTX [LIST THE BSA (QUICKLY)
6*LQ TDROM LDN 3 BSCHANAD(3)
6B6B BRN PT4
6BL2 OPT7 LDX 0 BA1(3)
6C5L SLL 0 1
6CK= BNG 0 PT3 [J IF A CHAPTER CHANGE
6D4W LDX 2 ACOMMUNE9(3) [DATUMISED BS ADDRESS FROM ACTIVITY
6DJG BRN OPT8
6F46 PT3 LDX 2 BA4(3) [BS ADDRESS OF CHAPTER
6FHQ BRN PT4B
6G3B OPT8 ANDX 2 GMIN4
6GH2 PT4B
6H2L #SKI K6BSQ>299-299
6HG= TRACE 2,BSQBLK
6H^W SBX 2 EX5 [COMPARE BS ADDRESSES
6JFG LDX 0 2
6J^6 ERX 0 1
6KDQ BNG 0 PT2 [J IF THIS QBLK DOES NOT FIT IN HERE
6KYB BNZ 2 PT4A [J IF IT DOES
6LD2 LDN 0 1 [CASE WHERE BLOCK NOS ARR EQUAL
6LXL ADS 0 EX5 [
6MC= BRN PT2 [LOCK FOR NEXT BLOCK
6MWW PT4A ADN 3 CHAINADD [CHAINING ADDRESS
6NBG PT4 LDX 2 BPTR(3)
6NW6 ONQUE EX6,2 [PUT ON QUEUE
6P*Q BRN (EX7) [EXIT
6PTB #UNS ICTON
6Q*2 (
6QSL #
6R#= # ALTERNATIVE OPTIMISING ROUTINE FOR ICT
6RRW # PRIORITY TRANSFERS ON PRIMARY QUEUE IN ASCENDING ORDER
6S?G # OTHERS ON SECONDARY QUEUE IN ASCENDING ORDER
6SR6 #
6T=Q FIXTRA ASFBS1
6TQB STOZ ASFBSMUD
6W=2 LDN 0 BSCHANAD(3) [BASE OF PRIMARY QUEUE
6WPL LDN 1 BSSCHAD(3) [BASE OF SECONDARY QUEUE
6X9= TXU 0 BSCHANAD(3) [SEE IF EQUAL
6XNW TXU 1 BSSCHAD(3) [TO BASE
6Y8G BCC QDRUM [AND JUMP IF BOTH QUEUES EMPTY
6YN6 LDX 0 AWORK1(3) [DEVICE TYPE
6^7Q ANDN 0 #7777
6^MB SBN 0 9
7272 BZE 0 QDROM [NO OPTIMISATION FOR DRUM TRANSFERS
72LL SBN 0 16
736= BZE 0 QDROM
73KW LDN 3 BSSCHAD(3) [BASE OF SECONDARY QUEUE
745G STO 3 BSP11
74K6 LDX 3 FPTR(3) [GET FIRST QBLK ON SECONDARY QUEUE
754Q CALL 1 XGETBS [GET DATUMISED ADDRESS IN X2
75JB STO 2 ASFBSCUR [REMEMBER AS CURRENT POSITION
7642 LDX 3 BSP11 [RELOAD BASE
76HL SBN 3 CHAINADD [ADJUST TO START OF BLK
773= LDX 1 FX2 [IS THIS A
77GW LDCH 0 ACRIT(1) [PRIORITY TRANSFER
782G BZE 0 QPRI [YES
78G6 #
78^Q # IF OUR TRANSFER <= CURRENT START= WHERE DIRECTION CHANGES
79FB # IF OUR TRANSFER > CURRENT GET POSITION
79^2 #
7=DL NONPRI
7=Y= STO 2 ASFBSDUMP
7?CW XS LDX 3 CHAINADD(3)
7?XG BXE 3 BSP11,XSEND [J IF END OF QUEUE
7#C6 CALL 1 XGETBS [GET DATUMISED ADDR IN X2
7#WQ BXL 2 ASFBSDUMP,XSEND1 [J IF GDIRECTION CHANGES
7*BB STO 2 ASFBSDUMP
7*W2 #
7B*L # IF OUR TRANSFER > ASFBSCUR CHECK IF RIGHT PLACE
7BT= #
7C#W LDX 0 ASFBSCUR
7CSG BXGE 0 EX5,XS [IF OURS < CUR GO BACK
7D#6 SBX 2 EX5
7DRQ BNG 2 XS [IF OURS > ON QUEUE GO BACK
7F?B BZE 2 MATCH [IF SAME SORT IT OUT
7FR2 BRN QPT4A [CORRECT POSITION FOUND
7G=L #
7GQ= XSEND1
7H9W ADN 3 CHAINADD [GET TO RING
7HPG XSEND LDX 0 ASFBSCUR
7J96 BXL 0 EX5,QPT4 [IF ASCENDING WE HAVE RIGHT PLACE
7JNQ XGETSTART
7K8B LDX 3 BPTR(3)
7KN2 BRN QPT1
7L7L #
7LM= # SEARCH FOR BLOCK MATCH IF PRIORITY TRANSFER
7M6W #
7MLG QPRI LDX 3 CHAINADD(3)
7N66 BXE 3 BSP11,XPEND [J IF END OF QUEUE
7NKQ CALL 1 XGETBS [GET DATUMISED ADDR IN X2
7P5B BXU 2 EX5,QPRI [GO BACK IF NO MATCH
7PK2 ADN 3 CHAINADD
7Q4L DERING 3 [REMOVE LOW PRIORITY TRANSFER
7QJ= STO 3 ASFBSMUD [REMEMBER FOR RE-QUEUING LATER
7R3W XPEND LDX 3 BSP11 [BASE OF PRIMARY QUEUE
7RHG SBN 3 BSSCHAD-BSCHANAD
7S36 STO 3 BSP11
7SGQ LDX 3 FPTR(3) [GET PAST FIRST AS IN PROGRESS
7T2B CALL 1 XGETBS [GET DATUMISED ADDR IN X2
7TG2 STO 2 ASFBSCUR
7T^L BRN NONPRI
7WF= #
7WYW QPT2 ADN 3 CHAINADD
7XDG QPT1 LDX 3 FPTR(3) [GET FIRST$NEXT QBLK
7XY6 TXU 3 BSP11
7YCQ BCC QPT4 [J IF END OF QUEUE
7YXB SBN 3 CHAINADD [START OF QBLK
7^C2 LDX 0 ATYPE(3)
7^WL TXL 0 CACT
82B= BCC QOPT7 [J IF ACTIVITY BLK
82TW LDX 2 ADBLKNO(3) [DATUMISED BS ADDRESS FROM QBLK
83*G BRN QOPT8
83T6 QDRUM LDX 2 3
84#Q LDX 0 EX5
84SB DCA CPPTR(3),STO,0,DTSA
85#2 LDX 0 AWORK2(3)
85RL BNG 0 QDROM [DON'T FPUT BSA IF ON COOR2
86?= LDX 1 FX2 [IF PRIORITY TRANSFER
86QW LDCH 0 ACRIT(1) [WAKE UP BSA QUICKLY
87=G BZE 0 QUICK
87Q6 FPUT
889Q BRN QDROM
88PB QUICK LDN 1 CHAINADD(2)
8992 ENRING 1,ACTLIS
89NL STOZ GMEL+ASU
8=8= QDROM LDN 3 BSCHANAD(3)
8=MW BRN QPT4
8?7G QOPT7 LDX 0 BA1(3)
8?M6 SLL 0 1
8#6Q BNG 0 QPT3 [J IF CHAPTER CHANGE
8#LB LDX 2 ACOMMUNE9(3) [DATUMISED ADDRESS FROM ACTIVITY
8*62 BRN QOPT8
8*KL QPT3 LDX 2 BA4(3) [BS ADDRESS OF CHAPTER
8B5= BRN QPT4B
8BJW QOPT8 ANDX 2 GMIN4
8C4G QPT4B SBX 2 EX5 [COMPARE BS ADDRESSES
8CJ6 BZE 2 MATCH
8D3Q BNG 2 QPT2
8DHB BRN QPT4A
8F32 MATCH LDN 0 1
8FGL ADS 0 EX5
8G2= BRN QPT2
8GFW QPT4A ADN 3 CHAINADD
8G^G QPT4 LDX 2 BPTR(3)
8HF6 ONQUE EX6,2
8HYQ LDX 0 ASFBSMUD [DO WE HAVE SAME BLK FROM NON-PRIORIT
8JDB BZE 0 (EX7) [QUEUE EXIT IF NOT
8JY2 LDX 2 EX6 [PUT ON QUEUE BEFORE PRIORITY TRANSFE
8KCL LDX 2 BPTR(2)
8KX= ONQUE ASFBSMUD,2
8LBW BRN (EX7)
8LWG #
8MB6 # SUBROUTINE TO GET DATUMISED BS ADDRESS FROM QBLK
8MTQ # ON EXIT X2 CONTAINS DATUMISED ADDRESS
8N*B # X3 POINTS TO START OF QBLK
8NT2 #
8P#L XGETBS
8PS= SBN 3 CHAINADD [START OF QUEUE BLOCK
8Q?W LDX 2 ADBLKNO(3)
8QRG LDX 0 ATYPE(3)
8R?6 BXL 0 CACT,XG1 [J IF NOT ACTIVITY
8RQQ LDX 2 BA4(3) [BS ADDRESS OF CHAPTER
8S=B BBS 1,BA1(3),(1) [EXIT IF CHAPTER CHANGE
8SQ2 LDX 2 ACOMMUNE9(3) [DATUMISED BS ADDRESS FROM ACTIVITY
8T9L XG1 ANDX 2 GMIN4
8TP= EXIT 1 0
8W8W #
8WNG )
8X86 )
8XMQ #
8Y7B # THIS IS THE CHAPTER CHANGER ENTRY POINT.
8YM2 # THE BACKING STORE ADDRESS OF THE CHAPTER IS DATUMISED AND THEN
8^6L # A JUMP IS MADE TO THE OPTIMISING ROUTINE.
8^L= # ON ENTRY X2=FX2
925W #
92KG LABFIX BCHR
9356 #SKI K6BSQ>99-99
93JQ (
944B LDCT 5 #200
94J2 ANDX 5 BA1(2)
953L BNZ 5 T33 [J IF ALREADY DOING CHAPTER CHANGE
95H= )
962W LDCT 5 #200 [CHAPTER CHANGE BIT
96GG STO 5 BA1(2) [TO ACTIVITY
9726 #SKI CLINK
97FQ (
97^B LDX 5 ALINK1(2)
98F2 SRL 5 12 [X5 HAS CHAP NUMBER
98YL SMO 5
99D= LDX 5 KTAB [X5 HAS LSEG/4 IN B0-8,DSEG/128 IN
99XW [REST
9=CG #SKI JPSCF
9=X6 (
9?BQ SRC 5 13
9?WB SRL 56 1 [B0 X6=1 IF ON SCF ELSE CLEAR
9#B2 SRC 5 10 [CLEAR SCF BIT IN KTAB COPY
9#TL )
9**= LDX 4 5
9*SW SLC 4 11
9B#G ANDN 4 #3774 [LENGTH IN X4
9BS6 BNZ 4 V1
9C?Q LDN 4 1024
9CRB V1 SLL 5 11
9D?2 SRL 5 4 [X5 HAS UNDATUMISED BS ADDRESS
9DQL )
9F== STO 4 BA2(2) [STORE LENGTH OF CHAPTER
9FPW CALL 7 TB56 [PATUMISE BS ADDRESS
9G9G LDX 3 FX2
9GP6 STO 1 BA4(3) [DATUM[SE BS ADDRESS OF FIRST TRAN
9H8Q STO 1 EX5
9HNB STO 2 BA3(3) [X2=0 IF ONE TRANSFER OR LENGTH OR 1S
9J82 BZE 2 T25J [J IF ONLY ONE TRANSFER
9JML ADX 5 2 [UPDATE BLOCK NO
9K7= SBX 4 2 [AND LENGTH
9KLW CALL 7 TB56 [DATUMISE BS ADDRESS GF SECOND TRAN
9L6G #SKI K6BSQ>99-99
9LL6 (
9M5Q BZE 2 TJH9A
9MKB T33 GEOERR 0,TWOTRANS [NOT MORE THAN TWO TRANSFERS ALLOWED
9N52 )
9NJL TJH9A LDX 3 FX2
9P4= STO 1 BA5(3)
9PHW T25J LDN 7 1 [BSUN
9Q3G #SKI JPSCF
9QH6 (
9R2Q BPZ 6 T27
9RGB LDX 7 BRADSPLTBSU [CHAPTER ON SCF
9S22 )
9SFL BRN T27
9S^= #SKI JPSCF-1
9TDW TB56 DATUMADD 5,BINDEX,4 [GET DATUMISED BS ADDRESS
9TYG #SKI JPSCF
9WD6 (
9WXQ TB56 LDX 3 BINDEX
9XCB BPZ 6 TBNR [USE FIRST PART OF CCTABLE
9XX2 ADN 3 6 [MOVE TO SECOND PART OF CCTABLE
9YBL TBNR DATUMADD 5,3,4
9YW= )
9^*W #SKI K6BSQ>99-99
9^TG (
=2*6 BNZ 1 TBS5
=2SQ GEOERR 0,LARGEADD
=3#B )
=3S2 TBS5 EXIT 7 0
=4?L LABFIX AP5
=4R= P5 STO 0 EX4 [ONQUE MACRO
=5=W LDX 0 FPTR(2)
=5QG STO 3 FPTR(2)
=6=6 STO 0 FPTR(3)
=6PQ STO 2 BPTR(3)
=79B SMO 0
=7P2 STO 3 BPTR
=88L BRN (EX4)
=8N= LABFIX AP6
=97W P6 STO 0 EX5 [OFFQUE MACRO
=9MG LDX 0 0(3)
==76 SMO BPTR(3)
==LQ STO 0 0
=?6B LDX 0 BPTR(3)
=?L2 SMO FPTR(3)
=#5L STO 0 BPTR
=#K= STOZ BPTR(3)
=*4W BRN (EX5)
=*JG LABFIX AP7
=B46 P7 STO 0 EX6 [REQME MACRO
=BHQ CALL 0 (BSTS6)
=C3B CALL 0 (BSTS5)
=CH2 BRN (EX6)
=D2L LABFIX BP8 [ROUTINE TO FPUT BSA OR TFA IF
=DG= LDN 1 BSCHANAD(2) [NECESSARY
=D^W TXU 1 BSBKCHAN(2)
=FFG BCS T23 [J IF SOMETHING ALREADY ON QUEUE
=F^6 LDX 0 BACK1(2) [OR IF BSTB/BWRITE ON TFA
=GDQ BNZ 0 T23
=GYB STO 2 6
=HD2 FPUT [FPUT ACTIVITY
=HXL LDX 2 6
=JC= T23 EXIT 7 0
=JWW #
=KBG #
=KW6 T25
=L*Q #SKI K6BSQ>99-99
=LTB (
=M*2 T29 TXL 5 BSUN
=MSL BCS T31
=N#= T32 GEOERR 0,NO HOME [INVALID BSUN
=NRW T31 BZE 5 T32
=P?G )
=PR6 T22 LDX 7 5
=Q=Q SLL 7 12 [BSUN
=QQB LDX 1 BA3(2) [BS ADDRESS
=R=2 BRN T19A
=RPL #
=S9= # BACKWAIT MACRO
=SNW #
=T8G LABFIX AP11
=TN6 P11 ADN 0 1
=W7Q STO 0 EX4 [UPDATE & REMEMBER LINK
=WMB #SKI K6BSTS>199-199
=X72 TRACE BSP11,BACKWAIT
=XLL STO 3 EX5
=Y6= LDX 3 FX2
=YKW W2 LDX 3 FPTR(3) [LOOK FOR QBLK
=^5G LDX 0 ATYPE(3)
=^K6 TXL 0 CACT
?24Q BCC W7B [J IF ACTIVITY
?2JB SBX 0 BSP10
?342 BNZ 0 W2 [NOT QDLK
?3HL LDX 0 BSP11 [LFN
?43= BNG 0 W3 [J IF ALL TRANSFERS TO BE WAITED FOR
?4GW LDX 1 ATRAN(3)
?52G ANDX 1 BIT11 [IF B11 IS SET IN ATRAN THIS
?5G6 BNZ 1 W3 [PARTICULAR TRANSFER HAS BEEN AWAITED
?5^Q SLL 0 1
?6FB BNG 0 W2 [J ONLY BIZ NEED BE CHECKED
?6^2 LDEX 0 BSP11 [LOGICAL FILE NUMBER OR BSUN
?7DL LDX 1 ALENLFN(3) [GET LFN OR BSUN
?7Y= ANDN 1 #377 [FROM QBLK
?8CW LDX 2 BSP12 [BLOCK NO OR DATUMISED BLOCK NO.
?8XG TXU 0 1 [COMPARE LFN OR BSUNS
?9C6 TXU 2 BLKNO(3) [COMPARE BLOCK NO.
?9WQ BCS W2 [J NOT SAME-LOOK FOR NEXT BLOCK
?=BB LDN 0 BONL
?=W2 ANDX 0 ATRAN(3) [ISOLATE ONLINE BIT-IF ANY
??*L ERX 0 EX7 [SEE IF SAME AS REQUIRED TRANSFER
??T= BNZ 0 W2 [J IF NOT
?##W LDX 0 BSP11
?#SG W3 LDCT 1 #100 [TEST IF THIS TRANSFER FAILED
?*#6 ANDX 1 ATRAN(3)
?*RQ BZE 1 W5 [J NOTHING WRONG
?B?B LDX 0 FPTR(3)
?BR2 STO 0 EX6 [RETAIN PTR TO WRITE BLOCK
?C=L LDN 0 ATRAN(3)
?CQ= LDN 1 BA1(2)
?D9W MOVE 0 5 [PUT INFO IN ACT
?DPG LDN 0 1
?F96 SBS 0 EX4
?FNQ LDX 0 ADBLKNO(3) [REPLY FROM ACTUAL PERI
?G8B STO 0 ACOMMUNE9(2) [TO ACTIVITY BLOCK
?GN2 LDX 0 ATRAN(3)
?H7L ANDN 0 BSET+BOBJ
?HM= BNZ 0 W7
?J6W LDX 0 BSMODE(3) [MODE OF TRANSFER
?JLG BZE 0 W7 [J IF READ
?K66 CHAIN EX6,2 [PUT WRITE BLOCK BEHIND ACTIVITY
?KKQ W7 CALL 0 PCA [FPUT PCA IF NECESSARY
?L5B FREECORE 3 [FREE QBLK
?LK2 W7B LDX 1 FX1
?M4L LDX 2 FX2
?MJ= LDX 3 EX5
?N3W BRN (EX4) [REPORT FAIL OR EXIT OK
?NHG W5 LDX 2 BIT10 [BACKWAIT IS WAITING BIT
?P36 BNG 0 W7C [J IF ALL TRANSFERS TO BE WAITED
?PGQ ADX 2 BIT11 [INDICATE BACKWAIT FOR THIS TRAN ONLY
?Q2B W7C ORS 2 ATRAN(3) [BITS TO QUEUE BLK
?QG2 LDX 0 EX4 [ADJUST LINK TO START OF MACRO
?Q^L SBN 0 4
?RF= W8 LDX 3 EX5 [RESET X3
?RYW BRN (COOR1) [WAIT TO BE FPUTTED BY BSTS
?SDG #
?SY6 # FINDFAIL MACRO
?TCQ #
?TXB LABFIX AP12
?WC2 P12 STO 0 BSP11 [REMEMB=R LINK
?WWL HUNT2 2,BSTB,BFAIL [FIND CURRENT/PERMANENT FAIL LIST
?XB= P12A ADN 2 2
?XTW LDX 1 A1-1(2)
?Y*G TXU 1 GMINUS1
?YT6 BCC P12C [JUMP IF END OF LIST
?^#Q TXU 1 EX5 [
?^SB BCS P12A [JUMP IF NOT REQUIREDBLOCK
#2#2 LDX 1 EX7 [CHECK IF CORRECT TYPE OF ENTRY
#2RL ANDX 1 A1(2) [PERMANENT OR CURRENT
#3?= BZE 1 P12A [JUMP IF NOT
#3QW LDX 1 A1(2)
#4=G ANDN 1 #77
#4Q6 TXU 1 EX6
#59Q BCS P12A [JUMP IF WRONG LFN
#5PB ADN 2 A1-1
#692 SMO EX4
#6NL STO 2 0 [POINTER
#78= LDN 0 1
#7MW ADS 0 BSP11 [INCREMENT LINK IF RECORD FOUND
#87G P12C LDX 1 FX1
#8M6 LDX 2 FX2
#96Q BRN (BSP11) [EXIT
#9LB #
#=62 # ROUTINE TO FPUT THE PCA IF B8 IS SET IN ATRAN. B8 IS INITIALLY SET
#=KL # BY SWAPWAIT IN SWAP TO WAIT FOR COMPLETION OF ANY AUTONOMOUS
#?5= # BACKING STORE TRANSFERS BELONGING TO THE OBJECT PROGRAM.
#?JW #
##4G LABFIX PCA
##J6 PCA STO 0 EX6 [STORE LINK
#*3Q LDCT 0 1
#*HB ANDX 0 ATRAN(3)
#B32 BZE 0 PCA1 [B8 NOT SET-SO EXIT
#BGL #SKI G3
#C2= (
#CFW LDX 2 APCA(3) [ADDRESS OF PCA
#C^G #SKI K6BSTS>199-199
#DF6 TRACE 2,PCA FPUT
#DYQ FPUT
#FDB )
#FY2 #SKI G4
#GCL FON #123 [WAKE UP INTERESTED ACTIVITIES
#GX= PCA1 BRN (EX6) [EXIT
#HBW #
#HWG #
#JB6 #
#JTQ # THE FOLLOWING GROUP OF SUBROUTINES ARE CALLED
#K*B # FROM BSTS
#KT2 #
#L#L # SUBROUTINE TO CONVERT NO. IN X5
#LS= # TO CHARACTERS FOR PRINTING
#M?W # ON EXIT CONVERTED NO. IN X7,X0
#MRG #
#N?6 LABFIX TOCT
#NQQ TOCT LDN 1 8
#P=B TOCT1 LDN 4 0
#PQ2 SLL 45 3
#Q9L SLL 70 6
#QP= DCH 4 0
#R8W BCT 1 TOCT1
#RNG EXIT 2 0
#S86 #
#SMQ # SUBROUTINE TO MOVE MESSAGE (X3) TO CONSOLE OUTPUT BUFFER
#T7B #
#TM2 LABFIX ZMVCH
#W6L ZMVCH LDX 5 FCOUTBUF [NEXT FREE PLACE IN BUFFER
#WL= LABFIX YMVCH
#X5W YMVCH LDN 4 1(3) [START OF MESSAGE
#XKG SMO 0(3) [NO OF CHARACTERS
#Y56 MVCH 4 0 [SHIFT MESS
#YJQ STO 5 FCOUTBUF [UPDATE NEXT PLACE
#^4B EXIT 6 0
#^J2 #
*23L #
*2H= #
*32W # SUBROUTINE TO GET HOLD OF OPS. CONSOLE
*3GG # - ON EXIT EX4 IS NON-ZERO IF INPUT WAS CANCELLED
*426 #
*4FQ LABFIX XGETCON
*4^B XGETCON
*5F2 STOZ EX4 [MARKER:IN CASE WE HAVE TO CANCEL I/P
*5YL DCA JCTWPTR,LDEX,0,MODE [INPUT OR OUTPUT MODE ON CONSOLE
*6D= BNZ 0 WAITX [J IF OUTPUT TO WAIT FOR COMPLETION
*6XW DISENGPER JCTWPTR [ELSE CANCEL INPUT
*7CG STO 2 EX4 [AND REMEMBER
*7X6 BRN OK
*8BQ WAITX JBUSY JCTWPTR,WAITX [WAIT IF CONSOLE OUTPUTTING
*8WB OK EXIT 7 0
*9B2 #
*9TL #
*=*= # SUBROUTINE TO DO CONSOLE PERI
*=SW # - ON ENTRY X3=END OF MESSAGE IN FCOUTBUF
*?#G # USES X0,X1,X3,X6
*?S6 # "CANCEL" IS OUTPUT IF EX4 IS NON-ZERO
*#?Q #
*#RB LABFIX XPERI
**?2 XPERI
**QL SBN 3 FCOUTBUF+1 [CALCULATE LENGTH OF
*B== SLC 3 2 [OF MESSAGE
*BPW LDX 1 JCTWPTR [PTR TO DL FOR CONSOLE
*C9G LDX 6 EX4 [GET CANCEL MARKER
*CP6 LDN 0 FCOUTBUF+1 [START ADDRESS
*D8Q BZE 6 NCAN [J NOT CANCEL
*DNB SBN 0 4 [INCLUDE CANCEL MESSAGE BY SUBTRACTIN
*F82 ADN 3 16 [4 FROM ADDRESS AND ADDING 16 TO COUN
*FML NCAN DCA 1,STO,3,COUNT [COUNT TO DEVICE LIST
*G7= DCA 1,STO,0,CTSA [START ADDRESS
*GLW LDN 0 1
*H6G DCA 1,DLA,0,MODE [OUTPUT MODE
*HL6 LDX 0 ACES [SPACE FILL COUNT WORD IN CASE
*J5Q STO 0 FCOUTBUF [CANCEL IS OUTPUT
*JKB [
*K52 #UNS ENHOPER
*KJL (
*L4= JENVNOT NOTDME,DME [IF DME,PUT DATE AND
*LHW LDX 3 CONSCNTRL [TIME THAT PERI IS ISSUED
*M3G LDX 0 EDATE [INTO THE CONBUFF/CNTRL
*MH6 STO 0 COBS(3)
*N2Q LDX 0 CLEANCT [THIS ENSURES THAT THE OPER SCREEN
*NGB STO 0 COBS+1(3) [WILL NOT BE OVERWRITTEN BEFORE
*P22 NOTDME [THE OPS HAVE A CHANCE TO SEE THIS
*PFL )
*P^= [
*QDW LDX 3 ACC3(2)
*QYG GPERI 1,2 [OUTPUT MESSAGE
*RD6 COOR1 ,6 [WAIT FOR EOT
*RXQ EXIT 7 0
*SCB #
*SX2 #
*TBL # SUBROUTINE TO OUTPUT UNIT N FIX TO THE CONSOLE
*TW= # LINK X7 SAVED IN AWORK3
*W*W # ALL ACCUMULATORS EXCEPT X2 DESTROYED
*WTG #
*X*6 LABFIX XOUTFIX
*XSQ XOUTFIX
*Y#B STO 7 AWORK3(2) [SAVE LINK
*YS2 LDX 0 CPRW1(2) [SAVE REPLY WORD
*^?L STO 0 BA4(2)
*^R= XOUT1 CALL 7 XGETCON [GET CONSOLE
B2=W LDN 3 JPMESS [PTR TO UNIT N FIX MSG
B2QG LDX 1 CPPTR(2)
B3=6 TRANSFIX CALL 0,JPG [GEOG NO TO MSG
B3PQ LDN 5 FCOUTBUF+1
B49B CALL 6 YMVCH [PUT MSG IN BUFFER
B4P2 LDX 3 5
B58L CALL 7 XPERI [DO CONSOLE PERI
B5N= LDCH 0 CPRW1(2)
B67W BNZ 0 XOUT1 [REPEAT PERI IF NOT OK
B6CN ... FON #50 [WAKE UP ANYBODY WAITING CONSOLE
B6MG LDX 1 BA4(2) [RE-INSTATE REPLY WORD
B776 STO 1 CPRW1(2)
B7LQ LDX 7 AWORK3(2)
B86B EXIT 7 0
B8L2 #
B95L #
B9K= # THIS SUBROUTINE SEARCHES THE PRIMARY AND SECONDARYQUEUES OF A
B=4W # GIVEN BSA FOR THE FIRST ACTIVITY WITH THE BLFAIL OR BONL BIT OF BA1
B=JG # SET. IF FOUND X5 IS SET NEGATIVE AND THE ACTIVITY IS REQUEUED AT TH
B?46 # HEAD OF THE PRIMARY QUEUE. OTHERWISE X5 =0 . ALSO BIT 5 IS SET
B?HQ # IN CPRW1
B#3B LABFIX XFIND
B#H2 XFIND LDX 2 FX2
B*2L LDCT 5 #10
B*G= ORS 5 CPRW1(2) [SET FAILED REPLY
B*^W LDN 5 0 [INITIALISE MARKER
BBFG LDX 0 BSBKCHAN(2) [CON0ENTS OF JOBRING+1
BB^6 LDN 1 BSCHANAD(2) [ADDRESS OF JOBRING
BCDQ XLP2 TXU 1 0(1) [COMPARE ADDRESS WITH CONTENTS
BCYB BCC XOUT [IF EQUAL, QUEUE IS EMPTY
BDD2 XLOOP LDX 1 0(1) [FI[ST/NEXT BLOCK
BDXL SBN 1 CHAINADD
BFC= LDX 4 ATYPE(1)
BFWW TXL 4 CACT
BGBG BCS XNACT [J IF NOT ACTIVITY
BGW6 LDX 4 BA1(1)
BH*Q ANDN 4 BLFAIL+BONL
BHTB BZE 4 XNACT [J IF BLFAIL BIT NOT SET
BJ*2 LDN 4 BA1(1) [ BA WORDS OF ACTIVITY
BJSL LDN 5 ACOMMUNE1(2) [ ACOMMUNE WORDS OF BSA
BK#= MOVE 4 5
BKRW NGN 5 1 [MARKER CHECKED BY CALLING ROUTINE
BL?G LDN 0 BSCHANAD(2) [START OF QUEUE
BLR6 ADN 1 CHAINADD
BM=Q REQUE 1,0 [RECHAIN AT FRONT OF PRIMARY QUEUE
BMQB LDX 2 FX2
BN=2 SBN 1 CHAINADD
BNPL LDX 0 ACOMMUNE7(1)
BP9= DCA ,DLA,0,MODE [ RESET DEVICE LIST IF NECC.
BPNW XOUT EXIT 7 0
BQ8G XNACT ADN 1 CHAINADD
BQN6 TXU 1 0 [END OF QUEUE?
BR7Q BCS XLOOP [J IF NOT
BRMB TXU 0 BSSBKCHN(2) [END OF SEARCH?
BS72 BCC XOUT [EXIT IF SO
BSLL LDX 0 BSSBKCHN(2) [POINTERS TO SECONDARY...
BT6= LDN 1 BSSCHAD(2) [...QUEUE
BTKW BRN XLP2
BW5G #
BWK6 #
BX4Q # THIS SUBROUTINE SEARCHES THE PRIMARY AND SECONDARY QUEUES
BXJB # FOR THE FIRST CHAPTER TRANSFER. IF FOUND X5 IS SET
BY42 # NEGATIVE AND THE TRANSFER REQUEUED AT THE HEAD OF THE
BYHL # PRIMARY QUEUE. OTHERWISE X5=0
B^3= #
B^GW LABFIX XFINDCH
C22G XFINDCH
C2G6 LDN 5 0 [CLEAR MARKER
C2^Q LDX 0 BSBKCHAN(2) [CONTENTS OF JOBRING+1
C3FB LDN 1 BSCHANAD(2) [ADDRESS OF JOBRING
C3^2 XCH1 TXU 1 0(1) [COMPARE ADDRESS WITH CONTENTS
C4DL BCC XOUTCH [IF EQUAL QUEUE IS EMPTY
C4Y= XCH2 LDX 1 0(1) [FIRST/NEXT BLK
C5CW SBN 1 CHAINADD
C5XG LDX 4 ATYPE(1)
C6C6 TXL 4 CACT
C6WQ BCS XCH3 [J IF NOT ACTIVITY
C7BB LDCT 4 #200
C7W2 ANDX 4 BA1(1)
C8*L BZE 4 XCH3 [J IF NOT CHAPTER TRANSFER
C8T= NGN 5 1 [SET MARKER TO SAY FOUND
C9#W LDN 0 BSCHANAD(2) [START OF PRIMARY QUEUE
C9SG ADN 1 CHAINADD
C=#6 REQUE 1,0 [REQUE AT HEAD OF PRIMARY QUEUE
C=RQ LDX 2 FX2
C??B XOUTCH
C?R2 EXIT 7 0
C#=L XCH3 ADN 1 CHAINADD
C#Q= TXU 1 0 [END OF QUEUE
C*9W BCS XCH2 [J IF NOT
C*PG XCH4 TXU 0 BSSBKCHN(2) [END OF SEARCH
CB96 BCC XOUTCH [EXIT IF SO
CBNQ LDX 0 BSSBKCHN(2) [POINTERS TO SECONDARY
CC8B LDN 1 BSSCHAD(2) [QUEUE
CCN2 BRN XCH1
CD7L #
CDM= #END
^^^^ ...470512060003