[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Twilight zone?
Hi, y'all!
On Jan 25, 10:12 pm, "mdj" <mdj....@gmail.com> wrote:
> I would guess that the time it did work, the target volume was already
> formatted as a 400k disk. Try formatting your target as single sided
> and give it another go.
> Matt
Matt, I tried your suggestion but it didn't work.
One of these days I'll look at the source I created for the Apple
System Utility program to see if I can figure out why it worked that
one time. In the meantime I wrote a program to copy an MFS disk on an
Apple II. Source is included below my sig. Executable and assembly
language source available on request.
Willi
program copyMFS;
{ Copy a Macintosh File System disk using two 3.5 inch drives on an
Apple II }
type block = array[0..511] of char;
track = array[0..7] of block;
var c: char;
ss, sd, ds, dd, i: integer;
buff: track;
function key_pressed: boolean;
begin
key_pressed := false;
#i KPI:KEYPRESS.INC
end;
function read_key: char;
begin
read_key := ' ';
#i KPI:READKEY.INC
end;
procedure blockread(slot, drive, bn, count: integer; var b: track);
begin
#i KPI:BLKRD.INC
end;
procedure blockwrite(slot, drive, bn, count: integer; var b: track);
begin
#i KPI:BLKWR.INC
end;
function getSlot: integer;
var s: char;
begin
write(' slot? ');
repeat
repeat
until key_pressed;
s := read_key
until (s >= '1') and (s <= '7');
writeln(s);
getSlot := ord(s) - ord('0')
end;
function getDrive: integer;
var d: char;
begin
write(' drive? ');
repeat
repeat
until key_pressed;
d := read_key
until (d = '1') or (d = '2');
writeln(d);
getDrive := ord(d) - ord('0')
end;
begin
write('Source');
ss := getSlot;
write('Source');
sd := getDrive;
write('Destination');
ds := getSlot;
write('Destination');
dd := getDrive;
writeln('Press any key when ready');
repeat
until key_pressed;
c := read_key;
for i := 0 to 99
do begin
blockread(ss, sd, i * 8, 8, buff);
blockwrite(ds, dd, i * 8, 8, buff)
end
end.