Dano,
There is a spare pin which could be used for a jumper, or a setting in the eeprom could be done too. On the firmware side, suppressing features is trivial to do (the dispatching is done by a jump table, we should simply have another one for the model II).
Regarding the register mapping, it's basically the same as the model III, but the model II has the CTC I/O map there too. These addresses are not used on the model III/IV, so I used them to provide the extra functionality (RTC, access FAT files, etc..)
-Fred
Here is an extract from Frank Durda which gives more details :
It has certainly been a while since I looked at the code, but port offsets
are exactly the same, eg x0 x1 x8 x9 xA xB xC xD xE xF ports do exactly
the same things on the Model II/12/16/6000 family as they do on the
Model III/4/4D/4P family. The Model I is the odd man, and required the
Model I Hard Disk Adapter in order to function.
You will notice that the CTC present on the Hard Disk Interface registers fill
in the gap between X2 and X7 in the port map. Mode on the CTC ports in a
moment.
The starting offset for the hard disk ports on the Model II/12/16/6000 hard
disk interface port could be several different address ranges, but for almost
every OS I can think of, it was kept in the 0xc0 - 0xcf range, the same as
was used on the Model III/4/4D/4P systems.
Be aware that the 8Meg Hard Disk Systems were hard-coded to run with 512
byte sectors only. Marketing materials claimed that the five meg drives
supposedly only worked in 256 byte mode and the 12-Meg drives only worked
on 512 byte mode, but I know this not true for the drives I had access to.
Perhaps early production runs had such a limitation, but I suspect it was
an artificial limit, so that TRSDOS-II/TRSDOS-16 didn't have to support
5 Meg drives.
Early releases of TRSDOS-II/TRSDOS-16 had to have the exact drive geometry
coded internally, so you actually had to distribute a new release to sell a
new drive size or one with a different number of heads/cylinders. LDOS didn't
have this problem, but the Model III/4 of that period did have a somewhat
paranoid product buyer who didn't want to risk 12 Meg drives being available
leaving him with 5 Meg drives in his stores that no one would buy so there was
a long time when the official word was that 12 Meg drives would not work on
the Model III/4, when in fact they would work. That sort of thing happened a
lot.
The biggest coding difference between the Model II/12/16/6000 and III/4/4D/4P
families was in interrupt control. The Model III/4/4D/4P drivers typically
did not use interrupts at all for hard disk operation. They just waited in a
loop until the given command completed.
On the Model II/12/16/6000, interrupt mode 2 interrupts were available, and
were used by some operating systems, while IM1 were used by a few other
operating systems, and the most primitive drivers didn't use interrupts at all,
again relying on polling loops to determine when the given command had
completed.
DMA was available on the Model II/12/16/6000 for hard disk operations, but was
not required, and with the exception of XENIX 3.2, hard disk DMA was typically
not used. It's use in XENIX 3.2 was something of an experiment. It improved
speeds for certain benchmarks, but generally was neutral or slightly lowered
overall performance. This had to do with a Tandy-custom DMA transfer option
that would halt the 68000 processor while DMA operations to 68000 memory were
occurring, rather than dithering Z80 DMA cycles between 68000 CPU cycles,
which was the default.
So apart from interrupt handling (if it was used) and DMA (if that was used),
drivers for one family could work largely unchanged on the other, with the
biggest difference typically being the sector size, as Model II/12/16/6000 systems
(notably TRSDOS-II and XENIX) using 512 byte sectors and most of the Model
III/4/4D/4P OSes (basically all from Logical Systems) using 256 byte sectors.