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

Re: EDD + CARD



"Michael J. Mahon" wrote:
 
> That would be a very interesting manual...  I have the looseleaf part, but
> not the main manual.  ;-(
> 
> >The manual says the card is able to reliably read "hidden timing BITS found
> >between the raw disk Bytes"
> 
> Actually, the ondinary Disk ][ controller is capable of reading "every bit"
> on the disk as well, as long as there is some recognizable transition in
> each 8-bit sample.  This is equivalent to bypassing the clock-recovery
> state machine on the controller, and just reading the bits as they shift
> in, without regard to the high bit being set.
> 
> This would leave the actual data decoding to software after a full track
> has been read, but the only time there could be any ambiguity about
> a bit on the disk was when 8-20 bit times went by without any transition
> from 1 to 0 or 0 to 1.  As a practical matter, I think that no disk ever
> contained patterns like that.  Self-sync nibbles are eight 1's and two 0's,
> and it would take a _very_ nonstandard write routine (reloading the register
> before it was completely written, for example) to write gobs of consecutive
> 1's or 0's.
> 
> So, what exactly _was_ the function of the EDD+ card?  If it literally
> presented the head signal to the software, with, say, 2MHz sampling,
> then what would it enable that could not be done with non-standard
> software and the standard Dosk ][ card?

I'll do a pdf of the manual as soon as I finish the currant projects. 
I was doing the ProSel 16 manual. I'm taking a break from it to do the 
RocketChip manual which another A2 user kindly sent me a photocopy of.
I want to get those two done before I start another pdf.

Here's a small quote from the manual

THE DRIVE CONTROLLER:

The drive controller, like the disk drive, also has 
two jobs. The first job is, when writing disks, to 
take raw disk bytes from the computer and break them 
down into eight separate bits, which are then fed into 
the raw bit stream in route to the disk drive. This
is a fairly simple and straight forward process. The
second job of the drive controller is a bit more 
complicated. When reading the disk, the drive 
controller collects eight bits at a time from the raw 
bit stream, then converts them back into their 
original raw disk byte value. Let�s go into detail of 
what happens during this reading process:

When the drive controller is told to read the raw bit 
stream from the drive, chances are that the drive 
controller will not be properly aligned (out of 
synchronization) with the raw bit stream. This means 
that the drive controller will not be properly 
converting the raw bit stream back into the same raw 
disk bytes, that were originally wrote to the disk. 
For example, let�s say that the raw disk bytes �FC FC 
FC FC" are being wrote to the disk. Here is what the 
raw bit stream would look like going to the disk drive

    11111100111111001111110011111100

But, when the track is read back, there is no way of 
telling which bit in the raw bit stream was the 
"start" of a raw disk byte; and chances are that the 
drive controller will start converting raw disk bytes 
Out of alignment. Here is what the raw bit stream 
might look like when trying to read it:

   11111111100111111001111110011111100

A few "extra" one bits that were already on the track, 
before the �FCs� were wrote, were read first. The 
drive controller would convert this raw bit stream 
into the raw disk bytes "FE 9F 9F 9F". These raw disk 
bytes should have been �FC FC FC FC". So, what we 
need is a way of �aligning the raw bit stream so that 
the raw disk bytes can be converted back correctly.

This is where timing bytes and timing gaps come into 
Play. When reading the disk, after the drive 
Controller is finished creating a raw disk byte from 
the 8 bits taken from the raw bit stream, the drive 
COntroller starts over again looking for another raw 
disk byte. Any "0" bits that happen to flow down the 
raw bit stream immediately after the 8 bits, which 
made up a raw disk byte, are completely ignored by the 
drive controller; since all raw disk bytes must start 
with a "1" bit. These �0� bits, which are ignored, 
are called �timing bits�. As we will soon see, the 
main purpose of a timing bit is to align the drive

controller with the raw bit stream, so that the
problem with converting the raw bit stream to raw disk
bytes, as was the case with the previous example, 
doesn�t happen.


RAW DISK BYTES, TIMING BITS, TIMING BYTES, AND TIMING
GAPS:

A normal raw disk byte consists of eight bits. The 
first bit, the left�most bit, must always be a �1�. 
Timing bits are any extra "0" bits which immediately 
follow a raw disk byte. As discussed in the previous 
section, these extra �0" bits are ignored (skipped 
over) by the drive controller. A timing byte is the 
term for a raw disk byte with at least one timing bit 
attached, which means a timing byte contains nine or 
more bits (eight raw disk byte bits, and at least one 
timing bit). Here is an example of four timing bits 
which make up three timing bytes (we have added 
�spaces� to separate raw disk bytes for your 
convenience):

RAW BIT STREAM (from drive, to drive controller):
1111111101111111100111111110110101011010101010010110

         |          |           |            ( timing bits) 
11111111 0 11111111 00 11111111 0 11010101 10101010 10010110
    |         |           |          |        |        |
   $FF       $FF          $FF      $D5       $AA      $96  (raw disk bytes)

The four zero bits that are pointed Out from the top 
of the raw bit stream are timing bits which the drive 
controller ignores. The eight bit patterns pointed 
out from under the the raw bit stream are the actual 
bits of information that make up the raw disk bytes. 
So, this example of the raw bit stream would yield us 
the raw disk bytes �FF FF FF D5 AA 96". Each of the 
first three raw disk bytes (FE�s) are considered to be 
timing bytes, in this example. The first and third 
timing byte here, each has one timing bit attached, 
making the total length of these timing bytes nine 
bits long. The second timing byte has two timing 
bits, making it ten bits long.

When several (usually at least 4) timing bytes are 
written out to the track consecutively, we call the 
group of timing bytes a �timing gap�. Timing gaps are 
very important, because they allow the drive 
controller to line up with the raw bit stream
correctly, so that the raw disk bytes following the 
gap can be converted to their proper values.