CR3 with asu-MSX Library for BDS Cの追記

MSX向けのプログラムですが、Windowsで開発することを前提にしています。
開発に必要ないくつかのツール(AAPP,ihex2bin,bloadmake)はCP/MまたはMSX-DOSに移植していません。
ansi2krはCP/M、MSX-DOS、MSX-DOS2に移植しています。
このパッケージは私がホームページで公開しているものと違って私が製作に関わっていない他者作のプログラムを削除してあります。
ライセンス的に再配布できるものであっても、Vectorサイトに登録する場合は私が作者という立場で登録するわけですから誤解のないように抜いておいたほうがよいと思いました。
ある程度まとめてダウンロードしたい場合は私のホームページからダウンロード(現在はcr3develop.zip)しなおしてもいいと思います。
私が開発した以下の物はこのパッケージにも同梱しています。
AAPP(アセンブラのMSX-DOSとMSX-BASICの条件分岐のためのプリプロセッサー)
asu ansi2kr(ANSI C to K&R Cコンパーター)
asu ihex2bin(HEXファイルをバイナリファイルに変換)
asu bloadmake(バイナリファイルにMSXのBLOADヘッダを付加)
私が改造したZCASMB(ZCASMの改良プラスWindows移植版)も同梱しています。

開発する場合で別途必要なものは以下のサイトにあります。

BDS Cコンパイラ
純正のCC.COMは半角カタカナや日本語が文字列として使えないのでバイナリエディタで0から数えて16進数で29D4番目の 7F を FFに書き換えるパッチを当てることをおすすめします。
Z80アセンブラ zmac
CP/M program EXEcutor for Win32)
BDS CではなくHI-TECH Cを使う場合は公式からの配布は終了しているので第三者による二次配布ものをダウンロードすることになります。
配布しているサイトは複数あり、MSX(Z80)のセルフコンパイラにいくつかURLが書いてあります。
もし、HI-TECH CのMSXライブラリを他の物と入れ替えたい場合は、 MSX-C Library 互換ライブラリ for HI-TECH C)と入れ替えることができます。
その場合、コンパイルの指定でmsxcg.c を libm.lib に変えるだけで済みます。

MSXライブラリに何があるかですがソースを見てください。
CR3で使っていない関数は基本的にノーチェックで動くかどうかは分かりません。
HI-TECH Cでは、MSX-DISK-BASICで動くプログラムを作れません。
BDS Cは、MSX-DISK-BASICで動くプログラムも作れます。
BDS CでCP/MまたはMSX-DOS以外で動くプログラムを作る環境をいちから構築するのは難しいです。
それをするには、BDS Cのスタートアップルーチン及びランタイムルーチンのC.CCC(元ソースはCCC.ASMでBASIC対応改造版ソースはCCC.MAC)の改造と標準ライブラリ及び自作ライブラリも動作環境に合うように書き換えて再アセンブルまたは再コンパイルが必要になります。
もし、C.CCCや標準ライブラリのDEFF.CRLまたはDEFF2.CRLを自分で改造する場合、よく理解した上で注意を払わないと暴走するプログラムしか作れなくなります。
アセンブラで関数を自作または改造する場合はBCレジスタを壊したまま終了してはいけません。
BCレジスタを元の値に戻して関数を終了してください。
アセンブラでcall ma1tohとすると、一番目の引数がHLレジスタとAレジスタに入ります。
ma7tohまであり同様に七番目の引数まで取り出せます。
call arghak とすると、arg1 から arg7までのメモリ変数に16ビットの引数が入ります。
8ビットの引数の場合は上位8ビットを無視します。
BDS Cはこれらのルーチンが用意されているためアセンブリ言語での引数の取り出しが非常に楽且つ安全になっています。
ma1toh~ma7toh、arghakとも注意点は、PUSHやPOPなどのスタック操作する前に呼ぶ必要があります。
ma1toh~ma2toh、そしてarghak、arg1~arg7はリロケータブルではなく固定番地です。
これはC.CCCを改造して番地が変わってしまうとライブラリもそれに合わせて設定を変えて再アセンブルまたは再コンパイルしないといけないことを意味します。
標準のCP/M環境の設定でMSX-DOSのプログラムを作る場合、または私が用意したMSX-DISK-BASIC用のライブラリやコンパイルのバッチファイルをそのまま使う場合は難しいことは考えなくていいと思います。
BASIC用に改造したライブラリは、8100Hからスタートするプログラム専用です。
MSX-DISK-BASIC向けプログラムはコンパイラのCC.COM に -m8100 オプション、リンカのCLINK.COMに、-l8100 が必須で、これらのオプションがなければ暴走します。
ANSI C向け記述をした場合はANSI CからK&Rへの変換処理が必要なのでCC.COMを直接呼ばすにacc.bat を呼びます。
acc.batには拡張子は付けません。
acc.batは、ansi2krを呼び出してK&R Cに変換してからCC.COMを呼んでいます。
NabetaJisho
admin@nabeta.tk
24 Mar 2017