あなたが現在見ているのは 今年は細々とMZ80Kのマシン語を組む

今年は細々とMZ80Kのマシン語を組む

去年(2025) はPC-8001向けに、マシン語のゲームを2つ作成したので、今年(2026) は来年の干支 「羊」をテーマにしたゲームをMZ-80Kのマシン語で開発することにする。同じZ80なのでPC-8001向けにプログラミングするのとそんなに違いはありませんが、私の一番思い入れの強いMZ-80K2向けにオールマシン語でゲームを開発するというのは大変意味のある事なんです(笑)。

とはいえ、実機を使って当時のアセンブラで開発するというは、現代ではなかなかの苦行ですので、例によってクロス開発環境を整える。

Z80のアセンブリコードは秀丸を利用。
アセンブラは AILZ80ASM を利用。
.mztファイルの生成には DumpListEditor Ver 0.80を利用。

こんな構成で行きます。
PC8001のときから少し時間がたってしまったので、手順をおさらいします。

テストコードとして、「VRAMをクリアして、VRAMの先頭からディスプレイコードすべてを書き込む」というプログラムを作成します。

1. 秀丸でアセンブリコードを記述して保存

				
					;============================================================
; MZ-80K Display Code Table Viewer
;============================================================

            ORG     1200h

;----------------------------
; MZ-80K 定義
;----------------------------
VRAM        EQU     0D000h	; テキストVRAM先頭
COLS        EQU     40		; 画面の横文字数
ROWS        EQU     25		; 画面の縦文字数
VRAM_SIZE   EQU     COLS*ROWS	; 1000 bytes
SPC         EQU     00h		; スペース

;============================================================
START:
;----------------------------
; 1) VRAMクリア(SPC=$00)
;----------------------------
	LD	HL, VRAM
	LD	(HL), SPC
	LD	DE, VRAM+1
	LD	BC, VRAM_SIZE-1
	LDIR

;----------------------------
; 2) 表示コードを 00h→FFh 順に書く
;----------------------------
	LD	HL, VRAM
	LD	A, 00h

DISP_LOOP:
	LD	(HL), A		; VRAMに文字を書きこむ
	INC	HL		;
	INC	A		; 00→01→…→FF→00…

	CP	FFh
	JR	NZ, DISP_LOOP

;----------------------------
; 3) CPU停止
;----------------------------
STOP_CPU:
	HALT

END

				
			

保存するファイル名を VRAMTEST.z80 として保存します。

2. アセンブラでバイナリファイルを生成

AILZ80ASMはコマンドラインで利用するアセンブラですので、次のような batファイルを作成すると便利だろう。

				
					cd C:\work25_PERSONAL\Emulator\MZ80マシン語テスト
ailz80asm VRAMTEST.z80 -bin -lst -sym -f
pause

				
			

バッチファイルを実行すると次のようなファイルが生成される。

*.sym はシンボリックファイルで、アセンブリソース記述した「EQU」で設定した値と「ラベル」の位置のアドレスが一覧になっている。EQUは、他の言語で言えば const である。これを頼りにしてソースコードとにらめっこしてデバッグしていくのである。

*.lst は、アドレス、クロック数、アセンブルした16進数のコード、アセンブリソースを一体化したもので、プログラムの解析に利用する。

*.bin はアセンブリソースをマシン語に変換したバイナリプログラムでこれが実行プログラムになる。

3. DumpListEditor で mztファイルを生成する

binファイルができたので、これをエミュレータで読み込める形式にするため、このツールを使う。

最初に「MZ-80K」モードにする。

次に 「ファイル読み込み」メニューから「BINファイル読み込み&ダンプリスト表示」で作ほど作成した「VRAMTEST.bin」を読み込む。

先頭の行に「$1200」と入力して、「アドレス補正」ボタンを押すと次のように水色にハイライトされる。

そして「形式変換」ボタンを押せばバイナリファイルの先頭アドレスが「1200」からとなる。

右側のファイル名を確認して、必要であれば変更する。実行アドレスは先頭アドレスと同じであれば 1200とする。

「ファイル整理画面にPaste」ボタンを押すと「ファイル整理」タグに移動し、binファイルが生成される。

これで、「mzt書出し」ボタンを押して、保存すれば mztファイルの出来上がり。

4. MZ-80Kのエミュレータで実行させる

Emulator を起動して、生成した VRAMTEST.mzt を選択して、「LOAD」+ CR (Enter) でプログラムがロードされます。mzt ファイルにはプログラムの読み込みアドレス、実行アドレスが書き込まれているので、読み込むが完了すると自動的に実行されます。

おー、パチパチパチ。
めでたく実行されました。MZ-80Kに設定されているキャラクタはちょっと楽しい感じですね。グラフィクスを描画できないので、ゲームをつくるときは、この文字を組み合わせて、それっぽい感じにすることになります。センスが問われるのがおもしろいところ。

コメントを残す

CAPTCHA