mirror of
https://github.com/bobbimanners/Applecorn.git
synced 2024-06-13 07:29:35 +00:00
Implemented *ACCESS
This commit is contained in:
parent
3007572513
commit
4fda1a05a0
BIN
applecorn.po
BIN
applecorn.po
Binary file not shown.
|
@ -346,7 +346,7 @@ FSCDRIVE JMP DRIVE
|
||||||
|
|
||||||
FSCFREE JMP FREE
|
FSCFREE JMP FREE
|
||||||
|
|
||||||
FSCACCESS
|
FSCACCESS JMP ACCESS
|
||||||
|
|
||||||
FSCTITLE
|
FSCTITLE
|
||||||
|
|
||||||
|
@ -662,6 +662,21 @@ FREERET
|
||||||
:USEDM ASC ' 512-byte Blocks Used'
|
:USEDM ASC ' 512-byte Blocks Used'
|
||||||
DB $00
|
DB $00
|
||||||
|
|
||||||
|
ACCESS JSR PARSLPTR ; Copy filename->MOSFILE
|
||||||
|
CMP #$00 ; Filename length
|
||||||
|
BEQ :ACCSYN
|
||||||
|
JSR PARSLPTR2 ; Copy Arg2->MOSFILE2
|
||||||
|
>>> XF2MAIN,SETPERM
|
||||||
|
:ACCSYN BRK
|
||||||
|
DB $DC
|
||||||
|
ASC 'Syntax: ACCESS <pathname> <L|R|W>'
|
||||||
|
BRK
|
||||||
|
|
||||||
|
ACCRET >>> ENTAUX
|
||||||
|
JSR CHKERROR
|
||||||
|
LDA #$00
|
||||||
|
RTS
|
||||||
|
|
||||||
* Parse filename pointed to by XY
|
* Parse filename pointed to by XY
|
||||||
* Write filename to MOSFILE in main memory
|
* Write filename to MOSFILE in main memory
|
||||||
* Returns length in A
|
* Returns length in A
|
||||||
|
|
|
@ -147,6 +147,6 @@ BYTE00XX BEQ BYTE00A ; OSBYTE 0,0 - generate error
|
||||||
RTS ; %000x1xxx host type, 'A'pple
|
RTS ; %000x1xxx host type, 'A'pple
|
||||||
BYTE00A BRK
|
BYTE00A BRK
|
||||||
DB $F7
|
DB $F7
|
||||||
HELLO ASC 'Applecorn MOS 2021-09-05 snapshot'
|
HELLO ASC 'Applecorn MOS 2021-09-06 snapshot'
|
||||||
DB $00 ; Unify MOS messages
|
DB $00 ; Unify MOS messages
|
||||||
|
|
||||||
|
|
67
mainmem.s
67
mainmem.s
|
@ -41,7 +41,7 @@ GTIMECMD EQU $82
|
||||||
CREATCMD EQU $C0
|
CREATCMD EQU $C0
|
||||||
DESTCMD EQU $C1
|
DESTCMD EQU $C1
|
||||||
RENCMD EQU $C2
|
RENCMD EQU $C2
|
||||||
SFILECMD EQU $C3
|
SINFOCMD EQU $C3
|
||||||
GINFOCMD EQU $C4
|
GINFOCMD EQU $C4
|
||||||
ONLNCMD EQU $C5
|
ONLNCMD EQU $C5
|
||||||
SPFXCMD EQU $C6
|
SPFXCMD EQU $C6
|
||||||
|
@ -1043,12 +1043,75 @@ DRVINFO >>> ENTMAIN
|
||||||
:ERR LDA #$40 ; Invalid pathname syn
|
:ERR LDA #$40 ; Invalid pathname syn
|
||||||
BRA :EXIT
|
BRA :EXIT
|
||||||
|
|
||||||
* Geyt file info
|
* Change file permissions, for *ACCESS
|
||||||
|
* Filename in MOSFILE, flags in MOSFILE2
|
||||||
|
SETPERM >>> ENTMAIN
|
||||||
|
JSR PREPATH ; Preprocess pathname
|
||||||
|
BCS :ERR
|
||||||
|
STZ :LFLAG
|
||||||
|
STZ :WFLAG
|
||||||
|
STZ :RFLAG
|
||||||
|
LDX MOSFILE2 ; Length of arg2
|
||||||
|
INX
|
||||||
|
:L1 DEX
|
||||||
|
CPX #$00
|
||||||
|
BEQ :DONEARG
|
||||||
|
LDA MOSFILE2,X ; Read arg2 char
|
||||||
|
CMP #'L' ; L=Locked
|
||||||
|
BNE :S1
|
||||||
|
STA :LFLAG
|
||||||
|
BRA :L1
|
||||||
|
:S1 CMP #'R' ; R=Readable
|
||||||
|
BNE :S2
|
||||||
|
STA :RFLAG
|
||||||
|
BRA :L1
|
||||||
|
:S2 CMP #'W' ; W=Writable
|
||||||
|
BNE :ERR2 ; Bad attribute
|
||||||
|
STA :WFLAG
|
||||||
|
BRA :L1
|
||||||
|
:DONEARG LDA #<MOSFILE
|
||||||
|
STA GINFOPL+1
|
||||||
|
LDA #>MOSFILE
|
||||||
|
STA GINFOPL+2
|
||||||
|
JSR GETINFO ; GET_FILE_INFO
|
||||||
|
BCS :EXIT
|
||||||
|
LDA GINFOPL+3 ; Access byte
|
||||||
|
LDX :RFLAG
|
||||||
|
BEQ :S3
|
||||||
|
ORA #$01 ; Turn on read enable
|
||||||
|
:S3 LDX :WFLAG
|
||||||
|
BEQ :S4
|
||||||
|
ORA #$02 ; Turn on write enable
|
||||||
|
:S4 LDX :LFLAG
|
||||||
|
BEQ :S5
|
||||||
|
AND #$C2 ; Turn off dest/ren/write
|
||||||
|
:S5 STA GINFOPL+3 ; Access byte
|
||||||
|
JSR SETINFO ; SET_FILE_INFO
|
||||||
|
:EXIT >>> XF2AUX,ACCRET
|
||||||
|
:ERR LDA #$40 ; Invalid pathname syn
|
||||||
|
BRA :EXIT
|
||||||
|
:ERR2 LDA #$53 ; Invalid parameter
|
||||||
|
BRA :EXIT
|
||||||
|
:LFLAG DB $00 ; 'L' attribute
|
||||||
|
:WFLAG DB $00 ; 'W' attribute
|
||||||
|
:RFLAG DB $00 ; 'R' attribute
|
||||||
|
|
||||||
|
* Get file info
|
||||||
GETINFO JSR MLI
|
GETINFO JSR MLI
|
||||||
DB GINFOCMD
|
DB GINFOCMD
|
||||||
DW GINFOPL
|
DW GINFOPL
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
|
* Set file info
|
||||||
|
SETINFO LDA #$07 ; SET_FILE_INFO 7 parms
|
||||||
|
STA GINFOPL
|
||||||
|
JSR MLI
|
||||||
|
DB SINFOCMD
|
||||||
|
DW GINFOPL ; Re-use PL from GFI
|
||||||
|
LDA #$0A ; GET_FILE_INFO 10 parms
|
||||||
|
STA GINFOPL
|
||||||
|
RTS
|
||||||
|
|
||||||
* Create disk file
|
* Create disk file
|
||||||
CRTFILE JSR MLI
|
CRTFILE JSR MLI
|
||||||
DB CREATCMD
|
DB CREATCMD
|
||||||
|
|
Loading…
Reference in New Issue
Block a user