no this seems right

but it's still coming out different. wtf am i doing wrong
it's gotta be a brainfart
This commit is contained in:
Brooke Vibber 2023-01-28 14:34:52 -08:00
parent 76715a6151
commit b55015ff87

View file

@ -361,32 +361,33 @@ positive_result:
; Round top 16 bits of 32-bit fixed-point number in-place ; Round top 16 bits of 32-bit fixed-point number in-place
.local positive .local positive
.local negative .local negative
.local increment .local no_carry
.local next .local next
; positive input: ; positive input:
; 0 rounds down, no change - 10 cyc ; 0 rounds down, no change - 5 cyc
; 1 rounds up, add one - 17-22 cyc ; 1 rounds up, add one - 15-20 cyc
; negative input: ; negative input:
; 0 rounds up, add one - 19-24 cyc ; 0 rounds up, no change - 5 cyc
; 1 rounds down, no change - 10 cyc ; 1 rounds down, sub one - 23-28 cyc
; check 16th bit down
lda arg + 1 ; 3 cyc
bpl next ; 2 cyc
; check sign bit ; check sign bit
lda arg + 3 ; 3 cyc lda arg + 3 ; 3 cyc
bpl positive ; 2 cyc bpl positive ; 2 cyc
negative: negative: ; 13-18 cyc
; check 16th bit down lda arg + 2 ; 3 cyc
lda arg + 1 ; 3 cyc bne no_carry ; 2 cyc
bmi next ; 2 cyc dec arg + 3 ; 5 cyc
bpl increment ; 2 cyc no_carry:
dec arg + 2 ; 5 cyc
jmp next ; 3 cyc
positive: positive: ; 5-10 cyc
; check 16th bit down
lda arg + 1 ; 3 cyc
bpl next ; 2 cyc
increment:
inc arg + 2 ; 5 cyc inc arg + 2 ; 5 cyc
bne next ; 2 cyc bne next ; 2 cyc
inc arg + 3 ; 5 cyc inc arg + 3 ; 5 cyc