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

Last Updated on 2019年12月10日 by kabekin

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

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

CP/M80版 Microsoft MBASIC Rev. 5.11

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

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

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

10件のコメント

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

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

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

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

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

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

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

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

          3. キーの先行入力をしない方法としてはたぶん
            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に戻す考慮が必要なことに注意ですね。
            さもなくばおそらく永遠にキー入力ができなくなります。(^^;ゞ

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください