Struct rz80::Registers
[−]
[src]
pub struct Registers { pub i: RegT, pub r: RegT, pub im: RegT, // some fields omitted }
CPU register access
Examples
set the PC and SP registers:
use rz80::CPU; let mut cpu = CPU::new(); cpu.reg.set_pc(0x0200); cpu.reg.set_sp(0x01C0);
get the B, C and BC registers
use rz80::CPU; let cpu = CPU::new(); let b = cpu.reg.b(); let c = cpu.reg.c(); let bc = cpu.reg.bc(); println!("B: {}, C: {}, BC: {}", b, c, bc);
8- or 16-bit wraparound happens during the set operation:
use rz80::CPU; let mut cpu = CPU::new(); cpu.reg.set_a(0xFF); let a = cpu.reg.a() + 1; cpu.reg.set_a(a); assert!(cpu.reg.a() == 0x00); cpu.reg.set_hl(0x0000); let hl = cpu.reg.hl() - 1; cpu.reg.set_hl(hl); assert!(cpu.reg.hl() == 0xFFFF);
Fields
i: RegT
r: RegT
im: RegT
Methods
impl Registers
[src]
fn new() -> Registers
initialize a new Registers object
fn reset(&mut self)
perform a CPU reset (clears some, but not all registers)
fn a(&self) -> RegT
get content of A register
fn f(&self) -> RegT
get content of F register (status flags)
fn b(&self) -> RegT
get content of B register
fn c(&self) -> RegT
get content of C register
fn d(&self) -> RegT
get content of D register
fn e(&self) -> RegT
get content of E register
fn h(&self) -> RegT
get content of H register
fn l(&self) -> RegT
get content of L register
fn w(&self) -> RegT
get content of undocumented W register (of WZ register pair)
fn set_a(&mut self, v: RegT)
set content of A register
fn set_f(&mut self, v: RegT)
set content of F register (status flags)
fn set_b(&mut self, v: RegT)
set content of B register
fn set_c(&mut self, v: RegT)
set content of C register
fn set_d(&mut self, v: RegT)
set content of D register
fn set_e(&mut self, v: RegT)
set content of E register
fn set_h(&mut self, v: RegT)
set content of H register
fn set_l(&mut self, v: RegT)
set content of L register
fn af(&self) -> RegT
get content of AF register pair
fn bc(&self) -> RegT
get content of BC register pair
fn de(&self) -> RegT
get content of DE register pair
fn hl(&self) -> RegT
get content of HL register pair
fn ix(&self) -> RegT
get content of IX register
fn iy(&self) -> RegT
get content of IY register
fn sp(&self) -> RegT
get content of SP register
fn wz(&self) -> RegT
get content of undocumented WZ register
fn af_(&self) -> RegT
get content of AF' register
fn bc_(&self) -> RegT
get content of BC' register
fn de_(&self) -> RegT
get content of DE' register
fn hl_(&self) -> RegT
get content of HL' register
fn wz_(&self) -> RegT
get content of undocumented WZ' register
fn pc(&self) -> RegT
get content of PC register
fn set_af(&mut self, v: RegT)
set content of AF register pair
fn set_bc(&mut self, v: RegT)
set content of BC register pair
fn set_de(&mut self, v: RegT)
set content of DE register pair
fn set_hl(&mut self, v: RegT)
set content of HL register pair
fn set_ix(&mut self, v: RegT)
set content of IX register
fn set_iy(&mut self, v: RegT)
set content of IY register
fn set_sp(&mut self, v: RegT)
set content of SP register
fn set_wz(&mut self, v: RegT)
set content of undocumented WZ register
fn set_af_(&mut self, v: RegT)
set content of AF' register
fn set_bc_(&mut self, v: RegT)
set content of BC' register
fn set_de_(&mut self, v: RegT)
set content of DE' register
fn set_hl_(&mut self, v: RegT)
set content of HL' register
fn set_wz_(&mut self, v: RegT)
set content of undocumented WZ' register
fn set_pc(&mut self, v: RegT)
set content of PC register
fn inc_pc(&mut self, inc: u16)
increment the PC register by some value
fn dec_pc(&mut self, dec: u16)
decrement the PC register by some value
fn r8(&self, r: usize) -> RegT
get 8-bit register by index (where index is 3-bit register id from Z80 instruction)
fn set_r8(&mut self, r: usize, v: RegT)
set 8-bit register by index (where index is 3-bit register id from Z80 instruction)
fn r8i(&self, r: usize) -> RegT
get 8-bit register by index, H,L never patched to IXH,IXL,IYH,IYL
fn set_r8i(&mut self, r: usize, v: RegT)
set 8-bit register by index, H,L never patched to IXH,IXL,IYH,IYL
fn r16i(&self, i: usize) -> RegT
get 16-bit register by direct index (AF, BC, DE, HL, etc)
fn set_r16i(&mut self, i: usize, v: RegT)
set 16-bit register by direct index (AF, BC, DE, ...)
fn r16sp(&self, r: usize) -> RegT
get 16-bit register by 2-bit index with mapping through SP-table
fn set_r16sp(&mut self, r: usize, v: RegT)
set 16-bit register by 2-bit index with mapping through SP-table
fn r16af(&self, r: usize) -> RegT
get 16-bit register by 2-bit index with mapping through AF-table
fn set_r16af(&mut self, r: usize, v: RegT)
set 16-bit register by 2-bit index with mapping through AF-table
fn swap(&mut self, i: usize, i_: usize)
swap 2 16-bit registers by direct index (HL, BC, DE, ...)
fn patch_ix(&mut self)
patch register mapping tables for use of IX instead of HL
fn patch_iy(&mut self)
patch register mapping tables for use of IY instead of HL
fn unpatch(&mut self)
unpatch register mapping tables to use HL instead of IX/IY