標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第553回]

●温故知新

ここのところ、Z80BASICについて説明をしております。
ここ何回かはZ80BASICの三角関数について説明をいたしました。

Z80版TK80ボードND80ZVを使って、なんと三角関数、それもEXCELなみの倍精度演算ができるのですよお。
といったふうの説明を展開しております。

むむ。
確かにすごいことは認める。
しかし。
Windows全盛の、このご時世にだな。
いまさら8ビットで三角関数を計算させて、いったい何になる?

単なる懐古趣味、アナクロニズムというやつではないか?

あるいは、そのようにお感じの方もみえるかと思います。
いや、そういうお方のほうが多いのかも。

なにも今更苦労して8ビットで技術演算のプログラムなど書かずとも、最新のWindowsパソコンで、いくらでもすごいプログラムが作れるではないか。

いや、ごもっともです。

しかしですねえ。
そういうことではない、と思うのですよねえ。

私のような、年寄りから見ていますと、今の若い方たちは、どうも危なっかしくて見てられない、という気がいたします。
基礎、といいますか、ものの道理とか、原理、ものの成り立ち、といったことが全く無視されてしまって、いきなりパソコンだの応用ソフトだの、というあたりに突っ込んでしまうようですけれど。
それで、ほんとに大丈夫なのでしょうかねえ。

もちろん、Windowsの上でも、Z80のエミュレータソフトなんてものも多分あるでしょうから、今更わざわざTK80クラスのボードを組み立てて、そこで8ビットのソフトを走らせてみなくても、パソコンの上でいくらでも擬似体験をすることは可能なのですよね。

ですけれど。

いくら3D映像が発達したって、ゲームコーナーのカーゲームや自動車学校の運転シミュレータと、たとえポンコツだって、ホンモノの自動車をホンモノの一般道路で運転するのとでは、緊張感が全然違いますでしょう。

パソコンの上のエミュレータやシミュレータで、Z80の真似事をさせてみて、「ホラ、8ビットでも三角関数を計算させることができるんですよ」って言ってみたって、「ふうん。そうなの」で終わってしまいますでしょう。たぶん。
おそらく、何の感動もありませんでしょう。

そこなのですよ。
Z80版TK80ボード、これは正真正銘、その昔のワンボードマイコンとほとんどそのままの機能しかもっていません。
ただ、メモリが大きくなって、パソコンとの通信機能が追加されているだけ、です。
基本的には、その昔。一世を風靡した、TK80そのままです。

当時、TK80を手にしたほとんどの方が、これでどんなプログラムを動かしてみたのでしょう?
たかだか簡単なゲームプログラムを走らせてみるとか、あるいはマシン語でI/O回路のコントロールをしてみる、といった使い道がほとんどだったのではありませんでしょうか?
ただ、おそらく、ひと握りの人達は、これでも、ソフトさえ工夫すれば、すごいことができる、と、そう考えたに違いありません。

いや、今、この種のボードを手にしても、それでとりあえずしてみることは、当時とそれほど変わらないことでしょう。
間違い無く、目の前にあるのは、当時と同じ、たかだか8ビットかせいぜい16ビットの加減算しかできない、いまではCPUとよぶのもはばかられるような、低機能なチップを搭載したワンボードマイコンなのですから。

しかし。
現実に、今目の前にある、この原始的なボードが、複雑で高精度な浮動小数点演算を、確かに、やってみせてくれるのです。
それこそ、ホンモノの感動、なのではありませんでしょうか。

じつは。
ますます複雑高機能になっていくばかりのWindowsだって、あるいはGHzで動作する最新のIntel CPUだって、つまるところ、その一番低い階層では、Z80と同じ程度の2進数コードでの処理を行っているのです。
でも、進化してしまったパソコンでは、そのことを想像することすら困難でしょう。
どんなに高度なアプリケーションソフトでも、結局は、マシン語に翻訳され、2進数コードで実行されているに過ぎない、などということは、おそらくほとんどのパソコンユーザーの、それこそ、思いもよらないこと、なのではありませんでしょうか。

まあ、せいぜいインターネットを利用してなにかをするとか、ワープロの代用かメールのやりとりをするとかといった程度の一般ユーザーでしたならば、それで全く構いませんけれど。

たとえば。
技術系の学校に学ぶ方々とか。
あるいはコンピュータソフトウェア、ハードウェアのプロ、アマたらんと目論んでみえる方々。
まあ、そこまでは思いつめてはいないけれど、せめて趣味としてエレクトロニクスの世界の空気を吸っていたいとお考えの方々。
そういった方々には、ぜひとも、私達がその昔、ワンボードマイコンの黎明期に味わった感動を、同じように体感していただきたいものだと、思います。

あの。
なぜだかは、謎なのだそうでありますが。
私達人間は太古の昔、単細胞の生物から始まって、気の遠くなるほどの年月をかけて、ここまで進化してきたのでありますが。
それでも母親の胎内にある、わずか10ヶ月の間に、その進化の過程を超特急で体験してから、生まれてくるのだそうですねえ。

なぜ、なのでしょうかねえ。
そんな、無駄なことは、省いてしまって、進化したところから発生すれば、より早く進化できる、と思うのでありますが。

ニュートンもアインシュタインもエジソンも、みんな単細胞から発生して、そしてみんな幼児から小学校、中学校という学習の過程を経て、成長したのですよねえ。
わかりませんけれど。たぶん。

そのように、ゼロから基礎を学びつつ成長していかなければならないという、何か、原則といいますか、そうしなければならないぞ、という何かがあるような気がします。

してみると。
トランジスタもICも、あるいは2進数もマシン語も全く理解されていらっしゃらないという、コンピュータ技術者様とか、ソフトウェア開発者様とかが、もしいらっしゃいましたら…。
そういうことで、ほんとうに、いいのかなあ。

え?
ああ。そうですか。
ミュータント様で、いらっしゃいましたか。それは、それは。

むむ。
なんだか、つい脱線してしまいました。
いつものZ80BASICの紹介にもどります。
あ。今回はBASICではなくて、C++で作ったDOSプロンプトで動作しているスクリーンエディタのソフトウェアについてのお話です。

●ページモード

スクリーンエディタについては、すでに何回か説明をいたしました。
DOSプロンプト画面に表示されているどこにでも[←][↓][↑][→]キーを使ってカーソルを移動して、そこで[Enter]キーを押すと、その行に表示されている文字列が、キーボードから入力されたのと同じように、入力データとして扱われる、という機能です。

実は、Z80BASICのパソコン側のこのソフトには、スクリーンエディタとは別の、もうひとつの大きな機能があるのです。
ページモード機能です。

下の画面を見てください。

これは[第550回]で説明をしました、倍精度三角関数のサンプルプログラムの実行画面です。

実行結果の表示行数が多いので、肝心の計算結果のほとんどは画面の上にスクロールされてしまって、結果を確認することができません。
もちろん、ここでZ80BASICを終了して、あらためてログファイルを確認してみる、という方法はあるのですけれど。

なんとか、上にスクロールして見えなくなってしまったものを、もう一度下に戻してみたいなあ、という気になります。
そういうときに、お役立ちなのが、ページモードなのです。

上の画面で、[Page Up]キーを押しますと。
こうなります。

画面の最下行に[Page mode]と表示されました。
よく見ますと、画面の一番上に、一行ですけれど、スクロールアップして消えてしまっていた行が復活して表示されています。
ちょうど画面全体が1枚のロールになったページのようなイメージになっていて、[Page Up]キーを押すたびに、そのページが巻き戻されて表示されるのです。
これもスクリーンエディタと同じで、ごく普通のC++の関数を使って、プログラムを書きました。
ええ。
WinAPIなどは使っておりません。
自画自賛ですけれど、ちょいとすごい、と思っていただけますでしょうか。

もう一度[Page Up]キーを押しました。

さらに1行、表示が戻りました。

[Page Up]キーを押し続けて、結果の表示が始まったところまで、表示を戻してみました。


逆に[Page Down]キーを押すと、通常のスクロールと同じ向きに表示が進みます。

上に行くのも、下に行くのも、自由自在です。

[Page Down]キーを表示が止まるまで押し続けるか、[End]キーを押すと、最初に[Page Up]キーを押す直前の画面表示に戻ります。

通常の画面表示に戻りますから、[page mode]の表示も無くなります。

2010.7.15upload

前へ
次へ
ホームページトップへ戻る