ファースト・マン

Inside MACINTOSH

 Macintosh本体(iMac,MacBookなど含む)は、昔から今に至るまで、興味がない。

 それでもOSと開発言語は気になる存在だった。LisaOSのソースコードが2018年以降に公開される記事がある。公開されているソースコードを見ても英語なのでよく解らないだろう。

 忘れていたのは、OSがPascal言語で記述されていたことだ。書籍にアルゴリズムの説明でPascal言語が記述されていたのはあったが、

OSがPascalで記述されている解説した本はなかった。そのことがあり、Pascal言語を知りたくなった。

 Inside Macintoshを古本で購入した。

書かれている内容が丁寧で、このマニュアル本にすっかり惹き込まれた。そこにあったのは、Lisaアーキテクチャのことが書かれている。

 


 LisaOSとは関係なく、昔のMacintoshを購入しようと思った。

インターネットのオークションで出品数も多く、価格もそんなに高くない(のもある)。

そしてOSもあり入手はできる。
 後はコンパイラだけあれば良いが、手に入りそうもない。

古いMacのアプリですることはないから、購入しても本体とOSだけでは何もしないだろう。

探してみた。海外のサイトにあった。それもTHINK PASCALとTHINK Cの2つだ。

Symantec C++もある。MPWもそうだが、Lightspeedがあるから驚いた。

これで開発環境も入手できて、試してみることができる。

でも、落ち着いて取り組むことができない。古い技術なので、気持ちがのらない。

 考え方を変えてみよう。譬えるならマンガとか映画などである設定。

世界に数冊しか存在しない本があり、その内の一冊でも手に入れると不幸になる。

それでも全てを揃えると、何かが起こる。そのため犠牲があっても蒐集に躍起になる。

映画などで出る稀覯本はサイズが大きくてA3縦ぐらいの本になっている。もっと大きいだろうか。

Inside Macintoshは、大型本だから余計にそう感じる。サイズが大きいけど本屋にも置いてあったと思う。

この大きい本はどう陳列していたか憶いだせない。

 映画の設定は、ミステリーなので謎解きを1つ1つしていかなければならない。

さて、Inside Macintoshの謎解きは、どのようにしていこうか。

 

 Macintoshのイベントの処理。

ディスパッチのループをまず作成して、ボタンなどのイベントを受け付けるなど"振舞い"を記述していく。

Macintoshはどう実装しているのか興味があった。

 自分の開発経験がある初期のウィンドウシステムは、X Window System、Windows 3.1 で、ウィンドウシステムの比較対象はこの2つになる。

ところでスティーヴ・ジョブス氏が激怒したのは、ルックアンドフィール(見た目)とか操作性を真似されたことでなく、ウィンドウマネージャなどの中身の方だったのではと思う。

「まるで理解していない。」後発の方が、良くない。

InsideMacintoshの内容はアーキテクチャに一貫性がある。

ちゃんとシステムデザインを考えていた。

 

Toolbox - ウィンドウマネージャ - リソースマネージャ - ・・・・・

 Macintosh Toolbox

  QuickDraw Winow Manager Dialog Manager Control Manager

  Menu Manager Event Manager TextEdit Resource Manager

  Finder Interface Scrap Manager Standard File Package 

         Help Manager  List Manager Sound Manager Sound Input Manager

  Macintosh Operating System

  Process Manager Memory Manager Virtual Memory Manager 

  File Manager Alias Manager Disk InitializationManager

     Device Manager  SCSI Manager Time Manager

     Virtual Retrace Manager  Shutdown Manager 

 

Inside Macintoshは、ウィンドウシステムの原典だ。                             

                               

                           

                               

                               

                               

                              

                               

 

メモリマネージャ

 『アプリケーションの起動後しばらく経過すると、ヒープは配置されたブロックと未使用ブロックに分かれてパッチワークのように分断されます。

この状態をヒープフラグメントと言います。Memory Managerは配置されたブロックをまとめて移動させることにより必要なスペースを確保し未使用のスペースはひとつの大きなブロックにまとめられます。』

 ドキュメントの記述をそのまま書き写したのは、わざとで現在(いま)のPCで全く同じことがされているのは技術の進歩をしていない。

搭載できるメモリ容量も小さくて、メモリアクセス速度も低いPCならばそういう技をもってメモリ管理をする理由になるだろう。

メモリサイズも速度も大きく向上しても、していることはスタックとヒープだけで、相変わらずメモリも虫食い状態がどうのこうのと言われる。

 

ウインドゥマネージャ

 開発者のコメントで、ウィンドゥのドラッグとか重なりを実現するのが難しかった。たぶん、「レボリューション・イン・ザ・バレー」だったと思う。アセンブラでライブラリを作ることだったようだ。(あの人が、なんのかんのと言ったらしい。)

れをToolboxに組み込むことで、ウインドゥの開発ができるようにしたのはすごい。

 ドキュメントの記述

 『ユーザーがウインドゥのドラッグ領域をクリックすると、DoMouseDownはリスト6-8で定義したアプリケーションのルーチンDoDragを呼び出します。手続きDoDragは、ウインドゥの輪郭線を表示するWindow Managerの手続きDrawWindowを呼び出し、ユーザがそのウインドゥをドラッグする間は輪郭線を移動させ、ユーザがマウスボタンを離した時点でMoveWindowを呼び出してウインドゥを新規の位置に描画します。』

 リスト6-8

 PROCEDURE DoDrag (myWindow: WindowPtr; mouseloc: Point);

   VAR

   dragBounds: Rect;

 BEGIN

  dragBounds := GetGrayRgn^^.rgnBBox;

  DragWindow(myWindow, mouseloc, dragBounds);

 END;

 

イベントマネージャ

 『event queueはFIFOリストであり、eventは入れた順にqueueから取り出されます。ただし、各種のeventの生成や検出方法の違いによりevent間に優先順位が生じます。event queueに格納できるeventは通常20個までです。queueが一杯になると、Operating system Event managerは、古いeventを破棄して新しいeventのための空間をつくります。廃棄されるeventは、常にqueueの中の最も古いeventです。』

 

 印象的なことをいくつか取り出してみた。

全体を通して、現在のOSとウィンドウシステムとの違いがない。

こんなに年月が経ているのに、何も変わらないのがおかしい。

 

 購入したのは、Quadora700だ。

本体価格で、1992年発売当時は110万から120万ぐらいだったろうか。

中古で購入したが、メモリ20MBでハードディスクは1GBになっている。

元のオーナーが購入した後にメモリも増設しHDも交換したと思う。

当たり前のように、1366x768のモニターに接続したけど、この解像度で256色する。
 当時、自分が所有していたPCは、MS-DOSでTurbo Pascal 4096色中16色

Turbo Pascal/Turbo Cなどで、画面アプリを製ったところで同時代のMacintoshからすれば、稚拙なものだった。

Turbo Pascalで複雑なグラフィック処理をしているのはあった。

そこまで使いこなすととはなかったけど、Macintoshもどきという意味で、イベントループをつくってメニューをクリックして・・など

イベントドリブン(イベント駆動)のアプリケーションがわかる勉強にはなった。なにせ、Macintoshは高価だった。

 InsideMacintoshとmacintosh本体は、どちらも中古で購入したけど大切に使われていたのだろうと感じる。

全然使っていないことでなく、使用感はあるがきれいに感じる。

 

日々、当たり前のように使っている有名製品のOfficeスイートよりも

ずっと昔にすでに存在していたLisaシリーズのカタログ。