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

Re: ProDOS / Autostart ROM ID bytes



vladitx <vladitx@nucleusys.com> wrote:

> David Empson wrote:
> > mdj <mdj.mdj@gmail.com> wrote:
> >
> > > The last release remaps devices beyond 2 on any slot to the remaining
> > > free slot/drive positions.
> >
> > ... but it only does this for devices which support the SmartPort
> > firmware interface, and doesn't make use of any spare drive 2 unit
> > numbers where drive 1 is mapped to a real device. For example, a
> > "slinky" RAM card in slot 4 would use S4,D1, but nothing will be
> > allocated to S4,D2.
> 
> Because I have very limited experience with ProDOS in the past, what
> should I do if I want to have more than 2 volumes/drives per slot? Is
> it possible without SmartPort?

Unless you start hacking things, this is only possible if your card is
in slot 5 (and you are running ProDOS-8 1.2 or later), which basically
rules it out in a IIgs, because nobody will want to lose their 3.5"
drive or /RAM5 support.

> Suppose I have this ProDOS driver at $C600 (Slot 6), which reports at
> $C6FE that it has 3 volumes (bits 5:4 == 11b). Will it work not being
> in Slot 5?

ProDOS will ignore the fact that it has three units, and only give
access to the first two.

To get access to more than two units via the ProDOS driver if the card
is not in slot 5, you would have to patch the ProDOS unit table (after
boot is complete) to enable access to the additional units, by locating
unused slots and borrowing their unit numbers (there might not be any
left).

To support more than four units with this method, you also need RAM on
your card where you can store a table that associates the ProDOS unit
number with your internal drive number. For 3 or 4 units, it would be
sufficient to check for a slot number mismatch in the unit number.

> If yes, shall I do something else, except checking unit
> number at $43, which will have different slot/drive mapping? And then,
> is '3' really meaning 3 volumes or 4?

I don't recall the encoding of this field, but if it is a two bit field,
it might be either "maximum number of drives minus 1" or "maximum number
of drives modulo 4". There is no point having a ProDOS block driver if
the card supports zero drives, so 0 would mean either 1 or 4, depending
on the interpretation.

First possibility: 0=1, 1=2, 2=3, 3=4
Second possibility: 0=4, 1=1, 2=2, 3=3

Look at an existing card which supports one or two drives to check this.
If it says 1 or 2 respectively, then 0 probably means 4.

It is a moot point anyway, unless you are in slot 5.

> Finally, Paul's document at
> http://linux.cis.monroeccc.edu/~paulrsm/6502/PDOS8TRM.HTM says:
> 
> -----------------------------
> $43
> Unit Number:
> 
>     7  6  5  4  3  2  1  0
>   +--+--+--+--+--+--+--+--+
>   |DR| SLOT|   NOT USED   |
>   +--+--+--+--+--+--+--+--+
> 
> *Note:* The UNIT_NUMBER that appears in the device list (DEVLST)
> in the system globals will include the high nibble of the status byte
> ($CnFE) as an ID in its low nibble.
> -----------------------------
> 
> Is "SLOT" field really two bits only, or this is just a typo?

It is a typo. The SLOT field is three bits (bits 4, 5 and 6).

-- 
David Empson
dempson@actrix.gen.nz