From 0a55b5a68bf9f717397e79ac152c05890b4ad395 Mon Sep 17 00:00:00 2001 From: Marco Thomas Date: Tue, 1 Jul 2025 12:20:23 +0900 Subject: [PATCH] fix(interrupt): parse correct amount of data --- src/interpreter/interpreter.rs | 8 ++++---- src/interpreter/interrupt.rs | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/interpreter/interpreter.rs b/src/interpreter/interpreter.rs index b3ddf33..68ab9ca 100644 --- a/src/interpreter/interpreter.rs +++ b/src/interpreter/interpreter.rs @@ -760,12 +760,12 @@ impl Interpreter { fn interpret_interrupt(&self, id: u8) -> Result<(), InterpreterError> { let bx = self.computer.regs.bx.read(); - let w1 = self.computer.read(bx.into())?; - let w2 = self.computer.read((bx + 2).into())?; let mut data = Vec::new(); - data.extend_from_slice(&w1.to_le_bytes()); - data.extend_from_slice(&w2.to_le_bytes()); + for i in 0..8 { + let word = self.computer.read((bx + 2 * i).into())?; + data.extend_from_slice(&word.to_le_bytes()); + } let msg = InterruptMessage::new(&data); diff --git a/src/interpreter/interrupt.rs b/src/interpreter/interrupt.rs index 719d204..3544b37 100644 --- a/src/interpreter/interrupt.rs +++ b/src/interpreter/interrupt.rs @@ -22,6 +22,7 @@ pub struct Mess1 { impl Mess1 { pub fn new(data: &Vec) -> Self { + log::debug!("Mess1 from data {data:?}"); Self { i1: Word::from_le_bytes([data[4], data[5]]), i2: Word::from_le_bytes([data[6], data[7]]),