[Coco] MM/1 question

Dave Kelly daveekelly at earthlink.net
Fri Nov 7 23:48:00 EST 2003


On Thursday 06 November 2003 07:34 pm, you wrote:
> Are there any MM/1 owners out there who have large drives in their MM/1?
>
> I'm trying to put a 1G drive in. The MM/1 recognises and formats the drive,
> I can write to it, and read from it OK. But the darned thing WON'T BOOT!


I am posting this information for use by anyone that might derive some
benefit for it. I have an MM1 - AT68306 manufactured by Kreider Electronics
and came with OS-9/68000 version 3.0.

This information is taken from the tech manual. I do not know if this is
Kreider speaking or Kevin Pease who designed the hardware. This  has a
September 27, 1995 publication date.

I make the standard disclaimer. I have tried to check for spelling and
accuracy against the original document. If anythings wrong, its your  fault.


                                          Dave


HARD DISKS

The hard disk descriptors provided are named as I use them. Again, you
can change them by changing there source files and remaking, moded, or a
binary file editor. The convention used ( where x is a number in 0.6 and y
is letter ) is:

	hx -	whole IDE hard disk, limited to tow
	hxfmt - IDE formatting descriptor, not format protected
	hxy -	partition y on an IDE hard disk x
	sdx - 	whole SCSI  hard disk
	sdxfmt- SCSI formatting descriptor, not format protected
	sdxy -	partition y on an SCSI hard disk x

Both IDE and SCSI drives use 512 byte  sectors.

The large disks available today present a bit of a problem with OS-9/68000.
The bit map size on any disk is limited to 64K bytes. Thus  only 512K
sectors can be addressed by th bit map. This limits the  disk size of 256M
byte, However, one can use Microware's concept of clusters to address this
problem. By considering 2, 4, 8, etc sectors as a cluster, the bit map can
now address 512M bytes, 1024M bytes, 2048M bytes, etc.  This is
accomplished by using th e-c=<num> option of format. There is, however, a
performance penalty associated with this method. It can be reduced by
using cache, but it still exists.

My preference is to partition the drive into logical disk. The mechanism is
to  increment the port address by  one for each partition. The bass address
is be saved for a raw  or  whole device. Partition on then base+1, two is
base+2 and so on. There can  be sixteen partitions all together, since the
least four bits of the address are used for partitions, the PD_TotCyls field
is set to the total cylinders on the  drive while PD_CYL is set to the
number of cylinders on the partition.  PD_LSNOffs is set to the base LSN of
the partition. For example, assume a 400MB drive with 819200 sectors. The
physical  layout of the disk is no a concern to us since  OS-9/68000
considers a disk to be a linear array of blocks. But to convince OS-9/68000
to format a partition, we need to provide some fictitious parameters.  If
we assume 64 sectors per track and 8 heads  per cylinder, we get a capacity
of 1M byte per cylinder, and therefore  1600 cylinders.  If   we assume 64
sectors per track and 32 heads  per cylinder, we get a capacity of 1M byte
per cylinder, and therefore 400 cylinders. Using these parameters for our
example, we next choose the partition size, A partition size of 100M bytes
would mean 100 cylinders. That is the  number to use for PD_CYL in the
descriptor.  PD_TotCysl would be set to 400, PD_SID  would be set to 32m and
both PD_SCT and PD_TOS  would be set to 64. Since this is the first
partition, PD_LSNOffs would be 0.  A second partition of the same size would
use the same values   except PD_LSNOffs, which would be 204800,, which is
100 cylinders  time 32 heads  per cylinder time 64 sectors  per track.
Similarly, PD_LSNOffs for third and fourth  100M partition would be 409600
and 614400 respectively.   IF the drive needs to be physically formated, it
must be done  using a descriptor  that describe the whole disk.  The
logically format  each  partition with its descriptor, This will prepare the
drive for use.

The IDE driver ignores PD_ScsiOpt but both IDE and SCSI drives  honor bits
in the PC_Cntl field.

Bit 0	prevents formatting when set to  one. This helps prevent accidental
overwrtie of the hard disk. The hxfmt descriptors have bit 0 set to  zero
to allow  formatting and  should be loaded from disk for the rare times
that you  format.

Bit 1	enable multi-sector  I/O when set to  one. This will improve
throughput.

Bit 2	us set for any device with removable media, like Syquest 555  drives.
This would only apply for SCSI drives.

Bit 3	is set for  either SCSI or  IDE drives that auto-size. This include
all embedded SCSI drives and most IDE drives. In this case, the fields in
the descriptor that specify the drive geometry (PD_CYL, PD_SID, PD_SCT,
PD_TOS, PD_ILV, PC_TotCyls ) should be set to zero, since the drive will be
queried by th driver for their  values. However, for older drives that do
not auto-size, these  parameters  must be set to real  values.

Bit 4	is set  if the device can format a single track. This is generally
not true for embedded SCSI drives, but certain controllers can do this, It
should be noted that many of the drives ( both  SCSI and IDE ) currently
available today cannot be   physically formatted by the user.

As a side note.
I put a 2  gig drive on my 306. Had trouble formatting. Finally let the 
software auto-size the drive and it came up with 4096 sector cluster.
I personally never did  get the above information to work. But I don't know 
that much about  partitioning drives either.





More information about the Coco mailing list