[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Disk ][ on the IBM PC's parallel port - second try
- Subject: Disk ][ on the IBM PC's parallel port - second try
- From: ferdimh@gmx.de
- Date: Thu, 6 Dec 2007 14:03:32 -0800 (PST)
- Complaints-to: groups-abuse@google.com
- Injection-info: d27g2000prf.googlegroups.com; posting-host=84.167.78.89; posting-account=B5gu6QoAAAD_LskX_BqP69IJBJspU0ZX
- Newsgroups: comp.sys.apple2
- Organization: http://groups.google.com
- User-agent: G2/1.0
- Xref: g2news1.google.com comp.sys.apple2:31012
While my first try to connect a Disk ][ to the PC's parallel port has
proven to be unreliable, I'll try a second.
I chose to do the clock recovery and deserializing in hardware this
time. This is my idea:
http://sbscs.game-server.cc/appleii/disk2pc/disk2pc2.png
(I'm sorry, but I couldn't fit that into ascii art)
Principle of operation:
The values of R3,R4 and C3 are chosen that the 555 will output short
pulses at 250kHz.
These pulses clock the shift register. If a one is read the 555 will
be reset, causing the output to go low clocking the shift register to
input a "1". Because the first cycle after a reset is 37% longer and
the reset pulse will last a moment, the next clock pulse will be ~6 us
after the last read pulse which is perfect sync (if I am right...)
When the high bit reaches the last bit, the shift register is clocked
and the high bit toggled. Since it is always 1 it doesn't need to by
sent to the PC. Then the shift register is cleared to take up the next
byte.
R1/C1 provides some setup time for the '574 and R2/C2 for the hold
time.
In case of a self-sync byte, the shift register will be shifted 10
times before a 1 appears so the sync mechanism also works.
The PC only has to read the parallel port every 32 µs which is a very
relaxed requirement now.
Writing to disk could be done by bit-banging, since there is no need
to sync. And reproducing a precise timing is possible (at least in DOS
with interrupts turned off)
Am I right in my assumptions or is there any mistake?
Do you think this is workable?