1
0
Fork
You've already forked FUZIX
0
forked from EtchedPixels/FUZIX
FuzixOS: Because Small Is Beautiful
  • C 71.2%
  • Assembly 23%
  • Makefile 2.9%
  • Roff 1%
  • Limbo 0.4%
  • Other 1.3%
Find a file
Alan Cox 0ab376d665 armm0: newer gcc defaults to C23 but our code is in real C
C23 makes bool and true and false keywords which breaks tons of stuff. It's
the right thing for the language to have done but we have to remain compatible
with actual older C compilers and standards so we can't use this behaviour.
2025年12月07日 15:54:34 +00:00
.github/workflows CI: Add PPA for updated esptool package for esp32 2025年08月28日 09:32:22 +02:00
Applications 2048: correct pico makefile 2025年12月07日 15:53:58 +00:00
Build dragon-mooh: Use new XRoar mooh-crt9128-stderr option in CI test 2025年08月24日 17:04:50 +02:00
docs docs/68hc11: Fix a typo 2021年08月22日 01:04:15 +01:00
GUI GUI: update test work 2024年09月01日 13:19:47 +01:00
Images git: additional gitignore 2025年03月07日 19:32:14 -07:00
Kernel pico: Fix binutils fail with newer binutils 2025年12月07日 15:26:48 +00:00
Library armm0: newer gcc defaults to C23 but our code is in real C 2025年12月07日 15:54:34 +00:00
Patches ptches: move 2023年10月10日 00:33:21 +01:00
Standalone Standalone/filesystem-src/: new .gitignore 2025年01月27日 15:43:36 +00:00
Target armm0: newer gcc defaults to C23 but our code is in real C 2025年12月07日 15:54:34 +00:00
Tools 8070: add Tools rule 2025年05月01日 13:55:33 +01:00
.gitignore Save about 6K of RAM 2024年04月03日 16:29:40 -06:00
BUILD_REQUIREMENTS.md BUILD_REQUIREMENTS: correct outdated information on 8080 and Z80 2024年04月25日 12:36:18 +01:00
CodingStyle.md codingstyle: fix typo 2022年05月30日 12:29:35 +01:00
ContributionRules ContributionRules: add explicit ban on CodePilot 2022年07月24日 14:28:23 +01:00
CREDITS CREDITS: this was fixed remove the FIXME 2019年03月02日 21:00:36 +00:00
INSTALL INSTALL: correct paths 2025年01月01日 14:02:18 +00:00
LICENCE LICENCE: clarify 2015年03月18日 22:52:03 +00:00
Makefile Created port for Amstrad with standard memory expansion using thunked memory model. 2025年04月11日 14:02:14 +02:00
README.68000.md 68000: warn about buggy gcc 2023年04月06日 02:18:36 +01:00
README.binfmt README.binfmt: update to reflect what actually happened 2020年02月10日 23:23:01 +00:00
README.md README: update 6800 status 2024年12月18日 17:30:03 +00:00
ReleaseNotes-0.3.md ReleaseNotes: old notes to .md and rename 2023年05月03日 11:17:59 +01:00
ReleaseNotes.md tm4c129x: this platform can support two kinds of the tm4c129x boards: DK and EK 2023年07月16日 09:08:42 +01:00
SECURITY.md Security policy, sigh 2023年07月21日 21:45:36 +01:00
STATUS.md STATUS: update 2024年07月04日 19:46:09 +01:00
version.mk version: switch to 0.5 2023年08月25日 16:05:04 +01:00

** ENGINEERING WORK IN PROGRESS **

The Z80 side of the tree is currently moving to the new compiler including work on the compiler, linker and kernel. Thus some bits of it require you have absolutely bleeding edge pieces all around. I would suggest avoiding working on this tree for Z80 stuff right now. Non Z80 should be just fine.

FuzixOS: Because Small Is Beautiful

This is the initial public tree for the FuzixOS project. It is not yet useful although you can build and boot it and run test application code. A lot of work is needed on the utilities and libraries.

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

Pre-built images

Some pre-built filesystems are now available on www.fuzix.org, and other images should follow in time.

Supporting Fuzix

As this gets asked a bit. The best way to support Fuzix is to contribute code and/or docs. It's really an art project in computing.

If you want to spend money then please just buy a homeless person a pizza or a coat or something like that. If you are changing electricity suppliers in the UK to Octopus then signing up through this link gets both of us 50ドル. Not an endorsement, Octopus merely suck less than other UK energy suppliers.

https://share.octopus.energy/amber-calf-514

Tools

For the 6800, 8080, 8085, Z80 and Z180 the code is now built with the Fuzix C Compiler and Bintools which are also in github. See instructions for building them. Some kernels still need the customised SDCC 3.8 from from this github. 65C816 and Z8 are a work in progress moving to this compiler.

6502 is currently built with cc65 and a distribution version should work.

6303/6803 are built with CC6303 (again in this github)

6809 is built with lwtools and the including gcc fork.

Other targets use gcc variants. See the target specific information.

What does FUZIX have over UZI

  • Support for multiple processes in banked memory (as per UZI180) but with Minix style chmem and efficient use of bank allocations.
  • Support for multiple processes via hard disk or non mappable RAM drive switching (as per UZI, UZIX).
  • Support for "real" swapping combined with banked memory.
  • Proper sane off_t and lseek
  • Normal dev_t
  • 30 character filenames
  • Proper sane time_t
  • System 5 signals
  • Posix termios (does all the original UZI tty did but much can be added)
  • Blocking on carrier for terminals
  • Optimisations to avoid bogus uarea copying compared to UZI180
  • 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
  • Address validation checks on all syscall copies
  • Builds with a modern ANSI C compiler (SDCC)
  • Kernel boots to userspace on 6303, 6502, 65C816, 6800, 68000, 6803, 6809, 68HC11, 8080, 8085, arm32, esp8266, MSP430 (bitrotted) and eZ80/Z80/Z180
  • Core code can be built for 6303, 6502, 65C816, 68000, 6800, 6803, 6809, 68HC11, 8080, 8085, 8086, arm32, esp8266, MSP430, pdp11, rabbit r2k/r3k and eZ80/Z80/Z180 so should be far more portable
  • Core architecture designed to support building and maintaining multiple target machines without forking each one
  • Helpers to make many bits of implementation wrappers to core code
  • Lots more bugs right now

What does UZI have over FUZIX

  • Can run in 64K of RAM (32K kernel/32K user). FUZIX needs banked ROM or similar to pull this off. If you have banked ROM then our kernel footprint in RAM is about 8K plus userspace plus any framebuffers and similar overhead. On a 6809 it's just about possible to run in a straight 64K

What do the UZI branches have that FUZIX has not yet integrated

  • Symbolic links (UZIX)
  • Various clever fusions of syscalls that may save a few bytes (UZIX)
  • setprio (UZIX)
  • Rather crude loadable drivers (UZIX)
  • 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

  • ptrace, most of ulimit
  • root reserved disk blocks
  • banked executables
  • TCP/IP (in progress)
  • select/poll() (in progress)
  • Support for > 32MB filesystems (but first figure out how to fsck a giant fs on a slow 8bit micro!)
  • Smarter scheduler
  • Optimisations for disk block/inode allocator (2.11BSD)

Tool Issues

  • 6809 gcc and cc65 don't have long long 64bit (for sane time_t)
  • None of the above have an O88 style common sequence compressor
  • CC65 can't handle larger objects on stack, and lacks float support
  • We need a 'proper' 65C816 C compiler