mori0091 / libmsx

C library for MSX
https://mori0091.github.io/libmsx/
MIT License
31 stars 2 forks source link
c linux msx msx2 msx2plus msxturbor

libmsx ; C library for MSX

MIT License C/C++ CI CodeQL

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

LICENSE

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.

API reference

The API reference of the libmsx library is hosted on GitHub Pages.
See https://mori0091.github.io/libmsx/index.html

Supported functionality

The below functionality is supported.

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.

Unsupported functionality

The below functionality is NOT supported yet.

Pre-requisites

Target Machine

Host Platform

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)

Build tools

SDCC 4.3.0 or later is recommended.

Install instructions of Build tools

To use libmsx,

  1. Install SDCC.
  2. Install other toolchain.

Ubuntu 22.04

1. Install SDCC

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.

2. Install other toolchain

sudo apt update
sudo apt install build-essential make gcc gzip xsltproc git

Windows (Ubuntu on WSL2)

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.

Windows (MSYS2)

The 2nd case is using MSYS2 UCRT64 environment.

1. Install SDCC

Download a SDCC pre-built binary for Windows from http://sdcc.sourceforge.net/ and install it.

2. Install other toolchain

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

Build instructions of the library and sample projects

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

Build instructions of user applications

There are several sample projects, please refer to the sample/ folder of the libmsx project.

Preparation

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

Build your application

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