CD drive



Or "CD drive". The part that fails before everything else in CD systems. Also see optical pickups.

The NeoGeo CD top-loading model drive was made by Sony. The CDZ one was made by Sharp ?

It is made of:
 * A 4-bit maskROM MCU (Sony CXP5084), taking care of sequencing and communication (command execution and status report).
 * A DSP (Sony CXD2500) to process analog data from the pickup.
 * A servo controler (Sony CXA1372) to drive the pickup coils for tracking and focus.
 * A spindle and sled motor driver (Rohm BA6396).

Connections
Some say the protocol was standard for the time, but clear information is hard to find. This was guessed from the system ROM disassembly and a logic analyzer.

Connector pinout, directions are from CDD (CD Drive) to CDC (CD Controller):

Some signal has to be "D/M", an output which indicates if SDATA is audio or data. There's a /RESET somewhere also.

Communication
CDD (CD Drive) to CDC (CD Controller, motherboard) communication uses an uncommon scheme, and is handled by the system ROM. takes care of the I/Os through registers, ,.




 * The CDD regularly (~64Hz) sends a low pulse on its /IRQ output to initiate a data exchange.
 * HOCK goes low, indicating that the CDC aknowledges the request. The 4-bit bus direction is set to CDD to CDC.
 * CDCK goes low, indicating that the CDD is starting to send its status data (green A). Diagram fix: A should be ready on CDCK low.
 * HOCK goes high and the CDC reads the status data (A).
 * CDCK returns high.
 * HOCK returns high.
 * CDCK goes low, the B word is ready.
 * The cycle continues on for 10 words.

(The delay here is not necessary, but it can be seen on the NeoGeo CD and is caused by the system ROM program preparing stuff).


 * HOCK goes low and the 4-bit bus direction is inverted (CDC to CDD). The command data is set (red A).
 * CDCK goes low, indicating that the CDD has read the data (A).
 * HOCK returns high.
 * CDCK returns high.
 * HOCK goes low, the B word is ready.
 * The cycle continues on for 10 words.

Status data (green)

 * A: Status
 * B: Status
 * C: Minutes high digit
 * D: Minutes low digit
 * E: Seconds high digit
 * F: Seconds low digit
 * G: Frames high digit
 * H: Frames low digit
 * I: Extension
 * J: Checksum (see below)

Command data (red)

 * A: Command
 * B~H: Depends on command
 * I: Checksum (see below)

Checksum
The checksum digit is the sum of all 9 previous digits, + 5, XOR 15, modulo 15: ((sum + 5) ^ 0xF) & 0xF.

0: STATUS
No parameters.

1: STOP ALL
No parameters. Stops CDDA playback, disk spin, and sets drive in data mode.

2: TOC COMMAND
D: Command code:

0: GET POSITION
MSF in status will be the current position from the beginning of the CD (absolute).

1: GET TRACK POSITION
MSF in status will be the current position from the beginning of the track (relative).

2: GET TRACK NUMBER
Minutes in status will be the current track.

3: GET CD LENGTH
MSF in status will be the total CD length.

4: GET FIRST AND LAST TRACKS
Minutes in status will be the first track (normally 1), seconds will be the last.

5: GET TRACK NUMBER
MSF in status will be the start of the desired track. If the track is a data track, the frames high digit's fourth bit will be 1 (OR 8).

3: PLAY

 * B: Minutes high digit
 * C: Minutes low digit
 * D: Seconds high digit
 * E: Seconds low digit
 * F: Frames high digit
 * G: Frames low digit

Starts playing audio.

4: SEEK

 * B: Minutes high digit
 * C: Minutes low digit
 * D: Seconds high digit
 * E: Seconds low digit
 * F: Frames high digit
 * G: Frames low digit

Sets pickup at desired position.

6: PAUSE
Pauses CDDA playback (disk keeps spinning).

7: RESUME
Resumes CDDA playback.

8: FAST-FORWARD
Unknown.

9: REWIND
Unknown.

10: INIT
Sets pickup at lead-in ?

12: CLOSE
Closes the tray on the front-loading NeoGeo CD.

13: OPEN
Opens the tray.

Adjustments
To do !