The libmsx
library exposes MSX, MSX2, MSX2+, and MSXturboR hardware
functionality to the C programmer.
The library is intended for use with the C cross compiler SDCC, and makes it easy to build MSX ROM cartridge image (16KiB, 32KiB, or MegaROM).
MSX is a registered trademark of MSX Licensing Corporation.
Pull requests (PRs) and issues (bug reports, feature requests) are welcome. š
https://user-images.githubusercontent.com/659805/206341437-fcef9dde-8317-4727-ad16-a30b34b1d287.mp4
Copyright (c) 2021-2024 Daishi Mori (mori0091)
This software is released under the MIT License.
See https://github.com/mori0091/libmsx/blob/main/LICENSE
GitHub libmsx project
https://github.com/mori0091/libmsx
A code snippet (gsinit.s) extracted and derived from the SDCC runtime library are available under the GPLv2 license.
See https://github.com/mori0091/libmsx/blob/main/sdcc/README.md.
The API reference of the libmsx
library is hosted on GitHub Pages.
See https://mori0091.github.io/libmsx/index.html
The below functionality is supported.
Getting MSX system version code
VSYNC based timing synchronization
Almost of TMS9918A, V9938, V9958 VDP (Video Display Processor) functionality.
GPIO (8-bit parallel I/O port ; a.k.a Joystick I/F)
Sound output
Sound driver
MegaROM Mapper
__banked
functions support (SDCC 4.2.0 or later)Utility functions for inspecting MSX slot mechanisms.
Compression / Decompression
The origins of the ZX0 data compression format and algorithm were designed and implemented by Einar Saukas.
See also https://github.com/einar-saukas/ZX0.
The below functionality is NOT supported yet.
supported
supported
supported
supported
Linux
Host Platform | SDCC version | status |
---|---|---|
Ubuntu 22.04 | 4.0.0 | ā (outdated) |
4.1.0 | (not tested) | |
4.2.0 | ā (outdated) | |
4.3.0 | ā (recommended) |
Windows
Host Platform | SDCC version | status |
---|---|---|
MSYS2 UCRT64 | 4.0.0 | (not tested) |
4.1.0 | (not tested) | |
4.2.0 | ā (outdated) | |
4.3.0 | ā (recommended) |
Ofcourse, Ubuntu on WSL is okey. š
(WSL: Windows Subsystem for Linux)
SDCC 4.3.0 or later is recommended.
find
, make
, gcc
, gzip
, zcat
, xsltproc
, and so on.To use libmsx
,
Download a SDCC pre-built binary for Linux from http://sdcc.sourceforge.net/ and install it.
SDCC 4.3.0 or later is recommended.
Don't forget adding SDCC to PATH
environment variable.
Add the below to ~/.bashrc
or ~/.bash_profile
.
At here it is assuming that the SDCC 4.3.0 is installed under
~/sdcc-4.3.0
.
export PATH=${PATH}:~/sdcc-4.3.0/bin
Why don't we install sdcc by
sudo apt install sdcc
?Because the latest version of SDCC may not be installed by
apt
. In case of Ubuntu 22.04, SDCC 4.0.0 is installed. Thus we recommend that you download SDCC 4.3.0 pre-built binary and use it on Ubuntu 22.04 or later.
sudo apt update
sudo apt install build-essential make gcc gzip xsltproc git
The 1st case is using Ubuntu on WSL2 environment.
In this case, it is same as for Ubuntu 22.04.
Launch a terminal of Ubuntu on WSL2, and proceed with the above instructions.
The 2nd case is using MSYS2 UCRT64 environment.
Download a SDCC pre-built binary for Windows from http://sdcc.sourceforge.net/ and install it.
Download and install MSYS2.
Then launch a terminal for the MSYS2 UCRT64 environment, and do as follows:
pacman -S coreutils findutils make gcc gzip libxslt git
Don't forget adding SDCC to PATH
environment variable.
Add the below to ~/.bashrc
or ~/.bash_profile
, on MSYS2 UCRT64 environment.
At here it is assuming that the SDCC 4.3.0 is installed under
C:\Program Files\SDCC
.
export PATH=${PATH}:/c/Program\ Files/SDCC/bin
The below makes the library libmsx.lib
into lib
folder, and bundled tools
into bin
folder.
make
To build sample projects in sample/
, do as follows:
make sample
And for cleaning up:
make clean
There are several sample projects, please refer to the
sample/
folder of thelibmsx
project.
Step 1. Make your project's Git repository.
git init my_proj
Step 2. Download libmsx
and place it somewhere.
git clone https://github.com/mori0091/libmsx.git libmsx
Step 3. Copy libmsx/mk/Makefile
to top of your repository, and
customize it.
See https://github.com/mori0091/libmsx/blob/main/mk/Makefile
cp libmsx/mk/Makfile my_proj/
Step 4. Create the folder my_proj/src/
and place your C source
files under it or in its subfolders.
mkdir my_proj/src
To build your application, do as follows on the top of your repository my_proj
.
Then the ROM image will be made into my_proj/bin
folder.
make
And for cleaning up:
make clean