6802用アセンブラを作る(4) JR-100でのテスト

作成したアセンブラのプロトを使って、JR-100の実機試してみました。最終的な目的はJR-100に搭載されているVIA(6522)のテストのためなので、マシン語から直接VIAのレジスタを叩いてJR-100のスピーカーから音階を鳴らしてみました。JR-100への入力は同じく自作のFSKプレイヤーを使います。

プログラム

JR-100ではVIAのPB7がスピーカーに接続されています。つまりVIAのタイマー1のフリーランモードでPB7に出力される方形波が音声として再生されるため、タイマー1の初期値を生成したい周波数に合わせて調整すればよいということです。タイマーが0になるごとにPB7出力が反転するので、カウンタ値は「クロック周波数÷2÷目的の周波数」とする必要があることに注意。waitは単純にビジーループで回しています。またwait部分は2重ループで65536回(256×256)回しています。DECA命令が2クロック、BNE命令が4クロックですので、このループにかかる時間は、JR-100のCPUクロックが890kHzなので、6*65536/890000=約0.44秒となります。

自作アセンブラではまだデータ領域の定義ができないので、周波数に対応するカウンタ値を直接プログラムに埋め込んでます。

実行

これをアセンブラでマシン語の数値列に変換し、FSKプレイヤーで再生します。JR-100側ではMLOADでロードし、USR()で実行します。

まずPC側で音声再生する手順。

JR-100側では、fsfkplayer.jarを実行する前に、MLOADを実行しておきます。MLOADが完了したら、マシン語を実行してください。

再生した様子

うまくいったようです。

これまでの記録

投稿者: けむしろう

プログラミング、サーバ構築、電子工作、旅行が好きです。

コメントを残す

メールアドレスが公開されることはありません。