SRの画面周りについて、まとめてみました。
参考文献などが入手困難のために、情報が少ない部分でもあると思います。
とりあえず、I/Oポートを列挙しています。それぞれの詳細は後ほど。
また、今回はSRの画面周りの紹介をしたいので、それ以外は省略しています。
参考文献
Mr.PCテクニカルコレクション 秀和システムトレーディング
PC-6001mkII 解析マニュアルI 秀和システムトレーディング
参考文献の内容を参考に、間違っている部分などは修正したつもりです。
ポート0x40〜0x4F:パレット設定
色番号13〜16に任意の色を割り当てる。
○ポート0x40:色番号16(HGRB=1111)のパレット色設定
○ポート0x41:色番号15(HGRB=1110)のパレット色設定
○ポート0x42:色番号14(HGRB=1101)のパレット色設定
○ポート0x43:色番号13(HGRB=1100)のパレット色設定
・SR以降のみに存在。
・SRモード以外でも動作可。
・書き込みのみ。
・書き込むデータは次の通り。
bit7-4:don't care
bit3:Hの反転
bit2:Gの反転
bit1:Rの反転
bit0:Bの反転
例えば、白色(HGRB=1111)を設定する場合は、0x00を書き込みます。
ポート0x60〜0x6F:リード/ライト割り当て設定(SRモード用)
CPUから読み出す/CPUから書き込むメモリを8K単位で任意に割り当てる。
○ポート0x60:CPUアドレス:0x0000〜0x1FFFの読み出し設定
○ポート0x61:CPUアドレス:0x2000〜0x3FFFの読み出し設定
○ポート0x62:CPUアドレス:0x4000〜0x5FFFの読み出し設定
○ポート0x63:CPUアドレス:0x6000〜0x7FFFの読み出し設定
○ポート0x64:CPUアドレス:0x8000〜0x9FFFの読み出し設定
○ポート0x65:CPUアドレス:0xA000〜0xBFFFの読み出し設定
○ポート0x66:CPUアドレス:0xC000〜0xDFFFの読み出し設定
○ポート0x67:CPUアドレス:0xE000〜0xFFFFの読み出し設定
○ポート0x68:CPUアドレス:0x0000〜0x1FFFの書き込み設定
○ポート0x69:CPUアドレス:0x2000〜0x3FFFの書き込み設定
○ポート0x6A:CPUアドレス:0x4000〜0x5FFFの書き込み設定
○ポート0x6B:CPUアドレス:0x6000〜0x7FFFの書き込み設定
○ポート0x6C:CPUアドレス:0x8000〜0x9FFFの書き込み設定
○ポート0x6D:CPUアドレス:0xA000〜0xBFFFの書き込み設定
○ポート0x6E:CPUアドレス:0xC000〜0xDFFFの書き込み設定
○ポート0x6F:CPUアドレス:0xE000〜0xFFFFの書き込み設定
・SR以降のみに存在。
・SRモードのみ動作可(非SRモード時は、ポート0xF0〜0xF2を使用する)。
・書き込みのみ。
・書き込むデータは次の通り。
bit7-4:割り当てるメモリの種別
bit7-4=0000:内部RAM(VRAM)
bit7-4=0010:外部RAM(拡張RAM)
bit7-4=1011:外部ROM1(拡張ROM(nCS2):通常、0x6000〜0x7FFFに割り当てる)
bit7-4=1100:外部ROM2(拡張ROM(nCS3):通常、0x4000〜0x5FFFに割り当てる)
bit7-4=1101:CGROM
bit7-4=1110:SYSTEMROM2(音声合成/漢字)
bit7-4=1111:SYSTEMROM1(BASIC-ROM)
それ以外は未使用
bit3-1:割り当てるメモリの先頭アドレス(アドレスバスA15-13に出力する値)
bit0:常に"0"
注)通常は8K毎に割り当てが出来ますが、内部RAM(VRAM)とCGROMには、制限があります。
(基板接続間違いのようです)
内部RAM(VRAM)、CGROMの0x0000〜0x1FFFは、0x0000〜0x1FFF、0x4000〜0x5FFF、0x8000〜0x9FFF、0xC000〜0xDFFFにしか割り当てられない。
内部RAM(VRAM)、CGROMの0x2000〜0x3FFFは、0x2000〜0x3FFF、0x6000〜0x7FFF、0xA000〜0xBFFF、0xE000〜0xEFFFにしか割り当てられない。
同様に、
内部RAM(VRAM)の0x4000〜0x5FFF、0x8000〜0x9FFF、0xC000〜0xDFFFは、0x0000〜0x1FFF、0x4000〜0x5FFF、0x8000〜0x9FFF、0xC000〜0xDFFFにしか割り当てられない。
内部RAM(VRAM)の0x6000〜0x7FFF、0xA000〜0xBFFF、0xE000〜0xEFFFは、0x2000〜0x3FFF、0x6000〜0x7FFF、0xA000〜0xBFFF、0xE000〜0xEFFFにしか割り当てられない。
ポート0x80〜0x8F:RS-232C(8251)アクセス
●今回は省略
ポート0x90〜0x9F:8255/サブCPUアクセス
●今回は省略
画面関連は以下の通り。
ポート0x93に0x02を書き込み→画面OFF(画面モードによっては砂嵐)
ポート0x93に0x03を書き込み→画面ON
ポート0xA0〜0xAF:YM-2203(SRのみ)/AY-3-8910(非SRのみ)アクセス
●今回は省略
画面関連は以下の通り(mk2以降のみ存在)。
ジョイスティックポートに、垂直同期、水平同期の信号が接続されています。
OPN(PSG)のアドレス0x0eを読み出すと、垂直同期(bit7)、水平同期(bit6)が読み出せます。
ただし、水平同期はパルス幅が短すぎるため、まともに読み取れません。
ポート0xB0〜0xBF:割り込み、CMT、FDD制御、表示VRAM(非SRモード)
●今回は省略
ポート0xC0:プリンタ、RS-232Cチェック、色の組み合わせ設定
○ポート0xC0(読み出し)
bit1:プリンタBUSY(0:BUSY/1:READY)
bit0:RS-232Cキャリア検出
○ポート0xC0(書き込み)
bit7-3:don't care
bit2:CSS3
bit1:CSS2
bit0:CSS1
・読み出しは全機種に存在。
・書き込みはmk2以降に存在。
ポート0xC1〜0xCF:CRTモードなど(SRモード用)
○ポート0xC1(CRTモード設定)
bit7-4:don't care
bit3:横ドット数(0:640ドット/1:320ドット)
bit2:グラフィックモード(0:グラフィック/1:キャラクタ)
bit1:横文字数(0:80文字/1:40文字)
bit0:縦ドット数(0:204ドット/1:200ドット)
・SRモードのみ動作可。
・書き込みのみ。
○ポート0xC8(CRTコントローラ設定)
bit7-5:don't care
bit4:
bit3:ビットマップモード(0:イネーブル/1:ディセーブル(直接アクセスモード))
bit2:縦行数設定(0:25行/1:20行)
bit1:バスリクエスト(0:ON/1:OFF)
bit0:CRTコントローラモード設定(0:SRモード/1:非SRモード)
・bit0、1は、全モードで動作可。bit2〜4は、SRモードのみ動作可。
・書き込みのみ。
○ポート0xC9(CRTコントローラ設定)
bit7-4:don't care
bit3-0:表示ページ(グラフィックモードの時は、bit3のみ有効)
・SRモードのみ動作可。
・書き込みのみ。
テキスト表示の場合、開始アドレスの上位4ビットをbit3-0に設定する。
例えば、0xF000〜を表示する場合は、0x0Fを書き込む。
グラフィック表示の場合は、ページ0を表示する場合は、0x00、ページ1を表示する場合は0x08を書き込む。
注)ポート0xC1、0xC8で画面制御を変更した場合は、関係がなくてもポート0xC9〜0xCCを設定する(0x00でよい)。
設定しない場合、正常動作しない場合がある(詳細不明)。
ポート0xCA、0xCB(スクロール設定)
○ポート0xCA
bit7-0:X座標下位8ビット
○ポート0xCB
bit7-1:'0'を設定する
bit0:X座標上位1ビット
○ポート0xCC
bit7-0:Y座標
・SRモードのみ動作可。
・書き込みのみ。
ポート0xCA、0xCBにX、Y座標を設定すると、画面左上に(X,Y)が来るように画面がスクロールする。
(移動距離を設定するわけではない)
注)ポート0xC1、0xC8で画面制御を変更した場合は、関係がなくてもポート0xC9〜0xCCを設定する(0x00でよい)。
設定しない場合、正常動作しない場合がある(詳細不明)。
ポート0xCE、0xCF(ビットマップアクセスY座標指定)
ビットマップがイネーブル時のY座標を指定する
○ポート0xCE
bit7-0:Y座標
○ポート0xCF
bit7-0:'0'を設定する
・SRモードのみ動作可。
・書き込みのみ。
アクセスした時のメモリアドレスがX座標になる。そのため普通は、アドレス0x0000〜0x013Fに読み書きする事で、VRAMにアクセスする事になる(詳細は別途)。
ポート0xCFは、画面モードを変更した後に、0x00を書けば問題なく、アクセスの度に設定する必要はない。
ポート0xC1〜0xCF:CRTモードなど(非SRモード用)
●今回は省略
ポート0xD0〜0xDF:内蔵FDD/外付けFDDアクセス
●今回は省略
ポート0xE0〜0xEF:音声合成LSIアクセス
●今回は省略
ポート0xF0〜0xF2:メモリ割り当て(非SRモード用)
●今回は省略
ポート0xF3〜0xFB:割り込み制御
●今回は省略
ポート0xFC〜0xFF:拡張漢字ROMパックアクセス
●今回は省略

