diff --git a/crates/console/prometeu-bytecode/src/opcode.rs b/crates/console/prometeu-bytecode/src/opcode.rs index 40ef41b9..817649d8 100644 --- a/crates/console/prometeu-bytecode/src/opcode.rs +++ b/crates/console/prometeu-bytecode/src/opcode.rs @@ -155,10 +155,6 @@ pub enum OpCode { /// Returns from the current function. /// Stack: [return_val] -> [return_val] Ret = 0x51, - /// Starts a new local scope (for blocks/loops). - PushScope = 0x52, - /// Ends the current local scope, discarding its local variables. - PopScope = 0x53, // --- 6.8 Peripherals and System --- /// Invokes a system function (Firmware/OS). @@ -219,8 +215,6 @@ impl TryFrom for OpCode { 0x43 => Ok(OpCode::SetLocal), 0x50 => Ok(OpCode::Call), 0x51 => Ok(OpCode::Ret), - 0x52 => Ok(OpCode::PushScope), - 0x53 => Ok(OpCode::PopScope), 0x70 => Ok(OpCode::Syscall), 0x80 => Ok(OpCode::FrameSync), _ => Err(format!("Invalid OpCode: 0x{:04X}", value)), @@ -277,8 +271,6 @@ impl OpCode { OpCode::SetLocal => 2, OpCode::Call => 5, OpCode::Ret => 4, - OpCode::PushScope => 3, - OpCode::PopScope => 3, OpCode::Syscall => 1, OpCode::FrameSync => 1, } diff --git a/crates/console/prometeu-bytecode/src/opcode_spec.rs b/crates/console/prometeu-bytecode/src/opcode_spec.rs index d2907136..70349b3e 100644 --- a/crates/console/prometeu-bytecode/src/opcode_spec.rs +++ b/crates/console/prometeu-bytecode/src/opcode_spec.rs @@ -462,26 +462,6 @@ impl OpCodeSpecExt for OpCode { may_trap: false, is_safepoint: false, }, - OpCode::PushScope => OpcodeSpec { - name: "PUSH_SCOPE", - imm_bytes: 0, - pops: 0, - pushes: 0, - is_branch: false, - is_terminator: false, - may_trap: false, - is_safepoint: false, - }, - OpCode::PopScope => OpcodeSpec { - name: "POP_SCOPE", - imm_bytes: 0, - pops: 0, - pushes: 0, - is_branch: false, - is_terminator: false, - may_trap: false, - is_safepoint: false, - }, OpCode::Syscall => OpcodeSpec { name: "SYSCALL", imm_bytes: 4, diff --git a/crates/console/prometeu-drivers/src/asset.rs b/crates/console/prometeu-drivers/src/asset.rs index 3f246638..fc1710bd 100644 --- a/crates/console/prometeu-drivers/src/asset.rs +++ b/crates/console/prometeu-drivers/src/asset.rs @@ -242,16 +242,17 @@ impl AssetManager { if slot_index < slots.len() { slots[slot_index] = Some(entry.asset_id); } - println!( - "[AssetManager] Preloaded tile asset '{}' (id: {}) into slot {}", - entry.asset_name, entry.asset_id, slot_index - ); - } else { - eprintln!( - "[AssetManager] Failed to preload tile asset '{}'", - entry.asset_name - ); + // println!( + // "[AssetManager] Preloaded tile asset '{}' (id: {}) into slot {}", + // entry.asset_name, entry.asset_id, slot_index + // ); } + // else { + // eprintln!( + // "[AssetManager] Failed to preload tile asset '{}'", + // entry.asset_name + // ); + // } } BankType::SOUNDS => { if let Ok(bank) = @@ -268,24 +269,26 @@ impl AssetManager { if slot_index < slots.len() { slots[slot_index] = Some(entry.asset_id); } - println!( - "[AssetManager] Preloaded sound asset '{}' (id: {}) into slot {}", - entry.asset_name, entry.asset_id, slot_index - ); - } else { - eprintln!( - "[AssetManager] Failed to preload sound asset '{}'", - entry.asset_name - ); + // println!( + // "[AssetManager] Preloaded sound asset '{}' (id: {}) into slot {}", + // entry.asset_name, entry.asset_id, slot_index + // ); } + // else { + // eprintln!( + // "[AssetManager] Failed to preload sound asset '{}'", + // entry.asset_name + // ); + // } } } - } else { - eprintln!( - "[AssetManager] Preload failed: asset '{}' not found in table", - item.asset_name - ); } + // else { + // eprintln!( + // "[AssetManager] Preload failed: asset '{}' not found in table", + // item.asset_name + // ); + // } } } diff --git a/crates/console/prometeu-drivers/src/audio.rs b/crates/console/prometeu-drivers/src/audio.rs index 9ab74eb6..197e3ce4 100644 --- a/crates/console/prometeu-drivers/src/audio.rs +++ b/crates/console/prometeu-drivers/src/audio.rs @@ -188,17 +188,18 @@ impl Audio { .and_then(|bank| bank.samples.get(sample_id as usize).map(Arc::clone)); if let Some(s) = sample { - println!( - "[Audio] Resolved sample from bank {} sample {}. Playing on voice {}.", - bank_id, sample_id, voice_id - ); + // println!( + // "[Audio] Resolved sample from bank {} sample {}. Playing on voice {}.", + // bank_id, sample_id, voice_id + // ); self.play_sample(s, voice_id, volume, pan, pitch, priority, loop_mode); - } else { - eprintln!( - "[Audio] Failed to resolve sample from bank {} sample {}.", - bank_id, sample_id - ); } + // else { + // eprintln!( + // "[Audio] Failed to resolve sample from bank {} sample {}.", + // bank_id, sample_id + // ); + // } } pub fn play_sample( diff --git a/crates/console/prometeu-drivers/tests/heartbeat.rs b/crates/console/prometeu-drivers/tests/heartbeat.rs deleted file mode 100644 index 33a9d9ee..00000000 --- a/crates/console/prometeu-drivers/tests/heartbeat.rs +++ /dev/null @@ -1,74 +0,0 @@ -// use std::fs; -// use std::path::Path; -// use prometeu_core::{Value, VmFault}; -// use prometeu_drivers::hardware::Hardware; -// use prometeu_hal::{HostContext, HostReturn, NativeInterface}; -// use prometeu_vm::{LogicalFrameEndingReason, VirtualMachine}; -// -// struct MockNative; -// impl NativeInterface for MockNative { -// fn syscall(&mut self, id: u32, _args: &[Value], ret: &mut HostReturn, _ctx: &mut HostContext) -> Result<(), VmFault> { -// if id == 0x2010 { // InputPadSnapshot -// for _ in 0..48 { -// ret.push_bool(false); -// } -// } else if id == 0x2011 { // InputTouchSnapshot -// for _ in 0..6 { -// ret.push_int(0); -// } -// } else { -// // Push one result for others that might expect it -// // Based on results_count() in syscalls.rs, most return 1 except GfxClear565 (0) -// if id != 0x1010 { -// ret.push_null(); -// } -// } -// Ok(()) -// } -// } -// -// #[test] -// fn test_canonical_cartridge_heartbeat() { -// let mut pbc_path = Path::new("../../test-cartridges/canonical/golden/program.pbc").to_path_buf(); -// if !pbc_path.exists() { -// pbc_path = Path::new("test-cartridges/canonical/golden/program.pbc").to_path_buf(); -// } -// -// let pbc_bytes = fs::read(pbc_path).expect("Failed to read canonical PBC. Did you run the generation test?"); -// -// // Determine entrypoint from the compiled module exports -// let entry_symbol = "src/main/modules:frame"; -// -// let mut vm = VirtualMachine::new(vec![], vec![]); -// vm.initialize(pbc_bytes, entry_symbol).expect("Failed to initialize VM with canonical cartridge"); -// vm.prepare_call(entry_symbol); -// -// let mut native = MockNative; -// let mut hw = Hardware::new(); -// let mut ctx = HostContext::new(Some(&mut hw)); -// -// // Run for a reasonable budget -// let report = vm.run_budget(1000, &mut native, &mut ctx).expect("VM failed to run"); -// -// // Acceptance criteria: -// // 1. No traps -// match report.reason { -// LogicalFrameEndingReason::Trap(trap) => panic!("VM trapped: {:?}", trap), -// LogicalFrameEndingReason::Panic(msg) => panic!("VM panicked: {}", msg), -// LogicalFrameEndingReason::Halted => {}, -// LogicalFrameEndingReason::EndOfRom => {}, -// LogicalFrameEndingReason::FrameSync => {}, -// LogicalFrameEndingReason::BudgetExhausted => {}, -// LogicalFrameEndingReason::Breakpoint => {}, -// } -// -// // 2. Deterministic output state (if any) -// // Observação: a PVM agora sinaliza FRAME_SYNC imediatamente antes do RET do entry point. -// // Quando o motivo é FRAME_SYNC, não exigimos pilha vazia (a limpeza final ocorre após o RET). -// // Para os demais motivos (RET/Halted/EndOfRom), a pilha deve estar vazia para frame(): void. -// if !matches!(report.reason, LogicalFrameEndingReason::FrameSync) { -// assert_eq!(vm.operand_stack.len(), 0, "Stack should be empty after frame() execution"); -// } -// -// println!("Heartbeat test passed!"); -// } diff --git a/crates/console/prometeu-hal/src/host_return.rs b/crates/console/prometeu-hal/src/host_return.rs index 901eea13..5e4a3679 100644 --- a/crates/console/prometeu-hal/src/host_return.rs +++ b/crates/console/prometeu-hal/src/host_return.rs @@ -26,7 +26,7 @@ impl<'a> HostReturn<'a> { self.stack.push(Value::Null); } pub fn push_gate(&mut self, g: usize) { - // Temporary: cast incoming gate to HeapRef index. Real allocator will provide proper handles. + // Temporary: cast incoming handle/HeapRef index. Real allocator will provide proper handles. self.stack.push(Value::HeapRef(HeapRef(g as u32))); } pub fn push_string(&mut self, s: String) { diff --git a/crates/console/prometeu-vm/src/heap.rs b/crates/console/prometeu-vm/src/heap.rs index e5f22099..01230252 100644 --- a/crates/console/prometeu-vm/src/heap.rs +++ b/crates/console/prometeu-vm/src/heap.rs @@ -210,9 +210,6 @@ mod tests { let mut heap = Heap::new(); // Create two arrays that reference each other: A -> B, B -> A - let a_placeholder = HeapRef(0); // temporary - let b_placeholder = HeapRef(0); - // Allocate empty arrays first to get handles let a = heap.allocate_array(vec![]); let b = heap.allocate_array(vec![]); diff --git a/crates/console/prometeu-vm/src/scope_frame.rs b/crates/console/prometeu-vm/src/scope_frame.rs deleted file mode 100644 index 7a5d1dd3..00000000 --- a/crates/console/prometeu-vm/src/scope_frame.rs +++ /dev/null @@ -1,3 +0,0 @@ -pub struct ScopeFrame { - pub scope_stack_base: usize, -} diff --git a/crates/console/prometeu-vm/src/virtual_machine.rs b/crates/console/prometeu-vm/src/virtual_machine.rs index ff9d95e0..e2a4be4c 100644 --- a/crates/console/prometeu-vm/src/virtual_machine.rs +++ b/crates/console/prometeu-vm/src/virtual_machine.rs @@ -915,9 +915,6 @@ impl VirtualMachine { } self.pc = frame.return_pc as usize; } - // Scope opcodes are no-ops under the new architecture (PR-2.1) - OpCode::PushScope => {} - OpCode::PopScope => {} OpCode::Syscall => { let pc_at_syscall = start_pc as u32; let id = instr @@ -1335,15 +1332,12 @@ mod tests { let func_addr = rom.len(); // func: - // PUSH_SCOPE // PUSH_I64 20 // GET_LOCAL 0 -- should be 10 (arg) // ADD -- 10 + 20 = 30 // SET_LOCAL 0 -- store result in local 0 (the arg slot) - // POP_SCOPE // GET_LOCAL 0 -- read 30 back // RET - rom.extend_from_slice(&(OpCode::PushScope as u16).to_le_bytes()); rom.extend_from_slice(&(OpCode::PushI64 as u16).to_le_bytes()); rom.extend_from_slice(&20i64.to_le_bytes()); rom.extend_from_slice(&(OpCode::GetLocal as u16).to_le_bytes()); @@ -1351,7 +1345,6 @@ mod tests { rom.extend_from_slice(&(OpCode::Add as u16).to_le_bytes()); rom.extend_from_slice(&(OpCode::SetLocal as u16).to_le_bytes()); rom.extend_from_slice(&0u32.to_le_bytes()); - rom.extend_from_slice(&(OpCode::PopScope as u16).to_le_bytes()); rom.extend_from_slice(&(OpCode::GetLocal as u16).to_le_bytes()); rom.extend_from_slice(&0u32.to_le_bytes()); rom.extend_from_slice(&(OpCode::Ret as u16).to_le_bytes());