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 useZOS_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
- Implemented an initial port for the TRS-80 Model-I, as an MMU-less target, click here for more information about it
Agon light
- Implemented an initial port for the Agon Light, as an MMU-less target, thanks to @sijnstra in #8 and #14, click here for more information about it
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 keepinit.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
anduartsnd
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 instrutils.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.