やっと来年の予定がきまりました。
Z80マシン語を続けて解説していきます。
ドットを大きくしたマルチカラーモードで
算術演算シフト命令でビットごとに
2進数は101100010というように1と0のパターンです。
10よりも■□の方がわかりやすいですね。
これでパターンが変化する感じが見えてくるでしょう。
10 SCREEN3
20 PSET(100,100),15
30 I$=INPUT$(1)
ちょっとサンプルで見てみましょう。
BlueMSXで実行してみてください。■が表示されましたね。
大きなドットを点灯させてビットイメージの表示を
やってみたいと考えています。
前回の続きのBWはBlueMSXは漢字の一部が何故か
豆腐になるので「日付と時刻」と表示できませんでした。
1chipMSXで取り込んで、画像を表示させてみました。
ブレが酷く変色していますが、こんな感じになっています!
アイコン風表示メニューは長いので
これからはBWという仮称名称でいきます。
何の頭文字かは現時点では謎扱いとさせていただきます。
さらにMSXBASICのフックの使いかたも
ちょこっと今年やりたいですね。そうですね、
今、手元にMSX-FANの1992年3月号があります。
徳間書店から発行されたもので、表紙は「シャウトマッチ」のキャラクタと
「ルーシャオ」のキャラクタを紙粘土でイラストを描いたものでした。
当時のMSX-FANはほとんど処分して数冊あるだけですが、
ここの「マシン語の気持ち」という特集に掲載されたプログラムを
打ち込んでみました。
当時はBASICのプログラムリストがありました。
これをSCREEN0:WIDTH40の1行の幅が40サイズで
入力は文字の位置が合っているかを確かめながら打ち込んでいました。
どんなプログラムか、1回も実行したことがなかったので、
やってみました。
F6に例えば22:03:14なら220314とKEYONの状態で
Shiftキーを何度も押すと秒がカウントされているのが、わかりました。
MSXのフックというのはMSXBASICのシステムはROMになっています。
MSXのROMは書き換えることはできません。
そこで、拡張させて新しいシステムと加えたりする場合はフックを使うこともあります。
システムはアクティブの状態になっているので、フックを不用意に書き換え
てしまうと動かなくなることがあります。
この特集ではJPのコードでD000Hにジャンプさせるワザを使っていますが、
1バイト書き換えることで切り替えさせるようにしています。
最初jは今までの9D9FhにあるフックのプログラムをC9でカットして、
待たせて時計のプログラムをアドレスD000hに書き込み、9D9Fhの
C9以降に00D0を加えます。
D000hにフックに書かれていたプログラムを付け加えて準備完了です。
JPはC300D0(シーサンゼロゼロディーゼロ)ですが、
そして、C9をC3に変えて時計のプログラムと9D9Fhにあったプログラムが
時計のプログラムのアドレスで実行されるようになります。
フックのプログラムはプログラムで割り込み禁止(DI)させて
プログラム実行させて後で割り込みを許可させる(EI)というふうにやるようです、
IはインターラプトでDI(DisableInteraptディザブルインターラプト)、
EI(EnableInteraptエナブルインターラプト)ですね。
この命令はDOS/VのBIOS設定ができる人ならば
英文の単語の意味はわかると思います。
フック以外でもたしか、VRAMの書き換えとか必要のようでしたね。
以前にテストしてできなかったのも、これが原因かもしれません。
DOSまたはBASICで音楽を演奏させたり(MGSDRV)と
フックはMSXのいろいろな用途に使われています。
こんなことも★
Zoomeの動画サイトが終了して、AAACafeも12月で終了しました。
そこで、FC2のFC2動画に移行することにしました。
現在は準備中ですが、fc2.comからFULLMSXで検索してください。
あと数時間後で31日になりますが、次回の話をすると
GraphicWorks最新版を使って描いてみました。
ここだけの話ですが、最新版はプラグインなしでも
広告が貼り付きますが動作します。そんなケチ臭いことはやりません。
これはサーバーチェックが通常は入りますが、
ネットワークが混雑したり繋がらなかったりすることが多いので
1回だけキャッシュすればそのままです。
※コメント投稿者のブログIDはブログ作成者のみに通知されます