docs: the video RAM test draws characters then verifies; mapping alone cannot satisfy it

This commit is contained in:
SDD committed 2026-10-16 10:30:52 +03:00
1 parent 52744cbd03
commit 07997022ad
1 file changed
+28 -4
+28 -4
View File
@@ -798,11 +798,35 @@ step. The bank walk observed so far steps in `0x400000` units (`>>4`), reaching
**Honest status:** level 1 is NOT passing. Video memory is located and mapped correctly; the
test's *requirement* is not yet understood.
## The video test DRAWS, then verifies (2026-10-16)
Reading the helper the test calls per bank — bit `0x3FDDFCB0`, file `0x17BF96` — shows it is
**not** the check. It is the display:
```
3fddfd60: ... loop building 8 hex digits from a9 ... ; format a9 as hex
3fddff40: movk 7,a11 ; 8 characters
3fddff50: movb *a5,a8 ; push char ; push a10 ; push 0xffff
3fde0000: calla 0x3fdf97f0 ; plot the character at a10
3fde0030: addk 12,a10 ; next cell, +12
```
It formats the address in hex and **draws it on the screen**, 12 units per character, via the
character plotter at `0x3fdf97f0`. That also explains the read PCs the catch-all saw inside
the video region (`3FDF97A0`, `3FDF9A00` — the drawing code reading VRAM).
**Consequence for the diagnosis:** the level-1 "video RAM test" **draws characters and then
verifies them**; it is not a raw memory walk. So the fact that mapping the memory does not
make it pass is *expected* — the check is on the drawing path, which depends on the character
generator, not merely on memory existing.
**Next:** find the verification — where the test compares what it drew against what it reads
back. That comparison is what fails and reports error 22 at bit `0x040000C0`.
---
## Next steps
1. Read the check helper at bit 0x3FDDFCB0 (file 0x17BF96) to learn what the
level-1 video RAM test actually requires.
2. Map video memory at the full extent the bank walk reaches.
3. Re-run the console check after each change.
1. Find the VERIFY step of the video RAM test (what it compares after drawing).
2. That comparison is what fails; it likely needs the character generator / font data.
3. Re-run the console check (cap.lua) after each change.