Kernel 0.93+

This commit is contained in:
Rémy GIBERT 2019-11-29 16:36:54 +01:00
parent 54e50b61ce
commit 8be5e78b32
3 changed files with 103 additions and 41 deletions

Binary file not shown.

View File

@ -54,7 +54,8 @@ L.MSG.FILE .DA MSG.FILE
L.MSG.FILEEXT .DA MSG.FILEEXT
L.MSG.CRLF .DA MSG.CRLF
L.PRODOS.FT.TXT .DA PRODOS.FT.TXT
L.FMT.DateTime .DA FMT.DateTime
L.FMT.Date .DA FMT.Date
L.FMT.Time .DA FMT.Time
.DA 0
*--------------------------------------
CS.INIT clc
@ -88,12 +89,16 @@ CS.RUN
.9 rts
.6 >LDA.G index do we have a Source dir ?
bne CS.RUN.LOOP
bne .8
ldy #S.PS.hCWD
lda (pPs),y
>SYSCALL GetMemPtr
jsr InitSrcDirYA
bcs .9
bcs .9
.8 >LEA.G TIME.SysTime
>SYSCALL time
*--------------------------------------
CS.RUN.LOOP ldy #S.PS.hStdIn
lda (pPS),y
@ -320,21 +325,12 @@ CS.RUN.PRINT.FILE
.9 rts
*--------------------------------------
CS.RUN.PUSHDATES
ldx #$ff
ldy #TIME.Mod-1 Set NODATE as default
.10 inx
iny
lda MSG.NODATE,x
sta (pData),y
bne .10
ldx #$ff
jsr CS.RUN.NODATES.INIT
ldy #TIME.Create-1 Set NODATE as default
.11 inx
iny
lda MSG.NODATE,x
sta (pData),y
bne .11
jsr CS.RUN.NODATES.INIT
ldy #S.STAT.MTIME+S.TIME.MONTH
lda (ZPFileStat),y
beq .1 Month=0.....invalid date/time
@ -345,10 +341,11 @@ CS.RUN.PUSHDATES
tay
lda ZPFileStat+1
adc #0
>PUSHYA
>PUSHW L.FMT.DateTime
jsr CS.RUN.DATEFMT.SELECT
>LEA.G TIME.Mod
>SYSCALL StrFTime
.1 ldy #S.STAT.CTIME+S.TIME.MONTH
lda (ZPFileStat),y
beq .2 Month=0.....invalid date/time
@ -359,14 +356,60 @@ CS.RUN.PUSHDATES
tay
lda ZPFileStat+1
adc #0
>PUSHYA
>PUSHW L.FMT.DateTime
jsr CS.RUN.DATEFMT.SELECT
>LEA.G TIME.Create
>SYSCALL StrFTime
.2 >PUSHEA.G TIME.Mod
>PUSHEA.G TIME.Create
rts
*--------------------------------------
CS.RUN.NODATES.INIT
ldx #$ff
.1 inx
iny
lda MSG.NODATE,x
sta (pData),y
bne .1
rts
*--------------------------------------
CS.RUN.DATEFMT.SELECT
>STYA ZPPtr1
>PUSHYA
ldy #S.TIME.CENTURY
lda (ZPPtr1),y
ldy #TIME.SysTime+S.TIME.CENTURY
cmp (pData),y
bne .9
ldy #S.TIME.YEAR
lda (ZPPtr1),y
ldy #TIME.SysTime+S.TIME.YEAR
cmp (pData),y
bne .9
ldy #S.TIME.MONTH
lda (ZPPtr1),y
ldy #TIME.SysTime+S.TIME.MONTH
cmp (pData),y
bne .9
ldy #S.TIME.DAY
lda (ZPPtr1),y
ldy #TIME.SysTime+S.TIME.DAY
cmp (pData),y
bne .9
.8 >PUSHW L.FMT.Time
rts
.9 >PUSHW L.FMT.Date
rts
*--------------------------------------
CS.RUN.UpdateColCnt
>INC.G ColCount
cmp #MAX.COL
@ -492,19 +535,20 @@ MSG.FILEEXT .AS "%15s %S $%H %s %10u %s %s"
MSG.CRLF .AZ "\r\n"
*--------------------------------------
PRODOS.FT.HEX .HS 0406FAFCFDE2CBCCCFFF
PRODOS.FT.TXT >PSTR "TXT"
>PSTR "BIN"
>PSTR "ASM"
>PSTR "BAS"
>PSTR "VAR"
>PSTR "ATK"
>PSTR "PIX"
>PSTR "FON"
>PSTR "PAK"
>PSTR "SYS"
PRODOS.FT.TXT >PSTR "txt"
>PSTR "bin"
>PSTR "asm"
>PSTR "bas"
>PSTR "var"
>PSTR "atk"
>PSTR "pix"
>PSTR "fon"
>PSTR "pak"
>PSTR "sys"
PRODOS.FT.DFLT >PSTR "$ "
MSG.NODATE .AZ " <No-Date> "
FMT.DateTime .AZ "%d-%b-%y %H:%M"
FMT.Date .AZ "%d-%b-%y"
FMT.Time .AZ "%H:%M:%S "
TYPES .AS "-dbclssp"
ACCESS .AS "rwxrwxrwx"
*--------------------------------------
@ -516,6 +560,7 @@ ArgCount .BS 1
MOD .BS 11 drwxrwxrwx0
TIME.Create .BS 20
TIME.Mod .BS 20
TIME.SysTime .BS S.TIME
bPause .BS 1
bAllmostAll .BS 1

View File

@ -29,14 +29,12 @@ FilterMatch >LDA.G index
ldy #S.STAT.FSID
lda (ZPFileStat),y
bne .10 not prodos...
>LDYA ZPPtr2 CI compare
tax if 0, Regular ProDOS....
bne .10
>LDYA ZPPtr2 ... so CI compare
>SYSCALL strupr
>LDYA ZPFileName
>SYSCALL strupr
.10 lda (ZPPtr2) Get first pattern byte
beq .8 Match always if empty
@ -56,7 +54,7 @@ FilterMatch >LDA.G index
cmp #'?'
beq .4 no need to compare, any char will match
cmp (ZPFileName),y Regular Char, compare with string at Y
jsr FilterMatch.CmpPtr2CharPtr1Y Regular Char, compare with string at Y
bne .9 no match, exit
.4 iny advance to next char to compare
@ -80,8 +78,7 @@ FilterMatch >LDA.G index
beq .9 no chance to match ? or regular char
iny
lda (ZPPtr2) get again char in pattern
cmp (ZPFileName),y compare with char in string
jsr FilterMatch.CmpPtr2CharPtr1Y compare with char in string
bne .7 not equal to next non wildcard in pattern
iny
@ -92,6 +89,26 @@ FilterMatch >LDA.G index
FilterMatch.RTS
rts
*--------------------------------------
FilterMatch.CmpPtr2CharPtr1Y
phx
plx
bne .2 Foreign FS or ProDOS.FX : CS compare
lda (ZPFileName),y
cmp #'a'
bcc .1
cmp #'z'+1
bcs .1
eor #$20
.1 cmp (ZPPtr2)
rts
.2 lda (ZPPtr2)
cmp (ZPFileName),y
rts
*--------------------------------------
FilterMatch.NextPtr2
inc ZPPtr2 Make PTR2 advance to next char
bne .1