1#[derive(Debug, PartialEq)]
2pub enum CpuErrorKind {
3 SegFault,
4 InvalidOpCode,
5}
6
7#[derive(Debug, PartialEq)]
8pub struct CpuError {
9 message: String,
10 addr: u16,
11 kind: CpuErrorKind,
12}
13
14impl CpuError {
15 pub fn code_segment_out_of_range(addr: u16) -> CpuError {
16 CpuError {
17 message: format!("CODE segment out of bounds"),
18 addr: addr,
19 kind: CpuErrorKind::SegFault,
20 }
21 }
22
23 pub fn unknown_opcode(addr: u16, opcode: u8) -> CpuError {
24 CpuError {
25 message: format!("Unknown opcode {:02X} at {:04X}", opcode, addr),
26 addr: addr,
27 kind: CpuErrorKind::InvalidOpCode,
28 }
29 }
30}