Mobileその他」カテゴリーアーカイブ

BASICコンパイラと手書き原稿の時代

久しぶりに思い出したのは、昔作った BASIC コンパイラが欲しいとのメールを
いただいたからです。雑誌に掲載されたのが 1989年なので 20年くらい前になります。

コンパイラといっても、当時の SHARP ポケットコンピュータ PC-1261/62 用に
見よう見まねで作ったもの。
名前は「 LC-3 コンパイラ 」といいますが、今検索で引っかかる
LC-3 compiler とは名称が同じだけで別物です。

なにせ RAM も 10.4KB と小さく、外部記憶装置はカセットテープしかありません。
そのかわり RAM はバッテリーバックアップされており、電源を切っても中身が
消えずに保持されます。

BASIC プログラムは中間コードでメモリに格納されています。それを読み出して
機械語に置き換えるわけです。エディタと字句解析に BASIC を使っているだけなので、
中間コードやキーワードを流用しつつも構文や命令は独自で完全互換ではありません。
知識も無かったので本当に単純なものでした。
その代わりメモリ容量との戦いがあります。一晩考え抜いて 1byte 削っては喜んで、
といった感じに。

資料がないので記憶だけですが、中間コードのソース領域が 3KB くらい、コンパイラ
本体が 2.0KB、ランタイムルーチンが 1.5KB、変換後のバイナリが 3KB くらいの割り
当てだったと思います。

一式全部オンメモリで動作するので、一度入力すればカセットデッキが無くても
プログラムを書けるし、そのまま動作もデバッグもできるのが特徴です。

当時すでにポケコン向けの BASIC コンパイラはいくつか発表されていました。
PiO の「ポケコンパイラ」や The BASIC のコンパイラ(正式名称失念)など。
さらにメモリが少ない RAM 4.2KB PC-1251 で動作しており、どれも出たときは
かなりすごいと思ったものです。

生成コードが洗練されていなくても BASIC インタプリタと比べるとかなり高速に
動作しました。たとえばポケコンの BASIC は整数型が無く、全部 BCD の 10進数演算が
使われています。変数 1つで 8byte。今だと double と同サイズですがポケコンでは
これでも単精度です。2進化の誤差も発生しない代わりに、ただのループ変数の
インクリメントすら決して高速とはいえません。
コンパイラが生成するコードは 1byte 整数型を使用するので、出来ることは減るけど
高速です。

LC-3 は後発なのでさまざまな改良点があります。
その 1つが出力コードの最適化。中でも CPU の内 RAM を変数に割り当てたことで
高速化とともに生成コードの縮小化が出来ました。
もう 1つは用途を考えてゲーム向きの命令を用意したこと。

実際に作ったのはおそらく 1987年頃。1988年に掲載された Kind-1 などの一連の
ゲームも、最初 LC-3 上で作っていたからです。
コンパイラ自体が雑誌に未掲載だったため、投稿前にマシン語で書き直しました。

ネットが無い時代なので何らかの情報入手も雑誌が頼りでした。
プログラムの入手も誌面を埋め尽くすダンプリストを見ながら手打ちです。

投稿も同様、ワープロもなくて原稿用紙に手書きです。
プログラムの説明や入力方法、使い方、メモリマップやワークエリア等を原稿用紙に
手で書いて、カセットテープと一緒に郵送します。
だから 8bit パソコン時代のプログラムはデジタルデータとして手元に残って
いないのです。

もしあるなら web ページとかに掲載できるのですが、プログラムの保存方法は紙に
印字するかカセットテープだけ。
CE-125 は感熱紙なので消えているかもしれないし、仮にテープから読めても
通信機能がないので PC に転送する手段がありません。
手書きの資料はまだ残ってると思いますが、雑誌を探した方が確実な気がしてきました。

雑誌は投稿しても必ず掲載されるわけではありません。
だいたい半数くらいは没で、初期の頃はもっとたくさん。
投稿した原稿のコピーも全く無いので失われているものは結構多いのかもしれません。

便利な環境に慣れすぎたので、原稿用紙に文字数を数えながら清書するなんてたぶん
もう出来ないでしょう。送っても結果が出るまで何ヶ月もかかります。

今なら文章も簡単に書けるし編集可能だし、紙を媒体にする必要もありません。
ネットにはすぐ反映されるし、おそらく一度デジタル化したデータは簡単に失われたり
読めなくなったりすることもないでしょう。複製も容易に取っておけます。
手で打ち込み直す必要もないし配布も入手も簡単です。

そのときは全く考えもしなかったけどいろいろなことが不便でした。
配信、バックアップのための複製、転送、蓄積など。
紙や印刷の登場以前と以後といったら大げさかもしれませんが、コンピュータの
ネットワーク化とデータのデジタル化は、同じように生活を変えたのかもしれません。

UQ WiMAX 申し込み

すでにモニターテストの受付が始まっていますが、エリア外の人も直接電話で
申し込めば端末を購入することができます。
ユーザーサポートセンターに問い合わせるも混雑してるようでなかなかつながらず、
何度か待たされつつ申込書の送付を頼むことが出来ました。

UQ WiMAX

気になっていたのはこの部分。モニター募集のところに

>発送: 2009年2月26日(木)~2009年3月中旬にかけてデータ通信カードを順次
>発送いたします。

発送が 3月中旬までかかると書いてあります。

念のためきいてみると、購入者には優先して発送するので大丈夫だそうです。
ただしサービス開始の 2/26 必着にはならず、26 日以降に発送するため数日は
余裕を見てくださいとのことでした。

28年前のモバイル PC-1211 他

片付けものをしていたらいろいろ出てきました。

Pocket Computer

左上から順に

一列目
 ・1980 SHARP PC-1211  元祖 BASIC 搭載ポケコン。RAM 2KByte
 ・1997 SHARP MI-110M  PowerZaurus のモノクロ版、モデム内蔵

二列目
 ・1999 SHARP MI-C1  バックライトもフロントライトも無い反射型カラー液晶
 ・1999 SHARP MI-P2  MI-110 の安くなったもの
 ・2008 HTC TouchDiamond S21HT ( WindowsMobile6.1 )

三列目
 ・2000 CASIO G-FORT ( PocketPC2000 / mips ) 借り物
 ・2001 HP(Compaq) iPAQ h3630 ( PocketPC2002 )
 ・2003 HP iPAQ h2210 ( PocketPC2003 )
 ・2007 SHARP EM・ONE S01SH2 ( WindowsMobile6.0 )

PC-1245/1262/1501/1480U, PI-6000/8000, PA-8500/X1/9550
あたりもきっとどっかに埋まっています。

この PC-1211 は知人から譲り受けたものです。
液晶漏れがあるものの電池を入れ替えたら動きました。
調べたら 1980年の発売らしいので、28年も前になります。

BASIC は非常に低速。メモリはおそらく 2KByte。BASIC 領域として 1424step。
LCD は 5x7dot x 24文字ですが、その後の PC-1251~ と違ってゼロ にスラッシュが
無く オー にダシュ付き。フォントは大文字と記号のみです。

性能が限られているとはいえ、RAM もバッテリーバックアップで
電源を入れるだけですぐ使えるモバイルコンピュータは当時から使われていました。

Pocket Computer PC-1211/1417G

↑上が PC-1417G、下が PC-1211

Pocket Computer PC-1211

↑PC-1211 の電池交換時に撮った写真。バックアップ用電池含めて LR44 ×4

この当時一番使い込んだのは、PC-1211/1251/1501 の後に出た PC-1245 と PC-1262。
PC-1245 は画面が 5×7 ドット × 16桁しかなく RAM も 2KByte (1486step) でした。
カタログには 2.2KByte と書かれていますが、このうち 0.2KByte は VRAM を指しています。
VRAM とはいえ演算時には LCD を Off にして BASIC の演算スタックとして使用。

当時のポケコンは関数電卓の系列にあったので、数値演算は BCD 10進数です。
変数や数値 1つが 8byte 消費していたので、当時としては VRAM の 0.2KByte ですら
貴重だったのでしょう。

画面は 1行だけですが、上下スクロールできるスクリーンエディタと電源を切っても
消えないメモリのおかげで使いやすかったです。

PC-1211 は 4bit CPU で、BASIC しか実行できず動作も低速でした。
PC-1250/51 以降は 8bit CPU で、隠しコマンド (CALL,POKE,PEEK) によりマシン語の
実行が可能となっています。
マシン語自体は非公開でしたが、それを自力で解析した方がいて雑誌で話題となりました。
たしか雑誌は The BASIC。
マシン語が使えるようになったことで低速な BASIC から解放され、LCD のドットを駆使したゲームや
サウンドの演奏、通信などさまざまなプログラムを作れるようになりました。

この CPU は SC61860 と呼ばれて、その後ポケコンや電子手帳 PA-7000 等にも使われています。
BCD 演算命令を持っている代わりに割り込みなどが一切無く、コントローラというよりも
完全に関数電卓向けのようです。

電子手帳用 ICカード

↑SHARP の PA 電子手帳用に発売されていた ICカード (ソフト)
 左右端はサイズ比較用の iPod touch と Touch Diamond。

真ん中の 2枚が SHARP 電子手帳用に発売されていたソフトです。
ファミコンのように ROM カードを入れ替えて任意のソフトを追加できました。
透明なタッチパネルの下に差し込む形で、カードの印刷面をボタンのように操作できます。

ソフトのダウンロード追加ができるようになったのは、PA-9500 の BASIC カードや
ZAURUS PI-5000 のアドオン機能から。

これは昔、家にあったカタログを元に作ったリストです。
シャープ電子手帳の歴史

Zaurus について書くと長くなるので一気に飛んで、
写真では PocketPC ~ WindowsMobile6.1 までそろってます。
WindowsMobile5.0 (PocketPC2005) も写真に含まれてないけど、使ったことがないのは
PocketPC2003SE。

PocketPC (2000) までは ARM 以外の CPU も使われていました。
ARM が主流になったのは(その流れを決定づけたのは)、
圧倒的に速かった iPAQ h3600 StrongARM。

これは今も地道に更新を続けている PocketPC / WindowsMobile 機種一覧。
PocketPC 一覧

PC-1211 は CPU ネイティブアプリが動かないのでその後の PC-1251 で比較すると、
いい加減に無理矢理求めて 2万倍以上、RAM 5万倍くらい、ストレージ 100万倍くらい。
画面解像度は 360倍+カラー。いや速度はもっと差があるはず。
・CPU 8bit 576KHz 4~8cycle → 32bit 528MHz RISC
・RAM 4KB → 192MB / 4KB(RAM兼) → 4GB
・Display 5x7x24 x 1bit → 640×480 x 16bit
これが 26~28年の差というわけです。
バッテリー持続時間だけ減りました。

関連エントリ
20年前のモバイル PC-1417G

Bluetooth キーボード Rboard for Keitai RBK-2000BT2

また 何か届きました。

RBK-2000BT2

折りたためる Bluetooth キーボードです。
リュウド RBK-2000BTII

折りたたんだ時はちょうど EM・ONE (標準バッテリー)と同じくらいの
厚みです。電池込みで実測 209g

RBK-2000BT2

開いたところ。

RBK-2000BT2とEM・ONE

大きさ比べ。

RBK-2000BT2とTK-UP84CP

↓上が FILCO パピヨン

RBK-2000BT2とパピヨン

パピヨンよりもキーが大きく、間に隙間も無いので一般的なキーボードに
近い感覚です。パピヨンと違い数字段にもずれがありません。
キータッチもパンタグラフ式のおかげかストロークがスムーズです。

正式対応しているだけあって EM・ONE とのペアリングも問題なくすぐ
使えました。マニュアル通りです。復帰時も認識に数秒かかりますが、
それ以外は何もせずに使えるようになるのでこれは便利ですね。
WM 端末は外付けキーボード端末として利用しているので、これから
じっくり使い込んでみるつもりです。

キートップの刻印は ASCII(英語)配列ですが日本語キーボードとして
認識されます。もしキーの刻印と入力文字を合わせたい場合、または
ASCII 配列派の方は em1key + asciipatchwm で対応できるかと思います。

em1key
asciipatchwm

自分は普段 JIS 配列で使っているのでこのままで十分そうです。
ただ日本語キーボードとしてみた場合キーが足りないので、
[¥|] と [_] が打てませんでした。
この辺は em1key のカスタマイズで何とかしようと思います。

よくみると左上に小さい [Esc] キーがありますね。
もし無理やり親指シフトで使うとしたら、パピヨン改 と同じように
alt を割り当てる形になるでしょうか。この場合親指がちょっと窮屈な
感じです。

小型 Bluetooth アダプタ Princeton PTM-UBT3S

届きました。
Princeton PTM-UBT3S 1

プリンストンの超小型 Bluetooth アダプタです。
Princeton PTM-UBT3S

確かに小さいです。出っ張り部分は約 8mm。想像よりは出っ張る感じ。
Princeton PTM-UBT3S 2
Princeton PTM-UBT3S 3

早速ドライバを入れて、emobile EM・ONE をペアリングして、
Bluetooth でダイヤルアップできるようになりました。
USB 直結よりは遅くなるけどやっぱり無線は便利です。

あっ
Princeton PTM-UBT3S 4

USB コネクタから引き抜こうとしたら早速壊れました。
せっかくなので裏の写真も。
Princeton PTM-UBT3S 5

コネクタの真裏に基板が収まっていました。

組み立てたら一応動いたようです。
コネクタから引き抜く時はくれぐれもご注意ください。