X1のEMM

X1にもEMMにも詳しくないのですが、どういうものなのか、どのように使うのかを知りたかったので調べてみました。間違いがありそうなので、気が付いたら随時修正していきます。

純正品は、こちらの「X1用EMMボード」を参考にさせていただきました。つまり・・・

・純正品の320Kbyteメモリボードの事をEMMボードと呼ぶ。320Kbyteの領域がある。
・320KByte以外のボードは非純正品。(互換性はある)

ということですね。
あと、I/O誌の1986年3,4,5月号にもEMMボードの製作記事が掲載されているようです。

320KByteということは、000000h – 04FFFFhのメモリ空間を持つということになって、Hu-BASICでは、この領域をEMM0:というデバイス名で表記するようです。
また、EMM:はEMM0:と同じデバイスになります。

アドレスの最大が04FFFFhなので、アドレス指定に3バイト必要になるということですね。

上位 00h ~ 04h
中位 00h ~ FFh
下位 00h ~ FFh

上位バイトには余裕があるので、その気になれば、000000h – FFFFFFhまで使えることになると。
FFFFFFh Byte => 1677216Byte => 約16.384MByteということでしょうかね。

ハードウェアレベルでは、3バイトのアドレス指定用のI/Oポートと、指定アドレスの読み書き用1バイトのI/Oポートを通してアクセスするようです。わかりやすいですね。また、読み書きをすると、自動的にアドレスが+1されるようです、便利ですね。

0D00h アドレス下位指定(00h-FFh) OUT
0D01h アドレス中位指定(00h-FFh) OUT
0D02h アドレス上位指定(00h-04h) OUT
0D03h データ リード/ライト IN/OUT

Hu-BASICでは、EMM0:以外に、EMM1:、EMM2:…といった指定ができるようですが、これはボードを複数枚挿し込んだ時のデバイス名として識別されるようです。
この場合、EMM1:は0D04H, EMM2:は0D08h・・・のように、I/Oポートのアドレスをずらしてアクセスすることが出来ます。

Hu-BASICでは、EMM0:のデバイスをフロッピーディスクのように扱えるので、FILES,LOAD,SAVEといった命令を使って、EMM上にファイルを保存できます。ただし、X1本体の電源を切ったら消えると思います。
これらの命令を使う前に、INIT “EMM:”命令でデバイスを初期化しておく必要があるようです。こうすることで78クラスタ分の領域が確保されるようです。(1クラスタって4KBbyteくらい???)

ここまでは320KByteメモリボードの話です。

非純正品の1MByteメモリボードは、BIOS/Hu-BASICのアドレスチェックにより、320KByte以上の領域は扱うことが出来ません。そこでボード側で1MByteのメモリを3つの320KByteの領域に分割してアクセス出来るようにDIPスイッチで切り替えが出来るようになっているようです。

※上記の記事を書くにあたり、Oh!石さんからご助言をいただきました。ありがとうございます。

コメントは受け付けていません。