
■■■ シミュレータデバッガ( MtSIM68k Version 0.9) ■■■■■
0.はじめに
このシミュレータデバッガは、MS-DOS上で MC68000の動作をシミュレート
するものです。1行アセンブルや逆アセンブル、トレースやブレーク、
メモリとファイル間のプログラム転送機能など、一通りの機能は揃ってい
ます。
手元にある VMEボードのデバッガをモデルにして作りました。ウィンドウ
がパカパカ開く昨今のデバッガに比べ格好は良くないですが。 MC68000
の命令の基本的な動きを見るには手っ取り早くてよいかと思います。
ユーザーズマニュアルまではとても手が回りませんでした。本書にざっと
目を通し、適宜 MTSIM68K.HLP を見ながら触っていただければ、このての
デバッガはどれも大体は似たようなものですので十分お使いになれると思
います。
なお、MtSIM68kにはMS-DOS版と Human68k 版がありますが、この説明は、
MS-DOS用に書かれています。したがいまして、 Human68k でお使いの方は
MS-DOSを Human68k と、またMTSIM68K.EXEをMTSIM68K.Xと置き換えてお読
み下さるようお願いします。
1.ファイルの構成
ファイルには次のものがあります。このうち必ず必要なのは最初の2つだ
けで、MTSIM68K.CFGはメモリ配置の参考用、あとは簡単な説明とそのため
のサンプルプログラムです。
MTSIM68K.EXE シミュレータデバッガのMS-DOS用実行ファイル
MTSIM68K.X 〃 のHuman68k用実行ファイル
MTSIM68K.HLP コマンドの使い方を書いたヘルプファイル
MTSIM68K.CFG ボードのメモリ配置などを書いたファイル
SAMPLE.ASM MC68000アセンブラのサンプルプログラム
SAMPLE.LST サンプルプログラムのリストファイル
SAMPLE.MX サンプルプログラムの実行モジュール
レジスタの内容と1000番地から逆アセンブルした表示画面

2.使用前の予備知識
■ディレクトリの位置
実行ファイル(MtSIM68k.EXE)はパスの通っているディレクトリまたはカレ
ントディレクトリに置いて下さい。
ヘルプファイル(MtSIM68k.HLP)は MtSIM68k.EXE と同じディレクトリに置
いて下さい。HELPコマンドの詳細表示ができます。
コンフィグレーションファイル(MtSIM68k.CFG) は MtSIM68k.EXEと同じ
ディレクトリ、またはカレントディレクトリにいれて下さい。両方にある
ときはカレントディレクトリを先に探します。
■ヘルプファイル
コマンドの使い方を書いたファイルです。MtSIM68kの ?コマンドを実行す
るときに参照します。テキストファイルですので MS-DOS の type コマン
ドなどで見ることができます。
■コンフィグレーションファイル
シミュレータデバッガの仮想メモリを割付けするためのコマンドを書いた
ファイルです。MtSIM68kが起動時に読み込んで必要なサイズのメモリを
MS-DOSから確保します。
仮想メモリのアドレスとサイズを決めるのは MEMコマンド、実際にメモリ
を確保するのは ALLOCコマンドです。この2つはコンフィグレーション
ファイルには必須です。
他にも起動時に実行しておきたい命令があれば書いておくことができます。
■メモリの割り付け
仮想メモリのアドレスとサイズ、すなわち、シミュレータデバッガ上の
ROMや RAMのアドレスとサイズを決めることで、 MEMコマンドを使います。
オリジナルの MtSIM68k.CFG を手本にしてお使いのボードと同じメモリ
割付けのコンフィグレーションファイルを作って下さい。 MtSIM68k.CFG
自体を変更してもいいですし、別のファイル名で作成してもかまいません。
ただし、メモリサイズがあまり大きいと、「メモリが不足である」のメッ
セージが表示されますので、エラーにならない程度のメモリサイズでお使
い下さい。
割付けられたメモリの状態は MEMコマンドで参照することができます。
■メモリモード
MEM コマンドにメモリモードというのが出てきます。 ROM, RAM, IO の
3つがありますが、 ROMと RAMは名前のとおり、読み出しだけのメモリと
読み書き可能なメモリのことです。ただし、 ROMといっても MC68000の命
令を実行しているときだけのことで、シミュレータデバッガのコマンドに
よる ROMモードのメモリの書き換えは自由にできます。
IOは実際の Input/Output をシミュレートさせたいと思って用意したの
ですが動作の定義方法に困って、今のところは RAMとまったく同じ動作を
するだけです。
メモリモードはMtSIM68kが起動した後でも、 MEMコマンドで変更すること
ができます。
3.操作方法
■終了方法
シミュレータデバッガを終了するのは次のコマンドです。
MtSIM68k > q↓
この時、「セーブするか」とか「本当に良いか」とか確認してきますが、
全部↓(リターン)だけ押していれば MS-DOSに戻ります。
■操作がわからないとき
次のように入力すると起動方法を表示します。また起動後のHELPコマンド
でも最初に同様な表示をします。
A>mtsim68k -h↓
起動後に ?↓ と入力するとコマンドの一覧表示をします。個々のコマンド
の詳しい操作を知りたい時 ? に続いてコマンド名を入力します。たとえば、
次のように入力とするとMDコマンドの詳しい説明を表示します。
MtSIM68k > ?MD↓
■起動方法
MTSIM68K.EXE, MTSIM68K.HLP, MTSIM68K.CFGの3つをカレントディレクト
リ、またはパスの設定してあるディレクトリにいれて、次のように入力し
て下さい。
A>mtsim68k↓
よほどメモリが少ない場合でない限り、次のプロンプトが表示されます。
MtSIM68k >
この時、「メモリが不足である」と表示されてMS-DOSへ戻るようでしたら、
メモリの割り付け量が多いためなので、 MTSIM68k.CFG の MEMコマンドを
少な目に変更してみて下さい。
4.基本的な操作例
sample.mxというファイルはメモリの $40000 から $40009 までのメモリに
に 'A'から'J'までの文字を順に詰めるという動作をする簡単なプログラム
です。$1000からロードするようなモトローラSフォーマット形式になって
います。これをメモリにロードして実行して見ます。以下にその手順を示
しますのでやってみて下さい。
プログラムをメモリにロードします。
MtSIM68k > read sample.mx↓
逆アセンブルしてみるとプログラムが表示されます。
MtSIM68k > md 1000 ;di↓
プログラムカウンタを $1000にします。
MtSIM68k > .pc 1000↓
レジスタの表示をします。
MtSIM68k > df↓
1命令だけトレースします。
MtSIM68k > tr↓
もう1命令だけトレースします。この場合は↓だけで動作します
MtSIM68k > ↓
5命令を続けてトレースします。
MtSIM68k > tr 5↓
こんどは $101aにブレークポイントを設定してみます。
MtSIM68k > br 101a↓
GOコマンドで $1000から実行しますとブレークポイントで停止します。
MtSIM68k > go 1000↓
$40000からメモリを見ると 'A'から 'J'までの文字が入っています。
MtSIM68k > md 40000↓
プログラムを変更してみます。10回まわっているループを16回に変更して
'A'から 'P'までの文字を詰めるようにします。逆アセンブルしてみると
$1000でループ回数をD0に設定していますので、D0には20を設定するよう
にします。
1行アセンブルにはいるとオペコードとニーモニックが表示されます。
MtSIM68k > mm 1000 ;di↓
00001000 303C000A MOVE.W #10,D0 ?
かまわずに ?の上から新しい命令を書きます。
00001000 303C000A MOVE.W #10,D0 move.w #16,d0↓
新しいオペコードを表示してつぎのアドレスに移ります。
00001000 303C0010
00001004 123C0041 MOVE.B #65,D1 ?
ここで .(ピリオド)をいれると1行アセンブルから抜けます。
00001004 123C0041 MOVE.B #65,D1 .
MtSIM68k > go 1000↓
GOコマンドで $1000から実行しますとブレークポイントで停止します。
MtSIM68k > go 1000↓
$40000からメモリを見ると 'A'から 'P'までの文字が入っています。
MtSIM68k > md 40000 20↓
5.便利な使い方
■コマンドファイルを作る
いくつかのコマンドを組み合わせて使うときは、コマンドファイルに書い
ておくと便利です。
たとえば、 sample.mxというプログラムファイルをメモリに読み込んで、
ブレークポイントを $1000に設定して、 $1000から実行するという処理を
cmds というファイルに書いて、次のように入力すると実行してくれます。
MtSIM68k > @ cmds↓
このときの cmdsファイルの内容は次のようになります。
read sample.mx
br 1000
go 1000
■現在の状態を保存する
いったん終了して、あとで同じ状態から再開したい場合があります。その
ようなときは終了時にファイル名を入力して現在の状態をゼーブして下さ
い。セーブしたファイルをコンフィグレーションファイルとして次回の起
動時に読み込ませると終了時と同じ状態になります。
たとえば、 savefile という名前のファイルなら、次のようにします。
現在の状態をセーブするならファイル名を入れて下さい? savefile↓
次回起動するときにファイル名を指定します。
A>mtsim68k savefile↓
セーブが終了した後のファイルには、指定したファイル名の他に拡張子の
部分が $$0, $$1, $$2 などのファイルができます。これは各メモリロ
ケーションの内容を書き出したバイナリファイルですので、既にあるファ
イルと衝突しないよう注意して下さい。
6.記録をとる
操作履歴のログ、あるいはコマンドのリダレクションできれば良いのです
が残念ながらそこまで対応してません。でうしてもという方は次のような
方法を試みて下さい。
■プリンタに記録する。
プリンタをつないで^Pを入力すると表示内容がそのままプリントされ
ます。
■ログのとれるターミナルを使って AUXから操作する。
別のパソコンでログのとれるターミナルソフト( WTERMなら十分)を走ら
せます。シミュレータデバッガの走るパソコンでは CTTY AUX を実行して
AUXから入出力ができるようにします。両パソコンを RS-232Cケーブル
でつなぐとターミナルからデバッガの操作ができます。
7.最後に
本ソフトウェアは私個人の学習用に作ったもので、不具合などは見つかっ
たときに必要に応じて直せばいいと思っていました(それがまたなかなか
勉強になります)。
そんな具合ですから、まだまだおかしな動きをするところがいっぱいある
かと思います。不具合など指摘していただければ早急に対応したいとは
考えていますが、なにぶんにも片手間でやっていることなのでご期待に添
えるかどうか分かりません、よろしく理解願います。
本ソフトウェアが皆様の68kアセンブラの学習に役立つこと、ひいては
68流のソフトウェアの発展に役立てば幸いです。
1995年11月25日
YAM
(旧) NIFTY-Serve MHH02665
(Mount)
![]()
■ダウンロード
MtOS68k Ver0.9b(LZH形式)
![]()
| 更新 2010.2.11 |