mz-80K


ディスプレイへ サウンド、タイマへ ディスクへ   モニタ SP−1002へ BASIC SP−5030へ   mz-80Kのスペック
CPU LH0080(Z80A) 2MHz
PSG 8253内の1つを使用
ROM 4K
RAM 20KB(48KBまで拡張可)+1KB(VRAM)
クリーンコンピュータ(最初はパーソナルコンピュータとして発売)で広いRAMエリアを持つが バグフィックスの手間を省く為の設計であって各種の言語を動かす為ではなく BASICマシンとしてのハード設計だったらしい 純正BASICだけが度重なるバージョンアップしたのもこういう理由なのかもしれない またバージョンアップの為に動かないソフトが出たり他のROM BASICマシンより バージョンによって動作しなかったりする事もある BASICだけでなくマシーンランゲージSP−2001も幾つかの種類があり ソフト内のアドレスを利用したソフトが動かないのもあります   /VBLANKを見ていかないと画面にチリのようなゴミがちらつきコレを防ぐには /VBLANKを待たないといけなくなるのでかなり速度が落ちる(約半分は落ちる)のはいただけない ただしmz−1200以降では改良されている キー入力を素早く行おうとすると、こぼれてしまったりするのも同様である しかしシンプルな設計だけあってプログラミングはやり易いし、分かり易い タイマ割り込みは実質空いているようなものなのでユーザが自由に使えるのが良い CMTは抜群の速度と安定性をほこるのも長所である  
割り込み  mz−80Kからmz−1500はモード1を使用しリセット時は割り込みは禁止になっています  /INTは8253のカウンタ2のOUT2=1、または拡張端子からの割り込み要求があれば0038Hへリスタートします  0038Hは01038Hにフックされているので01038Hにジャンプします  この本体の8253と外部からの割り込みの区別は付かないためユーザがこの事を把握しておく必要があります    mz−80Kでは8253のカウンタを止めるには   3E B0    LD A,0B0H   32 07 E0 LD (0E007H),A    mz−1200以降は8253の割り込みを8255のPC2=0で禁止になります  /NMIはmz−80Kでは使用出来ません  
8255 使用ポート 0E000H−0E003H キーボード、CMT制御、カーソル点滅タイミングの設定、LEDの表示を行います。 モニタでPAは出力、PBは入力、PCはPC7−4は入力、PC3−0が出力で設定されます。     キーボードスキャン  キーボードのデータを読み取るにはキーセレクト(PA3−0)を設定して、  キーデータ(PB7−PB0)を読む事できます。  キーセレクトは0−9までです。  
    LEDの表示  PC2を出力して2つのLEDのどれかを点灯します。   1=緑のLEDの点灯   0=赤のLEDの点灯     カーソルの点滅  PA7でカウンタIC555のリセットを行います。  PC6でカウンタIC555のステータスビット入力を行います。     CMTモータ制御  PC3を0→1にするとモータの切り換えがおこなわれます。  モータの切り換えとはモータは最初は停止しているので  切り換えるとモータが回転、また切り換えるとモータが停止しているいうことです     CMTのモータの状態  PC4を監視するとCMTモータの状態がわかります   1=CMTモータは回転している   0=CMTモータは停止している     CMTの読み書き  PC5でCMTから送られるデータを読み  PC1がCMTに送るデータを書きます  タイミングは全てソフトで行い、モニタではPWM方式の1200ボーで読み書きを行います     画面の表示  PC0で画面の表示の制御を行います  VRAMの内容をクリアするわけではありません   1=画面の表示をする。   0=画面の表示をしない。    
8253 使用ポート 0E004H−0E007H  サウンド、タイマーに使用します。  カウンタ0がモード2のレート・ジェネレータ(mz−700以降はモード3)  カウンタ1がモード2のレート・ジェネレータ  カウンタ2がモード0のターミナル・カウンタになります     サウンド  カウンタ0のモード2のクロックは2MHz(mz−700以降はモード3の895KHz)  ここで分周比を設定します  後、ポート0E008HのBit0がサウンドのOn/Offになります(1=START、0=STOP)     タイマー割り込み  カウンタ1のクロックは31.25KHz(mz−700以降は15.7KHz)  カウンタ2はクロックはカウンタ1のOUT1になります  つまり2つのカウンタが連動して最終的には/INTが掛かるようになります  流れはカウンタ1でカウント、設定したカウンタ1でカウンタ2がカウント  設定したカウンタ2で/INTがかかります    モニタ、BASICではカウンタ1で1秒ごとにカウンタ2をカウント  カウンタ2は12時間ごとに/INTがかかるように設定されています  また、マシーンランゲージでBコマンドで使用しています     8253のカウンタ#0の制御 使用ポート0E008H  TTLロジックでサウンド関係の制御をしています  0E008HのBit0のみの使用  ここのポートは機種によって空きのポートが使用されています  Musicはカウンタ0の波形をスピーカにならすためゲートになります    Bit0:テンポ用タイマーのステータスビット(入力)    Bit0:テンポ用タイマーのステータスビット(出力)       Music 1=Start             0=Stop      
CMT 制御は8255で読み書きのタイミングは全てソフトで行っております(ボーレートの変更可) モニタでは1200ボーのシャープPWM方式を採用しています モニタからロード出来るのはバイナリファイルのみ   長いパルスが1(464μs+494μs) 短いパルスが0(240μs+264μs)で記されます。   読みこむ場合は 368μsを読んで1のままだと”1”、 1から0になると”0”という事になります     インフォメーションブロック(FCB)  ”0”10sec     (”0”*22000)    テープマーク       (”1”*40+”0”*40)  ”1”  インフォーメーション1  128バイト  チェックサム1        2バイト  ”1”  ”0”*256  インフォーメーション2 128バイト(インフォメーション1と同じ)  チェックサム2       2バイト(チェックサム1と同じ)  ”1”     データブロック  ”0” 5sec     (”0”*11000)  テープマーク       (”1”*20+”0”*20)  ”1”  データブロック1    nnmmバイト  チェックサム1        2バイト  ”1”  ”0”*256  データブロック2    nnmmバイト(データブロック1と同じ)  チェックサム2        2バイト(チェックサム1と同じ)  ”1”   (注)チェックサムは単純にデータを足したものではなくビット内容”1”の数になります    データが0FFHなら11111111Bで”1”が8つなので+8        0C0Hなら11000000Bで”1”が2つなので+2        000Hなら00000000Bで”1”が0 なので+0      1バイトデータの内容   ”1”、D7、D6、D5、D4、D3、D2、D1、D0       インフォメーションブロックの内容  ファイルタイプ      1バイト 01=OBJ、02=BTX、03=BSD等  ファイルネーム     16バイト 16文字以下なら最後に00DHが入る  予備           1バイト ファイルネームが16文字なら00DH  長さ           2バイト 下位、上位の順  ロードアドレス      2バイト 下位、上位の順  実行アドレス       2バイト 下位、上位の順  BTXアンリスト     1バイト 000H=オフ、001H=オン  BTXオートスタート   1バイト 000H=オフ、001H=オン  コメント       102バイト     ファイルタイプ  001H:OBJ マシン語のファイル(WICS、M−FORTHのソース等)  002H:BTX BASIC、BASEソース  003H:BSD BASICシーケンシャルデータファイル  004H:BRD BASICランダムデータファイル      :ASC アスキーファイル(アセンブラ、FORMのソース等)  005H:RB  リロケータルバイナリファイル  006H:ASS  007H:EDT  0A0H     パスカルインタープリタプログラム  0A1H     パスカルデータ      
I/Oポート mz−80Kは基本メモリマップ・ド・I/Oを採用して純正オプションの周辺機器がI/Oポートを使用しています。   0E000H:8255 PA(出力) KEYPA   Bit7:NE555 RST カーソル点滅用タイマ 1=リセットしない、0=リセットする   Bit6:未使用   Bit5:未使用   Bit4:未使用   Bit3:PA3 キーセレクト用   Bit2:PA2 キーセレクト用   Bit1:PA1 キーセレクト用   Bit0:PA0 キーセレクト用   0E001H:8255 PB(入力)   Bit7:PB7 キーデータ D7   Bit6:PB6 キーデータ D6   Bit5:PB5 キーデータ D5   Bit4:PB4 キーデータ D4   Bit3:PB3 キーデータ D3   Bit2:PB2 キーデータ D2   Bit1:PB1 キーデータ D1   Bit0:PB0 キーデータ D0   0E002H:8255 PC(KEYPC)   Bit7:PC7(入力)/VBLANK   Bit6:PC6(入力)NE555 OUTPUT カーソル点滅用タイマのステータスビット 入力   Bit5:PC5(入力)RDATA        CMT読み込みデータ   Bit4:PC4(入力)MOTOR        CMTモータの状態 1=回転、0=停止   Bit3:PC3(出力)M−ON         CMTモータの回転・停止の切り替え 立ち上がり(0→1)で切り替わる。   Bit2:PC2(出力)LEDの切り替え     1=緑、0=赤   Bit1:PC1(出力)WDATA        CMT書き込みデータ   Bit0:PC0(出力)/VGATE       1=画面の表示をする、0=画面の表示をしない。   0E003H:8255 CW(KNAST)   8255のコントロールワードです。     0E004H:8253 C0 カウンタ0でモード2 サウンドに使用、クロック2MHz 0E005H:8253 C1 カウンタ1でモード2 /INTで使用、クロック31.25KHz(モニタでは1秒ごと) 0E006H:8253 C2 カウンタ2でモード0 /INTで使用、クロックはカウンタ1(モニタでは12時間ごと) 0E007H:8253 CW 8253のモードコントロールです。   0E008H:   Bit7:未使用   Bit6:未使用   Bit5:未使用   Bit4:未使用   Bit3:未使用   Bit2:未使用   Bit1:未使用   Bit0:テンポ用NE555のステータスビット(入力)/MUSIC 1=Start、0=Stop(出力)    
mz−1200用ポート 0E002H:8255 PC (KEYPC)   Bit7:PC7(入力)/VBLANK   Bit6:PC6(入力)カーソル点滅用タイマのステータスビット   Bit5:PC5(入力)RDATA        CMT読み込みデータ   Bit4:PC4(入力)MOTOR        CMTモータの状態 1=回転、0=停止   Bit3:PC3(出力)M−ON         CMTモータの回転・停止の切り替え 立ち上がり(0→1)で切り替わる。   Bit2:PC2(出力)タイマ割り込みのマスク  1=割り込み許可、0=割り込み禁止   Bit1:PC1(出力)WDATA        CMT書き込みデータ   Bit0:PC0(出力)/VGATE       1=画面の表示をする、0=画面の表示をしない。   0E008H:   Bit7:H−BLANK(入力)   Bit6:未使用   Bit5:未使用   Bit4:未使用   Bit3:未使用   Bit2:未使用   Bit1:未使用   Bit0:テンポ用タイマのステータス(入力)/MUSIC 1=Start、0=Stop(出力)   0E00CH:メモリスワップをする 0E010H:メモリスワップのリセット        メモリスワップはメモリの00000H−00FFFHのモニタROMと0C000H−0CFFFHのRAMを交換することにより        RAMエリアを00000H−0BFFFHにする事が出来ます。   0E014H:ノーマルディスプレイ 0E015H:リバースディスプレイ   0E200H−0E2FFH:ロールダウン、ロールアップ        ロールアップ、ロールダウンはVRAMの表示されるアドレスを変更します(0D000H−0D7FFH内)        その為VRAM領域は0D000H−0D7FFHの2KBとなり、そのVRAM領域内が円筒状となっています。         0E200Hがロールダウン         0E2FFHがロールアップ    
PCG(注)オプションのMZ−700用を基準にしています 0E010H:PCG用のキャラクタデータ   Bit7:CG RAM D7   Bit6:CG RAM D6   Bit5:CG RAM D5   Bit4:CG RAM D4   Bit3:CG RAM D3   Bit2:CG RAM D2   Bit1:CG RAM D1   Bit0:CG RAM D0   0E011H:PCG用のアドレス下位   Bit7:CG RAM A7   Bit6:CG RAM A6   Bit5:CG RAM A5   Bit4:CG RAM A4   Bit3:CG RAM A3   Bit2:CG RAM A2   Bit1:CG RAM A1   Bit0:CG RAM A0   0E012H:PCG用のコントロール、アドレス上位   Bit7:未使用   Bit6:未使用   Bit5:CGROMのコピー  1→0でCG ROMからCG RAMへコピー   Bit4:CGRAMの書き込み 1→0でCG RAMに書き込む   Bit3:SSW        1=PCG Off、0=PCG On *別にHSWがありますがHSWはSSWの信号の接続するかしないかに使用されています。   Bit2:CG RAM A10   Bit1:CG RAM A9   Bit0:CG RAM A8    PCGの定義はデータ、アドレス下位をセットして、アドレス上位+書き込みを1にして書き込み  すぐに書き込みを0にしていかないと後から勝手に定義される場合があるので  必ずPCGデータを書き込みした後すぐに書き込みを0にするようにします。       カラーディスプレイ・アダプタ (注)I/O 1981年 9月号の本体を改造する記事です。 0E0C1H:カラーデータ   Bit7:未使用   Bit6:フロント赤   Bit5:フロント緑   Bit4:フロント青   Bit3:未使用   Bit2:バック 赤   Bit1:バック 緑   Bit0:バック 青    V−RAM 0D000H−0D3FFHに裏RAMを増設します    通常と同じくVRAMにディスプレイコードを書き込むと    0E0C1Hのカラーデータが裏RAMに書き込まれ    カラーデータとしてカラーモニタに出力されます        <例>     0E0C1Hに047H(フロント赤、バック白)を書き込む     0D000Hに001H(ディスレイコード A)を書き込む     画面左上に白地に赤いAが表示される   COLOR GAL5 (注)I/O 1984年 3月号の吉喜工業のカラーギャル公開記事 0E00CH:カラーデータ   Bit7:未使用   Bit6:バック 赤   Bit5:バック 緑   Bit4:バック 青   Bit3:未使用   Bit2:フロント赤   Bit1:フロント緑   Bit0:フロント青    V−RAM 0D000H−0D3FFHに裏RAMを増設します    通常と同じくVRAMにディスプレイコードを書き込むと    0E00CHのカラーデータが裏RAMに書き込まれ    カラーデータとしてカラーモニタに出力されます        <例>     0E00CHに047H(バック赤、フロント白)を書き込む     0D000Hに001H(ディスレイコード A)を書き込む     画面左上に赤地に白いAが表示される       グラフィック (注)I/O 1982年 3月号の本体を改造する記事です。 0E010H:グラフィック画面Off、メインRAM 0E011H:グラフィック画面Off、G−RAM 0E012H:グラフィック画面On 、メインRAM 0E013H:グラフィック画面On 、G−RAM   G−RAMのアドレスは0B000H−0CFFFH(使用領域は0B000H−0CF3FH)で320×200ドットの表示をします。   データBit0がドットの左でBit7が右のドットになります。     0B000H+−+−+−+−+−+−−−−−−−−−−+−+−+−+0B027H         +−+−+−+−+            +−+−+−+         +                          +         +                          +         +−+−+−+−+            +−+−+−+   0CF18H+−+−+−+−+−+−−−−−−−−−−+−+−+−+0CF3FH   1ドットのデータのビット順 01234567   ROM/RAMの切り換え (注)アスキー 1982年 6月号のハード制作の記事です。  システムROMの00000H−00FFFHをROMかRAMの切り換えを行います。  080H:出力      Bit7:1=ROMを選択、0=RAMを選択      Bit6:1=ライトプロテクト オン、0=ライトプロテクト オフ      Bit5:未使用      Bit4:未使用      Bit3:未使用      Bit2:未使用      Bit1:未使用      Bit0:未使用  
MZ−80 I/O−1用  000H−07FH     000H ツクモ ジョイスティック Y   001H ツクモ ジョイスティック X   004H ツクモ ジョイスティック トリガー     MZ−80DU カラーアダプタ用(SP−5030内でアクセスルーチンがある)  0EEH:送受信データ  0EFH:入力      Bit7:不明      Bit6:不明      Bit5:不明      Bit4:不明      Bit3:不明      Bit2:不明      Bit1:???1=受信可、受信不可      Bit0:???1=送信可、送信不可    0EFH:出力     不明  0F0H−0F7H       フロッピーディスク用  0F8H:入力(入力なのですがI/OポートのBit8−12を出力パラメータとして0nnF8Hで読むことで出力を行っています。)       (例)          LD BC,0nnF8H ;nnが出力パラメータ          IN  A,(C)           |      Bit15:未使用    Bit14:未使用    Bit13:未使用    Bit12:T3444M TND    Bit11:MOTOR 1=On、0=Off    Bit10:SE ドライブのセレクトイネーブル    Bit 9:S1 ドライブセレクト Bit1    Bit 8:S0 ドライブセレクト Bit0    Bit 7:1    Bit 6:1    Bit 5:1    Bit 4:1    Bit 3:1    Bit 2:0    Bit 1:0    Bit 0:0    0F8H:出力 SES(Select Sector Address)      0F9H:入力    Bit7:未使用    Bit6:未使用    Bit5:未使用    Bit4:未使用    Bit3:未使用    Bit2:T3444M DRDY Drive Ready    Bit1:T3444M CRDY Controller Ready    Bit0:T3444M RQM  Request Memory Refenence    0F9H:出力 SET(Select Track Address)    Bit7:Side    Bit6:Track D6    Bit5:Track D5    Bit4:Track D4    Bit3:Track D3    Bit2:Track D2    Bit1:Track D1    Bit0:Track D0      0FAH:入力 SEM(Status)    Bit7:C3 CRDY    Bit6:C2 S1    Bit5:C1 S2    Bit4:C0 S3    Bit3:未使用    Bit2:未使用    Bit1:未使用    Bit0:未使用    0FAH:出力 SEM(Command)    Bit7:M0    Bit6:M1    Bit5:M2    Bit4:M3    Bit3:未使用    Bit2:未使用    Bit1:未使用    Bit0:未使用      0FBH:入力 PRM(Permit Memory Reference)  0FBH:出力 PRM(Permit Memory Reference)  
プリンタ 使用ポートは0FEHー0FFHを使用しています。 0FEHがコントロール、0FFHがデータ出力となっています。   RDP    =データの読みこみ指示の信号   /RDA   =プリンタのBUSY信号   1=Not BUSY、0=BUSY(入力)   IRT    =プリンタのリセット     1=リセットする  、0=リセットをしない。   /STATUS=プリンタのエラー      1=通常      、0=エラー    プリンタのアクセスは/RDAをみて1になったら、データをセットしてRDPを0にする。  /RDAが1になったらRDPを0にする。(以降始めから繰り返す)     0FEH:Bit7:RDP(出力)        Bit6:IRT(出力)        Bit5:        Bit4:        Bit3:        Bit2:        Bit1:/STATUS(入力)        Bit0:RDA(入力)     0FFH:プリンタデータ(出力)  
出力端子 右端にあるピンマークが1、上段端子A、下段端子B  A 1:D0   |B 1:GND  A 2:D1   |B 2:GND  A 3:D2   |B 3:GND  A 4:D3   |B 4:GND  A 5:D4   |B 5:GND  A 6:D5   |B 6:GND  A 7:D6   |B 7:GND  A 8:D7   |B 8:GND  A 9:GND  |B 9:GND  A10:A0   |B10:RESET  A11:A1   |B11:GND  A12:A2   |B12:/HALT  A13:A3   |B13:GND  A14:A4   |B14:/M1  A15:A5   |B15:GND  A16:A6   |B16:/WR  A17:A7   |B17:GND  A18:A8   |B18:/RD  A19:A9   |B19:GND  A20:A10  |B20:/IORQ  A21:A11  |B21:GND  A22:A12  |B22:/MREQ  A23:A13  |B23:GND  A24:A14  |B24:/INT  A25:A15  |B25:GND  










 
Home へ戻る