Commit Graph

25 Commits

Author SHA1 Message Date
pruten
78fbd8235f Refactored a big chunk of newfpu
- the framework for throwing exceptions should work correctly now
- NaNs and signaling NaNs should work
- condition codes are set now
- write-back and rounding (including throwing INEX2) are now implemented

(Note: you can't actually use any of this code yet, and it doesn't actually
       fully implement any fmath_* instructions yet)
2014-10-13 23:21:06 -04:00
pruten
c9adc49a82 More minor tweaks to newfpu 2014-10-07 22:37:22 -04:00
pruten
adc2e16ffd Implemented CAS
It compiles, but I haven't even tested it once. *fingers crossed*
2014-09-28 19:40:16 -04:00
pruten
bb6d1e719f More half-baked newfpu goodness
Once the framework for handling exceptions, accrued exceptions,
condition codes, and rounding is done, I can start implementing
actual "fmath" instructions. Everything not handled by softfloat
will be imprecisely and hackily implemented by using the best
available native float math (e.g. cosf(), cos(), or cosl())
2014-09-28 16:51:08 -04:00
pruten
bb2ec0a27d Working on a total FPU rewrite based on softfloat
5 instructions down, a million more to go
2014-09-27 13:46:57 -04:00
pruten
a0810f55b9 Added a hook for shutdown
To which the Macintosh II usually responds by powering off
2014-09-22 17:02:17 -04:00
pruten
b29c69453e Mostly-working ethernet and various changes
This may break the linux/windows builds - I haven't tried to compile
on those platforms yet.

- Ethernet is more or less working with a hardcoded /dev/tun0 network interface
and hardcoded MAC address, though there's no automatic ifconfig/route
configuration yet.

- Instructions TAS and ILLEGAL are implemented now

- Fixed some bugs in MOVEP

- Implemented some other instruction disassemblers

- Other little changes
2014-09-11 03:40:20 -04:00
pruten
4af4262993 Implemented movep 2014-08-30 05:10:54 -04:00
name
fd31d642b0 Lots of new ethernet-related code (doesn't work yet)
The board is basically implemented. It's just a dummy slot ROM
with no driver or primary/secondary init, that looks enough
like the Apple EtherTalk card. The DP8390 controller chip
has its address space implemented, and some of its registers
work. Lots more work to do on that

With slog() tracing enabled, you can see A/UX try to send a
multicast ethernet frame, then give up waiting for some kind
of response from the chip, then decide that the ethernet
controller is dead and print an error to console
2014-08-27 19:37:26 -04:00
Peter Rutenbar
20fedf386b Improved SCSI a bit.
Apple HD SC Setup still doesn't work, but it won't crash anymore.
Non-existent SCSI devices can no longer be selected
2014-07-28 01:09:16 -04:00
Peter Rutenbar
6773dd6020 Tweaks to SDL GUI, video driver, and FPU
- Fewer FPU-related crashes
- Fewer video driver-related crashes
- Cleaned up the SDL GUI
- Bumped up cocoa GUI to v0.0.4
2014-06-30 16:50:38 -04:00
Peter Rutenbar
305d84faad Very dumb bug fixed, 3.0.1 boots now!
For READ(6) and WRITE(6), SCSI spec says,
"A TRANSFER LENGTH field set to zero specifies that 256 logical blocks shall be written"
Oops
2014-06-23 10:55:41 -04:00
Peter Rutenbar
f051d42597 Resuscitated the toby frame buffer
- Integrated it into the SDL GUI (via the "toby" cli parameter)
- It does not include the card ROM, so it will not run on A/UX 1, 2, or 3
2014-06-15 16:41:06 -04:00
Peter Rutenbar
42fd2a0b4e Fixed some dumbness in that last commit
- #ifdef __LITTLE_ENDIAN__ is not how you check for little endianness
- Also fixed the last pointer-to-int warnings on GCC

Also, shout out to  Neozeed for figuring out how to compile this on windows!
2014-06-14 01:25:37 -04:00
Peter Rutenbar
1bee24316c Now more Windows-friendly
- 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
2014-06-14 00:19:08 -04:00
Peter Rutenbar
952fe7ae89 Linux SDL GUI + bug fixes + printf->slog
- 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
2014-06-09 16:21:12 -04:00
Peter Rutenbar
5c1fdf6b73 VIA Timers + 16/32-bit video support
- VIA timers should probably work now, although it turns out A/UX rarely uses them
  (only during startup to time a dbra loop and other stuff)

- Updated video.c and the fake nubus video card driver to support "thousands"
  and "millions" of colors when 32-bit QuickDraw is available
2014-06-02 00:59:08 -04:00
Peter Rutenbar
d5dd7385b1 Minor twiddling before releasing 0.0.3 2014-05-24 16:35:36 -04:00
Peter Rutenbar
f4f546deb5 Restart + PRAM integrated into GUI + misc
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
2014-05-24 13:39:39 -04:00
Peter Rutenbar
d19c17812c New debugger + inital PRAM/real-time clock + 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
2014-05-10 19:25:31 -04:00
Peter Rutenbar
9f0e6ed115 Speed improvements + little fixes + 0.0.2 release
- 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
2014-04-26 13:35:56 -04:00
Peter Rutenbar
cc2bb3c605 Implemented trapv/trapcc + a few more FPU instructions.
Implemented the divide-by-zero exception.
Made some progress toward 16/24-bit video.
2014-04-19 12:12:15 -04:00
Peter Rutenbar
ba8b9e80d1 Integrated filesystem.c into the gui and cleaned up mem.c 2014-04-11 20:33:35 -04:00
Peter Rutenbar
e82172884e - Made a lot of progress getting 3.0.0 to run.
- Implemented support for reading the kernel from SVFS/UFS filesystems
- Other little changes
2014-04-05 19:20:53 -04:00
Peter Rutenbar
93cefd9451 First big barely-functional code drop 2014-02-24 17:14:52 -05:00