The following information details what I know about the interface to Panasonic/Matsushita/Kotobuki CD-Roms that normally connect to a PC soundcard with a 40 pin IDC cable (not an IDE interface) - this interface is sometimes called MKE, SLCD or Panasonic. I have been informed that it is correct for CR-562 and 563 models. If anyone has any further information, I'd be grateful if they would pass it on to me at theo [at@] markettos.org.uk.
This page is not about connecting one of these to a PC (unless you wish to build your own interface). If you wish to do this, please read my Panasonic CD PC connection mini-FAQ, which covers most questions I get about this.
Some more basic information of these drives can be found on the Creative Labs or Panasonic websites, which have basic specifications, jumper details and PC drivers. To find them, do a search on those sites for MKE, CR562 or CR563. If you are really desperate for the interfacing details, you could become a Creative Labs registered developer, but then you'd have to sign a non-disclosure agreement, meaning you couldn't tell anyone about it.
Gary Tait has successfully built an MKE to ISA interface (hosted locally).
Pinout
1 GND 2 CD-Reset (RESET) 3 GND 4 GND 5 GND 6 operation Mode bit 0 (/DRIVE SELECTO) 7 GND 8 operation Mode bit 1 (/DRIVE SELECTO) 9 GND 10 CD-Write (IOW) 11 GND 12 CD-Read (IOR) 13 GND 14 CD-Status bit 0 (STCH) 15 GND 16 n/c (ADPCM ENABLE) 17 GND 18 n/c (DRQ) 19 GND 20 CD-Status bit 1 (DTEN) 21 GND 22 CD-Data enable (ENABLE) 23 GND 24 CD-Status bit 2 (/STEN) 25 GND 26 CD-Status / Data enable (CMD) 27 GND 28 CD-Status bit 3 (EOP) 29 GND 30 GND 31 CD-Data 7 (D7) 32 CD-Data 6 (D6) 33 GND 34 CD-Data 5 (D5) 35 CD-Data 4 (D4) 36 CD-Data 3 (D3) 37 GND 38 CD-Data 2 (D2) 39 CD-Data 1 (D1) 40 CD-Data 0 (D0)
Bracketed labels are those from the MediaVision multimedia kit documentation, which gives the pinout for a Sanyo CDR-H49A "Panasonic-compatible" drive.
Source: Chris Abbot,
Janez Cerar,
Leonardo Galardi and
Alexandre Jorge
A duplicate of the same pinout, from an independent source, can be found in The Hardware Book.
Janez Cerar has done some testing and found some possible errors in the above pinout:
Since I couldn't get it to do much more than reset I did a few measurements and discovered a couple of errors in the pinout specs. 18 does not appear to be n/c, 28 however is. The only other pin with 'interesting' properties is 14. I doubt very much that this is CD-Status 1 as it is different from the other status and data bits and appears to always read something over 5V.
My experiences of the interface
I myself have tried hacking the interface - I basically connected all the lines to a 32 line IO card, connected to the I²C bus in an Acorn A3000. Other than reset, I didn't have much luck. Taking one of the enable lines high and a data bit low caused apparently random data bits to go low as well, in a fashion that looked more like noise than anything else (one of the 'features' of the PCF8574(A) devices used on the I²C card is that they are both inputs and outputs at the same time - they have a pullup which can either be pulled low by an external device or an internal driver. Unfortunately it makes it useless for monitoring lines, since the pullup affects their state).
The easiest way I found to try to work out if I was giving the drive the correct signals was to connect it to its normal interface, then start an audio CD playing. Whilst playing, I unplugged the computer from the drive, and plugged in the test cable. Having done this, (I think) an Abort command will stop the CD playing. Since this is one byte long, it is easier to do when testing than strobing in 7 or more bytes as for the other commands. Unfortunately, despite this, I didn't even get it to perform this command, so I think more work is needed in working out the bus protocol. In particular, if someone can hook a drive up to a logic analyser, the problem should be solved.
From looking at the PCB of a CR562, the data lines all connect to a 74LS245 bus transceiver, and the status/enable lines connect to a 74LS244 thus:
16 n/c (CR562 NC) 18 n/c (CR562 output) 20 CD-Status bit 1 (CR562 output) 22 CD-Data enable (CR562 input) 24 CD-Status bit 2 (CR562 output) 26 CD-Status / Data enable (CR562 input) 28 CD-Status bit 3 (CR562 NC)
This seems to confirm Janez's suggestion that the above pinout is wrong, although I'm not sure what the lines that are wrong actually do. The PCB is helpfully labelled with lots of signal names - in particular around the connector area are the labels /EOP, /STCH, MDACHG, TCK, DIR and /WE - some of these agree with the MediaVision pinout above. There are also some signals that are familiar if you've worked on CD players before (eg FE = focus error, TE = tracking error, FLOCK = focus lock, TLOCK = tracking lock).
The CR562 drive runs in my Acorn Risc PC in a slightly unconventional manner, compared to the way it is normally used in a PC. It attaches to a small daughterboard, which contains an AMI PAL22CV10AP and a 74HC245, and this connects to the IDE interface. A special driver controls the board - this daughterboard does not make the drive into an ATAPI device. This means the signals must be similar enough to IDE to be able to be converted in such a PAL. I've attached a user port interface (basically a 6522 VIA) to the drive cable, and written a quick logic analyser program. It shows that the read/write signals are very fast - each sample of the VIA is about 500ns in duration, and the read/write pulses appear to be active low and 1 - 4 samples long.
I've partially figured out the software calls to this interface in a Risc PC, using Cumana's CDFSSoftISLCD module - what I know can be found here.
ISA register interface
I'm not quite sure how the command set relates to the pinout - I think on the soundcard the various Data/Status/Mode pins are taken to a series of latches/tristates, so that the addresses select which latch/tristate to access.
This is the interface seen by reading/writing the ISA bus:
Addresses: Command (output) = base Select (output) = base + 1 Reset (output) = base + 2 Enable (output) = base + 3 Info (input) = base Status (input) = base + 1 Data (input) = base + 2 (base)
Command set
Command Hex code # bytes Resp. Note =========================================================================== Seek 01 M S F 0 0 0 1 Spin up 02 0 0 0 0 0 0 1 Status 05 0 0 0 0 0 0 1 Only get status Tray out 06 0 0 0 0 0 0 1 Eject tray Tray in 07 0 0 0 0 0 0 1 Close tray Abort 08 1 Set mode 09 5 0 1 v 2 v 1 Set volume (patch), v = volume 09 3 0 s s 0 0 1 Set speed Reset 0a 0 0 0 0 0 0 0 Reset drive Lock ctl 0c L 0 0 0 0 0 1 L=1 lock, L=0 unlock Pause resume 0d P 0 0 0 0 0 1 P=80 resume, P=0 pause Play MSF 0e m s f M S F 1 play from m-s-f to M-S-F Play track/ind 0f t i T I 0 0 1 play from t i to T I Read 10 M S F 0 0 n 1 read n blocks Subchannel info 11 Read error 82 0 0 0 0 0 0 9 Get error code Read version 83 0 0 0 0 0 0 11 Get version string Get mode 84 5 0 0 0 0 0 6 Get audio volume & patch Capacity 85 0 0 0 0 0 0 6 Read SubQ 87 Read UPC 88 Read universal product code Diskinfo 8b 0 0 0 0 0 0 7 Read disk info Read TOC 8c 0 e 0 0 0 0 9 Read TOC entry e Multisession 8d Packet 8e NOTE: 1. Last byte got from the drive is always a status byte. 2. Driver always should wait for no error & ready state before issuing command. (There may be a disk change between two commands, so we don't know the state of the drive.) ================================================================ Error codes: 00 No error 01 Soft read error after retry 02 Soft read error after error correction 03 Not ready 04 Cannot read TOC 05 Hard read error 06 Seek didn't complete 07 Tracking servo failure 08 Drive RAM error 09 Self-test failed 0a Focusing servo failure 0b Spindle servo failure 0c Data path failure 0d Illegal logical block address 0e Illegal field in CDB 0f End of user encountered on this track ? 10 Illegal data mode for this track 11 Media changed 12 Power-on or reset occured 13 Drive ROM failure 14 Illegal drive command from the host 15 Disc removed during operation 16 Drive hardware error 17 Illegal request from host
Source: Zoltan Vorosbaranyi, author of the Linux PCD driver.
Devices on ISA card
The following devices are reported to be on a Creative Labs version of the ISA interface card (code CT1810):
74LS32 (2) 74LS122 74LS74A 74LS08 PAL16L8BCN 74LS04 74LS244 74LS138 74LS245
Source: Gary Tait
Parallel port tester
Mike Ohotin has written some Pascal source to read and write bytes to a drive hooked up to the parallel port (wiring pinout included). But so far he's only managed to get writes to work, so only a few commands can be sent. Currently only reset is useful. Due to lack of access to a drive, this isn't currently being developed.
Please email Theo (theo [at@] markettos.org.uk) if you have any comments or more information.
Page by Theo Markettos (email at theo [at@] markettos.org.uk), last modified 2009-07-19
Return to electronics pages.