Atelier dddo> Env. > Mac > About OldMac(2003.04.28)
かぶら屋さんのサイトのこの記事に刺激されて…
具体的には(ROMとOSの)Toolboxのシステムコールやデータ構造の解説と例題。今では開発言語がC++やObject-Cになってクラスライブラリを使えば、細かい仕組みはあまり気にしなくて済みますが当時は…。Toolboxは最初からかなりオブジェクト指向を意識して作られていましたが、実際に扱うには構造を持ったデータのポインタをレジスタにセットしてシステムコールする必要がありました(^^; ので現在クラスライブラリが隠している部分を紙の仕様書で逐一解説する必要が有った訳です(^^;
元々は「リソース部分」を開発者が作成・編集するための開発ツールという位置付けでしたが、メニューの表記などもリソースに入っており各国版(日本語より先にドイツ語、フランス語など)がプログラム本体に無関係に作れるので無償ツールとしてだんだん広く配付されたようです。
最終版(?)の2.1.3は1994.9.15の日付ですが、OS X 10.2.5で9.2.2によるクラシック環境でも元気に動きます(^^)
MacのプログラムはGUIのために大量(?)のグラフィックデータを持つ必要があります。他方、プログラム本体は至れり尽くせりのToolboxルーチン群のおかげで、プログラム独自の処理部分以外はシステムコールを羅列するだけなので、かなり小さくなります。
Lisaや初期のMacという遅い環境で開発する時に、グラフィックデータをプログラム中に記述すると、コンパイル(アセンブルも)やリンクに時間がかかります。(データだけ別に作ってリンクするだけでも結構な時間が…(^^;) で…重いグラフィックデータと軽いプログラムを分離して開発速度を上げる為に複数のファイルを見掛け上一つに見せる「xxフォーク」という構造を作った…らしい(^^)
Lisaが高価すぎて売れなかった反省の元にメモリの合計量を削減する為、初代Mac〜MacPlusまでは、専用の(高価な)VRAMを持たず、安価なDRAMのメインメモリ上に描画したビットマップデータをCRTのリフレッシュ60Hzに合わせて(1秒間に60回も)読み出して表示する…という構造にして。。。当然通常のDRAMはCPUと同時にはアクセスできないのでCPUにはその都度待ってもらう必要があって…速度の必要な低レベルなルーチンや操作フィーリングに直接響くGUIの描画/応答の処理を、待つ必要のないROMに入れる事で速度低下を避けた…と言う訳で(^^;
Toolboxルーチン群の中で大きな位置を占める描画ルーチン群はQuickDrawと呼ばれ、MacPaintやHyperCardを作ったBill Atkinsonの作品です(^^)
(彼のマシン語による最適化があまり凄かったので、なかなか(というかクラシックOSとしては最後まで(苦笑))全てをPowerPCコードに置き換えられず、MacOSの近代化(笑)が遅れたという一面も(^^;
あ、Bill Atkinsonの仕事が速すぎて(?)初期のMacのグラフィックの標準フォーマットであるPICTフォーマットの定義が終わる前にMacPaintが完成してしまった為にPICTでなく独自のMacPaintフォーマットで保存する事になったらしい(^^;。
感想や追加レビュー希望項目、ミスの指摘などをお待ちしています(^^)↓
<Back><Home><伝言とリンクのボード><mail>
[Corel Graphic User'sClub(MailingList)][@nifty:FCOREL][@nifty:FGRAPHIC]