ELKS v0.7.0
ELKS v0.7.0 Downloads
Prebuilt disk images for floppy and hard disks are downloadable below from Github Assets for this release. These images can be used to boot from PC/XT/AT or PC-98 hardware, or emulators, such as QEMU or dosbox-x. The images are built with network support by default, supporting NE2K, WD and 3Com NICs. See the Wiki HowTo for more information.
ELKS v0.7.0 Enhancements
Thank you to all who contributed to ELKS enhancements, bug identification, testing and fixes. The system continues to be very stable, with no known crashes and long uptimes.
New Systems Supported
- MK-88 Russian IBM PC/XT compatible (8088 clone CPU), K1810BM88 w/256k RAM. Use CONFIG_HW_MK88 (@Vutshi)
- Monotech NuXT 2.0 board (NEC V20 CPU) using Sergey Kiselev’s BIOS (@tt1542)
- Book 8088 IBM PC/XT compatible laptop (8088 or NEC V20) (@tt1542, @Vutshi)
- Extensive testing of older IBM 5160 PC/XT/AT and Amstrad 1640 (@toncho11)
New Commands
- Port
mail
application from MINIX (@ccoffing) - Add
fm
visual file manager - Add
disasm
for ELKS binary file symbolic disassembler - Add
cons
to display console screen from remote console - Add
ttyinfo
for testing mouse and ANSI arrow, function key and mouse parsing - Add
hostdisasm
for host-based ELKS disassembler - Add tiny
min_init
replacement for /bin/init on very small systems - Add
matrix
screen saver - Port text adventure game
advent
from Fuzix - Port
sl
(train) program for mistypedls
- Port
split
from BSD 4.3reno (@Mellvik) - Support D-Flat Project and
memopad
editor application - Add
ps
,edit
(visual screen editor), andfsck
to 360k floppy - Add
nxtetris
to 1440k floppy
Updated Commands
- Enhance
meminfo
to include process names - Fix
cron
memory leak, other fixes (@ccoffing, @ghaerr) - Fix
tinyirc
to operate using ping/pong protocol (@Redfoxymoon, @DutchComputerKid) - Use PATH_MAX in all applications to prevent buffer overflow (@ccoffing)
- Nano-X won’t display cursor when no mouse present
- Fix
login
handling on locked accounts, no home dir or long login name (@ccoffing) - Fix
passwd
to work on FAT filesystems - Update
nxtetris
to work at constant speed and no mouse (adds GrGetNextEventTimeout) - Update
disasm
disassembler from 86sim project, add symbolic disassembly to ELKS binaries - Add
disasm -k
option to disassemble running kernel with symbols, -a for asm input - Update
ls
for better operation with deeply nested directories and no permissions (@ccoffing) - Update
ash
for invalid TERM variable checking (@ccoffing) - Fix
xargs
with long input lines (@ccoffing) - Fix possible memory corruption with
dd
errors (@ccoffing) - Add MOUSE_PORT=none for all Nano-X applications
- Cleanup cmds source tree to remove many compilation warnings
- Fix
screen
to run from FAT filesystem - Remove
pwdauth
,prems
and mtools from distribution image - Rename all test programs /bin/test_xxx
- Fix various
tr
bugs and crashes (@ccoffing) - Fix
ash
build error on non-standardrindex
/index
definitions (@ccoffing) - Fix
fsck
out of memory problem, display issues and -r (@Mellvik, @ghaerr) - Update
mount
anddf
to display free space and all mounted filesystems (@Mellvik) - Fix
fm
stack overwrite - Use default drive for
fdisk
when none specified (@Mellvik) - Fix
find
stack overflow - Fix sometimes improper time sort and display using
ls -l
- Enhances
more
to clear screen and display (END) - Use
cp -R
insys
to fix large copy on large /bin directories (@Mellvik) - Add PEEK and POKE to
basic
(@tyama501) - Rename
mined
toedit
(MINIX visual editor) - Fix
hostbasic
for compilation on macOS - Enhance
fsck
to use main memory, works on 65Mb MINIX filesystems
Networking
- Add multi-NIC network support, allows linking all NIC drivers at once
- Major update for NE1K NIC in 8-bit mode, use 8k buffer (@Mellvik)
- Cleanup NE2K driver (@Mellvik)
- Major WD driver enhancements for speed and reliability (@Mellvik)
- Support /bootopts flags in all NIC drivers (@Mellvik)
- New Etherlink III/3C509 NIC driver (@Mellvik)
- Add optional 8390 chip check
Boot and Runtime Configuration
- UMB address set in /bootopts
- Add blink16.config to allow symbolic kernel debugging using
blink16
- Decrease group ID numbers in /etc/{passwd,group} from 501 to fit in byte for kernel
- Optional
uname -v
in /etc/profile to show build commit number - Enhance
makeboot
functionality with new options (@Mellvik) - Fix MINIX filesystem boot when root directory larger than 1 block
- Add
comirq=
to set serial IRQ in /bootopts (@Mellvik) - Pass capitalized environment variables set in /bootopts to /bin/login
- Add CONFIG_SYS_NO_BININIT to build system without
/bin/init
- Add CONFIG_SYS_DEFSHELL_SASH to set default shell to
sash
- Add NIC flags as optional 4th parameter to
ne0=
/wd0=
/3c0=
/bootopts (@Mellvik) - Allow forcing RAM and kernel heap size in config.h for testing small memory
PC-98 Port
- Add ANSI cursor on/off sequence (@tyama501)
- Fix
meminfo
build (@tyama501) - Support high-resolution PC-H98 (@tyama501)
- Fix 16-bit cylinder numbers (@tyama501)
- Calculate total mem available at boot (@tyama501)
- Add CGA compatible colors to
basic
(@tyama501) - Use calculated kernel timeouts in serial driver
- Add PC-98 bus mouse driver and XOR drawing to Nano-X (@tyama501)
- Fix Nano-X CI build
- Fix
clock
andps
build - Add timeout to avoid hanging when serial cable not connected (@tyama501)
- Clear text and graphics ram on Nano-X applications startup (@tyama501)
- Fix freezing issue by removing BIOS call to old IRQ 0 vector (@tyama501)
- Add serial port driver (@tyama501)
- Add PC-98 to CI build
- Add PC-98 screen and ramfont drivers to Nano-X (@tyama501)
- Disable whole-track reads for PC-98 for now (@tkchia)
- Read /bootopts on FAT boot (@tyama501)
- Detect number of FD driver, probe for 1232/1440 and support both (@tyama501)
8018X Port
- Add
romprg
program to flash chips (@cocus) - Add ATC-compatible RTC for clock app (@cocus)
- Add 8018X port to CI build
- Add
disable_irq
to disable IRQs (@cocus) - Fix ROMFS 8018X build
C Library
- Add
test_libc
test suite for large portion of C library (@ccoffing) - Fix
sleep
return value (@ccoffing) - Fix major
strncat
bug, affectskilo
,sash
history,tinyirc
(@ccoffing) - Use PATH_MAX and NAME_MAX for overflow prevention (@ccoffing)
- Cleanup various compilation warnings using const and size_t
- Fix wildcard expression undefined behaviour using []? (@ccoffing)
- Fix
abort
calling kill with arguments reversed (@tkchia) - Rewrite
memcpy
in ASM for speed (found through blink16 emulator) - Fix
fgets
boundary bug found through libc test suite (@ccoffing) - Fix tui lib cursor location for
fm
andmoria
- Optimize
opendir
for memory allocations and speed (@ccoffing) - Fix
fclose
to close file even when flush fails (@ccoffing) - Optimize C library startup using __argc, __argv
- Add instrumentation routines for automatic symbolic function tracing
- Add optional
--ftrace
/FTRACE=
command option for optional program function call tracing - Standardize C library constructor/destructor function names, priorities
- Use __argc/__argv from .postinit section
- Add
__weaken
and__LINK_SYMBOL
weak symbol support (@tkchia, @ghaerr) - Cleanup exec* library functions
- Use weak linking for optional C library floating point support
- Remove use of __P, __const and extern in header files
- Enhance library for possible use of new REGPARMCALL calling convention
- Remove include <linuxmt/config.h> unless required to stop unnecessary rebuilds
- Reduce min executable and distribution image size by separating out syscall wrappers
- Remove C library kenel callback code when
signal
not used by application - Add C library support for
-mregparmcall
calling convention (@tkchia) - Fix build to allow
-mregparmcall
calling convention for most ELKS applications - Fix
usleep
for POSIX return value,basename
failure, remove__sys_errlist
(@ccoffing) - Accurate dependency handling for C library build (@tkchia)
- Delete duplicate leap year function (@coffing)
- Reduce size of
__tm_conv
andstrerror
(@coffing) - Add stack backtrace and 8086 disassembler to debug library
- Fix buffer overflow in
isatty
(@tkchia) - Add
mktime
library function - Fix incorrect results returned by
strtol
andstrtoul
when string not NUL terminated - Fix
memcmp
library function in C lib and kernel (@Mellvik) - Cleanup use of
__extension__
,asm
andvolatile
to allow option-Wpedantic
- Add 64-bit long long
lltostr
andulltostr
functions
Kernel Enhancements and Fixes
- Support UMB memory for automatic kernel and application use (@mirevall)
- Update Spanish keyboard layout and support AltGr (@jsedanoj)
- Support floppy drives on NuXT computer using Sergey Kiselev’s BIOS v0.9.9
- Fix FAT filesystem /dev emulation to require /dev entry to operate
- Fix and allow multiple signals pending per process, add test_sigfail
- Fix potential
readlink
buffer overflow (@ccoffing) - Introduce precision kernel timeouts (used in IDE query and serial drivers)
- Update all ethernet device names to 3 character names (@Mellvik)
- Enhance disc probing to be faster
- Always save BP across INT 10h calls for early IBM BIOS support
- Add KIOSOUND
ioctl
for console terminal (@tkchia) - Enhance
ustatfs
to optionally not calculate freespace for FAT fs speed - Fix MINIX filesystem to allow 64Mb filesystems and
truncate
bug - Fix memory leak in
free_irq
- Fix dynamic IRQ mapping in serial driver (@Mellvik)
- Set COM4 default IRQ to 7
- Map ESC A through ESC Z to Alt-a through Alt-a for D-Flat and other TUI projects
- Replace non-highlighted standard colors with standard colors on ANSI console (for D-Flat)
- Fix buffer corruption and out of space on large (inodes > 8192) MINIX filesystems
- Add additional
stty erase2
termios character to map DEL to BS onvi
andlogin
- Fix direct console to allow full codepage 437 display
- Add bright foreground color display to ANSI terminal
- Serial driver now dynamically allocates/frees IRQ on open/close for IRQ sharing
- Fix duplicate character received in serial driver on QEMU
- Fully dynamic IRQs for COM2 and COM3 (@Mellvik)
- Add many
-W
warnings for most restrictive compilation warnings - Add
memcmp
andstrchr
to kernel lib - Remove non-useful or unused kernel config options
- Remove inaccurate CPU type check, fails for CPU >= 386
- Disable stack trace on kernel panic, useless backtrace
- Fix UNIX and NANO sockets build
- Add
fmemalloc
system call,fmemset
library routines - Fix
memset
kernel library routine
Toolchain
- Fix limits.h recursion (@tkchia)
- Additional GMP download location (@tkchia)
- Keep directory permissions when building images
- Add
-maout-symtab
to elf2elks to create symbol table in ELKS executables - Add
--symfile
option to elf2elks to produce .sym symbol table for kernel and applications - Add
-finstrument-functions-simple
for ELKS function instrumentation (@tkchia,@ghaerr) - Add
-Wno-prio-ctor-dtor
to remove compiler warnings on new constructors (@tkchia) - Add ELKS-specific spec file for
ia16-elf-gcc
(@tkchia) - Force Ubuntu 20.04 for CI runner, allows mtools-4.0.23 support for build
- Fix
sash
overwritingash
on 2880k and HD builds - Fix medium model data segment relocations in elf2elks (@tkchia)
- Updated
emu86
andmenuconfig
to build on macOS
Documentation
- Major updates to man pages (@Mellvik)
- Spell check man pages and fix documentation typos (@ccoffing)
- Various C library and command sources reformatted to standard (@ccoffing)
- Updated driver docs (@johnathancn)
- Update parenthesis for better source readability (@marcin-laszewski)
- Create SVG vector version of ELKS logo (@eloydegen)
ElksEmu
Chief maintainer: @ghaerr