Kernel 0.93

This commit is contained in:
Rémy GIBERT 2019-07-15 08:41:12 +02:00
parent fd63f01d30
commit 60acd21411
5 changed files with 77 additions and 96 deletions

Binary file not shown.

View File

@ -388,7 +388,7 @@ MATH.DIVMOD32 jsr MATH.TMP32ZERO
rts rts
*-------------------------------------- *--------------------------------------
MATH.A2STR10NP ldx #3 3 didgit max MATH.A2STR10NP ldx #3 3 digit max
ldy #0 Disable Padding ldy #0 Disable Padding
MATH.A2STR10 jsr MATH.A2ACC32 MATH.A2STR10 jsr MATH.A2ACC32
clc unsigned clc unsigned

View File

@ -725,8 +725,6 @@ MEM.NextCharPtr1
*-------------------------------------- *--------------------------------------
MEM.AddYp1ToPtr1 MEM.AddYp1ToPtr1
sec sec
.HS 90 BCC
MEM.AddYToPtr1 clc
tya tya
adc ZPPtr1 adc ZPPtr1
sta ZPPtr1 sta ZPPtr1
@ -742,7 +740,7 @@ MEM.AddYToPtr2 clc
adc ZPPtr2 adc ZPPtr2
sta ZPPtr2 sta ZPPtr2
bcc .8 bcc .8
clc keep CC as some JMP exkt here clc keep CC as some JMP exit here
inc ZPPtr2+1 inc ZPPtr2+1
.8 rts .8 rts
*-------------------------------------- *--------------------------------------

View File

@ -291,70 +291,59 @@ K.PrintF.1 stz PrintF.Cnt
stz K.PrintF.PadL stz K.PrintF.PadL
stz K.PrintF.PadC stz K.PrintF.PadC
ldy #0 lda (ZPPtr2)
beq .7 end of format... print % and exit
.2 lda (ZPPtr2),y
beq .7 end of line... print % and exit jsr IsDigit
iny bcs .6 no digit....go check specifier
jsr K.PrintF.CheckTBL1 do we have a %x command?
bcc .6 yes, jmp to it!
cmp #'0' ...a 0...mmm... padding char? cmp #'0' ...a 0...mmm... padding char?
bne .4 bne .4
ldx K.PrintF.PadL K.PrintF.PadL is not nul, so this 0 is second digit sta K.PrintF.PadC
bne .5
* lda #'0' jsr MEM.NextCharPtr2 skip 0 ...
sta K.PrintF.PadC no, this is the first 0, so make it K.PrintF.PadC
bra .2
.4 jsr IsDigit
bcs .7 no TBL1, no digit....abort
.5 and #$0F we have a digit lda (ZPPtr2)
ldx K.PrintF.PadL
bne .51 second digit...
sta K.PrintF.PadL first digit, store.
lda #' '
sta K.PrintF.PadC and set pad char as SPACE
bra .2
.51 pha save it...
lda K.PrintF.PadL starts K.PrintF.PadL * 10
asl
asl A=times 4
adc K.PrintF.PadL CC by ASL, A=times 5
asl times 10
sta K.PrintF.PadL
pla get back digit
adc K.PrintF.PadL
sta K.PrintF.PadL
lda (ZPPtr2),y we have 2 digits, must get a letter, now
beq .7 beq .7
iny
jsr K.PrintF.CheckTBL1 jsr IsDigit
bcs .7 abort and print % bcs .6 %0x ??????
.6 jsr MEM.AddYToPtr2 skip all processed chars .4 jsr MATH.Dec2ACC32
bcs .99
lda ACC32
sta K.PrintF.PadL
lda K.PrintF.PadC
bne .6
lda #C.SPACE
sta K.PrintF.PadC
txa jsr MEM.AddYToPtr2 skip all processed chars
lda (ZPPtr2)
beq .7
.6 jsr K.PrintF.CheckTBL1 do we have a %x command?
bcs .20
jsr MEM.NextCharPtr2
txa yes, jmp to it!
asl asl
tax tax
jsr PrintF.ESC jsr PrintF.ESC
bcc .1 bcc .1
bcs .99 bra .99
.7 lda #'%' .7 lda #'%'
bra .20 bra .20
*-------------------------------------- *--------------------------------------
.10 cmp #'\' .10 cmp #'\'
bne .20 bne .20
jsr MEM.GetCharPtr2 jsr MEM.GetCharPtr2
beq .99 beq .99
@ -380,7 +369,7 @@ K.PrintF.1 stz PrintF.Cnt
.20 jsr PrintF.COut .20 jsr PrintF.COut
bcs .99 bcs .99
jmp .1 .11 jmp .1
*-------------------------------------- *--------------------------------------
.99 pha .99 pha
lda pLocal lda pLocal
@ -415,7 +404,7 @@ K.PrintF.1 stz PrintF.Cnt
adc (pLocal) ... ByteCnt adc (pLocal) ... ByteCnt
sta pStack CC sta pStack CC
>LDYA PrintF.Cnt >LDYA PrintF.Cnt
clc * clc
rts rts
*-------------------------------------- *--------------------------------------
K.PrintF.CheckTBL1 K.PrintF.CheckTBL1
@ -448,30 +437,33 @@ 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.GetByte
bcs PrintF.BB.RTS bcs PrintF.B.RTS
pha pha
jsr PrintF.B jsr PrintF.B
pla plx
bcc PrintF.B.1 bcs PrintF.B.RTS
PrintF.BB.RTS rts txa
bra PrintF.B.1
*-------------------------------------- *--------------------------------------
PrintF.B jsr PrintF.GetByte PrintF.B jsr PrintF.GetByte
bcs PrintF.BB.RTS bcs PrintF.B.RTS
PrintF.B.1 ldx #8 PrintF.B.1 ldy #8
.1 asl .1 asl
tay pha
lda #'0'/2 lda #'0'/2
rol rol
jsr PrintF.COut jsr PrintF.COut
bcs .9 bcs .9
tya pla
dex dey
bne .1 bne .1
.9 rts .9 ply
PrintF.B.RTS
rts
*-------------------------------------- *--------------------------------------
PrintF.I sec signed short PrintF.I sec signed short
.HS 90 BCC .HS 90 BCC
@ -480,14 +472,10 @@ PrintF.D clc unsigned short (BYTE)
ror ACC32.Sign ror ACC32.Sign
jsr PrintF.GetByte jsr PrintF.GetByte
bcs PrintF.BB.RTS bcs PrintF.B.RTS
sta ACC32 jsr MATH.A2ACC32
stz ACC32+1
ldx #0 one byte bra PrintF.NUM
bra PrintF.DD.1
PrintF.II sec signed int PrintF.II sec signed int
.HS 90 BCC .HS 90 BCC
@ -496,17 +484,13 @@ PrintF.DD clc unsigned int (WORD)
ror ACC32.Sign ror ACC32.Sign
jsr PrintF.GetByte jsr PrintF.GetByte
bcs PrintF.BB.RTS bcs PrintF.B.RTS
sta ACC32 jsr MATH.A2ACC32
jsr PrintF.GetByte jsr PrintF.GetByte
bcs PrintF.BB.RTS bcs PrintF.B.RTS
sta ACC32+1 sta ACC32+1
ldx #1 two bytes
PrintF.DD.1 stz ACC32+2
stz ACC32+3
bra PrintF.NUM bra PrintF.NUM
PrintF.L sec signed long PrintF.L sec signed long
@ -515,14 +499,13 @@ PrintF.U clc unsigned long (DWORD)
ror ACC32.Sign ror ACC32.Sign
ldx #$ff ldx #0
.1 jsr PrintF.GetByte .1 jsr PrintF.GetByte
bcs PrintF.BB.RTS bcs PrintF.B.RTS
inx
sta ACC32,x sta ACC32,x
inx
cpx #3 cpx #4
bne .1 bne .1
PrintF.NUM ldx K.PrintF.PadL PrintF.NUM ldx K.PrintF.PadL
@ -733,9 +716,7 @@ K.FGetS jsr PFT.CheckNodeA
sta ZPPtr1+1 sta ZPPtr1+1
bmi .3 already something in buffer bmi .3 already something in buffer
.1 >PUSHWI 1 .1 jsr STDIO.Read.1
>PUSHWI K.IOBuf
jsr IO.READ.I
bcc .2 bcc .2
cmp #MLI.E.EOF cmp #MLI.E.EOF
@ -769,9 +750,7 @@ K.FGetS jsr PFT.CheckNodeA
inc ZPPtr1+1 inc ZPPtr1+1
beq .8 Buffer full beq .8 Buffer full
.4 >PUSHWI 1 .4 jsr STDIO.Read.1
>PUSHWI K.IOBuf
jsr IO.READ.I
bcs .5 bcs .5
lda K.IOBuf lda K.IOBuf
@ -840,9 +819,7 @@ K.GetChar ldy #S.PS.hStdIn
K.GetC jsr PFT.CheckNodeA K.GetC jsr PFT.CheckNodeA
bcs K.GetC.RTS bcs K.GetC.RTS
>PUSHWI 1 jsr STDIO.Read.1
>PUSHWI K.IOBuf
jsr IO.READ.I
bcc .8 bcc .8
tay tay
bpl K.GetC.RTS I/O error bpl K.GetC.RTS I/O error
@ -852,7 +829,14 @@ K.GetC jsr PFT.CheckNodeA
.8 lda K.IOBuf .8 lda K.IOBuf
K.GetC.RTS rts K.GetC.RTS rts
*--------------------------------------
STDIO.Read.1 lda #0
>PUSHA
inc read 1 byte
>PUSHA
>PUSHWI K.IOBuf
jmp IO.READ.I
*/-------------------------------------- */--------------------------------------
* # SScanF * # SScanF
* Read formatted data from string * Read formatted data from string

View File

@ -89,20 +89,19 @@ K.StrToUL.rts rts
*\-------------------------------------- *\--------------------------------------
K.AToL >STYA ZPPtr2 C-String in Ptr2, Dst buffer in Ptr1 K.AToL >STYA ZPPtr2 C-String in Ptr2, Dst buffer in Ptr1
lda #10 base 10 * lda #10 base 10
sec signed sec signed
K.AToL.I jsr MATH.Dec2ACC32 K.AToL.I jsr MATH.Dec2ACC32
bcs .9 bcs .9
phy Save Count processed
ldy #3 ldx #3
.3 lda ACC32,y .3 lda ACC32,y
>PUSHA >PUSHA
dey dex
bpl .3 bpl .3
pla tya Y = A = Count processed
* clc * clc
@ -120,7 +119,7 @@ K.AToL.I jsr MATH.Dec2ACC32
* Y,A = int * Y,A = int
*\-------------------------------------- *\--------------------------------------
K.atoi >STYA ZPPtr2 K.atoi >STYA ZPPtr2
lda #10 base 10 * lda #10 base 10
sec signed sec signed
jsr MATH.Dec2ACC32 jsr MATH.Dec2ACC32