     .OUTPI ALFRES
     .ENTRY FNDEXT

;A wildcard extractor for DZ
;
TFIL1    *=*+11
TFIL2    *=*+11
;
SFSET    LDA #32
         LDX #10
SFS01    STA TFIL1,X
         STA TFIL2,X
         DEX 
         BPL SFS01
         LDX #0
         LDY #0
SFS02    LDA FILEN,X
         BEQ SFSXIT
         CMP #"."    ;Switch to extender ?
         BNE SFS03
         LDY #7
         BNE SFS06
SFS03    STA TFIL1,Y
SFS06    INX 
         INY 
         CPY #11
         BCC SFS02
SFSXIT   RTS 
;
SFDIR    LDX #0
SFD01    LDA IDIR,X
         CMP #$9B    ;Find the end
         BEQ SFD02
         INX 
         BNE SFD01
SFD02    LDA IDIR,X
         CMP #">"
         BEQ SFD03
         CMP #":"
         BEQ SFD03
         DEX 
         BPL SFD02
SFD03    LDY #0
         INX 
SFD04    LDA IDIR,X
         CMP #"*"    ;Wildcard ?
         BNE SFD06
         LDA #"?"
SFD05    STA TFIL2,Y
         INY 
         CPY #8
         BCC SFD05
         INX 
SFD5     LDA IDIR,X
         CMP #"."
         BEQ SFD20
         CMP #$9B
         BEQ SFD07
         INX 
         BNE SFD5
;
SFD06    CMP #"."
         BEQ SFD20
         STA TFIL2,Y
         INX 
         INY 
         CPY #8
         BCC SFD04
SFD07    RTS         ;Too long, so no extension
;
SFD20    INX         ;Point past '.
         LDY #8
SFD21    LDA IDIR,X
         CMP #$9B
         BEQ SFD07   ;Thats it
         CMP #"*"
         BNE SFD25
         LDA #"?"
SFD22    STA TFIL2,Y
         INY 
         CPY #11
         BCC SFD22
         RTS 
SFD25    STA TFIL2,Y
         INX 
         INY 
         CPY #11
         BCC SFD21
         RTS 
;
;Ok, here is the locator
;
FNDEXT   JSR SFSET   ;Init the fields
         JSR SFDIR   ;Build the mask
         LDX #0
FNDE01   LDA TFIL2,X
         CMP #"?"
         BEQ FNDE02  ;It matches
         CMP TFIL1,X
         BNE FNDNXT  ;Go get next file
FNDE02   INX 
         CPX #11
         BCC FNDE01
         CLC 
         RTS 
FNDNXT   LDX #.LO.SKPMSG
         LDY #.HI.SKPMSG
         JSR SCRPRT
         LDX #0
FNDE10   LDA FILEN,X
         BEQ FNDE11
         JSR PRCHAR
         INX 
         BPL FNDE10
FNDE11   LDA #$9B
         JSR PRCHAR
         JSR RDARC
         SEC         ;Say not this one
         RTS 
SKPMSG   .BYTE "Skipping: ",0
