マーク5の拡張RAMでFLEX9を試す その10 (KB入力の1)

ベーシックマスタレベル3でFLEX9を動作させる作戦の続きです。

VRAMへのデータ書込みでROMのルーチンに頼らずCRT表示ができることが確認できたので
ROMルーチンに頼らないKB入力について調べてみました。

どうやらROM内にKBのスキャンコードとASCIIコードの変換テーブルがあり、そのテーブルで変換している
ことが分かったので、テーブル部分の一部を抜き出してKB入力を試してみました

とりあえず、KBスキャンコードからASCIIコードに変換できることは確認できましたが、
CRT出力以上にKB入力は難しそうです・・・^^;;;

ACIAのデータ入力をキーボードからのデータ読込に差替えてみたところ、入力はできますがキースキャンが高速
なのでちょっとキーを押しただけでも大量に取り込んでしまいます^^;;

IRQ割込みでキースキャンコードをASCIIコードに変換して変数に代入、読み出したら変数クリアで次のキーを
入力可にしていますがスキャンが速い・・・
キーボードから読み込む処理はIRQ割込で、データの読込はConsoleドライバのINPUTサブルーチンとそれぞれ同期
していないので何か同期する工夫が必要なのかもしれません
ConsoleドライバのSTATサブルーチンで常時キー入力を監視しているのかと思っていましたが、トレースすると
毎回STATに入っているわけでは無さそうで、キー入力監視につかえるのかどうかわかりませんでした・・・

こちらも、CRT出力同様ハードルが高そうです・・・

試したコードはこんな感じ
IRQ割込みでキースキャンコードをASCIIコードに変換し変数にセット

Console I/OドライバのIHNDサブルーチン

キースキャンエンコード処理

(ASCIIコード代入用のKBCHR変数はNULLならデータなしと判断することにしています)

Console I/OドライバのINPUTサブルーチンでデータ入力(ACIAのデータ待ちをそのまま差替え)

SHIFTキーやGRAPHキーの処理を含め、完全なKB入力を作るのは相当難しそうです^^

こちらも夜な夜な調べていますが、今のところよくわかりません^^;;;
こう使ったらいい等、ご存じの方アドバイスを頂けると幸いです

そんなレベル3のキーボード入力の記録・・・・

「マーク5の拡張RAMでFLEX9を試す その10 (KB入力の1)」への3件のフィードバック

  1. s1,l3のキー入力について 辻川淳氏
    i/o p259 landom box
    何月号かはわかりません。

    参考になれば幸いです。

  2. sni3さん、かつみんさん
    情報ありがとうございます^^
    I/O誌の1986年12月号は持っていないので、該当の記事を探してみます
    すぐ眠くなりますが、ROMの逆アセンブルとトレースをもう少し頑張ってみます^^;;;

コメントを残す

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

日本語が含まれない投稿は無視されますのでご注意ください。 本文に全角文字を2文字以上含めて下さい (スパム対策)