DOS33-perl/dos33read.pl

67 lines
1.2 KiB
Perl
Raw Normal View History

2019-01-11 14:07:33 +00:00
#!/usr/bin/perl -w
2019-01-15 18:53:14 +00:00
#
# dos33read.pl:
#
# Utility to read a file out of an Apple II DOS 3.3 disk image.
#
# 20190115 LSH
#
2019-01-11 14:07:33 +00:00
use strict;
use DOS33;
my $mode = 'T';
my $conv = 1;
my $debug = 0;
while (defined $ARGV[0] && $ARGV[0] =~ /^-/) {
2019-01-15 18:53:14 +00:00
# Mode
2019-01-11 14:07:33 +00:00
if ($ARGV[0] eq '-m' && defined $ARGV[1] && $ARGV[1] ne '') {
2019-01-15 18:53:14 +00:00
# Text
2019-01-11 14:07:33 +00:00
if ($ARGV[1] eq 'T') {
$mode = 'T';
$conv = 1;
2019-01-15 18:53:14 +00:00
# Integer BASIC
2019-01-11 14:07:33 +00:00
} elsif ($ARGV[1] eq 'I') {
$mode = 'I';
$conv = 0;
2019-01-15 18:53:14 +00:00
# Applesoft
2019-01-11 14:07:33 +00:00
} elsif ($ARGV[1] eq 'A') {
$mode = 'A';
$conv = 0;
2019-01-15 18:53:14 +00:00
# Binary
2019-01-11 14:07:33 +00:00
} elsif ($ARGV[1] eq 'B') {
$mode = 'B';
$conv = 0;
2019-01-15 18:53:14 +00:00
# S
2019-01-11 14:07:33 +00:00
} elsif ($ARGV[1] eq 'S') {
$mode = 'S';
$conv = 0;
} else {
die "Unknown mode for -m, must be T, I, A, B or S\n";
}
shift;
shift;
2019-01-15 18:53:14 +00:00
# Convert (carriage return to linefeed)
2019-01-11 14:07:33 +00:00
} elsif ($ARGV[0] eq '-c') {
$conv = 0;
shift;
2019-01-15 18:53:14 +00:00
# Debug
2019-01-11 14:07:33 +00:00
} elsif ($ARGV[0] eq '-d') {
$debug = 1;
shift;
2019-01-17 19:01:34 +00:00
} else {
die "Unknown command line argument $ARGV[0]\n";
2019-01-11 14:07:33 +00:00
}
}
2019-01-17 13:50:09 +00:00
my $dskfile = shift or die "Must supply .dsk filename\n";
my $filename = shift or die "Must supply filename (on disk image)\n";
2019-01-11 14:07:33 +00:00
read_file($dskfile, $filename, $mode, $conv, $debug);
1;