ここから本文です
Dr.KIKKIE(KIKI) MSX DeuxLaque
免責:記載誤りによる損害一切

書庫全体表示

マウス・メモ(13)

イメージ 1
■転送時の注意点(2)
内部の移動量カウンタは8ビットしかないため、データ読み出しから次の読み出しまでの間隔が長いとオーバーフローしてしまい、正しい移動量が得られなくなる。
このマウスのアクセスは、VDP割込みのタイミングで読み出しを行うことを前提としているので、なるべく読み出しルーチンは、VDP割り込みの中で行うようにすべし(と、資料には書いてあるが、これは実際に守られていたのだろうか?)。

■転送時の注意点(3)
ジョイスティックポートのアクセスは、BIOSコールのPSGアクセスを利用し、移動量の読み出しは右図Aのタイミングで行うこと。
このタイミングは、MSXマウスの読み出しの標準的タイミングとなっている。
(なお、資料では「BIOSコールのPSGアクセスを利用し、」となっているが、これはRDPSGのことであり、WRTPSGはダメである。理由は後述。)

■マウスの移動と出力データの関係(右図B)
X軸では左、Y軸では上が正の方向となっている。

■中締め
疑問点。
「MSXテクニカルガイドブック」では大意、マウス/トラックボールを使うとき、MSX1のGETPADはトラックボールに対応していないので自前のルーチンを使うべし、その際、RDPSGを使うと割り込みが許可されてしまうので、直接I/Oポートをアクセスすべし。MSX2以降の場合はGETPADを使用すべし、としている。
ところが、今回入手した資料掲載のサンプルプログラムではRDPSGを使っている。割り込みが許可されちゃっても平気、なのであろうか?

と思って、MSX1のBIOSを参照してみると、WRTPSGはルーチン内で割り込み禁止/解除を行っているが、RDPSGは割り込み関係はノータッチである。
というわけで、「テクガイ」記述の「RDPSG」は、「WRTPSG」の誤りであろう。実際、MSX1のGETPADでは、PSGに書き込むときは直接I/Oポートをアクセスし、読み込むときはRDPSGを使っている。
マウスが接続されているポート(Aポート又はBポート)を選択するに当たり、PSGレジスタ#15に値を書き込まないといけないが、その際は、WRTPSGを使わず、直接I/Oポートをアクセスすべし、ということである。

いろいろと資料を突合して、ようやく合点がいった。ことほどさように「現場百遍」は大事である。ちょっと違うか? まあ、いいや。
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Dr.KIKKIE(KIKI)
Dr.KIKKIE(KIKI)
非公開 / 非公開
人気度
Yahoo!ブログヘルプ - ブログ人気度について

よしもとブログランキング

もっと見る
本文はここまでですこのページの先頭へ

[PR]お得情報

お肉、魚介、お米、おせちまで
おすすめ特産品がランキングで選べる
ふるさと納税サイト『さとふる』
コンタクトレンズで遠近両用?
「2WEEKメニコンプレミオ遠近両用」
無料モニター募集中!
ふるさと納税サイト『さとふる』
11/30まで5周年記念キャンペーン中!
Amazonギフト券1000円分当たる!

その他のキャンペーン

みんなの更新記事