Any how, you don't need look up table to convert 16-bit fixed points into decimal 😄
The shortest and fastest code for 16-bit fixed points to decimal conversion
that I had come up with would be:
: zeroes 0 0 0 0 0 0 0 0 0 0 0 0 : decimal_result 0 0 0 : decimal_fractional_part 0 0 0 0 0 0 0 0 0 : convert_16_bit_fixed_point_to_decimal # v0 : Hi-byte # v1 : Lo-byte i := decimal_result bcd v0 vF := v1 i := zeroes load v8 v0 := vF # extract decimal of the whole 8-bits decimal_extract_bit decimal_extract_bit decimal_extract_bit decimal_extract_bit decimal_extract_bit decimal_extract_bit decimal_extract_bit decimal_extract_bit # what font index is a dot point v0 := DOT_POINT # store the result i := decimal_fractional_part save v8 return : decimal_extract_bit # performs reverse double-dabble v0 >>= v0 if vF != 0 then v1 += 10 v1 >>= v1 if vF != 0 then v2 += 10 v2 >>= v2 if vF != 0 then v3 += 10 v3 >>= v3 if vF != 0 then v4 += 10 v4 >>= v4 if vF != 0 then v5 += 10 v5 >>= v5 if vF != 0 then v6 += 10 v6 >>= v6 if vF != 0 then v7 += 10 v7 >>= v7 if vF != 0 then v8 += 10 v8 >>= v8 return