Added start of copy and write for DOS 3.3

This commit is contained in:
Leeland Heins 2019-01-17 09:39:13 -06:00 committed by GitHub
parent 278326cd94
commit e0a67eec63
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 125 additions and 1 deletions

View File

@ -610,5 +610,32 @@ sub rename_file {
} }
} }
#
# Copy a file
#
sub copy_file {
my ($dskfile, $filename, $new_filename, $dbg) = @_;
$debug = 1 if (defined $dbg && $dbg);
my ($file, $cat_trk, $cat_sec, $cat_buf) = find_file($dskfile, $filename);
if ($file->{'trk'}) {
##FIXME
}
}
#
# Write a file to disk image.
#
sub write_file {
my ($dskfile, $filename, $new_filename, $mode, $conv, $dbg) = @_;
$debug = 1 if (defined $dbg && $dbg);
##FIXME
}
1; 1;

2
README
View File

@ -8,7 +8,7 @@ dos33umlock.pl -- mostly working
dos33lock.pl -- mostly working dos33lock.pl -- mostly working
dos33rename.pl -- started dos33rename.pl -- started
dos33delete.pl -- started dos33delete.pl -- started
dos33copy.pl dos33copy.pl -- started
zap.pl -- partially working zap.pl -- partially working
prozap.pl -- partially working prozap.pl -- partially working
procat.pl -- partially working procat.pl -- partially working

32
dos33copy.pl Normal file
View File

@ -0,0 +1,32 @@
#!/usr/bin/perl -w
#
# dos33copy.pl:
#
# Utility to copy a file on an Apple II DOS 3.3 disk image.
#
# 20190117 LSH
#
use strict;
use DOS33;
my $debug = 0;
while (defined $ARGV[0] && $ARGV[0] =~ /^-/) {
# Debug
if ($ARGV[0] eq '-d') {
$debug = 1;
shift;
}
}
my $dskfile = shift or die "Must supply .dsk filename\n";
my $filename = shift or die "Must supply filename (on disk image)\n";
my $new_filename = shift or die "Must supply new filename\n";
copy_file($dskfile, $filename, $new_filename, $debug);
1;

65
dos33write.pl Normal file
View File

@ -0,0 +1,65 @@
#!/usr/bin/perl -w
#
# dos33write.pl:
#
# Utility to write a file into an Apple II DOS 3.3 disk image.
#
# 20190117 LSH
#
use strict;
use DOS33;
my $mode = 'T';
my $conv = 1;
my $debug = 0;
while (defined $ARGV[0] && $ARGV[0] =~ /^-/) {
# Mode
if ($ARGV[0] eq '-m' && defined $ARGV[1] && $ARGV[1] ne '') {
# Text
if ($ARGV[1] eq 'T') {
$mode = 'T';
$conv = 1;
# Integer BASIC
} elsif ($ARGV[1] eq 'I') {
$mode = 'I';
$conv = 0;
# Applesoft
} elsif ($ARGV[1] eq 'A') {
$mode = 'A';
$conv = 0;
# Binary
} elsif ($ARGV[1] eq 'B') {
$mode = 'B';
$conv = 0;
# S
} 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;
# Convert (carriage return to linefeed)
} elsif ($ARGV[0] eq '-c') {
$conv = 0;
shift;
# Debug
} elsif ($ARGV[0] eq '-d') {
$debug = 1;
shift;
}
}
my $dskfile = shift or die "Must supply .dsk filename\n";
my $filename = shift or die "Must supply filename (local file system)\n";
my $new_filename = shift or die "Must supply filename (on disk image)\n";
write_file($dskfile, $filename, $new_filename, $mode, $conv, $debug);
1;