--- Screen.pm 2007/08/04 15:09:44 125 +++ Screen.pm 2007/08/04 15:43:28 126 @@ -12,7 +12,6 @@ use Carp qw/confess/; use Data::Dump qw/dump/; -use M6502 qw'@mem'; use Exporter 'import'; our @EXPORT = qw'$white $black'; @@ -126,7 +125,7 @@ Render one frame of video ram - $self->render_vram( @video_memory ); + $self->render_vram; =cut @@ -173,7 +172,7 @@ =head2 render_mem - $self->render_mem( @ram ); + $self->render_mem( @mem ); =cut @@ -269,19 +268,26 @@ =head2 loop -Implement SDL event loop +Implement CPU run for C<$run_run> cycles inside SDL event loop + + $self->loop( sub { + my $run_for = shift; + CPU::exec( $run_for ); + $self->render_vram; + } ); =cut sub loop { my $self = shift; + my $exec = shift; + + confess "need coderef as argument" unless ref($exec) eq 'CODE'; my $event = SDL::Event->new(); - MAIN_LOOP: while ( 1 ) { $self->key_pressed( 1 ); - M6502::exec($run_for); - $self->render_vram( @mem[ 0x6000 .. 0x7fff ] ); + $exec->($run_for); } }