mirror of
https://github.com/bobbimanners/Applecorn.git
synced 2024-06-16 10:29:32 +00:00
Implemented '@' and '.' to mean curr working dir
This commit is contained in:
parent
09375265fd
commit
00abfb3495
BIN
applecorn.po
BIN
applecorn.po
Binary file not shown.
|
@ -33,7 +33,7 @@ SETPRFX LDA #GPFXCMD
|
||||||
TAX
|
TAX
|
||||||
INX
|
INX
|
||||||
STX DRVBUF1 ; was $0300
|
STX DRVBUF1 ; was $0300
|
||||||
LDA #$2F
|
LDA #'/'
|
||||||
STA DRVBUF2 ; was $0301
|
STA DRVBUF2 ; was $0301
|
||||||
DEC :OPC7
|
DEC :OPC7
|
||||||
BNE :L1
|
BNE :L1
|
||||||
|
|
|
@ -9,9 +9,10 @@
|
||||||
* Also allows '^' as '^' is illegal character in ProDOS
|
* Also allows '^' as '^' is illegal character in ProDOS
|
||||||
* Carry set on error, clear otherwise
|
* Carry set on error, clear otherwise
|
||||||
PREPATH LDX MOSFILE ; Length
|
PREPATH LDX MOSFILE ; Length
|
||||||
BEQ :EXIT ; If zero length
|
BNE :S1
|
||||||
LDA MOSFILE+1 ; 1st char of pathname
|
JMP :EXIT ; If zero length
|
||||||
CMP #$3A ; ':'
|
:S1 LDA MOSFILE+1 ; 1st char of pathname
|
||||||
|
CMP #':'
|
||||||
BNE :NOTCOLN ; Not colon
|
BNE :NOTCOLN ; Not colon
|
||||||
CPX #$03 ; Length >= 3?
|
CPX #$03 ; Length >= 3?
|
||||||
BCC :ERR ; If not
|
BCC :ERR ; If not
|
||||||
|
@ -31,32 +32,37 @@ PREPATH LDX MOSFILE ; Length
|
||||||
CMP #$02 ; Length >= 2
|
CMP #$02 ; Length >= 2
|
||||||
BCC :ERR ; If not
|
BCC :ERR ; If not
|
||||||
LDA MOSFILE+1 ; 1st char of filename
|
LDA MOSFILE+1 ; 1st char of filename
|
||||||
CMP #$2F ; '/'
|
CMP #'/'
|
||||||
BNE :ERR
|
BNE :ERR
|
||||||
JSR DEL1CHAR ; Delete '/' from MOSFILE
|
JSR DEL1CHAR ; Delete '/' from MOSFILE
|
||||||
BRA :APPEND
|
BRA :APPEND
|
||||||
:NOTCOLN JSR GETPREF ; Current pfx -> PREFIX
|
:NOTCOLN JSR GETPREF ; Current pfx -> PREFIX
|
||||||
:REENTER LDA MOSFILE+1 ; First char of dirname
|
:REENTER LDA MOSFILE+1 ; First char of dirname
|
||||||
CMP #'.'
|
CMP #'.'
|
||||||
BEQ :UPDIR1
|
BEQ :ONEDOT
|
||||||
CMP #$5E ; '^' char
|
CMP #'@'
|
||||||
BEQ :CARET ; If '^'
|
BEQ :CWD
|
||||||
CMP #$2F ; '/' char - abs path
|
CMP #'^'
|
||||||
|
BEQ :CARET
|
||||||
|
CMP #'/' ; Absolute path
|
||||||
BEQ :EXIT ; Nothing to do
|
BEQ :EXIT ; Nothing to do
|
||||||
BRA :APPEND
|
BRA :APPEND
|
||||||
|
:ONEDOT JSR DEL1CHAR ; Delete the dot
|
||||||
:UPDIR1 LDA MOSFILE+2
|
LDA MOSFILE ; Is there more?
|
||||||
|
BEQ :APPEND ; Nope - '.' alone
|
||||||
|
LDA MOSFILE+1
|
||||||
|
CMP #'/' ; './'
|
||||||
|
BEQ :CWD2
|
||||||
CMP #'.' ; '..'
|
CMP #'.' ; '..'
|
||||||
BNE :EXIT
|
BNE :EXIT
|
||||||
JSR DEL1CHAR ; Delete two leading characters
|
:CARET JSR PARENT ; Parent dir -> PREFIX
|
||||||
:CARET JSR DEL1CHAR ; Delete '^' from MOSFILE
|
:CWD JSR DEL1CHAR ; Delete first char from MOSFILE
|
||||||
JSR PARENT ; Parent dir -> MOSFILE
|
:CWD2 LDA MOSFILE ; Is there more?
|
||||||
LDA MOSFILE ; Is there more?
|
BEQ :APPEND ; Nope!
|
||||||
BEQ :APPEND ; Only '^'
|
|
||||||
CMP #$02 ; Len at least two?
|
CMP #$02 ; Len at least two?
|
||||||
BCC :ERR ; Nope!
|
BCC :ERR ; Nope!
|
||||||
LDA MOSFILE+1 ; What is next char?
|
LDA MOSFILE+1 ; What is next char?
|
||||||
CMP #$2F ; Is it slash?
|
CMP #'/' ; Is it slash?
|
||||||
BNE :ERR ; Nope!
|
BNE :ERR ; Nope!
|
||||||
JSR DEL1CHAR ; Delete '/' from MOSFILE
|
JSR DEL1CHAR ; Delete '/' from MOSFILE
|
||||||
BRA :REENTER ; Go again!
|
BRA :REENTER ; Go again!
|
||||||
|
@ -74,7 +80,7 @@ PARENT LDX PREFIX ; Length of string
|
||||||
BEQ :EXIT ; Prefix len zero
|
BEQ :EXIT ; Prefix len zero
|
||||||
DEX ; Ignore trailing '/'
|
DEX ; Ignore trailing '/'
|
||||||
:L1 LDA PREFIX,X
|
:L1 LDA PREFIX,X
|
||||||
CMP #$2F ; Slash '/'
|
CMP #'/'
|
||||||
BEQ :FOUND
|
BEQ :FOUND
|
||||||
DEX
|
DEX
|
||||||
CPX #$01
|
CPX #$01
|
||||||
|
@ -104,7 +110,7 @@ DRV2PFX CLC ; Cy=0 A=00000sss
|
||||||
INC ; Plus '/' at each end
|
INC ; Plus '/' at each end
|
||||||
INC
|
INC
|
||||||
STA PREFIX ; Store length
|
STA PREFIX ; Store length
|
||||||
LDA #$2F ; '/'
|
LDA #'/'
|
||||||
STA PREFIX+1
|
STA PREFIX+1
|
||||||
STA PREFIX+2,X
|
STA PREFIX+2,X
|
||||||
:L1 CPX #$00 ; Copy -> PREFIX
|
:L1 CPX #$00 ; Copy -> PREFIX
|
||||||
|
@ -154,7 +160,7 @@ DIGCONV LDY #$01 ; First char
|
||||||
CPY #$01 ; First char?
|
CPY #$01 ; First char?
|
||||||
BEQ :INS ; First char is digit
|
BEQ :INS ; First char is digit
|
||||||
LDA MOSFILE-1,Y ; Prev char
|
LDA MOSFILE-1,Y ; Prev char
|
||||||
CMP #$2F ; Slash
|
CMP #'/'
|
||||||
BEQ :INS ; Slash followed by digit
|
BEQ :INS ; Slash followed by digit
|
||||||
BRA :NOINS ; Otherwise leave it alone
|
BRA :NOINS ; Otherwise leave it alone
|
||||||
:INS LDA #'N' ; Char to insert
|
:INS LDA #'N' ; Char to insert
|
||||||
|
|
Loading…
Reference in New Issue
Block a user