{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: BRADEMUL867)}}
====== BRADEMUL867 ======
(George Source)
**Macros used:** [[george:macro:BACKTRAN|BACKTRAN]], [[george:macro:BXE|BXE]], [[george:macro:BXGE|BXGE]], [[george:macro:DATUMADD|DATUMADD]], [[george:macro:FREECORE|FREECORE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:HUNT|HUNT]], [[george:macro:INFORM|INFORM]], [[george:macro:LOCKC|LOCKC]], [[george:macro:MFREE|MFREE]], [[george:macro:MHUNT|MHUNT]], [[george:macro:OUTBLOCK|OUTBLOCK]], [[george:macro:OUTNUM|OUTNUM]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:TRACE|TRACE]], [[george:macro:UNLOCK|UNLOCK]], [[george:macro:UP|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