Categories: R10コンピュータ

日立 MB-S1 S1-CP/M80 移植作戦 その26 BIOSの作成10

samさんに割込式BIOSを調整して頂いてS1-CP/M80のBIOSが割込で動作するようになりました^^

フラグチェック式のポーリング版BIOSで101分かかっていたマンデルブロ集合のASCIIARTが4分3秒で完了できるようになりました。

CP/M80版 Microsoft MBASIC Rev. 5.11

割込式にすることで約25倍速くなったことになります。

ポーリング式は安定して動作していますが、今のところ割込式は少し不安定です。
しかし、この速度は魅力的・・・

とりあえす、ポーリング式BIOS版と割込式BIOS版の2種類を作って楽しみたいと思います^^

kabekin

View Comments

  • おお!すばらしい!
    MZ-2500の6MHz動作と同等の速度が出ていますね!
    さっそくうちのページに追加しようと思います。
    M-BASICは5.11なんですか?5.21じゃなくて?

    • samがkabikenさんに提供したモトネタFDイメージに入れたものがたまたまそれでした。バージョンアップしますかねぇ?(^^;

  • 掲載しました。
    タイプアヘッドがあるかないか不明でしたので、とりあえず無しとしましたが、
    問題ありましたらお知らせください。

    • ASCIIARTベンチマークのサイト拝見致しました。掲載どうもありがとうございます。
      皆様はMBASIC VER5.22や5.21で確認されておられるようなので、大きな違いは無いと思いますが
      次回Ver5.22でも確認してみたいと思います。
      「タイプアヘッドあり/なし」とはどのようなものでしょうか?

      • キー入力の先行入力機能です。今のBIOS09の実装で先行入力は可能でした。S1の「システム」の機能によるものです。

        • やはりシステムコールお使いでしたか。それですとタイプアヘッドありですね。WEBは訂正しておきます。
          これはOFFにできるんでしたっけ?

          • Web確認しておきました(^^;
            0x41, 0x02 ;KBDINP
            ですね。コンソール入力にはこれがぴったりだと思います。
            で、samは先行入力がOFFにできるかわかりません。
            ワーク領域になにか設定するとたぶん先行入力分をチャラにできたり
            OFFになるのではと思っているのですが。

          • タイプアヘッドとはキーの先行入力の事で了解しました^^
            POLKBDでもKBDINPでも先行入力は効いてしまうようですね。
            初めは知らなかったので、BIOS09内にキー入力用のバッファを入れましたがS1内部で大きなキー入力バッファを持っているようなのでBIOS09内のバッファは全く不要のようでした・・・
            オフにする方法は見つかりませんね^^

          • キーの先行入力をしない方法としてはたぶん
            https://seesaawiki.jp/mb-s1/d/KB-Whttps://seesaawiki.jp/mb-s1/d/KB-W
            にあるレジスタを使用するのではないでしょうか?
            KBレジスタの機能(ライトモード)($FFE0)
            のSSビット(bit6)を1→0とすると(Breakキーを除く)キー入力があっても
            キー割込み(IRQ)が発生しなくなるらしいです。
            →そうか、ゲームなどのキー入力の場合はこれをいじるんですね。
            で、samはMANDELの結果には影響しないと予想してます・・。
            実際に試すにはSSビットを0→1に戻す考慮が必要なことに注意ですね。
            さもなくばおそらく永遠にキー入力ができなくなります。(^^;ゞ

          • SSビットを0にするとキー入力バッファの入力が一切なくなるようなので、キーコードからキャラクタコードに変換する部分も自前で実装する必要がありそうですね。
            (ゲーム等ではキャラクタコードに変換せずにキーコードだけ使うような使い方だと思いますが・・)
            今のS1-CP/M80のBIOSではインターバルタイマのような割込みは使っていないのでキー入力が無い場合、MANDELのベンチマークには影響無さそうですね