Skip to content

Zeal 8-bit OS Release v0.4.0

Compare
Choose a tag to compare
@Zeal8bit Zeal8bit released this 30 Jun 11:54
· 36 commits to main since this release

New release for Zeal 8-bit OS. It is still a beta version, so it is not complete and may still have bugs.

The Operating System is divided in two parts: the kernel, common to all targets and the targets implementation.

Kernel changelog:

  • Added no-MMU feature to support Z80-based computers that don't have any memory mapper, check README for more info
  • Added a standard serial API usable by user programs
  • Added a configuration structure readable from the user programs, to get information about the kernel compiled options
  • Added swap syscall to exchange two opened device descriptors, useful to temporarily override standard input or output
  • Added memory-persistent program feature when exec syscall invoked, on machines that have MMU support
  • Added a hook called after all drivers initialization
  • Added a configuration option to show the mounted disks letters on boot
  • Added an strformat routine to simply and improve logs in the kernel
  • Fixed a bug in user programs written in C that didn't flush the standard output before exiting
  • Fixed examples in kernel_headers to use ZOS_PATH environment variable instead of relative paths
  • Fixed a bug in exec syscall, related to parameter size
  • Fixed missing error enum in the C headers (by @chiralos in #16)
  • Fixed a typo and video area structure fields name

Target support changelog:

Zeal 8-bit Computer:

  • Added Dvorak layout for the PS/2 keyboard
  • Implemented the newly defined serial interface
  • Implemented an experimental CompactFlash driver, currently only read-only and using rawtable filesystem
  • Implemented non-blocking mode for the keyboard driver, useful for writing games
  • Improved I2C driver to allow 16-bit reads, the EEPROM drive now takes advantage of it
  • Updated video driver to use Zeal 8-bit Video Board v1.0.0 hardware
  • Updated video driver to clear the screen on boot
  • Updated video driver to set its color palette on boot
  • Added a driver hook to enable the interrupts
  • Fixed a bug in the UART driver that didn't return send/received bytes count
  • Fixed a compile error when UART is the standard output and the video driver is enabled too
  • Fixed a bug in the get area IOCTL, in the video driver, that wrongly returned an error
  • Fixed a bug in the video driver that didn't report the number of bytes written (by @chiralos in #29)

TRS-80 Model-I

Agon light

Romdisk changelog:

The romdisk, which is target independent, also saw several changes:

  • Moved the project to the root directory to make it common to all targets
  • Added parenthesis parsing in the command line parser (by @sijnstra in #19)
  • Added sleep command
  • Added echo command (by @sijnstra in #19)
  • Added cat command
  • Modified exec command to keep init.bin in memory, on kernel compiled with MMU support
  • Modified the default disk letter by reading the kernel configuration structure
  • Modified Makefile to be compatible with more releases of z88dk's z80asm
  • Modified uartrcv and uartsnd commands to be able to interact with files (by @JasonMo1 in #11)
  • Modified date command to be able to set the date in the RTC (by @chiralos in #17)
  • Modified less command to match its original behavior
  • Optimized parse_hex_digit routine in strutils.asm file (by @sijnstra in #18)
  • Optimized sections (BSS) to make the binary much smaller

Contributors

Thank you very much to the contributors of this release:

About the assets

The assets below are the build for Zeal 8-bit Computer target, compile with the given configuration *os.conf.
The disk image 0x0000_os_with_romdisk.img is meant to be used with the emulator. It has been compiled to run from physical address 0x0000, as shown in the configuration file. It is not suitable for the real hardware that has a bootloader flashed (at 0x0000)
The disk image 0x4000_os_with_romdisk.img is meant to be used with the real Zeal 8-bit Computer hardware as it has been compiled to run from address 0x4000 from ROM.