Releases: jorge-aranda/doscode
Release list
Serial bring-up & DOSBox workflow 📟
DOSCODE 0.1.0 — Serial bring-up & DOSBox workflow 📟
Second release of DOSCODE. This version focuses on getting the DOS
client to actually talk to the Python proxy over COM1, stabilizing the
serial protocol under QuickBasic 4.5, and documenting a reproducible
workflow with DOSBox + socat.
Architecture:
MS-DOS client ⇄ plain-text serial ⇄ Python proxy ⇄ HTTPS ⇄ LLM provider
✨ Highlights
- 🔌 Reliable serial in QuickBasic 4.5: byte-by-byte reads,
PROMPTsent
with explicit CRLF, and robust detection of theENDmarker. - 🛠️ Safe RUN: confirmation prompt before executing any command and
support for inline<RUN>...</RUN>, with control returning to the user
after execution. - 🖥️ Documented DOSBox workflow:
nullmodemTCP ↔ PTY viasocat, plus
monitoring and symlink helper scripts for the mounted DOSBox folder. - 🧠 More usable proxy: valid default models, fixed Claude auth header,
and LLM line logging tostderr. - 📚 Instruction bridges for AI agents: Cursor, Windsurf, Aider, Devin,
OpenHands, Amazon Q, GitHub Copilot, Gemini, Claude, Junie…
🖥️ DOS client (client/)
serial.bas: byte-by-byte reads withCR/LFtrimming, reliableEND
detection, and betterCOM1error handling.doscode.bas: byte-by-bytePROMPTsend with explicitCRLF, improved
status bar, and a sensible default model.parser.bas: support for inline<RUN>...</RUN>, confirmation prompt
before execution, andTurnDonebridges that return control to the user
afterRUN.files.bas/ui.bas: cleanup and QB4.5 compatibility improvements.BUILD.BAT,RUN.BAT,DOSCODE.MAK: build and CRLF adjustments.
🐍 Python proxy (proxy/)
llm.py: valid default model names for the different backends and a fix
for Claude's authentication header.server.py: LLM line logging tostderrto help debug the stream.
🧰 Scripts and tooling (scripts/)
scripts/monitor_serial.sh:socat -vtap that bridges
TCP-LISTEN:2323 ↔ /tmp/pty_proxyand prints every byte in each
direction, labelled[proxy->dos]/[dos->proxy], with per-direction
log files.scripts/link_dosbox_project.sh: creates symlinks from the DOSBox-mounted
directory back toclient/, avoiding manual copies while editing.
📚 Documentation
docs/build.md: validated setup using DOSBoxnullmodem+socat
PTY/TCP, plus a new section on the proxy's environment variables
(API keys).docs/scripts.md(new): full guide formonitor_serial.shand
link_dosbox_project.sh, including the recommended DOSBox workflow.AGENTS.md: explicit rules for MS-DOS files (ASCII,CRLF,Ctrl+Z
EOF, avoidingCONST/COMMON SHARED/ON ERROR GOTO).- Bridges to several agents/IDEs:
.cursorrules,.cursor/rules/,
.windsurfrules,.openhands/microagents/,.amazonq/rules,
.github/copilot-instructions.md,CLAUDE.md,GEMINI.md,DEVIN.md,
CONVENTIONS.md,.junie/guidelines.md. .gitattributes: line-ending normalization (CRLF for DOS client files,
LF for everything else).
✅ What works end-to-end in 0.1.0
- DOSBox boots the DOS client, opens
COM1against the PTY exposed by
socat, sendsPROMPTto the proxy, and receives streamedLINE ...
responses untilEND. - The user can confirm or cancel
RUNactions before they execute. - After a
RUN, control always returns to the user prompt.
🛣️ Next milestones (not included in this release)
- Richer chat history and diff navigation.
- Undo state.
- File browser navigation.
- Automated application of multi-line
<WRITE>blocks.
📦 Main changes (19 commits)
fix(build): CRLF fixes andCOM1error handling.fix(client): QB4.5 compatibility, byte-by-byte reads,PROMPTwith
CRLF, reliableENDdetection, control return afterRUN.feat(client):RUNconfirmation and inline<RUN>...</RUN>support.feat(proxy): LLM line logging tostderr.fix(proxy): valid default models and Claude auth header fix.feat(scripts)+docs(scripts):monitor_serial.sh,
link_dosbox_project.shand their documentation.docs(build): validatedsocatPTY+TCP / DOSBoxnullmodemsetup and
guide to proxy environment variables.docs(agents): rules for MS-DOS files and bridges for Cursor, Windsurf,
Aider, Devin, OpenHands, Amazon Q and others.
🔧 Requirements
- DOS: QuickBasic 4.5 (
BC.EXE,LINK.EXE) — seedocs/build.md. - Host: Python 3 with
proxy/requirements.txt,socatfor the PTY↔TCP
bridge, and (optionally) DOSBox / DOSBox Staging.
Full changelog: 0.0.0...0.1.0
Initial commit
DOSCODE 0.0.0 — Initial release 🕹️
First public snapshot of DOSCODE, a retro AI coding agent for real DOS
machines (MS-DOS, FreeDOS, DOSBox, 8086/286/386/486/Pentium-era hardware) that
talks to modern LLMs through a serial cable and a Python proxy.
Architecture:
MS-DOS client ⇄ plain-text serial ⇄ Python proxy ⇄ HTTPS ⇄ LLM provider
✨ Highlights
- Retro 80×25 text UI (
SCREEN 0, CP437 boxes, ANSI-era colors). - Plain-text serial protocol between the DOS client and the modern proxy — no
TLS, no heavy JSON on the DOS side. - Python 3 proxy with support for multiple LLM providers and progressive
line-by-line streaming back to DOS.
🖥️ DOS client (client/)
Written in QuickBasic 4.5-compatible BASIC.
- TUI with fixed input line at the bottom and streamed chat area above.
- Serial I/O over
COM1/COM2(serial.bas). - Local commands:
/read,/run,/model,/clear,/help,/exit. - File read/write helpers (
files.bas). - Parser hooks for
<READ>,<WRITE>and<RUN>tool actions (parser.bas). - Confirmation prompt before executing any
RUNaction. - Build helpers:
BUILD.BAT,RUN.BAT.
🐍 Python proxy (proxy/)
- Serial transport via
pyserial, plusstdiomode for local development. - Plain-text line protocol (
protocol.py) matching the DOS client. - LLM backends (
llm.py):- OpenAI-compatible chat completions
- Claude Messages API
- OpenRouter
- Ollama
- Progressive
LINE ...streaming to the DOS side. - Launch helpers:
run_proxy.sh,RUN_PROXY.BAT,requirements.txt.
📚 Documentation
README.md— project overview, architecture and MVP scope.docs/build.md— QuickBasic 4.5 build notes and DOSBox setup.docs/protocol.md— serial wire protocol reference.AGENTS.md— contribution rules for AI agents working on the repo.LICENSE— project license.
✅ MVP scope covered in 0.0.0
- Opens the DOS TUI and draws the retro 80×25 frame.
- Connects to
COM1and sends prompts to the proxy. - Receives streamed
LINE ...responses and renders them progressively. - Supports the full set of local slash commands listed above.
- Includes tool-action parser hooks with confirmation for
RUN.
🛣️ Next milestones (not in this release)
- Richer chat history and diff navigation.
- Undo state.
- File browser navigation.
- Fully automated multi-line
<WRITE>application.
📦 Contents
Initial commit 85e9acd — 19 files, ~1369 lines:
client/:doscode.bas,ui.bas,serial.bas,parser.bas,files.bas,
BUILD.BAT,RUN.BATproxy/:server.py,llm.py,protocol.py,requirements.txt,
run_proxy.sh,RUN_PROXY.BATdocs/:build.md,protocol.md- Root:
README.md,AGENTS.md,LICENSE,.gitignore
🔧 Requirements
- DOS side: QuickBasic 4.5 tools (
BC.EXE,LINK.EXE) — not bundled.
Seedocs/build.md. - Modern side: Python 3 with the dependencies listed in
proxy/requirements.txt.
Full changelog: initial commit (85e9acd) — there is no previous tag to
compare against.