os8088 v1.0.20260730.1
The menu bar tells the time. A new system clock reads the hardware RTC at boot and keeps itself on the PIT from then on, the right end of the bar carries the date and time of day, and clicking it opens a Control Panel page that sets them.
Built from 84387fae8594f7fe74d6aed6c334999eea91a758. This is one commit past v1.0.20260730, which took the plain date; hence the .1.
The date and the time, at the right end of the menu bar (#28)
The bar has carried nothing but the chip glyph, File and Special since the GUI existed; it now ends with the date and the time of day, and clicking it opens the Control Panel straight onto the page that sets them. The text is right-aligned inside a cell sized for the longest form it can take -- the string runs 18 to 24 glyphs depending on whether seconds and a 12-hour AM/PM are showing -- so switching format redraws one cell rather than relaying the bar out. An edit or a toggle asks for that redraw through a queue flag rather than painting from where it stands, because the alternative was a whole-desktop repaint to fix a flicker, which is a worse flash than the one it fixes.
A system clock that assumes its machine may not have one (#28)
kernel/clock.inc probes the hardware RTC through int 1Ah at boot, and the probe is deliberately paranoid, because the machines this OS targets are exactly the ones that may have no CMOS clock at all and whose BIOS may simply iret out of a function it does not implement. CX and DX are poisoned and the carry flag set before every call, every returned byte must be valid packed BCD and in range, and the values commit out of scratch only once all of it has passed. Nothing found means 4 July 2026, 00:00:00, and the system runs on regardless. From then on the PIT is the clock -- the same accumulator idiom the rest of the kernel uses -- carrying through month lengths and leap Februaries, which is how DOS behaves on the same hardware.
Reading a clock that ticks underneath you (#28)
Only the UI task ever writes the fields, but the readers are not so confined: the bar's painter reaches the formatter from wm_paint_all, which a dying background task runs inside wm_destroy. So every write that can carry is one interrupts-off section, and every formatter works from a snapshot copy taken under that same guard. A reader pre-empted mid-format can never pair a pre-carry field with a post-carry one and print 31 December of next year, or 13:00 on a clock that has just rolled to midnight.
A Date/Time page in the Control Panel (#28)
The panel's fourth page is two rows of fields with one selected and a +/- pair that steps it. It knows nothing about what a month or an hour is -- the field index is the number the clock's stringify and adjust routines take -- and it touches no BIOS itself: an edit posts a dirty flag and the UI task writes the RTC back outside the drawing lock, because a page proc may not take one. 12-hour mode adds a seventh, clickable AM/PM field, while the hour underneath is always stored and stepped 0..23, so the format is a rendering and nothing can drift out of it.
Seconds are off by default, and that is not taste (#28)
The tick returns a two-bit mask saying what actually changed. With seconds hidden, the bar's text is unchanged 59 seconds out of 60, so the UI task does not take the drawing lock at all -- and the cursor blink that comes with taking the lock is precisely the flicker the setting removes. Turn seconds on and you get them, once a second, blink included. An open Date/Time page still wants its seconds either way, which a cheap check answers before the lock is reached for.
What it cost
The kernel image grew from 25,136 bytes to 27,582 and its segment footprint from 23,358 to 25,079, leaving 19,977 bytes of headroom below the 0xB000 line where loaded programs begin. The Control Panel window grew with its two new option rows, 320x120 to 320x140; the other three pages simply have more white space below them now. Source is 23,601 lines across 25 kernel modules.
Worth knowing
- Clicking the clock is a new thing the menu bar does: it opens the Control Panel on the Date/Time page. The bar's left-hand menus are unchanged.
- Seconds in the menu bar are off by default. The Date/Time page turns them on, along with 12-hour time.
- A machine with no readable RTC boots at 4 July 2026, 00:00:00 rather than refusing to keep time. Set it from the Control Panel; the write-back survives a Restart on hardware that has a clock to write to.
The images
os8088.img and os8088-360.img are boot disks -- 1.44MB and 360KB geometry. apps.img and apps360.img are the software floppy for drive B:, holding MINES, HELLO, NOTEPAD, RECORDER and PIANO; they are unchanged from the previous release, as no package changed.
Downloads with checksums: https://os8088.com/download/