Skip to content

ELKS v0.7.0

Compare
Choose a tag to compare
@ghaerr ghaerr released this 03 Aug 15:41
· 1177 commits to master since this release
d043b92

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 mistyped ls
  • Port split from BSD 4.3reno (@Mellvik)
  • Support D-Flat Project and memopad editor application
  • Add ps, edit (visual screen editor), and fsck 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-standard rindex/index definitions (@ccoffing)
  • Fix fsck out of memory problem, display issues and -r (@Mellvik, @ghaerr)
  • Update mount and df 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 in sys to fix large copy on large /bin directories (@Mellvik)
  • Add PEEK and POKE to basic (@tyama501)
  • Rename mined to edit (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 and ps 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, affects kilo, 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 and moria
  • 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 and strerror (@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 and strtoul when string not NUL terminated
  • Fix memcmp library function in C lib and kernel (@Mellvik)
  • Cleanup use of __extension__, asm and volatile to allow option -Wpedantic
  • Add 64-bit long long lltostr and ulltostr 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 on vi and login
  • 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 and strchr 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 overwriting ash on 2880k and HD builds
  • Fix medium model data segment relocations in elf2elks (@tkchia)
  • Updated emu86 and menuconfig 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

  • Remove any child processes on exit (@tkchia)
  • Fix emulation of execve system call (@tkchia)

Chief maintainer: @ghaerr