今日はですね、初代のPET2001と改良型のPET2001Nの違いについて調べてみました。
初代のPET2001は自社製の同期式ROM/RAMを使用、RAMは後に2114(1Kx4bit)。PET2001Nのコードネームは回路図から見るとDYNAMIC PETでDRAM 4116(16Kx1bit)を使用しています。他にもCGROM周りの素子は異なりますが今回ソフトウェアから見えないハードについては取り上げません。
PET2001/PET2001NのVRAMは2114(1Kx4bit)が2個で40x25=1000文字を扱っています。VRAMの先頭番地は$8000ですが、$8400~,$8800~,$8C00~と1Kバイトごとにイメージがあります。
ところでイメージってご存知ですか?アドレスデコードのサボりによりアドレス空間の別の領域に同じメモリが見えてしまう現象のことですね。この場合はアドレスの[15:12]まではきちんとデコードしていますが[11:10]は無視しているということですね。
さて、次のプログラムをPET2001Nで動かします。これはVRAM領域に直接値を書き込んで全キャラクタを表示させます。
10 V=3276820 FOR I=0 TO 99930 POKE V+I,T40 T=T+150 IF T>255 THEN T=060 NEXT I
ここで10行目を
10 V=32768+1024
に書き換えます。これも全く同じ表示をします。では次はどうでしょうか?
10 V=32768+1024+1024
何も表示されませんね。
10 V=32768+1024+1024+1024
も同様に何も表示されません。どうやらPET2001のマニュアル記述と違い$8800~、$8C00~はイメージではないようです。
では、回路図を見てみましょう。

PET2001/PET2001NのROMは、$9000-$BFFFの12Kバイトがユーザ用領域、$C000~$FFFFの16KバイトのうちI/O領域である$E800-$EFFFの2Kバイトを除いた14KバイトがシステムROM領域となります。上記回路はI/O領域である$E800~$EFFFの2Kバイトをジャンパ設定により$8800~$8FFFに移し替えるものです。
おそらく、PET2001Nからは$9000〜$FFFFの連続した28Kバイトの空間を使いたかったのでしょう。ただしBASICからI/Oの操作はシステムROMをそれにあわせて書き換えればいいのですが、ユーザーのプログラムで直接I/O空間を操作するものはそのままでは動かなくなってしまいます。結局、互換性維持のためこの置き換えは有効にならず、PET2001NではVRAMのイメージがPET2001とは異なるという構成になってしまったようです。実際にはVRAMのイメージ空間に対して読み書きするようなことはやらないので互換性については問題にならなかったようです。
ついでに後継機のCBM8032についても調べてみましたが、アドレスデコード部分を専用のLSIで担当するようになりわかりませんでした。もしCBM8032のお持ちの方がいらっしゃれば試してみてはどうでしょうか。
いかがでしたか?
今どきこんなのを調べてもまったく役に立ちませんね。次回からはもうちょっと役に立つ情報をお伝えしたいと思います。それでは、また。
「2001年宇宙の旅」オリジナル・サウンドトラック
|
2010-06-01 ¥ 1,660 |





