ZAURUS に Addin 機能が搭載されたのは知ってる方も多いことでしょう。 Addin 機能によって ZAURUS はその機能を自由に拡張することができる ようになりました。
Addin 機能というのは、パソコンでなんらかのソフトを走らせるのと まったく同じです。 外部からアプリケーションプログラムを ZAURUS に与えることで、 ZAURUS の CPU がそのプログラムをアプリケーションとして走らせて いることになります。
しかし、通常 ZAURUS が Addin として走らせているプログラムは BASIC で書かれています。 というのも、Addin 機能付き ZAURUS は本体内にBASIC ROM を搭載 して、メニューからタッチするだけでその BASIC プログラムをロー ドし実行できる。BASIC にそういうインターフェースがぶせてある からです。
この ZAURUS に搭載されている BASIC は極めて高性能です。 SHARP 系のポケットコンピューターで培った動作実績があり、 それがそのまま生かされているので信頼性もあります。 (PC-E500系)を使用したことがある方ならご存知だと思います。 BCD による10進数演算、倍精度20桁の10進数演算、 多彩な数値演算関数、 などなど、関数電卓となんらかわらない強力な計算能力を もっています。 まさに関数電卓が内蔵されているといえるでしょう。
半面、すべての数値演算が BCD の 10進数で行われるため、 この BASIC の演算速度には難があります。 BCD の 10進数というのは、2進化した実数演算ではなく、 10進数のまま実数演算を行うというものです。 基数変換時の誤差が生じないため精度の高い演算ができますが、 処理は重くなります。 よってこの BASIC では変数に整数型がないため、たとえ FOR 〜 NEXT でさえ BCD による実数演算になっています。
一般には、ZAURUS の Addin は遅いものだと思われて しまっているところがあるみたいですが、それはこのような理由が あるのです。
この実数型BASICのもう1つの欠点は、数値がかなりメモリをく うことでしょう。定数や変数は必ず BCD の実数サイズ分(8byte) 以上のメモリを使うため、特に数値で配列変数を使用すると、かなり 大きなメモリが必要になってしまいます。
ZAURUS 搭載の BASIC は、高度な関数演算を持った高精度な 実数型 BASIC であり、実行速度よりも演算精度が最大限重視されてい るわけです。
ZAURUS で動かせるプログラムは、実は BASIC だけに限りません。 パソコンと全く同じように、直接 CPU が実行できるバイナリ形式の プログラムも、本当は動かすことができるのです。
ZAURUS に搭載されている CPU は SHARP 系ポケコンに使われている CPU の超高速版(実測でPC-E500の3倍速)で、命令や機能は同じです。 幸いにしてポケコンのインストラクションセットの資料はすべて公開 されているため、ZAURUS でもそのまま利用することができます。 また ZAURUS 本体の ROM に搭載されている BIOS も、かなりのレベルで ポケコンと互換性があります。
そしてなにより、すでに ZAURUS の内部構造やワークエリア、 ハードウエアのコントロール方法など、驚くべきことに解析されてい る方々がいらっしゃいます。
それらの情報をもとに作成したのがこの ZauSHell です。 一言でいえば、ZAURUS 上で DOS のようなプロンプトの出る コマンドシェル環境を作ってしまおうという代物。 実行バイナリはすべて機械語に変換されているため動作は高速です。
ZAURUS 本体で、DOS(モドキ)が動く!?汎用テキストエディタもあるので、 本体だけで Addin BASIC を作ってしまうこともできます。
以下、バイナリ
ZauSHell 関連プログラムの作成においては、 加古英児さん、 にいろいろと解析データの情報やアドバイスをいた だきました。どうもありがとうございました。
ZauSHell って本当にすごいのでしょうか?
わかる人ならかなり驚いてもらえるはずです。 ZAURUS でシューティングゲームだって 高速に動いてしまうのですから、ぜひ動かして、これを知 らない ZAURUS ユーザーに自慢しましょう。
しかし、ZauSHell の本当の意義は、ZauSHell ではなく、実はその開発 環境の方にあります。
というのも、ZauSHell およびそのコマンド類は、すべて C言語で記述され ています。このコンパイラは X680x0 上で動くクロスコンパイラであり、 ZAURUS で実行できるバイナリを出力します。標準的な C言語の関数も ライブラリとしてそろっていて、極めて簡単に ZAURUS のプログラムを、 組むことができるのです。
このコンパイラを作ったのは1996年の2月。ZauSHell の登場と全く同 じ時期なのは、もともと SCOOT-C コンパイラを作っていて、その動作 テストのためのバイナリローダーとして作ったのが ZauSHell だから です。
ZAURUS の Addin プログラムを、BASIC ではなく互換性の高い C言語で作ることができてしまう。しかも出力されるバイナリは、高速 に実行できるマシン語プログラムですから、まさに夢のような プログラム開発環境といえます。