Erase is delete. Interrupt is control-C (^C). user@elli:~/GD$ node day10.js === Executing Countdown === [LPC] : 10 [LPC] : 9 [LPC] : 8 [LPC] : 7 [LPC] : 6 [LPC] : 5 [LPC] : 4 [LPC] : 3 [LPC] : 2 [LPC] : 1 [LPC] : Liftoff! user@elli:~/GD$ node day11.js === Testing Complex Data Structures === [LPC] : 100 [LPC] : 999 [LPC] : 300 user@elli:~/GD$ node day12.js === Booting System === [Host] Blueprint '/obj/weapon.c' missing in Registry. Fetching from VFS... [Host] Compiling '/obj/weapon.c'... [Host] Successfully registered '/obj/weapon.c'. Resuming clone... You swing the weapon for 50 damage! user@elli:~/GD$ node day13.js === Cloning Orc === Orc setup running. Orc shrugs off damage and gets angrier! HP: 135 Rage: 60 user@elli:~/GD$ Push the CTX back into the runQueue so the Scheduler picks it up on the next tick. Return: Return 1 to Object A's R0 to indicate a successful post. The Final Validation (day14.js) To prove V1.0 is complete, your final test script should demonstrate a perfect yield-and-resume cycle: Object A (The Receiver): Enters a while(1) loop, calling SYS_MAIL_READ. Because the mailbox is empty on the first pass, it traps, yields to the host, and goes dormant. Object B (The Sender): Executes, performing a simple task (like counting), then calls SYS_MAIL_POST sending a string (e.g., "Wake up!") to Object A. The Resume: The Scheduler sees Object A is back in the runQueue. Object A resumes execution, re-evaluates SYS_MAIL_READ, successfully receives the string in R0, and prints it. Are you ready to tackle the Scheduler refactor and implement the wait table?