mirror of
https://github.com/A2osX/A2osX.git
synced 2024-05-31 16:41:30 +00:00
98 lines
1.5 KiB
Plaintext
98 lines
1.5 KiB
Plaintext
NEW
|
||
PREFIX
|
||
AUTO 4,1
|
||
.LIST OFF
|
||
*--------------------------------------
|
||
* Uses: (pData)
|
||
* M32.ACC .BS 4
|
||
* M32.ARG .BS 4
|
||
* M32.TMP .BS 4
|
||
*--------------------------------------
|
||
* TODO : Make it SIGNED 32 bits
|
||
* TODO : Implement mul, div, mod ...
|
||
* http://6502.org/source/integers/32muldiv.htm
|
||
*--------------------------------------
|
||
M32.Add ldy #M32.ARG+4 ARG+ACC->ACC
|
||
|
||
.1 dey
|
||
lda (pData),y
|
||
pha
|
||
cpy #M32.ARG
|
||
bne .1
|
||
|
||
ldy #M32.ACC
|
||
ldx #4
|
||
|
||
clc
|
||
|
||
.2 pla
|
||
adc (pData),y
|
||
sta (pData),y
|
||
iny
|
||
dex
|
||
bne .2
|
||
|
||
rts if CS, Overflow
|
||
*---------------------------------------
|
||
M32.Sub ldy #M32.ARG+4 ARG+ACC->ACC
|
||
|
||
.1 dey
|
||
lda (pData),y
|
||
pha
|
||
cpy #M32.ARG
|
||
bne .1
|
||
|
||
ldy #M32.ACC
|
||
ldx #4
|
||
|
||
sec
|
||
|
||
.2 pla
|
||
sbc (pData),y
|
||
sta (pData),y
|
||
iny
|
||
dex
|
||
bne .2
|
||
|
||
bcs .8 if CC, Overflow
|
||
|
||
sec
|
||
rts
|
||
|
||
.8 clc
|
||
rts
|
||
*--------------------------------------
|
||
M32.Mul
|
||
*--------------------------------------
|
||
M32.Div
|
||
|
||
sec
|
||
rts
|
||
*--------------------------------------
|
||
M32.Mod
|
||
|
||
|
||
clc
|
||
rts
|
||
*--------------------------------------
|
||
M32.ACC2ARG ldy #M32.ACC+4 ACC->ARG
|
||
|
||
.1 dey
|
||
lda (pData),y
|
||
pha
|
||
cpy #M32.ACC
|
||
bne .1
|
||
|
||
ldy #M32.ARG
|
||
|
||
.2 pla
|
||
sta (pData),y
|
||
iny
|
||
cpy #M32.ARG+4
|
||
bne .2
|
||
|
||
rts
|
||
*--------------------------------------
|
||
MAN
|
||
SAVE USR/SRC/X.M32.S
|