FULLMSX.COM

MSXを知ることが早道です…

[やってみましょう BASIC]-[グラフィック]-[サウンドとミュー ジック]-[マシン語]-[ダウンロード]


= MSX-DOS2 TOOLS =

MSXマガジン永久保存版3でMSX-DOS2 TOOLS,MSX-C,MSX-S BUG2,入手することができます。
詳しくは付属のPDFファイルを参考にしてください。

 \ | |  /
<<MSXがさらにくわしく!2010年3月から更新を始めました。>>

MSX-DOS TOOLS
MSX-C
・MSX-Cライブラリ:概要
・MSX-Cライブラリ:ライブラリの作成
・MSXALIB.RELとMSXCLIB.RELの作成
・MSX-Cライブラリ:ライブラリの保守
MSX-S BUG2
TOOLSの詳細
・マクロアセンブラ:マクロって?
・マクロアセンブラ:部分的なプログラムのアセンブル
・再配置可能なオブジェクト
・MACRO-80
・LINK-80
・CREF-80
・LIB-80


まだ、ほとんど古い書き込みのままですが、徐々に書きかえていきます。
ここではMSX-DOS2 TOOLSについての解説です。
MSXでも動作しますが、推奨環境は
MSXturboR以降、1chipMSX高速モード、BlueMSXになります。


M80.COM Z80のクロスマクロアセンブラです。Z80ニーモニックとマクロ命令があります。

L80.COM Z80の複数のオブジェクトファイルにつなげてアドレスを割り当てます。

KID.COM と AKID.COM  日本語入力対応のテキストエディタです。

※CP/Mの環境では動作しないようです。

■KID.COMについて

アセンブラソースリスト、MMLテキストファイル、カスタマイズファイルなどの
テキストファイルの編集ができるテキストエディタです。
[F1]キーなどのファンクションキーを押すといろいろな編集ができます。

★KID.COMでラインをカット、コピーの方法

消したいラインで[F5]キーを押して反転表示させて[RETURN]キーを押すと
複写するか削除するかの表示が出る

★KID.COMでラインをペーストする方法

複写をした後に挿入したいラインで[ctrl]+[@]を押すとペーストされます。
[F2]キーのファイル挿入ではファイルからのペーストができます。

★KID.COMでANSI-ESCを使う方法

[ctrl]+[v]、[ESC]で
^[
と表示され、^[32mと入力します。
サンプルとして
^[[32m こんなことMSXでできるの? ^[[m
と入力すればパソコン通信、MS-DOSのESCシーケンスを入力することができます。
YTを使ってこのU-YAN.TXTを表示すれば
美しい色で表示できます。15年前の話なのでちょっと忘れているかもしれません。


MSX-DOS TOOLS

MSX-DOS1で動作する古いバージョンのCP/M互換のユーティリティです。
クリエイター向けの情報になっています。
このソフトはMSXマガジン等には付属されていません。

MSX-DOSまたはCP/Mの環境で動作します。

M80.COM
L80.COM
MED.COM 

 英数対応のテキストエディタです。

※1chipMSXではMSX-DOSは動作しませんが、SET EXPERTコマンドで
MSX-DOS2環境下で実行できるかは未確認です。

デバッグ方法

 UNDO機能が備わっていない場合、プログラムはまめに保存してMS-01.MAC、MS−02.MACなど
元に戻しにくい場合、セクション分けして名前を変えていくとうまく開発できます。
例えばセクション7で不具合が発生したならば、セクション6にもどり再構築するという利用法です。
 また、2つのファイルを比較して異なる部分をさがしたりなどいろいろなデバッグ方法があります。

各C言語を使用するにはMSXDOS(2)TOOLSが必要になります。
MSXマガジン永久保存版3にはMSX-Cを詳しく特集しています。
 なお、MSXのC言語に詳しいサイトとしては Tatsu's Home Page - MSX  C  Magazine  - があります 。
このページにはSolid C、HI−TECH C、MSX−C 関連のページがあります。


MSX-C

MSX−CをコンパイルするとMSX-DOS2でCOMファイルにできます。
ここでは少ないですが、TIPSとして編集したいと思っています。
cfはCの構文解析、fpcは関数の型をチェック(FPC)、Cの中間言語に変換、
cgはアセンブリ言語に変換、m80からはアセンブラ、L80でRELファイルのリンカ
そして実行ファイルが出来上がります。
この流れをコンパイルといいます。

A>COPY CON C.BAT

cf -f %1
fpc lib %1
cg -k %1
m80 =%1 /z
del %1.mac
l80 ck,%1,clib/s,crun/s,cend,%1/n/y/e:xmain

A>COPY CON CC.BAT

cf %1
cg %1
m80 =%1 /z
l80 ck,%1,clib/s,crun/s,cend,%1/n/y/e:xmain
del %1.mac
del %1.rel


・MSX−Cライブラリ:概要

MSX−Cには標準関数ライブラリを使用できますが、
全てのMSXの機能を使うには別途MSX−Cライブラリを購入する必要があります。
MSXマガジン永久保存版3には付属してあります。

・MSX−Cライブラリ:ライブラリの作成

1枚のディスクまたはディレクトリに以下のファイルを準備します。

MSXALIB.MAC
AMAKE.BAT
ACHG.BAT
MSXCLIB.C
CMAKE.BAT
CCHG.BAT

MSXALIB.MACはアセンブリ言語、MSXCLIB.CはC言語と分かれています。
使用するコマンドファイルも準備しましょう。

LIB80.COM
M80.COM
MX.COM
CF.COM
CG.COM
AREL.BAT
CREL.BAT
STUDIO.H

ヘッダファイルも入れます。

MSXALIB.H
MSXCLIB.H

・MSXALIB.RELとMSXCLIB.RELの作成

A>AMAKE

A>CMAKE

A>COPY CON CC.BAT

cf %1
cg %1
m80 =%1 /z
l80 ck,%1,msxclib/s,msxalib/s.clib/s,crun/s,cend,%1/n/e
del %1.mac
del %1.rel

これで、コンパイルできるようになります。
もし、studio.hがfile not foundの場合、stdio.hをstudio.hに改名してください。
何が何だかわかりませんが、RELファイルとHファイルとTCOファイルを揃えます。
l80 ck,%1,clib/s,crun/s,cend,%1/n/y/e:xmain
から
l80 ck,%1,msxclib/s,msxalib/s.clib/s,crun/s,cend,%1/n/e
と2つのライブラリが追加されたことになります。
L80.COMがないとCOMファイルを作ることができません。

・MSX−Cライブラリ:ライブラリの保守

例えば1つの関数を変更した場合に全てのライブラリを再度コンパイルすると
時間がかかってしまいますのでLINEを変更した場合は次のようになります。

A>ACHG LINE

A>CCHG SCREEN

★MSX-Cの総合環境

・M80.L80とMSX-C標準ライブラリ
・MSX-Cライブラリ

を同じドライブまたはディレクトリにコピーします。
これでやっと環境ができましたね!
Cファイルを準備してプログラミングを始めましょう。
なお、CソースをCCコマンドでコンパイルを実行すると
<< (!) 待ち時間は通常の高速モードでも数分かかります >>



MSX−S BUG2

MSX-DOS2のシンボリックデバッガで
メモリ・ダンプ、逆アセンブル、ユーザープログラムの実行、レジスタ内容の表示、トレース、メモリの書き換えのデバッグ機能があります。



TOOLSの詳細

MSX-DOSTOOLSは文字情報をメインとしているので難しく思うかもしれませんが、
マスターをすれば自分の作ったコマンドをMSX-DOSで実行できるようになります。

 マクロアセンブラはM80とリンカはL80というソフトがある。
この使い方、これからはノートに記載された独自の情報を元に編集した為に経験者向けになりました。

■マクロアセンブラって何?

・マクロって?

パソコン通信を例にしてみましょう。
通常はターミナル(ターム)からモデム(通信機器)にATコマンドを送信することで電話できます。
ネットに電話して、電子掲示板を見て、回線を切るということを日常やっていました。
操作はATコマンドをモデムに送信して、ログの書き込みを始めて、
IDと表示されるとIDを送信して、PASSと表示されるとパスワードを送信して、
コマンドが表示されると記事を全て読むコマンドを送信して、
コマンドが表示されると回線を切るコマンドを送信して、
ログを保存、ただ、コレだけの事です。
マクロ言語はこのような操作を自動化して言語にしたものです。

・部分的なプログラムのアセンブル

アセンブラにも何かそういう便利な機能があるといいですね。
メインのプログラム、画面のプログラムがあるとします。
通常のアセンブラでは1つのプログラムですが、
ソースが長くなると時間がかかってしまいます。
そこで部分的に画面だけを変えたのであれば画面のプログラムをアセンブラします。
かなり割愛していますが^^;こういう機能が
MSX-DOSで動作する便利な高機能マクロ付きアセンブラです。

・再配置可能なオブジェクト?

ロード先のアドレスを指定できるオブジェクトファイルのことです。
例えば0100Hの絶対アドレスは0100Hですね、
たとえば相対アドレスが+3DHならば013DHになります。
このようにオブジェクトは、D000Hだったり0100Hだったりでも
MSXが起動で使っているエリア(ワークエリア)などが重ならなければ
再配置が可能になります。

■MACRO-80

A>M80 <MSX・M80コマンド>

<オブジェクト>,<リスティング>=<ソース>/<スイッチ>

3つのファイルを生成します。M80と入力するとM80プロンプトになります。

.REL オブジェクトファイル
.MAC ソースファイル
.PRN リスティングファイル
.CRF クロスリファレンスファイル

/O アドレス表示を8進数にする
/R .RELはソースファイルと同じファイル名
/L .RPNはソースファイルと同じファイル名
/C クロスリファレンス機能
/Z Z80のアセンブル指示
/I 8080のアセンブル指示
/P スタック領域256バイト追加割り当て
/M データエリアを0
/X 偽条件のリススティング抑止

.RELファイルのみを作成する場合は

M80=TEST

■LINK-80

A>L80 <MSX・L80コマンド>

<オブジェクト>,<オブジェクト>,<オブジェクト…

ライブラリとオブジェクトをリンクして、COMファイルを生成する。

/G プログラム実行。G:<名前>で指定するとパブリックシンボルのアドレスに設定
/E L80の終了。E<名前>で指定するとパブリックシンボルのアドレスに設定
/N プログラムのセーブ。:Pでセグメントのみ(X時のみ有効)
/S オブジェクトライブラリを検索
/U 未定義の外部参照名をリスティング
/M 外部参照マップをリスティング
/O 8進
/H 16進
/P ロード開始アドレス
/D データ領域のロード開始アドレス
/R リセット
/X Intel ASCII16進
/Y シンボルテーブル

■CREF-80

 内部ラベルとその定義位置をリスティングします。

■LIB-80

 オブジェクトモジュールを集めてライブラリファイルを作り、パブリックシンボルの参照などの表示

★アセンブラのを入力した場合

(1)M80互換のマシン語ソースをテキストエディタ、TEST.MACで打ち込む

(2)M80 =TEST.MAC 

(3)L80 TEST,TEST /N/E

これで、TEST.RELとTEST.COMができるようです。

・MSXBASICのASMファイルをMACファイルにする

M80はTAB付き、なしのテキストファイルであれば何でもできます。

REM付きアセンブラプログラムをMSXBASICで
SAVE"TEST.MAC",Aとアスキーセーブする
MSX-DOSならば
A>MED TEST.MAC
MSX-DOS2ならば
A>AKID TEST.MAC
でテキストエディタで
10 ’LD   A,08h
の場合は
LD A,08h
というように行番号とREMを全て削除して保存する。



参考文献:MSX-DOS入門 から