--- M6502/Orao.pm 2007/07/30 21:00:36 33 +++ M6502/Orao.pm 2007/07/30 21:53:04 35 @@ -8,6 +8,7 @@ #use Time::HiRes qw(time); use File::Slurp; use Data::Dump qw/dump/; +use M6502; use base qw(Class::Accessor M6502 Screen); __PACKAGE__->mk_accessors(qw(debug trace run_for mem_dump trace)); @@ -38,11 +39,9 @@ our $orao; -our $PC = 0x1000; - sub init { my $self = shift; - warn "call upstream init\n"; + warn "Orao calling upstream init\n"; $self->SUPER::init( $self, @_ ); warn "staring Orao $Orao::VERSION emulation\n"; @@ -54,6 +53,10 @@ 0xE000 => 'rom/CRT12.ROM', }); + $self->load_oraoemu( 'dump/orao-1.2' ); + $self->load_oraoemu( 'dump/SCRINV.BIN' ); + $PC = 0x1000; + $orao = $self; # $self->prompt( 0x1000 ); @@ -75,12 +78,14 @@ my $o = $i * 3; my ( $from, $to, $desc ) = @mmap[$o,$o+1,$o+2]; printf "%04x - %04x - %s\n", $from, $to, $desc; -# for my $a ( $from .. $to ) { -# $orao->read( $a ); -# } -# $self->sync; + for my $a ( $from .. $to ) { + $orao->read( $a ); + } + $self->sync; } + warn "Orao init finished\n"; + } =head2 load_rom @@ -128,6 +133,7 @@ return; } printf "loading %s at %04x - %04x %02x\n", $path, $addr, $addr+$size-1, $size; + return $self->poke_code( $addr, map { ord($_) } split(//,$buff) ); return $self->write_chunk( $addr, $buff ); my $chunk; @@ -215,8 +221,6 @@ =cut -my @mem = (0xff) x 0x100000; # 64Mb - =head2 read Read from memory