CP/M-80 drivers for WD33C93 ???

From: Allison J Parent <allisonp_at_world.std.com>
Date: Sun Nov 28 21:59:20 1999

<Actually, the ACB4070 is a SCSI<=>RLL bridge. It operates in a way which

I have one in use but it's been a long while since I did it.

<translates what is on the disk to cyl/hd/sector. However, it talks to the
<host in SCSI. In any case, I've seen implementations (back when they wer

Yes but when you talk from the host is it CHS or BLOCKS? If memory serves
you init the controller with the disk geometry and it translates that to
a sequence of blocks where the physical geometry is not directly visible.

<all over the place) which worked very well, and I've seen others which
<worked very poorly. Insofar as the bridge controllers were the same, I hav
<to assume that it was because of the BIOS code. I should have informed
<myself about that back then, but it didn't seem important enough.

They are not all the same performance wise. Some are realll sloowwww.
Also it also depends on the host interface and IO. If the SCSI hardware
is faked or a bit doggy it shows.

<Many ESDI drives work on a logical block basis just like the SCSI's. They

Cool, never worked with them.

<one to shuffle the data between the host and drive. The thing that makes
<SCSI outperform ESDI in most cases is that the SCSI leaves the host adapte
<alone except when it's transferring corrected data. The ESDI relies on th
<controller to handle all the correction, etc. In an environment, e.g. DEC'
<MSCP, where there are enough smarts to utilize command queueing and
<overlapped seeks, etc, SCSI outperforms the fastest ESDI by quite a little

.... and? I know the VAX MSCP controllers I must have 5 or 6 RQDX3/2/1s I
still run.

<>Watch out for track (one head) and cylinder (n many heads).
<
<It seems that if the BDOS is willing to call out both the track and the
<sector numbers in a range from 0..FFFFH, that means you only need to specif

Correct both are passed as 16bit numbers in the BC pair.

<one sector per track if all you want is a logical block (physical sector)
<number. You then right-shift to scale for the physical sector size and the
<let the deblocking code wade through undoing that. FFFFH sectors is the 8M
<max allowable capacity, is it not? The bridge controller translates from

I said all this already.

<logical block numbers to cyl/hd/sec in some way they don't choose to tell u
<mere mortals.

It's not that majik, the bridge know the physical geometry passed on init
and the rest is math.

<OTOH, using the BDOS to do more of the work, sorta, you can map tracks int
<logical blocks, and use the sector number to point into the logical block a
<the appropriate 128-byte portion. What I'd like to know is what works best
<It's particularly important that this be small, since it's for CP/M 2.2.

I gave a few suggestions. Let the BDOS do the minimum, it's slow and
written using 8080 code. the real space eater is not the code to do this
but the allocation space. For a 8mb disk with 4k allocation that will
want 256bytes!, then there is the dir vector (another 128) deblock buffer
(512bytes or physical if different) so you have already used up 768bytes
and not written any code. Oh, you need to have a unique allocation space
for EVERY disk and if it's removable also CHK space that is half the size
of the allocation space and also unique.

<>to that to get the track offest for partitioning or system tracks.
<
<
<What do you find this does to your directory allocation scheme? I've neve
<quite figured out how to optimize the block size so you don't either run ou
<of directory entries or disk space far too soon.

That is a limitation of CPM. Block size affects the size of the 1byte file.
By that it limits the number of files on a disk if they are of minimum size.
for our 8mb disk you can use 2/4/8/16(32)k. If you use the smaller the
allocation space is 512bytes in size, use the larger(16k) it will be 64
bytes so you have a tradeoff there. Assume 4k block, that means the largest
number of files is 2047 so that limits the number of possible directory
entries on the high side. from there you have to know how the disk space
will likely be used and for many 2 blocks per file is a usable number so
we are now down to 1024 directory entries. From that we know an entry is
32bytes and an allocation block slected is 4k or 128 entries so we will
need 8 directory blocks to hold our directory. Done. Of course we can
assume we need 4 blocks for each file and use half the number of directory
blocks. This is a guess.

<Actually, it's a 99.25 MB disk. It's a miniscribe 3085 used with RLL.
<Since I have one of these lying about, and since the 4070 is an RLL bridge
<I thought I'd use those numbers.

You would have to partition it into 13 logical drives. Hint: don't mount
more than two or three at any time and create a MOUNT utility to select
what partitionis active and plug inthe tables for it. The amproLB bios
is a good choice for this. The number of logical drives including floppies
is a determining factor in BIOS size as you need the various Buffers and
Allocation Spaces (8 8mb drives at 4k would eat 2k of allocation space!).
Received on Sun Nov 28 1999 - 21:59:20 GMT

This archive was generated by hypermail 2.3.0 : Fri Oct 10 2014 - 23:32:31 BST