>HADFS2 v5.69 U File System Control - display file, directory, disk, free space map information U =============================================================================== (B This file is now too big to edit on a standard BBC or Master 2 <. v5.26 *Info $ copes with new-style disks F8 v5.27 *Opt6/*Opt7 select internal/external drivers P2 v5.30 BitTable reversed to use in DRVINT/EXT Z% v5.65 Recoded start24/add24/etc d4 v5.66 Removed code for NoHazel, IDE16, OldVRAM n7 v5.68 DRVINT set by OPT6/7 stored in my CMOS byte x* v5.69 DoIOwn also checks aux account P v5.76 FindFreeSpace first looks for exact match, prioritises shrinking FSM :  "Assembling S.HADFS2" O%=P%-Block%+mcode% [OPT0 : .fsc CMP #13:BCC P%+3:RTS ICMP #6:BEQ P%+5:JSR GrabAbs :\ Don't grab w/s if FS starting up STA &B0:TXA:PHA LDA &B0:ASL A:TAX LDA fscTable,X:STA &B0 LDA fscTable+1,X:STA &B1 PLA:TAX:JMP (&B0) :  .fscTable " EQUW opt:EQUW eof:EQUW slash ,!EQUW fscCmd:EQUW run:EQUW cat 6%EQUW NewFSStart:EQUW QueryHandles @#EQUW StarComm:EQUW ex:EQUW info JEQUW lib_run:EQUW rename T: ^ .fscCmd h'JSR XYtoF2:LDX #FileTable-CommTable r%LDA (&F2),Y:CMP #"\":BNE fscCmd2 |JSR SkipSpc1  .fscCmd2 6JSR Serv4Try:TAX:BNE P%+5:JMP RunFinish:\ All done HTYA:BNE Bad_Command :\ was *\name, so don't check disk JSR F2toXY:JMP slash  .lib_run .Bad_Command .JSR errors:EQUB 254:EQUS "Bad command":BRK :  \.lib_run \\ LibRun should do \\ Same as */filename ,\\ If nothing found, jump to Bad Command \\ \\ */filename should do \\ Try to run command +\\ If nothing, jump to FSC to do LibRun &\\ 0(\TXA:\PHA:\TYA:\PHA:\JSR WhatFS:\PHA : \LDA #3:\JSR OSARGS:\STA tmp D"\PLA:\CMP tmp:\BEQ Bad_Command NO\PLA:\TAY:\PLA:\TAX :\ libfs<>currfs, try running from me X: b .slash l4JSR CheckContextXY:\JSR CheckContext:\JSR XYtoF2 vLDX #CSD-CSD:JSR TryRun2 CLC:BNE RunDone ;BIT pathflg:BVS NotRun :\ Path used absolute specifier \ Should also try &.Library LDX #LIB-CSD:JSR TryRun CLC:BNE RunDone  .NotRun SEC  .RunDone BCC RunFinish @LDY #0:JSR F2toXY:LDA #11:JMP (&21E) :\ Pass to LibFS to try +\ NB ANFS seems not to implement RunLib : .run JSR CheckContextXY  *LDX #CSD-CSD:JSR TryRun2:BNE RunFinish JMP errNotFound  : * .TryRun 4%LDA CSD+0,X:CMP CSD+0:BNE TryRun2 >%LDA CSD+1,X:CMP CSD+1:BNE TryRun2 H%LDA CSD+2,X:CMP CSD+2:BNE TryRun2 R%LDA CSD+d,X:CMP CSD+d:BNE TryRun2 \.RunFinish fRTS p: z .TryRun2 LDA &F2:PHA:LDA &F3:PHA JSR DIRtoSect:JSR SetDrives LDY #0:JSR SearchPathEntry BPL P%+5:JMP errBadFilename TAX:BEQ TryRunNone "CMP #1:BEQ P%+5:JMP errNotFile TYA:CLC:ADC &F2:STA cptr+0 ALDA #0:ADC &F3:STA cptr+1 :\ Command line pointer >JSR YDoIOwn:LDA (fptr),Y:BPL TryRunOk :\ 'R', can run file >INY:INY:LDA (fptr),Y:BMI TryRunOk :\ 'E', can run file JMP errNoAccess : .TryRunNone PLA:STA &F3:PLA:STA &F2 LDA #0:RTS:\ No run  .TryRunOk $+LDY #17:LDA (fptr),Y:DEY: (fptr),Y:DEY .7 (fptr),Y:DEY: (fptr),Y :\ Check exec address 8CCMP #&FF:BEQ TryRunExec :\ exec=&FFFFFFFF, *Exec file B9JSR GetLoadHigh:DEY: (fptr),Y :\ Is load=&FFFFxxxx? LCCMP #&FF:BNE TryRunLoad :\ load<>&FFFFxxxx, load file VCDEY:LDA (fptr),Y:CMP #&FE :\ Is load=&FFFFFExx or FFxx? `HBCC TryRunLoad :\ load<>&FFFFFExx/FFxx, load file j: t.TryRunExec ~=LDA #0:LDY &256:BEQ P%+5:JSR OSFIND :\ Close Exec if open .TryRunExec2 LDA #&40:STA buf+0:LDA #1 JSR OpenInX:STA &256 .TryRunExit PLA:STA &F3:PLA:STA &F2 LDA #&FF:RTS:\ Run ok : .TryRunLoad LLDA #&FF:STA blk+1 :\ Stop Load from returning ctrl block ELDX #3:JSR GetLoadHigh:PHA :\ Get load address memory area LLDY #17:CMP (fptr),Y:BNE CantRun :\ Exec in different memory, can't run ILDY #16:CMP #&FF:BNE TryRunLoad2 :\ Not I/O memory, use this address ECMP (fptr),Y:BNE CantRun :\ I/O not &FFFFxxxx, can't run  .TryRunLoad2 :LDA (fptr),Y:PHA:DEY :\ Save exec address BDEX:BNE TryRunLoad2 :\ Now pointing to load addr (: 2GLDX #3:JSR UseFileAddr:LDX #0 :\ Load file to it's load address <.TryRunLoad3 F=PLA:STA addr+0,X:INX :\ Recover exec address PCPX #4:BNE TryRunLoad3 ZCBIT &27A:BPL TryRunIO :\ No Tube, run in I/O memory dICMP #&FF:BEQ TryRunIO :\ Exec=FFxxxxxx, run in I/O memory n?LDA #4:JSR TubeClaimDo :\ Run in language memory xJMP TryRunExit  .TryRunIO :LDA #1:JSR CallC4:JMP TryRunExit :\ Run in I/O memory  .CallC4 JMP (addr) :  .CantRun 7JSR errors:EQUB &93:EQUS "Cannot run this code":BRK :  .StarComm ;LSR ENABLE:RTS :\ Update Enable flag : %.QueryHandles:LDX #25:LDY #29:RTS : M\ On Master workspace is in high memory and owned by filing system owner. B\ So, have to relinquish it when new filing system taken over. C\ On BBC, workspace in low memory and owned by workspace owner. ":\ So, have to relinquish it when workspace taken over. ,.NewFSStart 6.z% @OJSR WhatMOS:BCS opt40 :\ Not Master, don't relinquish workspace J0:]: base$>=5.79:z%=P%-z%:P%=P%-z%:O%=O%-z% T.z% ^OBIT WHATOS:BPL opt40 :\ Not Master, don't relinquish workspace h/:]: base$<5.79:z%=P%-z%:P%=P%-z%:O%=O%-z% rLDA ws:PHA:LDA ws+1:PHA |ILDA #&77:JSR OSBYTE:JSR ServA :\ Close Spool/Exec, save workspace PLA:STA ws+1:PLA:STA ws  .opt40  .opt80 RTS : .opt 8\ -------------------------------------------------- H .opt5 R.optIgnore \RTS f: p .OptError z-JSR errors:EQUB 203:EQUS "Bad option":BRK : \ ------------------------ \ *OPT 4 - SET BOOT OPTION \ ------------------------  .opt4 CPY #16:BCS OptError 'JSR CheckContext:JSR CheckHADFSDisk