mz-80K Display
V−RAM
ディスプレイコードとアスキーコード
左がディスレイコード、右がアスキーコード
ディスプレイコードの並び方が一見バラバラにみえますが
Aにはスペード、チ、Bには逆三角、コ...と000H−0BFHまで
通常、シフト、カナと040Hスライドしていきます
この方式は海外仕様の本体でもCGROMの変更だけで済みます
40×25の1000文字を0D000H−0D3E7HのV−RAMに割り当てられています。
ここにディスプレイコードを書込むとキャラクタ文字が出るわけです。
また、CPUメモリなのでプログラムを書いて実行もできますが
その部分は当然ディスプレイコードで表示されます。
領域は1KBなので0D3E8H−0D3FFHは未使用(空き)となります
またミラーとなるので0D400H、0D800H、0DC00Hは0D000Hと同じになります
VRAMに直接書き込むデータはディスプレイコードを書き込みますが
システムコールではアスキーコードで書き込む場合があります
ディスプレイコード040Hと080Hのスペースにはmz−700で新たにキャラクタが定義されています
ここをスペースとして使うとMZ−700以降では画面が化けます
したがって通常のスペースは000Hを使用する事が望ましい事になります。
アクセス方法
VRAM領域にある0D000H−0D3FFHにディスプレイコードを書き込むだけなのですが
/VBLANK期間内(4ms)に書き込まないと一瞬画面にゴミのようなものが出てチラツキが発生します
そこでPPI /VBLANK PC7=1からPC=0になるまで監視する必要があります
この監視部分が、かなりの速度低下につながります。
なにしろ全VRAMをLDIRのブロック転送でチラツキ無しでは
3回ほど分けないといけません
またmz−80A/1200/700/1500では
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 | |
・−−−−−−−−−−−−−−−−−−−−−−−−−−−−・
mz−80Kのコーナへ
Home へ戻る