emu: factor out utils into own module
This commit is contained in:
@@ -3,9 +3,10 @@ use std::fmt::{Debug, Formatter};
|
||||
|
||||
use super::byteorder::{ByteOrder, LittleEndian};
|
||||
|
||||
use emu::operands::{Addr, Reg, RegHi};
|
||||
use emu::operands::{Addr, Reg, RegHi, RegLo};
|
||||
use emu::operations as ops;
|
||||
use emu::pc::Bus;
|
||||
use emu::util::segoff_to_addr;
|
||||
|
||||
#[allow(non_camel_case_types)]
|
||||
#[derive(Clone, Debug, Default)]
|
||||
@@ -302,37 +303,6 @@ impl i8088 {
|
||||
}
|
||||
}
|
||||
|
||||
pub const fn segoff_to_addr(segment: u16, offset: u16) -> usize {
|
||||
let segaddr = (segment as usize) << 4;
|
||||
segaddr + offset as usize
|
||||
}
|
||||
|
||||
pub fn read_hi(val: &Cell<u16>) -> u8 {
|
||||
let mut buf = [0; 2];
|
||||
LittleEndian::write_u16(&mut buf, val.get());
|
||||
buf[1] as u8
|
||||
}
|
||||
|
||||
pub fn read_lo(val: &Cell<u16>) -> u8 {
|
||||
let mut buf = [0; 2];
|
||||
LittleEndian::write_u16(&mut buf, val.get());
|
||||
buf[0] as u8
|
||||
}
|
||||
|
||||
pub fn write_hi(reg: &Cell<u16>, val: u8) {
|
||||
let mut buf = [0; 2];
|
||||
LittleEndian::write_u16(&mut buf, reg.get());
|
||||
buf[1] = val;
|
||||
reg.set(LittleEndian::read_u16(&buf))
|
||||
}
|
||||
|
||||
pub fn write_lo(reg: &Cell<u16>, val: u8) {
|
||||
let mut buf = [0; 2];
|
||||
LittleEndian::write_u16(&mut buf, reg.get());
|
||||
buf[1] = val;
|
||||
reg.set(LittleEndian::read_u16(&buf));
|
||||
}
|
||||
|
||||
impl From<u16> for Flags {
|
||||
fn from(flags: u16) -> Self {
|
||||
Self {
|
||||
|
||||
Reference in New Issue
Block a user