8 22FL #OPT K0LOADERFT=0 19 22_= ...#SEG LOADERFT85 [DICK RUSBRIDGE/MARK DRUKKER 18 233T ...# ######################################################## 4 236D ...# 16 2393 ...# (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982 4 23?L ...# 18 23B9 ...# ######################################################### 12 23DW #LIS K0LOADER>K0LOADERFT>K0ALLGEO 4 23YG # 4 24D6 # 15 24XQ # THIS SEGMENT IS A CONTINUATION OF LOADERFS 4 25CB # 4 25X2 # 10 26BL 8HLOADERFT 4 26W= # 4 27*W # 21 27TG N81 81 [EDS8S HAVE 80 BLOCKS PER CYLINDER 5 28*6 #SKI G4 4 28G# ...( 9 28MG ...XBIGMC +1024*96 20 28SQ OGELLDATA +K18-K42 [START ADDRESS OF LOADER'S CORE 4 294J ...) 4 29#B # 4 29S2 # 21 2=?L OWDCONV [ROUTINE TO FIND BLOCK SIZE OF A FILE 21 2=R= LDX 6 BLFAC+1(1) [AND TO ENSURE THAT IT'S FULL DEPTH 21 2?=W ANDX 6 OLAST(2) [PICK UP START BLOCK NUMBER IN FILE 10 2?QG LDX 7 BLFAC+2(1) 17 2#=6 ANDX 7 OLAST(2) [THE END BLOCK NUMBER 19 2#PQ LDX 5 BLFAC+4(1) [AND THE BLOCKS PER CYLINDER 21 2*9B SBX 7 6 [CALCULATE NUMBER OF BLOCKS IN FILE 18 2*P2 STO 7 4 [AND SAVE THE BLOCK COUNT 7 2B8L DVS 6 5 20 2BN= BZE 6 OFULL [J IF THE FILE IS FULL DEPTH : OK 20 2C7W LDN 1 OMNOTFULL(2) [PRINT ^FILESTORE NOT FULL DEPTH^ 19 2CMG CALL 0 OUTCON [ON THE OPERATORS' CONSOLE 19 2D76 BRN OGRFORCE [AND FORCE A GENERAL RESTORE 21 2DLQ OFULL EXIT 0 0 [EXIT : FILE LOOKS REASONABLE SO FAR 4 2F6B # 4 2FL2 # 9 2G5L # MAIN ENTRY POINT 4 2GK= # 4 2H4W # 6 2HJG OSTARTCOPY 9 2HNC ... LDX 1 BK18X 11 2HS# ... ADS 1 ODISCINCA+2(2) 11 2HY9 ... ADS 1 ODISCOUTCA+2(2) 20 2J46 LDN 1 ODISC1(2) [POINT TO BASE FILE'S DESC AREA 20 2JHQ CALL 0 OWDCONV [GET NUMBER OF BLOCKS IN THE FILE 18 2K3B STO 4 OBLOCKCOUNT(2) [AND SAVE THE TOTAL COUNT 19 2KH2 LDN 1 ODISC2(2) [POINT TO RECIPIENT FILE'S 21 2L2L CALL 0 OWDCONV [DESC AREA AND GET NUMBER OF BLOCKS 20 2LG= TXL 4 OBLOCKCOUNT(2) [IS THE SECOND FILE BIG ENOUGH? 15 2L_W BCC SIZEOK [J IF IT IS 20 2MFG LDN 6 JLFSNAMES+3(2) [THE RECIPIENT FILE IS TOO SMALL 18 2M_6 LDN 7 OMTSNAME(2) [SO PUT ITS NAME IN THE 7 2NDQ BCHX 7 / 18 2NYB MVCH 6 12 [^FILE TOO SMALL^ MESSAGE 10 2PD2 LDN 1 OMTOOSMALL(2) 21 2PXL CALL 0 OUTCON [PRINT IT ON THE OPERATORS CONSOLE 19 2QC= BRN OGRFORCE [AND FORCE A GENERAL RESTORE 5 2QWW SIZEOK 10 2RBG LDN 6 JLFSNAMES(2) 20 2RW6 LDN 7 ONAME1(2) [MOVE FILENAMES INTO THE ^COPYING 7 2S*Q MOVE 6 3 7 2STB ADN 6 3 20 2T*2 LDN 7 ONAME2(2) [FILESTORE^ MESSAGE AND PRINT THE 7 2TSL MOVE 6 3 21 2W#= LDN 1 OMCOPY(2) [MESSAGE ON THE OPERATORS' CONSOLE 9 2WRW CALL 0 OUTCON 21 2X?G LDX 7 ODISC2+BLFAC+4(2) [PICK UP NUMBER OF BLOCKS/CYLINDER 19 2XR6 STO 7 ONOBPERC(2) [AND SAVE IT FOR USE BY OCONV 19 2Y=Q TXL 7 N81(2) [COPYING EDS8S OR EDS30/60S? 20 2YQB BCS XEDS8 [J IF EDS8 : COPY WHOLE CYLINDERS 20 2_6W ... SRL 7 1 [EDS30/60 SO COPY HALF CYLINDERS 5 2_PL XEDS8 17 2_QM ... JENVNOT NOEMU,MEEP [J IF NOT EMULATING 16 2_RN ... LDN 6 256 [32K IN BLOCKS 7 2_SP ...ROUND TXL 6 7 18 2_TQ ... BCC NOTMAX [J IF COUNT<32K ELSE.... 19 2_WD ... SRL 7 1 [...HALVE COUNT AND TRY AGAIN 8 2_X6 ... BRN ROUND 5 2_XS ...NOTMAX 8 2_YT ... LDX 6 CORES 20 2__W ... SBX 6 ODISCINCA+2(2) [LARGEST TRANSFER WE CAN DO... 15 322X ... SRL 6 7 [...IN BLOCKS 7 323Y ...RETRY TXL 6 7 18 324_ ... BCC NOEMU [J WE CAN DO TRANSFER 17 3262 ... SRL 7 1 [HALVE TRANSFER COUNT 8 3273 ... BRN RETRY 5 3284 ...NOEMU 21 329= STO 7 OPERIBLOCKS(2) [REMEMBER SIZE OF EACH PERI IN BLOCKS 21 32NW SLL 7 7 [CONVERT THE PERI SIZE TO WORDS AND 5 335W ...#SKI G4 4 33GW ...( 16 33XW ... LDX 0 CORES [GET SIZE OF M/C 19 34#W ... TXL 0 XBIGMC(2) [ENOUGH ROOM ABOVE LOADER FOR 18 34PW ... BCC XBIG [BUFFER J IF THERE IS 21 3572 LDX 0 FVARST [PICK UP ADDRESS OF VARIABLE STORE 20 36KW LDX 1 OGELLDATA(2) [PICK UP ADDRESS OF LOADER'S CORE 21 375G SBX 1 0 [X1=AVAILABLE GAP IN VARIABLE STORE 21 37*# ... SRL 7 1 [SET COUNT TO COPY QUARTER CYLINDERS 20 37K6 TXL 7 1 [ENOUGH ROOM FOR PERI BUFFERS? 16 384Q BCS XBUFFEROK [J IF THERE IS 20 38JB LDN 1 OMBIGEXEC(2) [ELSE PRINT ^EXECUTIVE TOO LARGE^ 21 3942 CALL 0 OUTCON [MESSAGE ON THE OPERATOR'S CONSOLE 19 39HL BRN OGRFORCE [AND FORCE A GENERAL RESTORE 6 3=3= XBUFFEROK 18 3=64 ... STO 0 ODISCINCA+2(2) [AND SET UP THE CTSA'S IN 19 3=8W ... STO 0 ODISCOUTCA+2(2) [THE DISC PERI CONTROL AREAS 18 3=BG ... LDX 6 OPERIBLOCKS(2) [AND RESET THE TRANSFER 16 3=F# ... SRL 6 1 [COUNT IN BLOCKS 11 3=J6 ... STO 6 OPERIBLOCKS(2) 4 3=LY ...XBIG 4 3=PQ ...) 20 3=SJ ... STO 7 ODISCINCA+1(2) [STORE DISC PERI COUNTS IN THE 21 3=XB ... STO 7 ODISCOUTCA+1(2) [INPUT AND OUTPUT DISC CONTROL AREAS 20 3?2G STOZ OFIXFLAG(2) [DISCS TO BE ^FIXED^ FROM NOW ON 6 3?G6 ROUNDAGAIN 21 3?_Q ... LDX 1 ODISC1+BLFAC+1(2) [PICK UP BLOCK ADDRESS OF THE FIRST 18 3#FB ... ANDX 1 OLAST(2) [BLOCK IN THE BASE FILE 21 3#_2 ... ADX 1 OBLOCKS(2) [ADD IN NUMBER OF BLOCKS ALREADY READ 19 3*DL ... CALL 6 OCONV2 [AND THEN TO HARDWARE FORMAT 20 3BXG STO 0 ODISCINCA+3(2) [INSERT DTSA IN THE CONTROL AREA 20 3CC6 LDX 3 ODISCIN(2) [PICK UP THE DEVICE LIST POINTER 20 3CWQ LDN 1 ODISCINCA(2) [POINT TO THE INPUT CONTROL AREA 18 3DBB CALL 0 OPERIDISC [READ FROM THE BASE DISC 20 3DW2 BRN OGRFORCE [J IF THE DISC FAILED AND ABORT 21 3F*L ... LDX 1 ODISC2+BLFAC+1(2) [PICK UP BLOCK ADDRESS OF THE FIRST 19 3FT= ... ANDX 1 OLAST(2) [BLOCK IN THE RECIPIENT FILE 21 3G#W ... ADX 1 OBLOCKS(2) [ADD IN NUMBER OF BLOCKS ALREADY READ 19 3GSG ... CALL 6 OCONV2 [AND THEN TO HARDWARE FORMAT 20 3J?B STO 0 ODISCOUTCA+3(2) [INSERT DTSA IN THE CONTROL AREA 20 3JR2 LDX 3 ODISCOUT(2) [PICK UP THE DEVICE LIST POINTER 20 3K=L LDN 1 ODISCOUTCA(2) [POINT TO THE OUTPUT CONTROL AREA 19 3KQ= CALL 0 OPERIDISC [WRITE TO THE RECIPIENT DISC 20 3L9W BRN OGRFORCE [J IF THE DISC FAILED AND ABORT 21 3LPG LDX 7 OPERIBLOCKS(2) [PICK UP NUMBER OF BLOCKS JUST COPIED 19 3M96 ADS 7 OBLOCKS(2) [INCREMENT THE RUNNING COUNT 10 3MNQ LDX 7 OBLOCKS(2) 18 3N8B TXL 7 OBLOCKCOUNT(2) [HAVE WE FINISHED YET? 18 3NN2 BCS ROUNDAGAIN [J IF MORE TO BE COPIED 20 3P7L ONOGENRES [FINISHED SO SUPPRESS GEN RESTORE 18 3PM= LDN 1 OMGRSUPPRES(2) [PRINT ^GENERAL RESTORE 21 3Q6W CALL 0 OUTCON [SUPPRESSED^ MESSAGE ON THE CONSOLE 19 3QLG LDN 6 0 [REMEMBER NO GENERAL RESTORE 18 3R66 BRN RETURN [AND GO BACK TO LOADERI 4 3RKQ # 5 3S5B OGRFORCE 18 3SK2 LDN 1 OMGREQUEST(2) [PRINT ^GENERAL RESTORE 21 3T4L CALL 0 OUTCON [REQUESTED^ MESSAGE ON THE CONSOLE 20 3TJ= LDN 6 1 [REMEMBER TO FORCE GEN RESTORE 5 3W3W RETURN 19 3WHG LDX 7 OLINK(2) [RESTORE LINK BACK TO LOADERI 15 3X36 EXIT 7 0 [AND RETURN 4 3XGQ # 4 3Y2B # 18 3YG2 # BUFFER AREAS TO CONTAIN THE SYSTEM CONTROL AREAS AND 17 3Y_L # FILE AREA CELLS READ BY THE OSEARCHDISC ROUTINE: 4 3_F= # 4 3_YW # 4 42DG OSCA 6 42Y6 #GAP 129 5 43CQ OSCAFAC 6 43XB #GAP 129 4 44C2 # 4 44WL # 15 45B= #ALT K9LOADERFT=0?+37? [MEND AREA 6 45TW #GAP 100 4 46*G # 4 46T6 # 4 47#Q #END 4 47SB #OVE 6 ____ ...234377230001