way faster long to float conversion routine, fixes #202

This commit is contained in:
Irmen de Jong
2026-01-13 22:29:34 +01:00
parent cb4ffaa028
commit 620793011e
10 changed files with 193 additions and 105 deletions
@@ -178,6 +178,7 @@ diskio {
ubyte @shared drivenumber
bool iteration_in_progress
uword list_blocks
bool list_case_insensitive
str list_filename
str list_filetype
^^ubyte list_pattern
@@ -202,8 +203,12 @@ diskio {
lf_next_entry () -> bool
lf_start_list (str pattern_ptr) -> bool
lf_start_list_dirs (str pattern_ptr) -> bool
lf_start_list_dirs_nocase (str pattern_ptr) -> bool
lf_start_list_files (str pattern_ptr) -> bool
lf_start_list_files_nocase (str pattern_ptr) -> bool
lf_start_list_nocase (str pattern_ptr) -> bool
list_filenames (str pattern_ptr, uword filenames_buffer, uword filenames_buf_size) -> ubyte
list_filenames_nocase (str lowercase_pattern_ptr, uword filenames_buffer, uword filenames_buf_size) -> ubyte
load (str filenameptr, uword address_override) -> uword
load_raw (str filenameptr, uword start_address) -> uword
loadlib (str libnameptr, uword libaddress) -> uword
@@ -312,6 +317,7 @@ strings {
ncompare (str string1 @R0, str string2 @AY, ubyte length @X) clobbers (X,Y) -> byte @A
ncopy (str source @R0, str target @AY, ubyte maxlength @X) clobbers (A,X) -> ubyte @Y
pattern_match (str string @AY, str pattern @R0) clobbers (Y) -> bool @A
pattern_match_nocase (str string @AY, str lowercase_pattern @R0) clobbers (Y) -> bool @A
rfind (str string @AY, ubyte character @X) -> ubyte @A, bool @Pc
right (str source @AY, ubyte length @X, str target @R1) clobbers (A,Y)
rstrip (str s)
@@ -178,6 +178,7 @@ diskio {
ubyte @shared drivenumber
bool iteration_in_progress
uword list_blocks
bool list_case_insensitive
str list_filename
str list_filetype
^^ubyte list_pattern
@@ -202,8 +203,12 @@ diskio {
lf_next_entry () -> bool
lf_start_list (str pattern_ptr) -> bool
lf_start_list_dirs (str pattern_ptr) -> bool
lf_start_list_dirs_nocase (str pattern_ptr) -> bool
lf_start_list_files (str pattern_ptr) -> bool
lf_start_list_files_nocase (str pattern_ptr) -> bool
lf_start_list_nocase (str pattern_ptr) -> bool
list_filenames (str pattern_ptr, uword filenames_buffer, uword filenames_buf_size) -> ubyte
list_filenames_nocase (str lowercase_pattern_ptr, uword filenames_buffer, uword filenames_buf_size) -> ubyte
load (str filenameptr, uword address_override) -> uword
load_raw (str filenameptr, uword start_address) -> uword
loadlib (str libnameptr, uword libaddress) -> uword
@@ -292,6 +297,7 @@ floats {
csc (float value) -> float
deg (float angle) -> float
floor (float value) -> float
internal_long_to_float (^^long sourceptr, ^^float targetptr)
interpolate (float v, float inputMin, float inputMax, float outputMin, float outputMax) -> float
lerp (float v0, float v1, float t) -> float
lerp_fast (float v0, float v1, float t) -> float
@@ -440,6 +446,7 @@ strings {
ncompare (str string1 @R0, str string2 @AY, ubyte length @X) clobbers (X,Y) -> byte @A
ncopy (str source @R0, str target @AY, ubyte maxlength @X) clobbers (A,X) -> ubyte @Y
pattern_match (str string @AY, str pattern @R0) clobbers (Y) -> bool @A
pattern_match_nocase (str string @AY, str lowercase_pattern @R0) clobbers (Y) -> bool @A
rfind (str string @AY, ubyte character @X) -> ubyte @A, bool @Pc
right (str source @AY, ubyte length @X, str target @R1) clobbers (A,Y)
rstrip (str s)
@@ -216,6 +216,7 @@ diskio {
ubyte @shared drivenumber
bool iteration_in_progress
uword list_blocks
bool list_case_insensitive
str list_filename
str list_filetype
^^ubyte list_pattern
@@ -251,8 +252,12 @@ diskio {
lf_next_entry () -> bool
lf_start_list (str pattern_ptr) -> bool
lf_start_list_dirs (str pattern_ptr) -> bool
lf_start_list_dirs_nocase (str pattern_ptr) -> bool
lf_start_list_files (str pattern_ptr) -> bool
lf_start_list_files_nocase (str pattern_ptr) -> bool
lf_start_list_nocase (str pattern_ptr) -> bool
list_filenames (str pattern_ptr, uword filenames_buffer, uword filenames_buf_size) -> ubyte
list_filenames_nocase (str lowercase_pattern_ptr, uword filenames_buffer, uword filenames_buf_size) -> ubyte
load (str filenameptr, uword address_override) -> uword
load_raw (str filenameptr, uword startaddress) -> uword
load_size (ubyte startbank, uword startaddress, uword endaddress) -> long
@@ -385,6 +390,7 @@ floats {
csc (float value) -> float
deg (float angle) -> float
floor (float value) -> float
internal_long_to_float (^^long sourceptr, ^^float targetptr)
interpolate (float v, float inputMin, float inputMax, float outputMin, float outputMax) -> float
lerp (float v0, float v1, float t) -> float
lerp_fast (float v0, float v1, float t) -> float
@@ -788,6 +794,7 @@ strings {
ncompare (str string1 @R0, str string2 @AY, ubyte length @X) clobbers (X,Y) -> byte @A
ncopy (str source @R0, str target @AY, ubyte maxlength @X) clobbers (A,X) -> ubyte @Y
pattern_match (str string @AY, str pattern @R0) clobbers (Y) -> bool @A
pattern_match_nocase (str string @AY, str lowercase_pattern @R0) clobbers (Y) -> bool @A
rfind (str string @AY, ubyte character @X) -> ubyte @A, bool @Pc
right (str source @AY, ubyte length @X, str target @R1) clobbers (A,Y)
rstrip (str s)
@@ -263,6 +263,7 @@ strings {
ncompare (str string1 @R0, str string2 @AY, ubyte length @X) clobbers (X,Y) -> byte @A
ncopy (str source @R0, str target @AY, ubyte maxlength @X) clobbers (A,X) -> ubyte @Y
pattern_match (str string @AY, str pattern @R0) clobbers (Y) -> bool @A
pattern_match_nocase (str string @AY, str lowercase_pattern @R0) clobbers (Y) -> bool @A
rfind (str string @AY, ubyte character @X) -> ubyte @A, bool @Pc
right (str source @AY, ubyte length @X, str target @R1) clobbers (A,Y)
rstrip (str s)