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
- Fixed inst_ext, which was completely broken since
last commit, whoops!
- Added a bunch of __builtin_expect()s in all the
critical paths, and now Marathon runs quite noticeably
faster.
- Fixed (I think) all the SDL makefiles
- cpu_thread now stops and waits on a pthread condition variable, rather
than sleep(1)ing and waiting to be pthread_kill()'d. Signals don't
work well on Windows, apparently.
- fopen() now open binary files with the "b" mode
- the keymap red-black tree no longer casts pointers to ints, because
mingw/gcc complains about it
- added a dumb batch script to compile the sdl gui on windows
- {n,h}to{h,n}{s,l,ll} is now handled better on windows
- 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
Restart/shutdown now work (most of the time)
PRAM is now integrated into the GUI
The real time clock sorta works, but is a bit wonky
Full-screen support
Lots of other little bug fixes
- Refactored VIA rega/b implementation
- Timers don't "work" yet, but they work a little better
- Split rega/b into input and output versions
- Fixed a bug that would mistake VIA1 accesses for VIA2
- Added basic support for PRAM and the RTC, although they're not
wired into the GUI yet
- Replaced every *alloc() call with an alloc_pool call, which is
a start toward supporting clean restarts
- Replaced ea_addr, ea_read, ea_write, and ea_read_commit with
jump tables
- Got rid of ~inst() macro in cpu.c
- added a GLUT-based debugger
- Converted condition-code + physical_get/set switch statements to jump tables
- Moved the pmmu_cache lookup code out of translate_logical_addr
- Broke MOVE into move-to-datareg, -from-datareg, and datareg-to-datareg
- Fixed UFS code to ignore high 32 bits of inode size (it sometimes contains garbage)
- Support for zero-length reads in scsi.c + 256kb read/write buffer
- pushing interrupt stack frames now actually changes the priority mask
- Updated the READMEs, screencaps for 0.0.2