--- Galaksija.pm 2007/08/04 20:50:33 131 +++ Galaksija.pm 2007/08/04 22:40:14 137 @@ -43,7 +43,7 @@ warn "Galaksija $Galaksija::VERSION emulation starting\n"; $self->show_mem( 1 ); - $self->trace( 1 ); + #$self->trace( 1 ); $self->SUPER::init( read => sub { $self->read( @_ ) }, @@ -76,8 +76,8 @@ $self->trace( 0 ); $self->debug( 0 ); - warn "rendering video memory\n"; - #$self->render_vram( @mem[ 0x2800 .. 0x2a00 ] ); + warn "rendering memory\n"; + $self->render_mem( @mem ); #$self->sync; $self->trace( $trace ); @@ -92,7 +92,7 @@ $self->loop( sub { Z80::exec( $_[0] ); - #$self->render_vram; + $self->render_vram; }); } @@ -100,9 +100,6 @@ =head1 Memory management -Galaksija implements all I/O using mmap addresses. This was main reason why -L was just too slow to handle it. - =cut =head2 read @@ -124,6 +121,7 @@ confess sprintf("can't find memory at address %04x",$addr) unless defined($byte); warn sprintf("# Galaksija::read(%04x) = %02x\n", $addr, $byte) if $self->trace; + $self->mmap_pixel( $addr, 0, $byte, 0 ) if $self->show_mem; return $byte; } @@ -140,10 +138,31 @@ my ($addr,$byte) = @_; warn sprintf("# Galaksija::write(%04x,%02x)\n", $addr, $byte) if $self->trace; + $self->mmap_pixel( $addr, $byte, 0, 0 ) if $self->show_mem; $mem[$addr] = $byte; return; } +=head1 Architecture specific + +=head2 render_vram + +Simple hex dumper of text buffer + +=cut + +sub render_vram { + my $self = shift; + + my $addr = 0x2800; + + print " "; # FIXME auch! + for my $y ( 0 .. 15 ) { + printf "%2d: %s\n",$y, join('', map { sprintf("%02x ",$_) } @mem[ $addr .. $addr+31 ] ); + $addr += 32; + } +} + =head2 cpu_PC Helper metod to set or get PC for current architecture @@ -159,10 +178,16 @@ return $PC; } +=head1 SEE ALSO + +L, L, L + =head1 AUTHOR Dobrica Pavlinusic, C<< >> +Based on Galaxy Win emulator L + =head1 BUGS =head1 ACKNOWLEDGEMENTS