{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: LOADERFT867)}}
====== LOADERFT867 ======
(George Source)
**Macros used:** [[george:macro:JENVNOT|JENVNOT]]
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