-
Notifications
You must be signed in to change notification settings - Fork 280
Home
#Architectures
Current development target. Supports Z80 and clones with banked memory and suitable I/O devices.
Supported using the banked model. The main gap is finishing off and testing the (ex ELKS) hole based memory allocator for the Z180 style base/limit registers.
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 ought to be sufficient for a disk swapping model.
Core code builds with gcc 6809. No long long so would need some fiddling to get time_t right. Tools have been updated to include big-endina fs support but no userspace build yet. Code is very tight, size is smaller than Z80. With no framebuffer/font drivers probably usable on a straight 64K box with paging to hard disc (as original UZI did on Z80)
Not yet scoped
This has a gcc that ought to work for the 99/4A and Geneve. The Geneve had 8 x 8K pages with flexible banking and hard disks etc. However the TI is a completely different instruction set to anything mainstream
#Compilers
- SDCC 3.4.1 (Z80)
- gcc + lwtools (6809)
- CC65 (6502), currentish git snapshot needed
#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.....). Root fs mounts but floppy driver seems to load wrong data once we step off track 0
##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 Partly sketched out. Good enough to boot an MSX emulator with a MegaRAM, find the MegaRAM and set it up, or with an MSX2 mapper. MSX1 port has some experimental code to find disk ROMs but not yet any drivers for that or keyboard.
##MTX512 Boots to full userspace under emulation.
Supported Components
- SDX/FDX 80 column display
- Keyboard
- SDX floppy (not FDX)
- Silicon disc
- Z80 DART serial ports
Unsupported Components
- Sound
- FDX floppy
- Rememorizer
- VDP based 40 column display (partially done)
##N8VEM Mark IV (Z180)
The current Z180 based N8VEM 'DIY' kit board. For more information about N8VEM see http://n8vem-sbc.pbworks.com/w/page/4200908/FrontPage
(The Mark1, Mark2 and Zeta are not currently supported)
Supported Components
- IDE
- Serial
Unsupported Components
- SD Card
- ECB Bus
##P112 (Z180)
A Z180 single board computer available in kit or built form: https://661.org/p112/
With 1MB RAM.
Supported Components
- G-IDE
- Serial
Unsupported Components
- All the rest
##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 Model 4/4P Boots to full userspace under emulation (sdltrs). As there is only 128K of RAM swap is fairly essential.
WARNING this port will currently simply grab your first hard disc and use it as swap. Partitioning and labelling are not yet done. Do not boot it on a real system without making backups!
Supported components
- Text mode console
- 128K base memory banks (no other expanders yet)
- Floppy controller
- WD1010 hard disk controller
- Serial (untested)
- RTC at 0xB0-0xBF
Unsupported
- Double sided disks
- Single/double density detection
- Radio Shack add on graphics card
##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)
##ZX128 Sinclair Spectrum 128 and related platforms. See https://github.com/atsidaev/FUZIX/commits/master
There are multiple machines which allow only the low 32K to be banked (or have other effective rules that cause this limit). Some of the code for this is now in BANK32 but it needs the proof of concept finishing. In particular the uarea stash must move depending upon the program size.
- Microbee. Only the low 32K is banked, but some options to stuff things in add on ROM
- N8VEM Mark 1 and Mark 2: Only the low 32K is banked (but there are lots of banks)
Other possible targets that appear sufficiently capable
- ABC806
- Amstrad CPC series (would really need SDCC's linker to be fixed to support generating banked 16K targets for the ROM area)
- Amstrad PCW16
- C128+ in Z80 mode
- Camputers Lynx
- Coleco Adam
- N8VEM Mark 4 (Z180)
- Newbrain
- Sam Coupe
- 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) (see ZX128)
- Sord M5
- Some of the Sharp MZ systems as supported in MZIX.
- Tatung Einstein 256. This bizarre machine has 64K of RAM, and 192K of graphics RAM which is not directly CPU accessible but large chunks of which could be used for paging.
- Later Thompson DCM series machines (mostly sold in France). This would be a difficult port due to the small banked memory window
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
Fuzix: because small is beautiful