re: four ISL built-ins are tutorial-only, and 96 encodes the tutorial index
96, 97, 98 and 104 were unnamed. Measured over all 28 stages they form a
family that appears nowhere outside the six tutorials:
96 8 sites S18-S23 only
97 38 sites S18-S23 only, followed by start_coroutine 27/38
98 0 sites never called anywhere
104 39 sites S18-S23 only, followed by wait_s 39/39,
preceded by end_coroutine 37/39
104's adjacency is a textbook poll loop with no exceptions: coroutine starts,
tests the predicate, waits, repeats.
96's operand is the giveaway. Its eight payloads in stage order are
S18 -> 101, 102, 103; S19 -> 201; S20 -> 301; S21 -> 401; S22 -> 501;
S23 -> 601, i.e. (stage - 17) * 100 + section. Tutorial 1 has three sections
and the other five have one each, and the tutorial index is encoded in the
argument.
Names are deliberately NOT applied. tutorial_begin / tutorial_end /
tutorial_message_pending fit the shape, and [phase+340]/[phase+344] are said
to carry the state and payload, but I have not read that handler myself and
this file has already had to withdraw five names guessed from shape. The
distribution and the argument encoding are established and are what a port
needs; the labels can wait for someone to read the code.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PMRJjbxLqZtsb5Vb7KunPE
This commit is contained in:
@@ -140,6 +140,39 @@ and spread checks but its maximum *exceeds* the table — flag indices run 0..31
|
||||
against symbol tables as small as 40 — so it is excluded, and the disassembler
|
||||
now declines to resolve it rather than printing an invented name.
|
||||
|
||||
### ✅ Four built-ins are TUTORIAL-ONLY — 85 sites, every one in S18–S23
|
||||
|
||||
`96`, `97`, `98` and `104` were unnamed. Measured over all 28 stages, they form a
|
||||
family that appears **nowhere outside the six tutorials**:
|
||||
|
||||
| id | sites | stages | shape |
|
||||
|---|---|---|---|
|
||||
| **96** | 8 | S18–S23 only | one call per tutorial *section* |
|
||||
| **97** | 38 | S18–S23 only | followed by `start_coroutine` (27/38) |
|
||||
| **98** | **0** | — | never called anywhere |
|
||||
| **104** | 39 | S18–S23 only | **followed by `wait_s` 39/39**, preceded by `end_coroutine` 37/39 |
|
||||
|
||||
`104`'s adjacency is a textbook poll loop: a coroutine starts, tests the
|
||||
predicate, waits, and goes round again — 39 sites, no exceptions.
|
||||
|
||||
`96`'s operand is the giveaway. Its eight payloads are, in stage order:
|
||||
|
||||
```
|
||||
Stage18 → 101, 102, 103 Stage19 → 201 Stage20 → 301
|
||||
Stage21 → 401 Stage22 → 501 Stage23 → 601
|
||||
```
|
||||
|
||||
That is `(stage − 17) * 100 + section`: tutorial 1 has three sections, the other
|
||||
five have one each. The tutorial index is encoded in the argument.
|
||||
|
||||
🟡 **Names are NOT applied.** `tutorial_begin` / `tutorial_end` /
|
||||
`tutorial_message_pending` fit the shape, and `sub_82260710` reportedly suspends
|
||||
while `[phase+340] == 2` with the payload latched at `[phase+344]` — but I have
|
||||
not read that myself, and this file has already had to withdraw five names
|
||||
guessed from shape. What is established here is the **distribution and the
|
||||
argument encoding**, which is what a port actually needs; the labels can wait for
|
||||
someone to read the handler.
|
||||
|
||||
### ✅ Five built-ins are the mission banners — named from usage, not from a guess
|
||||
|
||||
`77`, `78`, `81`, `82` and `135` were unnamed. The engine has five contiguous
|
||||
|
||||
Reference in New Issue
Block a user