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