2018/08/24

今更人に聞けないm5のこと(その4)

飽きもせずにベーマガのプログラムを入力…と言うか、OCRでテキスト化したものをエミュレータに渡しているが、とあるBASIC-I用のプログラムがEmu5で動作せず、ドハマりした事のメモ書き。

(以下メモ)

状況

BASIC-Iで作成されたゲームプログラムで操作にシフトキーを使用するが、Emu5ではキーの入力を受付けない。
入力ミスを疑うが問題なく、MAMEでは正常に動作する。

プログラムではキー入力に『INKEY$』ではなく、I/Oポート$038の値を読みこんでいる。

調べた事・確認したこと 

Sord m5の資料はBASIC-Gのマニュアルしか所有していないが、そこでのI/Oポート表ではキーボードは$030~$036を使用とあるが、前述のポート$038をMAMEで読むとFUNCキー,SHIFTキーなどのBASIC-Gで言うところの『INKEY(1)』区分のキー押下で値が変化する様子。
同様の調査を実機及びEmu5でも行うが、実機はMAMEと同様に値が変化するものの、Emu5では値が変化せず10進数で255のままとなっている。

 この時点でEmu5のキー入力にバグがあるのではないかと考えたが、BASIC-GのINKEY(1)を使用する場合は問題なし。
また、マニュアルのI/Oポート表ではポート番号は掲載されているが、具体的なキー割り付けは未掲載のため、I/Oポート$030~$036のに対するキーを調べてみたところ、BASIC-Gの『INKEY(1)』区分のキーはポート$030でも読めるようだ。
これは実機やMAMEでも同様。

結果

m5実機ではI/Oポート$030~$037と$038~$03Fはミラーになっている様子で、MAMEはミラー側のポートからも読み込む事ができるのに対し、Emu5はそれができない様子。

何故ポートの$038を使用していたのか定かではないが、憶測では当時の雑誌や本に掲載されていたものと思われる。
まだまだ、投稿プログラムの写経は続けていくつもりだが、このようなものが多いのか少し注意が必要。

その他

BASIC-IでINKEY$の代わりに、BASIC-GのINKEY()のように押下したキー番号を取得したい場合は、メモリの$0702Bに値が格納される。
但し、BASIC-GのINKEY(0)区分のみで、SHIFTなどの補助キーは前述の通りI/Oポート$030($38)を読む。

5 件のコメント:

  1. こんばんはー。古いベーマガ漁ってまして、M5のゲームが面白そうなので
    入れてみたいと思っています。”OCRでテキスト化したものをエミュレータに渡している”とかいてらっしゃいますが、もう少しでいいので具体的な方法を教えていただけないでしょうか?お時間のある時で構いませんのでご検討いただければと思います。よろしくお願いします。<(_ _)>

    返信削除
    返信
    1. 初めまして。Sord m5のエミュレータ“Emu5”は、ControlメニューのPasteでテキストの貼り付け(BASICへの受け渡し)が可能です。まあ、制御文字やキャラクタ文字などはエミュレータ上で修正が必要なので、それが少し手間ですが…。Emu5はステートセーブ・ロードも可能なので、それらも駆使して頑張って下さい。

      削除
  2. 返信ありがとうございます。
    了解しました。頑張ってみます。少し調べたのですがアイウエオが今のキーボードと違うんですね。( ;∀;)
    Emu5にromaji to kanaってコマンドあるのですが使うとひらがなでるのですが、入れたローマ字と違う??すみません、もしご存じなら使い方ご教授できないでしょうか?お願いだけですみません。ではでは...............
    ベーマガでみると短いプログラムで面白そうなゲームたくさんありますね。

    返信削除
    返信
    1. Emu5のローマ字変換を試してみましたが、正常に機能していないみたいですね…。代わりにこちらの改変版Emu5はどうでしょうか?

      http://nenecchi.kirara.st/

      下の方にあるEmu5.7zを展開したフォルダにromaji.7z内にあるromaji.dllを入れるとHost-->Input-->Romajiがチェック可能になりますので(Control-->Romaji to Kanaはチェック不要です。)これでローマ字変換が可能になるようです。
      tab+2キーでかな入力モード(BASICのカーソルが"K"になる)に変更もお忘れなく。
      sord m5は低年齢層向けだったのか、キーボードが50音配列というのが逆に厄介ですね…。

      削除
  3. 返信ありがとうございます。
    無事にローマ字変換できました!。ありがとうございます。
    早速入力してみます。SORD社て外国の会社とおもってました。この時期のゲーム機はいっぱいありましたね。
    あと蛇足ですが、MGN3303さんはDumpListEditorご存じでしょうか?
    ”PC8001を懐かしむページ”で配布されているのですが。p6,msx,mz80k,ぴゅう太に対応してます。OCRされたテキストのBASICのチェック補助やグラフィックキャラの入力補助、マシン語のチェックサムの自動チェックをしてくれて、エミュで読める形式,p6t,mzt,cas式,p6t,mzt,casの作成までしてくれます。もしご存じでなければぜひ行ってみてください。ではありがとうございました

    返信削除