[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ADT Disk Problem



In article <Wd2cnQ0quawTvVijXTWcqQ@comcast.com>,
 "Bill Garber" <willy46pa@comcast.net> wrote:

> > > Ok, the problem is, you are attempting to write a ProDOS image to a DOS
> 3.3
> > > disk. That's a no go.
> >
> >     Wrong!  A disk formatted with DOS 3.3 can be over-written by an
> > image of any standard Apple operating system.
> 
> Ok, then help me out with a problem. How do I get DOS 3.3
> programs to run on a ProDOS disk, or a hard drive partition?

If they're in "pure basic", just run 'em. They'll convert pretty much 
automatically. If they use any ML routines to get to the disk, change 
them so that they either *NEVER* attempt to do disk I/O after initially 
being loaded, or, when they attempt to do disk I/O, they use ProDOS 
techniques (Set up a parameter block appropriate to the operation 
needed, then JSR $BF00 with a pointer tothe parameter block immediately 
after the JSR) rather than using DOS 3.3 RWTS based routines. This is 
usually a *VERY FAR FROM TRIVIAL* conversion, though, and may in fact 
need what amounts to a nearly complete re-write of all disk access 
routines used by the program you're trying to convert.

The *PHYSICAL* format of Prodos/DOS 3.3 disks are absolutely identical 
in every way at the track/sector level. At the "machine wants to talk to 
the disk" level, they're completely different. Also, between ProDOS and 
DOS 3.3, there are huge diffferences in where certain critical data 
structures are located on the disk - DOS 3.3 expects the disk's catalog 
to start at track $11, sector 0 (if my memory hasn't failed me) for 
instance, and will never have space for more than a certain number of 
entries, meaning that it will always be contained completely on track 
$11, along with the volume bit map. The ProDOS catalog always starts at 
ProDOS Block ?8? (Once again, memory may be failing me), and the rest of 
it could be anywhere on the disk, and any length. Similarly, DOS itself 
is *ALWAYS* on tracks 0, 1, and sometimes parts of 2, of the disk, and 
isn't accessible as a file. The ProDOS kernel is a "plain vanilla" 
binary file that can be located anywhere on the disk - the boot blocks 
of a ProDOS disk know how to figure out where it is and load it based on 
the disk catalog information. Those are just some of the differences I 
can think of off the top of my head.

ProDOS can read DOS 3.3 disks, with no trouble whatsoever (but be aware 
that *WRITING* back to them requires a little more effort, since ProDOS 
reads/writes two sectors at a time, versus DOS 3.3's 1 sector at a time 
approach. Likewise, DOS can, with some effort, read and write ProDOS 
disks in a similar manner, once the "I want this ProDOS block, so I need 
to grab these two DOS 3.3 sectors with the read call" or "I need to 
write to this sector, so I have to figure out which DOS 3.3 sector is 
the second half of the ProDOS block I'm about to write, read it in, make 
it part of the write buffer, and then do the write call" fiddling is 
dealt with.

CopyII+ is one example - The last version of it I worked with was a 
ProDOS based program, but it will read and write DOS 3.3 disks without 
any (visible to the user) trouble. But the code involved to do it... 
<rolls eyes> Oy vey! A nightmare!

-- 
Don Bruder -  dakidd@sonic.net <--- Preferred Email - unmunged, SpamAssassinated
Hate SPAM? See <http://www.spamassassin.org> for some seriously great info.
I will choose a path that's clear: I will choose Free Will! - N. Peart
Fly trap info pages: <http://www.sonic.net/~dakidd/Horses/FlyTrap/index.html>