mirror of
https://github.com/A2osX/A2osX.git
synced 2024-08-11 23:28:56 +00:00
Kernel 0.93
This commit is contained in:
parent
1de28dea4b
commit
475bbddc25
Binary file not shown.
@ -688,7 +688,7 @@ EXP.OP.MATH .AZ "+"
|
|||||||
.AZ "/"
|
.AZ "/"
|
||||||
.AZ "MOD"
|
.AZ "MOD"
|
||||||
.HS 00
|
.HS 00
|
||||||
EXP.OP.MATH.FPU .DA #0,#2,#6,#10,#14
|
EXP.OP.MATH.FPU .DA #FPU.ADD32,#FPU.SUB32,#FPU.IMUL32,#FPU.IDIV32,#FPU.IMOD32
|
||||||
EXP.OP.LOGIC .AZ "AND"
|
EXP.OP.LOGIC .AZ "AND"
|
||||||
.AZ "OR"
|
.AZ "OR"
|
||||||
.HS 00
|
.HS 00
|
||||||
|
@ -269,24 +269,24 @@ SYS.SetEnv .EQ $BA
|
|||||||
SYS.GetEnv .EQ $BC
|
SYS.GetEnv .EQ $BC
|
||||||
SYS.UnsetEnv .EQ $BE
|
SYS.UnsetEnv .EQ $BE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SYS.FAdd .EQ $C0
|
*SYS.FAdd .EQ $C0
|
||||||
SYS.FSub .EQ $C2
|
*SYS.FSub .EQ $C2
|
||||||
SYS.FMult .EQ $C4
|
*SYS.FMult .EQ $C4
|
||||||
SYS.FDiv .EQ $C6
|
*SYS.FDiv .EQ $C6
|
||||||
|
|
||||||
SYS.FPwr .EQ $C8
|
*SYS.FPwr .EQ $C8
|
||||||
* .EQ $CA
|
* .EQ $CA
|
||||||
SYS.LRIntF .EQ $CC
|
SYS.LRIntF .EQ $CC
|
||||||
SYS.Float .EQ $CE
|
SYS.Float .EQ $CE
|
||||||
|
|
||||||
SYS.Log .EQ $D0
|
*SYS.Log .EQ $D0
|
||||||
SYS.Sqr .EQ $D2
|
*SYS.Sqr .EQ $D2
|
||||||
SYS.Exp .EQ $D4
|
*SYS.Exp .EQ $D4
|
||||||
SYS.Cos .EQ $D6
|
*SYS.Cos .EQ $D6
|
||||||
|
|
||||||
SYS.Sin .EQ $D8
|
*SYS.Sin .EQ $D8
|
||||||
SYS.Tan .EQ $DA
|
*SYS.Tan .EQ $DA
|
||||||
SYS.ATan .EQ $DC
|
*SYS.ATan .EQ $DC
|
||||||
* .EQ $DF
|
* .EQ $DF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SYS.GetMem .EQ $E0
|
SYS.GetMem .EQ $E0
|
||||||
|
@ -117,45 +117,45 @@ NEW
|
|||||||
jsr GP.MLICall
|
jsr GP.MLICall
|
||||||
.EM
|
.EM
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* FPU
|
* FPU Entry Point
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.MA ADD32
|
FPU.ADD32 .EQ 0
|
||||||
ldx #0
|
FPU.SUB32 .EQ 2
|
||||||
jsr A2osX.FpuCall
|
FPU.MUL32 .EQ 4
|
||||||
.EM
|
FPU.IMUL32 .EQ 6
|
||||||
|
FPU.DIV32 .EQ 8
|
||||||
|
FPU.IDIV32 .EQ 10
|
||||||
|
FPU.MOD32 .EQ 12
|
||||||
|
FPU.IMOD32 .EQ 14
|
||||||
|
|
||||||
|
FPU.FSUB .EQ 16
|
||||||
|
FPU.FADD .EQ 18
|
||||||
|
FPU.FMULT .EQ 20
|
||||||
|
FPU.FDIV .EQ 22
|
||||||
|
FPU.PWR .EQ 24
|
||||||
|
|
||||||
|
FPU.LOG .EQ 26
|
||||||
|
FPU.SQR .EQ 28
|
||||||
|
FPU.EXP .EQ 30
|
||||||
|
FPU.COS .EQ 32
|
||||||
|
FPU.SIN .EQ 34
|
||||||
|
FPU.TAN .EQ 36
|
||||||
|
FPU.ATAN .EQ 38
|
||||||
|
|
||||||
|
FPU.SETARG .EQ 40
|
||||||
|
FPU.SETFAC .EQ 42
|
||||||
|
|
||||||
|
FPU.GETFAC .EQ 44 Copy FAC to (FORPNT)
|
||||||
|
FPU.FCOMP .EQ 46
|
||||||
|
|
||||||
|
FPU.LTOF .EQ 48
|
||||||
|
FPU.QINT .EQ 50
|
||||||
|
|
||||||
|
FPU.FIN .EQ 52
|
||||||
|
FPU.FOUT .EQ 54
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.MA SUB32
|
.MA FPU
|
||||||
ldx #2
|
ldx #FPU.]1
|
||||||
jsr A2osX.FpuCall
|
|
||||||
.EM
|
|
||||||
*--------------------------------------
|
|
||||||
.MA MUL32
|
|
||||||
ldx #4
|
|
||||||
jsr A2osX.FpuCall
|
|
||||||
.EM
|
|
||||||
*--------------------------------------
|
|
||||||
.MA IMUL32
|
|
||||||
ldx #6
|
|
||||||
jsr A2osX.FpuCall
|
|
||||||
.EM
|
|
||||||
*--------------------------------------
|
|
||||||
.MA DIV32
|
|
||||||
ldx #8
|
|
||||||
jsr A2osX.FpuCall
|
|
||||||
.EM
|
|
||||||
*--------------------------------------
|
|
||||||
.MA IDIV32
|
|
||||||
ldx #10
|
|
||||||
jsr A2osX.FpuCall
|
|
||||||
.EM
|
|
||||||
*--------------------------------------
|
|
||||||
.MA MOD32
|
|
||||||
ldx #12
|
|
||||||
jsr A2osX.FpuCall
|
|
||||||
.EM
|
|
||||||
*--------------------------------------
|
|
||||||
.MA IMOD32
|
|
||||||
ldx #14
|
|
||||||
jsr A2osX.FpuCall
|
jsr A2osX.FpuCall
|
||||||
.EM
|
.EM
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -1,212 +0,0 @@
|
|||||||
NEW
|
|
||||||
AUTO 3,1
|
|
||||||
.LIST OFF
|
|
||||||
*--------------------------------------
|
|
||||||
* Uses: 12 ZP
|
|
||||||
* M32.ACC .BS 4
|
|
||||||
* M32.ARG .BS 4
|
|
||||||
* M32.TMP .BS 4
|
|
||||||
*--------------------------------------
|
|
||||||
M32.Add ldx #4
|
|
||||||
ldy #0
|
|
||||||
|
|
||||||
clc ARG+ACC->ACC
|
|
||||||
|
|
||||||
.1 lda M32.ARG,y
|
|
||||||
adc M32.ACC,y
|
|
||||||
sta M32.ACC,y
|
|
||||||
iny
|
|
||||||
dex
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
clc
|
|
||||||
rts if CS, Overflow
|
|
||||||
*---------------------------------------
|
|
||||||
M32.Sub ldx #4
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
|
|
||||||
sec ARG-ACC->ACC
|
|
||||||
|
|
||||||
.1 lda M32.ARG,y
|
|
||||||
sbc M32.ACC,y
|
|
||||||
sta M32.ACC,y
|
|
||||||
iny
|
|
||||||
dex
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
bcs .8 if CC, Overflow
|
|
||||||
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
|
|
||||||
.8 clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
M32.Mul ldx #3 ARG*ACC->ACC
|
|
||||||
|
|
||||||
.1 lda M32.ACC,x
|
|
||||||
sta M32.TMP,x
|
|
||||||
stz M32.ACC,x
|
|
||||||
dex
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
ldx #32
|
|
||||||
|
|
||||||
.2 lsr M32.TMP+3
|
|
||||||
ror M32.TMP+2
|
|
||||||
ror M32.TMP+1
|
|
||||||
ror M32.TMP
|
|
||||||
|
|
||||||
bcc .3
|
|
||||||
|
|
||||||
clc
|
|
||||||
lda M32.ARG
|
|
||||||
adc M32.ACC
|
|
||||||
sta M32.ACC
|
|
||||||
|
|
||||||
lda M32.ARG+1
|
|
||||||
adc M32.ACC+1
|
|
||||||
sta M32.ACC+1
|
|
||||||
|
|
||||||
lda M32.ARG+2
|
|
||||||
adc M32.ACC+2
|
|
||||||
sta M32.ACC+2
|
|
||||||
|
|
||||||
lda M32.ARG+3
|
|
||||||
adc M32.ACC+3
|
|
||||||
sta M32.ACC+3
|
|
||||||
|
|
||||||
.3 asl M32.ARG
|
|
||||||
rol M32.ARG+1
|
|
||||||
rol M32.ARG+2
|
|
||||||
rol M32.ARG+3
|
|
||||||
|
|
||||||
dex
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
M32.Mod sec
|
|
||||||
.HS 90 BCC
|
|
||||||
*--------------------------------------
|
|
||||||
M32.Div clc
|
|
||||||
php
|
|
||||||
|
|
||||||
stz M32.TMP ARG/ACC->ACC
|
|
||||||
stz M32.TMP+1
|
|
||||||
stz M32.TMP+2
|
|
||||||
stz M32.TMP+3
|
|
||||||
|
|
||||||
ldx #32
|
|
||||||
|
|
||||||
.1 asl M32.ARG
|
|
||||||
rol M32.ARG+1
|
|
||||||
rol M32.ARG+2
|
|
||||||
rol M32.ARG+3
|
|
||||||
|
|
||||||
rol M32.TMP
|
|
||||||
rol M32.TMP+1
|
|
||||||
rol M32.TMP+2
|
|
||||||
rol M32.TMP+3
|
|
||||||
|
|
||||||
sec
|
|
||||||
|
|
||||||
lda M32.TMP
|
|
||||||
sbc M32.ACC
|
|
||||||
pha
|
|
||||||
lda M32.TMP+1
|
|
||||||
sbc M32.ACC+1
|
|
||||||
pha
|
|
||||||
lda M32.TMP+2
|
|
||||||
sbc M32.ACC+2
|
|
||||||
pha
|
|
||||||
lda M32.TMP+3
|
|
||||||
sbc M32.ACC+3
|
|
||||||
bcs .2
|
|
||||||
|
|
||||||
pla
|
|
||||||
pla
|
|
||||||
pla
|
|
||||||
|
|
||||||
dex
|
|
||||||
bne .1
|
|
||||||
bra .3
|
|
||||||
|
|
||||||
.2 sta M32.TMP+3
|
|
||||||
pla
|
|
||||||
sta M32.TMP+2
|
|
||||||
pla
|
|
||||||
sta M32.TMP+1
|
|
||||||
pla
|
|
||||||
sta M32.TMP
|
|
||||||
|
|
||||||
inc M32.ARG bit0 always 0 because of .1 asl
|
|
||||||
|
|
||||||
dex
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
.3 plp
|
|
||||||
ldx #3
|
|
||||||
|
|
||||||
ldy #M32.ARG+3
|
|
||||||
bcc .4
|
|
||||||
ldy #M32.TMP+3
|
|
||||||
clc
|
|
||||||
|
|
||||||
.4 lda $0,y
|
|
||||||
sta M32.ACC,x
|
|
||||||
dey
|
|
||||||
dex
|
|
||||||
bpl .4
|
|
||||||
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
M32.ACC2ARG ldx #3 ACC->ARG
|
|
||||||
|
|
||||||
.1 lda M32.ACC,x
|
|
||||||
sta M32.ARG,x
|
|
||||||
dex
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
M32.Cmp ldx #4
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
|
|
||||||
sec
|
|
||||||
|
|
||||||
.1 lda M32.ARG,y
|
|
||||||
sbc M32.ACC,y
|
|
||||||
sta M32.ACC,y
|
|
||||||
iny
|
|
||||||
dex
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
bcc .5 CC if ACC < ARG
|
|
||||||
|
|
||||||
lda M32.ACC
|
|
||||||
ora M32.ACC+1
|
|
||||||
ora M32.ACC+2
|
|
||||||
ora M32.ACC+3 Z if ACC = ARG
|
|
||||||
|
|
||||||
bne .4
|
|
||||||
|
|
||||||
lda #%010 010 ACC = ARG
|
|
||||||
rts
|
|
||||||
|
|
||||||
.4 lda #%100 100 ACC > ARG
|
|
||||||
rts
|
|
||||||
|
|
||||||
.5 lda #%001 001 ACC < ARG
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
MAN
|
|
||||||
SAVE USR/SRC/SHARED/X.M32.S
|
|
||||||
LOAD USR/SRC/BIN/SH.S
|
|
||||||
ASM
|
|
@ -1,216 +0,0 @@
|
|||||||
NEW
|
|
||||||
AUTO 3,1
|
|
||||||
.LIST OFF
|
|
||||||
*--------------------------------------
|
|
||||||
* Uses: 12 ZP
|
|
||||||
* M32.ACC .BS 4
|
|
||||||
* M32.ARG .BS 4
|
|
||||||
* M32.TMP .BS 4
|
|
||||||
*--------------------------------------
|
|
||||||
* TODO : Make it SIGNED 32 bits, with OVERVLOW detection
|
|
||||||
* http://6502.org/source/integers/32muldiv.htm
|
|
||||||
* http://nparker.llx.com/a2/mult.html
|
|
||||||
*--------------------------------------
|
|
||||||
M32.Add ldx #4
|
|
||||||
ldy #0
|
|
||||||
|
|
||||||
clc ARG+ACC->ACC
|
|
||||||
|
|
||||||
.1 lda M32.ARG,y
|
|
||||||
adc M32.ACC,y
|
|
||||||
sta M32.ACC,y
|
|
||||||
iny
|
|
||||||
dex
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
clc
|
|
||||||
rts if CS, Overflow
|
|
||||||
*---------------------------------------
|
|
||||||
M32.Sub ldx #4
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
|
|
||||||
sec ARG-ACC->ACC
|
|
||||||
|
|
||||||
.1 lda M32.ARG,y
|
|
||||||
sbc M32.ACC,y
|
|
||||||
sta M32.ACC,y
|
|
||||||
iny
|
|
||||||
dex
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
bcs .8 if CC, Overflow
|
|
||||||
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
|
|
||||||
.8 clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
M32.Mul ldx #3 ARG*ACC->ACC
|
|
||||||
|
|
||||||
.1 lda M32.ACC,x
|
|
||||||
sta M32.TMP,x
|
|
||||||
stz M32.ACC,x
|
|
||||||
dex
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
ldx #32
|
|
||||||
|
|
||||||
.2 lsr M32.TMP+3
|
|
||||||
ror M32.TMP+2
|
|
||||||
ror M32.TMP+1
|
|
||||||
ror M32.TMP
|
|
||||||
|
|
||||||
bcc .3
|
|
||||||
|
|
||||||
clc
|
|
||||||
lda M32.ARG
|
|
||||||
adc M32.ACC
|
|
||||||
sta M32.ACC
|
|
||||||
|
|
||||||
lda M32.ARG+1
|
|
||||||
adc M32.ACC+1
|
|
||||||
sta M32.ACC+1
|
|
||||||
|
|
||||||
lda M32.ARG+2
|
|
||||||
adc M32.ACC+2
|
|
||||||
sta M32.ACC+2
|
|
||||||
|
|
||||||
lda M32.ARG+3
|
|
||||||
adc M32.ACC+3
|
|
||||||
sta M32.ACC+3
|
|
||||||
|
|
||||||
.3 asl M32.ARG
|
|
||||||
rol M32.ARG+1
|
|
||||||
rol M32.ARG+2
|
|
||||||
rol M32.ARG+3
|
|
||||||
|
|
||||||
dex
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
M32.Mod sec
|
|
||||||
.HS 90 BCC
|
|
||||||
*--------------------------------------
|
|
||||||
M32.Div clc
|
|
||||||
php
|
|
||||||
|
|
||||||
stz M32.TMP ARG/ACC->ACC
|
|
||||||
stz M32.TMP+1
|
|
||||||
stz M32.TMP+2
|
|
||||||
stz M32.TMP+3
|
|
||||||
|
|
||||||
ldx #32
|
|
||||||
|
|
||||||
.1 asl M32.ARG
|
|
||||||
rol M32.ARG+1
|
|
||||||
rol M32.ARG+2
|
|
||||||
rol M32.ARG+3
|
|
||||||
|
|
||||||
rol M32.TMP
|
|
||||||
rol M32.TMP+1
|
|
||||||
rol M32.TMP+2
|
|
||||||
rol M32.TMP+3
|
|
||||||
|
|
||||||
sec
|
|
||||||
|
|
||||||
lda M32.TMP
|
|
||||||
sbc M32.ACC
|
|
||||||
pha
|
|
||||||
lda M32.TMP+1
|
|
||||||
sbc M32.ACC+1
|
|
||||||
pha
|
|
||||||
lda M32.TMP+2
|
|
||||||
sbc M32.ACC+2
|
|
||||||
pha
|
|
||||||
lda M32.TMP+3
|
|
||||||
sbc M32.ACC+3
|
|
||||||
bcs .2
|
|
||||||
|
|
||||||
pla
|
|
||||||
pla
|
|
||||||
pla
|
|
||||||
|
|
||||||
dex
|
|
||||||
bne .1
|
|
||||||
bra .3
|
|
||||||
|
|
||||||
.2 sta M32.TMP+3
|
|
||||||
pla
|
|
||||||
sta M32.TMP+2
|
|
||||||
pla
|
|
||||||
sta M32.TMP+1
|
|
||||||
pla
|
|
||||||
sta M32.TMP
|
|
||||||
|
|
||||||
inc M32.ARG bit0 always 0 because of .1 asl
|
|
||||||
|
|
||||||
dex
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
.3 plp
|
|
||||||
ldx #3
|
|
||||||
|
|
||||||
ldy #M32.ARG+3
|
|
||||||
bcc .4
|
|
||||||
ldy #M32.TMP+3
|
|
||||||
clc
|
|
||||||
|
|
||||||
.4 lda $0,y
|
|
||||||
sta M32.ACC,x
|
|
||||||
dey
|
|
||||||
dex
|
|
||||||
bpl .4
|
|
||||||
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
M32.ACC2ARG ldx #3 ACC->ARG
|
|
||||||
|
|
||||||
.1 lda M32.ACC,x
|
|
||||||
sta M32.ARG,x
|
|
||||||
dex
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
M32.Cmp ldx #4
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
|
|
||||||
sec
|
|
||||||
|
|
||||||
.1 lda M32.ARG,y
|
|
||||||
sbc M32.ACC,y
|
|
||||||
sta M32.ACC,y
|
|
||||||
iny
|
|
||||||
dex
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
bcc .5 CC if ACC < ARG
|
|
||||||
|
|
||||||
lda M32.ACC
|
|
||||||
ora M32.ACC+1
|
|
||||||
ora M32.ACC+2
|
|
||||||
ora M32.ACC+3 Z if ACC = ARG
|
|
||||||
|
|
||||||
bne .4
|
|
||||||
|
|
||||||
lda #%010 010 ACC = ARG
|
|
||||||
rts
|
|
||||||
|
|
||||||
.4 lda #%100 100 ACC > ARG
|
|
||||||
rts
|
|
||||||
|
|
||||||
.5 lda #%001 001 ACC < ARG
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
MAN
|
|
||||||
SAVE USR/SRC/SHARED/X.M32S.S
|
|
||||||
LOAD USR/SRC/BIN/SH.S
|
|
||||||
ASM
|
|
@ -64,31 +64,6 @@ ARG32 .EQ ARG+1
|
|||||||
* CHARGOT .EQ $B7
|
* CHARGOT .EQ $B7
|
||||||
TXTPTR .EQ $B8
|
TXTPTR .EQ $B8
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* ROM Entry Point
|
|
||||||
*--------------------------------------
|
|
||||||
ROM.FSUB .EQ 0
|
|
||||||
ROM.FADD .EQ 2
|
|
||||||
ROM.LTOF .EQ 4
|
|
||||||
ROM.LOG .EQ 6
|
|
||||||
ROM.FMULT .EQ 8
|
|
||||||
ROM.SETARG .EQ 10
|
|
||||||
ROM.FDIV .EQ 12
|
|
||||||
ROM.SETFAC .EQ 14
|
|
||||||
|
|
||||||
ROM.GETFAC .EQ 16 Copy FAC to (FORPNT)
|
|
||||||
ROM.FCOMP .EQ 18
|
|
||||||
ROM.QINT .EQ 20
|
|
||||||
ROM.FIN .EQ 22
|
|
||||||
ROM.FOUT .EQ 24
|
|
||||||
ROM.SQR .EQ 26
|
|
||||||
ROM.PWR .EQ 28
|
|
||||||
ROM.EXP .EQ 30
|
|
||||||
|
|
||||||
ROM.COS .EQ 32
|
|
||||||
ROM.SIN .EQ 34
|
|
||||||
ROM.TAN .EQ 36
|
|
||||||
ROM.ATAN .EQ 38
|
|
||||||
*--------------------------------------
|
|
||||||
* Memory Map
|
* Memory Map
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
A2osX.SaveSM .EQ $100 Aux
|
A2osX.SaveSM .EQ $100 Aux
|
||||||
|
@ -598,7 +598,7 @@ ENV.SysVarsCPID ldy #S.PS.CPID
|
|||||||
|
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
|
|
||||||
ENV.SysVarsNum jsr NUM.A2STR10NP
|
ENV.SysVarsNum jsr MATH.A2STR10NP
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
|
@ -179,76 +179,100 @@ GP.FpuCall dec IRQ.InKernel
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.1 jmp (.2,x)
|
.1 cpx #16 < FADD ?
|
||||||
|
bcc GP.RomCall.JmpX INT32
|
||||||
.2 .DA FPU.ADD32
|
|
||||||
.DA FPU.SUB32
|
|
||||||
.DA FPU.MUL32
|
|
||||||
.DA FPU.IMUL32
|
|
||||||
.DA FPU.DIV32
|
|
||||||
.DA FPU.IDIV32
|
|
||||||
.DA FPU.MOD32
|
|
||||||
.DA FPU.IMOD32
|
|
||||||
*--------------------------------------
|
|
||||||
GP.RomCallPushFAC
|
|
||||||
jsr GP.ROMCALL
|
|
||||||
|
|
||||||
lda pStack
|
|
||||||
sec
|
|
||||||
sbc #5
|
|
||||||
sta pStack
|
|
||||||
sta FORPNT Ptr to dst buffer
|
|
||||||
lda pStack+1
|
|
||||||
sta FORPNT+1
|
|
||||||
|
|
||||||
ldx #ROM.GETFAC
|
|
||||||
*--------------------------------------
|
|
||||||
GP.RomCall dec IRQ.InKernel
|
|
||||||
|
|
||||||
phx
|
phx
|
||||||
|
jsr GP.SetFAC Get float from stack
|
||||||
|
|
||||||
|
plx
|
||||||
|
cpx #26 > FPWR ?
|
||||||
|
bcs .2
|
||||||
|
*--------------------------------------
|
||||||
|
* FADD -> FPWR : 2 * float
|
||||||
|
*--------------------------------------
|
||||||
|
lda pStack
|
||||||
|
clc
|
||||||
|
adc #5
|
||||||
|
sta pStack
|
||||||
|
|
||||||
|
phx
|
||||||
|
jsr GP.SetARG
|
||||||
|
plx
|
||||||
|
*--------------------------------------
|
||||||
|
* LOG -> ATAN : 1 * float
|
||||||
|
*--------------------------------------
|
||||||
|
.2 jsr GP.ROMCALL
|
||||||
|
|
||||||
|
GP.GETFAC.ON.STACK
|
||||||
|
lda pStack
|
||||||
|
ldy pStack+1
|
||||||
|
|
||||||
|
sta FORPNT Ptr to dst buffer
|
||||||
|
sty FORPNT+1
|
||||||
|
|
||||||
|
ldx #FPU.GETFAC
|
||||||
|
*--------------------------------------
|
||||||
|
GP.RomCall phx
|
||||||
ldx $D000
|
ldx $D000
|
||||||
stx .8+1
|
stx .8+1
|
||||||
|
|
||||||
bit RROMBNK1
|
bit RROMBNK1
|
||||||
|
|
||||||
plx
|
plx
|
||||||
jsr .1
|
jsr GP.RomCall.JmpX
|
||||||
|
|
||||||
.8 ldx #$ff
|
.8 ldx #$ff
|
||||||
bit $C000,x
|
bit $C000,x
|
||||||
bit $C000,x
|
bit $C000,x
|
||||||
|
|
||||||
inc IRQ.InKernel
|
|
||||||
|
|
||||||
clc
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.1 jmp (.2,x)
|
GP.RomCall.JmpX jmp (.1,x)
|
||||||
|
|
||||||
|
.1 .DA MATH.ADD32
|
||||||
|
.DA MATH.SUB32
|
||||||
|
.DA MATH.UMUL32
|
||||||
|
.DA MATH.IMUL32
|
||||||
|
.DA MATH.UDIV32
|
||||||
|
.DA MATH.IDIV32
|
||||||
|
.DA MATH.UMOD32
|
||||||
|
.DA MATH.IMOD32
|
||||||
|
|
||||||
* http://www.txbobsc.com/scsc/scdocumentor/E7A0.html
|
* http://www.txbobsc.com/scsc/scdocumentor/E7A0.html
|
||||||
|
|
||||||
.2 .DA $E7AA FSUBT
|
|
||||||
.DA $E7C1 FADDT
|
.DA $E7C1 FADDT
|
||||||
.DA $E82E NORMALIZE.FAC.2 (L->F)
|
.DA $E7AA FSUBT
|
||||||
.DA $E941 LOG
|
|
||||||
.DA $E987 FMULTT.1
|
.DA $E987 FMULTT.1
|
||||||
.DA $E9E3 LOAD.ARG.FROM.YA
|
|
||||||
.DA $EA6B FDIVT+2
|
.DA $EA6B FDIVT+2
|
||||||
.DA $EAF9 LOAD.FAC.FROM.YA
|
|
||||||
|
|
||||||
.DA $EB27 SETFOR (GETFAC)
|
|
||||||
.DA $EBB2 FCOMP
|
|
||||||
.DA $EBF2 QINT (F->L)
|
|
||||||
.DA $EC4A FIN StrToF
|
|
||||||
.DA $ED36 FOUT.1 PrintF
|
|
||||||
.DA $EE8D SQR
|
|
||||||
.DA $EE97 FPWRT
|
.DA $EE97 FPWRT
|
||||||
.DA $EF09 EXP
|
|
||||||
|
|
||||||
|
.DA $E941 LOG
|
||||||
|
.DA $EE8D SQR
|
||||||
|
.DA $EF09 EXP
|
||||||
.DA $EFEA COS
|
.DA $EFEA COS
|
||||||
.DA $EFF1 SIN
|
.DA $EFF1 SIN
|
||||||
.DA $F03A TAN
|
.DA $F03A TAN
|
||||||
.DA $F09E ATN
|
.DA $F09E ATN
|
||||||
|
|
||||||
|
.DA $E9E3 LOAD.ARG.FROM.YA
|
||||||
|
.DA $EAF9 LOAD.FAC.FROM.YA
|
||||||
|
|
||||||
|
.DA $EB27 SETFOR (GETFAC)
|
||||||
|
.DA $EBB2 FCOMP
|
||||||
|
|
||||||
|
.DA $E82E NORMALIZE.FAC.2 (L->F)
|
||||||
|
.DA $EBF2 QINT (F->L)
|
||||||
|
|
||||||
|
.DA $EC4A FIN AToF
|
||||||
|
.DA $ED36 FOUT.1 PrintF
|
||||||
|
*--------------------------------------
|
||||||
|
GP.SetARG ldx #FPU.SETARG
|
||||||
|
.HS 2C BIT ABS
|
||||||
|
GP.SetFAC ldx #FPU.SETFAC
|
||||||
|
|
||||||
|
>LDYA pStack
|
||||||
|
bra GP.ROMCALL
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
GP.MLICall stx .1
|
GP.MLICall stx .1
|
||||||
sta K.MLI.PARAMS
|
sta K.MLI.PARAMS
|
||||||
@ -358,20 +382,15 @@ CORE.Tick10t .BS 1
|
|||||||
CORE.CPUStatCnt .DA #100
|
CORE.CPUStatCnt .DA #100
|
||||||
CORE.LastPSID .DA #0
|
CORE.LastPSID .DA #0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DevMgr.Stat .DA DevMgr.FreeMem
|
|
||||||
DevMgr.Free .DA DevMgr.FreeMem
|
|
||||||
.DA DevMgr.HiMem
|
|
||||||
DevMgr.DevIdx .DA #1
|
|
||||||
*--------------------------------------
|
|
||||||
IRQ.Mode .BS 1
|
|
||||||
IRQ.SkipA2osX .BS 1
|
|
||||||
IRQ.Tick .BS 1
|
|
||||||
IRQ.InKernel .BS 1
|
IRQ.InKernel .BS 1
|
||||||
IRQ.InLib .BS 1
|
IRQ.InLib .BS 1
|
||||||
|
IRQ.SkipA2osX .BS 1
|
||||||
|
|
||||||
IRQ.IntNum .BS 1
|
IRQ.IntNum .BS 1
|
||||||
IRQ.VBL.n0 .BS 1
|
IRQ.VBL.n0 .BS 1
|
||||||
IRQ.VBL.0n .BS 1
|
IRQ.VBL.0n .BS 1
|
||||||
IRQ.Vectors .BS K.IRQDEV.MAX*2
|
IRQ.Mode .BS 1
|
||||||
|
IRQ.Tick .BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
*GO.Reset jsr GO.A2osX
|
*GO.Reset jsr GO.A2osX
|
||||||
* jmp CORE.Run
|
* jmp CORE.Run
|
||||||
|
@ -234,6 +234,8 @@ K.IrqH.DEV ldx #0
|
|||||||
.8 clv clear V (no task switching)
|
.8 clv clear V (no task switching)
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
IRQ.Vectors .BS K.IRQDEV.MAX*2
|
||||||
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.IRQ
|
SAVE USR/SRC/SYS/KERNEL.S.IRQ
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD USR/SRC/SYS/KERNEL.S
|
||||||
|
@ -115,22 +115,22 @@ K.SYSCALL .DA K.GetMemStat $00
|
|||||||
.DA K.GetEnv
|
.DA K.GetEnv
|
||||||
.DA K.UnsetEnv
|
.DA K.UnsetEnv
|
||||||
|
|
||||||
.DA K.FAdd $C0
|
.DA 0 $C0
|
||||||
.DA K.FSub
|
.DA 0
|
||||||
.DA K.FMult
|
.DA 0
|
||||||
.DA K.FDiv
|
.DA 0
|
||||||
.DA K.FPwr
|
.DA 0
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA K.LRIntF
|
.DA K.LRIntF
|
||||||
.DA K.Float
|
.DA K.Float
|
||||||
|
|
||||||
.DA K.Log $D0
|
.DA 0 $D0
|
||||||
.DA K.Sqr
|
.DA 0
|
||||||
.DA K.Exp
|
.DA 0
|
||||||
.DA K.Cos
|
.DA 0
|
||||||
.DA K.Sin
|
.DA 0
|
||||||
.DA K.Tan
|
.DA 0
|
||||||
.DA K.ATan
|
.DA 0
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* $E000
|
* $E000
|
||||||
|
@ -7,30 +7,14 @@ NEW
|
|||||||
* **In:**
|
* **In:**
|
||||||
* `>PUSHF X (float)`
|
* `>PUSHF X (float)`
|
||||||
* `>PUSHF Y (float)`
|
* `>PUSHF Y (float)`
|
||||||
* `>SYSCALL fadd`
|
* `>FPU fadd`
|
||||||
* `>SYSCALL fsub`
|
* `>FPU fsub`
|
||||||
* `>SYSCALL fmult`
|
* `>FPU fmult`
|
||||||
* `>SYSCALL fdiv`
|
* `>FPU fdiv`
|
||||||
* `>SYSCALL fpwr`
|
* `>FPU fpwr`
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
* On stack (float)
|
* On stack (float)
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.FAdd ldx #ROM.FADD
|
|
||||||
.HS 2C BIT ABS
|
|
||||||
K.FSub ldx #ROM.FSUB
|
|
||||||
.HS 2C BIT ABS
|
|
||||||
K.FMult ldx #ROM.FMULT
|
|
||||||
.HS 2C BIT ABS
|
|
||||||
K.FDiv ldx #ROM.FDIV
|
|
||||||
.HS 2C BIT ABS
|
|
||||||
K.FPwr ldx #ROM.PWR
|
|
||||||
|
|
||||||
phx
|
|
||||||
jsr MATH.PullFAC
|
|
||||||
jsr MATH.PullARG
|
|
||||||
|
|
||||||
plx
|
|
||||||
jmp GP.RomCallPushFAC
|
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # Log,Sqr,Exp,Cos,Sin,Tan,ATan
|
* # Log,Sqr,Exp,Cos,Sin,Tan,ATan
|
||||||
* Return Log(x), Sqr(x), E^X, Cos(x), Sin(X), Tan(x), ATan(x)
|
* Return Log(x), Sqr(x), E^X, Cos(x), Sin(X), Tan(x), ATan(x)
|
||||||
@ -45,29 +29,10 @@ K.FPwr ldx #ROM.PWR
|
|||||||
* ## ASM
|
* ## ASM
|
||||||
* **In:**
|
* **In:**
|
||||||
* `>PUSHF x (Float)`
|
* `>PUSHF x (Float)`
|
||||||
* `>SYSCALL log`
|
* `>FPU log`
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
* On stack (Float)
|
* On stack (Float)
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.Log ldx #ROM.LOG
|
|
||||||
.HS 2C BIT ABS
|
|
||||||
K.Sqr ldx #ROM.SQR
|
|
||||||
.HS 2C BIT ABS
|
|
||||||
K.Exp ldx #ROM.EXP
|
|
||||||
.HS 2C BIT ABS
|
|
||||||
K.Cos ldx #ROM.COS
|
|
||||||
.HS 2C BIT ABS
|
|
||||||
K.Sin ldx #ROM.SIN
|
|
||||||
.HS 2C BIT ABS
|
|
||||||
K.Tan ldx #ROM.TAN
|
|
||||||
.HS 2C BIT ABS
|
|
||||||
K.ATan ldx #ROM.ATAN
|
|
||||||
|
|
||||||
phx
|
|
||||||
jsr MATH.PullFAC
|
|
||||||
|
|
||||||
plx
|
|
||||||
jmp GP.RomCallPushFAC
|
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # float
|
* # float
|
||||||
* Return 'floated' long
|
* Return 'floated' long
|
||||||
@ -89,9 +54,17 @@ K.Float ldx #4
|
|||||||
lda #$A0
|
lda #$A0
|
||||||
sta FAC Exp=32
|
sta FAC Exp=32
|
||||||
|
|
||||||
ldx #ROM.LTOF
|
ldx #FPU.LTOF
|
||||||
|
*--------------------------------------
|
||||||
|
MATH.RomCallPushFAC
|
||||||
|
jsr GP.ROMCALL
|
||||||
|
|
||||||
jmp GP.RomCallPushFAC
|
lda pStack
|
||||||
|
sec
|
||||||
|
sbc #5
|
||||||
|
sta pStack
|
||||||
|
|
||||||
|
jmp GP.GETFAC.ON.STACK
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # lrintf
|
* # lrintf
|
||||||
* Return float rounded into a long
|
* Return float rounded into a long
|
||||||
@ -104,9 +77,17 @@ K.Float ldx #4
|
|||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
* On stack (long)
|
* On stack (long)
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.lrintf jsr MATH.PullFAC
|
K.lrintf ldx #FPU.SETFAC
|
||||||
|
|
||||||
ldx #ROM.QINT
|
>LDYA pStack
|
||||||
|
jsr GP.ROMCALL
|
||||||
|
|
||||||
|
lda pStack
|
||||||
|
clc
|
||||||
|
adc #5
|
||||||
|
sta pStack
|
||||||
|
|
||||||
|
ldx #FPU.QINT
|
||||||
jsr GP.ROMCALL
|
jsr GP.ROMCALL
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
@ -119,17 +100,574 @@ K.lrintf jsr MATH.PullFAC
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MATH.PullARG ldx #ROM.SETARG
|
* http://6502.org/source/integers/32muldiv.htm
|
||||||
.HS 2C BIT ABS
|
* http://nparker.llx.com/a2/mult.html
|
||||||
MATH.PullFAC ldx #ROM.SETFAC
|
*--------------------------------------
|
||||||
|
* >PUSHL ARG
|
||||||
|
* >PUSHL ACC
|
||||||
|
* >FPU ADD32
|
||||||
|
* >PULLL (ARG+ACC)
|
||||||
|
*--------------------------------------
|
||||||
|
MATH.ADD32 clc
|
||||||
|
.HS B0 BCS
|
||||||
|
MATH.SUB32 sec
|
||||||
|
|
||||||
>LDYA pStack
|
php
|
||||||
jsr GP.ROMCALL
|
|
||||||
|
|
||||||
lda pStack
|
jsr MATH.PopACC32
|
||||||
clc
|
|
||||||
adc #5
|
ldy #0
|
||||||
|
ldx #3
|
||||||
|
|
||||||
|
plp
|
||||||
|
bcs .2
|
||||||
|
|
||||||
|
.1 lda (pStack),y
|
||||||
|
adc ACC32,y
|
||||||
|
sta (pStack),y
|
||||||
|
iny
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
.2 lda (pStack),y
|
||||||
|
sbc ACC32,y
|
||||||
|
sta (pStack),y
|
||||||
|
iny
|
||||||
|
dex
|
||||||
|
bpl .2
|
||||||
|
|
||||||
|
MATH.SUB32.RTS rts
|
||||||
|
*--------------------------------------
|
||||||
|
* >PUSHL ARG
|
||||||
|
* >PUSHL ACC
|
||||||
|
* >(I)MUL32
|
||||||
|
* >PULLL (ARG*ACC)
|
||||||
|
*--------------------------------------
|
||||||
|
MATH.UMUL32 clc
|
||||||
|
.HS B0 BCS
|
||||||
|
MATH.IMUL32 sec
|
||||||
|
|
||||||
|
php
|
||||||
|
jsr MATH.MULDIVMOD.COMMON
|
||||||
|
jsr MATH.MUL32
|
||||||
|
|
||||||
|
plp
|
||||||
|
bcc MATH.SUB32.RTS
|
||||||
|
|
||||||
|
MATH.RETURN.ITMP
|
||||||
|
lda ACC32.Sign
|
||||||
|
eor ARG32.Sign
|
||||||
|
bpl MATH.PutTMP32
|
||||||
|
bra MATH.PutNotTMP32
|
||||||
|
*--------------------------------------
|
||||||
|
* >PUSHL ARG
|
||||||
|
* >PUSHL ACC
|
||||||
|
* >(I)DIV32
|
||||||
|
* >PULLL (ARG / ACC)
|
||||||
|
*--------------------------------------
|
||||||
|
* >PUSHL ARG
|
||||||
|
* >PUSHL ACC
|
||||||
|
* >(I)MOD32
|
||||||
|
* >PULLL (ARG mod ACC)
|
||||||
|
*--------------------------------------
|
||||||
|
MATH.UDIV32 clc
|
||||||
|
.HS B0 BCS
|
||||||
|
MATH.IDIV32 sec
|
||||||
|
clv
|
||||||
|
bra MATH.DIVMOD
|
||||||
|
|
||||||
|
MATH.UMOD32 clc
|
||||||
|
.HS B0 BCS
|
||||||
|
MATH.IMOD32 sec
|
||||||
|
bit MATH.SUB32.RTS $60
|
||||||
|
|
||||||
|
MATH.DIVMOD php
|
||||||
|
jsr MATH.MULDIVMOD.COMMON
|
||||||
|
jsr MATH.DIVMOD32
|
||||||
|
|
||||||
|
plp
|
||||||
|
bcc .3
|
||||||
|
bvs MATH.RETURN.ITMP IMOD
|
||||||
|
|
||||||
|
lda ACC32.Sign IDIV
|
||||||
|
eor ARG32.Sign
|
||||||
|
bmi MATH.PutARG32
|
||||||
|
bra MATH.PutNotARG32
|
||||||
|
|
||||||
|
.3 bvs MATH.PutARG32 DIV
|
||||||
|
*--------------------------------------
|
||||||
|
MATH.PutTMP32 ldy #0 MOD
|
||||||
|
ldx #3
|
||||||
|
|
||||||
|
.1 lda TMP32,y
|
||||||
|
sta (pStack),y
|
||||||
|
iny
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
MATH.PutNotTMP32
|
||||||
|
ldy #0
|
||||||
|
ldx #3
|
||||||
|
|
||||||
|
sec
|
||||||
|
|
||||||
|
.1 lda TMP32,y two's complement of X bytes
|
||||||
|
eor #$ff
|
||||||
|
adc #0
|
||||||
|
sta (pStack),y
|
||||||
|
iny
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
MATH.PutARG32 ldy #0
|
||||||
|
ldx #3
|
||||||
|
|
||||||
|
.1 lda ARG32,y
|
||||||
|
sta (pStack),y
|
||||||
|
iny
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
MATH.PutNotARG32
|
||||||
|
ldy #0
|
||||||
|
ldx #3
|
||||||
|
|
||||||
|
sec
|
||||||
|
|
||||||
|
.1 lda ARG32,y two's complement of X bytes
|
||||||
|
eor #$ff
|
||||||
|
adc #0
|
||||||
|
sta (pStack),y
|
||||||
|
iny
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
MATH.PopACC32 ldy #$ff
|
||||||
|
|
||||||
|
.1 iny
|
||||||
|
lda (pStack),y
|
||||||
|
sta ACC32,y
|
||||||
|
cpy #3
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
sta ACC32.Sign
|
||||||
|
|
||||||
|
tya
|
||||||
|
* sec
|
||||||
|
adc pStack
|
||||||
sta pStack
|
sta pStack
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
MATH.GetARG32 ldy #$ff
|
||||||
|
|
||||||
|
.1 iny
|
||||||
|
lda (pStack),y
|
||||||
|
sta ARG32,y
|
||||||
|
cpy #3
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
sta ARG32.Sign
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
MATH.MULDIVMOD.COMMON
|
||||||
|
php
|
||||||
|
|
||||||
|
jsr MATH.PopACC32
|
||||||
|
jsr MATH.GetARG32
|
||||||
|
|
||||||
|
plp
|
||||||
|
bcc .1
|
||||||
|
|
||||||
|
jsr MATH.ACC32ABS
|
||||||
|
jsr MATH.ARG32ABS
|
||||||
|
|
||||||
|
.1 rts
|
||||||
|
*--------------------------------------
|
||||||
|
* ARG32*ACC32->TMP32
|
||||||
|
*--------------------------------------
|
||||||
|
MATH.MUL32 jsr MATH.TMP32ZERO
|
||||||
|
|
||||||
|
ldx #32
|
||||||
|
|
||||||
|
.2 lsr ARG32+3
|
||||||
|
ror ARG32+2
|
||||||
|
ror ARG32+1
|
||||||
|
ror ARG32
|
||||||
|
|
||||||
|
bcc .3
|
||||||
|
|
||||||
|
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 MATH.ACC32.T2
|
||||||
|
|
||||||
|
dex
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
* ARG32 = ARG32 div ACC32
|
||||||
|
* TMP32 = ARG32 mod ACC32
|
||||||
|
*--------------------------------------
|
||||||
|
MATH.DIVMOD32 jsr MATH.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
|
||||||
|
*--------------------------------------
|
||||||
|
MATH.A2STR10NP ldx #3 3 didgit max
|
||||||
|
ldy #0 Disable Padding
|
||||||
|
MATH.A2STR10 jsr MATH.A2ACC32
|
||||||
|
clc unsigned
|
||||||
|
*--------------------------------------
|
||||||
|
* CS = signed long
|
||||||
|
* CC = unsigned long
|
||||||
|
* X = Pad Len
|
||||||
|
* Y = Pad Char
|
||||||
|
*--------------------------------------
|
||||||
|
MATH.ACC322STR10
|
||||||
|
stx .5+1 Pad Len
|
||||||
|
sty .81+1 Pad Char
|
||||||
|
|
||||||
|
stz A2osX.NumStrLen
|
||||||
|
bcc .1
|
||||||
|
|
||||||
|
clc
|
||||||
|
|
||||||
|
lda ACC32+3
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
jsr MATH.ACC32NEG
|
||||||
|
|
||||||
|
sec
|
||||||
|
|
||||||
|
.1 ror ACC32.Sign Save sign
|
||||||
|
|
||||||
|
ldx #4
|
||||||
|
|
||||||
|
.2 stz RESULT,x Clear all 5 bytes
|
||||||
|
dex
|
||||||
|
bpl .2
|
||||||
|
|
||||||
|
sed switch to BCD mode
|
||||||
|
|
||||||
|
ldx #32 let's roll 32 bits
|
||||||
|
|
||||||
|
.3 asl ACC32
|
||||||
|
rol ACC32+1
|
||||||
|
rol ACC32+2
|
||||||
|
rol ACC32+3
|
||||||
|
|
||||||
|
ldy #4
|
||||||
|
|
||||||
|
.4 lda RESULT,y
|
||||||
|
adc RESULT,y
|
||||||
|
sta RESULT,y
|
||||||
|
dey
|
||||||
|
bpl .4
|
||||||
|
|
||||||
|
dex
|
||||||
|
bne .3
|
||||||
|
|
||||||
|
cld
|
||||||
|
|
||||||
|
ldx .5+1 no padding
|
||||||
|
beq .6
|
||||||
|
|
||||||
|
lda #10 starts at 10-padlen
|
||||||
|
sec
|
||||||
|
.5 sbc #$ff SELF MODIFIED
|
||||||
|
tax
|
||||||
|
|
||||||
|
.6 txa
|
||||||
|
lsr
|
||||||
|
tay
|
||||||
|
lda RESULT,y
|
||||||
|
bcs .7
|
||||||
|
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
|
||||||
|
.7 and #$0F
|
||||||
|
ora #$30
|
||||||
|
|
||||||
|
cmp #'0'
|
||||||
|
beq .80
|
||||||
|
|
||||||
|
ldy #'0' next 0s always printed
|
||||||
|
sty .81+1
|
||||||
|
|
||||||
|
bra .82
|
||||||
|
|
||||||
|
.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
|
||||||
|
*--------------------------------------
|
||||||
|
MATH.Hex2ACC32 lda (ZPPtr2)
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
jsr MEM.IsHexDigit
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
jsr MATH.A2ACC32
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.1 iny
|
||||||
|
lda (ZPPtr2),y
|
||||||
|
beq .8
|
||||||
|
jsr MEM.IsHexDigit
|
||||||
|
bcs .8
|
||||||
|
|
||||||
|
pha
|
||||||
|
|
||||||
|
ldx #4
|
||||||
|
|
||||||
|
.2 jsr MATH.ACC32.T2
|
||||||
|
dex
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
pla
|
||||||
|
ora ACC32
|
||||||
|
sta ACC32
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
* Convert Decimal int at ZPPtr2 to ACC32
|
||||||
|
*--------------------------------------
|
||||||
|
MATH.Dec2ACC32 jsr MATH.ACC32ZERO
|
||||||
|
|
||||||
|
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 MATH.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 MATH.ACC32NEG
|
||||||
|
|
||||||
|
.88 clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
MATH.ACC32.T10 ldx #3
|
||||||
|
|
||||||
|
.1 lda ACC32,x save ACC32 for 4+1
|
||||||
|
pha
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
jsr MATH.ACC32.T2 ACC32 * 2 -> ACC32
|
||||||
|
|
||||||
|
jsr MATH.ACC32.T2 ACC32 * 4 -> ACC32
|
||||||
|
|
||||||
|
ldx #0
|
||||||
|
ldy #4
|
||||||
|
|
||||||
|
* clc
|
||||||
|
|
||||||
|
.2 pla ACC32 * 4 + ACC32 -> ACC32
|
||||||
|
adc ACC32,x
|
||||||
|
sta ACC32,x
|
||||||
|
inx
|
||||||
|
dey
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
MATH.ACC32.T2 asl ACC32
|
||||||
|
rol ACC32+1
|
||||||
|
rol ACC32+2
|
||||||
|
rol ACC32+3
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
MATH.A2ACC32 sta ACC32
|
||||||
|
.HS 2C BIT ABS
|
||||||
|
MATH.ACC32ZERO stz ACC32
|
||||||
|
stz ACC32+1
|
||||||
|
stz ACC32+2
|
||||||
|
stz ACC32+3
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
MATH.TMP32ZERO stz TMP32
|
||||||
|
stz TMP32+1
|
||||||
|
stz TMP32+2
|
||||||
|
stz TMP32+3
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
MATH.ARG32ABS lda ARG32.Sign
|
||||||
|
bmi MATH.ARG32NEG
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
MATH.ACC32ABS lda ACC32.Sign
|
||||||
|
bpl MATH.ACC32NEG.RTS
|
||||||
|
*--------------------------------------
|
||||||
|
MATH.ACC32NEG ldy #ACC32
|
||||||
|
.HS 2C BIT ABS
|
||||||
|
|
||||||
|
MATH.ARG32NEG ldy #ARG32
|
||||||
|
|
||||||
|
ldx #3
|
||||||
|
|
||||||
|
sec
|
||||||
|
|
||||||
|
.1 lda $0,y two's complement of X bytes
|
||||||
|
eor #$ff
|
||||||
|
adc #0
|
||||||
|
sta $0,y
|
||||||
|
iny
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
MATH.ACC32NEG.RTS
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
|
@ -1,573 +0,0 @@
|
|||||||
NEW
|
|
||||||
AUTO 3,1
|
|
||||||
*--------------------------------------
|
|
||||||
* http://6502.org/source/integers/32muldiv.htm
|
|
||||||
* http://nparker.llx.com/a2/mult.html
|
|
||||||
*--------------------------------------
|
|
||||||
* >PUSHL ARG
|
|
||||||
* >PUSHL ACC
|
|
||||||
* >ADC32
|
|
||||||
* >PULLL (ARG+ACC)
|
|
||||||
*--------------------------------------
|
|
||||||
FPU.ADD32 clc
|
|
||||||
.HS B0 BCS
|
|
||||||
FPU.SUB32 sec
|
|
||||||
|
|
||||||
php
|
|
||||||
|
|
||||||
jsr NUM.PopACC32
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
ldx #3
|
|
||||||
|
|
||||||
plp
|
|
||||||
bcs .2
|
|
||||||
|
|
||||||
.1 lda (pStack),y
|
|
||||||
adc ACC32,y
|
|
||||||
sta (pStack),y
|
|
||||||
iny
|
|
||||||
dex
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
rts
|
|
||||||
|
|
||||||
.2 lda (pStack),y
|
|
||||||
sbc ACC32,y
|
|
||||||
sta (pStack),y
|
|
||||||
iny
|
|
||||||
dex
|
|
||||||
bpl .2
|
|
||||||
|
|
||||||
FPU.SUB32.RTS rts
|
|
||||||
*--------------------------------------
|
|
||||||
* >PUSHL ARG
|
|
||||||
* >PUSHL ACC
|
|
||||||
* >(I)MUL32
|
|
||||||
* >PULLL (ARG*ACC)
|
|
||||||
*--------------------------------------
|
|
||||||
FPU.MUL32 clc
|
|
||||||
.HS B0 BCS
|
|
||||||
FPU.IMUL32 sec
|
|
||||||
|
|
||||||
php
|
|
||||||
jsr NUM.MULDIVMOD.COMMON
|
|
||||||
jsr NUM.MUL32
|
|
||||||
|
|
||||||
plp
|
|
||||||
bcc FPU.SUB32.RTS
|
|
||||||
|
|
||||||
FPU.RETURN.ITMP lda ACC32.Sign
|
|
||||||
eor ARG32.Sign
|
|
||||||
bpl NUM.PutTMP32
|
|
||||||
bra NUM.PutNotTMP32
|
|
||||||
*--------------------------------------
|
|
||||||
* >PUSHL ARG
|
|
||||||
* >PUSHL ACC
|
|
||||||
* >(I)DIV32
|
|
||||||
* >PULLL (ARG / ACC)
|
|
||||||
*--------------------------------------
|
|
||||||
* >PUSHL ARG
|
|
||||||
* >PUSHL ACC
|
|
||||||
* >(I)MOD32
|
|
||||||
* >PULLL (ARG mod ACC)
|
|
||||||
*--------------------------------------
|
|
||||||
FPU.DIV32 clc
|
|
||||||
.HS B0 BCS
|
|
||||||
FPU.IDIV32 sec
|
|
||||||
clv
|
|
||||||
bra FPU.DIVMOD
|
|
||||||
|
|
||||||
FPU.MOD32 clc
|
|
||||||
.HS B0 BCS
|
|
||||||
FPU.IMOD32 sec
|
|
||||||
bit FPU.SUB32.RTS $60
|
|
||||||
|
|
||||||
FPU.DIVMOD php
|
|
||||||
jsr NUM.MULDIVMOD.COMMON
|
|
||||||
jsr NUM.DIVMOD32
|
|
||||||
|
|
||||||
plp
|
|
||||||
bcc .3
|
|
||||||
bvs FPU.RETURN.ITMP IMOD
|
|
||||||
|
|
||||||
lda ACC32.Sign IDIV
|
|
||||||
eor ARG32.Sign
|
|
||||||
bmi NUM.PutARG32
|
|
||||||
bra NUM.PutNotARG32
|
|
||||||
|
|
||||||
.3 bvs NUM.PutARG32 DIV
|
|
||||||
*--------------------------------------
|
|
||||||
NUM.PutTMP32 ldy #0 MOD
|
|
||||||
ldx #3
|
|
||||||
|
|
||||||
.1 lda TMP32,y
|
|
||||||
sta (pStack),y
|
|
||||||
iny
|
|
||||||
dex
|
|
||||||
bpl .1
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
NUM.PutNotTMP32 ldy #0
|
|
||||||
ldx #3
|
|
||||||
|
|
||||||
sec
|
|
||||||
|
|
||||||
.1 lda TMP32,y two's complement of X bytes
|
|
||||||
eor #$ff
|
|
||||||
adc #0
|
|
||||||
sta (pStack),y
|
|
||||||
iny
|
|
||||||
dex
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
NUM.PutARG32 ldy #0
|
|
||||||
ldx #3
|
|
||||||
|
|
||||||
.1 lda ARG32,y
|
|
||||||
sta (pStack),y
|
|
||||||
iny
|
|
||||||
dex
|
|
||||||
bpl .1
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
NUM.PutNotARG32 ldy #0
|
|
||||||
ldx #3
|
|
||||||
|
|
||||||
sec
|
|
||||||
|
|
||||||
.1 lda ARG32,y two's complement of X bytes
|
|
||||||
eor #$ff
|
|
||||||
adc #0
|
|
||||||
sta (pStack),y
|
|
||||||
iny
|
|
||||||
dex
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
NUM.PopACC32 ldy #$ff
|
|
||||||
|
|
||||||
.1 iny
|
|
||||||
lda (pStack),y
|
|
||||||
sta ACC32,y
|
|
||||||
cpy #3
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
sta ACC32.Sign
|
|
||||||
|
|
||||||
tya
|
|
||||||
* sec
|
|
||||||
adc pStack
|
|
||||||
sta pStack
|
|
||||||
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
NUM.GetARG32 ldy #$ff
|
|
||||||
|
|
||||||
.1 iny
|
|
||||||
lda (pStack),y
|
|
||||||
sta ARG32,y
|
|
||||||
cpy #3
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
sta ARG32.Sign
|
|
||||||
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
NUM.MULDIVMOD.COMMON
|
|
||||||
php
|
|
||||||
|
|
||||||
jsr NUM.PopACC32
|
|
||||||
jsr NUM.GetARG32
|
|
||||||
|
|
||||||
plp
|
|
||||||
bcc .1
|
|
||||||
|
|
||||||
jsr NUM.ACC32ABS
|
|
||||||
jsr NUM.ARG32ABS
|
|
||||||
|
|
||||||
.1 rts
|
|
||||||
*--------------------------------------
|
|
||||||
* 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
|
|
||||||
|
|
||||||
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 NUM.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
|
|
||||||
* CC = unsigned long
|
|
||||||
* X = Pad Len
|
|
||||||
* Y = Pad Char
|
|
||||||
*--------------------------------------
|
|
||||||
NUM.ACC322STR10 stx .5+1 Pad Len
|
|
||||||
sty .81+1 Pad Char
|
|
||||||
|
|
||||||
stz A2osX.NumStrLen
|
|
||||||
bcc .1
|
|
||||||
|
|
||||||
clc
|
|
||||||
|
|
||||||
lda ACC32+3
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
jsr NUM.ACC32NEG
|
|
||||||
|
|
||||||
sec
|
|
||||||
|
|
||||||
.1 ror ACC32.Sign Save sign
|
|
||||||
|
|
||||||
ldx #4
|
|
||||||
|
|
||||||
.2 stz RESULT,x Clear all 5 bytes
|
|
||||||
dex
|
|
||||||
bpl .2
|
|
||||||
|
|
||||||
sed switch to BCD mode
|
|
||||||
|
|
||||||
ldx #32 let's roll 32 bits
|
|
||||||
|
|
||||||
.3 asl ACC32
|
|
||||||
rol ACC32+1
|
|
||||||
rol ACC32+2
|
|
||||||
rol ACC32+3
|
|
||||||
|
|
||||||
ldy #4
|
|
||||||
|
|
||||||
.4 lda RESULT,y
|
|
||||||
adc RESULT,y
|
|
||||||
sta RESULT,y
|
|
||||||
dey
|
|
||||||
bpl .4
|
|
||||||
|
|
||||||
dex
|
|
||||||
bne .3
|
|
||||||
|
|
||||||
cld
|
|
||||||
|
|
||||||
ldx .5+1 no padding
|
|
||||||
beq .6
|
|
||||||
|
|
||||||
lda #10 starts at 10-padlen
|
|
||||||
sec
|
|
||||||
.5 sbc #$ff SELF MODIFIED
|
|
||||||
tax
|
|
||||||
|
|
||||||
.6 txa
|
|
||||||
lsr
|
|
||||||
tay
|
|
||||||
lda RESULT,y
|
|
||||||
bcs .7
|
|
||||||
|
|
||||||
lsr
|
|
||||||
lsr
|
|
||||||
lsr
|
|
||||||
lsr
|
|
||||||
|
|
||||||
.7 and #$0F
|
|
||||||
ora #$30
|
|
||||||
|
|
||||||
cmp #'0'
|
|
||||||
beq .80
|
|
||||||
|
|
||||||
ldy #'0' next 0s always printed
|
|
||||||
sty .81+1
|
|
||||||
|
|
||||||
bra .82
|
|
||||||
|
|
||||||
.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.A2ACC32
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
|
|
||||||
.1 iny
|
|
||||||
lda (ZPPtr2),y
|
|
||||||
beq .8
|
|
||||||
jsr MEM.IsHexDigit
|
|
||||||
bcs .8
|
|
||||||
|
|
||||||
pha
|
|
||||||
|
|
||||||
ldx #4
|
|
||||||
|
|
||||||
.2 jsr NUM.ACC32.T2
|
|
||||||
dex
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
pla
|
|
||||||
ora ACC32
|
|
||||||
sta ACC32
|
|
||||||
bra .1
|
|
||||||
|
|
||||||
.8 clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.9 sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
* Convert Decimal int at ZPPtr2 to ACC32
|
|
||||||
*--------------------------------------
|
|
||||||
NUM.Dec2ACC32 jsr NUM.ACC32ZERO
|
|
||||||
|
|
||||||
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 NUM.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
|
|
||||||
*--------------------------------------
|
|
||||||
NUM.ACC32.T10 ldx #3
|
|
||||||
|
|
||||||
.1 lda ACC32,x save ACC32 for 4+1
|
|
||||||
pha
|
|
||||||
dex
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
jsr NUM.ACC32.T2 ACC32 * 2 -> ACC32
|
|
||||||
|
|
||||||
jsr NUM.ACC32.T2 ACC32 * 4 -> ACC32
|
|
||||||
|
|
||||||
ldx #0
|
|
||||||
ldy #4
|
|
||||||
|
|
||||||
* clc
|
|
||||||
|
|
||||||
.2 pla ACC32 * 4 + ACC32 -> ACC32
|
|
||||||
adc ACC32,x
|
|
||||||
sta ACC32,x
|
|
||||||
inx
|
|
||||||
dey
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
NUM.ACC32.T2 asl ACC32
|
|
||||||
rol ACC32+1
|
|
||||||
rol ACC32+2
|
|
||||||
rol ACC32+3
|
|
||||||
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
NUM.A2ACC32 sta ACC32
|
|
||||||
.HS 2C BIT ABS
|
|
||||||
NUM.ACC32ZERO stz ACC32
|
|
||||||
stz ACC32+1
|
|
||||||
stz ACC32+2
|
|
||||||
stz ACC32+3
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
NUM.TMP32ZERO stz TMP32
|
|
||||||
stz TMP32+1
|
|
||||||
stz TMP32+2
|
|
||||||
stz TMP32+3
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
NUM.ARG32ABS lda ARG32.Sign
|
|
||||||
bmi NUM.ARG32NEG
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
NUM.ACC32ABS lda ACC32.Sign
|
|
||||||
bpl NUM.ACC32NEG.RTS
|
|
||||||
*--------------------------------------
|
|
||||||
NUM.ACC32NEG ldy #ACC32
|
|
||||||
.HS 2C BIT ABS
|
|
||||||
|
|
||||||
NUM.ARG32NEG ldy #ARG32
|
|
||||||
|
|
||||||
ldx #3
|
|
||||||
|
|
||||||
sec
|
|
||||||
|
|
||||||
.1 lda $0,y two's complement of X bytes
|
|
||||||
eor #$ff
|
|
||||||
adc #0
|
|
||||||
sta $0,y
|
|
||||||
iny
|
|
||||||
dex
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
NUM.ACC32NEG.RTS
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
MAN
|
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.NUM
|
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
|
||||||
ASM
|
|
@ -68,7 +68,7 @@ PWD.Store lda PWD.DBPtr
|
|||||||
clc Aux To Main
|
clc Aux To Main
|
||||||
jsr AuxMove
|
jsr AuxMove
|
||||||
|
|
||||||
>PUSHWZ Aux type
|
>PUSHWZ Aux type
|
||||||
>PUSHBI S.FI.T.TXT
|
>PUSHBI S.FI.T.TXT
|
||||||
>PUSHBI O.WRONLY+O.CREATE
|
>PUSHBI O.WRONLY+O.CREATE
|
||||||
>LDYAI PWD.FILE
|
>LDYAI PWD.FILE
|
||||||
@ -80,7 +80,7 @@ PWD.Store lda PWD.DBPtr
|
|||||||
jsr .8
|
jsr .8
|
||||||
pla
|
pla
|
||||||
sec
|
sec
|
||||||
.9 rts
|
rts
|
||||||
|
|
||||||
.1 sta .7+1
|
.1 sta .7+1
|
||||||
|
|
||||||
@ -91,27 +91,22 @@ PWD.Store lda PWD.DBPtr
|
|||||||
lda .7+1
|
lda .7+1
|
||||||
ldx #SYS.FWrite
|
ldx #SYS.FWrite
|
||||||
jsr K.SYSCALL2.BANK
|
jsr K.SYSCALL2.BANK
|
||||||
bcs .2
|
bcc .2
|
||||||
|
|
||||||
jsr .7
|
pha
|
||||||
stz PWD.bDirty
|
|
||||||
rts
|
|
||||||
|
|
||||||
.2 pha
|
|
||||||
jsr .7
|
jsr .7
|
||||||
pla
|
pla
|
||||||
sec
|
sec
|
||||||
rts
|
.9 rts
|
||||||
|
|
||||||
.7 lda #$ff
|
.2 stz PWD.bDirty
|
||||||
|
|
||||||
|
.7 lda #$ff SELF MODIFIED
|
||||||
ldx #SYS.fclose
|
ldx #SYS.fclose
|
||||||
jsr K.SYSCALL2.BANK
|
jsr K.SYSCALL2.BANK
|
||||||
|
|
||||||
.8 lda #$ff
|
.8 lda #$ff
|
||||||
jsr K.freemem
|
jmp K.freemem SELF MODIFIED
|
||||||
|
|
||||||
* clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PWD.bDirty .BS 1
|
PWD.bDirty .BS 1
|
||||||
PWD.hDB .BS 1
|
PWD.hDB .BS 1
|
||||||
|
@ -502,7 +502,7 @@ PWD.StoreString iny
|
|||||||
PWD.StoreByte php
|
PWD.StoreByte php
|
||||||
phx
|
phx
|
||||||
|
|
||||||
jsr NUM.A2STR10NP
|
jsr MATH.A2STR10NP
|
||||||
|
|
||||||
plx
|
plx
|
||||||
plp
|
plp
|
||||||
|
@ -371,7 +371,7 @@ K.PrintF.1 stz PrintF.Cnt
|
|||||||
>LDYA ZPPtr1
|
>LDYA ZPPtr1
|
||||||
>STYA ZPPtr2
|
>STYA ZPPtr2
|
||||||
|
|
||||||
jsr NUM.Hex2ACC32
|
jsr MATH.Hex2ACC32
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr MEM.AddYToPtr1
|
jsr MEM.AddYToPtr1
|
||||||
@ -531,7 +531,7 @@ PrintF.U clc unsigned long (DWORD)
|
|||||||
PrintF.NUM ldx K.PrintF.PadL
|
PrintF.NUM ldx K.PrintF.PadL
|
||||||
ldy K.PrintF.PadC
|
ldy K.PrintF.PadC
|
||||||
rol ACC32.Sign
|
rol ACC32.Sign
|
||||||
jsr NUM.ACC322STR10
|
jsr MATH.ACC322STR10
|
||||||
bra PrintF.StrNum
|
bra PrintF.StrNum
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* EXP(8) 1(s) 1significants(31)
|
* EXP(8) 1(s) 1significants(31)
|
||||||
@ -557,7 +557,7 @@ PrintF.F clc
|
|||||||
|
|
||||||
lda pStack+1
|
lda pStack+1
|
||||||
|
|
||||||
ldx #ROM.SETFAC
|
ldx #FPU.SETFAC
|
||||||
jsr GP.ROMCALL
|
jsr GP.ROMCALL
|
||||||
|
|
||||||
lda PrintF.GetByte+1
|
lda PrintF.GetByte+1
|
||||||
@ -566,7 +566,7 @@ PrintF.F clc
|
|||||||
sta PrintF.GetByte+1
|
sta PrintF.GetByte+1
|
||||||
|
|
||||||
ldy #A2osX.NumStrBuf+1 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 #FPU.FOUT
|
||||||
jsr GP.ROMCALL
|
jsr GP.ROMCALL
|
||||||
|
|
||||||
PrintF.StrNum ldy #0
|
PrintF.StrNum ldy #0
|
||||||
@ -980,14 +980,14 @@ 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 NUM.Dec2ACC32
|
jsr MATH.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 NUM.Hex2ACC32
|
jsr MATH.Hex2ACC32
|
||||||
|
|
||||||
K.SScanF.GetVAL jsr MEM.AddYToPtr2 Y=char count parsed
|
K.SScanF.GetVAL jsr MEM.AddYToPtr2 Y=char count parsed
|
||||||
|
|
||||||
|
@ -13,10 +13,10 @@ NEW
|
|||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
* On stack (float)
|
* On stack (float)
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.strtof >STYA TXTPTR Ptr to source string
|
K.strtof pha
|
||||||
>PULLW ZPPtr1
|
>PULLW ZPPtr1
|
||||||
|
pla
|
||||||
jsr K.AToF.I
|
jsr K.AToF
|
||||||
|
|
||||||
lda TXTPTR
|
lda TXTPTR
|
||||||
sta (ZPPtr1)
|
sta (ZPPtr1)
|
||||||
@ -38,10 +38,10 @@ K.strtof >STYA TXTPTR Ptr to source string
|
|||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.AToF >STYA TXTPTR Ptr to source string
|
K.AToF >STYA TXTPTR Ptr to source string
|
||||||
|
|
||||||
K.AToF.I jsr CHARGOT
|
jsr CHARGOT
|
||||||
|
|
||||||
ldx #ROM.FIN
|
ldx #FPU.FIN
|
||||||
jmp GP.RomCallPushFAC
|
jmp MATH.RomCallPushFAC
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # StrToL/StrToUL
|
* # StrToL/StrToUL
|
||||||
* Convert String to 32 bits (unsigned) int
|
* Convert String to 32 bits (unsigned) int
|
||||||
@ -92,7 +92,7 @@ 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 NUM.Dec2ACC32
|
K.AToL.I jsr MATH.Dec2ACC32
|
||||||
bcs .9
|
bcs .9
|
||||||
phy Save Count processed
|
phy Save Count processed
|
||||||
|
|
||||||
@ -123,7 +123,7 @@ K.atoi >STYA ZPPtr2
|
|||||||
lda #10 base 10
|
lda #10 base 10
|
||||||
sec signed
|
sec signed
|
||||||
|
|
||||||
jsr NUM.Dec2ACC32
|
jsr MATH.Dec2ACC32
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>LDYA ACC32
|
>LDYA ACC32
|
||||||
|
@ -1133,7 +1133,7 @@ DRV.TERM.CURBLNK.SET
|
|||||||
DRV.TERM.CURBLNK.RTS
|
DRV.TERM.CURBLNK.RTS
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Decimal.Out jsr NUM.A2STR10NP
|
Decimal.Out jsr MATH.A2STR10NP
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
|
|
||||||
|
@ -192,7 +192,7 @@ K.CTime2Time jsr MEM.SPtr1PPtr2
|
|||||||
|
|
||||||
stz ACC32+3
|
stz ACC32+3
|
||||||
|
|
||||||
jsr NUM.DIVMOD32 ARG32 = Days, TMP32 = remaining secs
|
jsr MATH.DIVMOD32 ARG32 = Days, TMP32 = remaining secs
|
||||||
|
|
||||||
lda ARG32 WDAY computation : (ARG32 + DAY0) mod 7
|
lda ARG32 WDAY computation : (ARG32 + DAY0) mod 7
|
||||||
clc
|
clc
|
||||||
@ -221,9 +221,7 @@ K.CTime2Time jsr MEM.SPtr1PPtr2
|
|||||||
sta TIME.Century
|
sta TIME.Century
|
||||||
lda #YEAR0
|
lda #YEAR0
|
||||||
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
|
||||||
@ -248,6 +246,7 @@ K.CTime2Time.Year
|
|||||||
lda TIME.Year
|
lda TIME.Year
|
||||||
cmp #100
|
cmp #100
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
stz TIME.Year
|
stz TIME.Year
|
||||||
inc TIME.Century
|
inc TIME.Century
|
||||||
bne .1
|
bne .1
|
||||||
@ -261,9 +260,7 @@ K.CTime2Time.Year
|
|||||||
ldy #S.Time.YEAR
|
ldy #S.Time.YEAR
|
||||||
lda TIME.Year
|
lda TIME.Year
|
||||||
sta (ZPPtr2),y
|
sta (ZPPtr2),y
|
||||||
|
|
||||||
K.CTime2Time.HMS
|
K.CTime2Time.HMS
|
||||||
|
|
||||||
ldx #3
|
ldx #3
|
||||||
|
|
||||||
.1 lda TMP32,x
|
.1 lda TMP32,x
|
||||||
@ -271,30 +268,30 @@ K.CTime2Time.HMS
|
|||||||
dex
|
dex
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
lda #60
|
|
||||||
jsr NUM.A2ACC32
|
|
||||||
|
|
||||||
jsr NUM.DIVMOD32
|
|
||||||
|
|
||||||
ldy #S.TIME.SECOND
|
ldy #S.TIME.SECOND
|
||||||
lda TMP32
|
jsr .2
|
||||||
sta (ZPPtr2),y
|
|
||||||
|
|
||||||
lda #60
|
dey #S.TIME.MINUTE
|
||||||
jsr NUM.A2ACC32
|
jsr .2
|
||||||
|
|
||||||
jsr NUM.DIVMOD32
|
dey #S.TIME.HOUR
|
||||||
|
|
||||||
ldy #S.TIME.MINUTE
|
|
||||||
lda TMP32
|
|
||||||
sta (ZPPtr2),y
|
|
||||||
|
|
||||||
ldy #S.TIME.HOUR
|
|
||||||
lda ARG32
|
lda ARG32
|
||||||
sta (ZPPtr2),y
|
sta (ZPPtr2),y
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
.2 phy
|
||||||
|
|
||||||
|
lda #60
|
||||||
|
jsr MATH.A2ACC32
|
||||||
|
|
||||||
|
jsr MATH.DIVMOD32
|
||||||
|
|
||||||
|
ply
|
||||||
|
lda TMP32
|
||||||
|
sta (ZPPtr2),y
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* In :
|
* In :
|
||||||
* Y = Century
|
* Y = Century
|
||||||
@ -500,7 +497,7 @@ K.StrFTime.addDecA
|
|||||||
ldx #2
|
ldx #2
|
||||||
ldy #'0'
|
ldy #'0'
|
||||||
clc
|
clc
|
||||||
jsr NUM.A2STR10
|
jsr MATH.A2STR10
|
||||||
|
|
||||||
lda A2osX.NumStrBuf
|
lda A2osX.NumStrBuf
|
||||||
jsr MEM.PutCharPtr1
|
jsr MEM.PutCharPtr1
|
||||||
|
@ -55,20 +55,25 @@ A2osX.D2 .PH $D000
|
|||||||
.INB USR/SRC/SYS/KERNEL.S.BIN
|
.INB USR/SRC/SYS/KERNEL.S.BIN
|
||||||
.INB USR/SRC/SYS/KERNEL.S.PS
|
.INB USR/SRC/SYS/KERNEL.S.PS
|
||||||
.INB USR/SRC/SYS/KERNEL.S.ENV
|
.INB USR/SRC/SYS/KERNEL.S.ENV
|
||||||
.INB USR/SRC/SYS/KERNEL.S.MATH
|
|
||||||
.INB USR/SRC/SYS/KERNEL.S.ARG
|
.INB USR/SRC/SYS/KERNEL.S.ARG
|
||||||
.EP
|
.EP
|
||||||
A2osX.E0 .PH $E000
|
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.MATH
|
||||||
.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
|
||||||
********* TMP ***** go to A2osX.D2
|
********* TMP ***** go to A2osX.D2
|
||||||
.INB USR/SRC/SYS/KERNEL.S.PWD
|
.INB USR/SRC/SYS/KERNEL.S.PWD
|
||||||
|
*--------------------------------------
|
||||||
|
DevMgr.Stat .DA DevMgr.FreeMem
|
||||||
|
DevMgr.Free .DA DevMgr.FreeMem
|
||||||
|
.DA DevMgr.HiMem
|
||||||
|
DevMgr.DevIdx .DA #1
|
||||||
|
*--------------------------------------
|
||||||
.LIST ON
|
.LIST ON
|
||||||
DevMgr.FreeMem .EQ *
|
DevMgr.FreeMem .EQ *
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
|
Loading…
Reference in New Issue
Block a user