CHIME

> Network time sync for DOS.

NetISA suite app. Asks the network for the current time, sets the DOS clock. v1.0 uses HTTPS HEAD and parses the response Date: header. SNTP and NTS over UDP land in v1.1/v1.2 once NetISA exposes UDP.

CHIME 1.0 running in DOSBox-X with the /STUBNET flag. White-on-black terminal output reads: CHIME 1.0.0; NetISA: stub mode; Server: time.cloudflare.com (HTTPS HEAD); Time: 2026-04-25 14:30:42 UTC; Now: 2026-04-25 08:06:28 (DOS clock); Delta: +23054 seconds; Write to DOS clock? [Y/n].
CHIME report and confirmation prompt. /STUBNET activates the synthetic backend so the captured frame is reproducible.

Mode captures

CHIME with /STUBNET /DRYRUN: same report as the default, but the tail line reads 'DOS clock NOT set (dry run or declined)' and the program returns to the DOS prompt without writing.
/DRYRUN: report only, never write.
CHIME /HELP: prints the flag reference. Lists /AUTO, /DRYRUN, /QUIET, /VERBOSE, /SAFE, /STUBNET, /VERSION, /HELP, /SERVER=host, /PATH=/foo, /PORT=443, /MODE=xxx, /TZ=+/-HH:MM, each with a short description.
/HELP: cmdline reference.

Status

2026-04-25. Compiles clean under Open Watcom V2. CHIME.EXE is 28 KB. TESTTIME reports 21 of 21 parser and stub-query assertions green.

What is in the tree:

Why HTTP, not SNTP

NTP/SNTP run over UDP. The NetISA TSR INT 63h API as of v1.0 carries TLS sessions and plaintext TCP. No UDP yet. So CHIME v1.0 talks HTTPS HEAD to time-anchor URLs (time.cloudflare.com, time.google.com, worldtimeapi.org) and parses the Date: response header. One-second precision. v1.1 adds SNTP over UDP when NetISA exposes the UDP group. v1.2 adds NTS-KE / NTS over UDP.

Setting the clock

Three layers. CMOS RTC at I/O ports 0x70/0x71 (persists). BIOS tick at 0040:006C, 18.2 Hz (resets on reboot). DOS internal date/time via INT 21h AH=2Ah/2Ch get and AH=2Bh/2Dh set.

On modern DOS (MS-DOS 5+, FreeDOS) the INT 21h set propagates to CMOS. On older DOS (3.3, OEM 4.x) it does not, and the next reboot loses the change. CHIME does a direct CMOS write after the INT 21h call as a backstop: stop RTC updates by setting bit 7 of register 0x0B, BCD-encode and write seconds (reg 0), minutes (2), hour (4), day (7), month (8), year-mod-100 (9), century (32), then resume.

Timezone is fixed-offset (/TZ=-08:00). DST is not handled.

Usage

Roadmap

Hardware

Floor286 + 256KB
DOS3.3+
NetworkNetISA TLS path
ToolchainOpenWatcom V2
StandardC89/C90
LicenseMIT

Links