mirror of
https://github.com/danbee/8080
synced 2025-03-04 08:39:07 +00:00
WIP: Separate out mnemonic printing function
This commit is contained in:
parent
0f5adbc66e
commit
f3ac568b04
22
src/main.rs
22
src/main.rs
@ -1,5 +1,15 @@
|
|||||||
use std::io::{self, Read};
|
use std::io::{self, Read};
|
||||||
|
|
||||||
|
fn print_mnemonic(mnemonic: &str, bytes: &[u8]) {
|
||||||
|
match bytes.len() {
|
||||||
|
1 => println!("{:02x} {}", bytes[0], mnemonic),
|
||||||
|
2 => println!("{:02x} {:02x} {:5} #0x{:02x}", bytes[0], bytes[1], mnemonic, bytes[1]),
|
||||||
|
3 => println!("{:02x} {:02x} {:02x} {:5} ${:02x}{:02x}", bytes[0], bytes[1], bytes[2], mnemonic, bytes[2], bytes[1]),
|
||||||
|
|
||||||
|
_ => {},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn opcode(input: &Vec<u8>, counter: usize) -> usize {
|
fn opcode(input: &Vec<u8>, counter: usize) -> usize {
|
||||||
let size: usize;
|
let size: usize;
|
||||||
|
|
||||||
@ -7,7 +17,7 @@ fn opcode(input: &Vec<u8>, counter: usize) -> usize {
|
|||||||
|
|
||||||
match opcode {
|
match opcode {
|
||||||
// 00
|
// 00
|
||||||
0x00 => { println!("NOP"); size = 1 },
|
0x00 => { print_mnemonic("NOP", &input[counter..counter + 1]); size = 1 },
|
||||||
0x01 => {
|
0x01 => {
|
||||||
println!("LXI B,${:02x}{:02x}", input[counter + 2], input[counter + 1]);
|
println!("LXI B,${:02x}{:02x}", input[counter + 2], input[counter + 1]);
|
||||||
size = 3;
|
size = 3;
|
||||||
@ -16,10 +26,7 @@ fn opcode(input: &Vec<u8>, counter: usize) -> usize {
|
|||||||
0x03 => { println!("INX B"); size = 1 },
|
0x03 => { println!("INX B"); size = 1 },
|
||||||
0x04 => { println!("INR B"); size = 1 },
|
0x04 => { println!("INR B"); size = 1 },
|
||||||
0x05 => { println!("DCR B"); size = 1 },
|
0x05 => { println!("DCR B"); size = 1 },
|
||||||
0x06 => {
|
0x06 => { print_mnemonic("MVI B,", &input[counter..counter + 2]); size = 2; },
|
||||||
println!("MVI B,#0x{:02x}", input[counter + 1]);
|
|
||||||
size = 2;
|
|
||||||
},
|
|
||||||
0x07 => { println!("RLC"); size = 1 },
|
0x07 => { println!("RLC"); size = 1 },
|
||||||
|
|
||||||
// 08
|
// 08
|
||||||
@ -301,10 +308,7 @@ fn opcode(input: &Vec<u8>, counter: usize) -> usize {
|
|||||||
println!("JNZ ${:02x}{:02x}", input[counter + 2], input[counter + 1]);
|
println!("JNZ ${:02x}{:02x}", input[counter + 2], input[counter + 1]);
|
||||||
size = 3;
|
size = 3;
|
||||||
},
|
},
|
||||||
0xc3 => {
|
0xc3 => { print_mnemonic("JMP", &input[counter..counter + 3]); size = 3 },
|
||||||
println!("JMP ${:02x}{:02x}", input[counter + 2], input[counter + 1]);
|
|
||||||
size = 3;
|
|
||||||
},
|
|
||||||
0xc4 => {
|
0xc4 => {
|
||||||
println!("CNZ ${:02x}{:02x}", input[counter + 2], input[counter + 1]);
|
println!("CNZ ${:02x}{:02x}", input[counter + 2], input[counter + 1]);
|
||||||
size = 3;
|
size = 3;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user