mirror of
https://github.com/byteworksinc/ORCALib.git
synced 2025-02-06 13:30:40 +00:00
Most files already used spaces, but three used tabs for indentation. These have been converted to use spaces. This allows the files to be displayed with proper formatting in modern editors and on GitHub. It also removes any dependency on SysTabs settings when assembling them. The spacing in fpextra.asm was also modified to use standard column positions. There are no non-whitespace changes in this commit.
117 lines
2.5 KiB
NASM
117 lines
2.5 KiB
NASM
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
|
|
*
|
|
* Note: This avoids calling FX2C on negative numbers,
|
|
* because it is buggy for certain values.
|
|
*
|
|
****************************************************************
|
|
*
|
|
~CompPrecision start
|
|
tsc round to integer
|
|
clc
|
|
adc #4
|
|
pea 0
|
|
pha
|
|
FRINTX
|
|
lda 4+8,s
|
|
pha save original sign
|
|
asl a force sign to positive
|
|
lsr a
|
|
sta 6+8,s
|
|
tsc limit precision
|
|
clc
|
|
adc #6
|
|
ldy #0
|
|
phy
|
|
pha
|
|
phy
|
|
pha
|
|
phy
|
|
pha
|
|
phy
|
|
pha
|
|
FX2C
|
|
FC2X
|
|
pla restore original sign
|
|
bpl ret
|
|
lda 4+8,s
|
|
ora #$8000
|
|
sta 4+8,s
|
|
ret rtl
|
|
end
|
|
|