Lesson
9.Monitor
Appendix
|
Lesson 9System-Monitor Program-Memory MapElenco 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」ボタンを押すことにより,モニターから他のプログラムを実行させることができます.
モニタープログラムは,表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]も同じように,動作します.
キーボードのストアボタン(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)を理解する必要があります.
参考文献・WEBサイトなど
|