Close

A Quick Update

A project log for DCC Hacking

Reverse-engineering Digital Compact Cassette recorders

jac-goudsmitJac Goudsmit 02/05/2022 at 02:120 Comments

I know it's been quiet in this corner for a long time. But lately there have been some exciting things happening to this project. So here goes!

First of all, the most exciting news: I found a cable that fits the connector! As I noted in a previous post, the connector that Philips used for the back of the DCC-175 recorder, is not a custom connector; it's made by Hirose and is still in production at the time of this writing, and available from big online Electronics retailers -- or at least some of them: Currently Mouser has them but DigiKey is out of stock. But the connector only allows attaching a cable with an outer diameter of up to 5.4mm. After I bought a $400+ spool of cable a while ago which was 5.9mm OD, I found out that yes, that really is a hard limit.

Enter the Tensility 50-01540 cable which is available from DigiKey in various lengths, for about $10 per meter: It is the correct diameter, it's shielded and it has the same conductor isolation colors as the Philips cables.

Unfortunately the Tensile cable appears to be a lot stiffer than the Philips cable. I'll have to put one together to see how well it's going to work. I may decide to make my cables a lot shorter than the Philips cable.

Change of Venue: Teensy 4.0

I'm a big fan of the Parallax Propeller. Almost all projects that I have on Hackaday.io use the Propeller 1. But the Propeller also has disadvantages. For one thing, while it's great at doing low-level stuff, it always takes an incredible amount of work to do something complicated, fast. For example, it took me a lot of time to write my Propeller-based SPDIF receiver, and I had to jump through quite a few hoops to make it fast enough, programming in Assembler. And it still doesn't automatically detect the speed, and won't work at 48kHz without overclocking because I was just a few cycles short to process the bits fast enough.

I already decided that for this and other projects, I would probably switch to a Teensy. For this project at least, the Teensy of choice is the Teensy 4.0. It has many advantages:

The only disadvantage really is that it's not 5V tolerant.

Looking Forward

So where am I, and where am I going?

If you followed the project, you already know that the L3REF pin on the connector generates a pulse at the beginning of each Tape Frame, and that each Tape Frame contains 8192 bytes of PASC data which is on the I2S bus. The PASC data is compatible with MPEG 1 Layer 1; however, unlike MP1 encoders, PASC doesn't encode (nor accept) any data in the padding slots that are generated at 44.1 kHz.

The synchronous serial port on the connector is basically compatible with SPI Mode 3 (idle high, sample on trailing edge, LSB first). There are 12 blocks of 32 bytes of serial / SPI data per Tape Frame; 3 x 32 bytes per Tape Block. Thanks to the comments of follower @Vick we also know that those data blocks from the recorder contain (A) 28 bytes of status information plus 4 bytes of AUXINFO, (B) 32 bytes of remaining AUXINFO and (C) 32 bytes of SYSINFO, respectively.

That means that I now theoretically have enough information to generate tape dumps (including timing information and ITTS text information) using the DCC-175.

1. Implement SPI Slave Mode

I'm currently working on writing code for the Teensy 4.0 to use the SPI ports in Slave mode. The standard SPI libraries that are provided with TeensyDuino only support Master mode, and that's not good enough: The SPI clock is provided by the recorder.

2. Connect the Teensy to the DCC-175

Once I have the SPI functionality working, I'll connect the Teensy 4.0 to the Turkey Lab. At first, I'm going to grab the SPI data, and see if I can figure out what those 28 bytes of recorder data are. The L3REF signal will probably be used as CS signal for the SPI port, so that I can easily synchronize the SPI data with the tape frames.

3. Reverse-Engineering the Last 28 Bytes of the SPI Messages

Then I'm going to analyze what the DCC-Studio program sends to the recorder to make it do what it can do. This is a matter of connecting the SPI receiver line on the Teensy to the Transmit line from the Win98 PC to the recorder. The Teensy 4.0 has a cool feature to use it for "sniffing": It can either swap the SDI and SDO line or it can switch both SDO and SDI to input more or output mode.

Once this is done, I should be able to connect the Teensy directly to the DCC-175 without the need to connect the Windows 98 PC. I'm really looking forward to this!

4. Receive I2S

Then it's time to send and receive some PASC data over I2S. I'll probably start by dumping I2S data from the recorder to the CDC serial port, along with the SPI traffic.

At this point, the setup can be used to dump tapes to a PC, which can store them on hard disk, e.g. as MKA file or MP1 file (without AUXINFO/SYSINFO). It will be possible to play those files on a music player on the PC.

5. Transmit I2S

At one point, it will be possible to send AUXINFO and SYSINFO to the recorder while recording PASC. I suspect that this is fairly easy once we get to this point. I hope that it will be possible to send a tape dump file to the recorder which will theoretically make it possible to record a tape that's formatted as a prerecorded tape. That will be an important milestone!

6. SPDIF

Meanwhile, I will also be working on SPDIF input and output. In the DCC Museum forums and on Facebook, we've had a lot of questions from people who want to record their own DCC's from files they have on a PC. This should be fairly easy to do on the Teensy 4.0 by adding TOSlink and coaxial connectors. Using the Teensy as SCMS defeater should be cool.

7. Other Ideas

There are also things that I still want to do with the DCC-730/DCC-951. For example I want to replace the front panel by a color LCD screen and add VU meters. I also want to make it possible to enter song titles via a keyboard.

Furthermore, I think it would be great to store DCC dumps on MicroSD card. 

Another idea is to read ITTS data from a 1st or 2nd generation recorder, via SPDIF. I may make it possible to copy ITTS information from one recorder to another (this would involve storing the data on SD card, and recording a prerecorded-formatted tape from the SD card).

So many ideas, so little time...

Discussions