{"id":49279467,"url":"https://github.com/costarc/msxpi","last_synced_at":"2026-04-25T18:01:20.609Z","repository":{"id":65069384,"uuid":"91831531","full_name":"costarc/MSXPi","owner":"costarc","description":"Interface for MSX to Connect and use Raspberry Pi resources","archived":false,"fork":false,"pushed_at":"2026-03-29T13:17:58.000Z","size":163360,"stargazers_count":90,"open_issues_count":10,"forks_count":22,"subscribers_count":21,"default_branch":"master","last_synced_at":"2026-03-29T16:33:15.025Z","etag":null,"topics":["assembly","c","msx","python","raspberrypi","vhdl","z80"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/costarc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-05-19T17:50:35.000Z","updated_at":"2026-02-09T08:29:46.000Z","dependencies_parsed_at":"2025-08-05T17:12:40.152Z","dependency_job_id":"412211b1-ca5a-48df-bf8c-59c969587fc5","html_url":"https://github.com/costarc/MSXPi","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/costarc/MSXPi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/costarc%2FMSXPi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/costarc%2FMSXPi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/costarc%2FMSXPi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/costarc%2FMSXPi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/costarc","download_url":"https://codeload.github.com/costarc/MSXPi/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/costarc%2FMSXPi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32271243,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T09:15:33.318Z","status":"ssl_error","status_checked_at":"2026-04-25T09:15:31.997Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["assembly","c","msx","python","raspberrypi","vhdl","z80"],"created_at":"2026-04-25T18:01:19.520Z","updated_at":"2026-04-25T18:01:20.599Z","avatar_url":"https://github.com/costarc.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# MSXPi\n\nMSXPi is a hardware interface and software solution to allow MSX computers \nto control and use Raspberry Pi resources. The interface exposes I/O ports \nthat can be read and written by MSX, and in turn the data will be accessible \non the Raspberry Pi. Many resources are implemented, such as access to \nnetwork drives, internet, disk images, and the Raspberry Pi itself. To make \nthe most of MSXPi resources, a Raspberry Pi Zero W should be attached to the \ninterface.\n\n* MSXPi is Now Available for openMSX! \nA virtual MSXPi device is now available for openMSX, allowing the emulated \nMSX to perform all the cool tricks MSXPi hardware can perform, such as \nbrowse internet in text mode, connect to IRC, check the weather or ask\nChatGPT for help do develop your MSX programs.\n\nRead for and learn how to start using MSXPi extension in the openMSX section\nbelow.\n\nQuick Start Guide\n=================\n\nVersion 1.4 breaks software compatibility with previous ROMS and server. \nUpgrade the whole pack (ROM, msxpi-server and client commands). There is no need\nto update the CPLD firmware - it is unchanged in this release.\nThe documentation is very outdated - for reference, look the new source code,\nthey have plenty of information for developers.\n\nThis Quick Start Guide is updated to V1.2 of the Software and Interface.\n\nPlease refer to the full documentation under \"documents\" folder in github \nfor detailed setup procedure and other information.\n\nThere are a few steps to setup MSXPi, and you can choose between using a \nMSXPi pre-installed SD Card image (ready to boot MSXPi), or build your own \nimage using a fresh Raspbian Image downloaded from Raspberry Pi web site - \nboth methods are described below.\n\nOverall, the steps to get up and running are:\n\n- Setup Raspberry Pi with the server-side software (Raspberry Pi SD Card)\n- Setup MSX with the client side software (MSX SD Card / disk drive)\n\n\nPrepare Raspberry Pi Using MSXPi SDCard Image\n=============================================\n\n\n### Step 1: Download and install Raspberry Pi SD Card with MSXPi server software. \nMSXPi SD Card image: https://tinyurl.com/MSXPi-SDCardV3\n\n\n### Step 2: Write the image to a SD Card\nUse a SD Card with a minimum of 4GB.\n\nUse 7Zip to unzip the file, and use Win32diskImager to write the image to \nthe SD Card.\n\nWin32diskImager can be download from https://win32diskimager.org\n\n\n### Step 3: Install the MSXPi commands for MSX-DOS\n\nIn your favourite PC computer, copy all MSXPi commands from \nhttps://github.com/costarc/MSXPi/tree/master/software/target to your MSX \nSD card or Disk.\n\nAfter this basic setup, you should be able to use the MSXPi \".com\" commands \nfrom your MSX. To unleash full MSXPi power, configure the \nRaspberry Pi Zero W WiFi:\n\n          p set WIFISSID Your Wifi Name\n \n          p set WIFIPWD YourWifiPassword\n \n          p wifi set\n \n          p reboot\n \n Note: The first reboot may take longer than 3 minutes, because Raspbian will \n expand the filesystem in the SD and initialise the Linux system - following \n reboots will be faster)\n\nIn case you need very detailed instructions, please read  \"Tutorial - Setup \nRaspberry Pi for MSXPi the Easy Way - Using the MSXPi Pre-Installed Image.pdf\", \nin https://github.com/costarc/MSXPi/tree/master/documents (Portuguese version \nalso available).\n\n\nPrepare Raspberry Pi Using a Fresh Raspbian Image\n=================================================\n\n\nIn this mode, you will have to install all requirements for MSXPi - there is a \nscript to help you with that, though.\n\n### Step 1: Download the Raspberry Pi Imager\nDownload from https://www.raspberrypi.com/software\n\nThis is the official Raspberry Pi SD Card image writer - download and install in \nyour desktop PC.\n\n### Step 2: Write the Raspbian image to the SD Card\nRun the Pi Imager software, and select the best  OS for your raspberry pi. If you \nare using the recommended Raspberry Pi Zero W, choose the lite version (without \ngraphical desktop):\n\n        CHOOSE OS -\u003e Raspberry Pi OS Lite (other) -\u003e Raspberry Pi OS LITE (32-bit)\n\nWrite the image to your SD Card and when completed, boot the Raspberry with the \nSD Card inserted.\n\n### Step 3: Setup MSXPi using MSXPI-Setup tool\nYou will need to connect the Raspberry Pi to a HDMI TV and a keyboard to complete \nthese steps.\n\nLogin to Raspbian using default user and password: pi / raspberry\n\nConfigure the WiFi using raspi-config command\n\nDownload the MSXPi setup script - it will download and install everything\nneeded to have MSXPi up and running the following commands - but note: the finals \nstages of the setup installs OPENAI library (the \"Install Additional Python \nlibraries required by msxpi-server\" section the reboot command), which requires \ncompilation - this stage may take over an hour if done in the Pi Zero, therefore \nyou may choose to remove these from the MSXPI-Setup script before running it, and \ndo it at later time if you want to use ChatGPT with MSXPi.\n\n          wget https://tinyurl.com/MSXPi-Setup\n\n          chmod 755 MSXPi-Setup\n\n          bash ./MSXPi-Setup\n          \nIf you need very detailed instructions, please read \n\"Tutorial - Setup  Raspberry Pi for MSXPi the Hard Way - \nInstalling Raspbian from Scratch.pdf\", in \nhttps://github.com/costarc/MSXPi/tree/master/documents \n(Portuguese version also available).\n\n\nMSXPi in openMSX\n================\nThe MSXPi extension allows you to connect a virtual MSXPi to your MSX \nrunning in the openMSX, and use the same commands found in the physical\nMSXPi running in real hardware.\n\nIt works by implementing a MSXPi Device that listen to the I/O ports allocated\nfor MSXPi and forwarding the data to a local TCP socket, which is implemented\nby a Python program (the msxpi-server). The MSXPi device also works for data\nsend by the Python program, that is, reading the responses and forwarding to\nthe MSX computer, just like the real thing.\n\nThere are some difference in the Python code that runs along with openMSX and\nthe Python server that runs in the Raspberry Pi - specifically, the low-level\nbyte transfer which uses GPIO in the Raspberry Pi, and Socket communication\nin the openMSX solution, but other than that, the remaining code should be\nthe same and work on both platforms.\n\nTo have MSXPi in you openMSX, download the binary for your operating system from\nthe latest release in the MSXPi Extension official repository:\nhttps://github.com/costarc/openMSX/releases\n\nFollow the instructions in:\nhttps://github.com/costarc/openMSX/blob/master/Contrib/README.MSXPi\n\nMSXPi specific documentation is available in the MSXPi repository:\nhttps://github.com/costarc/MSXPi/tree/master/documents\n\nMSXPi v1.4 Release Notes\n========================\nMostly a Software major overhauling.\n- C BIOS now available\n- Replaced all p\u003ccommands\u003e by p \u003ccommand\u003e, now developed in C\n- Most block data transfers re-written for easy of use and stability\n- MSX-DOS1 is back\n- BASIC BIOS simplified, now there is only one command: CALL MSXPI \n\nMSXPi v1.3 Release Notes\n========================\nThis is mainly a PCB redesign and firmware om the CPLD. From v1.3, firmware (msxpi.pof) is no longer compatible with previous versions due to pin mapping changes.\n- Changed CPLD pin mappings to optimize PCB routing\n- Changed the EEPROM footprint from DIP to PLCC\n- Improved routing with power rails uninterrupted and wide.\n- 5V power rail (for PI and EEPROM) routed on the edge of the card to avoid EMI \n- Bottom layer is now fully ground plane, with uninterrupted gnd plane across the PCB#\n- Rev1: Updated silk in back of pcb to reflect new jumper names\n\nMSXPi v1.2.1b Release Notes\n===============================\n- Activity LED now connects to RPi Ready signal - allows to see when RPi Server is online\n- SPI_RDY resistor changed to pull-down \n- Re-routed power rails to minimise EMI \u0026 cross-signal interferences\n- BASIC programs updated to run also under openMSX; defaults to 80 columns\n- Firmware (CPLD) logic updated but keeping compatibility with previous versions; version \"1100\"\n\nMSXPi v1.2 Release Notes\n========================\n- Added support in the software for the extension MSXPi for openMSX\n- Added Pull-Up resistors to SPI_CS \u0026 SPI_RDY\n- Added Push-button to Shutdown and Reboot Raspberry Pi (via interruption)\n- Removed MSX RESET button from the interface\n- Added diode in the 5V rail - allow Raspberry Pi to be powered\n  via USB without leaking to the MSX\n- Changed the 5V rail capacitor to 10uF\n- Made optimisation to the CPLD firmware to save some logic gates\n- Extensive changes to all software for stability\n- Added new build file msxpibios.rom with MSXPi BIOS for BASIC CALL commands\n- Lots of bug fixes to the code\n\nMSXPi v1.1 Release Notes\n========================\n- New PCB layout\n- Schema \u0026 PCB  changed to support future expansion to Raspberry Pi hardware SPIO\n- New basic IO routines (used by all components)\n- Lots of code changes to improve stability\n- Improved pcopy: can decompress files, use virtual remote devices  \n- Added BASIC API to support development in BASIC\n- Added IRC.BAS - IRC client to chat in webchat.freenode.net\n- Added BASIC programs from Retropix Brazil:\n  - DOLAR.BAS\n  - WEATHER.BAS\n- Added chatgpt.com (OpenAI/chatgpt client)\n- Lots of bug fixes and improvements\n- All changes are fully compatible with interface v0.7\n\nMSXPi v1.0.1 Release Notes\n==========================\n- Redesigned the interface in Kicad format, both schematic and PCB\n- Replaced the 27C256 by AT28C256 to allow MSX to program the EEPROM from the MSX-DOS\n- Added the EEPROM programmer AT28C256.COM to available commands - re-using it from my other project https://github.com/costarc/msxcart_flash32k\n- Updated the msxpi-seerver.py to run in Python3, which is the default on newer versions of Raspbian\n\nThis version allows:\n- Set MSX data \u0026 time from Raspberry Pi\n- Copy programs from Internet to MSX disk (ftp, http, smb)\n- Run 8KB/16KB/32KB ROMS directly from Pi or from the network (ftp, http, smb)\n- Run commands on Pi directly from MSX-DOS command line\n- Configure Pi wifi from MSX-DOS\n\nKnown issues and defects\n========================\n- MSXPI-DOS1 is not booting - it's not actually important, because the best way to use MSXPi is along with a MSX-DOS2 system, usually running with a SDCard cartridge\n- pplay.sh notworking\n\nMSXPi v1.0 Release Notes\n========================\nThis release has some major changes to the hardware and software components.\n\nOn the hardware side:\n\n- Implemented the /wait signal on the PCB (CPLD does not drives at this time, it is always tri-state, therefore this signal is for future use)\n- Schematics was updated to support the /wait signal\n- CPLD logic update to drive /wait to tri-state (to avoid MSX to freeze)\n- LED is driven by the SPI_CS signal (needed that CPLD pin for the /wait signal)\n- Removed the jumper for the BUSDIR signal (since it is always driven by CPLD internal logic)\n- Added pull-up resistors for all Raspberry Pins used in the design\n- Added by-pass capacitors for all CIs.\n\nOn the software side:\n\n- The server component was mostly rewritten to be more modular\n- Every command now can be implemented in a self-contained function inside msxpi-server.py\n- No changes are needed in the main loop of the program when new featuers or commandss are added\n- Main data transfer routine (senddatablock / receivedatablock) rewritten to allow retries and block size configuration\n- Many functions removed (deprecated) resulting in a less complex and easier to maintain and expand solution\n- All clients rewritten based on a simple and better communication logic\n- Many improvements and bug fixes\n- More stable softwre architecture\n\n\nOther non functional changes includes a new design using KiCad 5 instead of Eagle, some more jumpers to support new EEPROM features.\n\nLimitations and bugs\n- When booting from MSXPI-DOS, pcopy cannot copy file to the msxpiboot.dsk\n- The CPLD logic and software are not benefiting of the /wait signal (future improvement)\n\n\nMSXPi has two main branches:\n\nmaster - Most up-to-date version. This contains fresh code, that might have been updated just couple mintues ago. Expect to find bugs, but also expect them to be fixed very quickly.\n\nRelease branches - Contains previous releases.\n\nOther branches might appear and disappear. I recommend you not to use them.\n\nTo-Do / Wish List\n=================\n1. Redesign the interface to use Raspberry Pi SPI GPIO pins \u0026 hardware support\n2. Implement Z80 /WAIT states in the interface\n3. Implement Z80 /INT support in the interface\n4. Redesign the interface for Parallel bus support\n\nMSXPi project is structured around three directories:\n\n    /software  - all software goes here\n    /hardware  - interface schematics, CPLD design files\n    /documents - documentation\n\n\nThe /software branch has this structure:\n\n\n    MSXPi\n    |-------/software \n    |       |---- \n    |       |    | \n    |       |    /asm-common\n    |       |    |----\n    |       |    |    |\n    |       |    |    /include\n    |       |    |    \n    |       |    |\n    |       |    /ROM\n    |       |    |----\n    |       |    |    |\n    |       |    |    /src\n    |       |    |    |----\n    |       |    |         |\n    |       |    |         /MSX-DOS\n    |       |    |         |\n    |       |    |         /BIOS\n    |       |    |\n    |       |    |\n    |       |    /Client\n    |       |    |----\n    |       |    |    |\n    |       |    |    /src\n    |       |    |\n    |       |    /Server\n    |       |    |----\n    |       |         |\n    |       |         /Python\n    |       |         |----\n    |       |         |    |\n    |       |         |    /src\n    |       |         |\n    |       |         /Shell\n    |       |         |\n    |       |         /systemd\n    |       |         |\n    |       |         /C (deprecated)\n    |       |         |----\n    |       |              |\n    |       |              /src\n    |       |\n    |-------/openMSX\t\n    |       |\n    |-------/hardware \n    |       |---- \n    |       |    | \n    |       |    /CPLD_Project\n    |       |    |\n    |       |    /Schematic\n    |       |    |----\n    |       |         |\n    |       |         /Fabrication\n    |       |\n    |-------/Documentation\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcostarc%2Fmsxpi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcostarc%2Fmsxpi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcostarc%2Fmsxpi/lists"}