First hack at *DESTROY <obj-list>

This commit is contained in:
Bobbi Webber-Manners 2021-09-10 18:21:49 -04:00
parent d3f32a8743
commit 0d7350cbe1
3 changed files with 56 additions and 11 deletions

Binary file not shown.

View File

@ -303,13 +303,16 @@ FSCCOMMAND ASC 'CHDIR'
DW FSCDRIVE-1 ; Select drive, LPTR=>params
ASC 'FREE'
DB $80
DW FSCFREE-1 ; FREE (<drive)>, LPTR=>params
DW FSCFREE-1 ; FREE <drive>, LPTR=>params
ASC 'ACCESS'
DB $80
DW FSCACCESS-1 ; ACCESS <obj> <access), LPTR=>params
DW FSCACCESS-1 ; ACCESS <objlist> <access>, LPTR=>params
ASC 'TITLE'
DB $80
DW FSCTITLE-1 ; TITLE (<drive>) <title>, LPTR=>params
ASC 'DESTROY'
DB $80
DW FSCDESTROY-1 ; DESTROY <objlist>, LPTR=>params
*
DB $FF ; Terminator
@ -342,12 +345,17 @@ FSCHND
CMP #$0C
BEQ FSCREN ; A=12 - *RENAME
* Performs OSFSC *OPT function
FSOPT RTS ; No FS options for now
FSCDRIVE JMP DRIVE
FSCFREE JMP FREE
FSCACCESS JMP ACCESS
FSCDESTROY JMP DESTROY
FSCTITLE
FSCUKN PHA
@ -394,9 +402,6 @@ FSCREN JMP RENAME
FSCCHDIR JMP CHDIR
* Performs OSFSC *OPT function
FSOPT RTS ; No FS options for now
* Performs OSFSC Read EOF function
* File ref number is in X
CHKEOF >>> WRTMAIN
@ -664,12 +669,12 @@ FREERET
ACCESS JSR PARSLPTR ; Copy filename->MOSFILE
CMP #$00 ; Filename length
BEQ :ACCSYN
BEQ :SYNTAX
JSR PARSLPTR2 ; Copy Arg2->MOSFILE2
>>> XF2MAIN,SETPERM
:ACCSYN BRK
:SYNTAX BRK
DB $DC
ASC 'Syntax: ACCESS <pathname> <L|R|W>'
ASC 'Syntax: ACCESS <obj-list> <L|R|W>'
BRK
ACCRET >>> ENTAUX
@ -677,6 +682,20 @@ ACCRET >>> ENTAUX
LDA #$00
RTS
DESTROY JSR PARSLPTR ; Copy filename->MOSFILE
CMP #$00 ; Filename length
BEQ :SYNTAX
>>> XF2MAIN,MULTIDEL
:SYNTAX BRK
DB $DC
ASC 'Syntax: DESTROY <obj-list>'
BRK
DESTRET >>> ENTAUX
JSR CHKERROR
LDA #$00
RTS
* Parse filename pointed to by XY
* Write filename to MOSFILE in main memory
* Returns length in A

View File

@ -25,7 +25,7 @@ DELFILE >>> ENTMAIN
JSR UPDFB ; Update FILEBLK
JSR COPYFB ; Copy back to aux mem
PHA ; Save object type
JSR DESTROY
JSR DODELETE
BCC :DELETED
PLX ; Drop object
JSR CHKNOTFND
@ -33,7 +33,7 @@ DELFILE >>> ENTMAIN
:DELETED PLA ; Get object back
:EXIT >>> XF2AUX,OSFILERET
DESTROY LDA #<MOSFILE ; Attempt to destroy file
DODELETE LDA #<MOSFILE ; Attempt to destroy file
STA DESTPL+1
LDA #>MOSFILE
STA DESTPL+2
@ -104,7 +104,7 @@ OFILE >>> ENTMAIN
PHA
CMP #$80 ; Write mode
BNE :S0
JSR DESTROY
JSR DODELETE
LDA #$01 ; Storage type - file
STA CREATEPL+7
LDA #$06 ; Filetype BIN
@ -796,6 +796,32 @@ SETPERM >>> ENTMAIN
:WFLAG DB $00 ; 'W' attribute
:RFLAG DB $00 ; 'R' attribute
* Multi file delete, for *DESTROY
* Filename in MOSFILE
MULTIDEL >>> ENTMAIN
JSR PREPATH ; Preprocess pathname
BCS :SYNERR
JSR WILDCARD ; Handle any wildcards
BCS :NONE
BRA :MAINLOOP
:SYNERR LDA #$40 ; Invalid pathname syn
BRA :EXIT
:NONE JSR CLSDIR
LDA #$40 ; TODO PROPER ERROR CODE
BRA :EXIT
:MAINLOOP JSR DODELETE
BCS :DELERR
JSR WILDNEXT
BCS :NOMORE
BRA :MAINLOOP
:EXIT >>> XF2AUX,DESTRET
:DELERR JSR CLSDIR
LDA #$40 ; TODO PROPER ERROR CODE
BRA :EXIT
:NOMORE JSR CLSDIR
LDA #$00
BRA :EXIT
* Read mainmem from auxmem
MACHRD LDA $C081
LDA $C081