diff options
Diffstat (limited to 'engine/multiply_divide.asm')
-rwxr-xr-x | engine/multiply_divide.asm | 82 |
1 files changed, 41 insertions, 41 deletions
diff --git a/engine/multiply_divide.asm b/engine/multiply_divide.asm index 2bc26de2..d664c9d4 100755 --- a/engine/multiply_divide.asm +++ b/engine/multiply_divide.asm @@ -2,15 +2,15 @@ _Multiply: ld a, $8 ld b, a xor a - ld [H_PRODUCT], a ; $ff95 - ld [H_MULTIPLYBUFFER], a ; $ff9b - ld [H_MULTIPLYBUFFER+1], a ; $ff9c - ld [H_MULTIPLYBUFFER+2], a ; $ff9d - ld [H_MULTIPLYBUFFER+3], a ; $ff9e + ld [H_PRODUCT], a + ld [H_MULTIPLYBUFFER], a + ld [H_MULTIPLYBUFFER+1], a + ld [H_MULTIPLYBUFFER+2], a + ld [H_MULTIPLYBUFFER+3], a .multiplyLoop - ld a, [H_MULTIPLIER] ; $ff99 + ld a, [H_MULTIPLIER] srl a - ld [H_MULTIPLIER], a ; $ff99 + ld [H_MULTIPLIER], a jr nc, .smallMultiplier ; less than $80 ; code to possibly multiply the multiplicand by 2 and divide the multiplier by 2? ld a, [H_MULTIPLYBUFFER+3] @@ -23,14 +23,14 @@ _Multiply: ld a, [H_MULTIPLICAND+1] adc c ld [H_MULTIPLYBUFFER+2], a - ld a, [H_MULTIPLYBUFFER+1] ; $ff9c + ld a, [H_MULTIPLYBUFFER+1] ld c, a - ld a, [H_MULTIPLICAND] ; $ff96 + ld a, [H_MULTIPLICAND] adc c - ld [H_MULTIPLYBUFFER+1], a ; $ff9c + ld [H_MULTIPLYBUFFER+1], a ld a, [H_MULTIPLYBUFFER] ld c, a - ld a, [H_PRODUCT] ; $ff95 + ld a, [H_PRODUCT] adc c ld [H_MULTIPLYBUFFER], a .smallMultiplier @@ -42,47 +42,47 @@ _Multiply: ld a, [H_MULTIPLICAND+1] rl a ld [H_MULTIPLICAND+1], a - ld a, [H_MULTIPLICAND] ; $ff96 + ld a, [H_MULTIPLICAND] rl a - ld [H_MULTIPLICAND], a ; $ff96 - ld a, [H_PRODUCT] ; $ff95 + ld [H_MULTIPLICAND], a + ld a, [H_PRODUCT] rl a - ld [H_PRODUCT], a ; $ff95 + ld [H_PRODUCT], a jr .multiplyLoop .done ld a, [H_MULTIPLYBUFFER+3] ld [H_PRODUCT+3], a ld a, [H_MULTIPLYBUFFER+2] ld [H_PRODUCT+2], a - ld a, [H_MULTIPLYBUFFER+1] ; $ff9c - ld [H_PRODUCT+1], a ; $ff96 + ld a, [H_MULTIPLYBUFFER+1] + ld [H_PRODUCT+1], a ld a, [H_MULTIPLYBUFFER] - ld [H_PRODUCT], a ; $ff95 + ld [H_PRODUCT], a ret _Divide: xor a - ld [H_DIVIDEBUFFER], a ; ff9a - ld [H_DIVIDEBUFFER+1], a ; ff9b - ld [H_DIVIDEBUFFER+2], a ; ff9c - ld [H_DIVIDEBUFFER+3], a ; ff9d - ld [H_DIVIDEBUFFER+4], a ; ff9e + ld [H_DIVIDEBUFFER], a + ld [H_DIVIDEBUFFER+1], a + ld [H_DIVIDEBUFFER+2], a + ld [H_DIVIDEBUFFER+3], a + ld [H_DIVIDEBUFFER+4], a ld a, $9 ld e, a .asm_f6680 ld a, [H_DIVIDEBUFFER] ld c, a - ld a, [H_DIVIDEND+1] ; $ff96 + ld a, [H_DIVIDEND+1] sub c ld d, a - ld a, [H_DIVISOR] ; $ff99 + ld a, [H_DIVISOR] ld c, a - ld a, [H_DIVIDEND] ; $ff95 + ld a, [H_DIVIDEND] sbc c jr c, .asm_f669b - ld [H_DIVIDEND], a ; $ff95 + ld [H_DIVIDEND], a ld a, d - ld [H_DIVIDEND+1], a ; $ff96 + ld [H_DIVIDEND+1], a ld a, [H_DIVIDEBUFFER+4] inc a ld [H_DIVIDEBUFFER+4], a @@ -97,9 +97,9 @@ _Divide: ld a, [H_DIVIDEBUFFER+3] rl a ld [H_DIVIDEBUFFER+3], a - ld a, [H_DIVIDEBUFFER+2] ; $ff9c + ld a, [H_DIVIDEBUFFER+2] rl a - ld [H_DIVIDEBUFFER+2], a ; $ff9c + ld [H_DIVIDEBUFFER+2], a ld a, [H_DIVIDEBUFFER+1] rl a ld [H_DIVIDEBUFFER+1], a @@ -108,13 +108,13 @@ _Divide: ld a, $8 ld e, a ld a, [H_DIVIDEBUFFER] - ld [H_DIVISOR], a ; $ff99 + ld [H_DIVISOR], a xor a ld [H_DIVIDEBUFFER], a - ld a, [H_DIVIDEND+1] ; $ff96 - ld [H_DIVIDEND], a ; $ff95 + ld a, [H_DIVIDEND+1] + ld [H_DIVIDEND], a ld a, [H_DIVIDEND+2] - ld [H_DIVIDEND+1], a ; $ff96 + ld [H_DIVIDEND+1], a ld a, [H_DIVIDEND+3] ld [H_DIVIDEND+2], a .asm_f66d1 @@ -123,22 +123,22 @@ _Divide: jr nz, .asm_f66d7 dec b .asm_f66d7 - ld a, [H_DIVISOR] ; $ff99 + ld a, [H_DIVISOR] srl a - ld [H_DIVISOR], a ; $ff99 + ld [H_DIVISOR], a ld a, [H_DIVIDEBUFFER] rr a ld [H_DIVIDEBUFFER], a jr .asm_f6680 .done - ld a, [H_DIVIDEND+1] ; $ff96 - ld [H_REMAINDER], a ; $ff99 + ld a, [H_DIVIDEND+1] + ld [H_REMAINDER], a ld a, [H_DIVIDEBUFFER+4] ld [H_QUOTIENT+3], a ld a, [H_DIVIDEBUFFER+3] ld [H_QUOTIENT+2], a - ld a, [H_DIVIDEBUFFER+2] ; $ff9c - ld [H_QUOTIENT+1], a ; $ff96 + ld a, [H_DIVIDEBUFFER+2] + ld [H_QUOTIENT+1], a ld a, [H_DIVIDEBUFFER+1] - ld [H_QUOTIENT], a ; $ff95 + ld [H_QUOTIENT], a ret |