当時、このベンチマークは、とある地域のPC8801mkIISRユーザとX1turboユーザの間で、PAINT命令の実行速度以上に物議を醸しました。
ここでは、X1turbo、PC-8801mkIIMR、PC-9801DAの結果を載せています。
次の640×200ドットの画面を塗りつぶすだけの、超簡単な内容に見えますが・・・
10 INIT:CLS 4 20 FOR A=0 TO 199 STEP 2 30 LINE(0,A)-(639,A),PSET,1,&H1111 40 LINE(0,A+1)-(639,A+1),PSET,1,&H4444 50 NEXT 60 TIME=0 70 PAINT(319,99),2,1 72 'PAINT(0,0),2,1 '左上から 80 PRINT TIME
LINE命令のラインスタイルを用いて塗りつぶし用の画面を生成します。
CZ-8FB02 V1.0での実行中は次のようになります。
画面中央から、じわじわとPAINT処理が進みます。
ついでに、N88BASIC用です。
10 CLS 3 20 FOR A=0 TO 199 STEP 2 30 LINE(0,A)-(639,A),1,,&H8888 40 LINE(0,A+1)-(639,A+1),1,,&H2222 50 NEXT 60 TIME$="00:00:00" 70 PAINT(319,99),2,1 80 PRINT TIME$
ラインスタイルのビットパターンはHuBASIC逆?時刻を書き換えてるので、遊んだ後は再設定を忘れずに(書き換える前に保存しときゃいいだけですが
まずは、当時はPAINTが遅いと叩かれた初代BASIC、CZ-8FB01 V1.0から。
おっと、これは・・・PAINT処理が遅いだけではなく、完全に塗り残し、エラー終了という悲惨な結末。
そして真打登場、CZ-8FB02 V1.0です。
こちらは全く問題ありません。以上、エミュレータでの結果です。
ここからは、実機でCZ-8FB02 V1.0のPAINTです。結果は、実機でも変わりません。
X1turboではPAINT命令より高速なPAINT@命令もありますが、もっと高速化する裏技があります。
この裏技を仕込むと、PAINTの進行が均等ではなくなります。
そして、10秒以上の高速化に成功しています。
さらに仕込みを強くすると、進行がさらに変化します。
しかし、仕込み過ぎは塗り残しを起こします。
仕込みと言うほどの物ではないのですが、10秒短縮はCLEAR(LIMIT)命令でフリーエリア(PAINT用ワーク)を3KB程度にしています。塗り残しの出たケースでは、フリーエリアが800バイト程度です。
PAINT処理の進行はX1turboと同様です。しかし、残念な結果に。
PAINT処理の進行はX1turboと同様です。流石、フリーエリア600Kバイト超、塗り残し無し。
しかし、どうなんでしょうね、i386 20MHzでこの速度は・・・