mirror of
https://github.com/bobbimanners/Applecorn.git
synced 2025-02-11 03:30:54 +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
|
||||
|
||||
FSCACCESS
|
||||
FSCACCESS JMP ACCESS
|
||||
|
||||
FSCTITLE
|
||||
|
||||
@ -662,6 +662,21 @@ FREERET
|
||||
:USEDM ASC ' 512-byte Blocks Used'
|
||||
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
|
||||
* Write filename to MOSFILE in main memory
|
||||
* Returns length in A
|
||||
|
@ -147,6 +147,6 @@ BYTE00XX BEQ BYTE00A ; OSBYTE 0,0 - generate error
|
||||
RTS ; %000x1xxx host type, 'A'pple
|
||||
BYTE00A BRK
|
||||
DB $F7
|
||||
HELLO ASC 'Applecorn MOS 2021-09-05 snapshot'
|
||||
HELLO ASC 'Applecorn MOS 2021-09-06 snapshot'
|
||||
DB $00 ; Unify MOS messages
|
||||
|
||||
|
67
mainmem.s
67
mainmem.s
@ -41,7 +41,7 @@ GTIMECMD EQU $82
|
||||
CREATCMD EQU $C0
|
||||
DESTCMD EQU $C1
|
||||
RENCMD EQU $C2
|
||||
SFILECMD EQU $C3
|
||||
SINFOCMD EQU $C3
|
||||
GINFOCMD EQU $C4
|
||||
ONLNCMD EQU $C5
|
||||
SPFXCMD EQU $C6
|
||||
@ -1043,12 +1043,75 @@ DRVINFO >>> ENTMAIN
|
||||
:ERR LDA #$40 ; Invalid pathname syn
|
||||
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
|
||||
DB GINFOCMD
|
||||
DW GINFOPL
|
||||
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
|
||||
CRTFILE JSR MLI
|
||||
DB CREATCMD
|
||||
|
Loading…
x
Reference in New Issue
Block a user