Interfacing details of Panasonic SLCD CD-Roms https://www.chiark.greenend.org.uk/~theom/electronics/panasoniccd.html 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 ------------------------- Physically, the Panasonic and Mitsumi interfaces are identical to unkeyed ATA interfaces, and 40-pin unkeyed IDE cables can be used to connect Panasonic and Mitsumi drives to a compatible controller. The Sony interface is based on the 34-pin floppy interface instead. In terms of signalling, according to AllPinouts the Mitsumi and Panasonic pinouts are the same (which seems surprising to me, I’ll update if I find anything different). The Sony pinout is very similar, but squashed to 34 pins, which is quite straightforward since four pins aren’t connected in the 40-pin interfaces and half the pins are ground (all even pins on the Mitsumi, Panasonic and Sony interfaces are ground). The ATA interface supports all ATAPI drives, not just CD-ROM drives, so it uses more pins for non-ground purposes; for example, it has 16 data lines (instead of 8 on the CD-ROM specific interfaces) and 3 address lines (instead of 2). It also includes a LED driver, a key pin etc. All three interfaces used different controllers, and required different drivers. If you’re really interested you can look at the different implementations in older versions of the Linux kernel; they provide a unified interface which makes it easier to understand them, but it’s still a lot of work to describe the differences. Mitsumi 1 A0 Address Bit 0 2 GND Ground 3 A1 Address Bit 1 4 GND Ground 5 n/c Not connected 6 GND Ground 7 n/c Not connected 8 GND Ground 9 n/c Not connected 10 GND Ground 11 n/c Not connected 12 GND Ground 13 INT Interrupt 14 GND Ground 15 REQ Data request For DMA 16 GND Ground 17 ACK Data Acknowledge For DMA 18 GND Ground 19 RE Read Enable 20 GND Ground 21 WE Write Enable 22 GND Ground 23 EN Bus Enable 24 GND Ground 25 DB0 Data Bit 0 26 GND Ground 27 DB1 Data Bit 1 28 GND Ground 29 DB2 Data Bit 2 30 GND Ground 31 DB3 Data Bit 3 32 GND Ground 33 DB4 Data Bit 4 34 GND Ground 35 DB5 Data Bit 5 36 GND Ground 37 DB6 Data Bit 6 38 GND Ground 39 DB7 Data Bit 7 40 GND Ground Panasonic 1 A0 Address Bit 0 2 GND Ground 3 A1 Address Bit 1 4 GND Ground 5 n/c Not connected 6 GND Ground 7 n/c Not connected 8 GND Ground 9 n/c Not connected 10 GND Ground 11 n/c Not connected 12 GND Ground 13 INT Interrupt 14 GND Ground 15 REQ Data request For DMA 16 GND Ground 17 ACK Data Acknowledge For DMA 18 GND Ground 19 RE Read Enable 20 GND Ground 21 WE Write Enable 22 GND Ground 23 EN Bus Enable 24 GND Ground 25 DB0 Data Bit 0 26 GND Ground 27 DB1 Data Bit 1 28 GND Ground 29 DB2 Data Bit 2 30 GND Ground 31 DB3 Data Bit 3 32 GND Ground 33 DB4 Data Bit 4 34 GND Ground 35 DB5 Data Bit 5 36 GND Ground 37 DB6 Data Bit 6 38 GND Ground 39 DB7 Data Bit 7 40 GND Ground Sony 1 RESET Reset 2 GND Ground 3 DB7 Data Bit 7 4 GND Ground 5 DB6 Data Bit 6 6 GND Ground 7 DB5 Data Bit 5 8 GND Ground 9 DB4 Data Bit 4 10 GND Ground 11 DB3 Data Bit 3 12 GND Ground 13 DB2 Data Bit 2 14 GND Ground 15 DB1 Data Bit 1 16 GND Ground 17 DB0 Data Bit 0 18 GND Ground 19 WE Write Enable 20 GND Ground 21 RE Read Enable 22 GND Ground 23 ACK Data Acknowledge For DMA 24 GND Ground 25 REQ Data Request For DMA 26 GND Ground 27 INT Interrupt 28 GND Ground 29 A1 Address Bit 1 30 GND Ground 31 A0 Address Bit 0 32 GND Ground 33 EN Bus Enable 34 GND Ground