There may be bugs lurking in it. On my Core i7 macbook pro,
shoebill now runs so fast that SetUpTimeK() on A/UX 3 hangs.
(SetUpTimeK tries to time a dbra loop, and refuses to accept any
speed faster than a certain threshold, which shoebill is now
surpassing. If you see A/UX hanging early in boot, it's probably
that.)
- Added a new specialized cache for instruction stream reads
-- This also lets us distinguish between data and instruction
reads, which the 68020 does. Instruction reads are now done
with the correct function code (2 or 6), although that
doesn't currently fix or improve anything currently
- Added an obvious condition code optimization, dunno how I missed
it earlier
- Other little changes
- Read the 68881 docs for fcmp more carefully, and tweaked it to more
accurately implement the (documented) behavior
- Implemented de-un-normalizing for all x80 softfloat ops
- Some other changes I don't remember - it's my emulator, I can be vague
if I want XD
- (Badly) worked around a clang bug to implement ftentox
- (Very badly) fixed another edge case in fscale
- Found another bug in softfloat (floatx80_to_int32)
-- Not so sure anymore that my floatx80/subnormal math fix works right.
Just figured out that x80's exp is relative to the second mantissa
bit. float128{exp=0x3fff, man=0} == floatx80{exp=0x3fff, man=0x800...}
even though x80 has an explicit bit, the exponents are the same...
SoftFloat's support for subnormal numbers is completely broken
on floatx80. Particularly when the result of an op on a subnormal
number is normal, and vice versa. I'm not completely sure that
my fixes are correct, or that they didn't break anything. I need
to do more testing.
Also fixed an edge case in fscale that gets weird when the
input goes from normal to subnormal... oh, and I still need to
fix the opposite case.
- fgetman, fscale, and fsincos are implemented but not tested at all
- fixed part of a softbug float when converting subnormal numbers between
floatx80 and float128
- also, I checked in the wrong core/Makefile with the last commit.
Re-committing the correct Makefile
Just merged the newfpu branch to master, almost everything
is implemented, but there are clearly lots of problems still.
(According to xcalc, sin(3.1415927) == 0.054803665, which is
pretty far beyond the acceptable error margin.)
A/UX doesn't even come close to booting yet with the new FPU,
but we're getting there. I don't want to trash master with
a code base that doesn't work. Also, I turned off ethernet
in the cocoa GUI, since the TAP driver isn't working right
on 10.10 yet.
- sdl-gui/sdl.c is a tiny, basically working SDL2-based GUI that can compile and run on linux.
It still needs PRAM integration and a config file.
- Fixed a dumb bug in shoebill_initialize that was causing sporadic crashes
- Replaced a million printf() calls with slog(), to make the SDL client run more quietly on the CLI
- Added more corruption checking to alloc_pool