mirror of
https://github.com/A2osX/A2osX.git
synced 2024-07-14 04:29:02 +00:00
Kernel 0.93
This commit is contained in:
parent
5c330415ca
commit
53ba642a71
Binary file not shown.
@ -41,15 +41,25 @@ DRV.BLK.BlkNum .EQ $47
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
*INDEX .EQ $5E ->$5F LOAD.FAC.FROM.YA
|
*INDEX .EQ $5E ->$5F LOAD.FAC.FROM.YA
|
||||||
RESULT .EQ $62 ->$66 used in FMULT FDIV
|
RESULT .EQ $62 ->$66 used in FMULT FDIV
|
||||||
|
TMP32.Sign .EQ RESULT
|
||||||
|
TMP32 .EQ RESULT+1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ZPTMP .EQ $67 ->$84 29 bytes
|
ZPTMP .EQ $67 ->$84 29 bytes
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
FORPNT .EQ $85 ->$86
|
FORPNT .EQ $85 ->$86
|
||||||
FAC .EQ $9D ->$A1
|
FAC .EQ $9D ->$A1
|
||||||
FAC.SIGN .EQ $A2
|
FAC.SIGN .EQ $A2
|
||||||
|
* FAC.EXTENSION .EQ $AC
|
||||||
|
*--------------------------------------
|
||||||
|
ACC32.Sign .EQ FAC
|
||||||
|
ACC32 .EQ FAC+1
|
||||||
|
*--------------------------------------
|
||||||
ARG .EQ $A5 -> $A9 (5 bytes)
|
ARG .EQ $A5 -> $A9 (5 bytes)
|
||||||
ARG.SIGN .EQ $AA
|
ARG.SIGN .EQ $AA
|
||||||
* FAC.EXTENSION .EQ $AC
|
*--------------------------------------
|
||||||
|
ARG32.Sign .EQ ARG
|
||||||
|
ARG32 .EQ ARG+1
|
||||||
|
*--------------------------------------
|
||||||
* CHARGET .EQ $B1
|
* CHARGET .EQ $B1
|
||||||
* CHARGOT .EQ $B7
|
* CHARGOT .EQ $B7
|
||||||
TXTPTR .EQ $B8
|
TXTPTR .EQ $B8
|
||||||
@ -83,6 +93,8 @@ ROM.ATAN .EQ 38
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
A2osX.SaveSM .EQ $100 Aux
|
A2osX.SaveSM .EQ $100 Aux
|
||||||
A2osX.SaveSX .EQ $101 Aux
|
A2osX.SaveSX .EQ $101 Aux
|
||||||
|
A2osX.NumStrLen .EQ $102 Aux
|
||||||
|
A2osX.NumStrBuf .EQ $103 Aux
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Main $200 -> 2FF : (Used By ProDOS,Clock DRV....)
|
* Main $200 -> 2FF : (Used By ProDOS,Clock DRV....)
|
||||||
* Main $300 -> 3EF : <free>
|
* Main $300 -> 3EF : <free>
|
||||||
|
@ -602,11 +602,11 @@ ENV.SysVarsCPID ldy #S.PS.CPID
|
|||||||
|
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
|
|
||||||
ENV.SysVarsNum jsr MEM.Byte2Str102
|
ENV.SysVarsNum jsr NUM.A2STR10NP
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
.1 lda $102,y
|
.1 lda A2osX.NumStrBuf,y
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
iny
|
iny
|
||||||
|
@ -745,73 +745,6 @@ MEM.NextCharPtr2
|
|||||||
inc ZPPtr2+1
|
inc ZPPtr2+1
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Convert A to CSTR at $102
|
|
||||||
*--------------------------------------
|
|
||||||
MEM.Byte2Str102 stz .2+1 0xx
|
|
||||||
stz .3+1 x00
|
|
||||||
|
|
||||||
phx
|
|
||||||
|
|
||||||
ldx #8
|
|
||||||
|
|
||||||
sed
|
|
||||||
|
|
||||||
.1 asl
|
|
||||||
pha
|
|
||||||
|
|
||||||
.2 lda #$ff Self Modified
|
|
||||||
adc .2+1
|
|
||||||
sta .2+1
|
|
||||||
|
|
||||||
.3 lda #$ff Self Modified
|
|
||||||
adc .3+1
|
|
||||||
sta .3+1
|
|
||||||
|
|
||||||
pla
|
|
||||||
dex
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
cld
|
|
||||||
|
|
||||||
ldx #0
|
|
||||||
|
|
||||||
lda .3+1 x00
|
|
||||||
beq .4
|
|
||||||
|
|
||||||
jsr .8
|
|
||||||
|
|
||||||
.4 lda .2+1
|
|
||||||
pha
|
|
||||||
|
|
||||||
lsr
|
|
||||||
lsr
|
|
||||||
lsr
|
|
||||||
lsr 0x0
|
|
||||||
|
|
||||||
bne .5
|
|
||||||
|
|
||||||
cpx #0
|
|
||||||
beq .6
|
|
||||||
|
|
||||||
.5 jsr .8
|
|
||||||
|
|
||||||
.6 pla
|
|
||||||
|
|
||||||
and #$0f 00x
|
|
||||||
|
|
||||||
jsr .8
|
|
||||||
|
|
||||||
stz $102,x
|
|
||||||
|
|
||||||
plx
|
|
||||||
|
|
||||||
rts
|
|
||||||
|
|
||||||
.8 ora #$30
|
|
||||||
sta $102,x
|
|
||||||
inx
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.MEM
|
SAVE USR/SRC/SYS/KERNEL.S.MEM
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD USR/SRC/SYS/KERNEL.S
|
||||||
|
@ -1,16 +1,119 @@
|
|||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ACC32.Sign .EQ FAC
|
* http://6502.org/source/integers/32muldiv.htm
|
||||||
ACC32 .EQ FAC+1
|
* http://nparker.llx.com/a2/mult.html
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
NUM.A2STR10 jsr NUM.A2ACC32
|
* ARG32*ACC32->TMP32
|
||||||
|
*--------------------------------------
|
||||||
|
NUM.MUL32 jsr NUM.TMP32ZERO
|
||||||
|
|
||||||
|
ldx #32
|
||||||
|
|
||||||
|
.2 lsr ARG32+3
|
||||||
|
ror ARG32+2
|
||||||
|
ror ARG32+1
|
||||||
|
ror ARG32
|
||||||
|
|
||||||
|
bcc .3
|
||||||
|
|
||||||
clc
|
clc
|
||||||
|
|
||||||
|
lda TMP32
|
||||||
|
adc ACC32
|
||||||
|
sta TMP32
|
||||||
|
|
||||||
|
lda TMP32+1
|
||||||
|
adc ACC32+1
|
||||||
|
sta TMP32+1
|
||||||
|
|
||||||
|
lda TMP32+2
|
||||||
|
adc ACC32+2
|
||||||
|
sta TMP32+2
|
||||||
|
|
||||||
|
lda TMP32+3
|
||||||
|
adc ACC32+3
|
||||||
|
sta TMP32+3
|
||||||
|
|
||||||
|
.3 jsr ACC32.T2
|
||||||
|
|
||||||
|
dex
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
* ARG32 = ARG32 div ACC32
|
||||||
|
* TMP32 = ARG32 mod ACC32
|
||||||
|
*--------------------------------------
|
||||||
|
NUM.DIVMOD32 jsr NUM.TMP32ZERO
|
||||||
|
|
||||||
|
ldx #32
|
||||||
|
|
||||||
|
.1 asl ARG32
|
||||||
|
rol ARG32+1
|
||||||
|
rol ARG32+2
|
||||||
|
rol ARG32+3
|
||||||
|
|
||||||
|
rol TMP32
|
||||||
|
rol TMP32+1
|
||||||
|
rol TMP32+2
|
||||||
|
rol TMP32+3
|
||||||
|
|
||||||
|
sec
|
||||||
|
|
||||||
|
lda TMP32
|
||||||
|
sbc ACC32
|
||||||
|
pha
|
||||||
|
lda TMP32+1
|
||||||
|
sbc ACC32+1
|
||||||
|
pha
|
||||||
|
lda TMP32+2
|
||||||
|
sbc ACC32+2
|
||||||
|
pha
|
||||||
|
lda TMP32+3
|
||||||
|
sbc ACC32+3
|
||||||
|
bcs .2
|
||||||
|
|
||||||
|
pla
|
||||||
|
pla
|
||||||
|
pla
|
||||||
|
|
||||||
|
dex
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
.2 sta TMP32+3
|
||||||
|
pla
|
||||||
|
sta TMP32+2
|
||||||
|
pla
|
||||||
|
sta TMP32+1
|
||||||
|
pla
|
||||||
|
sta TMP32
|
||||||
|
|
||||||
|
inc ARG32 bit0 always 0 because of .1 asl
|
||||||
|
|
||||||
|
dex
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
NUM.A2STR10NP ldx #3 3 didgit max
|
||||||
|
ldy #0 Disable Padding
|
||||||
|
NUM.A2STR10 jsr NUM.A2ACC32
|
||||||
|
clc unsigned
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* CS = signed long
|
* CS = signed long
|
||||||
* CC = unsigned long
|
* CC = unsigned long
|
||||||
|
* X = Pad Len
|
||||||
|
* Y = Pad Char
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
NUM.ACC322STR10 bcc .1
|
NUM.ACC322STR10 stx .5+1 Pad Len
|
||||||
|
sty .81+1 Pad Char
|
||||||
|
|
||||||
|
stz A2osX.NumStrLen
|
||||||
|
bcc .1
|
||||||
|
|
||||||
clc
|
clc
|
||||||
|
|
||||||
@ -21,7 +124,7 @@ NUM.ACC322STR10 bcc .1
|
|||||||
|
|
||||||
sec
|
sec
|
||||||
|
|
||||||
.1 php
|
.1 ror ACC32.Sign Save sign
|
||||||
|
|
||||||
ldx #4
|
ldx #4
|
||||||
|
|
||||||
@ -51,48 +154,204 @@ NUM.ACC322STR10 bcc .1
|
|||||||
|
|
||||||
cld
|
cld
|
||||||
|
|
||||||
ldy #0
|
ldx .5+1 no padding
|
||||||
* ldx #0
|
beq .6
|
||||||
|
|
||||||
plp
|
lda #10 starts at 10-padlen
|
||||||
bcc .5
|
sec
|
||||||
|
.5 sbc #$ff SELF MODIFIED
|
||||||
|
tax
|
||||||
|
|
||||||
lda #'-'
|
.6 txa
|
||||||
sta $102,x
|
|
||||||
inx
|
|
||||||
|
|
||||||
.5 stz $102,x
|
|
||||||
|
|
||||||
.50 tya
|
|
||||||
lsr
|
lsr
|
||||||
tay
|
tay
|
||||||
lda RESULT,y
|
lda RESULT,y
|
||||||
|
bcs .7
|
||||||
bcs .6
|
|
||||||
|
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
|
|
||||||
.6 and #$0F
|
.7 and #$0F
|
||||||
ora #$30
|
ora #$30
|
||||||
cmp #$30
|
|
||||||
|
|
||||||
lda $102,x
|
cmp #'0'
|
||||||
sta $102,x
|
beq .80
|
||||||
|
|
||||||
.7 sta $102,x
|
ldy #'0' next 0s always printed
|
||||||
inx
|
sty .81+1
|
||||||
|
|
||||||
.8 iny
|
bra .82
|
||||||
cpy #10
|
|
||||||
bne .50
|
|
||||||
|
|
||||||
stz $102,x
|
.80 cpx #9 last char, print always
|
||||||
|
beq .82
|
||||||
|
|
||||||
|
.81 lda #$ff SELF MODIFIED Get Padding char
|
||||||
|
beq .87
|
||||||
|
|
||||||
|
.82 bit ACC32.Sign "-" to print ?
|
||||||
|
bpl .86
|
||||||
|
|
||||||
|
pha
|
||||||
|
lda #'-'
|
||||||
|
jsr .88
|
||||||
|
stz ACC32.Sign
|
||||||
|
pla
|
||||||
|
|
||||||
|
.86 jsr .88
|
||||||
|
|
||||||
|
.87 inx
|
||||||
|
cpx #10
|
||||||
|
bne .6
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
|
||||||
|
.88 ldy A2osX.NumStrLen
|
||||||
|
inc A2osX.NumStrLen
|
||||||
|
sta A2osX.NumStrBuf,y
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
* Convert Hex int at ZPPtr2 to ACC32
|
||||||
|
*--------------------------------------
|
||||||
|
NUM.Hex2ACC32 lda (ZPPtr2)
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
jsr MEM.IsHexDigit
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
jsr NUM.ACC32ZERO
|
||||||
|
|
||||||
|
sta ACC32
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.1 iny
|
||||||
|
lda (ZPPtr2),y
|
||||||
|
beq .8
|
||||||
|
jsr MEM.IsHexDigit
|
||||||
|
bcs .8
|
||||||
|
|
||||||
|
pha
|
||||||
|
|
||||||
|
ldx #4
|
||||||
|
|
||||||
|
.2 jsr ACC32.T2
|
||||||
|
bcs .99 overflow!!!
|
||||||
|
dex
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
pla
|
||||||
|
ora ACC32
|
||||||
|
sta ACC32
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.99 pla
|
||||||
|
.9 sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
* Convert Decimal int at ZPPtr2 to ACC32
|
||||||
|
*--------------------------------------
|
||||||
|
NUM.Dec2ACC32 jsr NUM.ACC32ZERO
|
||||||
|
|
||||||
clc
|
clc
|
||||||
.99 rts
|
lda (ZPPtr2)
|
||||||
|
eor #'-'
|
||||||
|
bne .10
|
||||||
|
|
||||||
|
jsr MEM.NextCharPtr2 skip '-'
|
||||||
|
sec
|
||||||
|
|
||||||
|
.10 ror .80+1 set pos/neg flag
|
||||||
|
|
||||||
|
ldy #$ff
|
||||||
|
|
||||||
|
.1 iny
|
||||||
|
lda (ZPPtr2),y
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
jsr MEM.IsDigit
|
||||||
|
bcs .8
|
||||||
|
|
||||||
|
phy Save Y, pointing to next char
|
||||||
|
jsr ACC32.T10
|
||||||
|
ply
|
||||||
|
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
lda (ZPPtr2),y
|
||||||
|
and #$0F
|
||||||
|
|
||||||
|
* clc
|
||||||
|
|
||||||
|
adc ACC32
|
||||||
|
sta ACC32
|
||||||
|
bcc .1
|
||||||
|
inc ACC32+1
|
||||||
|
bne .1
|
||||||
|
inc ACC32+2
|
||||||
|
bne .1
|
||||||
|
inc ACC32+3
|
||||||
|
bne .1 if 0, overflow!!!
|
||||||
|
|
||||||
|
.9 lda #E.INUM
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.8 tya no digit parsed...error
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
.80 lda #$FF SELF MODIFIED
|
||||||
|
bpl .88
|
||||||
|
|
||||||
|
jsr NUM.ACC32NEG
|
||||||
|
|
||||||
|
.88 clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
ACC32.T10 ldx #3
|
||||||
|
|
||||||
|
.1 lda ACC32,x save ACC32 for 4+1
|
||||||
|
pha
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
jsr ACC32.T2 STDLIB.32 * 2 -> STDLIB.32
|
||||||
|
bcs ACC32.9 overflow!!!
|
||||||
|
|
||||||
|
jsr ACC32.T2 STDLIB.32 * 4 -> STDLIB.32
|
||||||
|
bcs ACC32.9 overflow!!!
|
||||||
|
|
||||||
|
ldx #0
|
||||||
|
ldy #4
|
||||||
|
|
||||||
|
* clc
|
||||||
|
|
||||||
|
.2 pla STDLIB.32 * 4 + STDLIB.32 -> STDLIB.32
|
||||||
|
adc ACC32,x
|
||||||
|
sta ACC32,x
|
||||||
|
inx
|
||||||
|
dey
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
bcs ACC32.RTS overflow!!!
|
||||||
|
|
||||||
|
ACC32.T2 asl ACC32
|
||||||
|
rol ACC32+1
|
||||||
|
rol ACC32+2
|
||||||
|
rol ACC32+3
|
||||||
|
rts if CS, overflow!!!
|
||||||
|
|
||||||
|
ACC32.9 pla discard saved STDLIB.32
|
||||||
|
pla
|
||||||
|
pla
|
||||||
|
pla
|
||||||
|
|
||||||
|
ACC32.RTS rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
NUM.A2ACC32 sta ACC32
|
NUM.A2ACC32 sta ACC32
|
||||||
.HS 2C BIT ABS
|
.HS 2C BIT ABS
|
||||||
@ -102,6 +361,12 @@ NUM.ACC32ZERO stz ACC32
|
|||||||
stz ACC32+3
|
stz ACC32+3
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
NUM.TMP32ZERO stz TMP32
|
||||||
|
stz TMP32+1
|
||||||
|
stz TMP32+2
|
||||||
|
stz TMP32+3
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
NUM.ACC32NEG sec
|
NUM.ACC32NEG sec
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
@ -502,14 +502,14 @@ PWD.StoreString iny
|
|||||||
PWD.StoreByte php
|
PWD.StoreByte php
|
||||||
phx
|
phx
|
||||||
|
|
||||||
jsr MEM.Byte2Str102
|
jsr NUM.A2STR10NP
|
||||||
|
|
||||||
plx
|
plx
|
||||||
plp
|
plp
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
.1 lda $102,y
|
.1 lda A2osX.NumStrBuf,y
|
||||||
beq PWD.GetRecordLen.RTS
|
beq PWD.GetRecordLen.RTS
|
||||||
|
|
||||||
iny
|
iny
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
HEXBUF .EQ FAC
|
K.PrintF.PadL .EQ FAC+5
|
||||||
K.PrintF.PadL .EQ FAC+4
|
K.PrintF.PadC .EQ ARG.SIGN
|
||||||
K.PrintF.PadC .EQ FAC+5
|
|
||||||
HEXBUF.Signed .EQ ARG.SIGN
|
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # putchar (BLOCKING)
|
* # putchar (BLOCKING)
|
||||||
* Print A (char) to StdOut
|
* Print A (char) to StdOut
|
||||||
@ -291,8 +289,7 @@ K.PrintF.1 stz PrintF.Cnt
|
|||||||
bne .10
|
bne .10
|
||||||
|
|
||||||
stz K.PrintF.PadL
|
stz K.PrintF.PadL
|
||||||
lda #' '
|
stz K.PrintF.PadC
|
||||||
sta K.PrintF.PadC
|
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
@ -321,6 +318,8 @@ K.PrintF.1 stz PrintF.Cnt
|
|||||||
bne .51 second digit...
|
bne .51 second digit...
|
||||||
|
|
||||||
sta K.PrintF.PadL first digit, store.
|
sta K.PrintF.PadL first digit, store.
|
||||||
|
lda #' '
|
||||||
|
sta K.PrintF.PadC and set pad char as SPACE
|
||||||
bra .2
|
bra .2
|
||||||
|
|
||||||
.51 pha save it...
|
.51 pha save it...
|
||||||
@ -372,12 +371,12 @@ K.PrintF.1 stz PrintF.Cnt
|
|||||||
>LDYA ZPPtr1
|
>LDYA ZPPtr1
|
||||||
>STYA ZPPtr2
|
>STYA ZPPtr2
|
||||||
|
|
||||||
jsr STDLIB.GetHex
|
jsr NUM.Hex2ACC32
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr MEM.AddYToPtr1
|
jsr MEM.AddYToPtr1
|
||||||
|
|
||||||
.14 lda HEXBUF
|
.14 lda ACC32
|
||||||
bra .20
|
bra .20
|
||||||
|
|
||||||
.19 lda PrintFTBL2.OUT,x
|
.19 lda PrintFTBL2.OUT,x
|
||||||
@ -481,13 +480,13 @@ PrintF.I sec signed short
|
|||||||
.HS 90 BCC
|
.HS 90 BCC
|
||||||
PrintF.D clc unsigned short (BYTE)
|
PrintF.D clc unsigned short (BYTE)
|
||||||
|
|
||||||
ror HEXBUF.Signed
|
ror ACC32.Sign
|
||||||
|
|
||||||
jsr PrintF.GetByte
|
jsr PrintF.GetByte
|
||||||
bcs PrintF.BB.RTS
|
bcs PrintF.BB.RTS
|
||||||
sta HEXBUF
|
sta ACC32
|
||||||
|
|
||||||
stz HEXBUF+1
|
stz ACC32+1
|
||||||
|
|
||||||
ldx #0 one byte
|
ldx #0 one byte
|
||||||
|
|
||||||
@ -497,150 +496,43 @@ PrintF.II sec signed int
|
|||||||
.HS 90 BCC
|
.HS 90 BCC
|
||||||
PrintF.DD clc unsigned int (WORD)
|
PrintF.DD clc unsigned int (WORD)
|
||||||
|
|
||||||
ror HEXBUF.Signed
|
ror ACC32.Sign
|
||||||
|
|
||||||
jsr PrintF.GetByte
|
jsr PrintF.GetByte
|
||||||
bcs PrintF.BB.RTS
|
bcs PrintF.BB.RTS
|
||||||
sta HEXBUF
|
sta ACC32
|
||||||
|
|
||||||
jsr PrintF.GetByte
|
jsr PrintF.GetByte
|
||||||
bcs PrintF.BB.RTS
|
bcs PrintF.BB.RTS
|
||||||
sta HEXBUF+1
|
sta ACC32+1
|
||||||
|
|
||||||
ldx #1 two bytes
|
ldx #1 two bytes
|
||||||
|
|
||||||
PrintF.DD.1 stz HEXBUF+2
|
PrintF.DD.1 stz ACC32+2
|
||||||
stz HEXBUF+3
|
stz ACC32+3
|
||||||
bra PrintF.U.1
|
bra PrintF.NUM
|
||||||
|
|
||||||
PrintF.L sec signed long
|
PrintF.L sec signed long
|
||||||
.HS 90 BCC
|
.HS 90 BCC
|
||||||
PrintF.U clc unsigned long (DWORD)
|
PrintF.U clc unsigned long (DWORD)
|
||||||
|
|
||||||
ror HEXBUF.Signed
|
ror ACC32.Sign
|
||||||
|
|
||||||
ldx #$ff
|
ldx #$ff
|
||||||
|
|
||||||
.1 jsr PrintF.GetByte
|
.1 jsr PrintF.GetByte
|
||||||
bcs PrintF.BB.RTS
|
bcs PrintF.BB.RTS
|
||||||
inx
|
inx
|
||||||
sta HEXBUF,x
|
sta ACC32,x
|
||||||
|
|
||||||
cpx #3
|
cpx #3
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
* ldx #3 4 bytes
|
PrintF.NUM ldx K.PrintF.PadL
|
||||||
|
ldy K.PrintF.PadC
|
||||||
PrintF.U.1 clc
|
rol ACC32.Sign
|
||||||
bit HEXBUF.Signed
|
jsr NUM.ACC322STR10
|
||||||
bpl PrintF.Hex2Dec unsigned, nothing to check
|
bra PrintF.StrNum
|
||||||
|
|
||||||
lda HEXBUF,x get sign
|
|
||||||
bpl PrintF.Hex2Dec
|
|
||||||
|
|
||||||
sec
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
|
|
||||||
.1 lda HEXBUF,y two's complement of X bytes
|
|
||||||
eor #$ff
|
|
||||||
adc #0
|
|
||||||
sta HEXBUF,y
|
|
||||||
iny
|
|
||||||
dex
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
sec tell to print a "-" sign....
|
|
||||||
*--------------------------------------
|
|
||||||
* Convert HEXBUF to ASCBUF decimal padded with 0
|
|
||||||
*--------------------------------------
|
|
||||||
PrintF.Hex2Dec ror HEXBUF.Signed
|
|
||||||
|
|
||||||
ldx #4
|
|
||||||
|
|
||||||
.1 stz RESULT,x Clear all 5 bytes
|
|
||||||
dex
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
sed switch to BCD mode
|
|
||||||
|
|
||||||
ldx #32 let's roll 32 bits
|
|
||||||
|
|
||||||
.2 asl HEXBUF
|
|
||||||
rol HEXBUF+1
|
|
||||||
rol HEXBUF+2
|
|
||||||
rol HEXBUF+3
|
|
||||||
|
|
||||||
ldy #4
|
|
||||||
|
|
||||||
.3 lda RESULT,y
|
|
||||||
adc RESULT,y
|
|
||||||
sta RESULT,y
|
|
||||||
dey
|
|
||||||
bpl .3
|
|
||||||
|
|
||||||
dex
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
cld
|
|
||||||
|
|
||||||
bit HEXBUF.Signed
|
|
||||||
bpl .9
|
|
||||||
|
|
||||||
lda #'-'
|
|
||||||
jsr PrintF.COut
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
.9 lda K.PrintF.PadL any Len format ?
|
|
||||||
beq .4 no
|
|
||||||
|
|
||||||
lda #10
|
|
||||||
sec yes, Print only digits starting at pos 10-K.PrintF.PadL
|
|
||||||
sbc K.PrintF.PadL
|
|
||||||
|
|
||||||
.4 tax x=0 if no K.PrintF.PadL, or x=10-K.PrintF.PadL
|
|
||||||
|
|
||||||
.5 txa X range 0 to 9
|
|
||||||
lsr CS if lo nibble (1,3,5,7,9)
|
|
||||||
tay
|
|
||||||
|
|
||||||
lda RESULT,y
|
|
||||||
|
|
||||||
bcs .6
|
|
||||||
|
|
||||||
lsr
|
|
||||||
lsr
|
|
||||||
lsr
|
|
||||||
lsr
|
|
||||||
|
|
||||||
.6 and #$0F
|
|
||||||
ora #$30
|
|
||||||
cmp #$30
|
|
||||||
|
|
||||||
beq .7 a zero?
|
|
||||||
|
|
||||||
inc K.PrintF.PadL found a non zero, Print all digits, even if 0, next time
|
|
||||||
ldy #'0'
|
|
||||||
sty K.PrintF.PadC
|
|
||||||
bra .8
|
|
||||||
|
|
||||||
.7 cpx #9 last digit ?
|
|
||||||
beq .8 Print always
|
|
||||||
|
|
||||||
ldy K.PrintF.PadL no pad to fill, do not Print 0
|
|
||||||
beq .10
|
|
||||||
|
|
||||||
lda K.PrintF.PadC fill with K.PrintF.PadC
|
|
||||||
|
|
||||||
.8 jsr PrintF.COut
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
.10 inx
|
|
||||||
cpx #10
|
|
||||||
bne .5
|
|
||||||
|
|
||||||
clc
|
|
||||||
.99 rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* EXP(8) 1(s) 1significants(31)
|
* EXP(8) 1(s) 1significants(31)
|
||||||
* http://apple2.org.za/gswv/a2zine/GS.WorldView/Resources/GS.TECH.INFO/AppleSoft/
|
* http://apple2.org.za/gswv/a2zine/GS.WorldView/Resources/GS.TECH.INFO/AppleSoft/
|
||||||
@ -656,7 +548,7 @@ PrintF.F clc
|
|||||||
|
|
||||||
cmp (pStack)
|
cmp (pStack)
|
||||||
bcc .1
|
bcc .1
|
||||||
bne .9 CS
|
bne PrintF.StrNum.RTS
|
||||||
|
|
||||||
.1 tya
|
.1 tya
|
||||||
sec +1
|
sec +1
|
||||||
@ -673,13 +565,13 @@ PrintF.F clc
|
|||||||
adc #5
|
adc #5
|
||||||
sta PrintF.GetByte+1
|
sta PrintF.GetByte+1
|
||||||
|
|
||||||
ldy #3 In order not to trash A2osX.SaveSM,A2osX.SaveSX
|
ldy #A2osX.NumStrBuf+1 In order not to trash A2osX.SaveSM,A2osX.SaveSX
|
||||||
ldx #ROM.FOUT
|
ldx #ROM.FOUT
|
||||||
jsr GP.ROMCALL
|
jsr GP.ROMCALL
|
||||||
|
|
||||||
ldy #0
|
PrintF.StrNum ldy #0
|
||||||
|
|
||||||
.2 lda $102,y
|
.2 lda A2osX.NumStrBuf,y
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
iny
|
iny
|
||||||
@ -690,6 +582,7 @@ PrintF.F clc
|
|||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
|
PrintF.StrNum.RTS
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PrintF.S ldy #$ff CSTR
|
PrintF.S ldy #$ff CSTR
|
||||||
@ -1087,20 +980,20 @@ K.SScanF.L
|
|||||||
K.SScanF.U lda K.SScanFTBL+1,x Get VAR size
|
K.SScanF.U lda K.SScanFTBL+1,x Get VAR size
|
||||||
pha Save VAL size
|
pha Save VAL size
|
||||||
|
|
||||||
jsr STDLIB.GetDec
|
jsr NUM.Dec2ACC32
|
||||||
bra K.SScanF.GetVAL
|
bra K.SScanF.GetVAL
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.SScanF.HH
|
K.SScanF.HH
|
||||||
K.SScanF.H lda K.SScanFTBL+1,x Get VAR size
|
K.SScanF.H lda K.SScanFTBL+1,x Get VAR size
|
||||||
pha
|
pha
|
||||||
|
|
||||||
jsr STDLIB.GetHex
|
jsr NUM.Hex2ACC32
|
||||||
|
|
||||||
K.SScanF.GetVAL jsr K.SScanF.Fwd Y=char count parsed
|
K.SScanF.GetVAL jsr K.SScanF.Fwd Y=char count parsed
|
||||||
|
|
||||||
.1 ply get back VAL size
|
.1 ply get back VAL size
|
||||||
|
|
||||||
.2 lda STDLIB.32-1,y
|
.2 lda ACC32-1,y
|
||||||
dey
|
dey
|
||||||
sta (ZPPtr3),y
|
sta (ZPPtr3),y
|
||||||
bne .2
|
bne .2
|
||||||
|
@ -87,21 +87,18 @@ K.StrToUL.rts rts
|
|||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
* On stack (long)
|
* On stack (long)
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
*STDLIB.32 .BS 4 32 bits max
|
|
||||||
STDLIB.32 .EQ FAC 32 bits max
|
|
||||||
*--------------------------------------
|
|
||||||
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 STDLIB.GetDec
|
K.AToL.I jsr NUM.Dec2ACC32
|
||||||
bcs .9
|
bcs .9
|
||||||
phy Save Count processed
|
phy Save Count processed
|
||||||
|
|
||||||
ldy #3
|
ldy #3
|
||||||
|
|
||||||
.3 lda STDLIB.32,y
|
.3 lda ACC32,y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dey
|
dey
|
||||||
bpl .3
|
bpl .3
|
||||||
@ -126,171 +123,12 @@ K.atoi >STYA ZPPtr2
|
|||||||
lda #10 base 10
|
lda #10 base 10
|
||||||
sec signed
|
sec signed
|
||||||
|
|
||||||
jsr STDLIB.GetDec
|
jsr NUM.Dec2ACC32
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>LDYA STDLIB.32
|
>LDYA ACC32
|
||||||
.9 rts
|
.9
|
||||||
*--------------------------------------
|
K.atoi.RTS rts
|
||||||
* Convert Hex int at ZPPtr2 to STDLIB.32
|
|
||||||
*--------------------------------------
|
|
||||||
STDLIB.GetHex lda (ZPPtr2)
|
|
||||||
beq .9
|
|
||||||
|
|
||||||
jsr MEM.IsHexDigit
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
jsr STDLIB.32.Clear
|
|
||||||
|
|
||||||
sta STDLIB.32
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
|
|
||||||
.1 iny
|
|
||||||
lda (ZPPtr2),y
|
|
||||||
beq .8
|
|
||||||
jsr MEM.IsHexDigit
|
|
||||||
bcs .8
|
|
||||||
|
|
||||||
pha
|
|
||||||
|
|
||||||
ldx #4
|
|
||||||
|
|
||||||
.2 jsr STDLIB.32.T2
|
|
||||||
bcs .99 overflow!!!
|
|
||||||
dex
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
pla
|
|
||||||
ora STDLIB.32
|
|
||||||
sta STDLIB.32
|
|
||||||
bra .1
|
|
||||||
|
|
||||||
.8 clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.99 pla
|
|
||||||
.9 sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
* Convert Decimal int at ZPPtr2 to STDLIB.32
|
|
||||||
*--------------------------------------
|
|
||||||
STDLIB.GetDec jsr STDLIB.32.Clear
|
|
||||||
|
|
||||||
clc
|
|
||||||
lda (ZPPtr2)
|
|
||||||
eor #'-'
|
|
||||||
bne .10
|
|
||||||
|
|
||||||
jsr MEM.NextCharPtr2 skip '-'
|
|
||||||
sec
|
|
||||||
|
|
||||||
.10 ror .80+1 set pos/neg flag
|
|
||||||
|
|
||||||
ldy #$ff
|
|
||||||
|
|
||||||
.1 iny
|
|
||||||
lda (ZPPtr2),y
|
|
||||||
beq .8
|
|
||||||
|
|
||||||
jsr MEM.IsDigit
|
|
||||||
bcs .8
|
|
||||||
|
|
||||||
phy Save Y, pointing to next char
|
|
||||||
jsr STDLIB.32.T10
|
|
||||||
ply
|
|
||||||
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
lda (ZPPtr2),y
|
|
||||||
and #$0F
|
|
||||||
|
|
||||||
* clc
|
|
||||||
|
|
||||||
adc STDLIB.32
|
|
||||||
sta STDLIB.32
|
|
||||||
bcc .1
|
|
||||||
inc STDLIB.32+1
|
|
||||||
bne .1
|
|
||||||
inc STDLIB.32+2
|
|
||||||
bne .1
|
|
||||||
inc STDLIB.32+3
|
|
||||||
bne .1 if 0, overflow!!!
|
|
||||||
|
|
||||||
.9 lda #E.INUM
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
|
|
||||||
.8 tya no digit parsed...error
|
|
||||||
beq .9
|
|
||||||
|
|
||||||
.80 lda #$FF SELF MODIFIED
|
|
||||||
bpl .88
|
|
||||||
|
|
||||||
ldx #4
|
|
||||||
ldy #0
|
|
||||||
|
|
||||||
sec
|
|
||||||
|
|
||||||
.81 lda STDLIB.32,y
|
|
||||||
eor #$ff
|
|
||||||
adc #0
|
|
||||||
sta STDLIB.32,y
|
|
||||||
iny
|
|
||||||
dex
|
|
||||||
bne .81
|
|
||||||
|
|
||||||
.88 clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
STDLIB.32.T10 ldx #3
|
|
||||||
|
|
||||||
.1 lda STDLIB.32,x save STDLIB.32 for 4+1
|
|
||||||
pha
|
|
||||||
dex
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
jsr STDLIB.32.T2 STDLIB.32 * 2 -> STDLIB.32
|
|
||||||
bcs STDLIB.32.9 overflow!!!
|
|
||||||
|
|
||||||
jsr STDLIB.32.T2 STDLIB.32 * 4 -> STDLIB.32
|
|
||||||
bcs STDLIB.32.9 overflow!!!
|
|
||||||
|
|
||||||
ldx #0
|
|
||||||
ldy #4
|
|
||||||
|
|
||||||
* clc
|
|
||||||
|
|
||||||
.2 pla STDLIB.32 * 4 + STDLIB.32 -> STDLIB.32
|
|
||||||
adc STDLIB.32,x
|
|
||||||
sta STDLIB.32,x
|
|
||||||
inx
|
|
||||||
dey
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
bcs STDLIB.32.RTS overflow!!!
|
|
||||||
|
|
||||||
* STDLIB.32 * 2 -> STDLIB.32
|
|
||||||
|
|
||||||
STDLIB.32.T2 asl STDLIB.32
|
|
||||||
rol STDLIB.32+1
|
|
||||||
rol STDLIB.32+2
|
|
||||||
rol STDLIB.32+3
|
|
||||||
rts if CS, overflow!!!
|
|
||||||
|
|
||||||
STDLIB.32.9 pla discard saved STDLIB.32
|
|
||||||
pla
|
|
||||||
pla
|
|
||||||
pla
|
|
||||||
|
|
||||||
STDLIB.32.RTS rts
|
|
||||||
*--------------------------------------
|
|
||||||
STDLIB.32.Clear ldx #3
|
|
||||||
|
|
||||||
.1 stz STDLIB.32,x
|
|
||||||
dex
|
|
||||||
bpl .1
|
|
||||||
rts
|
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # RealPath
|
* # RealPath
|
||||||
* Return the canonicalized absolute pathname
|
* Return the canonicalized absolute pathname
|
||||||
@ -315,7 +153,7 @@ STDLIB.realpath.I
|
|||||||
|
|
||||||
ldx #SYS.ExpandStr
|
ldx #SYS.ExpandStr
|
||||||
jsr K.SYSCALL2.BANK
|
jsr K.SYSCALL2.BANK
|
||||||
bcs STDLIB.32.RTS
|
bcs K.atoi.RTS
|
||||||
|
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
stx .99+1 save expanded buffer hMem
|
stx .99+1 save expanded buffer hMem
|
||||||
|
@ -1133,11 +1133,11 @@ DRV.TERM.CURBLNK.SET
|
|||||||
DRV.TERM.CURBLNK.RTS
|
DRV.TERM.CURBLNK.RTS
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Decimal.Out jsr MEM.Byte2Str102
|
Decimal.Out jsr NUM.A2STR10NP
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
|
|
||||||
.1 lda $102,x
|
.1 lda A2osX.NumStrBuf,x
|
||||||
|
|
||||||
beq DRV.TERM.CURBLNK.RTS
|
beq DRV.TERM.CURBLNK.RTS
|
||||||
|
|
||||||
|
@ -11,11 +11,6 @@ DAY0 .EQ 4 day 0 was a thursday
|
|||||||
.DUMMY
|
.DUMMY
|
||||||
.OR ZPTMP
|
.OR ZPTMP
|
||||||
TIME.DWORD .BS 4
|
TIME.DWORD .BS 4
|
||||||
TIME.DivDay .BS 2
|
|
||||||
TIME.ModDay .BS 3
|
|
||||||
TIME.Div60 .BS 2
|
|
||||||
TIME.Mod .BS 1
|
|
||||||
TIME.Div3600 .BS 1
|
|
||||||
TIME.Century .BS 1
|
TIME.Century .BS 1
|
||||||
TIME.Year .BS 1
|
TIME.Year .BS 1
|
||||||
.ED
|
.ED
|
||||||
@ -95,7 +90,7 @@ TIME.PTime2TimeP1P2
|
|||||||
|
|
||||||
* 1/1/1970 was Thursday...if not leap, add one, if leap add 2
|
* 1/1/1970 was Thursday...if not leap, add one, if leap add 2
|
||||||
|
|
||||||
K.ComputeWDAY lda #3 Thursday : 4 (-1 for mod 7)
|
K.ComputeWDAY lda #DAY0-1 Thursday : 4 (-1 for mod 7)
|
||||||
pha
|
pha
|
||||||
lda #19
|
lda #19
|
||||||
sta TIME.DWORD
|
sta TIME.DWORD
|
||||||
@ -182,134 +177,43 @@ K.CTime2Time jsr MEM.SPtr1PPtr2
|
|||||||
ldy #3
|
ldy #3
|
||||||
|
|
||||||
.1 lda (ZPPtr1),y
|
.1 lda (ZPPtr1),y
|
||||||
sta TIME.DWORD,y
|
sta ARG32,y ARG = ctime
|
||||||
dey
|
dey
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
stz TIME.DivDay
|
lda #SECSDAY ACC = SECSDAY
|
||||||
stz TIME.DivDay+1
|
sta ACC32
|
||||||
|
|
||||||
.2 lda TIME.DWORD
|
lda /SECSDAY
|
||||||
sta TIME.ModDay
|
sta ACC32+1
|
||||||
sec
|
|
||||||
sbc #SECSDAY
|
|
||||||
pha
|
|
||||||
|
|
||||||
lda TIME.DWORD+1
|
lda ^SECSDAY
|
||||||
sta TIME.ModDay+1
|
sta ACC32+2
|
||||||
sbc /SECSDAY
|
|
||||||
pha
|
|
||||||
|
|
||||||
lda TIME.DWORD+2
|
stz ACC32+3
|
||||||
sta TIME.ModDay+2
|
|
||||||
sbc ^SECSDAY
|
|
||||||
pha
|
|
||||||
|
|
||||||
lda TIME.DWORD+3
|
jsr NUM.DIVMOD32 ARG32 = Days, TMP32 = remaining secs
|
||||||
sbc #0
|
|
||||||
bcc .3 end of DIV/MOD ?
|
|
||||||
|
|
||||||
sta TIME.DWORD+3
|
lda ARG32 WDAY computation : (ARG32 + DAY0) mod 7
|
||||||
|
|
||||||
ldx #2
|
|
||||||
|
|
||||||
.21 pla
|
|
||||||
sta TIME.DWORD,x
|
|
||||||
dex
|
|
||||||
bpl .21
|
|
||||||
|
|
||||||
inc TIME.DivDay
|
|
||||||
bne .2
|
|
||||||
inc TIME.DivDay+1
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
.3 pla
|
|
||||||
pla
|
|
||||||
pla
|
|
||||||
stz TIME.Div60
|
|
||||||
stz TIME.Div60+1
|
|
||||||
|
|
||||||
.4 lda TIME.ModDay
|
|
||||||
sta TIME.Mod
|
|
||||||
sec
|
|
||||||
sbc #60
|
|
||||||
pha
|
|
||||||
|
|
||||||
lda TIME.ModDay+1
|
|
||||||
sbc #0
|
|
||||||
pha
|
|
||||||
|
|
||||||
lda TIME.ModDay+2
|
|
||||||
sbc #0
|
|
||||||
|
|
||||||
bcc .5
|
|
||||||
|
|
||||||
sta TIME.ModDay+2
|
|
||||||
pla
|
|
||||||
sta TIME.ModDay+1
|
|
||||||
pla
|
|
||||||
sta TIME.ModDay
|
|
||||||
|
|
||||||
inc TIME.Div60
|
|
||||||
bne .4
|
|
||||||
inc TIME.Div60+1
|
|
||||||
bne .4
|
|
||||||
|
|
||||||
.5 pla
|
|
||||||
pla
|
|
||||||
lda TIME.Mod
|
|
||||||
ldy #S.Time.SECOND
|
|
||||||
sta (ZPPtr2),y
|
|
||||||
|
|
||||||
stz TIME.Div3600
|
|
||||||
|
|
||||||
.6 lda TIME.Div60
|
|
||||||
sta TIME.Mod
|
|
||||||
sec
|
|
||||||
sbc #60
|
|
||||||
pha
|
|
||||||
|
|
||||||
lda TIME.Div60+1
|
|
||||||
sbc #0
|
|
||||||
pha
|
|
||||||
|
|
||||||
bcc .7
|
|
||||||
|
|
||||||
sta TIME.Div60+1
|
|
||||||
pla
|
|
||||||
sta TIME.Div60
|
|
||||||
|
|
||||||
inc TIME.Div3600
|
|
||||||
bne .6
|
|
||||||
|
|
||||||
.7 pla
|
|
||||||
|
|
||||||
lda TIME.Mod
|
|
||||||
dey ldy #S.Time.MINUTE
|
|
||||||
sta (ZPPtr2),y
|
|
||||||
|
|
||||||
lda TIME.Div3600
|
|
||||||
dey ldy #S.Time.HOUR
|
|
||||||
sta (ZPPtr2),y
|
|
||||||
|
|
||||||
lda TIME.DivDay WDAY computation : (DivDay + DAY0) mod 7
|
|
||||||
clc
|
clc
|
||||||
adc #DAY0
|
adc #DAY0
|
||||||
pha
|
pha
|
||||||
lda TIME.DivDay+1
|
|
||||||
|
lda ARG32+1 65535 days = 179 years
|
||||||
adc /DAY0
|
adc /DAY0
|
||||||
eor #$ff
|
eor #$ff
|
||||||
tax
|
tax
|
||||||
|
|
||||||
pla
|
pla
|
||||||
|
|
||||||
.8 sta TIME.Mod
|
.2 tay
|
||||||
sec
|
sec
|
||||||
sbc #7
|
sbc #7
|
||||||
bcs .8
|
bcs .2
|
||||||
inx
|
inx
|
||||||
bne .8
|
bne .2
|
||||||
|
|
||||||
lda TIME.Mod
|
tya
|
||||||
ldy #S.Time.WDAY
|
ldy #S.Time.WDAY
|
||||||
sta (ZPPtr2),y
|
sta (ZPPtr2),y
|
||||||
|
|
||||||
@ -319,6 +223,7 @@ K.CTime2Time jsr MEM.SPtr1PPtr2
|
|||||||
sta TIME.Year
|
sta TIME.Year
|
||||||
|
|
||||||
K.CTime2Time.Year
|
K.CTime2Time.Year
|
||||||
|
|
||||||
.1 ldy TIME.Century
|
.1 ldy TIME.Century
|
||||||
lda TIME.Year
|
lda TIME.Year
|
||||||
jsr TIME.IsLeapYearYA if Leap year CS
|
jsr TIME.IsLeapYearYA if Leap year CS
|
||||||
@ -328,16 +233,16 @@ K.CTime2Time.Year
|
|||||||
eor #1
|
eor #1
|
||||||
lsr
|
lsr
|
||||||
|
|
||||||
lda TIME.DivDay
|
lda ARG32
|
||||||
sbc #365
|
sbc #365
|
||||||
pha
|
pha
|
||||||
lda TIME.DivDay+1
|
lda ARG32+1
|
||||||
sbc /365
|
sbc /365
|
||||||
bcc .2
|
bcc .2
|
||||||
|
|
||||||
sta TIME.DivDay+1
|
sta ARG32+1
|
||||||
pla
|
pla
|
||||||
sta TIME.DivDay
|
sta ARG32
|
||||||
|
|
||||||
inc TIME.Year
|
inc TIME.Year
|
||||||
lda TIME.Year
|
lda TIME.Year
|
||||||
@ -348,13 +253,46 @@ K.CTime2Time.Year
|
|||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
.2 pla
|
.2 pla
|
||||||
|
|
||||||
lda TIME.Century
|
lda TIME.Century
|
||||||
* ldy #S.Time.CENTURY
|
* ldy #S.Time.CENTURY
|
||||||
sta (ZPPtr2)
|
sta (ZPPtr2)
|
||||||
|
|
||||||
ldy #S.Time.YEAR
|
ldy #S.Time.YEAR
|
||||||
lda TIME.Year
|
lda TIME.Year
|
||||||
sta (ZPPtr2),y
|
sta (ZPPtr2),y
|
||||||
|
|
||||||
|
K.CTime2Time.HMS
|
||||||
|
|
||||||
|
ldx #3
|
||||||
|
|
||||||
|
.1 lda TMP32,x
|
||||||
|
sta ARG32,x
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
lda #60
|
||||||
|
jsr NUM.A2ACC32
|
||||||
|
|
||||||
|
jsr NUM.DIVMOD32
|
||||||
|
|
||||||
|
ldy #S.TIME.SECOND
|
||||||
|
lda TMP32
|
||||||
|
sta (ZPPtr2),y
|
||||||
|
|
||||||
|
lda #60
|
||||||
|
jsr NUM.A2ACC32
|
||||||
|
|
||||||
|
jsr NUM.DIVMOD32
|
||||||
|
|
||||||
|
ldy #S.TIME.MINUTE
|
||||||
|
lda TMP32
|
||||||
|
sta (ZPPtr2),y
|
||||||
|
|
||||||
|
ldy #S.TIME.HOUR
|
||||||
|
lda ARG32
|
||||||
|
sta (ZPPtr2),y
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -559,17 +497,14 @@ K.StrFTime.MM ldy #S.Time.MINUTE
|
|||||||
K.StrFTime.addDecPtr1Y
|
K.StrFTime.addDecPtr1Y
|
||||||
lda (ZPPtr3),y
|
lda (ZPPtr3),y
|
||||||
K.StrFTime.addDecA
|
K.StrFTime.addDecA
|
||||||
jsr MEM.Byte2Str102
|
ldx #2
|
||||||
|
ldy #'0'
|
||||||
|
clc
|
||||||
|
jsr NUM.A2STR10
|
||||||
|
|
||||||
lda $102
|
lda A2osX.NumStrBuf
|
||||||
ldx $103
|
jsr MEM.PutCharPtr1
|
||||||
|
lda A2osX.NumStrBuf+1
|
||||||
bne .1
|
|
||||||
tax
|
|
||||||
lda #$30
|
|
||||||
|
|
||||||
.1 jsr MEM.PutCharPtr1
|
|
||||||
txa
|
|
||||||
jmp MEM.PutCharPtr1
|
jmp MEM.PutCharPtr1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.StrFTime.DAY >PSTR "Monday"
|
K.StrFTime.DAY >PSTR "Monday"
|
||||||
|
@ -46,6 +46,7 @@ A2osX.D1 .PH $D000
|
|||||||
.INB USR/SRC/SYS/KERNEL.S.STDIO
|
.INB USR/SRC/SYS/KERNEL.S.STDIO
|
||||||
.INB USR/SRC/SYS/KERNEL.S.STDLIB
|
.INB USR/SRC/SYS/KERNEL.S.STDLIB
|
||||||
.INB USR/SRC/SYS/KERNEL.S.DEV
|
.INB USR/SRC/SYS/KERNEL.S.DEV
|
||||||
|
.INB USR/SRC/SYS/KERNEL.S.FIO
|
||||||
.EP
|
.EP
|
||||||
A2osX.D2 .PH $D000
|
A2osX.D2 .PH $D000
|
||||||
.DA #RRAMWRAMBNK2
|
.DA #RRAMWRAMBNK2
|
||||||
@ -60,11 +61,11 @@ A2osX.E0 .PH $E000
|
|||||||
.INB USR/SRC/SYS/KERNEL.S.JMP
|
.INB USR/SRC/SYS/KERNEL.S.JMP
|
||||||
.INB USR/SRC/SYS/KERNEL.S.IRQ
|
.INB USR/SRC/SYS/KERNEL.S.IRQ
|
||||||
.INB USR/SRC/SYS/KERNEL.S.MEM
|
.INB USR/SRC/SYS/KERNEL.S.MEM
|
||||||
|
.INB USR/SRC/SYS/KERNEL.S.NUM
|
||||||
.INB USR/SRC/SYS/KERNEL.S.TERMLC
|
.INB USR/SRC/SYS/KERNEL.S.TERMLC
|
||||||
********* TMP ***** go to A2osX.D1
|
********* TMP ***** go to A2osX.D1
|
||||||
.INB USR/SRC/SYS/KERNEL.S.PFT
|
.INB USR/SRC/SYS/KERNEL.S.PFT
|
||||||
.INB USR/SRC/SYS/KERNEL.S.IO
|
.INB USR/SRC/SYS/KERNEL.S.IO
|
||||||
.INB USR/SRC/SYS/KERNEL.S.FIO
|
|
||||||
********* TMP ***** go to A2osX.D2
|
********* TMP ***** go to A2osX.D2
|
||||||
.INB USR/SRC/SYS/KERNEL.S.ARG
|
.INB USR/SRC/SYS/KERNEL.S.ARG
|
||||||
.INB USR/SRC/SYS/KERNEL.S.PWD
|
.INB USR/SRC/SYS/KERNEL.S.PWD
|
||||||
|
Loading…
Reference in New Issue
Block a user