*INFO nearly working

This commit is contained in:
Bobbi Webber-Manners 2021-09-10 23:36:46 -04:00
parent be140d17a2
commit 964329c4a4
3 changed files with 36 additions and 3 deletions

Binary file not shown.

View File

@ -644,9 +644,14 @@ QUIT INC $3F4 ; Invalidate powerup byte
RTS RTS
* Used for *CAT, *EX and *INFO * Used for *CAT, *EX and *INFO
* On entry: A=$5x *CAT, A=$9x *EX, A=$Ax *INFO
CATALOG >>> ENTMAIN CATALOG >>> ENTMAIN
AND #$F0
STA CATARG ; Stash argument STA CATARG ; Stash argument
LDA MOSFILE ; Length of pathname CMP #$A0 ; Is it *INFO?
BNE :NOTINFO
JMP INFO ; Handle entry for *INFO
:NOTINFO LDA MOSFILE ; Length of pathname
BEQ :NOPATH ; If zero use prefix BEQ :NOPATH ; If zero use prefix
JSR PREPATH ; Preprocess pathname JSR PREPATH ; Preprocess pathname
JSR WILDONE ; Handle any wildcards JSR WILDONE ; Handle any wildcards
@ -687,9 +692,35 @@ CATEXIT >>> XF2AUX,STARCATRET
* PRONEBLK call returns here ... * PRONEBLK call returns here ...
CATALOGRET CATALOGRET
>>> ENTMAIN >>> ENTMAIN
LDA CATARG
CMP #$A0 ; Is this an *INFO call?
BEQ INFOREENTRY
BRA CATREENTRY BRA CATREENTRY
CATARG DB $00 ; A=5 *CAT, A=9 *EX, A=10 *INFO CATARG DB $00
* Handle *INFO
INFO JSR PREPATH ; Preprocess pathname
JSR WILDCARD ; Handle any wildcards
BCS INFEXIT
INFOREENTRY
JSR WILDNEXT
BCS INFEXIT ; No more matches
:L1 JSR WILDNEXT
BCS :DONE
LDA WILDIDX
CMP #$FF ; Finished a block?
BEQ :DONE
BRA :L1
:DONE JSR COPYAUXBLK
>>> XF2AUX,PRONEBLK
INFEXIT CMP #$4C ; EOF
BNE :EXIT
LDA #$00 ; EOF is not an error
:EXIT JSR CLSDIR ; Be sure to close it!
>>> XF2AUX,STARCATRET
* Set prefix. Used by *CHDIR to change directory * Set prefix. Used by *CHDIR to change directory
SETPFX >>> ENTMAIN SETPFX >>> ENTMAIN

View File

@ -253,11 +253,13 @@ MATCHENT LDA #<BLKBUF+4 ; Skip pointers
BNE :S2 BNE :S2
INC A1H INC A1H
:S2 JSR MATCH ; Try wildcard match :S2 JSR MATCH ; Try wildcard match
BCC :NOMATCH PHP
LDA A1L ; Decrement ptr again LDA A1L ; Decrement ptr again
BNE :S3 BNE :S3
DEC A1H DEC A1H
:S3 DEC A1L :S3 DEC A1L
PLP
BCC :NOMATCH
LDY #$00 ; If matches, copy matching filename LDY #$00 ; If matches, copy matching filename
LDA (A1L),Y ; Length of filename LDA (A1L),Y ; Length of filename
AND #$0F ; Mask out other ProDOS stuff AND #$0F ; Mask out other ProDOS stuff