{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: BRADSPLT867)}}
====== BRADSPLT867 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:CLOSEWR|CLOSEWR]], [[george:macro:DEMMESS|DEMMESS]], [[george:macro:DOWN|DOWN]], [[george:macro:EXOFILE|EXOFILE]], [[george:macro:FREECORE|FREECORE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:HUNT|HUNT]], [[george:macro:INFORM|INFORM]], [[george:macro:LADDP|LADDP]], [[george:macro:MFINDSU|MFINDSU]], [[george:macro:MHUNT|MHUNT]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:NAME|NAME]], [[george:macro:OPENST|OPENST]], [[george:macro:READST|READST]], [[george:macro:RELST|RELST]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETALLOC|SETALLOC]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:TESTREP|TESTREP]], [[george:macro:TESTREPNOT|TESTREPNOT]], [[george:macro:TRACE|TRACE]], [[george:macro:UNLOCKSU|UNLOCKSU]], [[george:macro:UP|UP]]
22FL SEG BRADSPLT,860,FRANK BLUNDELL,BRADSPLT
22^= # (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982
23DW #
23YG # ********************************
24D6 # *BRADFORD UNIVERSITY SCF SYSTEM*
24XQ # ********************************
25CB #
25X2 SEGENTRY K1BRADSPLT,Q1BRADSPLT
26BL SEGENTRY K98BRADSPLT
26W= BRADSPLTINF +0,+0,+0 [NAME
27*W +0 [TYPE B0-5
27TG +0 [CSN OF DISC IF GIVEN
28*6 ZCCTABLE
28SQ #HAL BSTB+CCTABLE,0
29#B ZALFTABLE
29S2 #HAL BSTB+ALFTABLE,0
2=?L ZFDTABLE
2=R= #HAL BSTB+FDTABLE,0
2?=W XN1 #77000000
2?QG Y #71
2#=6 N #56
2#PQ XSUITA +FIFSFAS [ >1 FILE AREA
2*9B XSUITB +FIFSFIC [FIC SEPARATED FROM FILE AREA
2*P2 XSUITC +FIFSRET [RETENTION PEROOD NOT EXPIRED
2B8L XSUITD +FIFSSYF [SYFLE BIT SET
2BN= XSUITE +FIFSBUCK [BUCKET > 1 BLOCK
2C7W WANT +10,36HDO YOU WISH TO USE THE SCF SYSTEM
2CMG NAME +7,24HGIVE NAME OF FILE TO USE
2D76 TYPE +13,48HGIVE DEVICE TYPE(DA=UDAS,DR=1964 DRUM,HD=HSD)
2DLQ ZTPE #41,#62,#44
2F6B ZTPEX #44,#50
2FL2 ZDEV +0
2G5L #FID 0,5,+6
2GK= +0
2H4W #FID 0,5,+9
2HJG +0
2J46 #FID 0,5,+25
2JHQ #
2K3B #
2KH2 Q1BRADSPLT
2L2L SEGENTRY K95BRADSPLT
2LG= BRN XHE
2L^W SETNCORE GEXDLEN,3,EWDAS,GEXD
2MFG SETNCORE FIRLEN+FIRSS,1,BSTB,FSTAB
2M^6 SMO FX1
2NDQ LDX 0 BRADSPLTINF
2NYB TRACE 0,FILENAME
2PD2 BZE 0 ZASKNAME [INFO NOT GIVEN IN CHAPTER
2PXL SMO FX1
2QC= LDN 0 BRADSPLTINF [DATA FOR FILE IN CHAPTER
2QWW ADN 1 FIRSS [MOVE TO DATA ADDRESS
2RBG MOVE 0 5 [MOVE IT INTO DATA BLOCK
2RW6 LDN 7 0 [REQUIRED BECAUSE OF COMMON ERROR
2S*Q [PATHS IN FSERR. USED IN SMO
2STB ZRETRY
2T*2 MHUNTW 1,BSTB,FSTAB
2TSL MHUNTW 3,EWDAS,GEXD
2W#= LDCH 0 FIRSS+3(1) [GET TYPE
2WRW SBN 0 6
2X?G BZE 0 T1
2XR6 SBN 0 7
2Y=Q BZE 0 T1 [JUMP IF DISC
2YQB #
2^=2 #
2^PL # DRUM PART
329= #
32NW SETNCORE BBUFF+129-A1,3,EWDAS,FDRUM
338G MHUNTW 1,BSTB,FSTAB
33N6 LDX 0 FIRSS+3(1)
347Q SMO FX1
34MB ANDX 0 XN1
3572 STO 0 AGTYPE(3)
35LL ADN 3 ANAME
366= LDN 2 FIRSS(1)
36KW MOVE 2 3 [MOVE IN FILENAME
375G U9 DOWN FINDRUM,1 [FIND THE FILE
37K6 TESTREPNOT OK,S1 [JUMP IF ERROR
384Q #
38JB # DRUM FILE NOW OPEN
3942 # STORE INFO IN CCTABLE
39HL #
3=3= MHUNTW 3,EWDAS,FDRUM
3=GW TRACE EXBSP+2(3),DRUMOPEN
3?2G MHUNTW 1,BSTB,FSTAB
3?G6 LDX 2 BINDEX [POINTER TO CCTABLE
3?^Q LDX 0 ATYPE(2) [BLOCK TYPE
3#FB SMO FX1
3#^2 TXU 0 ZCCTABLE
3*DL BCC ZCCTBLOCK
3*Y= GEOERR 1,SPLITF03 [NOT CORRECT BLOCK
3BCW ZCCTBLOCK
3BXG LDX 0 ALOGLEN(2) [WORK SIZE
3CC6 SBN 0 12 [2*DISC INFO SIZE
3CWQ BPZ 0 ZCCTSIZE
3DBB GEOERR 1,SPLITF04 [TOO SMALL A BLOCK
3DW2 ZCCTSIZE
3F*L LDN 6 6 [OFFSET TO SECOND BLOCK OF INFO
3FT= LDX 0 AGTYPE(3)
3G#W SMO 6
3GSG STO 0 A1(2) [TYPE
3H#6 LDX 0 EXBSP+1(3)
3HRQ SMO 6
3J?B STO 0 A1+1(2) [DATUM
3JR2 LDX 0 EXBSP+2(3)
3K=L SMO 6
3KQ= STO 0 A1+2(2) [LENGTH
3L9W ADX 6 2 [X6 POINTS TO SECOND PART O CTABLE
3LPG LDX 1 FPTR(2) [SHOULD GET ALFTABLE
3M96 LDX 0 ATYPE(1) [BLOCK TYPE
3MNQ SMO FX1
3N8B TXU 0 ZALFTABLE
3NN2 BCC ZALFBLOCK
3P7L GEOERR 1,SPLITF05 [NOT ALFTABLE BLOCK
3PM= ZALFBLOCK
3Q6W LDX 2 FPTR(1) [SHOULD GET FDTABLE
3QLG LDX 0 ATYPE(2) [BLOCK TYPE
3R66 SMO FX1
3RKQ TXU 0 ZFDTABLE
3S5B BCC ZFDBLOCK
3SK2 GEOERR 1,SPLIT06 [NOT FDTABLE BLOCK
3T4L ZFDBLOCK
3TJ= LDX 4 BLMP [HIGHEST RES + 1
3W3W SBN 4 1 [NUMBER OF HIGHEST RES
3WHG R2 LDX 5 A1(1)
3X36 BNG 5 R1 [NON EXISTANT
3XGQ ANDN 5 #7777
3Y2B SMO 5
3YG2 LDX 0 A1+1(2)
3Y^L SMO 6
3^F= TXU 0 A1+1
3^YW BCS R1 [JUMP IF DATUM DIFFERENT
42DG LDX 0 A1(1)
42Y6 SRL 0 12
43CQ ANDN 0 #1777 [CHECK BSUN
43XB TXU 0 EXBSP(3)
44C2 BCC S4 [JUMP - FILE USED BEFORE
44WL R1 ADN 1 2
45B= BCT 4 R2
45TW LDX 4 EXBSP(3) [BSUN
46*G TRACE 4,DRUMBSUN
46T6 STO 4 BRADSPLTBSU [SET 2ND BSUN FOR GEORGE
47#Q SETALLOC ADRDLIST(3) [MARK DEVICE IN USE
47SB LDX 4 ADRDLIST(3)
48#2 STO 4 GEOSCFPTR
48RL FREECORE 3 [RELEASE EWDAS-FDRUM
49?= BRN ZCOMPL
49QW #
4==G # DISC PART
4=Q6 #
4?9Q T1 SETNCORE FDCELLS-A1,3,EWDAS,EXOF
4?PB MHUNTW 1,BSTB,FSTAB
4#92 LDN 0 BOPEN+BSPEC
4#NL STO 0 EXMARK(3) [SET OPEN MARKERS
4*8= STOZ FIP+4(3) [GENERATION NUMBER
4*MW LDN 5 FIP(3)
4B7G LDN 4 FIRSS(1)
4BM6 MOVE 4 3 [MOVE IN FILENAME
4C6Q LDX 4 FIRSS+4(1)
4CLB BZE 4 T2 [JUMP IF NOT SPECIFIED
4D62 STO 4 ASUSN(3)
4DKL LDN 0 BSERL+BSUPP [SERIAL NO. GIVEN-SUPPRES REQUEST IF NOT
4F5= ORS 0 EXMARK(3)
4FJW T2 DOWN EXOPEN,1 [OPEN FILE
4G4G TESTREPNOT OK,S2
4GJ6 #
4H3Q # DISC FILE NOW OPEN
4HHB # STORE INFO IN CCTABLE
4J32 #
4JGL MHUNTW 3,EWDAS,EXOF
4K2= [START CHECKS ON FILE
4KFW TRACE ASUSN(3),DISCFILE
4K^G LDEX 0 FIP+5(3)
4LF6 SBN 0 1
4LYQ BNZ 0 S3FAREA [MUST BE ONLY ONE FILE AREA
4MDB LDX 0 FDCELLS(3)
4MY2 TXU 0 ASUSN(3)
4NCL BCS S3ASFIC [FILE AREA MUST BE ON SAME UNIT AS FIC
4NX= LDX 0 FIP+7(3)
4PBW SRL 0 12 [RETENTION PERIOD
4PWG ADX 0 FIP+6(3) [DATE WRITTEN
4QB6 LDX 4 EDATE
4QTQ TXL 4 0
4R*B TXL 4 FIP+6(3) [IS DATE WRITTEN LATER THAN CURRENT
4RT2 BCS T9 [DATE? J IF SO TO MISS RP CHECKS
4S#L BCS S3RETN [RETENTION PERIOD NOT EXPIRED
4SS= T9 LDCT 0 #100
4T?W ANDX 0 FIP+5(3)
4TRG BNZ 0 S3SYFLE [SYFLE BIT SET
4W?6 LDX 0 FIP+8(3)
4WQQ ANDN 0 #77 [BUCKET SIZE
4X=B SBN 0 1
4XQ2 BNZ 0 S3BUCK [BUCKET NOT ONE.
4Y9L LDN 1 BCCB [CHECK IF THIS FILE SPECIFIED BEFORE
4YP= T4 LDX 1 BPTR(1)
4^8W TXU 1 CXCC
4^NG BCC T3 [END OF CHAIN
5286 LDX 0 BACK2(1)
52MQ BZE 0 T3 [NO1MORE EXOFS
537B LDX 0 ASUSN(1)
53M2 TXU 0 ASUSN(3)
546L BCS T4 [JUMP IF SERIAL NUMBERS DIFFERENT
54L= LDX 0 HOME(1)
555W TXU 0 HOME(3)
55KG BCS T4 [JUMP IF BS HOMES DIFFERENT
5656 BRN S4 [FILE USED TWICE
56JQ T3 LDX 0 EDATE [UPDATE FIP
574B STO 0 FIP+6(3) [DATE WRITTEN
57J2 LDX 0 FIP+4(3)
583L ANDN 0 #7777 [VERSION NUMBER
58H= ADN 0 1
592W DSA 0 FIP+4(3)
59GG LDX 2 3
5=26 MHUNTW 3,EWDAS,GEXD
5=FQ OPENST ASUSN(2) [OPEN UNIT
5=^B READST HOME(2),T5 [READ DOWN FIP CELL
5?F2 TESTREP OK,T7 [JUMP IF OK
5?YL TESTREP EXFAIL,S5 [OR FAIL
5#D= T8 GEOERR 1,SPLITF07
5#XW T7 LDX 1 ECOR(3)
5*CG T5 MHUNTW 2,EWDAS,EXOF
5*X6 ADN 1 2
5BBQ LDN 0 FIP(2)
5BWB MOVE 0 15 [MOVE IN NEW FIP
5CB2 CLOSEWR W,HOME(2) [REWRITE FIP CELL AND CLOSE UNIT
5CTL TESTREP OK,T6 [JUMP IF OK
5D*= TESTREPNOT EXFAIL,T8
5DSW BRN S5
5F#G T6 MHUNTW 3,EWDAS,EXOF
5FS6 LDN 0 1
5G?Q STO 0 COPEN(3) [COUNT OF OPENS=1
5GRB LDCT 0 #500
5H?2 STO 0 EXMARK(3) [OPEN FOR WRITING AND SYSTEM BITS
5HQL MFINDSU 1,ASUSN(3)
5J== [START REORGANISING FDCELL
5JPW LDX 5 ABSUN(1) [GET BSUN FOR LATER
5K9G TRACE 5,DISCBSUN
5KP6 STO 5 BRADSPLTBSU [SET 2ND BSU FOR GEORGE
5L8Q LDX 4 HUNIT(1) [AND D.L. PTR
5LNB LDX 2 BINDEX [POINTER TO CCTABLE
5M82 LDX 0 ATYPE(2) [BLOCK TYPE
5MML SMO FX1
5N7= TXU 0 ZCCTABLE
5NLW BCC YCCTBLOCK
5P6G GEOERR 1,SPLITF08 [NOT CCTABLE
5PL6 YCCTBLOCK
5Q5Q LDX 0 ALOGLEN(2) [WORK SIZE
5QKB SBN 0 12 [2*DISC INFO SIZE
5R52 BPZ 0 YCCSIZE
5RJL GEOERR 1,SPLITF09 [BLOCK TOO SMALL
5S4= YCCSIZE
5SHW LDN 6 6 [OFFESET FOR INNFO
5T3G LDX 0 HTYPE(1)
5TH6 SMO 6
5W2Q STO 0 A1(2)
5WGB LDX 0 FDCELLS+1(3)
5X22 ADX 0 ASUBASE(1) [START OF UNIT
5XFL SMO 6
5X^= STO 0 A1+1(2)
5YDW LDN 0 FDCELLS+2(3)
5YYG SMO 6
5^D6 LDN 1 A1+2(2)
5^XQ MOVE 0 3
62CB NGNC 0 1
62X2 SMO 6
63BL ANDS 0 A1+3(2)
63W= LDX 0 FDCELLS(3)
64*W SMO 6
64TG STO 0 A1+5(2)
65*6 LDX 2 4 [D.L. PTR
65SQ STO 2 GEOSCFPTR
66#B LDCT 0 #400
66S2 LADDP 2,1 [ADDITIONAL DEVICE INFO AREA
67?L ORS 0 BSUNIT2(1) [MARK IN USE BY TH SYSTEM
67R= EXOFILE 3 [CHAIN INTO EXOFILE LIST
68=W LDX 4 ASUSN(3)
68QG UNLOCKSU 4 [UNLOCK SO OTHER ACTIVITIES CAN USE
69=6 RELST 4
69PQ ZCOMPL
6=9B MHUNT 3,EWDAS,GEXD
6=P2 FREECORE 3
6?8L MHUNT 1,BSTB,FSTAB
6?N= FREECORE 1
6#7W HUNT 3,EWDAS,EWMESS
6#MG BNG 3 OPENCOMPL
6*76 FREECORE 3
6*LQ OPENCOMPL
6B6B #
6BL2 # OPENING OF THE SCF IS NOW COMPLETE
6C5L #
6CK= #
6D4W #
6DJG ACROSS BRADDATA,1
6F46 #
6FHQ # NO NAME GIVEN OR FILE INVALID
6G3B #
6GH2 ZASKNAME
6H2L #SKI EMSJNL
6HG= DEMMESS FIFSWANT
6H^W #SKI EMSJNL<1$1
6JFG DEMMESS WANT [ASK IF ANOTHER FILE
6J^6 HUNT 3,CONBUFF,EMSIN [FIND REPLY
6KDQ BPZ 3 ZOK
6KYB GEOERR 1,SPLITF18 [NO REPLY BLOCK
6LD2 ZOK LDCH 4 A1+1(3) [REPLY CHAR
6LXL FREECORE 3 [FREE REPLY BLOCK
6MC= TXU 4 N(1)
6MWW BCC TIDY [RELPY NO SO TERMINATE
6NBG TXU 4 Y(1)
6NW6 BCS ZASKNAME [REPLY NOT N OR Y SO REPEAT
6P*Q #SKI EMSJNL
6PTB DEMMESS FIFSNAME
6Q*2 #SKI EMSJNL<1$1
6QSL DEMMESS NAME [ASK FOR FILE NAME
6R#= HUNT 3,CONBUFF,EMSIN [GET REPLY BLOCK
6RRW BPZ 3 NOKY
6S?G GEOERR 1,SPLITF19 [NOT REPLY BLOCK
6SR6 NOKY HUNT 1,BSTB,FSTAB [OPEN INFO BLOCK
6T=Q BPZ 1 YOKY
6TQB GEOERR 1,SPLITF20 [LOST THE BLOCK
6W=2 YOKY LDX 6 ACES
6WPL STO 6 FIRSS(1)
6X9= STO 6 FIRSS+1(1)
6XNW STO 6 FIRSS+2(1) [SPACE FILL AREA
6Y8G LDN 4 A1+1(3) [START ADD
6YN6 LDN 5 FIRSS(1) [DEP ADD
6^7Q LDX 2 A1(3) [LENGTH IN CHARS
6^MB MVCH 4 0(2)
7272 FREECORE 3
72LL #SKI EMSJNL
736= ZATPE DEMMESS FIFSTYPE
73KW #SKI EMSJNL<1$1
745G ZATPE DEMMESS TYPE [ASK FOR DEVICE TYPE
74K6 HUNT 3,CONBUFF,EMSIN [FIND REPLY
754Q BPZ 3 XOKY
75JB GEOERR 1,SPLITF21 [LOST REPLY
7642 XOKY HUNT 1,BSTB,FSTAB [OPEN BLOCK
76HL BPZ 1 POKY
773= GEOERR 1,SPLITF22 [LOST THE BLOCK
77GW POKY LDCH 4 A1+1(3) [REPLY CHAR
782G LDX 6 3
78G6 SMO FX1
78^Q TXU 4 ZTPEX
79FB BCC ZCKY
79^2 SMO FX1
7=DL TXU 4 ZTPEX+1
7=Y= BCS ZATPE
7?CW ZCKY BCHX 3 £
7?XG LDCH 4 A1+1(3)
7#C6 LDN 2 3 [NUMBER OF VALID REPLIES
7#WQ NXTT SMO FX1
7*BB TXU 4 ZTPE-1(2) [U,S,D
7*W2 BCC PFND [JUMP IF A MATCH
7B*L BCT 2 NXTT [TRY NEXT
7BT= BRN ZATPE [NOT A VALID REPLY ASK AGAIN
7C#W PFND SMO FX1
7CSG LDX 4 ZDEV-1(2) [DEVICE TYPE IN B0:5
7D#6 STO 4 FIRSS+3(1) [STORE TYPE
7DRQ STOZ FIRSS+4(1) [NO CSN GIVEN
7F?B FREECORE 6 [LOSE REPLY BLOCK
7FR2 BRN ZRETRY [TRY AGAIN TO OPEN SCF
7G=L #
7GQ= # TIDY UP
7H9W #
7HPG TIDY HUNT 3,EWDAS,GEXD
7J96 BNG 3 XHA
7JNQ FREECORE 3
7K8B XHA HUNT 3,BSTB,FSTAB
7KN2 BNG 3 XHB
7L7L FREECORE 3
7LM= XHB HUNT 3,EWDAS,EXOF
7M6W BNG 3 XHC
7MLG FREECORE 3
7N66 XHC HUNT 3,EWDAS,EWMESS
7NKQ BNG 3 XHD
7P5B FREECORE 3
7PK2 XHD HUNT 3,EWDAS,FDRUM
7Q4L BNG 3 XHE
7QJ= FREECORE 3
7R3W XHE INFORM 1,BRADSPT1,1
7RHG UP [NO SCF IN USE NOW
7S36 # FILE NOT SUITABLE FOR FILESTORE
7SGQ # OR FILE USED TWICE
7T2B # OUTPUT APPROPRIATE MESSAGE AND GO BACK FOR NEXT FIE
7TG2 #
7T^L S3FAREA
7WF= SMO FX1
7WYW LDX 3 XSUITA
7XDG BRN S3AB
7XY6 S3ASFIC
7YCQ SMO FX1
7YXB LDX 3 XSUITB
7^C2 BRN S3AB
7^WL S3RETN
82B= SMO FX1
82TW LDX 3 XSUITC
83*G BRN S3AB
83T6 S3SYFLE
84#Q SMO FX1
84SB LDX 3 XSUITD
85#2 BRN S3AB
85RL S3BUCK
86?= SMO FX1
86QW LDX 3 XSUITE
87=G #
87Q6 S3AB STO 3 AWORK2(2)
889Q DOWN FSERR,1
88PB BRN ZASKNAME
8992 #
89NL S4 DOWN FSERR,2
8=8= BRN ZASKNAME
8=MW #
8?7G #
8?M6 # FAILURE TO OPEN FILE,OR FAIL WHILST REWRITING FIP
8#6Q #
8#LB #
8*62 #
8*KL #
8B5= S5 DOWN FSERR,3
8BJW BRN ZASKNAME [UP FILE NOT AVAILABLE
8C4G BRN U8 [UPPLUS 1 AVAILABLE
8CJ6 #
8D3Q # NOT OK REPLY FROM FINDRUM
8DHB #
8F32 S1 TESTREPNOT NOTFOUND,S2A
8FGL DOWN FSERR,8
8G2= BRN ZASKNAME [UP FILE NOT AVAILABLE
8GFW BRN U8 [UPPLUS 1 AVAILABLE
8G^G S2A GEOERR 1,SPLITF01
8HF6 S2 TESTREPNOT EXFAIL,S2A
8HYQ DOWN FSERR,5
8JDB BRN ZASKNAME [UP FILE NOT AVAILABLE
8JY2 #
8KCL # UPPLUS 1 FROM FSERR FILE IS AVAILABLE
8KX= #
8LBW U8
8LWG MHUNTW 1,BSTB,FSTAB
8MB6 LDX 0 FIRSS+3(1)
8MTQ SRL 0 18
8N*B SBN 0 6 [EDS
8NT2 BZE 0 T2
8P#L SBN 0 7 [EDS
8PS= BZE 0 T2
8Q?W BRN U9 [DRUMS
8QRG #END
^^^^ ...630165140001