プチコンmk2で漢字表示 | GRSのブログ

GRSのブログ

スペハリ / プチコンmkII

プチコンmk2ではじめて作ったのが漢字表示プログラムでした。
ファイルメーカぽいデータベースが作りたかったんです

既に美咲フォント(GRP版)と(SPU版)が存在していたのですが、
GRP?SPU?何それ? DLしても使い方すら解らなず仕方がないので
自作しました。

美咲フォントは8x8ドットなので流石に潰れて読めない
16x16ドットでは画面の小さなプチコンでは表示文字数がキツイので
12x12ドットで設計しています。

プチコンが良くわかんなかったので漢字のイメージデータを全てDATA分に
落とし込み RESTORE命令とREAD文で該当データを呼び出す方式を採用。

プチコンmk2の制約上
・行番号は9999行までなのでDATAは半分ぐらいに納める
・イメージデータを文字列で圧縮すると展開に時間が掛かるので数字にする
・1行の上限が100文字なので漢字1文字に4行必要(ラベル含む)

▲1秒間に77文字表示(スクロール処理込み)

気持ち的には300文字/秒表示して欲しかったんだけど (^^;)
未だに美咲フォント使ってないんだけどどれぐらいの表示速度かな?

但し、フォントデータをDATA文で内包しているので4,000行程食いつぶして
更に、 PRINT FREEMEM は 478 しか残っていません。
プチコン起動時には 1024 なので半分以上消費しています。

この後、
・ファイルを保存するたびにダイアログがでる
・配列変数のアクセスが想像より遅い
・ファイルアクセス命令がない
・GRPのアクセスが想像より遅すぎる
等々で頓挫していました。


プチコンも少しはわかってきたのとプチコン3号に向けて
再度、漢字表示プログラムを手直ししてみました。

改善点
①漢字データをDATA文で内包するとプログラム毎に4,000行消費するので分離する。
②メインメモリの消費を抑える
③高速化したい
④S-JISの文字コードに合わせる

▲今回作った漢字表示プログラム

下画面のカラフルな画像が漢字イメージです。1,300文字が格納されています。
これで①の問題は解決されました。プログラムのダイエットは成功です
ロード時間も従来は2秒だったのが一瞬です。
下方のドットは④のS-JISと漢字データの格納位置テーブルで起動時に配列変数に
登録されます。
②の FREEMEM は 1020 なので殆ど消費していません
問題なのは③の案件で… 実行速度は 36文字/秒 と、前回より激しく遅い (T^T)
前回はスクロール処理込みで77文字/秒なので開いた口が塞がらん…

作る前から想像はしてたんだけど予想以上に遅かった
プチコンの欠点であるGRPと配列変数のアクセス速度が足を引っ張りました

マシン語でメモリを直接アクセスできればな~
これ系のプログラムは単純にデータを転送してるだけなんでBASICで回りくどく
変換しまくってるのでプログラム的にも速度的にも限界があります。
以前のブログで『プチコン3号(仮称)の前に プチコンmkII(改)を!』を
書いたときはこの辺の苦い経験からの魂の叫びだったんです。
高速メモリアクセス…マシン語みたいに超高速に扱えないかな~
因みにBASICでは論理演算系は全然速くならないです。
あれはCPU直結のマシン語で記述しないと全く効果ないです。
昔の雑誌で『論理演算を使え』って口癖のように言っていたけど
マシンゴデカケバイイノニと見てて笑っていました。
要はマシン語的記述を無理してBASICに置き換えて速くも成らないのに
強要しているのが滑稽だったんですね

愚痴が入りましたが、

今回は3号に向けての下準備だったので問題ないです。
速度は遅いけど操作性や扱いやすさは良くなったので
3号ではこれらアクセスの遅さが解消されれば一気に解決なので
期待しています。 :*:・( ̄∀ ̄)・:*: