A2osX/X.M32.S.txt
2018-11-24 19:20:48 +01:00

98 lines
1.5 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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