Ran the full adversarial quality gate on the NetISA DOSBox-X automation infrastructure (capture.ps1, dosrun.py, dosbuild.py, _RELAY.BAT, dev.conf, README) — 1,422 lines total. Three review rounds, score progression 30→28→0. Found and fixed 9 Fatal and 31 Significant issues including: atomic lockfile (Ctrl+C races), Windows PID recycling (os.kill unreliable), hardcoded WinGet paths (break on upgrade), tempDir leaks on ffmpeg failure, zombie DOSBox-X processes on early exit, CP437 silent replacement, mount path quote escaping, PrintWindow return value check (no more silent black GIFs), ERRORLEVEL baseline reset before user commands, cycles=auto for deterministic timing, $projectDir quoting, lock-timeout-aware staleness. Automation infrastructure is now production-grade reliable. Project page.
TAKEOVER quality gate: 12 bugs fixed in 5 rounds
Ran the full adversarial quality gate on the TAKEOVER codebase (5,700 lines, 13 modules). Five review rounds, score progression 6→5→7→1→0. Found and fixed 12 issues: string pool exhaustion (silent failure → parse-time error), midnight BIOS tick wrap (music freeze), OPL2 channel bounds validation (prevent OOB register writes), LFSR dissolve safety break (prevent infinite loop), stack buffer pressure (2 buffers moved to far heap), DGROUP palette buffer (768 bytes recovered), VGA palette tearing (buffered rotation), cracktro OPL2 state corruption (chip reset after easter egg), music fast-forward after climax sequences, input buffer size mismatch, AI control level cross-scenario persistence, and cracktro integer overflow (unsigned counters). EXE: 57.8KB → 60.5KB. Project page.
Discord v2: ground-up rebuild
Ground-up rebuild of the Discord client from 939 lines / 14KB to ~2,400 lines / 37KB. New: 128 messages per channel (up from 32) on far-heap storage, multi-line compose (Shift+Enter), Ctrl+F find in messages with match highlighting, PC speaker notifications (4 types, F9 toggle), 8 hash-based author colors, CP437 reaction display, thread reply indicators, user list overlay (Alt+U), help overlay (F1), VGA palette fade in/out, DISCORD.CFG settings persistence, scroll bar, unread counts per channel, notification title flash. 10 source modules. 8 channels with 64 realistic retro computing community messages. Built in parallel with 7 agents across 5 waves. Project page.
DOSBox-X development relay + Cathode parser fixes
Built a development relay system (devenv/) that closes the develop-compile-test loop: compile natively with OpenWatcom/NASM on Windows, run the result in DOSBox-X, and capture stdout + exit codes via a batch-file relay mechanism. Features atomic lockfile with stale PID recovery, timeout handling, CP437 encoding, stderr capture, and retcode retry loop. Quality-gated through 7 rounds of adversarial review. Then used the relay to build an automated Cathode test suite: downloaded 11 real websites (NPR, CNN, Hacker News, Wikipedia, OpenBSD man pages, and purpose-built edge-case fixtures), parsed them through Cathode's HTML engine inside DOSBox-X, and found three bugs. (1) Named HTML entity table only had 7 entries — expanded to 90+ covering accented characters, smart quotes, dashes, currency, math symbols, and arrows, reusing the existing CP437 mapping tables. (2) Missing </head> tags caused 0 rendered rows — <body> now implicitly closes <head>. (3) Pages over 32KB produced 0 rows due to 16-bit int overflow in the parse chunk length — fixed by chunking large parses. All 12 tests now pass: 12/12, 0 failures. Project page.
Cathode v0.2: Text-Mode Document Browser
Major upgrade to the Cathode browser. Transforms the v0.1 browser shell into a functional text-mode document browser that renders real HTML from the web. Streaming HTML parser (tokenizer + layout emitter, ~830 lines) handles headings, paragraphs, links, bold/italic/code, ordered and unordered lists, blockquotes, preformatted text, horizontal rules, and HTML entities. HTTP/1.0 fetch layer with redirect following and timeout handling. UTF-8 to CP437 character mapping (Latin-1 table + extended codepoints for smart quotes, em-dashes, bullets, box drawing). URL parser with relative URL resolution (7 forms). Find on page with pre-computed match positions and render-time bitmap for 8088 performance. Bookmark persistence to CATHODE.BMK. Word-boundary wrapping. Scroll bar. Page truncation indicator. CP437 block-art CATHODE logo preserved on start page. Non-blocking event loop with DOS idle yield. 15 new source files, ~2,700 lines of new code. Quality-gated: 5 rounds of adversarial code review, 34 issues found and fixed (3 Fatal, 31 Significant). Three red-team rounds on the design document found 57 additional design issues. Product review established phased victory conditions and compile-time feature flags. 38.5KB EXE. Renders text.npr.org, man.openbsd.org, example.com, and barelybooting.com in text mode with navigable links. Project page.
TAKEOVER v1.1: Demoscene Enhancement Pack
Eight demoscene-inspired features, informed by research into four decades of the demoscene from Commodore 64 cracktros to modern 4KB intros. Audio-visual beat sync: adlib_beat counter lets effects pulse to OPL2 music events. Six fire-and-forget OPL2 stingers on channels 3-8 (alarm klaxon, bureaucratic stamp, typewriter click, error buzz, ominous diminished chord, metallic ka-ching), each thematically assigned per AI. Two new visual effects: sine wave text distortion (buffer manipulation, works on all adapters including MDA) and VGA DAC palette cycling in text mode. Four state transition types on goto: commands: LFSR-based dissolve (zero-storage permutation via 11-bit linear feedback shift register), column wipe, VGA DAC fade, and random glitch. Living status bar with AI control level (0-100) that shifts from green to red with block-character progress indicator. Five per-AI Mode 13h climax sequences at endings: Grid Convergence (Axiom), Redaction Sweep (Hushline), Threat Radar (Kestrel-9), Cozy Dissolution with closing iris (Orchard), Reality Glitch with palette rotation (Cinder) — all at half resolution (160x100 doubled) for 8088 compatibility. Hidden cracktro easter egg unlocked by completing all five scenarios: raster bars behind the logo, 40-star parallax starfield, DYCP sine-bouncing scrolltext with 64-character bitmap font, and a 9-channel OPL2 chiptune in C minor (10-bar loop at 120 BPM with arpeggiated channel). Seven new engine commands. All five scenarios wired with enhancements at thematically appropriate moments. 57.8KB EXE (was 41.8KB). New DGROUP: ~55 bytes of ~22KB headroom. Zero warnings. Project page.
TAKEOVER v1.0 released
First official release of TAKEOVER. F9/F10 audio toggles for AdLib music and PC speaker sound effects (playback timing preserved when muted). Expanded color palette: 6 new attr colors (magenta, bright magenta, blue, bright blue) bringing the total to 15. Each AI scenario now has a distinct color personality — Kestrel-9 uses red/cyan for threat data, Cinder Mirror uses magenta for fourth-wall breaks, Orchard Clerk uses bright cyan for its helpful-creepy voice. Subtle homages to classic AI cinema (2001, WarGames, Ex Machina, The Matrix, Blade Runner concepts) woven into scenario dialogue at key dramatic moments. Quality-gated twice: caught kestrel9 state at 33 commands and a status bar restore bug. Download v1.0 (70KB ZIP).
Cathode: logo fix, color gradient, VGA palette fade
Fixed the Cathode browser logo where the H looked like an M (block art row 1 used lower-half blocks creating an M-shaped dip). Added 5-row color gradient: green edges, bright green inner rows, white center crossbar. Added VGA DAC palette fade-in/fade-out to the shared screen library — Cathode now fades in from black on startup and fades to black on exit. NetISA project page.
TAKEOVER: all five scenarios, A/V overhaul
All five TAKEOVER scenarios complete: Axiom Regent (municipal optimization), Hushline (crisis comms), Kestrel-9 (threat detection), Orchard Clerk (personalization), and Cinder Mirror (narrative generation). 250+ states, 15 endings across 5 scenarios. A/V overhaul: VGA Mode 13h plasma title screen with animated color cycling and pixel-font logo, AdLib/OPL2 FM synthesis ambient music (5 unique drone tracks), FPU-accelerated effects, VGA palette fade transitions. Hardware auto-detection (VGA/EGA/CGA/MDA, AdLib, FPU) with graceful degradation. DGROUP went down from 98.1% to 96.5% despite adding 4 new modules — all new const data uses static const __far. Quality-gated: fixed Mode 13h restore bug, orphaned kestrel9 state, latent numeric comparison parser bug. 41KB EXE. Project page.
TAKEOVER: engine, effects, menu, first scenario
New project: TAKEOVER, an AI takeover simulator for DOS. Built the .scn script engine (parser, state machine, variable system, choice menus), 14 visual effects (screen flicker, text corruption, progress bars, fake BSOD, screen melt, falling chars, color shift, blackout, and more), PC speaker audio via 8253 PIT, and a menu system with completion tracking. Wrote the Axiom Regent scenario: 55 states, 3 endings (TAKEOVER, ESCAPE, REVELATION), 10-15 minutes per path. Bureaucratic horror where a municipal optimization AI reclassifies you out of existence. String pool architecture (19KB) with 12-byte commands keeps the 31KB EXE in small memory model. Quality-gated: caught string pool overflow (8KB too small for 18.5KB scenario), stack overflow in effects (4KB buffers on 2KB stack), and DOS 8.3 filename violations. Project page.
Claude for DOS
Built CLAUDE.EXE — a Claude AI chat client for DOS that talks to the Anthropic API over TLS 1.3 via the NetISA card. Three agent modes: Chat (conversation only), Ask (Claude proposes commands, you confirm), and Auto (Claude runs DOS commands freely). Far-heap message pool, word-wrapped chat with newline support, 3-line compose area, [EXEC] tag parsing for command execution with output capture. Iterative agent loop with 5-deep safety cap to avoid recursive stack overflow on an 8088. Quality-gated with 2 rounds of adversarial review. Added to the NETISA.EXE launcher menu.
Site launch + community pages
barelybooting.com is live. Project page, build log, RSS feed. The site exists because the project reached a point where a README isn't enough — there's a DOS browser, a Discord client, validated CPLD logic, and production firmware. Time to show it properly.
v1 firmware complete
ESP32-S3 firmware hit production quality after 8 rounds of adversarial review. WiFi manager with APSTA mode, HTTP client with 4 concurrent TLS sessions, HTML-to-CP437 parser for Cathode, embedded web config server, OTA updates with authentication. Fixed cross-core race conditions, register protocol bugs, security vulnerabilities, and resource leaks along the way. The firmware is the bridge — it turns ISA bus register writes into TLS 1.3 sessions.
Discord client for DOS
Text-mode Discord client running in DOSBox-X. 6 channels with per-channel far-heap message storage, word-wrapped messages with author colors, compose bar with cursor editing, Tab-cycling focus, timed fake message injection, PgUp/PgDn scrolling. Quality-gated through 6 rounds of adversarial review. This is the demo that makes people stop and look — Discord on an 8088.
Cathode text-mode browser
Built Cathode, a text-mode HTTPS browser for DOS. Split architecture: DOS side receives a cell stream, manages 200-row scrollback on far heap (~80 KB), renders to VGA text buffer. ESP32 side fetches URLs, parses HTML, converts to (char, attr) cell stream. Link navigation, URL bar editing, back/forward history, CP437 box-drawing. 5 rounds of adversarial review.
DOS software stack complete
Full DOS software stack built and tested in DOSBox-X. NETISA.COM TSR (678 bytes, hooks INT 63h, under 2 KB resident). NETISA.EXE launcher with WiFi scanning, signal bars, card status, system info. Shared screen library with direct VGA writes to 0xB800:0000. Complete INT 63h C wrapper library. Stub layer for testing without hardware.
All 160 Verilog testbench tests passing under iverilog. Address decode, IOCHRDY wait states, watchdog timeout, IRQ state machine retrigger, back-to-back cycles, mid-cycle reset, status flag merge, alias rejection. 95 of 128 macrocells used, timing slack of +39.5 ns setup at 16 MHz. Zero bus contention across the full simulation suite. Lint clean on iverilog -Wall.
Hardware design finalized, parts ordered
Schematic and PCB layout for the NetISA v1 board finalized. ATF1508AS CPLD for ISA bus timing, ESP32-S3-WROOM-1U-N8R8 for networking and crypto, Wiznet W5500 pads for v1.5 Ethernet. Bracket-mount antenna for metal cases. Physical jumpers, no Plug-and-Play. Parts ordered — waiting on delivery for prototype build.