Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft Release - ELKS v0.7.0 #1625

Closed
ghaerr opened this issue Jul 27, 2023 · 21 comments
Closed

Draft Release - ELKS v0.7.0 #1625

ghaerr opened this issue Jul 27, 2023 · 21 comments

Comments

@ghaerr
Copy link
Owner

ghaerr commented Jul 27, 2023

It's been over a year since ELKS v0.6.0 was released on June 7, 2022. Following are draft release notes for v0.7.0, please comment if something or someone has been left out. If the release should be held for a particular feature other than the two below, please comment. Thank you to all that have contributed and are using ELKS!

It has been fairly quiet, I would like to add the following minor enhancements and release v0.7.0 shortly:

  • Add ANSI cursor on/off sequence for IBM PC [[Console] Implement DisplayCursor(onoff) for direct console #1626]
  • Add 386 CPU detection code to automatically enable XMS for system buffers when ELKS is run on a 386+.
    [Not included: default v0.7.0 images will be built without XMS support. This is because some 386 systems, including Compaq Portable 386 require CONFIG_FS_XMS_INT15 to be set and otherwise would pass CPU test but still not boot.]

[EDIT: Github build images created from #1626 onwards are feature frozen and ready for any additional testing.]

Draft Release - 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 clone of using 8088 clone K1810BM88 w/256k RAM (Use CONFIG_HW_MK88) @Vutshi
  • Monotech NuXT 2.0 board (NEC V20) 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

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

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)

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

@jsedanoj
Copy link
Contributor

jsedanoj commented Jul 27, 2023 via email

@toncho11
Copy link
Contributor

toncho11 commented Jul 27, 2023

Looks very good!

In general I think there should be a freeze period of 2 weeks where everyone is testing on their machines. We can form a group of 5-6 people that we are testing on real hardware. After that the release should be published. This is just an overall strategy proposal. I also advocate for point releases such as 0.7.1 for example, in case of a major problem (a setting enabled by default instead of disabled by default that leads to crashes, etc).

Me, I will be able to test in September. So do not wait for me :).

Thank you @ghaerr !

@tyama501
Copy link
Contributor

Looks great! Thank you.

@cocus
Copy link
Contributor

cocus commented Jul 27, 2023

Absolutely astounding! Great work team!

@toncho11
Copy link
Contributor

I managed to test quickly. The fd360-minix boots OK on my Amstrad 1640.

@ghaerr
Copy link
Owner Author

ghaerr commented Jul 28, 2023

The fd360-minix boots OK on my Amstrad 1640.

Thanks a lot @toncho11, as I'm hoping the make a cut soon, as the Book 8088 project could use it, since @Vutshi can't currently compile up a system.

The system should remain quite stable, as there haven't been any structural kernel changes for quite some time.

@tyama501
Copy link
Contributor

Hello @ghaerr ,

I tested fd1232.img of commit f4363cd
https://github.com/jbruchon/elks/actions/runs/5688362692

I checked
clock, ps, meminfo, basic, nano-X with emulator.
These are OK.

I also confirmed the serial console is OK with PC-9801BX.

Thank you.

@ghaerr
Copy link
Owner Author

ghaerr commented Jul 28, 2023

Hello @tyama501,

Thanks for your testing, good to know all the PC-98 specific apps are being built correctly :)

Thank you!

@tt1542
Copy link

tt1542 commented Jul 28, 2023

@ghaerr, I just tested the current build (FAT floppy, 1.44M) with my Monotech NuXTv2, at least briefly. Things seem to be fine, no complaints!

@ghaerr
Copy link
Owner Author

ghaerr commented Jul 28, 2023

I just tested the current build (FAT floppy, 1.44M) with my Monotech NuXTv2, at least briefly. Things seem to be fine, no complaints!

@tt1542, wow, very good to know, thanks for the report! It seems then that our current build is working fine on Book 8088, while the v0.6.0 release does not. It seems that something was fixed after the v0.6.0 release that allows Book 8088 to work (at least on 360k FAT and 64M MINIX), and does not require a BIOS upgrade.

@Vutshi isn't currently able to compile the latest at this time, so his reports in #1619 are based on the year-old v0.6.0 release. Definitely time for v0.7.0 to get out! We can continue to sort out the 32M HD FAT boot failure on Book 8088 after v0.7.0.

@toncho11
Copy link
Contributor

toncho11 commented Jul 28, 2023

Great teamwork 👍 😃

@bocke
Copy link

bocke commented Jul 28, 2023

Thankx for the hard work everyone. I'm waiting for my Book8088 to arrive so I can play with ELKS on a real computer for once.

I'll have to try installing gcc-ia16 to play with too. I'm interested if some small modern-ish microemacs/vi clones would work on ELKS.

@ghaerr
Copy link
Owner Author

ghaerr commented Jul 29, 2023

@bocke, we've got a pretty decent vi (elvis) ported to ELKS now. It works well and is included in the 1.4M floppy distribution.

@tt1542
Copy link

tt1542 commented Jul 29, 2023

@ghaerr , please have another look at my comment above. I tested the current build with my other system, the Monotech NuXTv2, and just wanted to confirm that it does boot fine using the 1.44M floppy (NOT 360K).

@ccoffing
Copy link
Contributor

Looking good!

I just noticed that crontab (which got some fixes this cycle) was not being installed. I have opened a PR.

@tyama501
Copy link
Contributor

tyama501 commented Jul 31, 2023

Hello @ghaerr ,

Is there way to include nxtetris in pc-98 image?

vi shrank a lot so fd1232.img now have 186KB space left.
(and 416KB space for fd1440. Wow!)

Thank you @ccoffing !

@ghaerr
Copy link
Owner Author

ghaerr commented Jul 31, 2023

Hello @tyama501,

Is there way to include nxtetris in pc-98 image?

Not really easily, since all the Nano-X games are listed in elkscmd/Applications as :other, and would use up too much space. What we need is another category that perhaps can be specified in a config file that allows for selection of specific applications. Let me think of a way this might be done before v0.7.0 is released, so that nxtetris can be added to the PC-98 default image.

Thank you!

@tyama501
Copy link
Contributor

Thank you @ghaerr ,

nxlandmine, nxworld, and nxterm are now already included since I selected nano-X application in the config.

@ghaerr
Copy link
Owner Author

ghaerr commented Jul 31, 2023

Hello @tyama501,

nxlandmine, nxworld, and nxterm are now already included since I selected nano-X application in the config.

Oh, I'm glad you mentioned that, as I was thinking that we needed a method to individually install an application. If we change elkscmd/Applications to include nxtetris on :nanox rather than :other, everything will fit on the 1440k floppy.

so fd1232.img now have 186KB space left.
(and 416KB space for fd1440. Wow!)

That's a lot of free space for both images! You must have a number of options turned off, I haven't looked at the details, as the IBM 1440k free space is much lower. We could go with the above option of changing nxtetris to :nanox, which works for the regular IBM PC 1440k distribution, although the free space drops to 38k.

On another matter, perhaps you should consider turning on CONFIG_APP_MAN_PAGES for the PC-98 1440k floppy, they would probably fit?

We could also go with introducing the ability to install a few applications directly by name. Please let me know what you think with some image size testing if possible, and we can make the changes.

Thank you!

@tyama501
Copy link
Contributor

tyama501 commented Aug 3, 2023

Hello @ghaerr ,

Yes, I could add MAN Pages to 1440 KB image, but it only 90KB left if I add it.
So I would like to leave the space to add and debug ktcp in ELKS 0.8.

Thank you.

@tyama501
Copy link
Contributor

tyama501 commented Aug 3, 2023

Maybe it is nice if we can select which man page to add in future.
(It seems that too much unincluded command man page for my image..)

@ghaerr ghaerr closed this as completed Aug 3, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants