Stage D batch 7 (final): mama_forth_words.c groups 5+6 -- dictionary lookup/test words + Stadium primitives; Stage D closed (FABRIC-3.md §XXXII.6)
NAME>XT/RUNCAP-TEST/PAIR-TEST and the six STADIUM-* physics primitives (STADIUM-ADMIT/STADIUM-EVICT/STADIUM-RES-PULL/STADIUM-RES-PUSH/ STADIUM-HEAT@/STADIUM-HEAT!), 12 sites -- closes mama_forth_words.c and the entire kernel-only error-handling audit. All 105 sites from the §XXXII.3 triage now accounted for: 28 already correct, 75 silent sites fixed across repl.c/inference_words.c/ log_words.c/vm_core.c/mama_forth_words.c, 2 special cases resolved by dropping the error per their own documented contract, 1 resolved via console_println() per its own recursion constraint. Verified with awk: zero remaining vm->error=1 sites in mama_forth_words.c lack a diagnostic within the preceding three lines. Three-arch clean qemu acceptance passed. This closes Stage D and the USE/logging/audit thread opened in §XXXII; Stage E (human-vs-unattended identity model) remains open, not started this pass. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BWpNjdwPtFLuVLaAq44L9K
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
90c86c6006
commit
42d4bf3dad
@@ -1226,6 +1226,7 @@ static void mama_word_zuse_eligible_query(VM *vm)
|
||||
static void mama_word_name_to_xt(VM *vm)
|
||||
{
|
||||
if (vm->dsp < 1) {
|
||||
log_message(LOG_ERROR, "NAME>XT: stack underflow");
|
||||
vm->error = 1;
|
||||
vm_push(vm, 0);
|
||||
return;
|
||||
@@ -1238,6 +1239,7 @@ static void mama_word_name_to_xt(VM *vm)
|
||||
}
|
||||
const uint8_t *name = vm_ptr(vm, (vaddr_t)caddr);
|
||||
if (!name) {
|
||||
log_message(LOG_ERROR, "NAME>XT: invalid address on the stack");
|
||||
vm->error = 1;
|
||||
vm_push(vm, 0);
|
||||
return;
|
||||
@@ -1295,7 +1297,11 @@ static void mama_word_runcap_test(VM *vm)
|
||||
cell_t u, caddr;
|
||||
uint32_t i;
|
||||
|
||||
if (vm->dsp < 1) { vm->error = 1; return; }
|
||||
if (vm->dsp < 1) {
|
||||
console_println("RUNCAP-TEST: expects S\" name\" RUNCAP-TEST -- nothing on the stack");
|
||||
vm->error = 1;
|
||||
return;
|
||||
}
|
||||
u = vm_pop(vm);
|
||||
caddr = vm_pop(vm);
|
||||
|
||||
@@ -1306,7 +1312,11 @@ static void mama_word_runcap_test(VM *vm)
|
||||
}
|
||||
{
|
||||
const uint8_t *p = vm_ptr(vm, (vaddr_t)caddr);
|
||||
if (!p) { vm->error = 1; return; }
|
||||
if (!p) {
|
||||
console_println("RUNCAP-TEST: invalid address on the stack");
|
||||
vm->error = 1;
|
||||
return;
|
||||
}
|
||||
for (i = 0; i < (uint32_t)u; i++) vm_name[i] = (char)p[i];
|
||||
}
|
||||
vm_name[u] = '\0';
|
||||
@@ -1345,7 +1355,11 @@ static void mama_word_pair_test(VM *vm)
|
||||
cell_t u, caddr;
|
||||
uint32_t i;
|
||||
|
||||
if (vm->dsp < 1) { vm->error = 1; return; }
|
||||
if (vm->dsp < 1) {
|
||||
console_println("PAIR-TEST: expects S\" name\" PAIR-TEST -- nothing on the stack");
|
||||
vm->error = 1;
|
||||
return;
|
||||
}
|
||||
u = vm_pop(vm);
|
||||
caddr = vm_pop(vm);
|
||||
|
||||
@@ -1356,7 +1370,11 @@ static void mama_word_pair_test(VM *vm)
|
||||
}
|
||||
{
|
||||
const uint8_t *p = vm_ptr(vm, (vaddr_t)caddr);
|
||||
if (!p) { vm->error = 1; return; }
|
||||
if (!p) {
|
||||
console_println("PAIR-TEST: invalid address on the stack");
|
||||
vm->error = 1;
|
||||
return;
|
||||
}
|
||||
for (i = 0; i < (uint32_t)u; i++) console_name[i] = (char)p[i];
|
||||
}
|
||||
console_name[u] = '\0';
|
||||
@@ -1924,7 +1942,11 @@ static void mama_word_stadium_admit(VM *vm)
|
||||
size_t i;
|
||||
size_t idx;
|
||||
|
||||
if (vm->dsp < 2) { vm->error = 1; return; }
|
||||
if (vm->dsp < 2) {
|
||||
log_message(LOG_ERROR, "STADIUM-ADMIT: stack underflow");
|
||||
vm->error = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
behaviour_cell = vm_pop(vm);
|
||||
heat_cell = vm_pop(vm);
|
||||
@@ -1959,7 +1981,11 @@ static void mama_word_stadium_evict(VM *vm)
|
||||
{
|
||||
cell_t cell_cell;
|
||||
|
||||
if (vm->dsp < 0) { vm->error = 1; return; }
|
||||
if (vm->dsp < 0) {
|
||||
log_message(LOG_ERROR, "STADIUM-EVICT: stack underflow");
|
||||
vm->error = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
cell_cell = vm_pop(vm);
|
||||
if (cell_cell < 0) {
|
||||
@@ -2001,7 +2027,11 @@ static void mama_word_stadium_res_pull(VM *vm)
|
||||
{
|
||||
cell_t qty_cell;
|
||||
|
||||
if (vm->dsp < 0) { vm->error = 1; return; }
|
||||
if (vm->dsp < 0) {
|
||||
log_message(LOG_ERROR, "STADIUM-RES-PULL: stack underflow");
|
||||
vm->error = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
qty_cell = vm_pop(vm);
|
||||
if (qty_cell < 0) {
|
||||
@@ -2021,7 +2051,11 @@ static void mama_word_stadium_res_push(VM *vm)
|
||||
{
|
||||
cell_t heat_cell;
|
||||
|
||||
if (vm->dsp < 0) { vm->error = 1; return; }
|
||||
if (vm->dsp < 0) {
|
||||
log_message(LOG_ERROR, "STADIUM-RES-PUSH: stack underflow");
|
||||
vm->error = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
heat_cell = vm_pop(vm);
|
||||
if (heat_cell < 0) return;
|
||||
@@ -2038,7 +2072,11 @@ static void mama_word_stadium_heat_fetch(VM *vm)
|
||||
{
|
||||
cell_t cell_cell;
|
||||
|
||||
if (vm->dsp < 0) { vm->error = 1; return; }
|
||||
if (vm->dsp < 0) {
|
||||
log_message(LOG_ERROR, "STADIUM-HEAT@: stack underflow");
|
||||
vm->error = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
cell_cell = vm_pop(vm);
|
||||
if (cell_cell < 0) {
|
||||
@@ -2060,7 +2098,11 @@ static void mama_word_stadium_heat_store(VM *vm)
|
||||
{
|
||||
cell_t cell_cell, new_heat_cell;
|
||||
|
||||
if (vm->dsp < 1) { vm->error = 1; return; }
|
||||
if (vm->dsp < 1) {
|
||||
log_message(LOG_ERROR, "STADIUM-HEAT!: stack underflow");
|
||||
vm->error = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
cell_cell = vm_pop(vm);
|
||||
new_heat_cell = vm_pop(vm);
|
||||
|
||||
Reference in New Issue
Block a user