1
0
mirror of https://github.com/mre/mos6502.git synced 2024-06-13 15:29:33 +00:00

program loading

This commit is contained in:
Alex Weisberger 2014-10-01 18:19:28 -04:00
parent f2a47f4b00
commit f590b2d90c
2 changed files with 14 additions and 5 deletions

View File

@ -28,18 +28,25 @@
extern crate emu6502;
use emu6502::machine;
use emu6502::address::Address;
fn main() {
let mut machine = machine::Machine::new();
// "Load" a program
machine.memory.set_byte(&Address(0), 5);
// Obviously this will run the full program, just
// executing a finite num of instructions for simplicity
// right now.
for _ in range(0u, 2u) {
let raw_instruction = machine.fetch_instruction();
let instruction = machine.decode_instruction(raw_instruction);
machine.execute_instruction(instruction);
}
println!("Ran program, output of Accum is {}", machine.registers.accumulator);
println!("Machine dump: {}", machine);
println!("{}", machine);
}

View File

@ -25,7 +25,6 @@
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
use address::Address;
use address::AddressDiff;
use std::fmt;
use instruction::Instruction;
@ -53,6 +52,9 @@ impl Machine {
pub fn fetch_instruction(&mut self) -> u8 {
let instr = self.memory.get_byte(&self.registers.program_counter);
// Will need smarter logic to fetch the correct number of bytes
// for instruction
self.registers.program_counter.add(&AddressDiff(1));
instr
}
@ -103,7 +105,7 @@ impl Machine {
impl fmt::Show for Machine {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "I am a machine")
write!(f, "Machine Dump:\n\nAccumulator: {}", self.registers.accumulator)
}
}