MSX-C by ASCII compiler

Two versions exist of the ASCII C compiler:

Archive MSX C V1.10 Compiler disk

Archive MSX C V1.20 Compiler disk

Archive Complete package of MSX-C 1.10, 1,20, utilities, manual by Freddy Vulto

Archive Japanese MSX C manual, scanned in pdf format

Archive MSX C library Japanese manual

Articles written by Alex Wulms for Sunrise about MSX-C

Author: Freddy Vulto

Yes, although not known to many, a C compiler exists for the MSX. The compiler originally was written for CP/M, but a Japanese software company, ASCII, modified it especially for the MSX and called it MSX-C. The MSX-C compiler compiles C-code to Z80 mnemonics (asssembler) and uses the Macro Assembler package of Microsoft (M80) to maintain assembly libraries and to compile and link assembly code to MSX-DOS executables.

MSX-C Manual, English version

My bootdisk

Archive (166kb), Feb 21, 2004 MSX-C
bootdisk utilizing a 720 kb RAMDISK.Heres a copy of my bootdisk I created especially for my 7 MHz boosted, 1 Mb equipped MSX. The bootdisk creates a 720 kb RAMdisk (H:) to which MSX-C is copied. Now MSX-C compiles entirely from memory: no disk-access is needed, so compiling is as fast as you can get on an MSX. If the MSX is reset, the RAMdisk is restored with all the original files.


Finding myself in distress and complicated batch files, I thought: There must be an easier way to automate these MSX-C compilations on my RAMdisk. So I build MAKE, using wheels from UNIX.

MAKE takes a description of file-dependencies as input. Normally, a makefile will contain these descriptions but if no makefile is specified, MAKE can read from the standard input just as well.A description of a file-dependency contains subsequent filenames in the master-slave format:
MASTER: SLAVE.1 SLAVE.2 … SLAVE.n operation1 operation2
MAKE checks whether one of the slaves has been modified by comparing the time & date of the slaves against the time & date of the master. If the master is older then one of the slaves, the operations will be send to the standard output.

Besides outputting these make operations, MAKE can also output backup commands. When youre using MSX-DOS2, MAKE checks the archive attribute of every file to determine if the file has been modified. If the file has been modified, the copy command will be send to the standard output. (22kb), Oct 25, 1999 including sources and documentation to use with MSX-DOS v1 (48kb), Oct 25, 1999 including sources and documentation (make.hlp) to use with MSX-DOS v2. Alpha though.


Archive (26kb), Mar 24, 2000
This MSX-C project glues most of my efforts – BlinkC, CTime, KeySup – together by creating some kind of pull-down-menu-application within screen 0 (MSX 2). The included sources (MSX-C and assembler) allow you to create your own menu interface. Keep in mind however, this project is a beta (and probably never will be finished, or at least by me). Beta means most menu-items – as shown in the screen shots underneath – wont do anything. In fact, the only menu item that works in this beta-version are (Munu | Shell MSX-DOS)and (Munu | MSX-DOS…). On the other hand, many things work all right:
– its fast!
– creation of menu bar including time;
– creation of pull-down menus as well as pull-down menus within pull-down menus;
– usage of shortcut keys within the pull-down menus;
– messageboxes (Yes/No);
– window attributes to change the appearance of the pull-down menu (filled or not filled).

Although its a beta, this should be enough to get you on the road if youre really interested. The size of the compiled example which was used for the screen shots underneath is just 10,215 bytes for MSX-C v1.20 or 13,440 bytes if youre using MSX-C v1.10.

Munu screenshot 1

Munu screenshot 1.

Munu screenshot 2

Munu screenshot 2.

Munu screenshot 3

Munu screenshot 3.

BlinkC (11kb), Mar 23, 2000
This assembler subroutine is capable of blinking a specified range of characters within screen 0 (MSX-2). The included example C program shows you how to use the subroutine from within MSX-C.

BlinkC screenshot

BlinkC screenshot.

Time (7kb), Mar 23, 2000
This MSX-DOS program displays the changing time on screen 0, reading directly from the clock-chip and writing directly to VideoRAM. CTime is written in C using ASCIIs MSX-C compiler and therefore shows some of the possibilities of the compiler. Source-code files are included. MSX-C versions 1.10 and 1.20 should both be able to compile this project.

RainBow (4kb), Feb 28, 1996
Select screen 8 color numbers using this total assembly utility (3456 bytes). This program allows you to select multiple colors and to view their byte value in decimal as well as hexadecimal. By viewing subsequent colors you can judge the smoothiness of color transitions. The program runs from MSX-Basic, issuing <brsload “rainbow.bin”,r>.

Rainbow screenshot

Rainbow screenshot.

KeySup (4kb), Feb 28, 1996
The Key supplement program KEYSUP.COM stores the status of the control keys (CTRL, SHIFT, GRAPH and CODE) in a supplement buffer (SUPBUF). The KEYSUP TSR is activated every time a key is put in KEYBUF. Using KEYSUP, testing key combinations (for example CTRL-F1, SHIFT-cursor keys, GRAPH-SELECT) wont result in detecting false combinations. Core program has been written in assembly. Installation program and test program have been written using MSX-C. Source files are included.