第 77 环 · 序号点选也叫名字(点「第二个」回「好,工作那场,接着聊。」)
第 76 环让每一页报出序号,用户说「第二个」就能切过去。可回执只有一句「好,接着第二个。」——用户刚听完一页名字,点下去却只听见一个数字,还得自己把「第二个」和刚才的「工作那场」在心里对一遍。
这一环让序号点选也念名字:点「第二个」,回「好,工作那场,接着聊。」点的是谁、说的是谁,同一句话。
取到号之后,多走两步。name_pick 在「第N个」支路收下第 N 位(会话号 + 槽号)后,先读名字归属表 0x280 + 槽,确认这一格名字确实属于这个会话号;对上了,再读名字格 0x200 + 槽×6(6 字 = 24 字节,零填充)。
回执 = 全名命中那一句。排「好,<名字>,接着聊。」落同一个 0x230,与第 59 环按名字点选逐字节同一格式(6 + 名字字节 + 15,最多 33 字节),写完再走同一条 enter 换场通路。核不读名字、不拼字、不发第二条指令。
宁可报序号,绝不叫错人。归属对不上(槽被复用、名字是上一场留下的)或名字格为空 → 不念旧名字,退回第 76 环的「好,接着第N个。」24 字节;换场照常进行。听见序号只是少一点温度,叫错名字却是事故。
开关保守,老路一字不改。新写口 0xE88 NP_ORDNM(1=序号回执念名字,0=第 76 环老语义);新只读 0xB2C NP_ORDNAME = {named, nlen[4:0]};新观察点 0xB34 SCREEN53。前 76 圈地址映射、ISA 编码一位没动。
单元 tb_name_pick77(真同步 SRAM 模型,四场 + 余场序号表 + 归属表):
named=1 / nlen=12,换场 0xA2;ord_named=0 → 仍回「好,接着第二个。」,老用例逐位不变;0x230 起 w0..w8。ISA 协同 tb_isa_greet77(真整颗 SoC,四场目录,slot0 归属故意留 0xB7):
NP_ORDNM=1
说「第二个」→ 一条 npu.name → 0x230「好,工作那场,接着聊。」33 字节
NP_ORDNAME = 0x20(named=1, nlen=12)
SX_CUR = 0xA2
说「第一个」→ 一条 npu.name → 归属 0xB7 ≠ 0xA1,退回「好,接着第一个。」
NP_ORDNAME = 0x00
SX_CUR = 0xA1
SCREEN53 = 0x010CA2A1(named|12|0xA2|0xA1)/ SCREEN = 0x77
回归:tb_isa_greet76(第 76 环原程序,SCREEN52 与回执逐位不变)、tb_name_pick64、tb_isa_greet75 全部 PASS。
[4:0] 的 st 会回绕成 0~2,仿真里表现为「刚进名字格就跳回 IDLE」;状态机和常量一起加宽到 [5:0],这条坑一次踩透;0x280+槽),名字格按槽×6 读,两个地址公式不能混;[26:24],不是活清单条目,也不是核传进来的配置;0xE88 就仍是老回执——回归能逐位对表,靠的就是这条。点「第二个」已经能听见「好,工作那场,接着聊。」,可这仍是一句回执——说完就停在那里。下一环让序号点选命中后直接续上那场的话:进场完成即让 AI 先开口,接着上次那句往下说,用户不用再补一句「然后呢」。