BSTS867
(George Source)
Macros used: ADDRESS, ADJUSTLK, BSON, BUTTONUP, BXE, BXL, CHAIN, CHAIND, CLINK, COOR1, COOR2, COOR2P, COOR3, DCA, DERING, DISENGPER, FINDBSA, FINDCORE, FINDFAIL, FIXTRA, FON, FPUT, FPUTX, FREECORE, FREEPAGE, FSHCODE, FSHSKIP, GEOERR, GPERI, HUNT2J, JENG, JPROP, LABFIX, LOCK, MHUNT, NAMEX, NAMFREEW, OFF, OFFQUE, READ, REQUE, TRACE, TRANSFIX, TWAIT, UNLOCK
- BSTS867.txt
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