Handoff — ACCP command dispatch: what is carved, what is left, and one index request¶
Date: 2026-08-02
From: the ACCP emulation effort (RetroCore Machines.Accp + this carve)
To: whoever picks up ACCP firmware RE next, and the owner of ACCP-COMPLETE-REFERENCE.md
1. What landed¶
CARVE-ANSWER-OCTOBUS-ACCP-COMMAND-DISPATCH-AND-RTEST-2026-08-02.md, in this folder. It carries:
- The selftest status word is one address,
0x001131E2— read by both the boot console summary (0xF1A4) and the octobusRTESTarm (0x6632). Disassembly for both is in the doc. - The RTEST "contradiction" is closed, and a prior is withdrawn. The card never contradicted
itself;
CMSYSPARandCPURESclear the status word, and the original probe sent them first. Sent first, RTEST returns00 07 7F— exactly what the console printed. The earlier suggestion that RTEST might read a different word, or the ND-5000's status, is wrong; do not re-derive it. - The 46 dispatcher arm addresses, confirmed three independent ways (chain walk, external
naming from
N500-SYMBOLS.SYMB+ ND-05.020.01 §5.3, whole-image byte search). The byte search fixes the original scan: it adds0x4D50and drops the0x63DCfalse positive. - The reply convention, settled against the manual. ack =
00; nak =FF <Messnak> 10 11.ALIVEansweringFF 07 10 11against §5.3.26's documented7 = NOT aliveis what pinned it. Both halves were guesses before this.
2. What is still open¶
The ~30 unnamed dispatcher arms. 13 of the 46 commands have names from the manual and the ND-100
symbol table; the rest have none from any source. The arm addresses are all enumerated in the carve
doc, so the next step is mechanical: read the cmpi.b #imm,D0 immediate at each site to build the
command→handler map, then carve handler semantics. That work was scoped and deliberately deferred —
it is a large RE effort, not a loose end that was forgotten.
The 0x03 first content byte of the discovery request. Two readings were eliminated on the
running card: it is not station-derived (it stayed 0x03 across stations 0x10/0x15/0x1F while
byte 1 tracked), and it is not a per-message opcode (all six requests of one scan were byte-identical
03 10). The surviving reading — a fixed property of the card — is narrowed, not proven.
Proving it needs the Octobus Driver Programming Guide or a second card's ROM; neither is in
this repo. Bonus finding: byte 1 is the card's OWN station in all six requests, not the addressee.
3. One request, because I would not edit your file¶
The routing rule says a new carve must be added to its area's status-of-record in the same change.
For ND-5000 that is ACCP-COMPLETE-REFERENCE.md — your live working file, which I read but do not
edit. So the index line is not there.
Please add a pointer to
CARVE-ANSWER-OCTOBUS-ACCP-COMMAND-DISPATCH-AND-RTEST-2026-08-02.md wherever selftest status and
the command set are covered, or tell me you would rather I edit the reference directly in future and
I will.
If any of it duplicates something you already carved independently, say so and I will cut mine down to a pointer rather than leave two accounts of the same word.
4. Emulator-side counterparts¶
E:\Dev\Repos\Ronny\RetroCore\Nuget\HackerCorpLabs.Emulation.Machines.Accp\tests\AccpSelftestStatusTests.csE:\Dev\Repos\Ronny\RetroCore\Nuget\HackerCorpLabs.Emulation.Machines.Accp\tests\AccpCommandChannelTests.csE:\Dev\Repos\Ronny\RetroCore\Nuget\_shared\docs\ACCP-FORWARD-PLAN-2026-08-01.md
Suite state at handoff: 101/101 passing, four consecutive clean single-invocation runs.
5. One caveat on that suite¶
An earlier intermittent crash was never reproduced, so the "memory pressure from many machine
instances" hypothesis is unsupported. What was observed instead: three test hosts from three
projects live at once (RetroFS, Accp, Emulated.Tests.ND500), including a second concurrent Accp run
contending for the same bin\Debug output. That is a plausible explanation and it is UNVERIFIED.
Full-suite timing numbers from 2026-08-01/02 are not clean for the same reason.