z88dkのMSXテープ自動読み込み


hello.c
/*
z88dk / WebMSX
zcc +msx -lndos -create-app hello.c
zcc +msx -lndos -create-app -bnhello hello.c
bload"cas:",r
*/

#include <stdio.h>

void main()
{
    printf("hello, world");
}

zcc +msx -lndos -create-app hello.c
上記ソースをコンパイルするとa.casファイルが作られる。これをWebMSXのCassetteにドロップする(もしくは[Load Image File])。
左下の[Cassette Tape]アイコンをクリックし、[Run Program]を選択するとa.binがSkipされてDevice I/O errorとなる(テープEND)。
a.casファイルをドロップし直すか、[Rewind Tape]で巻き戻し
bload"cas:",r
と入力すると正常に実行される。

bsaveしたファイルと比べたりした結果、どうやらテープ内ファイル名a.binにピリオドを含むのが原因のようだ。テープなのに拡張子処理してるように思われる。

zcc +msx -lndos -create-app -bnhello hello.c
とコンパイルするとhello.casファイルが作られる。テープ内ファイル名はhelloとなる。
-bn Set the output file for the linker stage
-bnオプションにはa.binの代わりとなるファイル名を指定する。

同様にhello.casファイルをドロップし、[Run Program]した結果、正常に実行された。

WebMSXテープ自動読み込みサンプル