2025-05-16
Z80マシン語をウェブ、Mac、Windows、Linuxなど、環境問わずにアセンブリ言語からアセンブルできると自由度がまたぐっと広がります。JavaScript/ESモジュールの実装「ASM80」を発見。MIXにつないで、開発サイクルがより速くなりました!

こちら、1文字表示するMSXのBIOS(CHPUT=0x00A2)を呼び出すシンプルなROMファイル用Z80アセンブラ

.org 0x4000 .dw 0x4241, 0x4010, 0, 0, 0, 0, 0, 0 ld a, 'M' call 0x00A2 ld a, 'I' call 0x00A2 ld a, 'X' call 0x00A2 loop: jr loop

上記を mix.asm というファイル名で保存し、Denoを入れた環境のコンソールで下記のコマンド1行いれるだけで、ROMファイルができあがります。

deno --allow-read --allow-write --allow-import https://ichigojam.github.io/kawakudari_asm80_msx/asm80.js mix.asm mix.rom

MacやLinuxであれば、次のコマンドでMIXでの実行もOK!

deno --allow-read --allow-import https://ichigojam.github.io/kawakudari_asm80_msx/run80.js mix.asm | sh


開発中のMSX BIOS互換の超軽量エミュレーター、MIXで動きました!


「IchigoJam/kawakudari_asm80_msx」

JavaScriptのランタイム(実行環境)、DenoだけインストールすればアセンブルもエミュレーターMIXでの動作確認もすぐできます!

links
- MIX - 超軽量MSXエミュレーター with Z80.js
- フォントパターンとVRAMを高速表示、MIX SCREEN1 by WebGL
- Z80/SDCCで開発しMIXでデバッグするMSX用ROM開発、IchigoJam奨学生募集開始!

2025-05-15
5月15日、いちごの日。公益財団IchigoJam財団の福井県内の小中学生対象、プログラミング奨学金提供初事業、いよいよ募集開始。
「奨学金について | IchigoJam財団」

小学3年生の時に買ってもらったMSXで、思う存分プログラミングできた時間がとっても貴重でした。ゲームは1日1時間、でも、MSXは無制限というルールに大感謝!

あの頃の夢、MSX用のカセット自作に向けた、MSX用ROMファイルをライトに開発するために開発を始めた超軽量エミュレーターMIX。ついに、かわくだりゲームが動きました!


「kawakudari - MIX」
src on GitHub
SCREEN1の一部のエミュレートするMIXScreen1とZ80エミュレーターを組み合わせた、MIXCanvasに、かわくだりゲームを動かす最小限のBIOSのエミュレーションにのみ対応しています。(参考、bios at MIXCanvas.js


「IchigoJam/MIX」

URLパラメータでURLや、16進法でエンコードしたROMファイルを指定して動くようにしました。例えば、下記のURLで HELLO WORLD が動きます。

https://ichigojam.github.io/MIX/?rom=41421040000000000000000000000000cd2140213640cd2d4018fe3e2032aff3c9cd1b403e01cd5f00cdc300c97eb7c8cda2002318f748656c6c6f21204d53580d0a00

「IchigoJam/kawakudari_sdcc_msx」

Z80用開発環境SDCCを使った開発環境と、かわくだりゲームサンプルをちょっと起動に時間がかかるけど高機能なopenMSXから、MIXに切り替え、サクっとブラウザで動作確認できるようになり、開発サイクルの大幅短縮を実現!


「HELLOWORLD - MIX」

思う存分プログラミングをしよう!

links
- 公益財団法人IchigoJam財団
- MIX - a compact Z80 emulator with support for MSX BIOS

2025-05-14
MSXの互換BIOSを持つ超軽量エミュレーター「MIX」に画面をくっつけるためにWebGLを使ったパフォーマンスが良いスクリーンを実装しました。


「MIX SCREEN 1 DEMO by WebGL」
src on GitHub
8x8のフォントデータ2048byteと、32x24のテキストVRAM768byteを変更すると、WebGLを使って高速画面描画する拡張タグ mix-screen1 ができました!

import { MIXScreen1 } from "https://ichigojam.github.io/MIX/MIXScreen1.js"; import { rnd } from "https://js.sabae.cc/rnd.js"; const scr1 = await MIXScreen1.create(); main.appendChild(scr1); const draw = () => { const fontROM = scr1.fontROM; const textVRAM = scr1.textVRAM; const n = 10; for (let i = 0; i < n; i++) { textVRAM[rnd(textVRAM.length)] = rnd(256); } const m = rnd(256); for (let i = 0; i < 8; i++) { fontROM[m * 8 + i] ^= 0xff; } scr1.draw(); requestAnimationFrame(draw); }; draw(); RUN on ES-Jam

シンプルに書けていい感じ!


IchigoJamFONTをPNGやバイナリ化して、対応。他、いろいろとご活用ください!

続いて、Z80とBIOSと接続していきます!

links
- MIX - 超軽量MSXエミュレーター with Z80.js

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS