Skip to content

os8088 v1.0.20260729

Choose a tag to compare

@jggonz jggonz released this 29 Jul 15:32
· 32 commits to main since this release
f7a3b29

A memory release. The task stacks, the disk buffers and two of the coldest modules move out of the kernel's 64KB segment, taking the headroom left for future features from 1,089 bytes to 28,129.

What changed

Room to grow -- 1,089 bytes of headroom becomes 28,129 (#24)

The kernel was not short of memory, it was short of segment: everything it touched through DS had to fit in one 64KB window, and 59% of that budget was uninitialised scratch. The task stacks alone -- eleven of them at 1,536 bytes -- were 41% of the window. Three moves fixed it. The stacks and the floppy buffers went to their own segment at linear 0x08000, in low memory that sits free on every machine once the boot sector hands off, which is 20KB back. The package pool slid up from 0xA000 to 0xB000 into the 4KB that task 0's stack used to occupy. And two cold modules, the Control Panel and the Task Manager, now assemble into a far segment that is copied out of the kernel image at boot and lands on top of .bss -- 2,922 bytes of code that costs the window nothing. Nothing left conventional memory and nothing on screen changed, so a 256KB machine behaves exactly as before.

The RAM figure means something different now

The site said 39,871 bytes last release and says 16,927 this one. No code was deleted -- the number counts what the kernel keeps inside its own segment, and the stacks and disk buffers that made up most of it still exist, just at another address. The ceiling moved too, from 0xA000 to 0xB000, because the package pool moved with it. The Task Manager's RAM total and its System row both add back what now lives outside the segment, so its rows still sum to the total.

The release process feeds the releases page (#23)

The publishing script writes what it can read off the build -- version, date, commit, kernel size, file list -- and stops there, so the words around the numbers are written by hand, once, and used both on os8088.com/releases/ and here.

Note

Packages load at a new address. The pool moved from offsets 0xA000-0xEFFF to 0xB000-0xFDFF and is 19,968 bytes rather than 20,480. A .o88 built before this release carries the old link base in its header and will not load -- reassemble it against the current SDK. The three packages on the software floppy here are already rebuilt.

Sizes

bytes
Kernel image 16,611
Image + .bss, against a 45,056 ceiling 16,927 (28,129 free)
Source 13,243 lines across 21 kernel modules

The disks

  • os8088.img -- boot disk, 1.44MB geometry (80 cylinders, 2 heads, 18 sectors/track). For QEMU.
  • os8088-360.img -- boot disk, 360KB geometry (40 cylinders, 2 heads, 9 sectors/track). For 86Box and real XT hardware.
  • apps.img -- software disk, 1.44MB: an os88fs volume holding MINES, HELLO and NOTEPAD. Not bootable.
  • apps360.img -- software disk, 360KB. The same three packages, same filesystem, different geometry.

Checksums and a browser-bootable demo are at https://os8088.com/download/