アドレスE000hからE008hはメモリマップドI/Oで、E008hに対するアクセスでBeep音を鳴らすことが出来ます。
【参考】Enri's Home PAGE (mz-80K)(外部サイト)
#define POKE( off, val ) ( *(unsigned char*)( off ) = ( val ) )
void main()
{
POKE( 0xe008, 1 ); // 音を鳴らし始める
for( int i = 0; i < 10000; i++ ){} // 音の長さ
POKE( 0xe008, 0 ); // 音を止める
}
アドレスE008hへ1を書き込むと鳴り始め、0で止まります。鳴らす時間を指定するのではなく、止めるタイミングを自分で制御します。
#027 【MZ80,Z88DK】C言語でBeep音の音程変更
#018 【MZ80,Z88DK】C言語で任意の座標に文字描画