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

Re: Apple IIGS Operating System



schmidtd <schmidtd@my-deja.com> wrote:

> Linards Ticmanis wrote:
> > Unfortunately, ADT is still 5.25" only. Modifying it for 3.5" should be
> > fairly easy -- but somebody has to actually do it.
> >
> > Two things will need to be done: Porting it from DOS to ProDOS (this is
> > probably the more difficult part) and then amending the protocol to deal
> > with 800K images.
> 
> I've been thinking about this.  The port from DOS to ProDOS would
> actually be very straightforward: the RWTS calls and ProDOS calls are
> conceptually similar; it would pretty much be a 1-1 swap of routines.
> So, I think getting ADT to run in a ProDOS environment would be fairly
> easy.
> 
> I see the tricky bit as one of ADT's most important use cases: the bare
> metal bootstrap.  You hook up your serial line, ship some data at the
> Apple's serial port after doing IN#x, and it literally "types" a DOS
> 3.3 variant into the monitor and INITs a disk.  That, in my estimation,
> would be tougher for ProDOS.  Mostly because I know less about the
> internals.  But the ProDOS that gets blasted at the serial port would
> need to have a driver imbedded in it for the 3.5" disk drive.  Is that
> true for ProDOS 1.9?

The ProDOS kernel contains drivers for the 5.25" drive and auxiliary
memory RAM disk. For all other block devices (including a 3.5" drive)
the interface card firmware (or equivalent internal ROM) contains the
driver.

Older devices have a simple ProDOS block driver, which supports status,
read, write and format operations.

Newer devices also have a SmartPort driver, which can support more than
two volumes per slot, volumes larger than 32 MB, and has a much wider
range of calls available.

A bootstrap loader for getting ProDOS onto an Apple II 3.5" disk (any of
a UniDisk 3.5, Apple 3.5 Drive or SuperDrive, using an Apple controller)
doesn't need much code. It can do a format operation and block-level
writes by calling the ProDOS or SmartPort driver directly (no ProDOS
kernel required). The next stage could do block-level transfer of a
complete or partial disk image which is written directly onto the disk.

The main issue would be locating the correct slot and drive, and making
sure the correct device was being accessed. This would be best done by
requiring a SmartPort device and looking for the right identification
data in a SmartPort status call.  Relying on the ProDOS block driver
would mean you were flying somewhat blind - the only useful information
available is the capacity of the volume.

Some third party cards don't implement the SmartPort driver, so you are
stuck with the ProDOS one.

Big assumption: no copy protection involved, only need to worry about
800K 3.5" disks.

All of this also applies to slot-based RAM cards and SCSI cards. (The
RamFAST card is an example of one which doesn't implement the SmartPort
driver, but both Apple's SCSI cards do.)

> I guess some experimentation would prove it one way or another.  I do
> remember reading in Beyond ProDOS that the INIT routine isn't even in the
> 5.25" floppy driver to save space... you need to load the utilities to do
> that.  If they didn't bother for a Disk ][, what hope is there we could
> init a 3.5" disk once the raw OS got connected?

The physical format operation is as easy as a single call to the ProDOS
driver. (Writing the boot block and file system onto the volume would
still require a utility program and an image of the boot block.)

> I suppose the rest of what gets shipped at the serial port could be
> that utility that does the INITting.  Sounds like it's getting to be a
> lot of data. :-)


-- 
David Empson
dempson@actrix.gen.nz