Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
The Z80 codebase supports multiple different retro and hobbyist Z80 platforms. A good minimum configuration is about 96K of RAM plus a hard disk. Banking of some kind is needed for the Z80 port. The linker has been modified so that the kernel can reside in multiple 16K banks at the same address in order to suit platforms like the Spectrum 128K. The Z80 code supports fixed banks with a common area, 16K banks, with single and multiple processes in memory. The kernel uses no undocumented instructions but the SDCC floating point libraries do, however these work fine with Z180 and Z80 FPGA clones. IEEE doubles are not supported but act instead as floats.
Supported using the banked model and the Z80 codebase. Better memory management might be possible with some kind of base/limit memory allocator (perhaps steal the ELKS one), but the current supported platforms tend to have 512K+ memory so it's a non issue at this point.
The 6502 port now runs on the tgl6502 (somewhat bitrotted initial experiments), and on the v65 virtual 6502 platform. You need a reasonably modern cc65 tree to build it. Floating point is not supported and there are some other awkward compiler limits with large stack variables. The current platforms use 16K banking or fixed bank/common.A minimum of 128K RAM is recommended. Signal handling and some pre-emption features are not yet complete and parts of the build still have to be done by hand as the tooling isn't completed.
For smaller systems (up to 512K RAM) this port is now fairly stable. Due to compiler limitations it lacks floating point support and has the same annoying limits as 6502. Signal handling and pre-emption are fully functional but the userspace code does not yet handle nested signals due to issues with saving/restoring bits of zero page. 6502 user space binaries run on the 65C816 port. As we don't have a good open source 65C816 16bit mode compiler there isn't currently a 16bit API. A multi bank kernel can take up to 8MB but Fuzix doesn't scale well to such a 'big' setup.
The 6809 platform supports the Tandy COCO2/Dragon 64 with cartridge, the Tandy COCO3, and some other platforms including the FPGA based 'multicomp'. The 6809 tree is built with gcc6809 and the compactness of the code means it is just about possible to run in 64K of memory with serial console.
Somewhat bitrotted port with userspace and shell. Very tight on memory
Core kernel code built, currently putting together a 68HC811 board and developing the boot ROM for it.
Currently supports single process in memory models aimed at low end SBC platforms. Able to fit under 64K and run protected on platforms that can be jumpered for low 64K protection, and makes proper use of user and supervisor modes. Work in progress to support banked, MMU and eventually 'fake MMU' setups.
Core code builds with gcc toolchain, basics of a PC port slowing being added.
Core code builds with gcc and some of the minimal asm bits sketched out.
- SDCC 3.6 (Z80)
- gcc + lwtools (6809)
- CC65 (6502, 65C816), currentish git snapshot needed
- GCC (68000, 8086, MSP430, 68HC11, PDP-11)
Currently the following systems are supported to some degree. See the Kernel/platform-foo/README for each platform for more information
- Amstrad NC100/NC200
- Dragon 32/64 with MOO or Spinx cartridge
- Memotech 512
- Microbee series
- N8VEM Mark 4 (Mark 1 and 2 are not supported as they lack a timer)
- Multicomp 09 (FPGA 6809 system)
- SocZ80 (FPGA super fast Z80 system)
- Tandy COCO2 with IDE or SD cartridge including flash ROM
- Tandy COCO3
- Tandy TRS80 Model I, III and 4/4D/4P
- Video Genie (aka Dick Smith/TRZ/PMC)
- Zeta V2 (not V1)
- Amstrad PCW8256 series
- EACA Video Genie with EG64 banked memory (or TRS80 with clone of EG64 such as the Lubomir Soft Banker)
- Sam Coupe
Virtual Platforms For Core Debug/Development
- v65 - simple banked 6502 emulator
- v65c816 - simple 65C816 emulator
- v68 - simple 68000 emulator
- z80pack - Z80 system emulator for a Z80 and CP/M, MP/M style machine
Other Potential Targets
There are multiple machines which allow only the low 32K to be banked (or have other effective rules that cause this limit).
- N8VEM Mark 1, Mark 2, Zeta v1: Only the low 32K is banked (but there are lots of banks), just usually no timers. Given a timer card on the ECB the older N8VEM should be a trivial port.
For other possible targets that appear sufficiently capable see the platform review page.
The file system is based upon the UZI file system but has been extended to 30 character filenames and the superblock has an 'epoch' base to allow for time beyond 2038 in a window.
The standalone tools provided are
- Chmem - set the memory slot for a binary
- Fsck - fsck a Fuzix fs
- Mkfs - Make a Fuzix fs
- Ucp - A tool for building and modifying Fuzix file systems. Really wants replacing with a script parsing tool that assembles a file system from a recipe