--- M6502/Orao.pm 2007/07/31 17:34:52 70 +++ M6502/Orao.pm 2007/07/31 21:43:57 73 @@ -51,11 +51,12 @@ $self->open_screen; $self->load_rom({ 0x1000 => 'dump/SCRINV.BIN', +# 0x6000 => 'dump/screen.dmp', 0xC000 => 'rom/BAS12.ROM', 0xE000 => 'rom/CRT12.ROM', }); - $PC = 0xDD11; # BC +# $PC = 0xDD11; # BC # $PC = 0xC274; # MC $orao = $self; @@ -66,6 +67,8 @@ $self->trace( 0 ); $self->debug( 0 ); + $self->render( @mem[ 0x6000 .. 0x7fff ] ); + if ( $self->show_mem ) { warn "rendering memory map\n"; @@ -98,9 +101,10 @@ } else { warn "rendering video memory\n"; - for my $a ( 0x6000 .. 0x7fff ) { - $self->vram( $a - 0x6000, $mem[$a] ); - } +# for my $a ( 0x6000 .. 0x7fff ) { +# $self->vram( $a - 0x6000, $mem[$a] ); +# } + $self->render( @mem[ 0x6000 .. 0x7fff ] ); } $self->sync; @@ -152,9 +156,10 @@ $t = $end if ( $end < $t ); warn sprintf("refresh video ram %04x-%04x\n", $f, $t); - foreach my $a ( $f .. $t ) { - $self->vram( $a - 0x6000 , $mem[ $a ] ); - } +# foreach my $a ( $f .. $t ) { +# $self->vram( $a - 0x6000 , $mem[ $a ] ); +# } + $self->render( @mem[ 0x6000 .. 0x7fff ] ); } =head2 load_oraoemu @@ -248,7 +253,11 @@ return sprintf(" %04x %s\n", $a, join(" ", map { - sprintf( "%02x", $_ ) + if ( defined($_) ) { + sprintf( "%02x", $_ ) + } else { + ' ' + } } @mem[ $a .. $a+8 ] ) ); @@ -379,6 +388,7 @@ $a = $v if defined($v); my $to = shift @v; $to = $a + 32 if ( ! $to || $to <= $a ); + $to = 0xffff if ( $to > 0xffff ); my $lines = int( ($to - $a + 8) / 8 ); printf "## e %04x %04x (%d bytes) lines: %d\n", $a, $to, ($to-$a), $lines; while ( --$lines ) {