Add the compiler's source reader. src_load reads a PETSCII SEQ file from
device 8 once into a bank-1 cache, enforcing the line, line-count, and file
size limits with stable error codes and exact positions. src_rewind and
src_next_line then replay the cached source identically for every pass,
one logical line at a time. Disk access goes through new diskio.s KERNAL
wrappers that always close their channels.
src/compiler/source.s, src/compiler/diskio.ssrc/common/source.incsrc/compiler/mmu.s (bank-1 block copy only)cfg/compiler.cfg (bank-1 source cache area)tests/platform/map-skeleton.s (table-size constant only)tests/source/scripts/build-source-test.ps1, scripts/verify-source-test.ps1,
scripts/lib/docs/memory-map.md, docs/architecture.md, docs/decisions.md (D118)planning/claims/E02-S01.mdbuild/$0D lines, both letter ranges in
decls.n8); the reader delivers the bytes unchanged, verified by a host
Fletcher-16 match. A live Vim edit is E07-S03.$0D lines and a missing final $0D: nofinal.n8 yields the
same 50 lines and checksum as decls.n8 with one byte fewer.edge.n8 (80-byte line,
599 lines, 18,999 bytes) loads; longln.n8 -> code 3 at 3:81,
manyln.n8 -> code 4 at 600:1, big.n8 -> code 2 at 500:38.src_line_no ends at the line
count.LDTND is 0
after every load; after each failure src_len is 0 and src_next_line
returns end of source at once; a later decls.n8 load succeeds unchanged.Source error codes are reader return codes. E02-S04 maps them to stable Exxx
diagnostics. A true Vim round trip (edit in x64sc, compile in x128) is
E07-S03; this story proves the reader consumes Vim's exact byte format
(../vim/NOTES.md, vedit.c save path) with no conversion.
../vim/NOTES.md and vedit.c (raw
buffer, $0D lines, final $0D appended, 80-column wrap on load).$2000-$6AFF), tables
keep $6B00-$BFFF (21,760 bytes). Map skeleton re-verified with it.mmu_copy_to1 and mmu_src to mmu.s, diskio.s with a COMMON
chunk reader run through kcall, source.s, and diskio.inc.scripts/lib/Nova128Test.psm1 (link, PETSCII conversion, disk
images, remote monitor, mailbox polling). The monitor helper waits for the
(C:$xxxx) prompt; a fixed delay returned empty replies with a 1581.longln.n8 (code 0, position 0:0, 100 bytes kept). Restored.scripts/verify-source-test.ps1 (pass plus mutation run),
scripts/verify-map-skeleton.ps1, scripts/verify-kernal-probe.ps1,
tests/grammar/validate.ps1, tests/disk/prepare-disk.tests.ps1.NOVA128 SOURCE TEST OK; regressions pass.src/compiler/source.s, src/compiler/diskio.s,
src/compiler/mmu.s, src/common/source.inc, src/common/diskio.inc,
cfg/compiler.cfg, tests/source/source-test.s,
tests/platform/map-skeleton.s, scripts/build-source-test.ps1,
scripts/verify-source-test.ps1, scripts/build-map-skeleton.ps1,
scripts/lib/Nova128Test.psm1, docs/memory-map.md,
docs/architecture.md, docs/decisions.md (D118), this claim.Exxx IDs.Powered by TurnKey Linux.