-FUZIX
-=====
-
-FUZIX is a fusion of various elements from the assorted UZI forks and
-branches beaten together into some kind of semi-coherent platform and then
-extended from V7 to somewhere in the SYS3 to SYS5.x world with bits of POSIX
-thrown in for good measure. Various learnings and tricks from ELKS and from
-OMU also got blended in
-
-What does FUZIX have over UZI
-=============================
-
-o Support for multiple processes in banked memory (as per UZI180) but
- with Minix style chmem and efficient use of bank allocations.
-o Support for multiple processes via hard disk or non mappable RAM
- drive switching (as per UZI, UZIX).
-o The ability to run single tasking on small devices, for bring up
- and for standalone tool execution
-o Support for "real" swapping combined with banked memory.
-o Proper sane off_t and lseek
-o Normal dev_t
-o 30 character filenames
-o Proper sane time_t
-o System 5 signals (half baked)
-o Posix termios (does all the original UZI tty did but much can be added)
-o Blocking on carrier for terminals
-o Optimisations to avoid bogus uarea copying compared to UZI180
-o More modern system call API: 3 argument open, mkdir, rmdir, rename,
- chroot (with correct .. semantics), fchdir, fchmod, fchown, fstat,
- fcntl, setpgrp, sighold and friends, waitpid, setpgrp, nice
- O_NDELAY, O_CLOEXEC, F_SETFL, F_DUPFD etc
-o Address validation checks on all syscall copies
-o Builds with a modern ANSI C compiler (SDCC)
-o Core code can be built for 6809 and 6502 so should be far more
- portable
-o Core architecture designed to support building and maintaining
- multiple target machines without forking each one
-o Helpers to make many bits of implementation wrappers to core code
-o Lots more bugs right now
-
-What does UZI have over FUZIX
-=============================
-
-o Can run in 64K of RAM (32K kernel/32K user). FUZIX would need
- banked ROM or similar to pull this off.
-
-What do the UZI branches have that FUZIX has not yet integrated
-===============================================================
-
-o Minimal TCP/IP (UZIX 2.0). Unfortunately the original TCP was never
-released openly.
-o Symbolic links (UZIX)
-o Various clever fusions of syscalls that may save a few bytes
- (UZIX)
-o setprio (UZIX)
-o Rather crude loadable drivers (UZIX)
-o Use of __naked and __asm for Z80 specific bits to avoid more
- .S files than are needed (UMZIX)
-
-Plus OMU has a really clever function passing trick for open/creat and
-friends, while UMZIX has a neat unified "make anything" function.
-
-What Key Features Are Missing Still
-===================================
-o ptrace, core dumps, ulimit
-o root reserved disk blocks
-o banked executables
-o TCP/IP
-o select/poll()
-o Z180 banking support
-o /dev/tty alias
-o Support for > 32MB filesystems (but first figure out how to fsck
- a giant fs on a slow 8bit micro!)
-o Uptime
-o Smarter scheduler
-o Optimisations for disk block/inode allocator (2.11BSD)
-o CP/M emulator has not yet been ported to FUZIX syscall API
-
-
-Tool Issues
-===========
-o No useful 8086 compiler option (started work on pcc 8086 but help
- needed)
-o 6809 gcc and cc65 don't have long long 64bit (for sane time_t)
-o SDCC has long long bugs and gaps
-o SDCC can generate ROMmable binaries but not banked ones
-o SDCC has no register passing function call support, and for some
- stuff it really shows
-o SDCC generates quite bloaty small applications. Needs research
- on how to improve.
-o None of the above have an O88 style common sequence compressor
-
-
-Platforms
-=========
-o Z80Pack - used as a dev and test environment for both large swapping
- mulitprocess and for small single tasking
-o Amstrad NC100 - real hardware sanity check
-
-Various other platforms are partly filled out to sanity check assumptions
-and start making progress on them. The main need there is now to tackle all
-the billion different ways of interfacing the floppy controllers.
-
-
-
--------------------------- Historical README files ------------------------------
UZI180 - Unix Z80 Implementation for the Z-180 (UZI180)