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種類を作って楽しみたいと思います^^

スポンサーリンク

「S1-CP/M80 移植作戦 その26 BIOSの作成10^^」への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になるのではと思っているのですが。

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

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

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

コメントを残す

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

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