Skip to content
EtchedPixels edited this page Nov 3, 2014 · 39 revisions

#Architectures

Z80

Current development target. Supports Z80 and clones with banked memory and suitable I/O devices.

Z180

Not yet supported. The main gap is finishing off and testing the (ex ELKS) hole based memory allocator for the Z180 style base/limit registers. In theory you could knock something up equivalent to UZI180 using the fixed bank allocator for now.

6502

Core code builds with cc65 (git snapshot). It's larger than the Z80 and 6809 output and it's not clear how practical a 6502 port would ever be given the 6502 limits on stack and zero pages. Disk based single resident certainly ought to be doable however given enough RAM - Superpet perhaps ! To do this properly needs either a system with movable zero pages (Commodore 128 style) or one with 64K crude banks (eg 6509). Straight 6502 with banking out to be sufficient for a disk swapping model.

6809

Core code builds with gcc 6809. No long long so would need some fiddling to get time_t right. Some work likely to be needed. Code is very tight, size is smaller than Z80.

6811K0 etc

Not yet scoped

#Compilers

#Platforms ##Amstrad NC100 Initial target. Runs entirely off PCMCIA memory card. Various things like NMI handling to finish off

Supported components

  • LCD display panel
  • Banked memory (16K flexible banks)
  • Keyboard
  • Serial port (but not yet speed setting)
  • PCMCIA port
  • Printer

Unsupported

  • Sound
  • NMI (suspend/auto-poweroff)

##Amstrad NC200 Runs entirely off PCMCIA memory card. Various things like power buttons to sort out

Supported components

  • LCD display panel (but not yet with the right sized fonts so you'll need a magnifier)
  • Banked memory (16K flexible banks)
  • Keyboard
  • Serial port (but not yet speed setting)
  • PCMCIA port
  • Printer

Unsupported

  • Sound
  • Power button
  • Backlight control
  • Floppy drive

##Amstrad PCW8256/8512/9256/9512/... Obvious target. Bootloader is written to load it as a 'start of day' disc (including graphical progress bar because.....). System code gets to root fs mounting but no floppy driver yet.

##Epson PX-4plus Sketching this out as a test case for "how small can we go". The PX-4plus has 128(120?)K of I/O addressible RAMdisc, 64K of RAM and the ability to overlay a 32K ROM pod over 0x6000-0xBFFF. At the moment this port is just the basic bits fleshed out and compiled to see how the memory map would look and whether it would fit.

There is a PX-4 emulator (and its GPL) but it's for Windows http://homepage3.nifty.com/takeda-toshiya/

##MSX UZIX supported MSX so the pieces to do a port sort of exist, at least for MSX2. However it needs someone who understands the large and complex world of MSX to undertake such a port ##SocZ80 (128MHz T80) The code is actually heavily built upon Will Sowerbutts port to SocZ80 but the SocZ80 bits have not been brought into line with the generic API so it does not currently run. On the TODO list to fix soon. Includes some useful support for modern things like SD card

Supported components

  • USB virtual serial
  • Real serial port
  • MMU (configured for 16K banking)
  • Serial port
  • RAM discs
  • SD card
  • Timer

Unsupported

  • Serial speed setting with newer FPGA firmware
  • Flash memory interface
  • Ethernet on newer FPGA firmware

##Tandy TRS80 Initial code sketched out but boot loader and floppy drivers not yet written. The Tandy has some odd memory banking limits so is probably usefully limited to singletasking mode unless a hard disk is present or one of the big third party or Z180 expanders ##Z80Pack Virtual platform by Udo Munk. This is used for development work as it is easy to reconfigure the memory layout and also to put debugging traps into the emulator.

Supported components

  • Consoles 0-2
  • Memory banking (fixed banks)
  • Virtual Floppy A, B, C, D
  • Virtual Hard Disk I
  • Virtual Hard Disk J (swap)

Other possible targets that appear sufficiently capable include: N8VEM, Sinclair Spectrum +2A/3 (although the banking is quite awkward), Sinclair Spectrum with Interface 1/2 and banked ROM cartridge (this would need some interesting I/O drivers and probably be limited to single tasking if using microdrives as swap), Amstrad CPC series (would really need SDCC's linker to be fixed to support generating banked 16K targets for the ROM area), Microbee (awkward to support binary sizes over 32K however), Sam Coupe, Sord M5, Coleco Adam, Camputers Lynx, C128+ in Z80 mode, Newbrain, ABC806, Memotech MTX512 and some of the Sharp MZ systems as supported in MZIX. Probably a few others too.

#System Calls The following calls are implemented

  • _exit
  • open (3 argument)
  • close
  • rename
  • mknod
  • link
  • unlink
  • read
  • write
  • lseek
  • chdir
  • sync
  • access
  • chmod
  • chown
  • stat
  • fstat
  • dup
  • getpid
  • getppid
  • getuid
  • umask
  • _getfsys
  • execve
  • _getdirent (internals for readdir)
  • setuid
  • setgid
  • time
  • stime
  • ioctl
  • brk
  • sbrk
  • fork
  • mount (no r/o mount yet)
  • umount
  • signal (not all SYS5 signalling yet supported correctly)
  • dup2
  • pause (including timed pause)
  • alarm
  • kill
  • pipe
  • getgid
  • times
  • utime
  • geteuid
  • getegid
  • chroot
  • fcntl
  • fchdir
  • fchmod
  • fchown
  • mkdir
  • rmdir
  • setpgrp (SYS5 style)
  • _uname (uname bits plus sysconf bits)
  • waitpid
  • uadmin (SYS5 style reboot etc)
  • nice
  • _sigdisp (sighold, sigrelse)

#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