14 22BG ... SEG GETWORD,,CENT(LOAD OBJ PROG) 4 22R2 ...[ 15 237G ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982 4 23J2 ...[ 4 23YG # 4 24D6 # 11 24XQ SEGENTRY K1GETWORD,XENT1 11 25CB SEGENTRY K2GETWORD,XENT2 11 25X2 SEGENTRY K3GETWORD,XENT3 11 26BL SEGENTRY K4GETWORD,XENT4 4 26W= # 19 27*W # ENTRIES 1 AND 2 ARE FROM THE GETWORD MACRO VIA DOWN WITH 14 27TG # %C SET TO READ OR WRITE RESPECTIVELY 15 28*6 # ENTRY 3 IS FROM THE WORDFIN MACRO VIA DOWN 4 28SQ # 19 29#B # ENTRY 4 IS FROM THE GETWORDX MACRO VIA DOWN WITH %C SET TO 19 29S2 # ANY COMBINATION OF CHOBEYP, CHWRITEP, CHREADP, CHNSHARED 15 2=?L # CHUSED, GWRITE, GOBEY, GREAD, AND GNOMESS. 4 2=R= # 20 2?=W # THE ACOMMUNE WORDS ARE USED TO PASS INFORMATION BETWEEN THE 19 2?QG # GETWORD (AND GETWORDX) MACROS AND THIS ROUTINE AS FOLLOWS: 7 2#=6 # ON ENTRY:- 21 2#PQ # [ACOMMUNE1]=%A=WD CONTAINING ADDR OF WD TO BE ACCESSED RELATIVE 9 2*9B # TO PROGRAM DATUM 21 2*P2 # [ACOMMUNE2]=%E=WD CONTAINING NO OF WORDS DESIRED TO ACCESS FROM 14 2B8L # AND INCLUDING THE WD SPECIFIED BY %A 7 2BN= # ON EXIT:- 21 2C7W # [ACOMMUNE1]=%B=WD CONTAINING THE GEORGE ADDR OF THE WD SPECIFIED 6 2CMG # BY %A 20 2D76 # [ACOMMUNE2]=%D=WD CONTAINING NO OF WORDS WHICH CAN BE ACCESSED 15 2DLQ # FROM AND INCLUDING THE WD SPECIFIED BY %A 20 2F6B # %D MAY BE LESS THAN,GREATER THAN,OR EQUAL TO %E.HENCE IT MUST 21 2FL2 # BE CHECKED BY ALL ROUTINES WHICH SPECIFY %E. (IF %E IS NULL ITS 15 2G5L # VALUE IS SET TO 1 BY THE GETWORD MACRO.) 4 2GK= # 4 2H4W # 18 2HJG # IN ADDITION, FOR GETWORDX, THE ACOMMUNE3 WORD IS USED 15 2J46 # TO PASS THE INFORMATION SPECIFIED IN %C. 4 2JHQ # 4 2K3B # 20 2KH2 # THE WORD EXTPS+1 IN THE COMMAND PROCESSING ACTIVITY IS USED 8 2L2L # AS FOLLOWS:- 4 2LG= # 20 2L_W # B0=1 AREA HAS BEEN WRITTEN TO,I.E. IF THE O/P IS S/O THE 21 2MFG # AGETWORD BLOCK ASSOCIATED WITH THE AREA MUST BE WRITTEN 14 2M_6 # AWAY AFTER THE LAST ACCESS 20 2NDQ # B1=1 A GETWORD WITH A WRITE ACCESS IS BEING OBEYED,I.E. IF 20 2NYB # THIS INVOLVES GETTING A NEW AGETWORD BLOCK,THAT BLOCK 17 2PD2 # WILL HAVE TO BE WRITTEN AWAY EVENTUALLY 4 2PXL # 11 2QC= # B2=1 NOT FIRST GETWORD 4 2QWW # 21 2RBG # B3=1 ADATA/AGETWORD BLOCK CREATED * NECESSARY IF ALL GETWORDS 21 2RW6 # B4=1 FAILED RESVIOL * IN SEQUENCE FAIL RESVIOL 4 2S*Q # 17 2STB # B5=1 NO CORE IMAGE MARKER- WORDFIN OPTIONAL 4 2T*2 # 13 2TSL # B6=1 IF GETWORDX BEING OBEYED 4 2W#= # 4 2WFD # 19 2WLL # B7=1 GETWORD BLOCK DERIVED FROM VALID FPB/FREE PAGE 20 2WRW # B9-23 ADDR REL TO O/P DATUM/BLOCKLET SIZE OF WD REPRESENTED 19 2X?G # BY A1 OF POSSIBLE AGETWORD BLOCK,I.E. NO OF FIRST 19 2XR6 # BLOCKLET WITHIN PROGRAM IN THIS AGETWORD BLOCK 4 2Y=Q # 20 2YQB # THE FOLLOWING NOTATION IS USED IN THE CALCULATION OF 14 2_=2 # PARAMETERS FOR O/P BS TFRS 4 2_PL # 20 329= # OBJPROG ADDR/SHEETSIZE=QUOTIENT 'Q1' =SHEET NO WITHIN PROGRAM 19 32NW # +REMAINDER'R1' =ADDR WITHIN SHEET 4 338G # 16 33N6 # R1/BLOCKLET SIZE= Q2 =BLOCKLET NO WITHIN SHEET 15 347Q # + R2 =ADDR WITHIN BLOCKLET 4 34MB # 4 3572 # 4 35LL # 4 366= # 4 36KW # 4 375G # 7 37K6 # CONSTANTS 4 384Q # 4 38JB # 9 3942 ZBIT2 #10000000 9 39HL ZBIT3 #4000000 9 3=3= ZBIT4 #2000000 9 3=GW ZBIT5 #1000000 9 3?2G ZNOTBIT5 #76777777 9 3?G6 ZBIT9 #40000 9 3?_Q ZBIT10 #20000 9 3#FB ZBIT11 #10000 9 3#_2 ZBITS15LS #77777 9 3*DL MNOTB6 #77377777 9 3*Y= MB8T23 #00177777 21 3BCW ZBLKLETSIZE #200 [BLOCKLET SIZE IN WORDS.THIS IS THE 21 3BXG # [SMALLEST UNIT OF TRANSFER ON EDS/FDS 4 3CC6 # 4 3CWQ # 4 3DBB # 9 3DW2 # LOCAL DEFINITIONS 4 3F*L # 9 3FT= #DEF ASHEETSIZE=BSSS 4 3G#W # 4 3GSG # 4 3H#6 # 15 3HRQ XENT2 [WRITE G/W 7 3J?B NGNC 0 1 14 3JR2 XENT1 [READ G/W 16 3K=L LDN 7 0 [SET R/W MARKER 9 3KQ= LDX 0 MNOTB6(1) 16 3L9W ANDS 0 EXTPS+1(2) [INDICATE GETWORD 4 3LPG N1 9 3M96 #SKI K6GETWORD>199-199 12 3MNQ TRACE ACOMMUNE1(2),GETWORD 10 3N8B LDX 0 ZNOTBIT5(1) 17 3NN2 ANDS 0 EXTPS+1(2) [CLEAR NO C/I MARKER 9 3P7L LDCH 4 ATYPE(2) 9 3PM= SBN 4 CPAT/64 17 3Q6W BZE 4 N2 [J IF ISSUED FROM CPA 9 3QLG GEOERR 1,NOT CPA 10 3R66 N2 LDX 5 CONTEXT(2) 8 3RKQ ANDN 5 #1000 8 3S5B BNZ 5 N21 9 3SK2 SETREP NOCORE 10 3T4L STOZ EXTPS+1(2) 17 3TJ= SETBIT 5,EXTPS+1(2) [SET NO C/I MARKER 7 3W3W UPPLUS 1 7 3WHG N21 LDN 5 1 14 3X36 SBS 5 ACOMMUNE2(2) [%E-1=E 10 3XGQ LDXC 5 ACOMMUNE1(2) 19 3Y2B STO 4 AWORK1(2) [SET=1 IF SWAPOUT REQUESTED 10 3YG2 STO 5 ACOMMUNE1(2) 16 3Y_L ADX 5 ACOMMUNE2(2) [A+E=HIGHEST ADDR 15 3_F= FPCACA 3,2 [LOCATE PCA 9 3_YW TXL 5 ALIMIT(3) 16 42DG BCS N3 [J IF NOT RESVIOL 4 43CQ N4B 9 43XB N4 SETREP RESVIOL 19 44C2 N4A SETBIT 4,EXTPS+1(2) [IN CASE IMMEDIATE WAORDFIN 7 44WL UPPLUS 1 5 4G4G ZBRKIN 5 4GJ6 UP 4 4H3Q # 5 4HHB ZLDERR 9 4J32 SETREP LOADERR 19 4JGL UPPLUS 1 [RETURN TO CALLING ROUTINE 16 4K2= N3 FJOCA 3,2 [LOCATE JOB BLOCK 8 4KFW TESTLOAD 3,N3A 10 4K_G LDX 4 EXTPS+1(2) 10 4LF6 LDX 5 ACOMMUNE1(2) 10 4LYQ LDX 6 ACOMMUNE2(2) 10 4MDB LDX 3 ACOMMUNE3(2) 11 4MY2 LOADNOW ZBRKIN,ZLDERR,0 10 4NCL STO 4 EXTPS+1(2) 10 4NX= STO 5 ACOMMUNE1(2) 10 4PBW STO 6 ACOMMUNE2(2) 10 4PWG STO 3 ACOMMUNE3(2) 7 4QB6 FJOCA 3,2 4 4QTQ N3A 14 4R*B BBS 11,JMISC(3),N5 [J IF S/O 18 4RT2 BBUS 12,JMISC(3),N6 [J IF NOT BEING SWAPPED 15 4S#L SWAPOUT [WAIT FOR S/O 14 4SS= BRN N5 [NOW S/O 17 4T?W N6 BBS 2,EXTPS+1(2),N20 [J IF SUBSEQUENT G/W 10 4TRG SETBIT 2,EXTPS+1(2) 21 4W?6 PROGAXES 3,N3 [IF CANT ACCESS PROG,WAIT & J TO N3 17 4WQQ N20 BBUS 10,JMISC(3),N7 [J IF NOT SWAPABLE 9 54L= LDX 0 AWORK1(2) 19 555W BZE 0 N61 [J IF SWAPOUT NOT REQUIRED 5 55KG SWAPIT 19 5656 ENDPAXES 3 [SIGNAL END OF PROGRAM ACCESS 7 56JQ SWAPOUT 19 574B STOZ AWORK1(2) [PROGRAM WILL NOT BE SWAPPED 19 57J2 UNSETBIT 2,EXTPS+1(2) [OUT IF REALTIME SO RECHECK 8 583L BRN N3 4 58H= N61 10 592W UNSETBIT 10,JMISC(3) 17 59GG SETBIT 9,JMISC(3) [MAKE NOT SUAPABLE 15 5=26 N7 FPCACA 3,2 [LOCATE PCA 8 5=FQ CLEAR 3,0,,3 12 5=_B LDX 5 ACOMMUNE2(2) [ 16 5?F2 LDX 4 3 [KEEP PCA POIOTER 16 5?YL ADN 5 1 [LENGTH OF AREA 16 5#D= LDX 3 ACOMMUNE1(2) [START ADDRESS 10 5#XW LDX 0 EXTPS+1(2) 7 5*CG SLL 0 6 15 5*X6 LDX 6 ACOMMUNE3(2) [PERM IF G/WX 15 5BBQ BNG 0 XCHECKB [J IF G/WX 16 5BWB LDN 6 CHREAD [PERM IF READ G/W 15 5CB2 BZE 7 XCHECKB [J IF READ 17 5CTL LDN 6 CHREAD+CHWRITE [PERM IF WRITE G/W 5 5D*= XCHECKB 14 5DSW CHECKB ACOMMUNE1(2),5,N4B,4,6,N10,,4 4 5F#G N10 14 5FS6 FPCACA 1,2 [FIND PCA 17 5G?Q LDX 5 3 [REMEMBER O/P ADDRESS 10 5GRB FADDRESS 1,3,HLOCK1,1 16 5H?2 STO 3 ACOMMUNE1(2) [GEORGE ADDRESS 10 5JPW HUNT2 1,BSTB,BSCB 9 5K9G LDX 6 ACORSZ(1) 16 5KP6 SBX 6 5 [MINUS START ADDR 17 5L8Q STO 6 ACOMMUNE2(2) [=LENGTH ACCESSIBLE 8 5Q5Q N11 SETREP OK 7 5QKB UPPLUS 1 17 5R52 N16 STO 7 EXTPS+1(2) [CLEAR WRITING BIT 18 5RCB CALL 7 UPDATFPB [UPDATE FPB IF ONE EXISTS 16 5RJL CHAIN 3,2 [CHAIN AFTER CPA 6 5RPS ...#UNS BIWRFL 19 5RX2 ... JBS N14,2,BRWRITEFAIL [BSTB/BSCB WILL BE INVALID 13 5S4= BACKWRITE ASWAP,ALOGLEN(3),N18 8 5SHW BRN N14 17 5T3G N5 LDX 4 ACOMMUNE1(2) [PROGRAM IS S/O HERE 10 5TH6 DVS 3 ASHEETSIZE 14 5W2Q STO 4 AWORK1(2) [Q1(A) 14 5WGB STO 3 AWORK3(2) [R1(A) 10 5X22 LDX 6 ACOMMUNE1(2) 10 5XFL ADX 6 ACOMMUNE2(2) 16 5X_= STO 6 ACOMMUNE2(2) [A+E=HIGHEST ADDR 10 5YDW DVS 5 ASHEETSIZE 14 5YYG STO 5 AWORK4(2) [R1(A+E) 14 5_D6 STO 6 AWORK2(2) [Q1(A+E) 7 5_XQ TXU 6 4 18 62CB BCC N12 [J IF AREA IN ONE SHEET 10 62X2 LDX 5 ASHEETSIZE 18 63BL MPA 4 5 [AREA REDUCED SO THAT TFR 20 63W= SBN 5 1 [DOES NOT SPAN A SHEET BOUNDARY 10 64*W STO 5 ACOMMUNE2(2) 18 64TG DVS 4 ASHEETSIZE [RECALCULATE PARAMETERS 9 65*6 STO 4 AWORK4(2) 9 65SQ STO 5 AWORK2(2) 4 66#B N12 7 6B6B SRC 7 2 18 6BL2 ORX 7 ZBIT2(1) [SET MODE OF ACCESS AND 18 6C5L ORS 7 EXTPS+1(2) [NOT FIRST GETWORD BITS 10 6CK= LDX 7 EXTPS+1(2) 9 6D4W ANDX 7 ZBIT3(1) 19 6DJG BZE 7 N14 [JUMP IF NO ADATA/AGETWORD 16 6F46 [BLOCK CREATED 12 6FHQ HUNT2 3,ADATA,AGETWORD,2 10 6G3B LDX 7 EXTPS+1(2) 9 6GH2 #SKI K6GETWORD>299-299 10 6H2L TRACE 7,SUBSGETW 17 6HG= ANDX 7 BSP16 [CURES OLD STANDIN BUG 13 6H_W SLA 7 7 [*128 13 6JFG LDX 0 ACOMMUNE1(2) [A 7 6J_6 TXL 0 7 18 6KDQ BCS N13 [J IF NEW BLOCK NEEDED 16 6KYB ADX 7 ALOGLEN(3) [HIGHEST ADDR+1 13 6LD2 LDX 6 ACOMMUNE2(2) [A+E 7 6LXL TXL 6 7 18 6MC= BCC N13 [J IF NEW BLOCK NEEDED 18 6MWW SBS 0 7 [CORRECT BLOCK IN CORE 10 6NBG LDX 6 ALOGLEN(3) 7 6NW6 SBS 7 6 8 6P*Q ADN 6 A1(3) 15 6PTB STO 6 ACOMMUNE1(2) [GEORGE ADDR 16 6Q*2 STO 7 ACOMMUNE2(2) [AREA ACCESSIBLE 9 6QSL #SKI K6GETWORD>299-299 10 6R#= TRACE 7,SAMEBLOK 8 6RRW BRN N19 4 6S?G N13 9 6SR6 #SKI K6GETWORD>299-299 12 6T=Q TRACE EXTPS+1(2),NEWBLOK 10 6TQB LDXC 7 EXTPS+1(2) 19 6W=2 BCS N16 [J IF WRITING BACK REQUIRED 21 6WPL NAME 3,BSTB,BFREEW [BSTS CAN PICK THIS UP TO READ INTO 7 6X9= UNLOCK 3 4 6XNW N14 4 6Y8G # 16 6YN6 # AT THIS STAGE WORKING LOCATIONS ARE AS FOLLOWS 4 6_7Q # 19 6_MB # [ACOMMUNE1]=A [ACOMMUNE2]=A+E [AWORK1]=Q1(A) 19 7272 # [AWORK2]=Q1(A+E) [AWORK3]=R1(A) [AWORK4]=R1(A+E) 4 72LL # 15 736= LDCT 5 #777 [CLEAR OUT 16 73KW ANDS 5 EXTPS+1(2) [OLD BLKLET ADDR 14 745G LDX 5 AWORK3(2) [R1(A) 17 74K6 DVS 4 ZBLKLETSIZE(1) [[4]=R2(A),[5]=Q2(A) 9 754Q LDX 7 AWORK4(2) 15 75JB DVS 6 ZBLKLETSIZE(1) [[7]=Q2(A+E) 14 7642 LDX 0 AWORK1(2) [Q1(A) 15 76HL MPY 0 ASHEETSIZE [*SHEET SIZE 13 773= SRL 1 7 [/128 14 77GW ADX 1 5 [+Q2(A) 14 782G ANDX 1 BSP16 [OLD BUG ! 16 78G6 ORS 1 EXTPS+1(2) [NEW BLKLET ADDR 9 78_Q #SKI K6GETWORD>299-299 12 79FB TRACE EXTPS+1(2),NEWBLTAD 13 79_2 LDN 6 1 [ [1 15 7=DL ADX 6 7 [ +Q2(A+E) 14 7=Y= SBX 6 5 [ -Q2(A)] 18 7?CW SLL 6 7 [ *128 = LENGTH OF TFR 18 7#D* LDX 3 1 [BLKLET NO. IN PROGRAM 18 7#DQ SLL 3 7 [ & CONVERT TO WORD ADDR. 17 7#F7 TRYCORE XNOFPB,1,3 [SEE IF FPB EXISTS 12 7#FJ SETUPCORE 6,2,ADATA,AGETWORD,1 8 7#F_ LOCKC 2,REFIND 19 7#GB TRYCORE XNOFPB1,6,3 [CHECK IF FPB STILL EXISTS 4 7#GR [ 18 7#H8 [ X6 NOW CONTAINS CORE ADDR. OF START OF REQ'D BLKLET 4 7#HK [ 11 7#J2 MHUNTW 3,ADATA,AGETWORD 17 7#JC SETBIT 7,EXTPS+1(2) [SET VALID FPB MARKER 10 7#JS SETBIT 3,EXTPS+1(2) 19 7#K9 VFREEW BSTB,BFREEW [NOT REQ'D AS NO READ TO DO 15 7#KL FPCACA 1,2 [LOCATE PCA 9 7#L3 HUNT2 1,BSTB,BSCB 9 7#LD LDX 0 AOBJLF(1) 17 7#LT STO 0 BACK1(3) [STO LOGICAL FILE NO. 9 7#M= SMO AWORK1(2) 9 7#MM LDX 0 AOBJST(1) 7 7#N4 ADX 0 5 17 7#NF STO 0 BACK2(3) [STO B.S. BLOCK NO. 17 7#NW LDX 0 6 [START OF MOVE IN FPB 21 7#P? LDN 1 A1(3) [DESTINATION OF MOVE IN GETWORD BLK 16 7#PN LDX 6 ALOGL(3) [LENGTH OF MOVE 8 7#Q5 CALL 5 XMOVE 8 7#QG BRN N30C 5 7#QX REFIND 18 7#R# MHUNTW 2,ADATA,AGETWORD [RELOCATE BLK FOR LOCKC 7 7#RP EXIT 1 0 5 7#S6 XNOFPB1 19 7#SH MFREEW ADATA,AGETWORD [FREE BLK AS VALID FPB GONE 5 7#SY XNOFPB 6 7#TH ...#UNS BIWRFL 19 7#W6 ... JBS N30,2,BRWRITEFAIL [BSTB/BSCB WILL BE INVALID 15 7#WQ FPCACA 1,2 [LOCATE PCA 10 7*BB HUNT2 3,BSTB,BSCB,1 9 7*W2 SMO AWORK1(2) 19 7B*L LDX 1 AOBJST(3) [UNDATUMISED SHEET ADDRESS 20 7BT= ADX 1 5 [UNDATUMISED ADDR OF START OF TFR 14 7C#W ... BACKREAD ASWAP+BUSE,EX6,,AOBJLF(3),1 4 7H=9 N30 4 7HBN [ 20 7HF5 [ THE FOLLOWING CODE HAS BEEN INSERTED DUE TO BUG 0622(DP 113) 14 7HHG [ 'BROKE IN PROCONTF AT ADDRESS 467 15 7HKX [ OBEYING GEOERR - LOCKBLOCK' 4 7HN# [ 4 7HQP [ 21 7HT6 [ THIS WAS CAUSED BY A MARK 8 'IMPROVEMENT' WHICH DID NOT WORK 20 7HXH [ IT WAS THOUGHT THAT 'LOCKC' WOULD PUT BLOCK IN LONGLOCK AREA 20 7H_Y [ HOWEVER THIS FAILED SO WE ARE NOW REVERTING TO THE OLD TRUSTED 14 7J4* [ MARK 7 CODE .. 4 7J6Q [ 15 7J97 [ DONE 24.JULY.74 :CENT 4 7J?J [ 11 7J#N HUNTW 3,ADATA,AGETWORD 18 7J*4 BPZ 3 N30C [J IF WE FOUND VALID FPB 20 7J*_ SETUPCORE 6,5,ADATA,AGETWORD,1 [ FIND AND LOCK ... 20 7JDB LOCKC 5,RFIN [ ... LONGLOCK AREA 17 7JGR SETBIT 3,EXTPS+1(2) [MARK BLOCK CREATED 16 7JK8 CALL 1 RFIN [RE-FIND AGETWORD 6 7JKC ...#UNS BIWRFL 4 7JKL ...( 8 7JKT ... LDX 1 FX2 18 7JL4 ... JBC N30D,1,BRWRITEFAIL [NO READ - NO BSTB/BREAD 7 7JL? ... LDX 3 2 8 7JLG ... LDX 2 FX2 8 7JLP ... BRN N30C 4 7JLY ...N30D 4 7JM7 ...) 10 7JMK HUNT 3,BSTB,BREAD 18 7JQ2 NAME 3,ADATA,AGETWORD [NAME BLOCK AGETWORD 7 7JSC LDX 1 2 7 7JWS LDX 0 3 8 7J_9 ADN 0 BACK1 8 7K3L ADN 1 BACK1 18 7K63 MOVE 0 2 [GIVE BUFFER A B/S HOME 9 7K8D STOZ BACK1(3) 2 7K=T 9 7K*= STOZ BACK2(3) 9 7KCM ADN 0 A1-BACK1 9 7KG4 ADN 1 A1-BACK1 8 7L75 CALL 5 XMOVE 7 7L7P LDX 6 2 20 7L=6 FREECORE 3 [FREE THE OLD AGETWORD(BSREAD) 7 7L#H LDX 3 6 4 7LBY [ 12 7LF* [ END OF BUG CORRECTION 4 7LHQ [ 4 7LKG N30C 8 7LM= ADN 4 A1(3) 16 7MLG LDX 6 ACOMMUNE1(2) [X6=START ADDRESS 15 7N66 STO 4 ACOMMUNE1(2) [GEORGE ADDR 15 7NKQ SLL 7 7 [Q2(A+E)*128 15 7P5B ADN 7 #200 [+BLKLET SIZE 14 7PK2 SBX 7 AWORK3(2) [-R1(A) 8 7R3W FPCACA 1,2 9 7RHG LDX 0 ALIMIT(1) 17 7S36 ADX 6 7 [X6=LAST ADRS IN AREA 7 7SGQ SBX 0 6 18 7T2B BPZ 0 N19A [JUMP IF AREA IS WHOLLY 17 7TG2 [CONTAINED IN PROGRAM 20 7T_L ADX 7 0 [OTHERWISE ADJUST LENGTH SO THAT 20 7WF= [PROGRAM LIMIT IS NOT EXCEEDED 4 7WYW N19A 16 7XY6 STO 7 ACOMMUNE2(2) [ACCESSIBLE AREA 8 7YCQ N19 LDCT 5 #200 10 7YXB ANDX 5 EXTPS+1(2) 17 7_C2 ERS 5 EXTPS+1(2) [RESET ACCESS MARKERS 7 7_WL SLL 5 1 10 82B= ORS 5 EXTPS+1(2) 12 82CQ ...[ CORRECTION FOR B2554 (19-11-82) 18 82F= ...[ BRANCH TO BREAKIN EXIT AFTER SETTING UP ADATA/AGETWORD 20 82GQ ...[ SO THAT CALLING ROUTINES WHICH DO NOT DETECT BREAKIN CAN CONTINUE 6 82J= ...#UNS BIWRFL 14 82KQ ... JMBAC N11,2,BRREADFAIL,BRWRITEFAIL 6 82M= ...#UNS BIWRFL 4 82NQ ...#SKI 11 82Q= ... JBC N11,2,BRREADFAIL 8 82RQ ... SETREP OK 9 82T= ... BRN ZBRKIN 4 82WX [ 21 82X= [ SUBROUTINE TO MOVE X6 WORDS FROM X0->X1 IN 512 WORD MOVES UNTIL 11 82XK [ NECESSARY.X5 IS LINK ACC. 4 82XY [ 5 82Y? XMOVE 21 82YL N30B BXL 6 B513,N30A [JUMP IF CAN DO IN ONE 512 WD 'MOVE' 17 82Y_ MOVE 0 0 [DO A 512 WORD 'MOVE' 8 82_# ADN 0 512 8 82_M ADN 1 512 16 8322 SBN 6 512 [DO ACCOUNTING 8 832* BRN N30B 7 832N N30A SMO 6 20 8333 MOVE 0 0 [MOVE THE LAST COUPLR OF WORDS 7 833B EXIT 5 0 4 833P [ 20 8344 [ SUBROUTINE TO TEST IF THE GETWORD BLK ABOUT TO BE WRITTEN AWAY 21 834C [ CORRESPONDS TO A VALID FPB/PAGE & IF SO TO UPDATE THE FPB/PAGE. 12 834Q [ LINK = X5, ON ENTRY X2 = FX2 4 8355 [ 5 835D UPDATFPB 8 835R LDBIT 7,0 10 8366 ANDX 0 EXTPS+1(2) 17 836F BZE 0 UPDAT1 [J IF NO FPB INVOLVED 16 836S ERS 0 EXTPS+1(2) [CLEAR FPB MARKER 10 838H LDX 6 EXTPS+1(2) 16 838W ANDX 6 BSP16 [LOAD BLKLET NO. 16 8399 SLL 6 7 [CONVERT TO WORDS 18 839J TRYCORE UPDAT1,1,6 [SEE IF FPB STILL EXISTS 4 839X [ 15 83== [ IF SO X1 NOW POINTS TO CORRECT AREA IN FPB 4 83=K [ 15 83=L [ NOW MOVE THE ADATA/GETWORD BACK TO THE FPB 19 83=M [ THE ADATA/GETWORD BLOCK MAY BE LONGER THAN THE DISTANCE 18 83=N [ FROM THE START OF THE MOVE TO THE END OF THE PROGRAM. 9 83=P [ SO CHECK FOR THIS. 4 83=Q [ 18 83=R FPCACA 2 [FIND PCA(APET) FROM CPAT 16 83=S LDX 0 ALIMIT(2) [SIZE OF PROGRAM 21 83=T SBX 0 6 [X6 = PROGRAM ADDRESS OF START OF MOV 21 83=W IF 0,L,ALOGL(3) [IF AREA TO MOVE TO < ADATA/GETWORD 6 83=X THEN 16 83=Y LDX 6 0 [MOVE THIS LENGTH 6 83=_ ELSE 18 83?2 LDX 6 ALOGL(3) [ELSE MOVE BLOCK LENGTH 5 83?3 FI 17 83?4 LDN 0 A1(3) [AREA IN GETWORD BLK 16 83?5 LDX 2 FX2 [RESET X2 TO CPAT 20 83?L CALL 5 XMOVE [MOVE GETWORD CONTENTS INTO FPB 5 83## UPDAT1 7 83#M EXIT 7 0 4 83*G # 21 83T6 # ACTION TAKEN ON ENCOUNTERING HARDWARE FAILURE IN BACKING STORE TFR 8 85#2 # WRITE FAILURE 6 85F8 ...#UNS BIWRFL 4 85LB ...#SKI 9 85RL N18 GEOERR 1,WRIFAIL 6 85RX ...#UNS BIWRFL 4 85S8 ...( 4 85SF ...# 19 85SQ ...# IMPROVED HANDLING OF WRITE TRANSFER FAILURE ON SWAP FILE 15 85T3 ...# DS8224 IMPLEMENTED NOVEMBER 1982 FOR MK867 19 85T# ...# 1) SET BRWRITEFAIL IN JOBEVENTS SO JOB WILL BE ABANDONED 18 85TK ...# 2) REMOVE FAILING SHEET FROM BSTB/BSCB SO IT WON'T BE 16 85TW ...# RELEASED AND REUSED WHEN PROGRAM DELETED 18 85W7 ...# 3) FOR GETWORD(X) CASE SET UP DUMMY ADATA/AGETWORD SO 18 85WD ...# CALLING ROUTINE CAN CONTINUE AS IF READ FOLLOWING 14 85WP ...# FAILED WRITE HAD BEEN SUCCESSFUL 4 85X2 ...# 4 85X? ...N18 15 85XJ ... LDN 7 0 [GETWORD(X) 8 85XT ... BRN N18B 4 85Y6 ...N18A 14 85YC ... LDN 7 1 [WORDFIN 4 85YN ...N18B 9 85Y_ ... LDX 6 JOBNO(2) 17 85_= ... DOWN PROCONTX,25 [TO SET BRWRITEFAIL 17 85_H ... BRN N18D [JOB NOT STOPPABLE 19 85_S ...# NOW CALCULATE SHEET ON WHICH WRITE FAILURE HAS OCCURRED 10 8625 ... LDX 6 EXTPS+1(2) 18 862B ... ANDX 6 BSP16 [X6 = BLOCKLET IN PROG 17 862M ... SLA 6 7 [*128 = WORD IN PROG 20 862Y ... DVS 5 ASHEETSIZE [/ASHEETSIZE X6 = SHEET IN PROG 8 8639 ... FPCACA 3,2 10 863G ... HUNT2 3,BSTB,BSCB 9 863R ... LDX 0 BSHEET(3) 7 8644 ... SBX 0 6 19 864* ... SBN 0 1 [X0 = NO OF SHEETS TO MOVE UP 8 864L ... BZE 0 N18C 19 864X ... SMO 6 [MOVE UP ENTRIES IN BSTB/BSCB 20 8658 ... LDN 5 AOBJST(3) [SO AS TO REMOVE FAILING SHEET 15 865F ... ADN 6 1 [FROM LIST 7 865Q ... SMO 6 9 8663 ... LDN 4 AOBJST(3) 7 866# ... SMO 0 7 866K ... MOVE 4 0 4 866W ...N18C 9 8677 ... LDX 6 BSHEET(3) 19 867D ... SBN 6 1 [REDUCE NO OF SHEETS IN LIST 9 867P ... STO 6 BSHEET(3) 7 8682 ... SMO 6 18 868? ... STOZ AOBJST(3) [ZEROIZE OLD LAST SHEET 10 868J ... MHUNTW 3,BSTB,BWRITE 16 868T ... FREECORE 3 [FREE BSTB/BWRITE 15 8696 ... BZE 7 N14 [GETWORD(X) 14 869C ... BRN N51 [WORDFIN 4 869N ...[ 4 869_ ...N18D 17 86== ... GEOERR 0,BRWRFAIL [JOB NOT STOPPABLE 4 86=H ...[ 4 86=S ...) 4 86?= # 11 86QW # ENTRY FROM WORDFIN MACRO 5 87=G XENT3 9 87Q6 #SKI K6GETWORD>199-199 11 889Q TRACE JOBNO(2),WORDFIN 9 88PB LDCH 4 ATYPE(2) 9 8992 SBN 4 CPAT/64 17 89NL BZE 4 N54 [J IF ISSUED FROM CPA 9 8=8= GEOERR 1,NOT CPA 17 8=MW N54 BBS 2,EXTPS+1(2),N50 [J IF SUBSEQUENT G/Q 15 8?7G BBUS 5,EXTPS+1(2),N51A [J IF NO C/I 8 8?M6 N50 FJOCA 3,2 14 8#6Q BBS 11,JMISC(3),N52 [J IF S/O 9 8#BH LDX 0 APROCTIME 19 8#F6 STO 0 JCTLR(3) [TO WARD OFFF TRUE DORMANCY 10 8#LB TBS 9,JMISC(3),0 16 8*62 BZE 0 N50A [J IF SWAPABLE 9 8*KL ERS 0 JMISC(3) 19 8B5= ENDPAXES 3 [SIGNAL END OF PROGRAM ACCESS 4 8BJW N50A 16 8C4G SETBIT 10,JMISC(3) [BACK TO NORMAL 4 8CJ6 N51 4 8GFW N51A 17 8G_G STOZ EXTPS+1(2) [RESET ALL MARKERS 5 8HF6 UP 4 8HYQ N52 10 8JDB LDX 4 EXTPS+1(2) 9 8JY2 ANDX 4 ZBIT3(1) 18 8KCL BZE 4 N51 [NO ADATA/AGETWORD BLK 12 8KX= HUNT2 3,ADATA,AGETWORD,2 10 8LBW LDXC 5 EXTPS+1(2) 17 8LWG BCC N53 [J IF NO WRITING BACK 18 8M8W CALL 7 UPDATFPB [UPDATE FPB IF ONE EXISTS 8 8MB6 CHAIN 3,2 6 8MD4 ...#UNS BIWRFL 4 8MG2 ...( 17 8MHY ... JBS N53,2,BRWRITEFAIL [BSTB/BSCB INVALID 14 8MKW ... BACKWRITE ASWAP+FREE,ALOGLEN(3),N18A 4 8MMS ...) 6 8MPQ ...#UNS BIWRFL 4 8MRN ...#SKI 14 8MTQ BACKWRITE ASWAP+FREE,ALOGLEN(3),N18 8 8N*B BRN N51 19 8NT2 N53 FREECORE 3 [DISPOSE OF AGETWORD BLOCK 8 8P#L BRN N51 4 8PS= # 10 8Q?W # ENTRY POINT FOR GETWORDX 4 8QRG # 5 8R?6 XENT4 15 8RQQ SETBIT 6,EXTPS+1(2) [MARK AS G/WX 9 8S=B LDN 7 GWRITE 17 8SQ2 ANDX 7 ACOMMUNE3(2) [SET X7 ZERO IF READ 18 8T9L BRN N1 [AND NON-ZERO FOR WRITE 4 8TP= # 20 8W8W # THE FOLLOWING SUBROUTINE SETS THE NOTUSED REPLY AND PLACES THE 20 8WNG # NUMBER OF WORDS TO THE END OF THE PAGE OR SEGMENT INTO ACOMMUNE2. 20 8X86 # UPON ENTRY X3 SHOULD CONTAIN THE REPLY FROM THE PTENTRY MACRO(OR 18 8XMQ # CHECKB) AND X5 SHOULD CONTAIN THE VIRTUAL ADDRESS OF THE 8 8Y7B # START OF THE AREA 4 8YM2 # 5 8_6L XNUSEREP 15 8_L= SETREP NOTUSED [SET REPLY 21 925W LDN 0 #1000 [MASK OUT BIT IN CHECKPTE REPLY WHICH 21 92KG ANDX 0 3 [INDICATES PAGE OR SEGMENT NOT USED 18 9356 BNZ 0 SEGREP [JUMP IF SEGMENT NOT USED 20 93JQ ANDN 5 #1777 [OTHERWISE PAGE NOT USED AND MASK 20 944B [OUT WORD NO.WITHIN PAGE OF START 14 94J2 [OF AREA 8 953L LDN 0 1024 21 95H= SBX 0 5 [X0=NO OF WORDS TO THE END OF PAGE 9 962W BRN XREPST 5 96GG SEGREP 14 9726 LDCT 0 2 [X0=64K 8 97FQ FPCACA 3,2,N 16 97_B LDX 7 ALIMIT(3) [X7=PROGRAM LIMIT 21 98F2 SBX 7 5 [NO OF WORDS TO THE END OF PROGRAM 20 98YL ANDX 5 MB8T23(1) [MASK OUT WORD NO WITHIN SEGMENT 21 99D= SBX 0 5 [X0=NO. OF WORDS TO END OF SEGMENT 17 99XW TXL 0 7 [SEE WHICH IS SMALLER 9 9=CG BCS XREPST 7 9=X6 LDX 0 7 5 9?BQ XREPST 10 9?WB STO 0 ACOMMUNE2(2) 7 9#B2 EXIT 6 0 14 9**= # S/R FOR LOCKC OR ADATA/AGETWORD BLOCK 4 9*SW # 4 9B#G RFIN 11 9BS6 HUNT 2,ADATA,AGETWORD 7 9C?Q EXIT 1 0 10 9CRB MENDAREA 50,K99GETWORD 4 9D?2 #END 8 ____ ...57602645000200000000