{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: BSTS867)}}
====== BSTS867 ======
(George Source)
**Macros used:** [[george:macro:ADDRESS|ADDRESS]], [[george:macro:ADJUSTLK|ADJUSTLK]], [[george:macro:BSON|BSON]], [[george:macro:BUTTONUP|BUTTONUP]], [[george:macro:BXE|BXE]], [[george:macro:BXL|BXL]], [[george:macro:CHAIN|CHAIN]], [[george:macro:CHAIND|CHAIND]], [[george:macro:CLINK|CLINK]], [[george:macro:COOR1|COOR1]], [[george:macro:COOR2|COOR2]], [[george:macro:COOR2P|COOR2P]], [[george:macro:COOR3|COOR3]], [[george:macro:DCA|DCA]], [[george:macro:DERING|DERING]], [[george:macro:DISENGPER|DISENGPER]], [[george:macro:FINDBSA|FINDBSA]], [[george:macro:FINDCORE|FINDCORE]], [[george:macro:FINDFAIL|FINDFAIL]], [[george:macro:FIXTRA|FIXTRA]], [[george:macro:FON|FON]], [[george:macro:FPUT|FPUT]], [[george:macro:FPUTX|FPUTX]], [[george:macro:FREECORE|FREECORE]], [[george:macro:FREEPAGE|FREEPAGE]], [[george:macro:FSHCODE|FSHCODE]], [[george:macro:FSHSKIP|FSHSKIP]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GPERI|GPERI]], [[george:macro:HUNT2J|HUNT2J]], [[george:macro:JENG|JENG]], [[george:macro:JPROP|JPROP]], [[george:macro:LABFIX|LABFIX]], [[george:macro:LOCK|LOCK]], [[george:macro:MHUNT|MHUNT]], [[george:macro:NAMEX|NAMEX]], [[george:macro:NAMFREEW|NAMFREEW]], [[george:macro:OFF|OFF]], [[george:macro:OFFQUE|OFFQUE]], [[george:macro:READ|READ]], [[george:macro:REQUE|REQUE]], [[george:macro:TRACE|TRACE]], [[george:macro:TRANSFIX|TRANSFIX]], [[george:macro:TWAIT|TWAIT]], [[george:macro:UNLOCK|UNLOCK]]
22FL #LIS K0BSTS
22^= #SEG BSTS65 [BOB NICHOLSON
23DW #
23YG # NEW INTERFACE VERSION
24D6 #
24XQ # THIS SEGMENT IS CONCERNED WITH EXECUTING PERI'S TO BACKING
25CB # STORE DEVICES. QUEUE BLOCKS ARE CHAINED TO THE RELEVANT BACKING
25X2 # STORE ACTIVITY ON THE PRIMARY OR SECONDARY QUEUES BY BSQ WHICH
26BL # OPTIMISES THE TRANSFERS TO OBTAIN MINIMUM HEAD MOUEMENT.
26W= # BSTS TAKES THE FIRST/NEXT QUEUE BLOCK OFF THE PRIMARY QUEUE
27*W # AND EXECUTES THE CORRESPONDING TRANSFER. WHEN THE PRIMARY QUEUE
27TG # IS EMPTY THE CONTENTS OF SECONDARY QUEUE (IF ANY) ARE TRANSFERED
28*6 # TO THE PRIMARY AND DEAL WITH:OTHERWISE COOR1Y IS OBEYED.
28SQ #
29#B # ACTIVITY BLOCKS ARE TREATED AS QUEUE BLOCKS FOR CHAPTER CHANGES
29S2 # AND NON-AUTONOMOUS TRANSFERS;AND BSTB/BQBLK FOR AUTONOMUS TRANSFER
2=?L # THE CONTENTS OF THESE BLOCKS IS AS FOLLOWS:-
2=R= #
2?=W # IDENTIFIERS FOR
2?QG # ACTIVITIES BSTB/BQBLK CONTENTS
2#=6 #
2#PQ # BA1 ATRAN SEE BELOW
2*9B # BA2 ALENLFN B0-B15 LENGTH OF TRANSFER B16-B23 LF
2*P2 # BA3 BLKNO UNDATUMISED BLOCK NUMBER
2B8L # BA4 CORADD CORE ADDRESS IF SET CORE OR OBJECT PR
2BN= # BA5 APCA ADDRESS OF ASSOCIATED PCA (OBJECT PRO
2C7W # ACOMMUNE7 BSMODE MODE OF TRANSFER
2CMG # ACOMMUNE8 ABSA ADDRESS OF BSA (FOR TRANFAIL)
2D76 # ACOMMUNE9 ADBLKNO DATUMISED BLOCK NUMBER
2DLQ #
2F6B # CONTENTS OF BA1 OR ATRAN :-
2FL2 #
2G5L # B0=1 IF AUTONOMOUS TRANSFER
2GK= # B1=1 IF CHAPTER CHANGE (SEE BELOW)
2H4W # B2=1 IF FAILED AUTONMOUS TRANSFER
2HJG # B3 MODE
2J46 # B4 OF
2JHQ # B5 TRANSFER
2K3B # B6 REQUIRED
2KH2 # B7=1 IF TRANSFER FROM SWAPTRAN
2L2L # B8=1 BSTS SHOULD FPUT THE PCA (SEE SWAPWAIT MACRO)
2LG= # B9 *
2L^W # B10=1 BSTS SHOULD FPUT CALLING ACTIVITY ON COMPLETION OF TRANSF
2MFG # B11=1 USED BY BACKWAIT IF %B AND %C ARE SPECIFIED
2M^6 # B12=1 USED BY PAGE TURNING (G4 ONLY) (BPAGE)
2NDQ # B13=1 BSTS SHOULD TAKE SPECIAL ACTION IF BLANKET TRANFSER FAILS
2NYB # B14=1 FAILURE MACRO SHOULD UPDATE BA3 IN THIS ACTIVITY IF NEED
2PD2 # B15=1 TRANSFER FAIL ACTIVITY SHOULD UNSET CORRUPT BLOCK MARK
2PXL # B16=1 SWAPTYPE TRANSFER (ASWAP)
2QC= # B17=1 OVERRIDE FLAW (FLAW)
2QWW # B18=1 DEAL WITH FAIL (FAIL)
2RBG # B19=1 FREE WRITE BLOCK AT END OF TRANSFER (FREE)
2RW6 # B20=1 USE FREED WRITE BLOCK (BUSE)
2S*Q # B21=1 SET CORE TRANSFER (BSET)
2STB # B22=1 ONLINE TRANSFER (BONL)
2T*2 # B23=1 OBJECT PROGRAM TRANSFER (BOBJ)
2TSL #
2W#= #
2WRW # FOR CHAPTER CHANGES THE BA AREA IS AS FOLLOWS:-
2X?G #
2XR6 # BA1 B1=1 INDICATES CHAPTER CHANGE
2Y=Q # BA2 LENGTH OF CHAPTER
2YQB # BA3 =0 IF ONE TRANSFER OR LENGTH OF FIRST TRANSFER IF TWO
2^=2 # BA4 DATUMISED BS ADDRESS OF FIRST TRANSFER
2^PL # BA5 DATUMISED BS ADDRESS OF SECOND TRANSFER.RUBBISN IF BA3=0
329= #
32NW #
338G #
33N6 FIXTRA K1BSTS
347Q LABFIX AP10
34MB LABFIX BSTS10
3572 TO
35LL #
366= # ACTUAL ENTRY POINT
36KW #
375G #SKI K6BSTS>3-3
37K6 (
384Q LDN 1 BSCHANAD(2) [SEE IF ANYTHING ON QUEUE
38JB TXU 1 BSBKCHAN(2)
3942 BCS R1
39HL #UNS ICTON
3=3= (
3=GW FIXTRA ASFBSTS [USED BY BSPRI RESTORE TIME MACRO
3?2G NULL [MENDED TO BRN ASFBSTS2
3?G6 )
3?^Q GEOERR 0,NO QUEUE [ERROR IF NOT
3#FB )
3#^2 R1 LDX 3 BSCHANAD(2)
3*DL SBN 3 CHAINADD [POINTER TO FIRST QBLK
3*Y= LDX 0 ATYPE(3) [TYPE OF QBLK
3BCW #SKI K6BSTS>699-699
3BXG TRACE 0,QBLKTYPE
3CC6 TXL 0 CACT
3CWQ BCC R3AC [J IF ACTIVITY BLOCK
3DBB #SKI K6BSTS>99-99
3DW2 (
3F*L SBX 0 BSP10 [SUBTRACT QBLK TYPE
3FT= BZE 0 R3AB [J IF ACTUAL QUEUE BLOCK
3G#W GEOERR 0,QBLKTYPE [OTHERWISE GEOERR
3GSG )
3H#6 R3AB LDN 4 ATRAN(3) [START OF AREA IN QBLK
3HRQ LDX 6 ADBLKNO(3) [DATUMISED BS ADDRESS FROM QUEUE BLK
3J?B LDX 7 BSMODE(3) [MODE OF TRANSFER FROM QBLK
3JR2 BRN R4
3K=L #
3KQ= # ENTRY MADE HERE IF THE WAIT FOR KARTCONT BIT
3L9W # IS SET. WE MUST IMPLEMENT KARTCONTS READ
3LPG # OF SCA SO THAT DEVICE CAN BE CORRECTLY
3M96 # ENGAGED .OTHER TRANSFERS TO WAIT UNTIL DEVICE
3MNQ # IS ENGAGED AND BIT CLEARED
3N8B TWAIT LDX 0 ACOMMUNE1(2)
3NN2 ANDN 0 BONL
3P7L BZE 0 TCOOR
3PM= LDX 0 ACOMMUNE1(2)
3Q6W ANDN 0 BLFAIL
3QLG BZE 0 TCOOR
3R66 BRN R3 [IMPLEMENT TRANSFER
3RKQ #
3S5B #
3SK2 # ENTRY MADE HERE WHEN A CURRENT FAIL IS DETECTED
3T4L # IF FLAW IS SET THE TRANSFER IS ATTEMPTED REGARDLESS,OTHERWISE
3TJ= # ALL ONLINE TRANSFERS ARE HELD UP ON THE WAITING QUEUE IF THE
3W3W # ONLINE FAIL BIT IS SET IN BSFAIL
3WHG # NON-ONLINE TRANSFERS ARE ONLY HELD UP IF THE NON-ONLINE FAIL BIT
3X36 # IS SET AND IF THERE IS AN ENTRY IN THE BSTB/BFAIL BLOCK FOR THE
3XGQ # APPROPRIATE BLOCK NUMBER.
3Y2B #
3YG2 TF3 LDX 7 ACOMMUNE1(2)
3Y^L ANDN 7 FLAW
3^F= BNZ 7 R3 [IMPLIMENT TRANSFER IF FLAW SET
3^YW LDX 7 ACOMMUNE1(2)
42DG ANDN 7 BONL
42Y6 BZE 7 TF2 [J NOT ONLINE
43CQ ANDN 0 BOFB
43XB BZE 0 R3 [ONLINE FAIL BIT NOT SET
44C2 TF4 LDX 2 BSQWBACK(2)
44WL TF4A LDN 3 CHAINADD(3)
45B= REQUE 3,2 [PUT QUEUE BLK ON WAITING Q
45TW R30C LDX 2 FX2
46*G BRN R30B [SEE IF ANYTHING ELSE TO DO
46T6 TF2 ANDN 0 BNOFB
47#Q BZE 0 R6 [NON ONLINE FAIL BIT NOT SET
47SB LDX 7 ACOMMUNE3(2)
48#2 ANDX 7 BSTSMASK [BLOCK NO. ROUNDED DOWN
48RL LDX 6 ACOMMUNE2(2)
49?= ANDN 6 #377 [LOGICAL FILE NUMBER
49QW FINDFAIL 4,7,6,CFL,R6T,FX2 [SEE IF CURRENT FAIL FOR THIS BLOCK
4==G BRN TF4 [ENTRY FOUND-GO TO PUT ON WAIT QUEUE
4=Q6 #
4?9Q # ENTRY NOT FOUND IN CURRENT FAIL LIST SO CHECK IF BLANKET HAS
4?PB # HAD ANY FAILED TRANSFERS WHILE WRITING AWAY FILE/FUWB BLOCKS BY
4#92 # CHECKING IF THERE ARE ANY BSTB/BWRITE BLOCKS IN THE TRANSFER FAIL
4#NL # ACTIVITY OR IF BLANKF1 AND BLANKF2 CONTAIN SAME BACKING STORE HOME
4*8= #
4*MW R6T LDX 1 ATFAPTR [POINTER TO TRANS
4B7G NA LDX 1 FPTR(1) [NEXT BLOCK
4BM6 LDX 0 ATYPE(1)
4C6Q TXL 0 CACT
4CLB BCC NB [J NOT FOUND
4D62 SRL 0 12
4DKL SBN 0 BSTB+BWRITE
4F5= BNZ 0 NA [NOT BSTB/BWRITE SO GO FOR NEXT BLOCK
4FJW LDXC 0 BACK1(1)
4G4G BCS £
4GJ6 TXU 6 0 [COMPARE BS HOMES
4H3Q TXU 7 BACK2(1) [
4HHB BCS NA [J IF UNEQUAL SO GO FOR NEXT
4J32 NCC LDX 2 FPTR(3) [NEXT BLOCK - CHECK THE TYPE
4JGL LDX 1 ATYPE(2) [TYPE
4K2= SRL 1 12
4KFW SBN 1 BSTB+FLOUR [IS IT BSTB FLOUR BLOCK?
4K^G BNZ 1 NBF [J IF NOT
4LF6 FREECORE 2 [FREE THE BLOCK IF SO
4LYQ NBF LDX 2 FX2
4MDB BRN TF4 [ PUT THIS QBLK ON WAIT QUEUE
4MY2 NB LDXC 0 BLANKF1
4NCL BCS £
4NX= TXU 6 0 [NOW CHECK THE BS HOMES IN
4PBW TXU 7 BLANKF2 [FIXED THAT BSTS SET UP IF BLANKET FA
4PWG BCC NCC [BRANCH TO CHECK FOR BSTB FLOUR
4QB6 LDX 1 CPPTR(2) [RELOAD PTR TO DEVICE LIST
4QTQ BRN R6 [CARRY ON
4R*B #
4RT2 #
4S#L X13 GEOERR 0,NO REC
4SS= #
4T?W # GET TRANSFER DETAILS FROM QBLOCK
4TRG # AND CHECK IF ANY PREVIOUS FAILS
4W?6 #
4WQQ R3AC LDN 4 BA1(3) [START OF BS AREA IN ACTIVITY
4X=B LDX 6 ACOMMUNE9(3) [DATUMISED BS ADDRESS FROM ACTIVITY
4XQ2 LDX 7 ACOMMUNE7(3) [MODE OF TRANSFER FROM ACTIVITY
4Y9L R4 LDN 5 ACOMMUNE1(2) [MOVE DETAILS OF TRANSFER
4YP= MOVE 4 5 [TO BSA ACTIVITY
4^8W #SKI K6BSTS>199-199
4^NG (
5286 TRACE ACOMMUNE1(2),PERCENTA
52MQ TRACE ACOMMUNE3(2),BLOCK NO
537B )
53M2 LDX 1 CPPTR(2)
546L DCA 1,DLA,7,MODE [MODE TRANSFER TO CONTROL AREA
54L= LDCT 7 #200
555W ANDX 7 ACOMMUNE1(2)
55KG BNZ 7 R5 [J IF A CHAPTER CHANGE
5656 DCA 1,STO,6,DTSA [B5 HARDWARE ADDRESS TO CA IN DEVICE
56JQ LDX 0 BSFAIL(2)
574B ANDN 0 BKARTWT
57J2 BNZ 0 TWAIT [J IF WAIT FOR KARTCONT BIT SET
583L LDXC 0 BSFAIL(2)
58H= BCS TF3 [J IF FAIL(S) BEING DEALT WITH
592W LDX 0 ACOMMUNE1(2)
59GG ANDN 0 BONL
5=26 BNZ 0 R3 [DON'T CHECK FOR CORRUPT BLOCK IF ONL
5=FQ R6 LDX 7 ACOMMUNE3(2)
5=^B SLL 7 1
5?F2 BPZ 7 R3 [NOT CORRUPT BLOCK
5?YL #
5#D= # IF B1 OF THE WORD CONTAINING THE BLOCK NUMBER IS SET WE HAVE A
5#XW # CORRUPT BLOCK ON OUR HANDS,I.E. ONE OR MORE OF THE BLOCKLETS
5*CG # COMPRISING THE BLOCK ARE CORRUPT. IF THE TRANSFER IS A WRITE WE
5*X6 # ASSUME THE TRANSFER IS GOING TO BE O.K. AND UNSET THE CORRUPT
5BBQ # BLOCKLET MARKERS IN THE PERMENANT FAIL LIST AND CARRY ON. IF THE
5BWB # TRANSFER IS A READ WE SEE IF THE TRANSFER CAN BE IMPLIMENTED,
5CB2 # OTHERWISE THE TRANSFER IS FAILED.
5CTL FSHCODE AORB
5D*= (
5DSW # IN A SHARED FILESTORE ENVIRONMENT PARTIAL CLEARANCE OF
5F#G # CORRUPTION WILL BE DEALT WITH BY TRANFAIL (NOTE BIT15 OF
5FS6 # BA1). TRANFAIL LEAVES BIT15 SET FOR BSTS TO DETERMINE THAT
5G?Q # THIS HAS HAPPENED AND CLEAR BIT15. THE TRANSFER CAN NOW PROCEED.
5GRB LDX 4 ACOMMUNE1(2)
5H?2 ANDN 4 #400
5HQL BZE 4 SHFS2
5J== ERS 4 ACOMMUNE1(2)
5JPW LDX 0 ACOMMUNE1(2)
5K9G BPZ 0 SHFS1
5KP6 ERS 4 ATRAN(3)
5L8Q BRN R3N
5LNB SHFS1
5M82 ERS 4 BA1(3)
5MML BRN R3N
5N7= SHFS2
5NLW )
5P6G SRL 7 1
5PL6 ANDX 7 BSTSMASK [BLOCK NO. ROUNDED DOWN TO NEXT BLK
5Q5Q LDX 5 ACOMMUNE2(2)
5QKB SRL 56 8 [X5=LENGTH OF TRANSFER
5R52 SRL 6 16 [X6=LOGICAL FILE NUMBER
5RJL FINDFAIL 4,7,6,PFL,X13,FX2 [GET RECORD FROM PERMENANT FAIL LIST
5S4= LDX 1 ACOMMUNE3(2)
5SHW ANDN 1 3 [GET STARTING BLOCKLET NUMBER
5T3G SRC 1 2
5TH6 LDCH 7 BSMAGIC(1) [STARTING BLOCKLET TO PFL FORM
5W2Q STO 7 0
5WGB LDX 5 ACOMMUNE2(2)
5X22 SRL 5 8 [LENGTH
5XFL X16 SBN 5 GSBS4 [SUBTRACT CHUNK LENGTH
5X^= BNG 5 X20
5YDW BZE 5 X20
5YYG BCHX 1 £ [UPDATE MOD
5^D6 LDCH 7 BSMAGIC(1) [NEXT BLOCKLET TO PFL FORM
5^XQ ADX 0 7
62CB BRN X16
62X2 X20 LDX 1 4 [POINTER TO PERMENANT FAIL RECORD
63BL LDX 7 1(1) [SECOND WD OF RECORD FROM PFL
63W= SLC 7 6
64*W ANDN 7 #17
64TG DCA ,LDEX,4,MODE [MODE
65*6 BZE 4 X17
65SQ ERX 0 7
66#B ANDX 0 7
66S2 BZE 0 X18 [GO TO TFA TO UNSET CORRUPT BLOCK MAR
67?L FSHCODE AORB
67R= (
68=W SBX 7 0 [
68QG BZE 7 R3N [J IF TRANSFER WONT ALTER CORRUPTION
69=6 BRN X18 [STATE - ELSE PFL ENTRY NEEDS UPDATE
69PQ )
6=9B FSHSKIP
6=P2 (
6?8L SRC 0 6
6?N= STO 0 1(1) [FAILED BLOCKLET MARKERS TO PFL
6#7W DSA 6 1(1) [AND LFN
6#MG LDCT 0 #200
6*76 ORS 0 1(1) [INDICATE PFL RECORD
6*LQ BRN R3N [CARRY ON
6B6B )
6BL2 X17 ANDX 7 0
6C5L BZE 7 R3N [J IF THIS BLOCKLET CAN BE READ
6CK= LDCT 7 #10 [FRIGGED REPLY
6D4W STO 7 CPRW1(2) [TO REPLY WD
6DJG BRN XRF
6F46 X18 LDCT 0 BFB
6FHQ ORS 0 1(1) [SET CFB WHILE REMOVING CBM
6G3B ADN 0 BNOFB
6GH2 ORS 0 BSFAIL(2) [SET BFB AND BNOFB
6H2L LDX 6 ACOMMUNE1(2)
6HG= LDN 0 #400 [BIT TO INFORM TRANFAIL THAT IT IS TO
6H^W [UNSET THE CORRUPT BLOCK MARK
6JFG BPZ 6 X19 [J IF NON-AUTONOMUS
6J^6 ORS 0 ATRAN(3)
6KDQ X21A STO 2 ABSA(3) [ADDRESS OF BSA FOR TFA
6KYB BRN X21
6LD2 X19 ORS 0 BA1(3)
6LXL X19A STO 2 ACOMMUNE8(3) [BSA ADDRESS TO ACTIVITY FOR TFA USE
6MC= X21 LDX 2 ATFAPTR
6MWW TRANSFIX CALL 7,BP8 [FPUT TFA IF NECESSARY
6NBG LDX 2 BSBKCHAN(2) [POINTER TO CHAINADD OF LAST BLOCK
6NW6 BRN TF4A [GO TO CHAIN QUEUE BLK ON TFA
6P*Q R3N LDX 1 CPPTR(2)
6PTB #
6Q*2 # SET UP CONTROL AREA AND SET DATA BLOCKS UP FOR TRANSFER
6QSL #
6R#= R3 LDX 4 BSFAIL(2)
6RRW ANDN 4 CGINPROG [SEE IF CARTRIDGE COMMAND IN PROGRESS
6S?G BZE 4 XR2 [....BRANCH IF NOT
6SR6 LDN 6 0
6T=Q LDX 4 ACOMMUNE1(2)
6TQB ANDN 4 BONL [SEE IF ONLINE(EXOFILE)TRANSFER
6W=2 BZE 4 XR1 [....BRANCH IF NOT(MUST BE FILESTORE)
6WPL LDCT 7 #10
6X9= STO 7 CPRW1(2) [SET INOPERABLE REPLY
6XNW BRN R16C
6Y8G XR1
6YN6 TRANSFIX CALL 7,XFIND [CHECK FOR BLANKETTOMOVCART DEPENDENT
6^7Q BNG 5 TRW3 [BLOCKS,AND J IF FOUND
6^MB COOR3 CARTWAIT,3 [WAIT FOR COMMAND TO TERMINATE
7272 STOZ BA5(2)
72LL BRN TO
736= XR2 LDX 4 ACOMMUNE2(2)
73KW SRL 4 8 [LENGTH
745G DCA 1,STO,4,COUNT [LENGTH TO CONTROL AREA
74K6 LDN 6 0 [INDICATE NOT CHAPTER CHANGE
754Q LDX 0 ACOMMUNE1(2)
75JB ANDN 0 BSET+BOBJ [
7642 BNZ 0 R7 [J IF SET CORE OR OBJECT PROGRAM
76HL DCA 1,LDEX,7,MODE [MODE OF TRANSFER
773= BZE 7 R9
77GW HUNT2J 3,BSTB,BWRITE,,R12 [GET POINTER TO BWRITE
782G BRN R10
78G6 R12 GEOERR 0,WRONGBLK
78^Q R9 HUNT2J 3,BSTB,FLOUR,,R12 [GET POINTERTO FLOUR
79FB #SKI G4
79^2 (
7=DL R10 LOCK 3 [LOCK DOWN DATA BLOCK
7=Y= R10A LDN 3 A1(3) [CORE TRANSFER ADDRESS
7?CW BRN R8A
7?XG R7 LDX 3 ACOMMUNE4(2) [CORE ADDRESS IF SET CORE OR OBJ PROG
7#C6 ANDN 0 BOBJ
7#WQ BZE 0 R8A [J IF NOT OBJECT PROGRAM
7*BB SMO ACOMMUNE5(2)
7*W2 LDX 0 ASEGTAB [POINTER TO PROGRAMS SEGMENT TABLE
7B*L DCA 1,STO,0,SEGTAB [SEG TABLE ADDRESS
7BT= LDX 0 BIT9
7C#W DCA 1,ORS,0,MODE [ADDITIVE MODE #40000 FOR OBJ RPOG
7CSG )
7D#6 #SKI G3
7DRQ (
7F?B R10 LOCK 3 [LOCK DOWN DATA BLOCK
7FR2 R10A LDN 3 A1(3) [CORE TRANSFER ADDRESS
7G=L BRN R8A
7GQ= R7 ANDN 0 BOBJ
7H9W BZE 0 R8 [JUMP IF NOT OBJECT PROGRAM TRANSFER
7HPG ADDRESS ACOMMUNE5(2),ACOMMUNE4(2),3 [DATUMISE O/P CORE ADDRESS
7J96 BRN R8A
7JNQ R8 LDX 3 ACOMMUNE4(2) [CORE ADDRESS IF SET CORE
7K8B )
7KN2 R8A DCA ,STO,3,CTSA
7L7L #SKI CPERFCHAP
7LM= (
7M6W #
7MLG # FOR MEASUREMENT PACKAGE
7N66 #
7NKQ LDX 3 JMBSTS [720200200
7P5B ANDX 3 ACOMMUNE1(2)
7PK2 BZE 3 ZA [J IF NOT SWAP OR CHAPTER CHANGE
7Q4L SLL 3 1
7QJ= LDN 1 BSAPS [MOD FOR SWAP
7R3W BPZ 3 ZB [J IF SWAP
7RHG LDN 1 BSCHCH [MOD FOR CHCH
7S36 BRN ZB
7SGQ ZA LDX 3 ACOMMUNE1(2)
7T2B ANDN 3 BONL
7TG2 BZE 3 ZC [J IF FILESTORE
7T^L LDN 1 BSONLY [MOD FOR ONLINE
7WF= BRN ZB
7WYW ZC DCA ,LDEX,3,MODE [MODE
7XDG
7XY6 LDN 1 BSFSR [MOD FOR READS
7YCQ BZE 3 ZB [JUMP IF NOT READS
7YXB LDN 1 BSFSW [MOD FOR WRITES
7^C2 ZB LDN 3 1
7^WL ADSC 3 1(1) [LEAST SIG
82B= LDN 3 0
82TW ADS 3 0(1)
83*G )
83T6 LABFIX BSPERI
84#Q R16B GPERI ,2
84SB COOR1 ,3 [WAIT FOR COMPLETION OF PERI
85#2 R16C LDX 3 BSCHANAD(2) [
85RL SBN 3 CHAINADD
86?= #SKI K6BSTS>99-99
86QW (
87=G LDN 0 1
87Q6 ADS 0 AWORK4(2) [NO OF TRANSFERS ON THIS DEVICE
889Q )
88PB LDX 0 ACOMMUNE1(2)
8992 BPZ 0 R20B [J IF NON-AUTO
89NL R20A LDX 0 ATRAN(3) [RESET THIS VALUE SINCE BACKWAIT OR
8=8= STO 0 ACOMMUNE1(2) [SWAPWAIT MAY HAVE INSERTED BITS
8=MW [DURING THE COORDINATION
8?7G R20B LDCH 1 CPRW1(2) [TOP CHARACTER OF REPLY
8?M6 BNZ 1 R21A [J IF TRANSFER FAIL OR INOP OR HOLD
8#6Q LDX 1 CPPTR(2) [ DEVICE LIST PTR
8#LB DCA 1,LDEX,0,MODE [ FOR MODES OTHER THAN 0 AND 1 .....
8*62 SBN 0 2 [ ..THE REPLY IS INDETERMINATE, SO ..
8*KL BPZ 0 REPGD [ ..JUMP ROUND CHECK.
8B5= DCA 1,LDX,0,CTSA [ START ADDRESS IN CORE
8BJW DCA 1,ADX,0,COUNT [ + COUNT
8C4G ANDX 0 BSB18
8CJ6 BXE 0 CPRW1(2),REPGD [ = CORE ADDR IN REPLY ? J IF SO
8D3Q BXL 0 CPRW1(2),TERR [ J IF OVERWRITING HAS OCCURRED
8DHB BRN R21A [ J IF SHORT TRANSFER
8F32 REPGD LDX 0 ACOMMUNE1(2) [ RESTORE X0
8FGL R20C BNZ 6 R22 [JUMP IF CHAPTER CHANGE
8G2= #SKI G3
8GFW (
8G^G ANDN 0 BOBJ+BSET
8HF6 BNZ 0 R26 [J IF SET CORE OR OBJECT PROGRAM
8HYQ )
8JDB #SKI G4
8JY2 (
8KCL ANDN 0 BOBJ+BSET+BPAGE
8KX= BZE 0 R56X [J IF NOT SET CORE,OBJ OR PAGE TRANSF
8LBW ANDN 0 BPAGE
8LWG BZE 0 R26 [NOT PAGE TRANSFER
8MB6 LDX 1 ACOMMUNE5(2) [ADDRESS OF PAGE TABLE ENTRY
8MTQ NGN 0 5
8N*B ANDS 0 0(1) [CLEAR BIT 21
8NT2 LDCT 0 #200
8P#L ANDX 0 0(1)
8PS= BZE 0 R26 [NO NEED TO FREE PAGE IF B1 CLEAR
8Q?W LDX 0 BN2T13
8QRG ANDS 0 0(1)
8R?6 #UNS ISTDP
8RQQ FREEPAGE ACOMMUNE4(2),1
8S=B #UNS ISTDP
8SQ2 #SKI
8T9L FREEPAGE ACOMMUNE4(2) [FREE THE PAGE
8TP= BRN R26
8W8W R56X
8WNG )
8X86 UNLOCK FPTR(3) [UNLOCK READ OR WRITE BLOCK
8XMQ DCA ,LDEX,0,MODE [GET MODE
8Y7B LDX 1 FPTR(3)
8YM2 BNZ 0 R23 [J NOT READ
8^6L LDX 0 BJREAD [X0=BSTB/BREAD
8^L= #SKI CAMK7>1-1
925W (
92KG NAMEX 1
9356 BRN R26
93JQ )
944B #SKI CAMK7<2-2
94J2 BRN R26A
953L R23 LDX 0 ACOMMUNE1(2)
95H= ANDN 0 FREE
962W BNZ 0 R24 [J IF FREE SET
96GG #SKI CAMK7<2-2
9726 (
97FQ LDX 0 BJFREEW [X0=BSTB/BFREEW
97^B R26A NAMEX 1 [RENAME BLOCK BSTB/BREAD OR BFREEW
98F2 )
98YL #SKI CAMK7>1-1
99D= NAMFREEW 1,R24 [J IF WRITE BLOCK TO BE FREED ANYWAY
99XW BRN R26
9=CG R24 FREECORE 1 [FREE WRITE BLOCK
9=X6 R26 LDN 3 CHAINADD(3)
9?BQ OFFQUE 3 [DECHAIN QBLK
9?WB SBN 3 CHAINADD
9#B2 LDX 0 ACOMMUNE1(2)
9#TL BNG 0 R27 [J IF AUTO
9**= LDX 7 CPRW1(2)
9*SW STO 7 ACOMMUNE9(3) [STO REPLY IN ACTIVITY
9B#G ANDN 0 BONL+ASWAP
9BS6 BNZ 0 V1 [J IF ONLINE OR SWAP
9C?Q LDN 0 #1000 [FAILURE MACRO SHOULD
9CRB ERS 0 BA1(3) [NOT UPDATE BA3 ANY MORE
9D?2 VTRS
9DQL LDX 0 ACOMMUNE1(2)
9F== ANDN 0 FAIL [SEE IF FAIL IS SET
9FPW BNZ 0 V2 [AND J IF IT IS AS LINK IS OK
9G9G V3 LDN 0 1
9GP6 ADJUSTLK 3 [UPDATE LINK
9H8Q V2 LDX 2 3
9HNB FPUT [SET ACTIVITY GOING AGAIN
9J82 R30B
9JML #SKI CPERFCHAP
9K7= (
9KLW LDN 0 1
9L6G SBS 0 ACOMMUNE7(2) [REDUCE COUNT OF OUTSTANDING TRANSFER
9LL6 )
9M5Q BNG 5 XNCLFL
9MKB STOZ BA5(2)
9N52 XNCLFL
9NJL LDN 4 BSCHANAD(2) [SEE IF ANYTHING LEFT
9P4= TXU 4 BSBKCHAN(2) [ON THE PRIMARY QUEUE
9PHW BCS R1 [J IF THERE IS
9Q3G #UNS ICTON
9QH6 (
9R2Q FIXTRA ASFBSTS1 [USED BY BSPRI RESTORE TIME MACRO
9RGB NULL [MENDED TO BRN ASFBSTS2
9S22 )
9SFL #SKI BSOPT
9S^= (
9TDW LDN 3 BSSCHAD(2) [SEE IF ANYTHING ON THE
9TYG TXU 3 BSSCHAD(2) [SECONDARY QUEUE
9WD6 BCC R30 [J IF NOT
9WXQ #
9XCB # NOW TRANSFER THE CONTENTS OF THE SECONDARY QUEUE INTO THE
9XX2 # PRIMARY QUEUE AND REVERSE THE DIRECTION INDICATOR
9YBL #
9YW= NGN 0 1
9^*W ERS 0 AWAY(2) [INVERT DIRECTION INDICATOR
9^TG MOVE 3 2 [MOVE PTRS TO FIRST&LAST QUEUE BLKS T
=2*6 [PRIMARY QUEUE BASE
=2SQ SMO BPTR(3) [UPDATE
=3#B STO 4 FPTR [POINTERS IN
=3S2 SMO FPTR(3) [FIRST AND LAST
=4?L STO 4 BPTR [QUEUE BLOCKS
=4R= STO 3 BSSCHAD(2) [MAKE SECONDARY QUEUE
=5=W STO 3 BSSBKCHN(2) [EMPTY
=5QG BRN R1 [GO TO DO NEXT TRANSFER
=6=6 )
=6PQ R30 COOR1 ,3 [GO TO SLEEP-NOTHING MORE TO DO
=79B BRN TO
=7P2 #
=88L #UNS ICTON
=8N= (
=97W FIXTRA ASFBSTS2
=9MG #
==76 # WHEN THE ALTERNATIVE OPTIMISING ROUTINE FOR
==LQ # ICT IS IN USE WE NEED TO TRANSFER THE FIRST
=?6B # TRANSFER ON SECONDARY QUEUE TO PRIMARY IF
=?L2 # PRIMARY QUEUE EMPTY
=#5L #
=#K= LDN 0 BSSCHAD(2) [SEE IF ANYTHING ON THE
=*4W LDX 3 BSSCHAD(2) [SECONDARY QUEUE
=*JG BXE 3 0,R30 [J IF NOT
=B46 DERING 3 [REMOVE FIRST TRANSFER FROM PRIMARY Q
=BHQ LDX 1 BSCHANAD(2) [AND PUT ON
=C3B STO 3 BSCHANAD(2) [PRIMARY QUEUE
=CH2 STO 3 BSBKCHAN(2)
=D2L STO 1 FPTR(3)
=DG= STO 1 BPTR(3)
=D^W BRN R1 [GO TO DO TRANSFER
=FFG #
=F^6 )
=GDQ #
=GYB #
=HD2 V1 ANDN 0 BONL
=HXL BNZ 0 V2 [J IF ONLINE
=JC= BRN VTRS [ J TO TEST FOR READ SWAP
=JWW R27 ANDN 0 BOBJ+BPAGE+ASWAP [DON'T LOOK FOR SWAPWAIT BIT IF NOT
=KBG [ANY OF THESE
=KW6 BZE 0 V4A
=L*Q TRANSFIX CALL 0,PCA [WAKE UP PCA IF NECESSARY
=LTB V4A LDX 4 FPTR(3) [GET PTR TO NEXT
=M*2 FREECORE 3 [FREE BSTB/BQBLK
=MSL V4 LDX 0 ACOMMUNE1(2)
=N#= ANDX 0 BIT10 [SEE IF BACKWAIT IS WAITING
=NRW BZE 0 R30B [J IF NOT - SEE IF ANYTHING ELSE TO D
=P?G LDX 3 4
=PR6 X8A LDX 3 BPTR(3) [OTHERWISE LOOK BACK FOR WAITING
=Q=Q LDX 6 ATYPE(3) [ACTIVITY
=QQB TXL 6 CACT
=R=2 BCS X8A [NOT AN ACTIVITY-KEEP LOOKING
=RPL BRN V2 [J TO FPUT
=S9= #
=SNW #
=T8G #
=TN6 # THIS SECTION DEALS WITH CHAPTER CHANGES.
=W7Q #
=WMB #SKI JSKI10
=X72 (
=XLL # IN GEORGE 4 THERE IS A TEMPORARY LUMP OF CODE TO DEAL WITH
=Y6= # HSD READ FAILS ON 1904A,1904S AND 1903T PROCESSORS. THE CODE
=YKW # STARTS CHAPTER TRANSFERS ON 8 WORD CORE ADDRESS BOUNDARIES - THIS
=^5G # IS A HARDWARE PROBLEM WHICH IS NOT GOING TO BE FIXED.
=^K6 # BY TEMPORARY WE MEAN THAT THE CODE SHOULD EVENTUALLY BE REPLACED
?24Q # BY SOMETHING MORE EFFICIENT. ONLY CHAPTER TRANSFERS FROM HSD ARE
?2JB # DEALT WITH IN THIS WAY,ALTHOUGH FILESTORE TRANSFERS TO AND FROM
?342 # THE DRUM SHOULD EVENTUALLY BE HANDLED ALSO.
?3HL #
?43= )
?4GW R5 LDCT 0 #777 [SET MODE TO READ
?52G DCA 1,ANDS,0,MODE [SET MODE TO READ
?5G6 LDX 6 ALINK1(3) [SEGMENT NUMBER
?5^Q #SKI CLINK
?6FB SRL 6 12 [X6 HAS CHAP NUMBER
?6^2 SMO 6
?7DL LDXC 4 KTAB [PICK UP TABLE ENTRY
?7Y= BCS T302 [AND JUMP IF CHAPTER ALREADY IN CORE
?8CW LDX 5 ACOMMUNE2(2) [TOTAL LENGTH OF CHAPTER
?8XG #SKI JSKI10<1$1
?9C6 TRANSFIX CALL 3,XGETCHAP
?9WQ #SKI JSKI10
?=BB (
?=W2 LDX 7 5
??*L ADX 7 BSTSPROC [ROUND UP IF NECESSARY
??T= TRANSFIX CALL 3,XGETCHAP
?##W LDCT 7 #200 [REPLACE WHAT WE HAVE OVERWRITTEN
?#SG )
?*#6 LDX 1 CPPTR(2)
?*RQ DCA 1,STO,5,COUNT [MAX LENGTH OF TRANSFER
?B?B FINDCORE 3 [GET POINTER TO CHAPTER
?BR2 LDX 0 GCHTY
?C=L NAMEX 3 [NAME BSTB/CHAPTER
?CQ= STO 6 BACK1(3) [SEGMENT NUMBER
?D9W STO 4 BACK2(3) [BACKING STORE ADDRESS OF CHAPTER
?DPG LDX 4 ACOMMUNE3(2) [X4=0 IF ONLY ONE TRANSFER
?F96 BZE 4 TC1 [J IF ONLY ONE TRANSFER
?FNQ DCA 1,STO,4,COUNT [LENGTH OF FIRST TRANSFER TO CA
?G8B TC1 LDX 0 ACOMMUNE4(2) [DATUMISED BS ADDRESS OF FIRST TRAN
?GN2 DCA 1,STO,0,DTSA [TO CONTROL AREA
?H7L TXU 3 GFIXCHAP [TEST IF CHAPTER JUST GOT IS IN THE
?HM= #SKI JSKI10<1$1
?J6W (
?JLG BCS R10 [FIXED CHAPTER SPACE
?K66 NGN 6 1 [X6 -VE IF FIXED CHAPTER SPACE
?KKQ BRN R10A [J TO MISS OUT LOCK
?L5B )
?LK2 #SKI JSKI10
?M4L (
?MJ= BCS R10L [FIXED CHAPTER SPACE
?N3W NGN 6 1 [X6 -VE IF FCS
?NHG BRN R10AL [MISS OUT LOCK
?P36 R10L LOCK 3
?PGQ R10AL LDN 3 A1(3) [CORE ADDRESS
?Q2B ADX 3 BSTSPROC [ROUND UP IF NECESSARY
?QG2 BRN R8A [GO TO DO THE PERI
?Q^L )
?RF= R22 BZE 4 TJH8 [J IF LAST TRANSFER
?RYW LDX 1 CPPTR(2)
?SDG DCA 1,SBX,5,COUNT [LENGTH OF NEXT TRANSFER
?SY6 DCA 1,LDX,3,COUNT
?TCQ DCA 1,ADX,3,CTSA [NEW CORE ADDRESS
?TXB DCA 1,STO,5,COUNT [NEW LENGTH TO CA
?WC2 LDX 0 ACOMMUNE5(2) [DATUMISED BS ADDRESS OF 2ND TRANSFER
?WWL DCA 1,STO,0,DTSA [TO CONTROL AREA
?XB= LDN 4 0
?XTW BRN R8A [GO TO DO SECOND PERI
?Y*G TJH8
?YT6 #SKI JSKI10
?^#Q (
?^SB LDX 0 BSTSPROC
#2#2 BZE 0 NOT8 [NO HSD OR 4A,4S, OR 3T
#2RL LDX 3 ACOMMUNE2(2) [TOTAL LENGTH OF CHAPTER
#3?= LDX 2 FPTR(2) [PTR TO CHAPTER BLOCK
#3QW SBS 0 ALOGLEN(2) [PM DOES CHECKSUM ON ALOGLEN
#4=G LDN 0 A1B(2) [=16
#4Q6 LDN 1 A1(2) [ADDRESS TO MOVE TO
#59Q TXL 3 B513
#5PB BCS XL513 [J IF CHAPTER LESS THAN 513 WORDS
#692 SBN 3 512
#6NL MOVE 0 0(3) [MOVE FIRST HALF OF CHAPTER UP
#78= ADX 0 3 [UPDATE CORE PTRS
#7MW ADX 1 3
#87G LDN 3 512 [LAST 512 WORDS..
#8M6 XL513 MOVE 0 0(3) [.. OR FIRST AND ONLY
#96Q LDX 2 FX2 [RESET THINGS
#9LB LDX 3 BSCHANAD(2)
#=62 SBN 3 CHAINADD
#=KL NOT8
#?5= )
#?JW LDX 4 FPTR(2) [POINTER TO CHAPTER
##4G BNG 6 TC2 [J IF IN FIXCHAP-NO NEED TO UNLOCK
##J6 UNLOCK 4 [UNLOCK CHAPTER
#*3Q FIXTRA BSPCHEC1
#*HB NULL
#B32 TC2 CHAIND 4,BCHAP [AND CHAIN IN CHAPTER CHAIN
#BGL LDX 1 ALINK1(3) [SEGMENT NUMBER
#C2= #SKI CLINK
#CFW SRL 1 12
#C^G ORX 4 GSIGN [IN CORE BIT
#DF6 STO 4 KTAB(1) [TO CHAPTER TABLE
#DYQ FIXTRA BSCHAPCK
#FDB NULL
#FY2 T302 LDN 3 CHAINADD(3)
#GCL OFFQUE 3 [DECHAIN ACTIVITY BLOCK
#GX= SBN 3 CHAINADD
#HBW ERS 7 BA1(3) [REMOVE CHAPTER CHANGE BIT
#HWG BPZ 6 V2 [JIF NOT FIZCHAP TO FPUT
#JB6 #SKI JPSCF
#JTQ (
#K*B OFF FXCHAPIN [FIXED CHAP SPACE NOW FREE
#KT2 FON FCXWAIT [WAKE UP THE OTHER ACTIVITY
#L#L )
#LS= T301 LDN 0 BSCHANAD(2) [OTHERWISE SEE IF ANYTHING ELSE TO DO
#M?W #SKI BSOPT
#MRG (
#N?6 LDN 1 BSSCHAD(2)
#NQQ TXU 1 BSSCHAD(2)
#P=B )
#PQ2 TXU 0 BSCHANAD(2)
#Q9L #SKI JPSCF-1
#QP= BCC V2 [J TO FPUT IF NO MORE
#R8W #SKI JPSCF
#RNG (
#S86 BCS V2T [BSA MUST WAIT IF MORE TO DO
#SMQ LDN 0 1 [BSUN OF ICF
#T7B TXU 0 BACK2(2)
#TM2 BCS T303 [J IF NOT ICF
#W6L LDX 0 BRADSPLTBSU [BSUN OF SCF
#WL= BZE 0 V2 [J IF SCF NOT RUNNING
#X5W SBN 0 1
#XKG BZE 0 V2 [OR IF ICF=SCF
#Y56 ADN 0 1
#YJQ T303 SBX 2 FX2
#^4B BNZ 2 V2 [J IF LOOKED AT BOTH BSAS
#^J2 FINDBSA ,0 [GET PTR TO OTHER BSA
*23L BRN T301
*2H= )
*32W V2T LDCT 7 #400
*3GG LDX 2 FX2 [MKR TO STOP BSQ FPUTTING THE BSA
*426 ORS 7 AWORK2(2) [..DURING THE COOR2
*4FQ LDX 2 3 [PTR TO ACTIVITY
*4^B FPUTX [PUT ON HEAD OF K3 TO AVOID
*5F2 [CHAPTER TGRASHING
*5YL COOR2 ,3 [LET THIS ACTIVITY HAVE A GO IN
*6D= [THE FIXED CHAPTER SPACE
*6XW ERS 7 AWORK2(2) [CLEAR MARKER
*7CG BRN R30B
*7X6 #
*8BQ #
*8WB # THE CURRENT TRANSFER HAS FAILED.
*9B2 #
*9TL # CHECK REPLIES FROM EXECUTIVE .
*=*= #
*=SW FIXTRA BSPCHEC2
*?#G NGNC 4 1
*?S6 R21A LDN 4 0 [X4=1 IF CHAP CHECKSUM FAIL
*#?Q BZE 6 XNCC
*#RB MHUNT 3,BSTB,CHAPTER [S.E.A. IF NOT FOUND
**?2 TXU 3 GFIXCHAP [IN FIXED CHAPTER SPACE?
**QL BCS XNFCS [J IF NOT
*B== LDN 2 BCHAP
*BPW CHAIN 3,BPTR(2) [PUT AT END OF CHAPTER CHAIN
*C9G OFF FXCHAPIN [FIXED CHAP SPACE NOW FREE
*CP6 FON FCXWAIT [WAKE UP OTHER ACTIVITY
*D8Q BRN XNCC
*DNB XNFCS LDX 1 ASIZE(3)
*F82 LDX 0 AFLAG(3)
*FML ANDN 0 2 [FROZEN CHAPTER?
*G7= BZE 0 XNFCNF [J IF NOT
*GLW SBS 1 FREZCHAP [REDUCE FROZEN CHAPTER SIZE
*H6G BRN XNFCFR
*HL6 XNFCNF
*J5Q SBS 1 ACHAP [REDUCE CURRENT TOTAL CHAPTER SIZE
*JKB XNFCFR
*K52 FREECORE 3 [RELEASE THE SPACE
*KJL XNCC LDN 1 4 [X1=4 MEANS CHCKSUM FAIL
*L4= BNZ 4 TFAIL [J IF CHAPTER CHECKSUM FAIL
*LHW LDCH 1 CPRW1(2) [REPLY TO BOTTOM 6 BITS
*M3G BZE 1 TFL2 [J IF NOT TRUE FAIL - SHORT TRANSFER
*MH6 ANDN 1 1
*N2Q BNZ 1 QINOP [J IF INOPERABLE
*NGB LDCH 1 CPRW1(2) [LOAD REPLY AGAIN
*P22 SBN 1 #14
*PFL BNZ 1 QCYL [J IF NOT MULTIACCESS FAIL
*P^= QDR LDN 1 1
*QDW DCA ,LDEX,0,MODE
*QYG BNZ 0 TFL3
*RD6 ADN 1 1
*RXQ BRN TFL3
*SCB QINOP BUTTONUP BA2(2) [SIMULATED ENGAGE BUTTON EVENT
*SX2 LDX 1 GSIGN
*TBL TFL3 LDX 0 ACOMMUNE1(2)
*TW= ANDN 0 BONL+FLAW
*W*W BNZ 0 R21 [JUST REPORT INOP IF ONLINE
*WTG BRN TFAIL
*X*6 QCYL SBN 1 #4
*XSQ BZE 1 TEOC [END OF CYLINDER B1=1
*Y#B SBN 1 #20
*YS2 BZE 1 TFAIL [UNTERMINATED TRANSFER B0=1
*^?L NINOP LDN 1 1
*^R= LDX 0 ACOMMUNE1(2)
B2=W ANDN 0 BONL+FLAW
B2QG BNZ 0 R21 [DON'T OUTPUT MESSAGES IF EXOFILE
B3=6 DCA ,LDEX,0,MODE
B3PQ BNZ 0 TFL1 [OR WRITE
B49B ADN 1 1
B4P2 TFL1 LDCH 0 CPRW1(2)
B58L SBN 0 4
B5N= BZE 0 TFAIL [UNCORRECTED ERROR B3=1
B67W LDX 3 AWORK1(2) [DEVICE TYPE
B6MG ANDN 3 #7777 [ISOILATE DEVICE TYPE
B776 SBN 3 9
B7LQ BZE 3 TERR [J IF SLOW DRUM B0,B3,B5 ONLY ARE VAL
B86B SBN 0 4
B8L2 BZE 0 TFAIL [TRACK FAULTLY B2=1
B95L SBN 0 #14
B9K= BZE 0 TFL2 [STANDARD INTERFACE PARITY FAIL B1=B3
B=4W SBN 3 16
B=JG BZE 3 TERR [J IF HD-NO MORE VALID REPLIES
B?46 ADN 3 12
B?HQ BNZ 3 TERR [J IF ED-NO MORE VALID REPLIES
B#3B ADN 0 18 [POSITION FAIL (LACK OF BOOST PRESSUR
B#H2 BNZ 0 TERR [J IF NOT
B*2L TFL2 LDN 1 2
B*G= BRN TFAIL
B*^W TEOC LDX 1 CPPTR(2) [PTR TO DEVICE LIST
BBFG DCA 1,LDX,0,CTSA [CHECK COUNT IS OK IN REPLY WORD
BB^6 DCA 1,ADX,0,COUNT [
BCDQ ANDX 0 BSB18
BCYB LDX 1 CPRW1(2) [REPLY
BDD2 ANDX 1 BSB18
BDXL SBX 0 1
BFC= BPZ 0 TFL2 [J IF REPLY OK - DON'T BREAK
BFWW TERR LDN 1 0
BGBG #
BGW6 # AT THIS STAGE ACTION DEPENDS ON X1:-
BH*Q # X1=0 OUTPUT MESSAGES AND GEOERR
BHTB # X1 -VE INOPERABLE
BJ*2 # X1=1 OUTPUT MESSAGES AND TAKE WRITE FAILURE ACTION#
BJSL # X1=2 OUTPUT MESSAGES WITH "PLEASE RE-ALLOCATE"
BK#= # X1=3 OUTPUT MESSAGES ONLY,BEFORE REPEATING PERI
BKRW # X1=4 OUTPUT MESSAGES WITH "CHAP CHECKSUM FAIL**"
BL?G #
BLR6 #
BM=Q TFAIL
BMQB BNG 1 WAIT [RETRY INOP TRANSFERS
BN=2 LDX 0 ACOMMUNE1(2)
BNPL ANDN 0 BPAGE
BP9= BZE 0 WAIT [ J NOT PAGE TRANSFER
BPNW LDN 1 2 [ SET PLEASE REALLOCATE MARKER
BQ8G WAIT
BQN6 TRANSFIX CALL 7,XGETCON
BR7Q STO 1 ACC3(2) [SAVE X1
BRMB LDN 3 JPMESS [ADDRESS OF FIX MESSAGE
BS72 BNG 1 ZINOP [J IF INOPERABLE
BSLL LDN 3 JPMESS1 [ADDRESS OF FAIL MESSAGE
BT6= ZINOP LDX 1 CPPTR(2) [PTR TO DEVICE LIST
BTKW TRANSFIX CALL 0,JPG [GEOG NO TO FIX OR FAIL MESSAGE
BW5G LDN 5 FCOUTBUF+1 [START OF MESSAGES IN OUTPUT BUFFER
BWK6 TRANSFIX CALL 6,YMVCH [PUT FIX OR FAIL MESS TO O/P BUFFER
BX4Q LDX 0 CPRW1(2) [SAVE REPPLY WORD
BXJB STO 0 BA4(2)
BY42 LDX 0 ACC3(2)
BYHL BNG 0 WRITE [J TO OUTPUT FIX IF INOPERABLE
B^3= DCA ,LDX,5,DTSA [HARDWARE ADDRESS
B^GW STO 5 BSL5 [REMEMBER FOR LATER ON
C22G LDX 1 AWORK1(2) [DEVICE TYPE
C2G6 ANDN 1 #7777
C2^Q SBN 1 6
C3FB BNZ 1 TRW1 [J NOT EDS
C3^2 SLC 56 6
C4DL SLL 5 2
C4Y= SLC 56 4
C5CW ANDN 6 #377 [TRACK TO X6
C5XG SLL 5 2
C6C6 SLL 45 4
C6WQ SLL 5 3
C7BB SRL 45 4
C7W2 SRL 5 17 [X5 CONTAIN BLOCK
C8*L BRN TW2
C8T= TRW1 SBN 1 3
C9#W LDN 3 BMESS1 [FAIL MESSAGE FOR SLOW DRUM
C9SG BZE 1 TRW2 [J IF SLOW DRUM
C=#6 LDN 3 BMESS2 [FAIL MESSAGE FOR HIGHSPEED DRUM
C=RQ SBN 1 16
C??B BZE 1 TRW2 [J IF HS DRUM
C?R2 LDN 6 0 [EDS 30 ETC
C#=L SLC 56 12
C#Q= SRL 5 12
C*9W TW2
C*PG TRANSFIX CALL 2,TOCT [BLOCK NO. TO OCTAL
CB96 STO 7 BMESS+6 [AND STORE IN O/P BUFFER
CBNQ STO 0 BMESS+7
CC8B LDX 5 6
CCN2 TRANSFIX CALL 2,TOCT [TRACK TO OCTAL
CD7L STO 0 BMESS+3 [AND STORE IN BUFFER
CDM= LDN 3 BMESS [ADDRESS OF TRACK/BLOCK MESSAGE
CF6W BRN TRW3A
CFLG TRW2
CG66 TRANSFIX CALL 2,TOCT [WORD OR BLOCK TO OCTAL
CGKQ STO 7 3(3) [STORE
CH5B STO 0 4(3) [IN MESSAGE
CHK2 TRW3A
CJ4L TRANSFIX CALL 6,ZMVCH [MESSAGE TO OUTPUT BUFFER
CJJ= LDX 2 FX2
CK3W LDX 0 AWORK1(2) [DEVICE TYPE
CKHG ANDN 0 #7777
CL36 ORN 0 #400 [REPLACER BIT
CLGQ SLL 0 15
CM2B STO 0 BSL1 [
CMG2 LDX 1 CPPTR(2)
CM^L DCA 1,LDEX,0,MODE
CNF= ORS 0 BSL1 [NORMAL TYPE/MODE
CNYW LDX 0 CPRW1(2)
CPDG STO 0 BSL2 [REPLY
CPY6 STO 0 BA5(2)
CQCQ DCA 1,LDX,0,COUNT [COUNT
CQXB STO 0 BSL3 [COUNT
CRC2 DCA 1,LDX,0,CTSA
CRWL STO 0 BSL4 [CORE ADDRESS
CSB= LDN 4 5 [LENGTH OF CONTROL AREA
CSTW LDN 1 BSL1 [FIRST WD OF CONTROL AREA
CT*G LDX 3 5 [ADDRESS OF NEXT CHARACTER IN O/P BUF
CTT6 TCAN LDN 0 #32 [*
CW#Q DCH 0 0(3)
CWSB BCHX 3 £ [UPDATE MOD
CX#2 LDX 7 0(1) [NO. TO BE CONVERTED TO OCTAL
CXRL LDN 0 8 [NO. OF CHARACTERS
CY?= XA LDN 6 0
CYQW SLL 67 3 [NEXT CHARACTER
C^=G DCH 6 0(3) [STORE IN BUFFER
C^Q6 BCHX 3 £ [UPDATE MOD
D29Q BCT 0 XA [J IF MORE CHARACTERS IN THIS WORD
D2PB LDN 0 #76
D392 DCH 0 0(3) [NEWLINE
D3NL BCHX 3 £
D48= LDN 0 #32
D4MW DCH 0 0(3)
D57G BCHX 3 £
D5M6 ADN 1 1 [UPDATE MOD FOR NEXT WORD IN CA
D66Q BCT 4 TCAN [J IF MORE WORDS TO CONVERT
D6LB STO 3 FCOUTBUF [REMEMBER LATEST POSITION IN BUFFER
D762 LDX 0 ACC3(2)
D7KL SBN 0 2
D85= BZE 0 READ [J IF PLEASE REALLOCATE TO BE OP
D8JW SBN 0 2
D94G BNZ 0 WRITA [J NOT CHAPTER CHECKSUM FAIL
D9J6 FIXTRA BSPCHEC3
D=3Q NULL [CHAPRETRY PUTS LDN FOR MESS IN HERE
D=HB BRN RCHF
D?32 #
D?GL # ONLY OUTPUT PLEASE REALLOCATE WHEN NOT IN EMS
D#2= # AND FOR EDS ONLY
D#FW #
D#^G READ BSON EMSBIT,WRITA
D*F6 JPROP CPPTR(2),WRITA,WRITA
D*YQ LDN 0 2
DBDB ANDX 0 AWORK1(2)
DBY2 BZE 0 WRITA
DCCL LDN 3 BMESS4 [PTR TO PLEASE REALLOCATE MSG
DCX= RCHF
DDBW TRANSFIX CALL 6,ZMVCH
DDWG WRITE LDX 3 5
DFB6 WRITA
DFTQ TRANSFIX CALL 7,XPERI [DO CONSOLE PERI
DG*B LDX 6 ACC6(2)
DGT2 LDX 3 ACC3(2)
DH#L LDCH 0 CPRW1(2) [GET REPLY FROM CONSOLE
DHS= LDX 1 BA4(2)
DJ?W STO 1 CPRW1(2) [IN PROPER PLACE
DJRG ANDN 0 5
DK?6 BZE 0 TOK [J IF CONSOLE PERI OK
DKQQ LDX 1 3 [ELSE RESET X1
DL=B BRN WAIT [AND TRY AGAIN
DLQ2 TOK FON #50 [WAKE UP ANYBODY WAITING FOR CONSOLE
DM9L BZE 3 X1 [GEOERR IF ILLEGAL REPLY
DMP= BNG 3 TINOP [J IF INOPERABLE
DN8W SBN 3 2
DNNG LDN 5 0
DP86 BNG 3 TRW3 [J IF ONLINE OR WRITE
DPMQ BNZ 3 TO [CHAPTER CHECKSUM REPEAT PERI
DQ7B #
DQM2 # PLEASE RE-ALLOCATE WAS ONLY OUTPUT FOR EDS WHEN NOT IN EMS
DR6L # THE DISENGAGE LOOP IS ONLY ENTERED IN THESE CIRCUMSTANCES
DRL= # ALL OTHER FAILS ARE DEALT WITH AS IF THEY HAD BEEN F5 TERM
DS5W #
DSKG BSON EMSBIT,ZTERM [J IF EMS
DT56 JPROP CPPTR(2),ZTERM,ZTERM [J IF FDS160/640
DTJQ LDN 0 2
DW4B ANDX 0 AWORK1(2)
DWJ2 BZE 0 ZTERM [J IF NOT EDS
DX3L #
DXH= # THE DISENGAGE LOOP. AFTER DISC IS DISENGAGED BSTS WAITS
DY2W # FOR KARTCONT TO SAY DRIVE IS CORRECTLY ENGAGE
DYGG # I.E.THE SAME DISC AS BEFORE IS ON DRIVE
D^26 # BEFORE THIS HAPPENS BSTS MUST LET ANY CHAPTER
D^FQ # TRANSFERS AND KARTCONT'S READ OF SCA BE IMPLEMENTED
D^^B #
F2F2 DISENGPER CPPTR(2) [DISENGAGE DISC
F2YL TDIS COOR2P ,7
F3D= JENG CPPTR(2),TDIS [STILL ENGAGED WAIT
F3XW BUTTONUP BA2(2) [SIMULATE ENGAGE BUTTON EVENT
F4CG LDN 0 BKARTWT [SET WAIT FOR KARTCONT BIT
F4X6 ORS 0 BSFAIL(2)
F5BQ TMSG
F5WB TRANSFIX CALL 7,XOUTFIX [OUTPUT UNIT N FIX
F6B2 STIME LDX 0 JTIME [LOAD NO. OF SPRING CLEANS
F6TL STO 0 BA4(2)
F7*= TCOOR COOR2P ,7
F7SW LDX 0 BSFAIL(2)
F8#G ANDN 0 CGINPROG
F8S6 BNZ 0 XR1 [J IF CARTRIDGE COMMAND IN PROGRESS
F9?Q SMO CPPTR(2)
F9RB LDX 0 JK52E
F=?2 ANDN 0 #40
F=QL BNZ 0 TERM [J IF TERMINATE BIT SET
F?== TRANSFIX CALL 7,XFIND [SEARCH FOR ANY BONL OR BLFAIL
F?PW BNG 5 RSCA [TRANSFERS.J IF ANY FOUND
F#9G JENG CPPTR(2),TENG [J IF DEVICE ENGAGED
F#P6 LDX 0 JTIME [LOAD NO. OF SPRING CLEANS
F*8Q SBX 0 BA4(2) [SUBTRACT PREVIOUS READING
F*NB BPZ 0 XPOS
FB82 NGX 0 0 [ACCOUNTS FOR CHANGE AT MIDNIGHT
FBML XPOS SBN 0 200 [200 SPRING CLEANS ELAPSED
FC7= BNG 0 TCOOR [NO
FCLW BRN TMSG [YES - RE-OUTPUT UNIT N FIX
FD6G #
FDL6 TINOP BSON EMSBIT,STIME [DON'T WANT TO SET BKARTWT IF EMS
FF5Q LDN 0 BKARTWT [SET WAIT FOR KARTCONT BIT
FFKB ORS 0 BSFAIL(2)
FG52 BRN STIME
FGJL #
FH4= TENG LDX 0 BSFAIL(2) [IS WAIT FOR KARTCONT BIT SET
FHHW ANDN 0 BKARTWT
FJ3G BZE 0 TO [NO
FJH6 TRANSFIX CALL 7,XFINDCH [SEARCH FOR ANY CHAPTER TRANSFERS
FK2Q BNG 5 TO [J IF FOUND TO IMPLEMENT
FKGB BRN TCOOR [NONE FOUND WAIT
FL22 #
FLFL RSCA LDX 0 ACOMMUNE1(2) [IS THIS TRANSFER KARTCONTS
FL^= ANDN 0 BONL [READ OF THE SCA
FMDW BZE 0 TRW3 [NO
FMYG LDX 0 ACOMMUNE1(2)
FND6 ANDN 0 BLFAIL
FNXQ BZE 0 TRW3 [NO
FPCB BRN TO [YES SO J TO IMPLEMENT
FPX2 #
FQBL #
FQW= #
FR*W #
FRTG # THIS MODULE DEALS WITH TRANSFER FAILS THAT GO THROUGH THE
FS*6 # "PLEASE REALLOCATE" LOOP, AND HAVE BEEN TERMINATED BY OPERATOR
FSSQ # INTERVENTION. A MESSAGE IS OUTPUT TO THE CONSOLE AND THE
FT#B # FAILING ACTIVITY IS QUEUED ON THE TRANSFER FAIL ACTIVITY.
FTS2 # IF TERMINATE IS REQUESTED FOR INOPERABLE FAILS WE CHECK BA5
FW?L # FOR A GENUINE READ FAIL, AND REJECT REQUESTS IF NO SUCH FAIL
FWR= # HAS OCCURRED.
FX=W #
FXQG TERM
FY=6 LDN 0 #40
FYPQ SMO CPPTR(2)
F^9B ERS 0 JK52E [ CLEAR TERMINATE BIT
F^P2 LDX 0 BA5(2) [ ZERO IF INOP
G28L BZE 0 TCOOR
G2N= XTERM
G37W #SKI G4
G3MG (
G476 LDX 0 ACOMMUNE1(2)
G4LQ ANDN 0 BPAGE [ FOR PAGE TRANSFER FAILS
G56B BNZ 0 X1 [ THER IS NO RECOVERY ACTION
G5L2 )
G65L TRANSFIX CALL 7,XGETCON [GET THE CONSOLE
G6K= LDN 3 BTERMESS [ TERMINATED MESSAGE
G74W LDX 1 CPPTR(2)
G7JG TRANSFIX CALL 0,JPG [ GEOG. NO. TO MESSAGE
G846 LDN 5 FCOUTBUF+1
G8HQ TRANSFIX CALL 6,YMVCH [MOVE TO OUTPUT BUFFER
G93B LDX 3 5
G9H2 TRANSFIX CALL 7,XPERI [OUTPUT THE MESSAGE
G=2L LDCH 0 CPRW1(2)
G=G= BNZ 0 XTERM
G=Q4 ... FON #50 [WAKE UP ANYBODY WAITING CONSOLE
G=^W ZTERM STOZ BA5(2)
G?FG #
G?^6 #
G#DQ # IF THE FAILED TRANSFER IS ONLINE THE REPLY IS SET IN THE CALLING
G#YB # ACTIVITY.
G*D2 # IF THE FAILED TRANSFER IS A WRITE TO THE FILESTORE THE CURRENT
G*XL # FAIL LIST IS UPDATED AND THE TRANSFER FAIL ACTIVITY IS WOKEN UP.
GBC= # SWAP TRANSFERS ARE DEALT WITH AS ONLINE
GBWW #
GCBG #
GCW6 #
GD*Q TRW3
GDTB LDX 3 BSCHANAD(2) [REFIND QBLK
GF*2 SBN 3 CHAINADD
GFSL R21 LDX 0 ACOMMUNE1(2)
GG#= DCA ,LDEX,7,MODE
GGRW ANDN 0 BOBJSET
GH?G BNZ 0 Q3 [JUMP IF SET OR OP
GHR6 LDCT 0 #200
GJ=Q ANDX 0 ACOMMUNE1(2)
GJQB BNZ 0 X19A [ J IF CHAPTER CHANGE
GK=2 UNLOCK FPTR(3) [UNLFCK READ OR WRITE BLOCK
GKPL Q3 LDX 0 ACOMMUNE1(2)
GL9= ANDN 0 BONL+ASWAP
GLNW BNZ 0 X2 [J IF ONLINE OR SWAP
GM8G BZE 7 XRF [ J IF READ FAIL
GMN6 LDCT 0 BFB
GN7Q ADN 0 BNOFB
GNMB ORS 0 BSFAIL(2) [SET BITS
GP72 LDX 0 ACOMMUNE1(2)
GPLL ANDN 0 BLFAIL [SPECIAL 'BLANKET' FAILURE ACTION
GQ6= BZE 0 XC [TO BE TAKEN. J IF NOT.
GQKW LDX 0 ACOMMUNE2(2)
GR5G ANDN 0 #377
GRK6 STO 0 BLANKF1 [STO LFN
GS4Q BPZ 5 XNBF
GSJB LDCT 0 #400
GT42 ORS 0 BLANKF1 [SET BO FOR USE BY BLANKET
GTHL XNBF
GW3= LDX 0 ACOMMUNE3(2)
GWGW STO 0 BLANKF2 [STO BLOCK NO.
GX2G LDX 1 FPTR(2)
GXG6 LDN 0 1
GX^Q ADS 0 A1(1) [UPDATE CURRENT FAIL COUNT
GYFB BRN X3
GY^2 XC LDX 1 FPTR(2) [BSTB/BFAIL BLOCK
G^DL FSHCODE AORB
G^Y= (
H2CW LDX 0 A1(1)
H2XG BPZ 0 XD
H3C6 COOR2
H3WQ BRN XC
H4BB XD
H4W2 )
H5*L NGN 7 1
H5T= LDN 6 1
H6#W X5 SMO 6
H6SG TXU 7 A1(1) [SEE IF END OF LIST
H7#6 BCC X4 [J IF YES
H7RQ ADN 6 2
H8?B BRN X5
H8R2 X4 ADN 6 3
H9=L LDX 5 GSIGN
H9Q= TXL 6 ALOGLEN(1) [ANY SPACE LEFT?
H=9W BCS X6 [J IF SO
H=PG ORS 5 A1(1) [SET BEING TAMPERED WITH BIT
H?96 LDN 4 AFAILEX [LENGTH BLOCK TO BE EXTENDED
H?NQ ADX 4 ALOGLEN(1)
H#8B LDX 3 1
H#N2 TRANSFIX CALL 5,XALTLEN
H*7L LDX 5 GSIGN
H*M= LDX 1 FPTR(2)
HB6W ERS 5 A1(1) [FREE FOR ALL TO USE NOW
HBLG LDX 3 BSCHANAD(2) [QBLK
HC66 SBN 3 CHAINADD
HCKQ X6 SBN 6 3
HD5B LDN 0 1
HDK2 ADS 0 A1(1)
HF4L ADX 1 6
HFJ= STO 5 A1+1(1) [SET CURRENT FAIL BIT
HG3W LDX 0 ACOMMUNE3(2)
HGHG ANDX 0 BSTSMASK [BLOCK NO TO NEAREST BLOCK
HH36 STO 0 A1(1) [BLOCK NO
HHGQ LDX 0 ACOMMUNE2(2)
HJ2B ANDN 0 #377 [GET THE LOGICAL FILE NUMBER
HJG2 DSA 0 A1+1(1) [PUT IN LFN
HJ^L STO 7 A1+2(1) [-1
HKF= XRF
HKYW LDX 0 ACOMMUNE1(2)
HLDG ANDN 0 FAIL
HLY6 BZE 0 X3 [FAIL NOT TO BE DEALT WITH BY BSTS
HMCQ LDX 6 ACOMMUNE1(2)
HMXB BPZ 6 X19A [JUMP TO FPUT TRANSFER FAIL ACTIVITY
HNC2 BRN X21A [(IF NECESSARY) TO DEAL WITH FAIL
HNWL #
HPB= #
HPTW X2 ANDN 0 BONL
HQ*G BNZ 0 X35 [ J IF BONL TO SET FAILED BITS
HQT6 [ FAILS ON SWAP TRANSFERS ARE DEALT WITH AS FOLLOWS :-
HR#Q BZE 7 XRF [ - READ FAILS BY BSTS
HRSB BRN X3 [ - WRITE FAILS BY SWAPPING SYSTEM
HS#2 X35
HSRL #UNSET JSKI34
HT?= (
HTQW LDX 0 ACOMMUNE1(2)
HW=G ANDN 0 FLAW [DONT SET FAIL BITS IF FLAW
HWQ6 BNZ 0 X3
HX9Q )
HXPB LDCT 0 BFB [ SET BACKING STORE FAIL BITS
HY92 ADN 0 BOFB
HYNL ORS 0 BSFAIL(2)
H^8= X3 LDX 0 ACOMMUNE1(2)
H^MW ANDN 0 BOBJ+BSET
J27G BNZ 0 X9
J2M6 DCA ,LDEX,0,MODE
J36Q BNZ 0 X9
J3LB FREECORE FPTR(3) [FREE THE READ BLOCK
J462 X9 LDN 3 CHAINADD(3)
J4KL OFFQUE 3
J55= SBN 3 CHAINADD
J5JW LDX 7 CPRW1(2)
J64G LDX 0 ACOMMUNE1(2)
J6J6 BNG 0 X8 [J IF AUTO.
J73Q STO 7 ACOMMUNE9(3) [REPLY TO ACTIVITY
J7HB BRN V2 [J TO FPUT THIS ACTIVITY
J832 X8 LDCT 0 #100
J8GL ORS 0 ATRAN(3) [FAILED BIT TO QBLK
J92= STO 7 ADBLKNO(3) [STORE PERI REPLY IN QBLK
J9FW LDX 4 3
J9^G BRN V4
J=F6 LABFIX AX1
J=YQ X1 GEOERR 0,TRANFAIL [CANNOT RECOVER FROM FAILURE
J?DB #END
^^^^ ...043466630003