1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
//! # Intel 8080 emulator
//!
//! This crates aims to be a flexible library to embed a 8080 emulator. It is currently used
//! to run a space invaders emulator but could be used for others emulators.
//!
//! The main struct is [`Proc8080`](proc_state/struct.Proc8080.html) which emulates the state
//! of a 8080 processor (memory, flags and registers).
//!
//! The second useful construct is probably the function
//! [`read_opcode`](opcode/fn.read_opcode.html) which can be used to build a disassembler backed
//! by this crate [opcode implementation](opcode/enum.OpCode.html).
//!
//! Here is an example of such a disassembler :
//!
//! ```no_run
//! extern crate intel_8080_emu;
//!
//! use std::fs::File;
//! use std::io;
//! use intel_8080_emu::opcode::OpCodes;
//!
//! fn main() {
//! let file_path: Option<String> = std::env::args().skip(1).next();
//! match file_path {
//! None => {
//! eprintln!("usage: disassembler <file>");
//! std::process::exit(1);
//! }
//! Some(path) => {
//! let input: File = File::open(path).expect("file not found");
//! let op_codes = OpCodes::new(io::BufReader::new(input));
//! let mut count = 0;
//! for op_code_result in op_codes {
//! let op_code = op_code_result.unwrap();
//! println!("0x{:04x?} - {}", count, op_code);
//! count += op_code.size();
//! }
//! }
//! }
//! }
//! ```
pub mod proc_state;
pub mod opcode;