85 |
$self->debug( 0 ); |
$self->debug( 0 ); |
86 |
|
|
87 |
warn "rendering memory\n"; |
warn "rendering memory\n"; |
88 |
$self->render_mem( @mem ); |
$self->render_mem( M6502::mem_peek_region(0x0000,0xffff) ); |
89 |
|
|
90 |
if ( $self->show_mem ) { |
if ( $self->show_mem ) { |
91 |
|
|
127 |
my $run_for = shift; |
my $run_for = shift; |
128 |
warn sprintf("about to exec from PC %04x for %d cycles\n", $PC, $run_for) if $self->trace; |
warn sprintf("about to exec from PC %04x for %d cycles\n", $PC, $run_for) if $self->trace; |
129 |
M6502::exec( $run_for ); |
M6502::exec( $run_for ); |
130 |
# $self->render_vram; |
$self->render_vram; |
131 |
}); |
}); |
132 |
}; |
}; |
133 |
|
|
406 |
$self->render_vram if ( $addr >= 0x6000 && $addr <= 0x7fff ); |
$self->render_vram if ( $addr >= 0x6000 && $addr <= 0x7fff ); |
407 |
|
|
408 |
$self->mmap_pixel( $addr, $byte, 0, 0 ) if $self->show_mem; |
$self->mmap_pixel( $addr, $byte, 0, 0 ) if $self->show_mem; |
409 |
$mem[$addr] = $byte; |
# $mem[$addr] = $byte; |
410 |
return; |
return; |
411 |
} |
} |
412 |
|
|
423 |
sub render_vram { |
sub render_vram { |
424 |
my $self = shift; |
my $self = shift; |
425 |
|
|
426 |
my $pixels = pack("C*", map { $flip[$_] } @mem[ 0x6000 .. 0x7fff ]); |
# my $pixels = pack("C*", map { $flip[$_] } @mem[ 0x6000 .. 0x7fff ]); |
427 |
|
# my $pixels = pack("C*", map { $flip[$_] } $self->ram( 0x6000, 0x7fff )); |
428 |
|
my $pixels = M6502::mem_peek_region( 0x6000, 0x7fff ); |
429 |
|
|
430 |
my $vram = SDL::Surface->new( |
my $vram = SDL::Surface->new( |
431 |
-width => 256, |
-width => 256, |
437 |
$vram->set_colors( 0, $black, $white ); |
$vram->set_colors( 0, $black, $white ); |
438 |
|
|
439 |
$self->render_frame( $vram ); |
$self->render_frame( $vram ); |
|
|
|
|
print '.'; |
|
440 |
} |
} |
441 |
|
|
442 |
=head2 cpu_PC |
=head2 cpu_PC |
469 |
M6502::set_all_callbacks( 0x00 ); |
M6502::set_all_callbacks( 0x00 ); |
470 |
|
|
471 |
# video ram |
# video ram |
472 |
M6502::set_write_callback( $_ ) foreach ( 0x6000 .. 0x7fff ); |
# M6502::set_write_callback( $_ ) foreach ( 0x6000 .. 0x7fff ); |
473 |
# keyboard |
# keyboard |
474 |
M6502::set_read_callback( $_ ) foreach ( keys %$keyboard ); |
M6502::set_read_callback( $_ ) foreach ( keys %$keyboard ); |
475 |
# tape |
# tape |