第 74 环 · 余场点名(「那两场呢」就念出名字)
第 73 环让开机第一句变成「查资料,还有四场在等你。」——数字有了,名字还没有。用户顺口问一句「那几场呢?」,软件仍要自己读清单、跳过当前场、逐场读名字格、验归属、拼句子。
这一环把追问接住:一条 npu.rem,硬件跳过当前这场,把余下能叫出名字的场按清单顺序念成一句,落进同一个对话窗口。用户问三个字,芯片回一整句。
新增余场点名引擎 rem_pick。一个 start 脉冲走完整条链路:读活清单 0x1C0 → 跳过 sid == 当前会话 → 读名字归属 0x280+槽,与条目 sid 比对 → 归属对上才读名字格 0x200+槽×6(6 字 = 24 字节)→ 每场最多取 4 个汉字。
句子按清单顺序排。起句「还有」6 字节,名字之间补「、」,最多念三场;还有余场就在句尾补一个「等」字,最后「。」收尾,整行补空格到 64 字节落 0x1E0(与开机问候同一个窗口,新的覆盖旧的)。例:
还有记一笔、工作那场、跑步计划等。
两种「念不出名字」也不沉默。除当前场外没有别的场 →「没有别的场了。」21 字节;有余场但名字都没验过/是空格 →「还有N场,没起名字。」30 字节。两者 ok=0 / err=1 / bytes=64,仍写满整行,屏幕不会残留上一句。
ISA 化。新增 npu.rem(custom-2 funct3=100,机器码 0x0000405B);当前会话号直接接开关场引擎的 sx_cur_sid——核不传参、不查表、不拼字。前 73 圈编码与地址映射一位不动。
新增证据。SCREEN50(0xAF8) 与只读 RP_DIGEST(0xAFC):{nspoken[3:0], more, nskip[3:0], nself[3:0], ntotal[3:0], bytes[7:0]}。
单元 tb_rem_pick74(真同步 SRAM 模型,读要三态):
nspoken=3 / more=1 / nskip=0 / nself=1 / nothers=4 / nleft=1;0x99 →「工作那场」被跳过,只念「还有查资料、跑步计划。」nspoken=2 / nskip=1;clear 后探针与 16 个字全部归零。ISA 协同 tb_isa_greet74(真整颗 SoC,五场目录):一条 npu.boot 恢复 0xA3,落「查资料,还有四场在等你。」;再一条 npu.rem →
0x1E0 = 还有记一笔、工作那场、跑步计划等。(51 字节) SCREEN50 = 0x00701540 SCREEN = 0x74
当前场「查资料」在整行里一个字都不出现;第四场「读论文」只贡献一个「等」字。
回归:tb_isa_greet73(上一圈 ISA 路径)、tb_riscv_core、tb_min_soc64(主通路 0xF905FD04)全部 PASS。
nothers 不能靠「念到三场就停」来数,得把整张清单数完,否则会少算;第 74 环最多念三场,第四场以后只用一个「等」字带过。下一环让「还有呢?」也接得住:从上次停下的地方接着念,把余场一页一页翻完。