63 |
0x1000 => 'dump/SCRINV.BIN', |
0x1000 => 'dump/SCRINV.BIN', |
64 |
# should be 0x6000, but oraoemu has 2 byte prefix |
# should be 0x6000, but oraoemu has 2 byte prefix |
65 |
0x5FFE => 'dump/screen.dmp', |
0x5FFE => 'dump/screen.dmp', |
66 |
0xC000 => 'rom/BAS12.ROM', |
# 0xC000 => 'rom/BAS12.ROM', |
67 |
0xE000 => 'rom/CRT12.ROM', |
# 0xE000 => 'rom/CRT12.ROM', |
68 |
|
0xC000 => 'rom/BAS13.ROM', |
69 |
|
0xE000 => 'rom/CRT13.ROM', |
70 |
}); |
}); |
71 |
|
|
72 |
# $PC = 0xDD11; # BC |
# $PC = 0xDD11; # BC |
82 |
$self->trace( 0 ); |
$self->trace( 0 ); |
83 |
$self->debug( 0 ); |
$self->debug( 0 ); |
84 |
|
|
85 |
$self->render( @mem[ 0x6000 .. 0x7fff ] ); |
warn "rendering video memory\n"; |
86 |
|
$self->render_vram( @mem[ 0x6000 .. 0x7fff ] ); |
87 |
|
|
88 |
if ( $self->show_mem ) { |
if ( $self->show_mem ) { |
89 |
|
|
102 |
0xE000, 0xFFFF, 'sistemski ROM', |
0xE000, 0xFFFF, 'sistemski ROM', |
103 |
); |
); |
104 |
|
|
|
} else { |
|
|
|
|
|
warn "rendering video memory\n"; |
|
|
$self->render( @mem[ 0x6000 .. 0x7fff ] ); |
|
|
|
|
105 |
} |
} |
106 |
$self->sync; |
$self->sync; |
107 |
$self->trace( $trace ); |
$self->trace( $trace ); |
130 |
sub run { |
sub run { |
131 |
my $self = shift; |
my $self = shift; |
132 |
|
|
|
$self->show_mem( 1 ); |
|
|
|
|
133 |
$self->boot if ( ! $self->booted ); |
$self->boot if ( ! $self->booted ); |
134 |
$self->loop; |
$self->loop; |
135 |
}; |
}; |
172 |
$t = $end if ( $end < $t ); |
$t = $end if ( $end < $t ); |
173 |
|
|
174 |
warn sprintf("refresh video ram %04x-%04x\n", $f, $t); |
warn sprintf("refresh video ram %04x-%04x\n", $f, $t); |
175 |
# foreach my $a ( $f .. $t ) { |
$self->render_vram( @mem[ 0x6000 .. 0x7fff ] ); |
|
# $self->vram( $a - 0x6000 , $mem[ $a ] ); |
|
|
# } |
|
|
$self->render( @mem[ 0x6000 .. 0x7fff ] ); |
|
176 |
$self->render_mem( @mem ) if $self->show_mem; |
$self->render_mem( @mem ) if $self->show_mem; |
177 |
} |
} |
178 |
|
|
460 |
my ($addr,$byte) = @_; |
my ($addr,$byte) = @_; |
461 |
warn sprintf("# Orao::write(%04x,%02x)\n", $addr, $byte) if $self->trace; |
warn sprintf("# Orao::write(%04x,%02x)\n", $addr, $byte) if $self->trace; |
462 |
|
|
|
if ( $addr >= 0x6000 && $addr < 0x8000 ) { |
|
|
$self->vram( $addr - 0x6000 , $byte ); |
|
|
} |
|
|
|
|
463 |
if ( $addr == 0x8800 ) { |
if ( $addr == 0x8800 ) { |
464 |
warn sprintf "sound ignored: %x\n", $byte; |
warn sprintf "sound ignored: %x\n", $byte; |
465 |
} |
} |