implemented cc for integer sin and cos variants

This commit is contained in:
Irmen de Jong
2020-11-03 22:42:59 +01:00
parent 526e4b8bdc
commit 288d4f08b3
3 changed files with 127 additions and 90 deletions

View File

@@ -747,147 +747,142 @@ func_sqrt16 .proc
func_sin8_into_A .proc
inx
ldy P8ESTACK_LO,x
lda func_sin8._sinecos8,y
tay
lda _sinecos8,y
rts
_sinecos8 .char trunc(127.0 * sin(range(256+64) * rad(360.0/256.0)))
.pend
func_sin8u_into_A .proc
inx
ldy P8ESTACK_LO,x
lda func_sin8u._sinecos8u,y
tay
lda _sinecos8u,y
rts
_sinecos8u .byte trunc(128.0 + 127.5 * sin(range(256+64) * rad(360.0/256.0)))
.pend
func_sin16_into_AY .proc
inx
ldy P8ESTACK_LO,x
lda func_sin16._sinecos8lo,y
tay
lda _sinecos8lo,y
pha
lda func_sin16._sinecos8hi,y
lda _sinecos8hi,y
tay
pla
rts
_ := trunc(32767.0 * sin(range(256+64) * rad(360.0/256.0)))
_sinecos8lo .byte <_
_sinecos8hi .byte >_
.pend
func_sin16u_into_AY .proc
inx
ldy P8ESTACK_LO,x
lda func_sin16u._sinecos8ulo,y
tay
lda _sinecos8ulo,y
pha
lda func_sin16u._sinecos8uhi,y
lda _sinecos8uhi,y
tay
pla
rts
_ := trunc(32768.0 + 32767.5 * sin(range(256+64) * rad(360.0/256.0)))
_sinecos8ulo .byte <_
_sinecos8uhi .byte >_
.pend
func_cos8_into_A .proc
inx
ldy P8ESTACK_LO,x
lda func_sin8._sinecos8+64,y
tay
lda func_sin8_into_A._sinecos8+64,y
rts
.pend
func_cos8u_into_A .proc
inx
ldy P8ESTACK_LO,x
lda func_sin8u._sinecos8u+64,y
tay
lda func_sin8u_into_A._sinecos8u+64,y
rts
.pend
func_cos16_into_AY .proc
inx
ldy P8ESTACK_LO,x
lda func_sin16._sinecos8lo+64,y
tay
lda func_sin16_into_AY._sinecos8lo+64,y
pha
lda func_sin16._sinecos8hi+64,y
lda func_sin16_into_AY._sinecos8hi+64,y
tay
pla
rts
.pend
func_cos16u_into_AY .proc
inx
ldy P8ESTACK_LO,x
lda func_sin16u._sinecos8ulo+64,y
tay
lda func_sin16u_into_AY._sinecos8ulo+64,y
pha
lda func_sin16u._sinecos8uhi+64,y
lda func_sin16u_into_AY._sinecos8uhi+64,y
tay
pla
rts
.pend
func_sin8 .proc
ldy P8ESTACK_LO+1,x
lda _sinecos8,y
sta P8ESTACK_LO+1,x
func_sin8_cc .proc
tay
lda func_sin8_into_A._sinecos8,y
sta P8ESTACK_LO,x
dex
rts
_sinecos8 .char trunc(127.0 * sin(range(256+64) * rad(360.0/256.0)))
.pend
func_sin8u .proc
ldy P8ESTACK_LO+1,x
func_sin8u_cc .proc
tay
lda _sinecos8u,y
sta P8ESTACK_LO+1,x
sta P8ESTACK_LO,x
dex
rts
_sinecos8u .byte trunc(128.0 + 127.5 * sin(range(256+64) * rad(360.0/256.0)))
.pend
func_sin16 .proc
ldy P8ESTACK_LO+1,x
lda _sinecos8lo,y
func_sin16_cc .proc
tay
lda func_sin16_into_AY._sinecos8lo,y
sta P8ESTACK_LO+1,x
lda _sinecos8hi,y
lda func_sin16_into_AY._sinecos8hi,y
sta P8ESTACK_HI+1,x
rts
_ := trunc(32767.0 * sin(range(256+64) * rad(360.0/256.0)))
_sinecos8lo .byte <_
_sinecos8hi .byte >_
.pend
func_sin16u .proc
ldy P8ESTACK_LO+1,x
lda _sinecos8ulo,y
func_sin16u_cc .proc
tay
lda func_sin16u_into_AY._sinecos8ulo,y
sta P8ESTACK_LO+1,x
lda _sinecos8uhi,y
sta P8ESTACK_HI+1,x
rts
_ := trunc(32768.0 + 32767.5 * sin(range(256+64) * rad(360.0/256.0)))
_sinecos8ulo .byte <_
_sinecos8uhi .byte >_
.pend
func_cos8 .proc
ldy P8ESTACK_LO+1,x
lda func_sin8._sinecos8+64,y
sta P8ESTACK_LO+1,x
rts
.pend
func_cos8u .proc
ldy P8ESTACK_LO+1,x
lda func_sin8u._sinecos8u+64,y
sta P8ESTACK_LO+1,x
rts
.pend
func_cos16 .proc
ldy P8ESTACK_LO+1,x
lda func_sin16._sinecos8lo+64,y
sta P8ESTACK_LO+1,x
lda func_sin16._sinecos8hi+64,y
lda func_sin16u_into_AY._sinecos8uhi,y
sta P8ESTACK_HI+1,x
rts
.pend
func_cos16u .proc
ldy P8ESTACK_LO+1,x
lda func_sin16u._sinecos8ulo+64,y
func_cos8_cc .proc
tay
lda func_sin8_into_A._sinecos8+64,y
sta P8ESTACK_LO,x
dex
rts
.pend
func_cos8u_cc .proc
tay
lda func_sin8u_into_A._sinecos8u+64,y
sta P8ESTACK_LO,x
dex
rts
.pend
func_cos16_cc .proc
tay
lda func_sin16_into_AY._sinecos8lo+64,y
sta P8ESTACK_LO+1,x
lda func_sin16u._sinecos8uhi+64,y
lda func_sin16_into_AY._sinecos8hi+64,y
sta P8ESTACK_HI+1,x
rts
.pend
func_cos16u_cc .proc
tay
lda func_sin16u_into_AY._sinecos8ulo+64,y
sta P8ESTACK_LO+1,x
lda func_sin16u_into_AY._sinecos8uhi+64,y
sta P8ESTACK_HI+1,x
rts
.pend