From 6d418d7b4a631d1a12b0a27aee10cbba6eac726a Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Wed, 14 Dec 2022 23:09:17 -0500 Subject: [PATCH] Implemented *DTITLE (disk title.) See #213. --- applecorn.po | Bin 819200 -> 819200 bytes auxmem.hostfs.s | 16 ++++++++++-- mainmem.svc.s | 66 +++++++++++++++++++++++++++++++++--------------- 3 files changed, 60 insertions(+), 22 deletions(-) diff --git a/applecorn.po b/applecorn.po index 4520ec61c1b18f00faf83aedf6fa61d4eb373e8f..64fad3379ae1369adb94b56cc7450f006384c7f0 100644 GIT binary patch delta 9972 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%0AW_;_6Y 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 DBli=4 delta 9863 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 AI{*Lx diff --git a/auxmem.hostfs.s b/auxmem.hostfs.s index c0e384c..5e822be 100644 --- a/auxmem.hostfs.s +++ b/auxmem.hostfs.s @@ -317,7 +317,7 @@ FSCCOMMAND ASC 'ACCESS' ASC 'FREE' DB $FF DW FSCFREE-1 ; FREE (), LPTR=>params - ASC 'TITLE' + ASC 'DTITLE' DB $FF DW FSCTITLE-1 ; TITLE () , LPTR=>params * @@ -846,7 +846,19 @@ DESTROY JSR PARSLPTR ; Copy filename->MOSFILE * LPTR=>parameters string * Syntax: *TITLE (<drive>) <title> * -FSCTITLE RTS +FSCTITLE JSR PARSLPTR ; Copy arg1->MOSFILE + BEQ :SYNTAX ; No args + JSR PARSLPTR2 ; Copy arg2->MOSFILE2 + BNE :S1 ; If two args, skip + >>> WRTMAIN + STZ MOSFILE2 ; One arg, MOSFILE2="" + >>> WRTAUX +:S1 >>> XF2MAIN,DISKTITLE + RTS +:SYNTAX BRK + DB $DC + ASC 'Syntax: TITLE (<drv>) <title>' + BRK * Parse filename pointed to by XY diff --git a/mainmem.svc.s b/mainmem.svc.s index d8df4a1..0896725 100644 --- a/mainmem.svc.s +++ b/mainmem.svc.s @@ -33,7 +33,7 @@ RENFILE >>> ENTMAIN JSR PREPATH ; Preprocess arg2 JSR COPYMF12 ; Put it back in MOSFILE2 JSR TMPtoMF ; Recover arg1->MOSFILE - LDA #<MOSFILE +RENFILE2 LDA #<MOSFILE STA RENPL+1 LDA #>MOSFILE STA RENPL+2 @@ -46,6 +46,27 @@ RENFILE >>> ENTMAIN DW RENPL >>> XF2AUX,RENRET + +* Set name of volume dir, for *TITLE +* Special case of renaming +* Case 1: Disk ID in MOSFILE, title in MOSFILE2 +* Case 2: Title in MOSFILE, MOSFILE2="" +* +DISKTITLE >>> ENTMAIN + LDA MOSFILE2 + BNE :CASE1 + JSR COPYMF12 ; Copy title->MOSFILE2 + LDA #$01 ; MOSFILE2 = "@" + STA MOSFILE1 + LDA #'@' + STA MOSFILE1 + 1 +:CASE1 JSR PREPATH ; Preprocess pathname + BCS :EXIT + JSR TRUNCPATH ; Truncate to top level + JMP RENFILE2 +:EXIT >>> XF2AUX,RENRET + + * ProDOS file handling for file copying * Returns with ProDOS error code in A COPYFILE >>> ENTMAIN @@ -1034,6 +1055,22 @@ INFOFIRST LDA WILDIDX CATARG DB $00 +* Helper routine to truncate path in MOSFILE at the top level +* So '/FOO/BAR/BAZ' -> '/FOO' +TRUNCPATH LDX #$01 ; Skip over initial '/' +:L1 CPX MOSFILE ; See if end of string + BCS :EXIT ; If so ... we are done + BEQ :EXIT + LDA MOSFILE+1,X ; Get char from path + CMP #'/' ; See if it is slash + BNE :NOTSLASH + STX MOSFILE ; If so, truncate here + BRA :EXIT +:NOTSLASH INX + BRA :L1 +:EXIT RTS + + * Set prefix. Used by *CHDIR/*DRIVE to change directory * Y= $00 - CHDIR, select any directory * Y<>$00 - DRIVE, must select root @@ -1045,9 +1082,11 @@ SETPFX >>> ENTMAIN JSR WILDONE ; Handle any wildcards LDA #$2E BCS :EXIT ; Exit with wildcard path -* TO DO: If DRIVE disallow selecting a directory -* - LDA #<MOSFILE + PLY ; CHDIR/DRIVE flag + CPY #$00 ; If <> $00 (ie: *DRIVE) + BEQ :CHDIR + JSR TRUNCPATH ; Truncate to top level +:CHDIR LDA #<MOSFILE STA SPFXPL+1 LDA #>MOSFILE STA SPFXPL+2 @@ -1055,8 +1094,7 @@ SETPFX >>> ENTMAIN DB SPFXCMD DW SPFXPL -:EXIT PLY ; Drop CHDIR/DRIVE flag - >>> XF2AUX,CHDIRRET +:EXIT >>> XF2AUX,CHDIRRET * Obtain info on total/used blocks @@ -1068,20 +1106,8 @@ DRVINFO >>> ENTMAIN STA MOSFILE+1 ; Convert "" to "@" :DRVINF2 JSR PREPATH BCS :EXIT - - LDX #$01 ; Skip over initial '/' -:L1 CPX MOSFILE ; See if end of string - BCS :S1 ; If so ... we are done - BEQ :S1 - LDA MOSFILE+1,X ; Get char from path - CMP #'/' ; See if it is slash - BNE :S2 - STX MOSFILE ; If so, truncate here - BRA :S1 -:S2 INX - BRA :L1 - -:S1 LDA #<MOSFILE + JSR TRUNCPATH ; Truncate to top level + LDA #<MOSFILE STA GINFOPL+1 LDA #>MOSFILE STA GINFOPL+2