-
Notifications
You must be signed in to change notification settings - Fork 280
Home
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. 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 8080 port runs on a virtual 8080 emulation. Only the banked model is currently supported although it should be possible to support a single process model given a disk controller with DMA. The compiler used is the ACK 8080 compiler, and this needs to be from at least Feb 16th 2019. Because of the compiler support and some ABI differences 8080 userspace binaries will not currently run on Z80 kernels.
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.8 (Z80)
- gcc + lwtools (6809)
- CC65 (6502, 65C816), currentish git snapshot needed
- GCC (68000, 8086, MSP430, 68HC11, PDP-11)
- ACK (8080,8085)
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
- Linc80 with 16K banked memory
- Memotech 512
- Microbee series
- Multicomp 09 (FPGA 6809 system)
- MSX2
- N8VEM/RBSBC v2
- N8VEM Mark 4
- P112
- RC2014 (512K banked and 64k+ROM both require the RTC card)
- Sam Coupe
- SC108
- 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
- Timex TC2068 with DivIDE/twister and suitable cartridge
- Tiny68K/Tiny68KRC
- Video Genie (aka Dick Smith/TRZ/PMC)
- Zeta V1
- Zeta V2
- ZX Spectrum 128K with DivIDE/DivMMC
- ZX Spectrum +3 with ZXMMC or similar
- Amstrad PCW8256 series
- Cromemco
- EACA Video Genie with EG64 banked memory (or TRS80 with clone of EG64 such as the Lubomir Soft Banker)
- LNW80
- MSX1
- Nascom/Gemini
- MSP430fr5969
- 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
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
Fuzix: because small is beautiful