Kernel 0.93

This commit is contained in:
Rémy GIBERT 2019-07-15 17:43:17 +02:00
parent 60acd21411
commit a9f8d4ee0c
5 changed files with 100 additions and 110 deletions

Binary file not shown.

View File

@ -109,6 +109,7 @@ E.IBIN .EQ $76 Invalid BIN format
E.FTB .EQ $75 File Too Big Error
E.OOB .EQ $74 Out Of Bound
E.INUM .EQ $73 Invalid Numerical
E.STACK .EQ $72 Stack Error
E.NOKEY .EQ $6F Undefined Key
E.DUPKEY .EQ $6E Duplicate Key

View File

@ -45,10 +45,9 @@ K.PutPW.1 sta SETREADAUX
bcs .9
lda PWD.bDirty
bne PWD.Store
.9 rts
*--------------------------------------
PWD.Store lda PWD.DBPtr
beq .9
lda PWD.DBPtr
sta A1L
clc
adc PWD.DBSize
@ -62,6 +61,7 @@ PWD.Store lda PWD.DBPtr
>LDYA PWD.DBSize
jsr K.getmem
bcs .9
stx .8+1
>STYA A4L Save Destination Address in MAIN
@ -80,7 +80,7 @@ PWD.Store lda PWD.DBPtr
jsr .8
pla
sec
rts
.9 rts
.1 sta .7+1
@ -97,7 +97,7 @@ PWD.Store lda PWD.DBPtr
jsr .7
pla
sec
.9 rts
rts
.2 stz PWD.bDirty

View File

@ -279,10 +279,11 @@ K.PrintF.0 >LDYAI K.IOBuf
K.PrintF.1 stz PrintF.Cnt
stz PrintF.Cnt+1
stz PrintF.GetByte+1
stz PrintF.LocalGetByte+1
.1 jsr MEM.GetCharPtr2
bne .22
jmp .8 end of format..
.22 cmp #'%'
@ -306,7 +307,7 @@ K.PrintF.1 stz PrintF.Cnt
lda (ZPPtr2)
beq .7
jsr IsDigit
bcs .6 %0x ??????
@ -316,12 +317,12 @@ K.PrintF.1 stz PrintF.Cnt
lda ACC32
sta K.PrintF.PadL
lda K.PrintF.PadC
bne .6
bne .5
lda #C.SPACE
sta K.PrintF.PadC
jsr MEM.AddYToPtr2 skip all processed chars
.5 jsr MEM.AddYToPtr2 skip all processed chars
lda (ZPPtr2)
beq .7
@ -334,8 +335,9 @@ K.PrintF.1 stz PrintF.Cnt
txa yes, jmp to it!
asl
tax
jsr PrintF.ESC
bcc .1
.11 bcc .1
bra .99
.7 lda #'%'
@ -354,7 +356,7 @@ K.PrintF.1 stz PrintF.Cnt
dex
bpl .12
cmp #'x'
cmp #'x' \xHH
bne .1
jsr MATH.Hex2ACC32
@ -368,18 +370,9 @@ K.PrintF.1 stz PrintF.Cnt
.19 lda PrintFTBL2.OUT,x
.20 jsr PrintF.COut
bcs .99
.11 jmp .1
bcc .11
*--------------------------------------
.99 pha
lda pLocal
sec ByteCnt byte
adc (pLocal) ... ByteCnt
sta pStack CC
pla
sec
rts
.99 bra PrintF.LocalCleanUp
*--------------------------------------
.8 ldx PrintF.hFILE
beq .80 Writing to buffer, append \0
@ -399,13 +392,46 @@ K.PrintF.1 stz PrintF.Cnt
.80 ldy PrintF.Cnt A=0, Writing to buffer, append \0
sta (pIOBuf),y
.81 lda pLocal
.81 >LDYA PrintF.Cnt
* clc
*--------------------------------------
PrintF.LocalCleanUp
php
pha
lda pLocal
sec ByteCnt byte
adc (pLocal) ... ByteCnt
sta pStack CC
>LDYA PrintF.Cnt
pla
plp
PrintF.LocalCleanUp.RTS
rts
*--------------------------------------
PrintF.LocalGetPtr
jsr PrintF.LocalGetByte
bcs PrintF.LocalCleanUp.RTS
tax
*--------------------------------------
PrintF.LocalGetByte
lda #$FF SELF MODIFIED LStack Ptr
cmp (pLocal)
beq .9 CS
phy
tay
iny
lda (pLocal),y
sty PrintF.LocalGetByte+1
ply
* clc
rts
.9 lda #E.STACK
* sec
rts
*--------------------------------------
K.PrintF.CheckTBL1
ldx #PrintFTBL1.Cnt-1
@ -414,6 +440,7 @@ K.PrintF.CheckTBL1
beq .8
dex
bpl .1
sec no valid letter...
rts
@ -436,7 +463,7 @@ PrintFTBL2.OUT .HS 08.1B.0C.0A.0D.09.0B \b\e\f\n\r\t\v
.DA #'\' \\
.DA #'%' \%
*--------------------------------------
PrintF.BB jsr PrintF.GetByte
PrintF.BB jsr PrintF.LocalGetByte
bcs PrintF.B.RTS
pha
jsr PrintF.B
@ -445,7 +472,7 @@ PrintF.BB jsr PrintF.GetByte
txa
bra PrintF.B.1
*--------------------------------------
PrintF.B jsr PrintF.GetByte
PrintF.B jsr PrintF.LocalGetByte
bcs PrintF.B.RTS
PrintF.B.1 ldy #8
@ -469,46 +496,41 @@ PrintF.I sec signed short
.HS 90 BCC
PrintF.D clc unsigned short (BYTE)
ror ACC32.Sign
jsr PrintF.GetByte
bcs PrintF.B.RTS
jsr MATH.A2ACC32
ldy #1
bra PrintF.NUM
PrintF.II sec signed int
.HS 90 BCC
PrintF.DD clc unsigned int (WORD)
ror ACC32.Sign
jsr PrintF.GetByte
bcs PrintF.B.RTS
jsr MATH.A2ACC32
jsr PrintF.GetByte
bcs PrintF.B.RTS
sta ACC32+1
ldy #2
bra PrintF.NUM
PrintF.L sec signed long
.HS 90 BCC
PrintF.U clc unsigned long (DWORD)
ror ACC32.Sign
ldy #4
PrintF.NUM ror ACC32.Sign
ldx #0
.1 jsr PrintF.GetByte
.1 jsr PrintF.LocalGetByte
bcs PrintF.B.RTS
sta ACC32,x
inx
cpx #4
dey
bne .1
PrintF.NUM ldx K.PrintF.PadL
.2 cpx #4
beq .3
stz ACC32,x
inx
bra .2
.3 ldx K.PrintF.PadL
ldy K.PrintF.PadC
rol ACC32.Sign
jsr MATH.ACC322STR10
@ -521,7 +543,7 @@ PrintF.E sec Force "E+12"
.HS 90 BCC
PrintF.F clc
lda PrintF.GetByte+1 get current stack Ptr
lda PrintF.LocalGetByte+1 get current stack Ptr
tay
clc at least 5 bytes remaining ?
adc #5
@ -540,10 +562,10 @@ PrintF.F clc
ldx #FPU.SETFAC
jsr GP.ROMCALL
lda PrintF.GetByte+1
lda PrintF.LocalGetByte+1
clc
adc #5
sta PrintF.GetByte+1
sta PrintF.LocalGetByte+1
ldy #A2osX.NumStrBuf+1 In order not to trash A2osX.SaveSM,A2osX.SaveSX
ldx #FPU.FOUT
@ -569,12 +591,9 @@ PrintF.S ldy #$ff CSTR
.HS 2C bit abs
PrintF.SS ldy #$00 PSTR
jsr PrintF.GetByte
bcs .9
sta ZPPtr1
jsr PrintF.GetByte
jsr PrintF.LocalGetPtr
bcs .9
stx ZPPtr1
sta ZPPtr1+1
lda (ZPPtr1) if CSTR:last char=0, if PSTR:len=0
@ -621,7 +640,7 @@ PrintF.SS ldy #$00 PSTR
* clc
.9 rts
*--------------------------------------
PrintF.HH jsr PrintF.GetByte
PrintF.HH jsr PrintF.LocalGetByte
bcs PrintF.COut.RTS
pha LO byte
jsr PrintF.H
@ -630,7 +649,7 @@ PrintF.HH jsr PrintF.GetByte
txa
bra PrintF.H.1
*--------------------------------------
PrintF.H jsr PrintF.GetByte
PrintF.H jsr PrintF.LocalGetByte
bcs PrintF.COut.RTS
PrintF.H.1 jsr MATH.AToHexAX
@ -658,24 +677,6 @@ PrintF.COut phy
.9 lda #E.BUF
sec
PrintF.COut.RTS rts
*--------------------------------------
PrintF.GetByte lda #$FF SELF MODIFIED LStack Ptr
cmp (pLocal)
beq PrintF.GetByte.9 CS
phy
tay
iny
lda (pLocal),y
sty PrintF.GetByte+1
ply
* clc
PrintF.GetByte.9
rts
*/--------------------------------------
* # fgets (BLOCKING)
* read bytes from stream into the array
@ -698,7 +699,7 @@ PrintF.GetByte.9
* (pStack)+0 s
*--------------------------------------
K.FGetS jsr PFT.CheckNodeA
bcs PrintF.GetByte.9
bcs PrintF.COut.RTS
lda (pStack)
sta ZPPtr2 s LO
@ -865,8 +866,11 @@ STDIO.Read.1 lda #0
*\--------------------------------------
K.SScanF jsr MEM.SPtr2PPtr1 ptr2=String to Scan,Ptr1=format
stz .5+1 reset LStack Ptr
stz .80+1 rest Arg processed
lda pStack
sta pLocal
stz .8+1 rest Arg processed
stz PrintF.LocalGetByte+1
.1 jsr MEM.GetCharPtr1 End Of format?
beq .8
@ -900,40 +904,26 @@ K.SScanF jsr MEM.SPtr2PPtr1 ptr2=String to Scan,Ptr1=format
dex
bpl .3
.9 jsr .8
lda #MLI.E.EOF
.9 lda #MLI.E.EOF
sec
rts
jmp PrintF.LocalCleanUp
.4 jsr .5
.4 jsr PrintF.LocalGetPtr
bcs .9
stx ZPPtr3
sta ZPPtr3+1
jsr .5
bcs .9 out of Ptr on stack
inc .8+1 parsed one more arg!
bra .1
.8 lda pStack
sec ByteCnt byte
adc (pStack) ... ByteCnt
sta pStack CC
.80 lda #$ff SELF MODIFIED Arg processed
.99 rts
.8 lda #$ff SELF MODIFIED Arg processed
clc
jmp PrintF.LocalCleanUp
*--------------------------------------
.5 lda #$FF SELF MODIFIED LStack Ptr
cmp (pStack)
beq .99 CS
tay
iny
lda (pStack),y
sta ZPPtr3
iny
lda (pStack),y
sta ZPPtr3+1 get VAR Ptr
sty .5+1
inc .80+1 parsed one more arg!
jmp (K.SScanFJMP,x)
.5 jmp (K.SScanFJMP,x)
*--------------------------------------
K.SScanFTBL .DA #'i,#1,#'d,#1,#'I,#2,#'D,#2,#'l,#4,#'u,#4,#'h,#1,#'H,#2,#'s,#2
K.SScanFJMP .DA K.SScanF.I

View File

@ -118,8 +118,8 @@ K.ComputeWDAY lda #DAY0-1 Thursday : 4 (-1 for mod 7)
lda TIME.DWORD+1
cmp #100
bne .1
lda #0
sta TIME.DWORD+1
stz TIME.DWORD+1
inc TIME.DWORD
bra .1
@ -226,8 +226,7 @@ K.CTime2Time.Year
lda TIME.Year
jsr TIME.IsLeapYearYA if Leap year CS
lda #0 Toggle Carry
rol
rol Toggle Carry
eor #1
lsr