プログラミング
Os8088: IBM XT、286、386向けの強力なMac風OS
Os8088: A powerful Mac-like OS for the IBM XT, 286, 386 (os8088.com)
要約
Os8088は、IBM PC/XTなどの初期PC向けに開発された、Macintosh System 1風のグラフィカルオペレーティングシステムです。256KBのRAMと8086/8088プロセッサで動作し、オーバーラッピングウィンドウ、プルダウンメニュー、プリエンプティブマルチタスクといった機能を搭載しています。DOSを介さずに直接起動し、フロッピーディスクからロード可能なプログラムを実行できます。
全文翻訳
os8088 1.0 IBM XT向けに実現し得たグラフィカルオペレーティングシステム 1984年のMacintoshにはなかった、インテル8086上でリアルモードアセンブリのみで記述され、フロッピーから起動するMacintosh System 1スタイルのデスクトップ。オーバーラッピングウィンドウ、プルダウンメニュー、シリアルマウス、ロード可能なプログラム、そしてプリエンプティブマルチタスクを搭載。ピクセル640x480、カラー16色、RAM 256KB、カーネル 52,718バイト、タスクスロット 12、プリエンプション 18.2Hz ブラウザで起動可能フロッピーディスクをダウンロードスクリーンショット os8088 1978年製のCPUで5つのプログラムを同時に実行。ソフトウェアフロッピーからロードされたメモ帳、時計、バウンドボール、コントロールパネル、タスクマネージャー。それぞれが独立したタイルを持つ別々のインスタンスです。タスクマネージャーは、CPU使用率70%、RAM使用量147KBと報告しています。 Os8088とは Os8088はフロッピーディスクの最初のセクタから起動し、グラフィカルデスクトップを表示します。その下にはDOSはなく、コマンドラインも一切ありません。512バイトのブートセクタが40KBのカーネルをロードし、カーネルはマシンのディスプレイアダプタを検出し、グラフィックスモードに切り替え、ビデオカード自身の8x8文字セットを借用し、メニューバーを表示します。それ以降は、1984年のMacintoshで記憶しているインターフェースと同じです。タイトルバーでドラッグできるウィンドウ(ラバーバンドのアウトライン付き)、プルダウンしてドラッグできるメニュー、閉じるボタンと最小化ボタン、各フロッピーディスクドライブのアイコン、そして実行中のプログラムごとにタイルが表示される下部のドック。プログラムはセカンドフロッピーからロードされ、複数のプログラムが同時に実行されるファーストクラスアプリケーションとして動作します。全体は、オリジナルのIBM PCやPC/XTに搭載されていたインテル8086または8088の256KB RAMに収まります。これは趣味のプロジェクトですが、使用できる程度に完成しており、ソースコードはNASMで66,183行あり、一晩で読み通すことができます。 数字で見る Os8088のすべての仕様は、メモリからではなく、ビルドから取得されています。検証済みの仕様 カーネルサイズ 52,718バイト スケジューラ、ウィンドウマネージャー、VGAドライバ、マウスドライバ、サウンドレイヤー、ファイルマネージャー、ローダー、タスクマネージャー、コントロールパネル、すべてが含まれます。 ブートセクタ 512バイト LBA-to-CHS変換とBIOSフロッピー読み取りのリトライ。これ以外の値になるとビルドは失敗します。 セグメントフットプリント 59,031バイト コードとカーネルがDS経由でアクセスするすべてのバッファ。64KBセグメントに収まる必要があり、現在は6,505バイトのヘッドルームがあります。タスクスタック、ディスクバッファ、ロードされたすべてのプログラムはセグメント外に存在し、ここにはカウントされていません。 アセンブリコード行数 66,183行 手書きのリアルモード8086コード。C言語、リンカ、ランタイムライブラリは一切使用していません。 ディスプレイ VGA、Hercules、またはCGA ブート時にプローブされます。VGAモード12hは640x480で16色(4つの1ビットプレーン、スキャンラインあたり80バイト)、Herculesは720x348、CGAは640x200で、いずれもモノクロームおよびバンク切り替え式です。すべて3つのアダプタでフレームバッファに直接描画されます。 バックバッファ オプション、デフォルトではオフ スクリーンコピーは153,600バイトで、マシンのメモリの半分以上を占めるため、256KBマシンでは常にディスプレイに直接描画されます(1984年のMacintoshと同様)。500KB以上のRAMがあれば、コントロールパネルでバックバッファを有効にできます。 タスク 12スロット、1,536バイトスタック 各時計と各バウンドボールウィンドウは、独自のプリエンプティブタスクです。 コンテキストスイッチレート 18.2065 Hz PCの標準タイマーレート。ティックごとにハンドラは9つのレジスタを保存し、スタックポインタを切り替えて別のプログラムに復帰します。 ロード可能なプログラム 各セグメント パッケージはセカンドフロッピーからロードされ、独自のコンベンショナルメモリ領域(512KBマシンで約107KB、640KBマシンで233KB)で実行されます。複数のパッケージが同時に常駐でき、閉じられるとメモリが解放されます。 マウス 1200 baud, 7N1 COM1上のMicrosoftシリアルマウス。レポートごとに3バイト、カーソル描画も行う割り込みハンドラでデコードされます。 対象ハードウェア IBM PC/XT、8088 4.77MHz 256KB RAM、シリアルマウス、VGA、Hercules、またはCGAカードのいずれか。再描画は見るのに十分なほど遅いです。 命令セット 8086のみ、cpu 8086に加えて-w+errorで強制されているため、それ以降のCPUではビルドが失敗します。1978年の命令セットであり、機械的に保証されています。 何ができるか 実際に得意な4つの機能。スクリーンショットページにもっとあります。 プリエンプティブマルチタスク 何も協力する必要がありません。2つの時計が時間を刻み、2つのボールが動き続ける一方で、あなたは別のものに入力できます。タイマー割り込みは1秒間に18.2回発生し、実行中のタスクを保存し、スタックポインタを切り替えて次のタスクに復帰します。約30命令です。当時のMacintoshにはこれが全くできませんでした。System 1は一度に1つのアプリケーションしか実行できず、1987年にMultiFinderが登場したときも協調型でした。 ラバーバンドドラッグ ウィンドウは離すまで移動しません。1ピクセルのXORアウトラインがポインタを追いかけ、離すとウィンドウがそれにスナップします。4.77MHzでは、マウスレポートごとにウィンドウ全体を再描画するのは不可能だったため、1984年当時と同じです。 ロード可能なソフトウェア プログラムはセカンドフロッピーからロードされます。ディスクウィンドウのファイルをダブルクリックすると、独自のセグメントにロードされ、実際のアプリケーションとして実行されます。マインスイーパはアイコンを含めて1,510バイトです。複数のパッケージ、または1つのパッケージの複数のコピーを同時に常駐させることができます。 タスクマネージャー 自身を監視します。スクロールする履歴グラフ付きのライブCPUメーター、RAM表示、実行中のプログラムごとの行。独自のタスクを持たないアプリは、ディスパッチサイトでウィンドウコールバックの時間が計測され、それに請求されるため、行は合計で1つになります。 すべてのスクリーンショット 実機で動作 上記すべてはエミュレータでキャプチャされました。2026年8月、誰かがディスクイメージを実際のフロッピーディスクに書き込み、当時の3台のマシン(1981年のIBM 5150、東芝T1100 Plus、286)で起動し、その結果を写真に撮りました。 IBM 5150、8088 4.77MHz 1981年のIBM PCで6つのプログラムを同時に実行。実機の5150がHerculesカード(720x348)を駆動し、360Kフロッピーから起動。マシンのカードリストを、同じディスクからロードされたメモ帳に入力しました。Elendilon氏撮影。エミュレータ下よりも遅くはないとのことです。 os8088実機での動作 議論の歴史 1985年2月、Digital ResearchはIBM PC向けにGEM 1.0を出荷しました。これはMacintoshスタイルのデスクトップで、オーバーラッピングウィンドウとアイコンを備え、標準のXTハードウェアで動作しました。Appleは訴訟を起こしました。和解の結果、1986年にGEM Desktop 2.0が登場しましたが、PC版ではオーバーラッピングウィンドウとデスクトップアイコンが削除されました。一方、アタリST版は、合意の対象外であったため、これらを維持しました。したがって、PCには一時的にこの機能がありましたが、その後なくなりました。Os8088は、約40年後に同じクラスのマシンのアイデアをゼロから再構築したもので、当時のGEMやMacintoshが提供できなかったプリエンプティブマルチタスクも備えています。 何ではないか DOSではなく、DOSプログラムは実行しません。その下にはDOSはありません。ブートセクタからマシン全体を所有しています。メモリ保護機能はありません。8086には提供できるものがありません。すべてのプログラムがカーネルと同じ64KBセグメントを共有しており、これがコンテキストスイッチを安価に済ませ、実行する価値がある理由です。ファイルハンドルやシーク機能はありません。ディスクAPIはファイル全体を一度に移動します(書き込み、読み込み、削除、名前変更)。これは、ディスクキャッシュや12個のプリエンプテッドタスクなしで正直さを保つための最大のサブセットです。ネットワーク機能やハードディスクサポートはありません。これは製品ではなく、趣味のプロジェクトです。また、座って使用できるほど完成しており、それがすべてです。 試してみる ブラウザデモでは、エミュレータPCで実際のフロッピーイメージを起動します。ディスクに書き込むのと同じバイトです。自分で実行したい場合は、ダウンロードページに、当時のハードウェアや86Box用の360KBイメージ、QEMU用の1.44MBイメージがあります。 ブラウザで起動する ダウンロード 仕組み