Fuzix 0.3 Release Notes
Fuzix 0.3 is the third major release of the Fuzix OS. This release has mostly
been focussed upon kernel improvements and supporting more platforms,
particularly ZX Spectrum derived ones. The 68000 code base is now usable
but not entirely debugged and optimized. 8080 and 8085 support has been added.
There is now a documentation directory and rules to build it
into something. It's still very incomplete and badly formatted
Fuzix 0.4 will break ABI compatibility big time. There are a pile of bad
and historic design decisions and behaviours that need to be dealt with.
User Space Changes
New Commands: tty, vile, sok, fweeplet (Zork engine), fsh (sh with editing)
Main Improved commands:
- cp,mv,ln now taken from Heirloom so full Unix style commands
- dd can use stdin/stdout
- fweep now generally available
- sh now correctly handles out of memory
- ucp now behaves correctly if you ls a file.
- sort is now based on a different smaller codebase.
- fsck check on a clean file system is much faster.
- Some systems had fd first not hd first. This has been unified so on platforms where 0 was fd0, it's now 256 and hda is 0. If you use the fd or hd names at boot prompts then it's not visible
Amstrad PCW 8256 with CF adapter (minimal early port)
Simple80 (in test)
Tiny68K (for 68K development - very glitchy still)
Cromemco with 16FDC and 8" disks
Grant Searle Z80 CP/M design with small modifications
Linc80 with extra 16K RAM card
Pentagon 1024 with NemoIDE
RC2014 with 6502 Processor (emulation only board debug in process)
RC2014 with 8085 Processor
Sam Coupe (minimal port only at this point), Atomlite IDE
Small Computer Central
SC108 Z80 128K RAM, CF
SC111 Z180, 512K RAM, CF
SC114 Z80 128K RAM, CF
SBC2G (Grant Searle style system with banked memory)
Scorpion with NemoIDE
Timex TC2068/TS2068 with DivIDE and Fuzix on a cartridge
Tom's SBC (with small mods)
Video Genie with EG64B banker (and in theory TRS80 + Lubomir soft banker)
Z80 Membership card
ZX Spectrum 128K with DivIDE or DivMMC
ZX Spectrum +3 with ZXMMC or similar
Existing Supported Systems
Amstrad NC100 with 1MB SRAM card
Amstrad NC200 with 1MB SRAM card and floppy disk drive
Dragon 32/64 with Spinx or MOOH cartridge
DX Designs P112 with 1MB RAM and G-IDE
EACA Video Genie (with suitable banked memory)
LNW Research LNW80 with suitable banked memory (TRS80 Model 1 compatible bits)
Memotech MTX512 with SDX disk (no Rememorizer or Rememotech support)
Microbee 256TC or Premium with 128K+ RAM and ideally hard disk
Multicomp09 with at least 128K RAM
RBC(*) Mark IV with optional PropIO V2
RBC(*) SBC v2 with optional PPIDE and/or PropIO V2
RC2014 SBC with 512K ROM/RAM, CF, SIO and RTC
RC2014 SBC with banked ROM, 64K RAM, CF, SIO and RTC
SOCZ80 (128MHz FPGA Z80 platform)
Tandy COCO2 with Cloud 9 IDE, or COCOSDC card and Fuzix partly in cartridge
Tandy COCO3 with suitable disk interface
TRS80 Model I/III with a hard disk and a supported banked RAM expansion
TRS80 Model 4/4D/4P 128K RAM
(*) Formerly N8VEM now RBC (RetroBrewComputers)
Apple IIc : initial investigations
Atari ST : in progress
EZRetro : minimal development port for ez80
Gemini : early design
Lucas Nascom : early design
MSX1 : works in very limited configuration only
Pentagon : needs the 0.4 ABI changes to be possible
ZX Uno : for now run the 128K ZX Spectrum version as this also knows about some Uno features
Z80BIOS : experiment to see if things like S100 can be supported by having a Z80 BIOS akin to the CP/M BIOS etc.
Z280RC/ZZ80RC : early sketches
New Virtual Platforms (Emulation Platforms For Fun or Development)
- v8080 : an 8080 development environment
- v85 : an 8085 development environment
Existing Virtual Platforms
- V65C816 : 65C816 emulation work
- V68 : 68000 development work
- Z80Pack : Very flexible Z80 banked system emulator
- MSX2 : needs a major rework and clean up
Major Changes To Existing Platforms
- Dragon-MOOH : now it's own port with full MOOH paging support.
- MTX : Support for CFX-I CFX-II, some rememorize support, base MTXPlus support, extra keys on PC adapter. Lots of bug fixes.
The Library/Application support has been built for
6502: no FP
65C816 no FP, using 6502 modes
6809 FP needs debug
68000 FP needs debug
68HC11 test only
8080/8085 no FP
8086 test only
NS32k test only
PDP11 test only
Rabbit2000 test only
Z80 soft FP
Z180 soft FP
eZ80 soft FP, needs a very recent SDCC
- New memory banking model for 16K banks with a fixed common
- Timer handling optimized massively.
- Correct handling of platforms with an optional RTC when it is not present
(previously clock would drift or not run)
- Correct problems if the console had carrier detect and could be hung up
- Fix races in carrier and hangup logic
- Clear error bits correctly on Z80 SIO
- Printer ioctls added
- 6502 platform support now complete including signal handling
- eZ80 support
- Z80 memory model support for machines with no usable common RAM
- Z80 switch to a software interrupt disable tracker rather than doing the expensive NMOS Z80 workaround
- Z80 memory model support for 32K/32K split
- 8080/85 platform support complete
- 68000 flat memory model
- /dev/sys ioctl framework for platform / cpu specific ioctls
- Unified lots of drivewire code
- Support for "swapon"
- Single process in memory systems not run parent first after fork. That
usually means that we hit waitpid() and avoids an extra set of swaps.
- Base support for Z180 CPU dropped into a Z80 environment
- Clock set from root fs superblock timestamp on start up. This avoids clocks
going backwards and usually means the date is right when you boot and get
- Use uint_fast8_t for platforms where uint8_t is slow, or the compiler sucks
at handling them.
- Move repeated swap helper into partition code.
- udata offsets are now properly offsets of a symbol so it isn't repeated
in kernel.def and can't end up wrong.
- Support byte-swapped IDE
- Termios masking in the core code to make termios handling in drivers easier
- Z80 handling of NULL trap no longer crashes the system
- Fix crash case where we could swap out a zombie process
- Fixed some confusion around di and int_disabled state when making calls
to banking code. A more general fixup will happen in 0.4
- Microbeee totally mishandled memory banking but happened to sort of work.
The bank rules are now corrected.
- A failed fork corrupted memory.
- Correct various problems with '..' transition introduced in older changes
- Lots of platforms mishandled buffer reclaim of spare memory. Correct this
and extract the code where possible.
- Fix a tty and pre-emption deadlock
- corrected bugs in valaddr() range checking
- Fixed termios handling bugs in init
- Fixed 5bit wide character default bug in boot up
- cpuinfo no longer faults on Z180
- isatty is much cleaner and simpler
- ttyname is usually much faster
- device name finding routines sped up a lot for the usual case
- 6809 double is 4 bytes not 8.
- curses handling of ROWS/COLS fixed also of wgetch(). ERR is now -1 so
control-A is not confused.
- New mini readline library