2007年09月19日

ソフトウェアライブラリ

長らく故障したまま放置していた
88VAユーザーズクラブ ソフトウェアライブラリ
http://www.pc88.gr.jp/softlib/
を修繕しました。
posted by Shinra at 01:00| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2007年09月11日

CAPS/カナ

CAPS/カナキーのロック状態は以下の場合に保持されなかった。
1) VA-EGを終了した場合
2) リセットした場合

1)を解決したくて、まあ終了前にキーの状態を読み取ってiniに保存すればOKだろうと思っていたら、そんなに単純ではなかった。というか、キーボード実装周りのバグや未実装部分が露見した。
2)は、気づいていなかったが(汗)、原因はnp2のエミュレートするキーボードが、CAPS/カナをソフトウェア制御するタイプで、VAとは違うからだろうと思ったが、そうではなかった。

バグの内容
a) ポート197h (キーボード制御)の実装ミス
- モードコマンドとオペレーションコマンドを切り替えるbitの意味を逆に解釈していた。
- そもそも、モードコマンドとオペレーションコマンドの切り替えに使うbitの値が、テクマニと、VAのROM内プログラムが出力するのとで、違う。
⇒ RESETコマンドを発行しようとしても無視されていた
b) ポート190h 未実装
BIOSは、ここのbit0の値で、電源投入かリセットかを区別し、電源投入時に限ってキーボードにRESETコマンドを発行する。ここが未実装なために、キーボードにRESETコマンドを発行しようとしていなかった。
c) VAリセット時にキーマップをクリアしていた。
⇒ リセット前の状態が保存されない。

正しい動作は、おそらく、
・CAPS on/offの度にキーボードからVAにデータを送信、VA内でキーマップに反映
・電源投入時は、RESETコマンドを送信することにより、CAPSの状態に応じてonまたはoffのデータがキーボードからVAに送信され、VA内でキーマップに反映
・リセット時は、RESETコマンドは送信されないし、キーマップも前の状態を保つ。

CAPSのon/offをiniに保存して、VA-EG起動時に反映しただけでは実際のキー入力には反映されなかった。a),b)の問題で、CAPSの状態がキーマップに反映されなかったから。

これらを修正。iniへの保存も実装。
posted by Shinra at 00:39| Comment(0) | TrackBack(0) | EMU | このブログの読者になる | 更新情報をチェックする

全角キー3

[全角/半角]キーをVAの全角キーとして使えるように修正。

WM_KEYDOWN: wParam = f4 lParam & 0x01000000 = 00
または
WM_KEYDOWN: wParam = f3 lParam & 0x01000000 = 00
を受け取ったらキーon、それから一定時間ったらキーoff。

[全角/半角]キーを押しっぱなしだとどうなるかというと、
Windows側でキーリピートして、WM_KEYDOWNが連続して
発生するので(*1)、VA側のキーマップ(ポート00h-0Eh)から見ても
押しっぱなしに見える。ただ、キーを押してからキーリピートが
始まるまでの間に、キーがoffになった状態が発生する。
・・・実害ないだろう。

(*1) wParamはf4,f3が交互に出るのかと思ったら必ずしも
そうではないようで、規則性が見つからない。謎。


デフォルトのキー割り当てを変更。
・[全角/半角]→全角
・[右Alt]→GRPH
[右Alt]は、GRPH,全角,テンキーカンマ、テンキー=のいずれかの
キーを割り当てられるようにした。
posted by Shinra at 00:15| Comment(0) | TrackBack(0) | EMU | このブログの読者になる | 更新情報をチェックする

2007年09月06日

全角キー2

> なので、VAで全角キーの代わりに変換キーでかな漢字変換の
> on/offをできるようにするプログラムを作成中。

公開しました。ソース付き。

http://www.pc88.gr.jp/forum/viewtopic.php?t=308


実現方法

全角/半角の切り替えに使うキーの判定処理はROM内にあるため、
この判定の書き換えは不可。
そこで、JFP BIOSがキーボードBIOSから取得するキーをすり替
える。JFP BIOSからキーボードBIOSはINTでなくFAR CALLで呼ば
れる。呼び出し先アドレスは、キーボードBIOSのワーク00AB:01DA
に書かれているので(テクマニ参照)、ここを書き換えればフック
できる。JFP BIOSのワークを参照して現在の変換状態をみて、
変換中でなければ、キーボードBIOSが変換キーのコードを
返したときに全角キーにすり替えてJFP BIOSに返す。



余談

マニュアルでかな漢字変換時の各キーの機能を確認したら、
再変換機能があってびっくり。全角モード時にSHIFT+6, SHIFT+4で
範囲選択すると入力済みのひらがなを再変換できる。

# 多分、VA2/3, VA+91のみの機能

一度読んで忘れてしまったのか、今初めて気づいたのか。

昔、Windows+IMEに再変換機能があって、おーっ、と思った記憶は
あるのだけれど、VAにもちゃんとあったとは。



> これができたとして、Windowsで[全角/半角]でIMEを制御している
> 人は、VA-EGでも[全角/半角]でかな漢字変換を制御したいよという
> 話も出てくるかどうか。

Windowsの[全角/半角]キーを使わなかったのは、キーを離したことが
検出できないから(イベントが発生しない: http://88va.seesaa.net/article/2090363.html )

M88が[全角/半角]を全角キーとして使っていそうだったのでソースを
見たところ、onから一定時間経ったら自動的にoffになるようにして
いた。
・・・
確かに、それで十分だわ。全角キーを押しっぱなしにして使うソフト
なんてないだろうし。
posted by Shinra at 23:33| Comment(0) | TrackBack(0) | EMU | このブログの読者になる | 更新情報をチェックする

全角キー

# エミュレータとは直接関係ないけれど

私はWindowsでは[変換]キーでIMEのON/OFFができるようにカスタマイズして使っている。一方、VA-EGでは全角キーの働きをするのは右[Alt]だ。VA-EGとWindowsを行ったりきたりすると、必ず間違える。Windowsで間違って[Alt]を押してメニューがアクティブになったりして混乱する。

なので、VAで全角キーの代わりに変換キーでかな漢字変換のon/offをできるようにするプログラムを作成中。


これができたとして、Windowsで[全角/半角]でIMEを制御している人は、VA-EGでも[全角/半角]でかな漢字変換を制御したいよという話も出てくるかどうか。


先日ノートパソコンでVA-EGを動かしていて、全角に切り替えようとしたら右[Alt]がない。そういえばそうだった・・・


やっぱり右[Alt]に全角キーを割り当てるのは、いろいろイマイチなのかも。
posted by Shinra at 02:24| Comment(0) | TrackBack(0) | EMU | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。