;; #LAYOUT# STD * #TAKE ;; #LAYOUT# * BASIC_0 #TAKE ;; #LAYOUT# * * #IGNORE ; ; Math package - denormalize FAC1 mantissa and adapt its exponent accordingly for division ; div_FAC1_denorm: ; Set FACOV to 0, no need for increased precision here lda #$00 sta FACOV ; Start by moving whole bytes, if possible lda FAC1_mantissa+3 bne div_FAC1_denorm_by_bit ; branch if last byte of mantissa is non-zero lda FAC1_exponent cmp #$08 bcc div_FAC1_denorm_by_bit ; branch if not suitable to increment exponent by 8 ; Increment exponent sbc #$08 ; Carry already sec sta FAC1_exponent ; Move mantissa bytes lda FAC1_mantissa+2 sta FAC1_mantissa+3 lda FAC1_mantissa+1 sta FAC1_mantissa+2 lda FAC1_mantissa+0 sta FAC1_mantissa+1 lda #$00 sta FAC1_mantissa+0 beq div_FAC1_denorm ; branch always div_FAC1_denorm_by_bit: lda FAC1_mantissa+3 and #$01 bne div_FAC1_denorm_done ; branch if lowest bit of mantissa is already 1 lda FAC1_exponent beq div_FAC1_denorm_done ; branch if not suitable to decrement exponent ; Decrement exponent dec FAC1_exponent ; Move mantissa bits clc ror FAC1_mantissa+0 ror FAC1_mantissa+1 ror FAC1_mantissa+2 ror FAC1_mantissa+3 bcc div_FAC1_denorm_by_bit ; branch always div_FAC1_denorm_done: rts