GETWORD867

(George Source)

Macros used: BACKREAD, BACKWRITE, BBS, BBUS, BXL, CHAIN, CHECKB, CLEAR, DOWN, ELSE, ENDPAXES, FADDRESS, FI, FJOCA, FPCACA, FREECORE, GEOERR, HUNT, HUNT2, HUNTW, IF, JBC, JBS, JMBAC, LDBIT, LOADNOW, LOCKC, MENDAREA, MFREEW, MHUNTW, NAME, PROGAXES, SEG, SEGENTRY, SETBIT, SETREP, SETUPCORE, SWAPOUT, TBS, TESTLOAD, THEN, TRACE, TRYCORE, UNLOCK, UNSETBIT, UP, UPPLUS, VFREEW

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