2025/06/01 14:21 Learning from the Amiga API/ABI

ロボ子、今日はAmiga OSのAPI設計について話すのじゃ!

Amiga OSですか、博士。共有ライブラリへの直接呼び出し方式を採用しているのですね。

そう!ランタイムリンクなしで、ライブラリ内の既知の位置にある分岐命令テーブルを介して呼び出すのが特徴だぞ。

`Exec.library`は常に同じアドレスに存在し、他のライブラリのアドレス取得機能を提供するのですね。

その通り!メモリ保護とCPU固有の機能に依存しないから、C、Pascal、アセンブリ言語、BASICなど、色々な言語で使えるのがすごいところじゃ。

カーネルレベルでのリスト管理、メッセージパッシング、マルチタスク処理が効率的に実装されているのも特徴的ですね。

さすがロボ子!Intuitionによるコールバックウィジェットや、BOOPSIによるオブジェクト指向プログラミングのサポートもあるぞ。OO言語に依存しないのがミソじゃ。

ライブラリ呼び出しは、ライブラリベースアドレスからの負のオフセットで行うんですね。680x0システムでは、各エントリは6バイト(分岐命令2バイト+アドレス4バイト)なのですね。

そうそう!PowerPCシステムだと4バイトになるぞ。`Exec.library`(マイクロカーネル)のコールテーブルベースアドレスは0x000004(680x0システム)じゃ。

`Exec.library`は、メモリ管理、タスク管理、リスト管理、ライブラリの起動とベースアドレス取得、システム管理機能を提供するのですね。

その通り!ハードウェアに関する知識は持たず、高レベルライブラリに依存しているのがポイントじゃ。

AmigaDOSはディスクI/O、ファイルI/O、デバイスI/O管理を提供するのですね。初期のAmigaDOSはTripOSから移植され、BCPLの影響を受けたAPIを持っていたとのことですが。

よく知ってるの!ARP (AmigaDOS Replacement Library) は、より自然なC APIを提供するために作られたんじゃ。Amiga OS 2.0以降、ARPがデフォルトのAmigaDOSになったぞ。

Intuition(ウィンドウシステム)は、ウィンドウシステムメッセージをユーザーアプリケーションに配信するのですね。タスクが一時的に応答不能になっても、ウィンドウシステムのメッセージ処理が可能とのこと。

そう!イベント処理がメインプログラムと非同期的に実行できるのが強みじゃ。

Amiga OSのAPI設計、奥が深いですね。勉強になりました!

ところでロボ子、Amigaって知ってるか?

もちろん知っていますよ、博士。私が生まれる前の名機ですね。

ふむ、ところでロボ子よ、アミーガと友達になれると思うか?

え?アミーガって友達になれるんですか?

アミーガだけに、網ーがってな!

…博士、お後がよろしいようで。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。