Skip to content

Architectural Assumptions Comparisons

EtchedPixels edited this page Feb 16, 2019 · 6 revisions

FUZIX derives from UZI and UZI180. It inherits the following basic assumptions

  • There is a timer interrupt with reasonable precision or an RTC. If an RTC is present then FUZIX will use it as a free running seconds clock to keep system time. It does not directly use the RTC time, which keeps it immune from inconveniences like non Y2K safe RTC chips.

  • Block devices do not sleep. This is generally a good assumption for many 8bit machines (minus perhaps floppy motor spin up). It could be fixed easily to become "File I/O is single threaded" - which is no different to say Minix and would improve the floppy disk behaviour. There is also scope to further use this assumption to push some of the inode cache to disk state while keeping the file open. This assumption runs very deep into the design of UZI and thus FUZIX. If you have a smaller memory box that has a CPU and memory subsystem where it's worth doing filesystem stuff in parallel see 2.11/RetroBSD instead.

  • A 64bit type is available for time_t for userspace (or is wrapped). The kernel now uses helpers and only requires a 32bit type is available.

It benefits from but does not need

  • Serial interrupts (often missing on CP/M boxes)
  • Block device interrupts

Compared with ELKS it lacks

  • Sleeping block I/O
  • Dynamically sizeable executable layouts

The latter one really ought to be addressed eventually.