Skip to content
EtchedPixels edited this page Jan 7, 2023 · 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. 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.

eZ80

Some initial porting but no fully fledged platform.

8080

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.

8085

Very close to the 8080 port this uses the extra 8085 fetures. Only the banked model is currently supported. Currently working on ironing out the bugs in this and a new 8085 C compiler to get the full benefits of the CPU. Runs on the RC2014-8085 platform.

6502

This is a fairly complete port and currently runs on the rc20914-6502 platform. It's difficult to see how to port it to most period 6502 machines as they tend to lack memory (or fill it with ROM), and when they have memory they bank it in strange ways.

65C816

Operating in banked memory mode the 6502 kernel will spot the 65C816 and do some speedups. There isn't currently a native 65C816 compiler that seems suitable. Without banked memory the 65C816 is problematic as the compiler generates constructs that only work with data in bank 0.

6800

Work in progress - debugging the compiler

6803/6303

Fairly complete port for the rc2014-6803/6303 board. There are still some compiler bugs to deal with but it mostly works.

6809

The 6809 platform supports the Tandy COCO2/Dragon 64 with cartridge, the Tandy COCO3, and some other platforms including the FPGA based 'multicomp' and rc2014-680. 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

68HC11

Runs on the rc2014-68HC11 platform with banked memory. Should be fairly portable.

68000

Supports simple one process in memory systems and larger flat memory models. Hardware support includes the tiny68K 16MB system, and the rc2014-68008 prototype board.

8086

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

ARM

Work in progress ports to armm0 (Raspberry Pi PICO) and armm4.

PDP/11

Core code builds with gcc and some of the minimal asm bits sketched out. Currently blocked by binutils bugs.

Tensilica (ESP8266, ESP32)

Platform specific full port for ESP86, basic ESP32 port

Warrex Centurion CPU6

Mostly being used to debug the compiler at this point

Compilers

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