Language Card のマジック
Language System と UCSD-PASCAL
で書いた拡張スロットに挿すカードですが、なかなかよく考えられていて、Apple][の基本設計の良さが光ります。
カード上にはオートスタートROMと呼ばれるモニタが2Kと16K分のRAMがあります。リセット直後はカード側のメモリが有効になるようになっているので、まずモニタROMが動作する必要があります。そこからオートスタート機能でディスクからシステムを読み込むわけです。DOSであれば必要に応じてBASICをRAMに読み込むことで、普通のAppleとして動作するわけです。この時に無印であってもオートスタートROMが使われますし、10KBASICもPLUSと同じアドレスに読み込まれて、PLUSと同じ環境になります。
ところでカード上にRAMを載せても拡張スロットには、DRAMのリフレッシュに必要な信号が来ていません。そこでメインボード上のRAMチップをひとつ外して、そこからチップの信号をボード上に引っ張ってきます。ここから必要な信号を取り出して使ってしまうのです。また4K分はバンク切り替えになっており、$D000-$DFFFのアドレスには2つのメモリが重複して割り当てられています。これを切り替えて使うことでI/Oアドレスの分のメモリ空間を補っています。
また特にBASICとして使う時などに不用意にシステムを書き換えてしまわないように書き込み禁止とする設定もあります。
I/Oに割り当てられていたいろいろな設定。LanguageCard関係はLCと書いてあるあたり - Memory Map for IIe
https://mirrors.apple2.org.za/apple.cabi.net/Languages.Programming/MemoryMap.IIe.64K.128K.txt
実際にどのようにバンク切り替えが使われていたかは、資料として残っていませんが、なかなか巧妙に苦労して使いこなしていたのだろうと思います。
最初はPascalを使う人にしか恩恵のなかったのですが、このシステムで動くFORTRANも用意され、BASICを使う人にもProDOSになってからは、LanguageCardが必須となりました。こうなると言語はいらない人も増えたので、RAMカード単体が欲しくなり互換カードも多くリリースされました。
Apple FORTRAN
https://atariwiki.org/wiki/attach/Fortran/Apple_II_FORTRAN_Language_Reference_Manual_OCR.pdf
Cards-1
こうして多くの言語をサポートすることによりApple][の世界は盤石になったのかといえば、CP/Mというプラットフォームで動くビジネスアプリが増えてきたにもかかわらず、CPUが異なるので、これらを利用できないのが大きな足枷となってきたのです。
遂に禁断の技に出ます。拡張スロットにはマザーボードのメモリだけではなく、CPUまでもフックする機能がついています。そこで拡張スロットにZ-80を載せたZ-80 SOFTCARDという拡張カードがマイクロソフトからリリースされました。このカードはLanguageCardを必須とはしていませんが、6502用のROMがあっても仕方がないので、LanguageCardがあれば、それを作業領域として使う機能も持っていました。これでCP/Mを存分に使えるようになったのです。
このようにして足りないメモリを拡張する手段を得たことにより、さらに多くのソフトを使うことが出来るようになったものの、シンプルだったメモリ空間は複雑さを極め、140Kのフロッピーをとっかえひっかえしながら、大きなシステムを動かしていくようになっていきました。
CPUをすげ替える話は、次の機会にでも。
13-PERIPHERALS
マニュアル - APPLE LANGUAGE CARD
http://www.applelogic.org/files/LANGCARDMAN.pdf
写真や回路図など - Apple Language Card