(George Source)
Macros used: BACKTRAN, BXE, BXGE, DATUMADD, FREECORE, GEOERR, HUNT, INFORM, LOCKC, MFREE, MHUNT, OUTBLOCK, OUTNUM, SEG, SEGENTRY, SETNCORE, TRACE, UNLOCK, UP
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