From 48dc3cbc74b3537f14781c8c33c2517af9864dc7 Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Fri, 3 Sep 2021 23:54:18 -0400 Subject: [PATCH] Add code to handle files/dirs with initial digit --- applecorn.po | Bin 819200 -> 819200 bytes mainmem.s | 76 +++++++++++++++++++++++++++++++++++---------------- 2 files changed, 53 insertions(+), 23 deletions(-) diff --git a/applecorn.po b/applecorn.po index 59bb2942078b6c0813760125cf96d76bae431d9c..38313868b18c6fc56a184c5f282c1b33e4e865d4 100644 GIT binary patch delta 2959 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 diff --git a/mainmem.s b/mainmem.s index 596abc9..eeaa717 100644 --- a/mainmem.s +++ b/mainmem.s @@ -1016,7 +1016,8 @@ PREPATH LDX MOSFILE ; Length BRA :REENTER ; Go again! :APPEND JSR APPMF2 ; Append MOSFILE->MOSFILE2 JSR COPYMF2 ; Copy back to MOSFILE -:EXIT CLC +:EXIT JSR DIGCONV ; Handle initial digits + CLC RTS :ERR SEC RTS @@ -1157,6 +1158,57 @@ COPYMF2 LDX #$00 :DONE STX MOSFILE RTS +* Scan pathname in MOSFILE converting files/dirs +* starting with digit by adding 'N' before. +DIGCONV LDY #$01 ; First char +:L1 CPY MOSFILE ; String length + BEQ :KEEPON ; Last char + BCS :DONE ; Y>MOSFILE +:KEEPON LDA MOSFILE,Y ; Load char + JSR ISDIGIT ; Is it a digit? + BCC :NOINS ; No .. skip + CPY #$01 ; First char? + BEQ :INS ; First char is digit + LDA MOSFILE-1,Y ; Prev char + CMP #$2F ; Slash + BEQ :INS ; Slash followed by digit + BRA :NOINS ; Otherwise leave it alone +:INS LDA #'N' ; Char to insert + JSR INSMF ; Insert it + INY +:NOINS INY ; Next char + BRA :L1 +:DONE RTS + +* Is char in A a digit? Set carry if so +ISDIGIT CMP #'9'+1 + BCS :NOTDIG + CMP #'0' + BCC :NOTDIG + SEC + RTS +:NOTDIG CLC + RTS + +* Insert char in A into MOSFILE at posn Y +* Preserves regs +INSMF PHA ; Preserve char + STY :INSIDX ; Stash index for later + LDY MOSFILE ; String length + INY ; Start with Y=len+1 +:L1 CPY :INSIDX ; Back to ins point? + BEQ :S1 ; Yes, done moving + LDA MOSFILE-1,Y ; Move one char + STA MOSFILE,Y + DEY + BRA :L1 +:S1 PLA ; Char to insert + STA MOSFILE,Y ; Insert it + INC MOSFILE ; One char longer + RTS +:INSIDX DB $00 + + ****************************************************** * ProDOS Parameter lists for MLI calls ****************************************************** @@ -1253,25 +1305,3 @@ QUITPL HEX 04 ; Number of parameters DB $00 DW $0000 -** Buffer for Acorn MOS filename -** Pascal string -*MOSFILE DS 65 ; 64 bytes max prefix/file len -* -** Buffer for second filename (for rename) -** Pascal string -*MOSFILE2 DS 65 ; 64 bytes max prefix/file len - -** Acorn MOS format OSFILE param list -*FILEBLK -*FBPTR DW $0000 ; Pointer to name (in aux) -*FBLOAD DW $0000 ; Load address -* DW $0000 -*FBEXEC DW $0000 ; Exec address -* DW $0000 -*FBSIZE -*FBSTRT DW $0000 ; Size / Start address for SAVE -* DW $0000 -*FBATTR -*FBEND DW $0000 ; Attributes / End address for SAVE -* DW $0000 -