2018年06月10日

SR画面周り(1)

  P6月間企画...そろそろつらい(その10)

  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:グラフィック表示ページ ビットマップページ指定(0:ページ0(0x0000〜0x7FFF)/1:ページ1(0x8000〜0xFFFF))
 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パックアクセス
●今回は省略

posted by えすび at 21:00| Comment(0) | P6解析:画面周り | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。