BRADEMUL867

(George Source)

Macros used: BACKTRAN, BXE, BXGE, DATUMADD, FREECORE, GEOERR, HUNT, INFORM, LOCKC, MFREE, MHUNT, OUTBLOCK, OUTNUM, SEG, SEGENTRY, SETNCORE, TRACE, UNLOCK, UP

BRADEMUL867.txt
22FL ...      SEG      BRADEMUL,860,FRANK BLUNDELL,BRADEMUL 
22^=          SEGENTRY K1BRADEMUL,QK1BRADEMUL   
2394 ...#     (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982
23DW    [   
23YG    [    THIS SEGMENT IS EQUIVALENT TO BRADDATA IN FUNCTION 
24D6    [ EXCEPT THAT THE CHAPTERS ARE FORCED TO START ON 1KWORD
24XQ    [ BOUNDARIES. THIS CHAPTER WILL ONLY BE ENTERED WHEN
25CB    [ GEORGE IS RUNNING UNDER AN EMULATION ENVIRONMENT. 
25X2    [   
26BL    [   
26W=    SCFK           #2000
27*W    SCFMASK        #77777600
27TG    SCFBIT         #00020000
28*6    XRR   MHUNT 2,BSTB,BREAD
28SQ          EXIT  1  0
29#B    QK1BRADEMUL 
29S2    #   
2=?L    #     EVALUATE TOTAL SIZE OF SCF REQUIRED   
2=R=    #   
2?=W          LDX   5  SCFK(1)  
2?QG          LDN   6  0                [NEXT ADDRESS ON SCF
2#=6          MHUNT    1,BSTB,FSTAB 
2#PQ ...      LDN   7  AENDCHAPS-KTAB      [NO. OF CHAPS
2*9B ...WAGN  LDN   3  AENDCHAPS-KTAB      [NO. OF ENTRIES  
2*P2          SBX   3  7                [POINT TO POSITION  
2B8L          SMO      3
2BN=          LDX   0  A1(1)               [CHAPTER NO  
2C7W          BZE   0  WNEXTA              [IF ZERO THEN END OF CHAPS   
2CMG          ADX   6  5
2D76         BCT   7  WAGN  
2DLQ    WNEXTA  
2F6B          STO   6  ACOMMUNE4(2)     [TOTAL SIZE REQD
2FL2    #   
2G5L    #     EVALUATE SIZE OF THE SCF GIVEN
2GK=    #   
2H4W          LDX   1  BINDEX   
2HJG          ADN   1  6
2J46          LDCH  4  A1(1)            [TYPE   
2JHQ          SBN   4  9
2K3B          BZE   4  TDRM             [DRUM   
2KH2          SBN   4  16   
2L2L          BZE   4  TDRM             [DRUM   
2LG=          LDN   5  0
2L^W          LDX   4  A1+3(1)          [NO. OF CYL 
2MFG    WADD  ADX   5  A1+4(1)  
2M^6          BCT   4  WADD 
2NDQ          SLL   5  7                [SIZE   
2NYB          BRN      WSIZ 
2PD2    TDRM  GEOERR   1,DRUM   
2PXL    WSIZ  STO   5  ACOMMUNE5(2)     [SIZE OF FILE   
2QC=          TRACE 5,SIZEAVAL  
2QWW    [   CALCULATE TRANSFER START ADDRESS WITIN SCF  
2RBG    [ SO THAT IT IS ON A 1K WORD BOUNDARY.  
2RW6          LDX   5  A1+1(1)             [START CYL   
2S*Q          MPY   5  A1+4(1)             [TIMES NO OF BLOCKS PER CYL  
2STB          ADX   6  A1+2(1)             [PLUS START BLK  
2T*2          ANDN  6  7                   [AND MASK OFF = STRT BLK ON 1K WORD B
2TSL          SLL   6  7                   [BLK TO WORD ADDRESS 
2W#=          STO   6  AWORK2(2)           [SCF START ADDRESS   
2WRW    #   
2X?G    #     START TRANSFERING CHAPTERS
2XR6    #   
2Y=Q ...      LDN   7  AENDCHAPS-KTAB      [NO. OF ENTRIES  
2YQB ...XAGN  LDN   3  AENDCHAPS-KTAB      [NO. OF ENTRIES  
2^=2          SBX   3  7                [POINTER TO POSITION IN TABLE   
2^PL          MHUNT    1,BSTB,FSTAB 
329=          SMO      3
32NW          LDX   1  A1(1)
338G          BZE   1  YFAL             [THATS ALL NO CHAPS LEFT
33N6          STO   1  AWORK1(2)        [CHAPTER NUMBER 
347Q          LDX   5  KTAB(1)          [CHAP WORD  
34MB          BPZ   5  MCIN 
3572          SMO   5   
35LL          LDX   5  BACK2            [CHAPTER WAS IN CORE
366=    MCIN  SLC   5  10                  [ SCFBIT IN B0   
36KW          BPZ   5  NTYT 
375G          BCT   7  XAGN 
37K6          BRN      YFAL 
384Q    NTYT  SLC   5  1
38JB          ANDN  5  #3774
3942          BNZ   5  XW1  
39HL          LDN   5  1024 
3=3=    XW1   STO   5  ACOMMUNE1(2)     [STORE SIZE OF TRANSFER 
3=GW          SMO      FX1  
3?2G          LDX   5  SCFK 
3?G6          LDX   0  AWORK2(2)        [SIZE OF SCF USED SO FAR
3?^Q          STO   0  AWORK4(2)        [DA ADDRESS SCF 
3#FB          STO   0  ACOMMUNE3(2)     [DA ADDRESS SCF FOR TRANSFER
3#^2          ADX   0  5                [ADD THIS CHAP SIZE 
3*DL          BXE   0  ACOMMUNE5(2),SJF [JUST ROOM  
3*Y=          BXGE  0  ACOMMUNE5(2),YFAL[NO ROOM
3BCW    SJF   ADS   5  AWORK2(2)        [INCREMENT POSITION IN SCF  
3BXG          MHUNT    1,BSTB,FSTAB 
3CC6          SMO      3
3CWQ          LDX   3  A1(1)
3DBB          LDX   1  KTAB(3)          [DA OR CORE ADDRESS 
3DW2          BPZ   1  XBACK            [JUMP AS ON BACKING STORE   
3F*L          LDX   1  BACK2(1)         [DA ADDRESS 
3FT= ...XBACK SLL   1  11                   [REMOVE BITS 0-10 INCL. 
3G#W ...      SRL   1  4                    [= DA ADDR * 128
3GSG          STO   1  ACOMMUNE2(2)     [DA ADDRESS 
3H#6          STO   1  AWORK3(2)        [DA ADDRESS ICF 
3HRQ          TRACE 3,CHAPOVER  
3J?B          STO   7  ACOMMUNE6(2)     [SAVE LOOP COUNT
3JR2    #   
3K=L    #     DO READ(S) AND WRITE(S)   
3KQ=    #   
3L9W    #     ACOMMUNE1 = SIZE OF CHAPTR
3LPG    #     ACOMMUNE2 = ICF ADDRESS   
3M96    #     ACOMMUNE3 = SCF ADDRESS   
3MNQ    #   
3N8B    XTRAN SETNCORE 1024,3,BSTB,BREAD[GET A BLOCK TO READ AND WRITE  
3NN2    RPTZ  LOCKC 3,XRR               [LOCK IT DOWN IN LONG LOCK  
3NXS ...      MHUNT 3,BSTB,BREAD
3P7L          LDX   2  FX2  
3PM=          LDX   5  ACOMMUNE2(2)     [D ADDRESS  
3Q6W          LDX   6  ACOMMUNE1(2)     [SIZE OF TRANSFER   
3QLG          DATUMADD 5,BINDEX,6       [DTUMISE TO EXEC INFO   
3R66          BNZ   2  TRANOK   
3RKQ          BNZ   1  TRANOK   
3S5B          GEOERR 1,SPLITF11         [INVALID TRANSFER   
3SK2    TRANOK  
3T4L          LDX   5  2                [KEEP SIZE  
3TJ=          LDX   2  FX2  
3W3W          BNZ   5  SAB              [NOT ALL OF TRAN
3WHG          LDX   5  ACOMMUNE1(2)     [SET SIZE AS ALL
3X36    SAB   SBS   5  ACOMMUNE1(2)     [NE SIZE FOR NEXT TRANSFR   
3XGQ          ADS   5  ACOMMUNE2(2)     [NEW GR ADDRESS 
3Y2B          LDN   6  1                [BSUN FOR GR
3YG2          LDN   4  0                [MODE IS READ   
3Y^L          ADN   3  A1               [X3 ABSOLUTE TRANSFR ADDRESS
3^F=          BACKTRAN EX4,BSET+BONL,EX5,,EX6,1,3[READ  
3^YW          LDCT  4  #150 
42DG          ANDX  4  ACOMMUNE9(2)     [REPLY WORD 
42Y6          BZE   4  REPOKA   
43CQ          LDCT  7  #010 
43XB          ANDX  7  4
44C2          BNZ   7  NOPICF   
44WL          GEOERR 1,ICF-FAIL 
45B=    NOPICF GEOERR 1,ICF-INOP
45TW    REPOKA  
46*G    #   
46T6    #     CHANGE CHECKSUMM FOR NEW DA ADDRESS   
47#Q    #   
47SB          LDX   7  ACOMMUNE1(2)     [SIZE LEFT TO TRANSFER  
48#2          BNZ   7  XNSCY            [NOT END OF CHAPTER YET 
48RL          SBN   3  1
49?=          LDX   7  AWORK3(2)        [ICF DA ADDRESS 
49QW          SMO      5
4==G          SBS   7  0(3)            [REDUCE LAST WORD IN CHAPTER 
4=Q6          SMO      AWORK1(2)
4?9Q          LDX   4  KTAB 
4?PB          BPZ   4  NIC                 [J IF NOT IN CORE
4#92          LDXC  1  4                   [CLEAR B0
4#NL          BCS      £                   [FORGET CARRY
4#YD ...      ADX   1  ALOGLEN(1)   
4*8=          ADN   1  A1-1                [ELSE UPDATE CHECKSUM
4B7G          SBS   7  0(1)                 [SUBTRACT OLD DA ADDRESS
4BM6    NIC   LDX   7  AWORK4(2)            [SCF DA ADDRESS 
4C6Q          SMO      5
4CLB          ADS   7  0(3)            [FORM CORRECT CHECKSUMM WITH LUCK
4D62          BPZ   4  XNIC                [J IF NOT IN CORE
4F5=          ADS   7  0(1) 
4FJW    XNIC  ADN   3  1
4G4G    XNSCY LDX   7  BINDEX   
4GJ6          ADN   7  6                [MOVER POINTER TO SECOND AREA IN CCTABLE
4H3Q          LDX   4  ACOMMUNE3(2)     [SPLIT RESIDENCE ADDRESS
4HHB          DATUMADD 4,7,5            [DTUMISE TO EXEC INFO   
4J32          BNZ   2  TRANOKA  
4JGL          BNZ   1  TRANOKA  
4K2=          GEOERR 1,SPLITF13         [INVALID TRANSFER   
4KFW    TRANOKA 
4K^G          LDX   7  2
4LF6          LDX   2  FX2  
4LYQ          BNZ   7  SAA              [NOT ALL OF TRAN
4MDB          LDX   7  5                [SET SIZE AS ALL
4MY2    SAA   ADS   7  ACOMMUNE3(2)     [UPDTE SPLIT ADDRESS BY TRAN SIZE   
4NCL          LDX   6  BRADSPLTBSU      [BSUN FOR SPLIT 
4NX=          LDN   4  1                [MODE IS WRIT   
4PBW          BACKTRAN EX4,BSET+BONL,EX7,,EX6,1,3[WRITE 
4PWG          LDCT  4  #150 
4QB6          ANDX  4  ACOMMUNE9(2)     [REPLY WORD 
4QTQ          BZE   4  REPOKB   
4R*B          LDCT  7  #010 
4RT2          ANDX  7  4
4S#L          BNZ   7  SCFI 
4SS=          GEOERR 1,SCF-FAIL 
4T?W    SCFI  GEOERR 1,SCF-INOP 
4TRG    REPOKB  
4W?6          ADX   3  7                [INCREMENT COR ADDRESS  
4WQQ          SBX   5  7                [SUBTRCT SIZE WRITTEN   
4X=B          BPZ   5  SIZEOK   
4XQ2          GEOERR 1,SPLITF15         [WRITTN TOO MUCH
4Y9L    SIZEOK  
4YP=          BNZ   5  XNSCY            [MORE TO WRITE OUT  
4^8W          HUNT 3,BSTB,BWRITE        [GET BLOCK ADDRESS  
4^NG          BPZ   3  OKFIND   
5286          HUNT 3,BSTB,BREAD 
52MQ          BPZ   3  OKFIND   
537B          GEOERR 1,SPLITF16 
53M2    OKFIND  
546L          UNLOCK 3  
54L=          LDX   5  ACOMMUNE1(2)     [SIZE LEFT TO TRANSFR   
555W          BPZ   5  TRSZ 
55KG          GEOERR 1,SPLITF17 
5656    TRSZ  BNZ   5  RPTZ             [REPEAT FOR THE RST OF CHAPTER  
56JQ          FREECORE 3
574B    #   
57J2    #     NOW UPDATE THE CHAPTER TABLE IN CORE TO   
583L    #     SHOW CHAPTER ON THE SCF   
58H=    #   
592W    #     CHAPTERS ARE MARKED AS SCF BY SETTING BIT 10  
59GG    #   
5=26    XMARK LDX   3  AWORK1(2)        [CHAPTER NUMBER 
5=FQ          LDX   6  AWORK4(2)        [NEW DA ADDRESS ON THE SCF  
5=^B          SRL   6  7
5?F2          SMO      FX1  
5?YL          ADX   6  SCFBIT           [SET BIT SAYING ON SCF  
5#2J ...      LDX   1  KTAB(3)  
5#4G ...      BPZ   1  TBACK            [JIF NOT IN CORE
5#6D ...      LDX   1  BACK2(1)         [ELS GET KTAB ENT FROM CHAPTER BLOCK
5#8B ...TBACK LDCT  0  #777 
5#=# ...      ORX   0  BIT9             [MASK FOR BITS 0-9 INCLUSIVE
5##= ...      ANDX  0  1                [REMOVE OLD DA ADDR 
5#B8 ...      ADX   0  6                [ADD DA ADDRESS + SCFBIT
5#D=          LDX   1  KTAB(3)          [DA OR CORE ADDRESS 
5#XW          BPZ   1  YBACK            [JUMP AS ON BACKING STORE   
5*CG ...      STO   0  BACK2(1)         [MARK AS ON SPLIT   
5*X6          BRN      YNEXT
5BBQ ...YBACK STO   0  KTAB(3)          [MARK AS ON SPLIT   
5BWB    YNEXT LDX   7  ACOMMUNE6(2) 
5CB2          BCT   7  XAGN             [BACK FOR NEXT CHAPTER  
5CTL    YFAL  LDN   7  10               [BLOCK SIZE 
5D*=          OUTBLOCK 7                [GET A BLOCK
5DSW          OUTNUM ACOMMUNE5(2),0     [SCF FILE SIZE  
5F#G          OUTNUM ACOMMUNE4(2),0     [SCF CHAPS SIZE 
5FS6          INFORM 1,BRADSPT2,1   
5G?Q          MFREE    BSTB,FSTAB   
5GRB    #SKI G4 
5H?2    (   
5HQL          LDX   0  GIVE6REP            [PROCESSOR TYPE  
5J==          SBN   0  21   
5JPW          BZE   0  PROC                [J IF 1904A  
5K9G          SBN   0  4
5KP6          BZE   0  PROC                [J IF 1904S  
5L8Q          SBN   0  4
5LNB          BNZ   0  NPROC               [J IF NOT 1903T  
5M82    PROC  LDX   1  BINDEX              [PTR TO BSTB CCTABLE 
5MML          LDCH  0  A1+6(1)  
5N7=          SBN   0  25   
5NLW          BNZ   0  NPROC               [J IF NOT ON HSD 
5P6G          LDN   0  A1B-A1   
5PL6          STO   0  BSTSPROC 
5Q5Q    NPROC   
5QKB    )   
5R52          UP                        [THATS ALL  
5RJL    #END
^^^^ ...272133560001
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1