Close
0%
0%

MSXPi Interface

Super Powers For Your MSX Computer

Similar projects worth following
MSXPi interface is a MSX cartridge with a Raspberry Pi Zero W attached, that will give super powers to MSX computers. For an 80's Z80 computer to have access to internet over wifi, playing mp3, using SD cards, updating system clock from internet time servers and other previously unthinkable features - in a 30 years old computer - can only be called that - Super Power.
With MSXPi, the old and new get along.

Using a hardware interface with programable logic, and software running on both MSX (client) and Raspberry Pi (server), an unthinkable number of new features can be implemented to allow the ancient computer have access to modern resources.

The interface is composed of a CPLD with the logic that allow MSX to send data to Raspberry Pi. The logic implements Z80 I/O ports for read and write operations.

On the MSX side, there are client applications running under the operating system, consuming resources on the Raspberry Pi (server).

Each application (or DOS command) implements a single function. For example, there is a command to update the system time (pdate.com). It will read the RPi date and time and update the MSX. There is also a pcopy,com command, that will copy files from anywhere in the network to a MSX disk, and even a command to configure RPi wifi from MSX (pwifi.com), and run commands directly on RPi (prun.com).

On the server side there is a C application always running, listening to MSX commands and performing the requested tasks. 

On both MSX and RPi side, a set of functions (library) is available to implement new commands easily, with a minimum effort.

  • FAQ for MSXPi Interface

    Ronivon Costa10/12/2017 at 21:51 0 comments

    1. Is it possible to redirect MSX video to HDMI?

    R: No. And probably it will never be on this hardware.

    2. is there a TCPIP stack available?

    R: Not now, but this is in the wish list, and possible.

    3. Can I use USB and Mouse with MSX?

    R: Not now, but this is in the wish list, and possible.

    4. Which Raspberry Pi model do I need?

    R: The project is compatible with any model. But you will benefit (performance) from a newer, faster model.

    5. Can I use EXECROM, LOADROM, SOFARUN to run games?

    R: When booting into MSX-DOS using MSXPi, yes, you can. Also, in the future when we have NFS available, you can boot from any other device and still use such commands to access a virtual drive on Pi (which in fact could not only be Pi SD card, but also a network resource).

    6. Can I use a case to accommodate the interface?

    R: Not in this version, as it is socketed and won't fit in a case. Besides that, closing the Pi Zero in a small box may not be a good ideia, as that device usually heats a lot and will need some ventilation.

    7. How is the development cycle, how often are there new commands and other programs?

    R: This is a single-man project, so far, and I am been very busy developing the resources currently available. But I need help. I am trying to gather a community around the project, to start using and developing new applications. All sources are published under open source licenses, and anyone who wish to contribute are welcome. Please find the project on https://github.com/costarc/MSXPi

  • MSXPi Batch Assembled

    Ronivon Costa10/12/2017 at 21:45 0 comments

    I made a batch of MSXPi with PCB manufactured in China - the final PCB are actually of good quality.
    Since it is not a begginer project, I decided to assemble all units and sell almost ready to use - yes, almost because the full project requires an Raspberry Pi, SD card with Raspbian and the MSXPi software configured to boot up when MSXPi is switched on.
    Despite new version of Raspberry Pi Zero launched, there are still a limit of how many RPi one can buy from a single reseller, and due to this limitation I was not able to provide MSXPi fully ready to use.

    But I made available a prepared Raspbian image with MSXPi software, leaving for the user the task if downloading and writing the image to the SD, and solder the RPi into MSXPi - this requires soldering 7 joints only.

  • MSXPi Online Documentation

    Ronivon Costa10/12/2017 at 21:39 0 comments

    Documentation is published in English and Portuguese on the following links:
    http://retro-cpu.run/wiki/index.php?title=MSXPI:Specs:PT
    http://retro-cpu.run/wiki/index.php?title=MSXPI:Specs:EN

    Videos and FAQ also available on the links provided.

View all 3 project logs

  • 1
    Documentation for the Project

    Building information is published online under retro-cpu.run wiki page: http://retro-cpu.run/wiki/index.php?title=MSXPI:Specs:EN

    For convenience here are the steps:

    1. Download Raspbian image with MSXPi already setup. This image starts up the server on boot, and will be ready to listen for MSX commands. Get the image from DropBox here: https://www.dropbox.com/sh/icncwnbdo0z0089/AAB9zX1w7pgQFZkWKfxhL82ha). Download file "msxpi_raspbian.img".

    2. Write the image to a SD Card, with at least 8 GB of space.

    • If under Mac OS X or Linux, you can use dd command:

    dd if=msxpi_raspbian.img of=/dev/diskX

    Attention: diskX is the disk corresponding to the SD Card, usually the X is the number 2 or higher.

    3. Connect Raspberry Pi to the interface. Use manual section 4 "4 - Connecting MSXPi to the Raspberry Pi"), available on dropbox as well.

    • For Raspberry Pi Zero use Figure 2 as reference on how to plug the Pi to the interface. It will be necessary 7 soldering joints in this case.
    • For Raspberry Pi 2 or 3, connect it to the interface using the provided wires, using Figure 3 as reference, on section 4.

    MSXPi manual: https://github.com/costarc/MSXPi/blob/dev/documents/MSX%20Pi%20Interface%200.8.1.pdf

    4. Insert the SD card into Raspberry Pi and switch it on as follows:

    • For Raspberry Pi Zero, insert the MSXPi in a MSX slot and switch on the MSX. Raspberry Pi Zero will turn on, since it is powered by MSX.
    • or Raspberry Pi 2/3, connect a power adapter to the Raspberry Pi. Then switch on the MSX.

    At this point, the MSX should boot and start searching for MSXPi. After a while, it should boot into MSXPi-DOS. In this setup, MSX should have access to two drives, A: with MSXPi-DOS system, and B: with MSXPi tools and commands. When you use MSXPi along with some other disk interface connected, the drives from that other interface will be available as drive C:, D:, and so on.

    Note: If you prefer to boot MSX form the other disk interface then remove jumper CS1. In this case, you won't have access to he MSXPi disk images.

  • 2
    Commands for MSXPi-DOS (MSX-DOS)

    It is possible to use MSXPi along with other disk drive interface, such as the MegaFlashRom SD or ATA-IDE. In this case, MSXPi-DOS burned to the MSXPi EPROM is not started, which means, it is not possible to use the MSXPi disk images stored on Pi. However, all MSXPi commands will be available allowing access to Raspberry Pi, Pi SD card, network and internet. Below are the current commands available for MSXPi - they can be used under both MSXPi-DOS and Nextor/Dos2.

    • prun.com  : Run comands directly on the Linux system/Raspberry Pi.

    Examples of usage:

    prun ls /usr/src/games

    prun cat rst.c

    prun wget http://www.msxarchive.nl/pub/msx/games/msx1/castle.lzh

    • pcopy.com : Copy commands from current MSXPi path to MSX-DOS disks. The current path must be previously set using pcd.

    Examples of usage:

    Copy a file from a http url:

    pcd http://www.msxpro.com/download

    pcopy zanac2.zip zanac2.zip

    Copy a file from Pi SD card:

    pcd /home/pi/msxpi

    pcopy rst.c b:rst.c

    Copy a file from your PC Windows:'

    pcd smb://192.168.1.10/Shared

    pcopy mgear.rom mgear.rom

    • pdate.com : Update MSX-DOS system date. No parameters are required.

    Examples of usage:

    pcd /home

    pdir

    pcd http://retro-cpu.run/MSXPI

    pdir

    Examples of usage:

    ploadrom zanac.rom

    • pnewdisk.rom : Create a new disk image (.dsk) on Pi SD Card. The image is created from a template on Pi (msxpi_720KB_template.dsk). This template can be set and viewed with command pset.

    Examples of usage:

    pnewdisk games.dsk

    • preset.com : Reset MSXPi status and try to re-sync communication with Raspberry Pi.
    • pset.com : Define and display MSXPi custom variables / parameters. There are 10 slots available. The parameters are kept on the server, but lost/reset when Pi are restarted.

    The existing parameters are:

    PATH=/home/pi/msxpi

    DRIVE0=disks/msxpiboot.dsk

    DRIVE1=disks/msxpitools.dsk

    WIDTH=80

    free=notused

    WIFISSID=my wifi

    WIFIPWD=secret

    DSKTMPL=msxpi_720KB_template.dsk

    Examples of usage:

    Display the current values assigned to the parameters:

    PSET DISPLAY

    Set your WIFI network name:

    PSET WIFISSID MINHAWIFI

    Set the password for your WIFI network:

    PSET WIFIPWD PASSW0RD

    • PSETDISK.COM  : Switch a disk image on drive 0 or drive 1. Change is immediate.

    Examples of usage:

    Replace image on drive A:

    PSETDISK 0 disks/gamesrom.dsk

    Replace image on drive B:

    PSETDISK 0 disks/gamesrom.dsk

    Note: Path is relative to /hom/pi/msxpi/

    • PWIFI.COM  : Reconfigure the Raspbery Pi wifi networki. WIFISSID and WIFIPWD must have been previously set with command pset (see command pset.com).

    Examples of usage:

    Show WIFI configuration:

    PWIFI DISPLAY

    Enforce reconfiguration of wifi interface using parameters in variables WIFISSID e WIFIPWD:

    PWIFI SET

    • PPLAY.COM  : Controls audio playback on Raspberry Pi. Current available parameters are:
      • PLAY - Start playback of an audio file
      • LOOP - Start playback of an audio file and keep playing it until receive command STOP
      • PAUSE - Put specified audio in pause
      • RESUME - Restart playback of specified audio
      • STOP - Terminate audio playback
      • GETIDS - Show IDs of audio currently playing
      • GETLIDS - Show IDs of loops currently in progress

    Examples of usage:

    PPLAY PLAY music/tron.mp3

    Note: This command returns a unique identifier for this audio - let's call it NN.

    PPLAY PAUSE NN PPLAY RESUME NN PPLAY GETIDS

    PPLAY LOOP music/tron.mp3

    Note: The command returns two IDs: XX NN, where XX is the loop ID, and NN is the audio ID. In order to terminate a loop it is necessary to send two STOP commands: to the loop ID, then to the audio ID, in this sequence.

    PPLAY GETLIDS PPLAY STOP XX PPLAY STOP NN

    Audio loop should be terminated before the audio it is looping.

View all instructions

Enjoy this project?

Share

Discussions

Ronivon Costa wrote 05/26/2021 at 10:38 point

It's now RIP.
 You can find whole project available on github.

  Are you sure? yes | no

f_8235 wrote 06/29/2020 at 11:53 point

Hello. Are you still working on this project?

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates