mz-80K ディスプレイ周り


V−RAM ディスプレイコードとアスキーコード 左がディスレイコード、右がアスキーコード ディスプレイコードの並び方が一見バラバラにみえますが Aにはスペード、チ、Bには逆三角、コ...と000H−0BFHまで 通常、シフト、カナと040Hスライドしていきます この方式は海外仕様の本体でもCGROMの変更だけで済みます   40×25の1000文字を0D000H〜0D3E7HのV−RAMに割り当てられています ココにディスプレイコードを書込むとキャラクタ文字が出力されます ディスプレイコード040Hと080Hのスペースには mz−700で新たにキャラクタが定義されています(矢印の→と↓) ここをスペースとして使うとMZ−700以降では画面が化けます したがって通常のスペースは000Hを使用する事が望ましい事になります。 CPUメモリなのでプログラムを書いて実行もできますが その部分は当然ディスプレイコードで表示されます   領域は1KBなので0D3E8H〜0D3FFHは未使用(空き)となります またミラーとなるので0D400H、0D800H、0DC00Hは0D000Hと同じになります mz−1200以降はVRAM2KB、色情報テーブルRAM2KB(未実装) mz−80A/700以降はVRAM2KB、色情報テーブルRAM2KBの計4KB     アクセス方法   VRAM領域にある0D000H〜0D3FFHに ディスプレイコードを書き込むだけなのですが /VBLANK期間内(4ms)に書き込まないと 一瞬画面にゴミのようなものが出てチラツキが発生します そこでPPI /VBLANK PC7=1からPC=0になるまで 監視する必要があります この監視部分が、かなりの速度低下につながります なにしろ全VRAMを単純なLDIRのブロック転送で チラツキ無しでは3回ほど分けないといけません またmz−80A/1200/700以降はでは CRTCによるサイクルスチールで監視する必要はなくなりました (ただしWAITが入る様になります)   監視はPC=0のチェックだけでは、 すぐに/VBLANKが切り換わってしまう場合(PC7=1)もあるので PC7=1からPC=0のチェックになります。     LOOP0:LD A,(0E002H) ;Waiting /VBLANK=1         RLCA         JR NC,LOOP0     LOOP1:LD A,(0E002H) ;Waiting /VBLANK=0         RLCA         JR NC,LOOP1             |    
mz−80DU(未確認) CPU Z80A 4MHz ROM  2KB( 4KBまで拡張可) RAM  16KB(32KBまで拡張可) VRAM 18KB    8色       256×192ドット 42×24文字(6×8ドットマトリックス)  24色       128×192ドット  8色  、8階調 128×192ドット  モノクロ、4階調 256×192ドット    00000H〜007FFH:モニタROM  00800H〜00FFFH:拡張ROM  01000H〜012FFH:ワークエリア  01300H〜04E0FH:ディスプレイプログラム(SP−3001)  04E10H〜04FFFH:C・Sエリア  05000H〜08FFFH:拡張RAM  09000H〜0A7FFH:VRAM赤  0A800H〜0AFFFH:空き  0B000H〜0C7FFH:VRAM緑  0C800H〜0CFFFH:空き  0D000H〜0E7FFH:VRAM青  0E800H〜0FFFFH:空き   コマンド  M :色調、階調モードの指定  B :Mコマンドに合ったが画面全体の色、階調の指定  C :ドット、直線、円、文字の色をMコマンドに合った色で指定  P :指定座標に1ドット表示  L :指定座標に直線表示  LW:指定座標に指定幅、指定色の棒線を引く(BOX)  SR:画面上に文字(ASCII)表示  SF:指定座標に、指定角度で文字(ASCII)表示  W :スクロールのオン/オフ、表示する文字の行数、1行に表示する文字数の指定  CH:画面上の指定色をMコマンドに合った別の指定色に変更  CI:指定座標を中心に指定半径、指定角度の扇形、または円を描く  PI:指定座標を中心に指定半径、指定角度の扇形、または円を同一色でぬりつぶす  PO:指定座標に指定多角形を描き、多角形内を同一色でぬりつぶす  MD:指定座標に1ドットを表示、カーソルコードで移動、カーソルコードで任意の座標にセット  X :2個のX印で指定した座標間に直線、棒線、X印を中心に円、扇形、X印を基準にASCII文字を描く、X印はカーソルコードで移動可  CS:指定枠内の図形をスタディする。 枠のサイズ、位置は任意に指定できる  CP:CSコマンドで作成した図形を指定座標に表示する  TX:バッファ内に必要なテキスト作成      TL テキスト内のプログラムを画面上にリスト      GO 作成したテキストプログラムの実行      ER 画面上の背景以外の図形クリア      CR テキストバッファをクリア      ED ダイレクトコマンドに復帰、テキストプログラムは保持  CD:画面上の指定座標の色データを出力  TR:システムから送られるデータをユニットの指定メモリに転送  RQ:ウニットの指定範囲のデータを出力  J :プログラムの実行番地を移す  BK:プログラムリセット、コールドスタート  LT:使用するプログラムエリアの制限    ・――――――――――――――――――――――――――――・  |色コード|モード 0|モード 1|モード 2|モード 3|  |――――+―――――+―――――+―――――+―――――|  |  0 |  黒  |  黒  | 黒   |  黒  |  |  1 |  赤  |  赤2 | 赤1  |  灰1 |  |  2 |  緑  |  緑2 | 赤2  |  灰2 |  |  3 |  黄  |  黄2 | 赤3  |  灰3 |  |  4 |  青  |  青2 | 赤4  |  白  |  |  5 |マゼンダ |マゼンダ3| 赤5  |     |  |  6 | シアン | シアン2| 赤6  |     |  |  7 |  白  |  白  | 赤7  |     |  |  8 |     |  赤1 | 赤8  |     |  |  9 |     |  緑1 | 緑1  |     |  | 10 |     |  青1 | 緑2  |     |  | 11 |     |  黄1 | 緑3  |     |  | 12 |     |マゼンダ1| 緑4  |     |  | 13 |     | シアン1| 緑5  |     |  | 14 |     |  灰  | 緑6  |     |  | 15 |     |  緑3 | 緑7  |     |  | 16 |     |  青3 | 緑8  |     |  | 17 |     | シアン3| 青1  |     |  | 18 |     |  赤3 | 青2  |     |  | 19 |     |  青4 | 青3  |     |  | 20 |     |マゼンダ4| 青4  |     |  | 21 |     |マゼンダ2| 青5  |     |  | 22 |     |  緑4 | 青6  |     |  | 23 |     |  黄3 | 青7  |     |  | 24 |     |     | 青8  |     |  | 25 |     |     | 黄1  |     |  | 26 |     |     | 黄2  |     |  | 27 |     |     | 黄3  |     |  | 28 |     |     | 黄4  |     |  | 29 |     |     | 黄5  |     |  | 30 |     |     | 黄6  |     |  | 31 |     |     | 黄7  |     |  | 32 |     |     | 黄8  |     |  | 33 |     |     |マゼンダ1|     |  | 34 |     |     |マゼンダ2|     |  | 35 |     |     |マゼンダ3|     |  | 36 |     |     |マゼンダ4|     |  | 37 |     |     |マゼンダ5|     |  | 38 |     |     |マゼンダ6|     |  | 39 |     |     |マゼンダ7|     |  | 40 |     |     |マゼンダ8|     |  | 41 |     |     | シアン1|     |  | 42 |     |     | シアン2|     |  | 43 |     |     | シアン3|     |  | 44 |     |     | シアン4|     |  | 45 |     |     | シアン5|     |  | 46 |     |     | シアン6|     |  | 47 |     |     | シアン7|     |  | 48 |     |     | シアン8|     |  | 49 |     |     | 白1  |     |  | 50 |     |     | 白2  |     |  | 51 |     |     | 白3  |     |  | 52 |     |     | 白4  |     |  | 53 |     |     | 白5  |     |  | 54 |     |     | 白6  |     |  | 55 |     |     | 白7  |     |  | 56 |     |     | 白8  |     |  ・――――――――――――――――――――――――――――・    
PCG1200 PCG700と同一ハードのようです またPCG8000ではCPUとPCG基板を挟んで制御信号を取っていたのですが mz−80K2以降CPUが直付けとなり装着が困難でしたが PCG1200は本体の外部バスから制御しています 対応機種はmz−80C/K2/K2E/1200です mz−80Kが対象外なのはおそらくCG ROMの違いの為か不明 PCG700/PCG1200の使用ポート 0E010H:PCG用のキャラクタデータ  d7:CG−RAM D7  d6:CG−RAM D6  d5:CG−RAM D5  d4:CG−RAM D4  d3:CG−RAM D3  d2:CG−RAM D2  d1:CG−RAM D1  d0:CG−RAM D0   0E011H:PCG用のアドレス下位  d7:CG−RAM A7  d6:CG−RAM A6  d5:CG−RAM A5  d4:CG−RAM A4  d3:CG−RAM A3  d2:CG−RAM A2  d1:CG−RAM A1  d0:CG−RAM A0   0E012H:PCG用のコントロール、アドレス上位  d7:未使用  d6: 〃  d5:CG−ROMのコピー  1→0でCG−ROMからCG−RAMへコピー  d4:CG−RAMの書き込み 1→0でCG−RAMに書き込む  d3:SSW         1=PCGオフ、0=PCGオン  d2:CG−RAMセレクト  (CG−RAM A10)  d1:CG−RAM      A9  d0:CG−RAM      A8    PCGの定義はデータ、アドレス下位をセットして、  アドレス上位+書き込みを1にして書き込み  すぐに書き込みを0にしていかないと  後から勝手に定義される場合があるので  必ずPCGデータを書き込みした後  すぐに書き込みを0にするようにします    SSW(ソフトウェアSW)の他にHSW(ハードウェアSW)がありますが  HSWはSSWの信号の接続するかしないかに使用されています    またmz−700ではバンク切り替えでポートとメモリが切り替わっても  このポートはアクセスされるようです(ゲームソフトのゼラトールで確認)  ADVANCED MZ−700のPCGコンパチ基板では  SSW部分はハードのトルグスイッチとなっています   PCG8000 0E010H:PCG用のキャラクタデータ  d7:CG−RAM D7  d6:CG−RAM D6  d5:CG−RAM D5  d4:CG−RAM D4  d3:CG−RAM D3  d2:CG−RAM D2  d1:CG−RAM D1  d0:CG−RAM D0   0E011H:PCG用のアドレス下位  d7:CG−RAM A7  d6:CG−RAM A6  d5:CG−RAM A5  d4:CG−RAM A4  d3:CG−RAM A3  d2:CG−RAM A2  d1:CG−RAM A1  d0:CG−RAM A0   0E012H:PCG用のコントロール、アドレス上位  d7:未使用  d6: 〃  d5:CG−ROMのコピー  1→0でCG−ROMからCG−RAMへコピー  d4:CG−RAMの書き込み 1→0でCG−RAMに書き込む  d3:未使用  d2: 〃  d1:CG−RAM A9  d0:CG−RAM A8   PCG8000とPCG1200(PCG700)との違い SSWの有無    PCG8000    無し、PCG700    有り キャラクタ定義数  PCG8000   128、PCG700   256 接続方法      PCG8000 CPUバス、PCG700 外部 バス   PCG700ではハードを完全に切り離す事が出来るジャンパGSWがあります PCG1200には取り除かれています またロータスのゲームボードGB−10はPCG8000コンパチとなります    
カラーディスプレイ・アダプタ (注)I/O 1981年9月号の本体を改造する記事です。 0E0C1H:カラーデータ  d7:未使用  d6:フロント赤  d5:フロント緑  d4:フロント青  d3:未使用  d2:バック 赤  d1:バック 緑  d0:バック 青   V−RAM 0D000H〜0D3FFHに裏RAMを増設します   通常と同じくVRAMにディスプレイコードを書き込むと   0E0C1Hのカラーデータが裏RAMに書き込まれ   カラーデータとしてカラーモニタに出力されます       <例>    0E0C1Hに047H(フロント赤、バック白)を書き込む    0D000Hに001H(ディスレイコード A)を書き込む    画面左上に白地に赤いAが表示される  
COLOR GAL5 (注)I/O 1984年3月号の吉喜工業のカラーギャル公開記事 0E00CH:カラーデータ  d7:未使用  d6:バック 赤  d5:バック 緑  d4:バック 青  d3:未使用  d2:フロント赤  d1:フロント緑  d0:フロント青   V−RAM 0D000H〜0D3FFHに裏RAMを増設します   通常と同じくVRAMにディスプレイコードを書き込むと   0E00CHのカラーデータが裏RAMに書き込まれ   カラーデータとしてカラーモニタに出力されます      <例>    0E00CHに047H(バック赤、フロント白)を書き込む    0D000Hに001H(ディスレイコード A)を書き込む    画面左上に赤地に白いAが表示される    以降VRAMにディスレイコードを書き込むと    赤地に白いディスレイコードが表示されます    
グラフィック (注)I/O 1982年 3月号の本体を改造する記事です。 0E010H:グラフィック画面オフ、メインRAM 0E011H:グラフィック画面オフ、G−RAM 0E012H:グラフィック画面オン、メインRAM 0E013H:グラフィック画面オン、G−RAM  G−RAMのアドレスは0B000H〜0CFFFH(使用領域は0B000H〜0CF3FH)で  320×200ドットの表示をします。  データd0がドットの左でd7が右のドットになります。    0B000H・――――――――――――――――――――――――――・0B027H        |―+―+―+―+            +―+―+―|        |                          |        |                          |        |―+―+―+―+            +―+―+―|  0CF18H・――――――――――――――――――――――――――・0CF3FH  1ドットのデータのビット順 01234567    
mz−80Kのコーナへ Home へ戻る