(George Source)
Macros used: ACROSS, CLOSEWR, DEMMESS, DOWN, EXOFILE, FREECORE, GEOERR, HUNT, INFORM, LADDP, MFINDSU, MHUNT, MHUNTW, NAME, OPENST, READST, RELST, SEG, SEGENTRY, SETALLOC, SETNCORE, TESTREP, TESTREPNOT, TRACE, UNLOCKSU, 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