I think the MSX systems are kinda cool. I think LaserDiscs are also kinda cool. What if someone made a MSX that can interface with LaserDisc players?
In regards to things like pinouts, a really nice manual for the PX-7 (the European version of the same thing) not only exists but is scanned. You can view it here.
The included keyboard is a weighty membrane board made of metal and plastic. It's not horrible but it's not amazing either.
Powering the system on drops you at a menu asking if you want MSX BASIC or MSX BASIC + P-BASIC. P-BASIC is a set of extensions which lets you control the superimposer and extra I/O.
My system came with a cartridge in it which, if you start the system to MSX-BASIC + P-BASIC with it inserted, drops you to this screen. I think it's a part of some educational suite?
It's a MSX so, who would've guessed, MSX games work just fine.
The PX-V7 has some special I/O ports on it.
We're going to focus on I/O #3 for the Pioneer LD-700 LaserDisc player. It's the most "complete" connector with all important signals in one place.
Oddly, when looking at the LD-700 service manual, the pin numbering just doesn't match up. By placing the pinouts next to each-other, you can see they do make sense.
The PX-V7 service manual has a list of all commands which can be sent over LREMO. We'll get into these later.
Looking into the service manual, the right audio input jack doubles as a secondary cassette-like input.
If you're using a CPE LaserDisc with data on it, make sure your audio is going into the MSX. If you don't, no program data will be sent.
Let's say, instead of wanting to rely on old diode players that the LaserDisc community doesn't seem to think are very worth servicing, you want a modern way to interface to your PX-V7.
Step One of this little project will be making a video player on a Raspberry Pi respond to LREMO commands. I used an oscilloscope to capture what each signal looks like.
With the knowledge that this was just a modified NEC signal, it wasn't hard to determine what each set of square waves translated to.
Thanks to the openmsx documentation, I found that the Pioneer CU-CLD106 remote shares the same timing and most of the commands.
It turns out LIRC has the CU-CLD106 remote already integrated.
Update: March 28th, 2023
Been a little while, three or four months? I finally found some time and motivation to work on this project so let's get into just that.
Today I set up a Raspberry Pi with LIRC/the CU-CLD106 configuration file, popped the bottom off of the PX-V7 to expose the CPU Board side of solder connections, and experimented with seeing what the three signals do when you issue commands to a Laserdisc player (in this case a Pioneer LD-V510).
Connections: +5V and +3.3V to HV/LV on a level shifter, GND to GND wherever needed, DIN-8 Pin# 7 (LREMO) to HV4 on a level shifter, GPIO Pin# 17 to LV4 on a level shifter. Extra GND wire floating to attach to an oscilloscope probe.
So, as-known from earlier, Pin# 7 on the DIN-8 connector for I/O# 3 is LREMO. You issue a command on the MSX, say "CALL REMOTE(0,"P+")" to tell the Laserdisc player to play whatever disc is loaded. It sends that command as a remote control signal down the LREMO line and into the Laserdisc player. If you're hooked up to a Laserdisc player and have a disc set/ready, when you issue this command the player will spring to life. If you're hooked up to nothing, you get an I/O error from the MSX.
Let's introduce a signal I overlooked earlier: This is where DIN-8 Pin# 4 (LACK on the MSX side, EXT ACK on the Laserdisc player side) comes into play. LACK is an Active Low signal, staying high while the Laserdisc player is idle but being pulled low (allowing remote inputs to come through) once playback has started. When playback is stopped, say you issue a REJECT command or press the Eject button on the Laserdisc player, this line goes back to high.
So, knowing this, I need to add some more circuitry to what I'm going to call a "dummy Laserdisc player" (a Raspberry Pi or compatible board running, I think, VLC and LIRC). It has to respond accordingly, keeping Pin# 4 high whenever a video file isn't loaded or playing but pulling Pin# 4 low whenever a video file is loaded after the initial play signal is sent.