Yamamoto's Laboratory
Lesson
   1.Numbers
   2.Memory
   3.RAM
   4.Ports
   5.Timer
   6.ROM
   7.8085A
   8.Instruction
   9.Monitor
Appendix

Lesson 9System-Monitor Program-Memory Map

Elenco Electronics社のコンピュータートレーニングボード MICRO-MASTER MM-8000 の Lesson 9 に関するメモです.ここでは,モニタープログラムとメモリーマップについて学習します(参照:MM-8000のマニュアルの Lesson 9).

目次


モニタープログラム

モニターは,メモリーにデータを書き込んだり,メモリーのデータを表示したり,任意のメモリーアドレスからプログラムを実行させる,小さなプログラムです.昔使っていたMZ-2000では,「MON」とかいうコマンドでモニターに移れたっけ.

MM-8000では,モニタープログラムは,ROMの0000H〜0002Hと0040H〜012DH,RAMの80DCH〜80FFHに配置します.リセットスイッチがdown側にあるとき,電源ONするとモニターが実行されます.電源がONになると,アドレスの0000H番地から実行されるからです.通常は,最初の3バイトのJMP命令で,ベクター領域を飛び越えます.モニターが動き出すと,キーボードからメモリーにデータやプログラムを書き込むことができるようになります.メモリ中のどんなバイト(データや命令)もディスプレイ(7セグLED)に表示可能です.また,「GO」ボタンを押すことにより,モニターから他のプログラムを実行させることができます.

パラメーター
パラメーター RAMアドレス
Mode L 80FA
Mode H 80FB
Display Data-DDA 80FC
Display Address Low-DAL 80FD
Display Address High-DAH 80FE
モード
モニターモード MODE H MODE L
Data-DA 80 FC
Address Low-AL 80 FD
Address High-AH 80 FE
キーボード
MM-8000のキーボード

モニタープログラムは,表1に示すパラメーターで制御可能です.その実行には,「Data(DA)」と「Address Low(AL)」,「Address High(AH)」という3つのモードがあります.モニタープログラム実行中に,MM-8000のキーボード(右図)でDAを押すと,80FA番地の値がFCに,80FB番地の値が80になります.その後,キーボードで16進数の二桁の値(1バイト)を入力すると,Display Data(DDA)である80FC番地にその二桁の16進数の値が格納されます.同じように,キーボードのALを押すと,80FA番地と80FB番地,80FD番地の値を書き換えることができます.AHボタンでも同じようなことができます.したがって,モニタープログラムの実行モードはMode Lのバイトを見ることで分かります.それが,FCならばDDA,FDならばDAL,FEならばDAHとなります.Mode Hのバイトは常に80です.Mode LとMode Hの二つのバイトで,DDAとDAL,DAHのアドレスを示します.おのおののモードの動作は,以下の通りです.

[注意] 直訳するとこのようになりますが,やっていることは単純です.MM-8000のキーボードのボタン[DA]を押すと Mode L(80FAH番地)が 80Hに, Mode H(80FBH番地)が FCHにになります.Mode L と Mode H に格納されている番地がデータの操作対象の RAM の番地です.次にキーボードから16進数を入力すると,この 80FCH 番地にデータが格納されます.ボタン[AL]と[AH]も同じように,動作します.


データモード(DATA MODE)
キーボードのDAボタンを押すと,モニタープログラムはデーターモード(DATA MODE)になります.このモードで,データ(1バイト:16進数二桁:8ビット)をDDA(80FC番地)に入力します.
DAモードでは,Mode HとMode Lのバイトは80FCになります.DDA(80FC番地)の値である二桁の16進数は,ディスプレイ1と2に表示されます.これらのディスプレイの小数点は,点灯しません.DDAが表示されていることを示しています.キーボードのデータキー(0〜F)のひとつを押すと,DDAの下位の1バイトにそれが入力され,ディスプレイ2(右側の7セグLED)に表示されます.さらにデータを入力すると,それは下位の桁(バイト)になりディスプレイ2に現れ,もともとの下位の桁は高位の桁に移動しディスプレイ1に表示されます.
下位アドレスモード(ADDRESS LOW MODE)
キーボードのALボタンを押すと,モニタープログラムは下位アドレスモード(ADDRESS LOW MODE)になります.このモードで,アドレスの下位の1バイト(1バイト:16進数二桁:8ビット)をDAL(80FD番地)に入力します.
ALモードでは,Mode HとMode Lのバイトは80FDになります.キーボードからのデータは,DDAと同じ方法でDAL(80FD)に格納することができます.ディスプレイも,小数点の表示を除いて,データモードと同じように表示します.ディスプレイ2(右側の7セグLED)小数点が点灯し,DALが表示されている示します.
上位アドレスモード(ADDRESS HIGH MODE)
キーボードのAHボタンを押すと,モニタープログラムは上位アドレスモード(ADDRESS HIGH MODE)になります.このモードで,アドレスの上位の1バイト(1バイト:16進数二桁:8ビット)をDAL(80FE番地)に入力します.
AHモードでは,Mode HとMode Lのバイトは80FEになります.DAL(80FE番地)を表示していることを示すディスプレイ1の小数点が点灯することを除いて,ALモードと同じように動作します.

キーボードのストアボタン(ST)を押すと,DAHとDALで指し示すアドレスに,DDA(80FC番地)のデータをコピーできます.そして,このアドレスは+1加算され,モニターはDAモードになり,格納されたデーがディスプレイに表示されます.アドレスが自動的に+1加算されることにより,引き続いたアドレスにつぎつぎとデータを入力することができます.

キーボードのリードボタン(R)を押すと,DAHとDALで指し示すアドレスのデータを読み込み,DDA(80FC番地)にコピーすることができます.そしてアドレスは自動的に+1加算されます.モニターは,DAモードになり読み込んだデータが表示されます.

キーボードのGOボタンを押すと,DAHとDALで指し示すアドレスに実行が移ります.DAHとDALがプログラムカウンター(PC)の値になります.

キーボードのX1とX2ボタンは,将来の拡張用です.現状は,これらのボタンを押すと,モニタープログラムが再起動します.

メモリー配置

メモリーマップ
メモリーマップ

マシンサイクルの間,8085のアドレスバスは16ビットのアドレス信号を出します.アドレスバスは,16ビットなので,216=65,536(64Kバイト)のメモリーの番地指定ができます.MM-8000のシステムは,2KバイトのROMと256バイトのRAMで構成されます.したがって,8085がダイレクトにアクセスできる64Kバイトのアドレスの大部分は使われません.ROMとRAMの使う領域を決めるために,アドレスラインのA15をチップセレクタとして使います.これは,リニアセレクション(?)と呼ばれます.RESETとENROM,ENRAMのスイッチが下側のとき,アドレスラインA15は,ROMのCEとRAMのCEに接続する.こうすることにより,A15がLowの場合にはROMが,Highの場合にはRAMが選択されます.したがって,ROMのアドレスは8000以下で,RAMは8000以上のアドレスにアサインされます.ここで使うRAMはたったの256=28バイトなので,必要なアドレスラインはA0からA7です.バスのラインA8からA14は1でも0でも影響は有りません.簡単のため,A8からA14はゼロ(Low)として取り扱います.それゆえ,RAMはアドレス空間の8000から80FFを占有します.同様に,ROMは0000から07FFを占有します.


入出力

MM-8000に使われているCPU 8085の外部機器とのデータの入出力方式は,I/OマップドI/Oです.これは,I/Oサイクルとメモリーサイクルの区別をメモリーのアドレスラインではなくIO/Mを使います.入出力命令では,命令の第二バイト(ポートバイト)はアドレスデータバス(A0-A7)と繰り返してA8-A15のアドレスバスに送り出されます.8156を使用するためには,ポートバイトのビット7(同じ繰り返しのA15)は1でなくてはなりません.Lesson 4で示したようにこのポート(C)では,ビット7はポートデータには全く影響を与えません.

先に述べたとおりポートを使う場合,A0-A7とA8-A15は同じビットパターンが繰り返されます.Lesson 10回路図を見て分かるとおり,このうちA15は8155のCEに接続されています.A15が1(H)の時,8155のCEが0(L)になり,8155が使える状態になります.

拡張

メモリーとI/Oを拡張するために,MM-8000には一つの44ピンのエッジボードコネクターと二つの16ピンICコネクターが用意されています.拡張端子に他の機器を接続する場合には,回路図(Appendix 4)を理解する必要があります.

エッジボードコネクターのピン
ピン番号 信号名 信号の元 or 先 ピン番号 信号名 信号の元 or 先
1 INTR 8085-10 2 電源電圧 UNREG
3 RST 5.5 8085-9 4 GROUND
5 RST 6.5 8085-8 6 CE-ROM 2816-18
7 RST 7.5 8085-7 8 INTA 8085-11
9 TRAP 8085-6 10 SID 8085-5
11 A8 8085-21 12 SOD 8085-4
13 A9 8085-22 14 RST OUT 8085-3
15 A10 8085-23 16 S0 8085-29
17 A11 8085-24 18 S1 8085-33
19 A12 8085-25 20 READY 8085-35
21 A13 8085-26 22 CLK OUT 8085-37
23 A14 8085-27 24 HLDA 8085-38
25 A15 8085-28 26 HOLD 8085-39
27 KEY 28 KEY
29 GROUND 30 AD0 8085-12
31 ALE R7→8085-30 32 AD1 8085-13
33 WD> 8085-31 34 AD2 8085-14
35 RD 8085-32 36 AD3 8085-15
37 CE RAM 8155-8 38 AD4 8085-16
39 IO/M 8085-34 40 AD4 8085-17
41 TIMER OUT 8155-6 42 AD6 8085-18
43 TIMER IN 8155-3 44 AD7 8085-19
16ピンICコネクター S1
ピン番号 信号名 信号の元 or 先
1 OPEN
2 OPEN
3 OPEN
4 OPEN
5 OPEN
6 OPEN
7 OPEN
8 OPEN
9 +5V
10 GROUND
11 PORT C-5 8155-5
12 PORT C-4 8155-2
13 PORT C-3 8155-1
14 PORT C-2 8155-39
15 PORT C-1 8155-38
16 PORT C-0 8155-37
16ピンICコネクター S2
ピン番号 信号名 信号の元 or 先
1 PORT A-7 8155-28
2 PORT A-6 8155-27
3 PORT A-5 8155-26
4 PORT A-4 8155-25
5 PORT A-3 8155-24
6 PORT A-2 8155-23
7 PORT A-1 8155-22
8 PORT A-0 8155-21
9 PORT B-0 8155-29
10 PORT B-1 8155-30
11 PORT B-2 8155-31
12 PORT B-3 8155-32
13 PORT B-4 8155-33
14 PORT B-5 8155-34
15 PORT B-6 8155-35
16 PORT B-7 8155-36

参考文献・WEBサイトなど

  1. MM-8000のマニュアルの Lesson 9


no counter