Apple IIのハードウエア(5)
Apple IIの内部I/O
Apple IIの内部I/Oは以下の回路のような構成になっている。
74LS259はA,B,Cで選択されたアドレスにDから入力されたデータを保持する。
本来の使い方であれば、Dにはデータバスを接続するがApple IIではアドレスバスのAD0が接続されている。したがって、対応するアドレスのセットするには奇数アドレスを、クリアするには偶数アドレスをアクセスする仕様となっている。
例えば、TEXT MODEをセットするにはC051番地をアクセスし、クリアするにはC050番地をアクセスすればよい。
なぜこのような仕様になっているかといえば、データバスの配線を引き回す必要がなくなり基板設計が楽になるからだろう。またI/O出力でON,OFFを行うような処理をするとき、データビットのセット、リセットを行うことなくアドレスを変更するだけでより高速に行えるという利点もある。
この構成から内部I/Oの設定はリード、ライトの両方で同じように行える。
たとえば、実機(またはエミュレータ)で、以下のプログラムは同じ動作をする。
・テキストモードからミックスモードに変更しHIRESのページ1を選択する。
ライト
10 POKE -16304,0
20 POKE -16297,0
30 POKE -16300,0
40 POKE -16301,0
リード
10 A=PEEK(-16304)
20 A=PEEK(-16297)
30 A=PEEK(-16300)
40 A=PEEK(-16301)
※-16304=$C050, -16297=$C057,-16300=$C054,-16301=$C053