Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

0.19.1–0.22.0 — Hardening the Frontend

Not every version added an instruction. A few were dedicated entirely to paying down assumptions baked into earlier, faster milestones.

0.19.1 — Source stops being a fixed 4096-byte buffer

c06e86c — Bump version to 0.19.1 and implement dynamic source buffer allocation replaced the original fixed-size, 4096-ASCII-byte source buffer (include/source.h) with dynamically growing storage. The NUL-free ASCII validation rule was kept — only the size ceiling was removed. This mattered because every later feature that grows source size (data directives with long lists, TIMES/FILL, boot-sector padding fixtures) would otherwise have run straight into an artificial 4 KB ceiling that had nothing to do with the instruction set.

0.21.0 — Straightening out opcode handling

6809007 — enhance opcode handling for MOV, ADD, and SUB instructions refactored how register codes fed into the 0x81-family ModR/M byte selection, in preparation for adding edx support (1384ac9) without duplicating the eax/ecx special-casing that had accumulated.

0.22.0 — CPU mode stops being implicit

4036930 — Update project version to 0.22.0; implement target mode handling and reject unsupported modes added --bits 16, --bits 32, and --bits 64 to the CLI, and made 16-bit and 32-bit modes explicitly rejected rather than silently mishandled. This is a defensive design choice: rather than letting an unsupported mode fall through to encoding logic that only ever assumed 64-bit registers, the CLI now fails fast with a clear mode error. That rejection was later narrowed as 16-bit support actually arrived (a regression test now checks that eax specifically is rejected in 16-bit mode, rather than rejecting the whole mode outright).

This sequence — remove an artificial limit, straighten out internal opcode handling, then make previously-implicit assumptions explicit and checked — is a recognizable pattern any time Kasm was about to expand into genuinely new territory. It shows up again just before the 16-bit work begins in earnest, and again just before COFF output.