On 10/26/2005 at 9:18 PM Jim Leonard wrote:
Chuck Guzis wrote:
> I can recall trying the interface out and saying "yes, it works", but
the
most useful
aspect of it was the motor control relay.
Where can I find programming information on the cassette interface?
low-level
info?
The easiest way to see how it all worked is to go to the PC BIOS listing
(it's also the easiest way to use it).
Basically, the calls boil down to this:
INT 15H, AH=0, Turn casette motor on
AH=1, Turn motor off
AH=2, Read 1 or more 256 byte blocks into (ES:BX)
CX has BYTE count and so must be a multiple of 256
on exit, (DX) has count actually written
AH=3, Write 1 or more 256 byte blocks from (ES:BX)
CX = byte count (must be a multiple of 256)
for AH=2 or 3, on exit, CY=0 if no error. Otherwise, CY=1 and
AH=1 if CRC error
AH=2 if lost data
AH=3 if no data detected
There's a 2x2 Berg header on the mobo to set signal levels. Set to M, the
threshold is 75 mv (microphone); set to A, the threshold is 0.68 volts
(nominally a "line" level). The 5 pin DIN connector works as follows: Pin
1 = motor control relay return
Pin 2 = GND, Pin 3 = motor control relay, pin 4 = data in, pin 5 = data
out.
The BIOS writes a record formatted thus (i.e motor on to motor off):
256 bytes of ones (leader)
2 bytes of SYN (0x16)
256 bytes of data
2 bytes of CRC
256 bytes of data
2 bytes of CRC
....
Hope this helps,
Chuck