mirror of
https://github.com/byteworksinc/ORCALib.git
synced 2025-02-12 07:30:28 +00:00
Add new routines to reduce the precision of floating-point numbers.
These will now be used to implement explicit floating-point casts.
This commit is contained in:
parent
0685ce71ca
commit
07959d32eb
97
fpextra.asm
Normal file
97
fpextra.asm
Normal file
@ -0,0 +1,97 @@
|
||||
keep obj/fpextra
|
||||
mcopy fpextra.macros
|
||||
|
||||
****************************************************************
|
||||
*
|
||||
* FPextra - extra floating-point routines
|
||||
*
|
||||
* This code provides routines dealing with floating-point
|
||||
* numbers that are used only by ORCA/C, supplementing the
|
||||
* ones in SysFloat.
|
||||
*
|
||||
****************************************************************
|
||||
*
|
||||
fpextra private dummy segment
|
||||
end
|
||||
|
||||
****************************************************************
|
||||
*
|
||||
* ~SinglePrecision - limit fp value to single precision & range
|
||||
*
|
||||
* Inputs:
|
||||
* extended-format real on stack
|
||||
*
|
||||
****************************************************************
|
||||
*
|
||||
~SinglePrecision start
|
||||
tsc
|
||||
clc
|
||||
adc #4
|
||||
ldy #0
|
||||
phy
|
||||
pha
|
||||
phy
|
||||
pha
|
||||
phy
|
||||
pha
|
||||
phy
|
||||
pha
|
||||
FX2S
|
||||
FS2X
|
||||
rtl
|
||||
end
|
||||
|
||||
****************************************************************
|
||||
*
|
||||
* ~DoublePrecision - limit fp value to double precision & range
|
||||
*
|
||||
* Inputs:
|
||||
* extended-format real on stack
|
||||
*
|
||||
****************************************************************
|
||||
*
|
||||
~DoublePrecision start
|
||||
tsc
|
||||
clc
|
||||
adc #4
|
||||
ldy #0
|
||||
phy
|
||||
pha
|
||||
phy
|
||||
pha
|
||||
phy
|
||||
pha
|
||||
phy
|
||||
pha
|
||||
FX2D
|
||||
FD2X
|
||||
rtl
|
||||
end
|
||||
|
||||
****************************************************************
|
||||
*
|
||||
* ~CompPrecision - limit fp value to comp precision & range
|
||||
*
|
||||
* Inputs:
|
||||
* extended-format real on stack
|
||||
*
|
||||
****************************************************************
|
||||
*
|
||||
~CompPrecision start
|
||||
tsc
|
||||
clc
|
||||
adc #4
|
||||
ldy #0
|
||||
phy
|
||||
pha
|
||||
phy
|
||||
pha
|
||||
phy
|
||||
pha
|
||||
phy
|
||||
pha
|
||||
FX2C
|
||||
FC2X
|
||||
rtl
|
||||
end
|
||||
|
36
fpextra.macros
Normal file
36
fpextra.macros
Normal file
@ -0,0 +1,36 @@
|
||||
MACRO
|
||||
&LAB FX2S
|
||||
&LAB PEA $0210
|
||||
LDX #$090A
|
||||
JSL $E10000
|
||||
MEND
|
||||
MACRO
|
||||
&LAB FX2D
|
||||
&LAB PEA $0110
|
||||
LDX #$090A
|
||||
JSL $E10000
|
||||
MEND
|
||||
MACRO
|
||||
&LAB FX2C
|
||||
&LAB PEA $0510
|
||||
LDX #$090A
|
||||
JSL $E10000
|
||||
MEND
|
||||
MACRO
|
||||
&LAB FC2X
|
||||
&LAB PEA $050E
|
||||
LDX #$090A
|
||||
JSL $E10000
|
||||
MEND
|
||||
MACRO
|
||||
&LAB FD2X
|
||||
&LAB PEA $010E
|
||||
LDX #$090A
|
||||
JSL $E10000
|
||||
MEND
|
||||
MACRO
|
||||
&LAB FS2X
|
||||
&LAB PEA $020E
|
||||
LDX #$090A
|
||||
JSL $E10000
|
||||
MEND
|
5
make
5
make
@ -19,7 +19,7 @@ if {#} == 0
|
||||
unset exit
|
||||
end
|
||||
|
||||
for i in cc ctype string stdlib time setjmp orca fcntl vars toolglue signal int64 fenv
|
||||
for i in cc ctype string stdlib time setjmp orca fcntl vars toolglue signal int64 fenv fpextra
|
||||
Newer obj/{i}.a {i}.asm
|
||||
if {Status} != 0
|
||||
set exit on
|
||||
@ -39,7 +39,8 @@ echo delete orcalib
|
||||
delete orcalib
|
||||
|
||||
set list vars.a assert.a cc.a setjmp.a ctype.a string.a stdlib.a
|
||||
set list {list} time.a signal.a toolglue.a orca.a fcntl.a stdio.a int64.a fenv.a
|
||||
set list {list} time.a signal.a toolglue.a orca.a fcntl.a stdio.a int64.a
|
||||
set list {list} fenv.a fpextra.a
|
||||
for i in {list}
|
||||
echo makelib orcalib +obj/{i}
|
||||
makelib orcalib +obj/{i}
|
||||
|
Loading…
x
Reference in New Issue
Block a user