MSXPlayerをインストールした話

コンピュータ

書籍「MSX-BASICでゲームを作ろう」を電子書籍で購入しました。


書籍は後でじっくり読むとして、MSX公式エミュレーターMSXPlayerのダウンロード用のリンクとパスワードがあるので試してみました。

起動時MSXのタイトル、RAMは豪華に512KB

MSX-DOS Ver2.30が起動してきます。

ディスクの内容。

スクリーンショットを取得する機能があり、BMP形式で保存されるのですが、ファイルサイズが749KBでした。
MSXで使われる2DDのフロッピーディスクは720KBですので、スクリーンショット画像1枚も保存しきれないサイズだということになります。
画像ファイルのサイズが大きいのか、フロッピーディスクの容量が少ないのか、両方でしょうね。

DSK形式のイメージファイルを読み込むことが出来るようです。

ROMイメージを扱う機能はないみたいですので、こちらのページでzccでROMイメージを作成する方法を試しましたが、MSXPlayerでは実行出来ない模様。
MSX-DOS用に作成した.COM形式のファイルをDSK形式にして、MSXPlayerで起動したところ動作することは確認できました。
z88dkをインストールした記録
z88dkはz80ベースのコンピュータ向けのCコンパイラやアセンブラの開発環境です。こちらをWindows11にインストールした記録になります。z88dkのダウンのロードNightly Buildのリンク先からz88dk-win32-lat...
MSX_Magazineはアカシックライブラリで無料で閲覧できます。
電子書籍出版 AKASIK-Libraries : アカシック ライブラリー
電子書籍出版  電子出版 アカシック ライブラリー アゴラブックス

古いMSXの書籍は国立国会図書館で借りることが出来ます。
国立国会図書館サーチ(NDLサーチ)

ユーザー登録をすればブラウザで結構の数の書籍が閲覧可能。

DSKイメージファイルの編集ソフト

「LexLechz.at Software」からDisk-Manager(DISKMGR.zip)をダウンロード
LexLechz.at Software

DISKMGR.zipからインストーラを展開しインストール

拡張子.dskがアイコンが変更されました。ファイルの関連付けが変更されたようで、クリックするとDisk-Managerで開かれます。

ファイルをドラックアンドロップするとDSKイメージファイルに保存することが出来ます。⇢WindowsのファイルをMSXPlayerで読み込めます。

MSX-DOS1起動ディスクの作成

MSX-DOS2で起動

COPY A:\MSXDOS.SYS B:

Bドライブにディスクを挿入してください。

Insert disk for drive B:
and strike a key when ready

MSPlayerのメニュー⇢Fdd⇢DISK IMAGE FILEを選択

blank.dsk(事前に別名でコピーを推奨)を選択

MSXでエンターキーを押す。

COPY A:\COMMAND.COM B:

Aドライブにディスクを挿入してください。

Insert disk for drive A:
and strike a key when ready

MSPlayerのメニュー⇢Fdd⇢MSX-DOS(2)を選択

MSXでエンターキーを押す。

Bドライブにディスクを挿入してください。

Insert disk for drive B:
and strike a key when ready

MSPlayerのメニュー⇢Fdd⇢DISK IMAGE FILEを選択
blank.dsk(事前に別名でコピーを推奨)を選択

MSXでエンターキーを押す。

DIRでコピーされたことを確認

DIR B:\

MSPlayerのメニュー⇢Fdd⇢DISK IMAGE FILEを選択
blank.dsk(事前に別名でコピーを推奨)を選択
MSPlayerのメニュー⇢Restart(再起動)

MSX-DOS version 1.03(MSX-DOS1)で起動すると成功

ドライブとディスク(イメージファイル)の入れ替えの関係がイマイチ理解出来ていませんが、一応AとBの2ドライブとして扱えるようです。

C言語でMSXのプログラム開発

前景色、背景色、周辺職の設定

MSX-BASICのCOLOR命令を目指しました。

ファイル名:setcolor.c

#include<stdio.h>

// 前景色、背景色、周辺職の設定

// MSX-ROM
// zcc +msx -subtype=msxdos setcolor.c -o setcolor.com
// zcc +msx -a setcolor.c

void set_color(uint16_t fore, uint16_t back, uint16_t border) {
#asm
    LD      IX, 2
	ADD     IX, SP
	LD      A, (IX) ; 下位バイト:周辺色(第3引数)
	INC     IX
;	LD      B, (IX) ; 上位バイト:無視
	LD      HL, 0xF3EA ;BDRCLR
	LD      (HL), A

	INC     IX
	LD      A, (IX) ; 下位バイト:背景色(第2引数)
	INC     IX
;	LD      B, (IX) ; 上位バイト:無視
	LD      HL, 0xF3EA ;BAKCLR 背景色
	LD      (HL), A

	INC     IX
	LD      A, (IX) ; 下位バイト:前景色(第1引数)
	INC     IX
;	LD      B, (IX) ; 上位バイト:無視
	LD      HL, 0xF3E9 ;FORCLR 前景色
	LD      (HL), A

	DI
    LD      IY, (0xFCC1-1)
	LD      IX, 0x0062 ;CHGCLR
	CALL    0x001C; CALSLT
	EI
	RET
#endasm
}
int main() {
	set_color(4, 15, 7);
	printf("COLOR");
    return 0;
}

実行すると色が変わることが確認できました。

BASICのCOLOR命令を試す。

コメント