160 |
close($fh); |
close($fh); |
161 |
|
|
162 |
my $size = -s $path; |
my $size = -s $path; |
163 |
warn sprintf "saved %s %04x-%04x %d %x bytes\n", $path, $from, $to, $size, $size; |
print sprintf "saved %s %04x-%04x %d %x bytes\n", $path, $from, $to, $size, $size; |
164 |
} else { |
} else { |
165 |
warn "can't create $path: $!"; |
warn "can't create $path: $!"; |
166 |
} |
} |
210 |
|
|
211 |
my $expected = $size + $len; |
my $expected = $size + $len; |
212 |
if ( $pos != $expected ) { |
if ( $pos != $expected ) { |
213 |
cluck "BUG: file grows too big got $pos, expected $expected !"; |
#cluck "BUG: file grows too big got $pos, expected $expected !"; |
214 |
truncate $fh, $expected; |
truncate $fh, $expected; |
215 |
} |
} |
216 |
|
|
259 |
my $self = shift; |
my $self = shift; |
260 |
my $a = $self->cpu_PC() || confess "can't find PC"; |
my $a = $self->cpu_PC() || confess "can't find PC"; |
261 |
my $run_for = 0; |
my $run_for = 0; |
262 |
warn $self->dump_R() if $show_R; |
print $self->dump_R() if $show_R; |
263 |
while ( my ($line, @v) = $self->prompt( $a, $last ) ) { |
while ( my ($line, @v) = $self->prompt( $a, $last ) ) { |
264 |
my $c = shift @v; |
my $c = shift @v; |
265 |
next unless defined($c); |
next unless defined($c); |
272 |
} elsif ( $c eq '?' ) { |
} elsif ( $c eq '?' ) { |
273 |
my $t = $self->trace ? 'on' : 'off' ; |
my $t = $self->trace ? 'on' : 'off' ; |
274 |
my $d = $self->debug ? 'on' : 'off' ; |
my $d = $self->debug ? 'on' : 'off' ; |
275 |
warn <<__USAGE__; |
<<__USAGE__; |
276 |
Usage: |
Usage: |
277 |
|
|
278 |
x|q\t\texit |
x|q\t\texit |
284 |
d\t\tdebug [$d] |
d\t\tdebug [$d] |
285 |
|
|
286 |
__USAGE__ |
__USAGE__ |
287 |
warn $self->dump_R; |
print $self->tape_status if $self->can('tape_status'); |
288 |
|
print $self->dump_R; |
289 |
$last = ''; |
$last = ''; |
290 |
} elsif ( $c =~ m/^e/i ) { |
} elsif ( $c =~ m/^e/i ) { |
291 |
$a = $v if defined($v); |
$a = $v if defined($v); |
337 |
$show_R = 1; |
$show_R = 1; |
338 |
last; |
last; |
339 |
} elsif ( $c =~ m/^tape/ ) { |
} elsif ( $c =~ m/^tape/ ) { |
340 |
if ( $c =~ m/rate/ ) { |
if ( ! $v ) { |
|
$self->tape_rate( $v ); |
|
|
warn "will read table with rate $v\n"; |
|
|
} elsif ( ! $v ) { |
|
341 |
warn "ERROR: please specify tape name!\n"; |
warn "ERROR: please specify tape name!\n"; |
342 |
} elsif ( ! -e $v ) { |
} elsif ( ! -e $v ) { |
343 |
warn "ERROR: tape $v: $!\n"; |
warn "ERROR: tape $v: $!\n"; |
368 |
|
|
369 |
Emulators: L<Orao>, L<Galaksija> |
Emulators: L<Orao>, L<Galaksija> |
370 |
|
|
371 |
|
L<References> about different architectures |
372 |
|
|
373 |
=head1 AUTHOR |
=head1 AUTHOR |
374 |
|
|
375 |
Dobrica Pavlinusic, C<< <dpavlin@rot13.org> >> |
Dobrica Pavlinusic, C<< <dpavlin@rot13.org> >> |