Skip to content
EtchedPixels edited this page Sep 16, 2018 · 39 revisions

Architectures

Z80

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.

Z180

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.

6502

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.

65C816

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.

6809

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.

MSP430

Somewhat bitrotted port with userspace and shell. Very tight on memory

6811K0 etc

Core kernel code built, currently putting together a 68HC811 board and developing the boot ROM for it.

68000

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.

8086

Core code builds with gcc toolchain, basics of a PC port slowing being added.

PDP/11

Core code builds with gcc and some of the minimal asm bits sketched out.

Compilers

  • SDCC 3.6 (Z80)
  • gcc + lwtools (6809)
  • CC65 (6502, 65C816), currentish git snapshot needed
  • GCC (68000, 8086, MSP430, 68HC11, PDP-11)

Platforms

Currently the following systems are supported to some degree. See the Kernel/platform-foo/README for each platform for more information

Current Ports

  • Amstrad NC100/NC200
  • Dragon 32/64 with MOO or Spinx cartridge
  • Memotech 512
  • Microbee series
  • MSX2
  • N8VEM/RBSBC v2
  • N8VEM Mark 4
  • Multicomp 09 (FPGA 6809 system)
  • P112
  • RC2014 (512K banked and 64k+ROM both require the RTC card)
  • SC108 (not yet released)
  • 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 V1
  • Zeta V2

In Progress

  • Amstrad PCW8256 series
  • Cromemco
  • EACA Video Genie with EG64 banked memory (or TRS80 with clone of EG64 such as the Lubomir Soft Banker)
  • LNW80
  • Nascom/Gemini
  • Sam Coupe

Bitrotted

  • MSP430fr5969
  • ZX128

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

File System

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.

Tools

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