PC Ephemera

Chuck Guzis cclist at sydex.com
Wed Oct 26 21:50:04 CDT 2005


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





More information about the cctalk mailing list