ZAURUSパソコン化計画

最小のコンピュータ ZAURUS


Zaddin/Zlink が v1.42 になりました。UNIX-WS など速いマシンでは 転送がうまくいかない場合があるバグ修正。是非入れ換えて下さい。 zaddin142.tar.gz
ZAURUS の Addin はなぜ遅いのか

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 SHell

ZAURUS で動かせるプログラムは、実は BASIC だけに限りません。 パソコンと全く同じように、直接 CPU が実行できるバイナリ形式の プログラムも、本当は動かすことができるのです。

ZAURUS に搭載されている CPU は SHARP 系ポケコンに使われている CPU の超高速版(実測でPC-E500の3倍速)で、命令や機能は同じです。 幸いにしてポケコンのインストラクションセットの資料はすべて公開 されているため、ZAURUS でもそのまま利用することができます。 また ZAURUS 本体の ROM に搭載されている BIOS も、かなりのレベルで ポケコンと互換性があります。

そしてなにより、すでに ZAURUS の内部構造やワークエリア、 ハードウエアのコントロール方法など、驚くべきことに解析されてい る方々がいらっしゃいます。

それらの情報をもとに作成したのがこの ZauSHell です。 一言でいえば、ZAURUS 上で DOS のようなプロンプトの出る コマンドシェル環境を作ってしまおうという代物。 実行バイナリはすべて機械語に変換されているため動作は高速です。

ZAURUS 本体で、DOS(モドキ)が動く!?汎用テキストエディタもあるので、 本体だけで Addin BASIC を作ってしまうこともできます。

ZauSHell v1.30 の説明

以下、バイナリ

上記バイナリはバージョンアップ更新が遅れる場合があります。最新版が 欲しい場合は以下のページから探して下さい。PI-4500 用(一部)もこち らです

自作プログラムボックス

ZauSHell 関連プログラムの作成においては、 加古英児さん、 にいろいろと解析データの情報やアドバイスをいた だきました。どうもありがとうございました。


今明かされる ZAURUS パソコン化計画の真実

ZauSHell って本当にすごいのでしょうか?

わかる人ならかなり驚いてもらえるはずです。 ZAURUS でシューティングゲームだって 高速に動いてしまうのですから、ぜひ動かして、これを知 らない ZAURUS ユーザーに自慢しましょう。

しかし、ZauSHell の本当の意義は、ZauSHell ではなく、実はその開発 環境の方にあります。

というのも、ZauSHell およびそのコマンド類は、すべて C言語で記述され ています。このコンパイラは X680x0 上で動くクロスコンパイラであり、 ZAURUS で実行できるバイナリを出力します。標準的な C言語の関数も ライブラリとしてそろっていて、極めて簡単に ZAURUS のプログラムを、 組むことができるのです。

このコンパイラを作ったのは1996年の2月。ZauSHell の登場と全く同 じ時期なのは、もともと SCOOT-C コンパイラを作っていて、その動作 テストのためのバイナリローダーとして作ったのが ZauSHell だから です。

ZAURUS の Addin プログラムを、BASIC ではなく互換性の高い C言語で作ることができてしまう。しかも出力されるバイナリは、高速 に実行できるマシン語プログラムですから、まさに夢のような プログラム開発環境といえます。



X680x0/UNIX 用のザウルス転送、リンク、Addin ローダー Ko-Window用手書きメモローダー、セーバー、コンバータ、 などなど、関連プログラムは 自作プログラムボックス にあります。以下、その一覧。


素朴な疑問のコーナー

RAM 1M byte 以上のZAURUSはどうしてメモリが A/B に分かれているの?
わかりません。どうしてでしょう。 ZAURUS のメモリ空間は 20bit、1Mbyte 分あり、また ZAURUS 内部の OS(FCS) では、16Mbyte のサイズのファイル まで扱うことができます。 おそらく、ZAURUS 内部のメモリ管理の都合によるものではな いかと思います。ZAURUS のメモリは RAMDISK のように アクセスできるわけですが、実際はメモリスロットという 呼び方をされることがあります。 これは純粋に DISK イメージを RAM 上に持たせたものではな くて、パソコンの OS のようなメモリ管理を行っています。 (実はあまりよくわかっていないのですが、os で malloc した メモリブロックがファイルとしてもアクセスできる感じでしょ うか?) そのため1つのメモリスロットは連続したメモリ空間になければ なりません。メモリ空間は1Mbyteあるとはいっても、 実際は I/O 空間も必要ですし、OS や BIOS の載る ROM 空間、 スタックやワークエリアの用のメモリもあります。 よって、それらと同居するために 512K byte 分を1つの区切りの単位として、メモリスロットを 2つに分けて管理しているのではないかと思われます。 あくまで想像です。
ZAURUS に載っている CPU は?
ポケコン時代のチップの名前から、 一般に SC62015 と呼ばれているものです。正式には ESR-L という名前だそうです。SHARP オリジナルです。 かなりBCDによる実数演算を意識した構成のCPUで、 常にパワーをセーブする省電力な設計にもなっています。 このことから、もともと電池駆動の SHARP のポケコンや 関数電卓等での使用を考慮していると思われます。 8bit CPU ですが、汎用ポインタレジスタは全部 20bit サイズで、 内部のアドレス管理も全部 20bit で行われています。 つまりメモリ空間は 1Mbyte あり、バンク切り替えや セグメントなしに、1Mbyte のエリアをダイレクトにア クセスすることができます。 また、手書き文字認識専用に Z80 も搭載され、 ツイン CPU で動作しているとのことです。 (某ゲーム機風でいえば 16bit 級?) 徹底した省電力設計で、使わない時は CPU は休んで止 まっています。
ZAURUS に載っている ROM 容量はどれくらい?
全くわかりません。RAM 容量ならカタログに記載されていま すが、ROM 容量に至っては、全く見当もつきません。 一体どれだけ積まれているのか、とにかく厖大な量なことだ けは確かです。 例えば PI-3000 や PI-4000 に搭載されていた辞書機能は、 もともと DB-Z 用にも IC カードとして単体で 発売されていました。 その IC カードを調べてみると、 英和・和英辞書カードは 24Mbit(3Mbyte)、国語辞典カード は 12Mbit(1.5Mbyte) の容量であると書かれています。 ZAURUS はこの両方のカードの機能を内蔵しており、 辞書機能だけでもすでに約 4.5Mbyte のメモリが載っている ことになるわけです。しかし ZAURUS 全体の機能からすれば、 これもまだまだほんの一部。 本当に、全部合わせると、一体どれだけの容量になるのでしょう。

ZAURUS の ミニミニ資料

PI-3000
初代ザウルス。私が買ったのもこれ。でも保証期間が 切れたあとで壊れた(基盤交換で2万円かかるっていわれた)。 本体メモリ 288Kbyte、唯一ボディがコーティングのない プラスティックのままつるつる(結構好きだった)。 色はのちの機種のブラックとは違ってグレー。
PI-4000
ザウルスの改良版。メモリが 544Kbyte に増えた。 速度もアップ。以後 5000までは、メモリがほぼ倍々で増加。ボディがブラック になって、蓋を止める部分が改良された。そのため PI-3000より ほんのわずかに本体に出っ張りが増えた。 インクワープロ機能、FAX機能がついた。
PI-5000
アクセスザウルスと名前も変更。ボディデザインは 若干大きくなった。ZAURUSネット機能により、FAX だけでなく modem も使用可能。Addin 機能がついて プログラムも作成できるようになった。本体メモリは とうとう 1Mbyte に。値段もアップ。辞書も変更。
PI-4500
PI-5000がかなり高くなったので、メモリを PI-4000 と同じ 544Kbyte にして値段を下げたバージョン。 Addin 機能も持っているが、メモリが少なく何かと制限が多い。 メモリ量以外は基本的に 5000と同じ。
PI-6000
サイズがコンパクトになって、手書き文字認識 機能がバージョンアップした。パソコンビュアなど さらに本体に搭載されているアプリケーションが増えた。 その他、スケジュール手書きメモなど細かなバージョンアップも 多い。 5000にくらべて大きな変更がないように見えるが、値段が 下がってサイズがコンパクトになったというだけでも十分過ぎる 改良点。私の今のお気に入りのマシン。 メモリは 1Mbyte。
PI-7000
つい最近登場した。6000ユーザーの私の幸せの期間もここまでか。 めだまは FAX/modem 内蔵と2Mbyte のフラッシュメモリ搭載。 サイズは 6000 と同じで、周辺装置をさらに内蔵したもの。 そのかわり、SHARP の電子手帳から続く 特徴のひとつであったIC カードスロットが消えてしまった。 今後のソフトウエアバージョンアップは IC カードではなく Addin で行われるということなのだろうか。 とっても魅力的だ・・しかしまだ高い。
PI-6500
PI-6000のマイナーチェンジで安くなった奴。 機能的違いはソフト的なものがほとんど。 PI-7000での改良を取り入れたPI-6000なので、おそらく ようするに PI-6000 の ROM 違いだよね。 きっとそうだそうに違いない(PI-6000ユーザーのひがみの声)

関連するザウルスページ ■Indexに戻る
作者・著者について
小笠原博之(COR.) oga@dgw.yz.yamagata-u.ac.jp