New MSX assembly page, with in-depth explanation of Champ Assembler

Page 1/2
| 2

By treblig

Resident (58)

treblig's picture

02-07-2022, 13:06

As a young boy, I did some assembly programming in the 80's on my MSX with Champ. Not so long ago I started to refresh (basically relearn) assembly for Z80 again.

I decided to share my personal notes on the internet. I hope that, especially the pages that explains in depth the Champ Assembler for MSX(1), could be a nice addition, since I did not find a lot of information online about how to use Champ.

https://gilbertfrancois.github.io

Note that the pages are -work in progress-. I'll add pages during my journey in MSX development.

Special thanks goes to all the contributors of msx.org, ChibiAkumas, MSX assembler page (Grauw), Konamiman, Manuel Pazos, openMSX team and everyone who shares information about assembly programming for MSX. In my notes, I credit and reference the sources if applicable. It is so much easier now to learn about this topic than it was around 1986, where I had only access to 2 books and a 2 page manual of Champ.

Login or register to post comments

By Pokun

Expert (72)

Pokun's picture

02-07-2022, 15:48

Good job! Very nice tutorial for Champ!

By Bengalack

Paladin (805)

Bengalack's picture

03-07-2022, 10:19

Seems very nice and clean. Thanks for contributing like this Smile

By Metalion

Paragon (1629)

Metalion's picture

03-07-2022, 16:30

In the '80s, I also made my first steps in assembly on CHAMP.

I remember that I stumbled upon that cassette in a shop that was selling something else entirely (books I think). It was in my home town, where no one was selling MSX software. I grabbed it immediately ... I was finally able to code with an assembler!

I thought I lost it because I had sold everything MSX-related in the early '90s. But a few months ago, my mother found it and gave it to me saying : "Do you want to keep that? I'm going to throw it away..." !!! I was happy to find again my copy of CHAMP.

By mohai

Paragon (1031)

mohai's picture

03-07-2022, 16:56

Hello.
Thank you for the tutorial.
I used Champ quite a bit in the past days. I never developed nothing serious, but small routines her and there.
I bought it in cassette but, unfortunatelly, I never got the manual. I think it was a different version and the editor forgot to include it.
I had to figure out the keys, via test-and-fault.
I always loved the active syntax checker, that prevented you to make errors before assembling.
I think I saw an error in the "Hello World" example. The RET instruction goes back after the last CALL. Surprisingly, your program did not hanged...

By treblig

Resident (58)

treblig's picture

03-07-2022, 22:44

Metalion wrote:

I thought I lost it because I had sold everything MSX-related in the early '90s. But a few months ago, my mother found it and gave it to me saying : "Do you want to keep that? I'm going to throw it away..." !!! I was happy to find again my copy of CHAMP.

I lost my copy as well and was super sad about it. Luckily, thanks to DenisK, I have it back, with original cassette, manuals and box. I couldn't be happier.

By treblig

Resident (58)

treblig's picture

03-07-2022, 22:49

mohai wrote:

I think I saw an error in the "Hello World" example. The RET instruction goes back after the last CALL. Surprisingly, your program did not hanged...

Oh, I'll check it, thanks.

By djh1697

Paragon (1736)

djh1697's picture

04-07-2022, 00:27

My earliest assembly programming consisted of a basic program that read the hex and poked the locations. I wrote a couple of programs that would save a copy of the screen contents of screen 0 or screen 1 text modes at the top of the allowable RAM, when I bought a disk drive, my system crashed! It wrote over part of the RAM used by the disk basic. I rewrote it so it saved the whole of VRAM in the shadow RAM, no idea how I would do it today! All good fun

By Thom

Paladin (711)

Thom's picture

04-07-2022, 05:52

Well done, good job. Nice to know that the late Dennis Ritchie (a legend) made something for MSX.

By retro69

Resident (47)

retro69's picture

05-07-2022, 22:20

Well done, treblig ! I have just browsed your documents but your introductions and tutorials are highly welcome. I am by no way somebody who does lots of assembler coding for MSX (or in general) and so far I have used cross-assembling only (using the Pasmo assembler). However, with your guide I may try CHAMP to widen my horizon. By the way: do you know if there is a disk version of the application ? I understand it has been originally released on tape only and I have not found anything in the TOSEC archive either. My understanding is that I can not mount cas images via the Mega Flash Rom. I have a casette cable, but would need to hook it up to my notebook PC (or try using a cas image player software for my android mobile phone as an alternative). A disk (or maybe even ROM image) therefore would come handy.
Thank you very much.

By treblig

Resident (58)

treblig's picture

06-07-2022, 13:13

Thank you all for the nice comments. @retro69, as far as I know, there is no disk version. Only cassette and ROM. However, I read here on the forum that @manolito74 has a ROM version, but that one has a bug.

I use a data recorder for working with Champ, since I only have the cassette version. However, I don't regard that as a problem. The program loads relatively fast and loading/saving source or bin files is usually pretty fast too.

I have to admit that I do use a digital data recorder from time to time. I have developed a data recorder device that can load and save to SD cards. Moreover, the filename that you type in, e.g. save"cas:myfile" is used as filename on the SD card. I wrote the data recorder software with graphical user interface myself. It records a WAV file from the MSX, converts it into a CAS file, extracts from the header the filename and uses that to write it to SD card. It can play CAS and WAV files back to your (real) MSX.

The project is still work in progress. I'm now designing a nice case for the device and I'm working on enabling the motor pin in the data recorder, so that play and record is synchronous with the "stop" jack plug from the MSX computer. Actually the hardest part is to get necessary hardware, because of the chip shortage.

Page 1/2
| 2