Zeal 8-bit OS Release v0.3.0
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:
- Implemented an SDCC interface to be able to use SDCC's standard libraries (stdio, stdlib, ...)
- Implemented an internal routine to get the current date from the kernel or the drivers
- Implemented ZealFS filesystem, accessible in both read and write (https://github.com/Zeal8bit/ZealFS)
- Added a text video interfaces (both ABI and API) for moving cursor on screen, modifying background/foreground color, clearing the screen, etc...
- Added a keyboard interface (both ABI and API) to switch between modes (cooked, raw, ...) and defining keyboard keys value
- Modified driver interface to remove unnecessary offset on the stack
- Modified VFS to be able to open disks as block devices
- Modified "Time" to "Timer" in the boot banner
- Fixed a bug in the VFS layer that altered BC registers when invoking
close
syscall - Fixed a bug in the disk layer that returned the wrong filesystem in some cases
- Fixed a bug that corrupted an opened device when closing a duplicate of it
- Fixed a bug in the disk layer that didn't adjust file size when writing new data to it
- Fixed a bug in the driver layer that skipped entries when searching a driver by name
- Fixed two bugs in the VFS layer related to absolute path calculation
- Fixed wrong
O_CREAT
value in VFS header file - Simplified driver initialization error message
- Updated description for the some routines in
strutils
module - Updated
README
andCopyrights
to 2023
Target support changelog:
The only supported target at the moment is still Zeal 8-bit Computer here are the changes related to it:
- Implemented text video interfaces (cursor and colors) for both the UART driver and video driver
- Implemented an I2C EEPROM driver which uses the newly implemented ZealFS filesystem
- Implemented a simple
setdate
routine, called whensetdate
syscall is invoked - Modified I2C driver to generate a much cleaner signal, which has a 50% duty-cycle
- Modified I2C driver to have a write function that accepts two buffer: one for register address, one for data
- Modified UART driver to clear the screen and set background color when used as default video output
- Fixed a bug that affected UART lines when sending data on the I2C bus
- Fixed video text driver to only clean a line when scrolling down
- Fixed a major bug in the keyboard driver that corrupted user memory and dropped some events
- Disabled VBLANK interrupts as it is unused on real hardware at the moment
The romdisk, which should be target independent, also saw several changes:
- Added "cp" command to copy files around
- Added "clear" command to clear the screen
- Added "hexdump" command to show any file content in hexadecimal
- Modified "exec" to be able to pass parameters to programs invoked
- Modified "exec" to make it implicit. It is now possible to execute programs by giving a path to them
- Fixed a bug "less" command that overrode original error when
close
was invoked - Fixed the way empty commands are handled after being trimmed
- Updated error messages to reflect new errors