Apple DOS は、 1978 年後半から 1983 年初頭までApple IIコンピュータ用のディスク オペレーティングシステムでした。1983年にProDOSに置き換えられました。Apple DOS には、DOS 3.1、DOS 3.2、DOS 3.3 の 3 つのメジャー リリースがあります。[ 2 ]これら 3 つのリリースのそれぞれに、2 番目のマイナーな「バグ修正」リリースが続きましたが、Apple DOS 3.2 の場合のみ、そのマイナー リリースに Apple DOS 3.2.1 という独自のバージョン番号が付けられました。最もよく知られ、最も使用されているバージョンは、1980 年と 1983 年のリリースの Apple DOS 3.3 です。Apple DOS 3.1 がリリースされる前は、Apple ユーザーはデータの保存と取得にオーディオ カセット テープに頼る必要がありました。
Apple Computerが1977年4月にApple IIを発表したとき、この新しいコンピュータにはディスクドライブもディスクオペレーティングシステム(DOS)も搭載されていませんでした。Appleの共同創業者であるスティーブ・ウォズニアックはその年の後半にDisk IIコントローラを設計し、DOSを自分で書けると考えていましたが、共同創業者のスティーブ・ジョブズはその作業を外部委託することにしました。同社はDigital ResearchのCP/Mの使用を検討しましたが、ウォズニアックはより使いやすいオペレーティングシステムを求めていました。1978年4月10日、AppleはShepardson Microsystemsと13,000ドルの契約を結び、35日以内にDOSを納品することになりました。Appleは詳細な仕様を提供し、初期のApple社員であるランディ・ウィギントンは、パンチカードとミニコンピュータを使ってオペレーティングシステムを書いたShepardsonのポール・ロートンと緊密に協力しました。[ 3 ]
Apple DOS 1 や 2 は存在しませんでした。バージョン 0.1 から 2.8 は開発中にシリアル番号が付けられた改訂版で、ビルド1 から 28 と呼んでもよかったでしょう。バージョン 2.8 の名称変更版である Apple DOS 3.0 は、バグのため一般にはリリースされませんでした。Apple はリリース 3.2 まで公式ドキュメントを公開しませんでした。[ 4 ] [ 5 ] [ 2 ]
Apple DOS 3.1 は、Apple II の発表から 1 年強後の 1978 年 6 月に一般公開され、Apple コンピュータ初のディスクベースのオペレーティングシステムMASTER CREATEとなりました。バグ修正版が後にリリースされ、 Apple DOS マスター (起動可能) ディスクを作成するために使用されるユーティリティの問題を解決しました。組み込みINITコマンドで作成されたディスクは、作成元のマシンと同じ以上のメモリを搭載したマシンでのみ起動可能でした。 には、MASTER CREATE任意のメモリ構成の Apple マシンで起動する自己再配置バージョンの DOS が含まれています。
Apple DOS 3.2 は、 Apple II の後継機である Apple II Plus に組み込まれたコンピュータの起動方法の変更を反映するために1979 年にリリースされました[ 6 ] 。新しいファームウェアには、システムの電源投入時にディスクコントローラを自動的に検出してそこから起動する自動起動機能が含まれており、これにより「自動起動ROM 」という名前が付けられました。その後、1979 年 7 月にいくつかの軽微なバグ修正を含む DOS 3.2.1 がリリースされました。[ 5 ] [ 6 ]
Apple DOS 3.3 は1980 年にリリースされました。リリース 3.2 のさまざまな機能が改善され、RWTS が書き直されて高速化されました[ 6 ] 。また、フロッピー ディスクのストレージ容量が大幅に増加しました。ディスク コントローラの新しい P5A/P6A PROMにより、データの読み書き密度が高くなり、1 トラックあたり 13 セクタ (3.25 KiB) ではなく 16セクタ( 4 KiB ) を保存できるようになり、容量が片面あたり113.75 KBから 140 KB に増加しました。そのうち16 KB はファイルシステムのオーバーヘッドと DOS のコピーに使用され、ユーザー プログラムとデータ用に 124 KB が残ります。ただし、DOS 3.3 は下位互換性がなく、DOS 3.2 ディスクの読み書きができません。この問題を解決するために、Apple Computer は Apple DOS 3.2 のファイルとプログラムをバージョン 3.3 ディスクに移行するユーティリティ「MUFFIN」をリリースしました。 Appleは逆方向のコピーを行うユーティリティを提供したことはありませんでした。Apple DOS 3.3のファイルをバージョン3.2のディスクに戻すために、誰かが「NIFFUM」ユーティリティを作成しました。また、Copy II Plusなどの市販ユーティリティは、どちらの形式間でも(そして最終的にはProDOS間でも)ファイルをコピーできます。リリース3.3では、コンピュータに言語カード( RAM拡張)またはファームウェアカードが搭載されている場合、Integer BASICとApplesoft BASICを切り替える機能も改善されています。
Apple DOS 3.1 ディスクは、1トラックあたり13セクタのデータを使用し、各セクタは256バイトです。ディスクの片面あたり35トラックを使用し、ユーザーがディスクを裏返さない限り、フロッピーディスクの片面しかアクセスできません。これにより、ユーザーは 片面あたり合計113.75KBの記憶容量を得ることができ、そのうち約10KBは DOS自体とディスクディレクトリの保存に使用され、残りの約100KBが ユーザープログラムに使用されます。
オペレーティングシステムの最初のレイヤーは RWTS と呼ばれ、「読み書きトラックセクタ」の略です。このレイヤーは、トラックシーク、セクタの読み書き、ディスクフォーマットのためのサブルーチンで構成されています。この上にファイルマネージャと呼ばれるAPIが構築され、ファイルのオープン、クローズ、読み取り、書き込み、削除、ロック (書き込み保護)、ロック解除 (書き込み有効化)、名前変更、およびファイルの構造的整合性の検証を行う機能を実装しています。また、CATALOGフロッピーディスク上のファイルを一覧表示する機能と、INITDOS で使用するためにディスクをフォーマットし、最初の 3 つのトラックに DOS のコピーを格納し、このディスクから起動したときに自動的に起動されるスタートアップ プログラム (通常は HELLO と呼ばれる) を格納する機能もあります。ファイルマネージャ API の上に、マシンの BASIC インタープリタにフックしてすべてのディスク コマンドをインターセプトする主要な DOS ルーチンが実装されています。バイナリ実行可能ファイルの格納、ロード、実行のために、BLOAD、BSAVE、およびBRUNが提供されています。、、およびはBASICプログラム用に提供され、はBASICおよびDOSコマンドで構成されるテキストベースのバッチファイルを実行するために提供されました。最後に、カタログリストで文字で識別される4種類のファイルがあります。[ 7 ]LOADRUNSAVEEXEC
ファイルの種類は「R」、「S」、そして追加の「A」と「B」の4種類がありますが、いずれも完全にはサポートされていません。DOSはこれらの種類をカタログリストとしてのみ認識し、これらの種類のファイルを直接操作する方法はありません。「R」タイプは、再配置可能なバイナリ実行可能ファイルとして一部利用されています。「S」タイプは、データファイルとしてサポートされているプログラムがいくつかあります。
$03D0–03FF 16の領域にあるコールベクタテーブルにより、プログラムはシステムメモリ内のどこにロードされていても DOS を見つけることができます。たとえば、BASIC CLIにフックされた DOS が動作しなくなった場合、$03D0 16 (976 10 )の場所を呼び出すことで再初期化できます。そのため、システムモニタから BASIC に戻るための従来のコマンド ("3D0 go") が使用されるのです。 3D0G
Apple DOSのロード処理は、一連の非常に小さなプログラムによって行われ、それぞれのプログラムがロード処理を数ステップ進めた後、チェーン内の次のプログラムに制御を渡す。
PR#6(BASIC から) を使用します。モニタまたは BASIC が次のプロンプト文字を発行すると、コンピュータはディスクカード上の ROM ルーチンを呼び出してそこに「印刷」し、その後ブートシーケンスに進みます。(同様の目的で入力リダイレクトを使用することもできます。) あるいは、ML モニタから、ユーザーはコマンド のようにコントローラのブートコードを直接呼び出すこともできましたC600G。初代 Apple II には、当初Apple BASICと呼ばれ、後にInteger BASICと呼ばれる BASIC インタープリタが ROM に搭載されていました。この言語の変数は、-32,768 から +32,767 ( 16 ビットのバイナリ値)までの整数のみを扱うことができ、浮動小数点数はサポートされていません。Apple は、浮動小数点数を扱えるApplesoft BASIC [ 8 ]の開発をMicrosoft に委託しました。Applesoft BASIC は Integer BASIC プログラムを実行できないため、一部のユーザーはアップグレードをためらっていました。
DOS 3.3は、Applesoft BASICがApple II PlusのROMに標準搭載されていた時期にリリースされたため、Appleは2つのBASICインタープリタを切り替えられるように設計しました。Integer BASICは、Apple IIの言語カード(搭載されている場合)のRAMにロードされ、BASICから入力することでFP、INTユーザーはどちらのバージョンも切り替えることができます。
1980年以降、Appleは不運な運命を辿ったApple IIIコンピュータとそのSOSオペレーティングシステムに注力したため、Apple DOSは停滞状態に陥った。1983年初頭と中頃に、Apple DOSの新たなバージョンが2つリリースされた。どちらもDOS 3.3という名称だったが、いくつかのバグ修正と新しいApple IIeモデルへの対応強化が施されていた。
サードパーティ製のパッチがない場合、Apple DOS は 5.25 インチ Disk II ドライブで動作するフロッピー ディスクしか読み取ることができず、ハードディスク ドライブ、仮想RAMドライブ、3.5 インチ フロッピー ディスクドライブなどの他のメディアにはアクセスできません。Apple DOS ディスクの構造 (特に、単一セクターの一部に制限されていたフリー セクター マップ) は、コードのほぼすべてのセクションを大幅に書き換えない限り、ドライブごとに 400 KB を超えるデータを一度に使用できないようになっています。これが、Apple が 1983 年にこのバージョンの DOS を放棄し、Apple DOS をProDOS に完全に置き換えた主な理由です。
ProDOSは、5.25インチディスク用のDOS 3.3の16セクター低レベルフォーマットを維持しつつ 、最大32MBのデバイスに適した新しい高レベルフォーマットを導入しました。これにより、当時のハードディスクや3.5インチフロッピーディスクに適したものとなりました。II Plus以降のすべてのAppleコンピュータはDOS 3.3とProDOSの両方を実行できますが、PlusではProDOSを使用するために「言語カード」メモリ拡張が必要でした。e以降のモデルには言語カードハードウェアが内蔵されているため、ProDOSを直接実行できます。ProDOSには、Apple DOSディスクからファイルをコピーするソフトウェアが含まれています。しかし、ProDOSの改良を必要としない(そしてメモリ使用量が大幅に増えることを好まない)多くの人々は、1983年以降もApple DOSまたはそのクローンを使い続けました。Appleは、すべてのフロッピーディスクに起動可能なOSを保存するという慣習を採用しているため、ユーザーが所有するOSに関係なく、市販のソフトウェアを使用できます。DOS.MASTERというプログラムを使うと、ユーザーはより大きなProDOSボリューム上に複数の仮想DOS 3.3パーティションを作成でき、これにより、フロッピーディスクベースの多くのDOSプログラムをハードディスク上で使用することが可能になります。
ProDOSがリリースされて間もなく、AppleはサードパーティによるDOS 3.3の再配布の許可を取り消したが、Syndicommという1社にはDOS 3.3の再販に関する独占ライセンスを与えた。[ 9 ]
市販のゲームは通常、Apple DOSを使用せず、コピープロテクションやパフォーマンス向上のために独自のディスクルーチンを使用していた。
DOS の RWTS ルーチンは、適切なインターリーブによって 2 回転でトラックを読み書きできます。RWTS ルーチンが読み取ったセクターをデコードしているとき (または次に書き込むセクターをエンコードしているとき)、回転するディスクのセクターが読み書きヘッドの下を通過します。この見逃されたセクターが次に必要なセクターである場合、DOS はセクターが再び来るまでディスクのほぼ 1 回転を待つ必要があります。これは「回転を無駄にする」と呼ばれ、ディスク システムのパフォーマンス ボトルネックとしてよく知られています。これを回避するため、DOS ディスクのセクターはインターリーブされた順序で配置されています。[ 10 ]
0 7 e 6 d 5 c 4 b 3 a 2 9 1 8 f
その後、ProDOS はセクターを次の順序で配置しました: [ 10 ]
0 8 1 9 2 a 3 b 4 c 5 d 6 e 7 f
セクター0を読み取ってデコードすると、セクター8が通過するため、次に必要となる可能性が高いセクター1は、待つことなく読み取ることができます。セクター7を読み取る場合、セクター8が利用可能になる前に、不要なセクターfと0が2つ通過します。また、セクター15を読み取る場合、ドライブは常に同じトラック上のセクター0を1回転余分に待つ必要があります。しかし、ほとんどの場合、実際に必要なセクター0は、その次のトラック上にあり、そのトラックは、読み取ったばかりのセクターをデコードし、セクター0が来る前にヘッドを移動させるのに必要な時間を確保できるように、前のトラックに対して配置することができます。平均して、トラック全体はディスクの2回転で読み取ることができます。
初期の DOS ファイルマネージャは、ディスク バッファとメイン メモリの間でファイルから読み書きされるバイトを 1 つずつコピーすることでこの効率性を損ない、より多くの時間を要し、ファイルの読み書き時に DOS が常に回転数をオーバーフローさせる結果となった。[ 11 ]セクター インターリーブを変更してディスクをフォーマットするプログラムが早期に利用可能になった。これらのディスクは、DOS がデータをコピーするためのセクター間の時間を長くし、問題を軽減した。
その後、Apple社外のプログラマーがファイルマネージャのルーチンを書き換え、ファイルのほとんどのセクターで余分なコピーを作成しないようにしました。RWTSは、セクター全体を転送する際には、ディスクバッファからではなく、メインメモリに直接セクターを読み書きするように指示されました。この機能を提供する初期のパッチは、 Call-APPLEで公開されました。LOADコマンドの実行速度は、通常3~5倍向上しました。
この機能は、Pronto-DOS、Diversi-DOS、Hyper-DOS、David-DOSなどの商用製品に、追加機能とともにすぐに搭載されましたが、Appleの公式DOSリリースでは使用されませんでした。しかし、同様の機能は、Appleの後継オペレーティングシステムであるProDOSで採用されました。Apple IIGS専用のオペレーティングシステムであるGS/OSは、最終的に、読み取り中のファイルに必要な場合、読み取りヘッドの下を通過するセクターを何でも読み取る、さらに効率的な「スキャッター読み取り」技術を採用しました。
2013年、 Apple IIの登場から35年以上経って、オリジナルのApple DOSソースコードがコンピュータ歴史博物館のウェブサイトで公開されました。 [ 12 ]これはオリジナルの作者であるポール・ロートン氏によって寄贈されたものです。[ 13 ]