The CDROM drives used by the 3DO M1 use the [[https://en.wikipedia.org/wiki/Panasonic_CD_interface|Panasonic CD interface]] with some slight modifications. Also know as the MKE CD interface (MKE = Matsushita Kotobuki Electronics), MEI (Matsushita Electronics Interface), or SLCD interface. While the physical connector was similar to that of IDE on PCs these drives required specific interface cards (such as some Creative SoundBlaster cards.) The 3DO Blaster requires the use of a Panasonic CDROM due to it directly interfacing with the device as it would in the consoles. ====== Specifications ====== | Disc Format | CD-DA (red book audio) || | ::: | CD-ROM Mode 1 || | ::: | CD-ROM Mode 2 || | ::: | CD-ROM Mode 2 XA Form 1 || | ::: | CD-ROM Mode 2 XA Form 2 || | ::: | CD-WO Regular || | ::: | CD-WO Hybrid (CD-Bridge, PhotoCD) || | Transfer Rate | Audio | 172.3KB/s, 344.4KB/s | | ::: | Mode 1 | 150KB/s, 300KB/s | | ::: | Mode 2 | 171.1KB/s, 342.KB/s | | ::: | Mode 2 XA Form 1 | 150KB/s, 300KB/s | | ::: | Mode 2 XA Form 2 | 170.2KB/s, 340.4KB/s | | Burst Transfer Rate | 4MB/s || | Buffer Memory | 32KB || | Random Access Time | Typically 350ms at double speed || | Full Access Time | Typically 750ms at double speed || | Power | +9V | Typically 0.6A, Max 1.5A | | ::: | +5V | Typically 0.2A, Max 0.8A | | Disc size | 8cm, 12cm || | LED | access indicator || | Switch | open/close button on main board || ====== Operation ====== From the {{:documentation:manuals:panasonic_fz-1_-_technical_guide_us.pdf|technical guide}}:
[The] Expansion Bus driven by CLIO chip is connected to CD-ROM Interface Gate Array (called OSA). The OSA is used as CD-ROM drive interface and Expansion port buffer. Expansion port signals are almost the same signals with Expansion Bus, but CD-ROM drive signals are original. (See Expansion Bus Specification section of Appendix A.) The STB- signal controls the timing of all information transfer between the 3DO IM System and the expansion devices. The 3DO IM System uses the STB- signal in conjunction with three control signals (SEL-, CMD-, and WR-) to control an expansion device. Eight possible Expansion Port transactions are possible with the encoding of the SEL-, CMD-, and WR- signals. The control signals are valid before, during, and after the assertion of the STB- signal. The control signals, however, are only guaranteed to be valid around the assertaion of the STB- signal as defined in the Electrical Caracteristics section of the document. IDIN and IDOUT signals are used to determine each Expansion device's address during start up squence. At normal states, these signals stay High.
====== CD-ROM Interface Connector Pinout ====== From section 4-3-2 of the FZ-1 US {{:documentation:manuals:panasonic_fz-1_-_technical_guide_us.pdf|technical guide}}: ^Pin^Name^Comment| | 1 |CDRST- |RESET signal for CD-ROM drive | | 2 |CDMDCHG |Media Change Signal | | 3 |GND | | | 4 |CDCMD- |Data / Command- | | 5 |GND | | | 6 |CDSTEN- |Status Valid signal | |7 |GND | | |8 |CDDTEN- |Data Chunk Valid signal | |9 |GND | | |10 |CDWAIT- |Wait signal | |11 |GND | | |12 |CDHRD- |Read strobe | |13 |GND | | |14 |CDHWR- |Write strobe | |15 |GND | | |16 |CDEN- |Enable CD-ROM access | |17 |GND | | |18 |CDD7 |Data Bus 7 | |19 |GND | | |20 |CDD6 |Data Bus 6 | |21 |GND | | |22 |CDD5 |Data Bus 5 | |23 |CDD4 |Data Bus 4 | |24 |GND | | |25 |CDD3 |Data Bus 3 | |26 |CDD2 |Data Bus 2 | |27 |GND | | |28 |CDD1 |Data Bus 1 | |29 |GND | | |30 |CDD0 |Data Bus 0 | ====== Commands ====== All commands sent to the CD-ROM drive are 7 bytes in length except the **Abort Command**. The operation code is the first byte of the command. All commands except the **Reset Command** return a **Status Byte** in the **Status Return FIFO**. The **Status Byte** describes the success or failure of the command. It is the last byte placed into the **Status Return FIFO**. All commands except the **Read Sub Q Command** and the **Reset Command** also return a **Command Tag Byte** in the **Status Return FIFO**. The **Command Tag Byte** is the first byte placed in the **Status Return FIFO** and corresponds to the** Operation Code **of the command. ^ Command Name ^ Code ^ Command ^ Bytes in Data FIFO ^ Bytes In Status FIFO ^ Description ^ | Seek (LBA) | 01 | 01 00 LL BB AA 00 00 00 | 0 | 1 | Seek to LL:BB:AA | | Seek (MSF) | 01 | 01 02 MM SS FF 00 00 00 | 0 | 1 | Seek to MM:SS:FF | | Spin up | 02 | 02 00 00 00 00 00 00 | 0 | 1 | Spins up disc | | Spin down | 03 | 03 00 00 00 00 00 00 | 0 | 1 | Spins down disc | | Diagnostics | 04 | 04 | 0 | | | | Status? | 05 | 05 | | 1 | | | Drawer Open / Eject | 06 | 06 00 00 00 00 00 00 | 0 | 1 | | | Drawer Close / Inject | 07 | 07 00 00 00 00 00 00 | 0 | 1 | | | Abort | 08 | 08 | 0 | 1 | | | Set mode | 09 | 09 05 00 01 LL 02 RR | 0 | 1 | Set volume: LL = left volume, RR = right volume | | ::: | ::: | 09 03 00 SS SS 00 00 | 0 | 1 | Set speed | | Reset | 0A | 0A 00 00 00 00 00 00 | 0 | | | | Flush | 0B | 0B | 0 | | | | Lock? | 0C | 0C LL 00 00 00 00 00 | 0 | 1 | unlock: LL = 00 \\ lock: LL = 01 | | Pause / resume? | 0D | 0D PP 00 00 00 00 00 | | 1 | pause: PP = 00 \\ resume: PP = 80 | | Play MSF? | 0E | 0E mm ss ff MM SS FF | | 1 | Play audio from mm:ss:ff to MM:SS:FF | | Play track? | 0F | 0F tt ii TT II 00 00 | | 1 | Play audio from track and index tt:ii to TT:II | | Read data | 10 | 10 MM SS FF 00 NN NN | Variable | 1 | Read N blocks from MM:SS:FF | | ::: | ::: | 10 LL BB AA 01 NN NN | Variable | 1 | Read N block from 24bit LBA | | Subchannel info? | 11 | 11 00 00 00 00 00 00 | | 1 | | | Data path check | 80 | 80 00 00 00 00 00 00 | 0 | 1 | Status returned: 80 AA 55 XX \\ \\ XX = status | | Read Error | 82 | 82 00 00 00 00 00 00 | 0 | 10 | | | Read ID / Version | 83 | 83 00 00 00 00 00 00 | 0 | 12 | Get ID / version string \\ \\ s[0x0] = 0x83 \\ s[0x1] = manufacture ID (0x00) \\ s[0x2] = 0x10 \\ s[0x3] = manufacture number (0x00) \\ s[0x4] = 0x01 \\ s[0x5] = 0x00 \\ s[0x6] = 0x00 \\ s[0x7] = revision number (0x00) \\ s[0x8] = 0x00 \\ s[0x9] = flag (0x00) \\ s[0xA] = 0x00 \\ s[0xB] = device status | | Mode Sense / Get Mode | 84 | 84 05 00 00 00 00 00 | 0 | 7 | | | Read Capacity | 85 | 85 00 00 00 00 00 00 | 0 | 7 | | | Read Header | 86 | 86 00 00 00 00 00 00 | 0 | 6 | | | Read Sub Q | 87 | 87 00 00 00 00 00 00 | 0 | 12 | | | Read UPC | 88 | 88 00 00 00 00 00 00 | 0 | 10 | | | Read ISRC | 89 | 89 00 00 00 00 00 00 | 0 | 12 | | | Read Disc Code | 8A | 8A 00 00 00 00 00 00 | 0 | 12 | | | Read Disc Info | 8B | 8B 00 00 00 00 00 00 | 0 | 8 | | | Read TOC | 8C | 8C 00 EE 00 00 00 00 | 0 | 10 | Read the disc table of content entry EE | | Read Session Info | 8D | 8D 00 00 00 00 00 00 | 0 | 8 | | | Read Device Driver | 8E | 8E 00 00 00 00 00 00 | | | | | | | | | | | ====== Error Codes ====== ^Code^Description| | 0x00 | No error | | 0x01 | Soft read error after retry | | 0x02 | Soft read error after error correction | | 0x03 | Not ready | | 0x04 | Cannot read TOC | | 0x05 | Hard read error | | 0x06 | Seek failed to complete | | 0x07 | Tracking servo failure | | 0x08 | Drive RAM error | | 0x09 | Self test failure | | 0x0A | Focusing servo failure | | 0x0B | Spindle servo failure | | 0x0C | Data path failure | | 0x0D | Illegal logical block address (LBA) | | 0x0E | Illegal field in CDB | | 0x0F | End of user encountered on track | | 0x10 | Illegal data mode for track | | 0x11 | Media changed | | 0x12 | Power-on or reset occurred | | 0x13 | Drive ROM failure | | 0x14 | Illegal drive command | | 0x15 | Disc removed during operation | | 0x16 | Drive hardware error | | 0x17 | Illegal request | ====== Additional Information ====== * [[https://en.wikipedia.org/wiki/Panasonic_CD_interface|https://en.wikipedia.org/wiki/Panasonic_CD_interface]] * [[http://www.chiark.greenend.org.uk/~theom/electronics/panasoniccd.html|http://www.chiark.greenend.org.uk/~theom/electronics/panasoniccd.html]] * [[https://cgit.freebsd.org/src/plain/sys/i386/isa/matcd/matcd.c?id=ec81f5f05ac4f053d08b17f5d791b7c87d181642|https://cgit.freebsd.org/src/plain/sys/i386/isa/matcd/matcd.c?id=ec81f5f05ac4f053d08b17f5d791b7c87d181642]] * [[https://cgit.freebsd.org/src/plain/sys/i386/isa/matcd/matcddrv.h?id=ec81f5f05ac4f053d08b17f5d791b7c87d181642|https://cgit.freebsd.org/src/plain/sys/i386/isa/matcd/matcddrv.h?id=ec81f5f05ac4f053d08b17f5d791b7c87d181642]] ====== Sources ====== * {{:documentation:manuals:panasonic_fz-1_-_technical_guide_us.pdf|panasonic_fz-1_-_technical_guide_us.pdf}} * Portfolio 2.5 [[https://ext.3dodev.com/3DO/Portfolio_2.5/Interfaces/2p5/includes/cdrom.h|cdrom.h]]