Skip to content

os8088 v1.0.20260804.1

Choose a tag to compare

@jggonz jggonz released this 05 Aug 02:48
· 12 commits to main since this release
aad4825

An experimental branch comes home, and it changes what the system is made of. Memory stops being a floor plan and becomes a heap: everything above the kernel is handed out on demand, which retires the fixed package pool and drops the RAM floor from 256KB to 128KB. A driver becomes a file you can put on a floppy -- the sound card's is the first, loaded by name from a settings file that also holds the whole Control Panel, because the system disk is a real FAT12 volume now. Repainting stops meaning the screen: closing a window costs the rectangle it vacated, raising one costs a title bar, and renaming one costs a strip. And the eleventh package is ArtfulType, a distraction-free Markdown writer that takes the whole screen and draws its own Macintosh menu bar on it.

ArtfulType, the eleventh package (#49)

A port of ActionRetro's ArtfulType -- the distraction-free Markdown writer for classic 68k Macintoshes -- onto the fullscreen surface. Windowed it is a splash card; in Writer mode it takes the whole screen and draws its own Macintosh menu bar on it, black with white titles, tracking press-drag-release pull-downs with drop shadows, right-aligned shortcuts and the triple selection flash. The document is canonical Markdown in a 20KB gap buffer and the styling is a rendering property, not a second buffer: styled lines hide their delimiters and draw from the package's own glyph engine -- bold by overstrike, italic by shear, headings bit-doubled to two and three times size, underlined links with the URL hidden, code cells dithered -- while the paragraph the caret is in renders raw and collapses again when the caret leaves. The performance contract is what makes it usable at 4.77MHz: a keystroke is one gap store, a one-paragraph relayout and one blit per repainted line. Nothing on the typing path walks the document. It needed no kernel changes at all.

Loadable drivers: a driver is a package that is not an application (#51)

Same 32-byte header, same flat binary, same paragraph-aligned heap claim, same three-byte dispatcher -- so a driver author writes ordinary near procedures and the kernel calls them exactly as it calls a window's. Four things make it a driver instead: it is a .DRV file (the mount types only .O88 as an application, so it can never be double-clicked into the loader), its header version is 4 (a second, independent gate), it has no instance record, and its bss ships inside its image -- which is what lets the kernel make exactly one claim, at the size the directory entry already reported, before a byte is read. It publishes a service table the kernel copies into its own memory at attach, so the timer interrupt can ask whether there is sound work to do without touching a segment register. SOUND.DRV is the first one, and publishing its tone cell moves the tone tier off the PC speaker. Nothing here can stop the boot: no disk, no file, no card and no memory are all recorded and reported afterwards, on the Control Panel's new Drivers page.

The claim heap, and a 128KB floor (#51)

Everything above the kernel is handed out on demand: ask for so many kilobytes, get a segment back, give it back when the instance dies. That retires the fixed 60KB package pool -- a package's region is an ordinary claim taken from the top down, because a region's base is its code segment and can never move, while a data claim can -- and returns those 60KB to every machine. The kernel is a client of its own heap too: the menu save-under is claimed for exactly as long as a menu is on screen, and the 150KB double buffer is claimed when you switch it on and freed when you switch it off, which is why the Control Panel's Display row now greys out and comes back as you open and close Paint. Refusal is a normal path everywhere, not a panic.

Repainting costs a rectangle, not the screen (#51)

Coming to the front reveals nothing -- the window moves up, so every other window's covered area can only grow -- so raising a window draws that window and the outgoing front window's title bar. Going away costs the rectangle you vacated: hiding, closing and dragging repaint the desktop, the drive icons and the windows clipped to the damaged rect. Retitling costs a strip, because a caption changes on an event, after the frame carrying it has already been drawn. A window closing on the left of the screen no longer redraws a window on the right.

Also in this release (#51)

  • The system disk is a FAT12 volume. Drive A: mounts, browses and writes; SYSTEM.CFG in its root is 32 bytes carrying the whole Control Panel -- driver list, sound route, clock options, scheduler mode, back buffer -- rewritten on every click and restored at boot. Missing or malformed means the defaults, never an error.
  • A clock ladder, because the BIOS is the last rung. Four rungs probed in an order chosen so no rung writes to a chip a later rung would have identified differently, obeying each chip's own BCD and 12/24-hour settings rather than rewriting them behind the machine's BIOS, with every wait loop bounded.
  • CPU tiers and memory above 1MB. On the target machine all of it is zero kilobytes and every entry point returns having touched no port.
  • 73 API slots, every one main publishes at main's number; real file sizes in the Disk window and the file dialog; the package-window teardown sweep restored.

Notes

  • A machine with no sound card now opens the Control Panel on its Drivers page at boot, saying what could not be attached and why. That is the driver system reporting itself, not an error -- nothing a driver does can stop the boot -- and turning the driver off on that page makes it stop.
  • Settings persist now, in SYSTEM.CFG on the boot floppy. Run from a write-protected disk and every Control Panel change still applies immediately, but none survive a reboot.
  • The kernel has grown a lot: 59,031 bytes of the 65,536 a single segment holds, against 47,681 last release. 6,505 bytes of headroom left.

Build

Kernel image 52,718 bytes. 66,183 lines of assembly across 29 kernel modules. Built from aad4825; make check-images reports all 29 tracked artifacts matching their sources, and the image was booted before publishing.

Attached: both boot floppies and both software floppies, in 1.44MB and 360KB geometries. The download page, with checksums, is at https://os8088.com/download/ -- and every program on the software disk now has a page of its own at https://os8088.com/applications/