-

「LIBRARIES PUBLIC DOCUMENT BTM」の版間の差分

提供: HI-TECH C for CP/M Fan WIKI(JP)
移動先: 案内検索
(ページの作成:「NestorBeTeMes 1.01, by Konami Man, 2-2001 ----------------------------------------- ==これは何?== NestorBeTeMesは、BTM(メモリにロードされたBAT)ファ...」)
(タグ: モバイル編集モバイルウェブ編集)
(相違点なし)

2017年8月22日 (火) 12:29時点における版

NestorBeTeMes 1.01, by Konami Man, 2-2001


これは何?

NestorBeTeMesは、BTM(メモリにロードされたBAT)ファイルのセットです。これはコンパイルとライブラリ管理で、HI-TECH C単体では不可能だったサブディレクトリをサポートすることで HI-TECH Cを簡単に使えるようにします。

例えば、こういったことが可能です。

C:\COMS>c2x A:\SOURCES\TEST

A:\SOURCESに置かれた、TEST.CはTEST.COMにコンパイルされ、C:\COMSに置かれます。コンパイラ自体は他のどのディレクトリ、例えば、D:\HITECHCなどに置くことができます。

NestorBeTeMesは、完全なHI-TECH Cパッケージ。つまりC.COM, CGEN.COM, CPP.COM, LIBR.COM, LINK.COM, OBJTOHEX.COM, OPTIM.COM, P1.COM, ZAS.COM, CREF.COM, LIBC.LIB and CRT.O)が必要なのは当然ですが、この他にも Fokke Post氏、別名CPU氏の開発したCOMMAND 2.4xコマンドインタプリタも同様に必要です。

インストール

NestorBeTeMesを使う前に、以下の作業を行ってください。 Before using NestorBeTeMes you must perform the following operations:

1) コンパイラ用のディレクトリを作成する。例えばA:\HICなど。

2)全てのHI-TECH Cファイル(前章のリスト参照)、全てのヘッダファイル(.Hファイル)、NestorBeTeMesを構成するBTMファイルの全てを新しいディレクトリにコピーします。

3)AUTOEXEC.BATを変更し、NestorBeTeMesに必要な環境変数(command SET variable=value)をきちんとセットする。

HICPATH
HI-TECH Cがあるディレクトリを表します。例えばSET HICPATH = A:\HIC。BTMは、この変数がないとどれも動きません。
PATH
HI-TECH Cディレクトリをインクルードするように変更する必要があります。
例えば、HICPATHの前にSET PATH =

%PATH%;%HICPATH%と設定します。

CRCHO
ONになっている場合、BTMの実行がverboseになり、全てのBTMの命令が実行前にスクリーンに表示されます。OFFの場合にはverboseにはなりません。ECHOの設定により、実行がverboseになります。
HICDEFL
ソースファイルをコンパイル、リンクする際に(C2X.BTMと一緒に)、もしくはリンクのみをする時に(O2X.BTMと一緒に)、常にスキャンするオブジェクトファイルを指定します。

ライブラリはセミコロン (";")で区切った形で、省略フォーマット(LIBXXX.LIBはXXX)を使って指定します。

例えばSET HICDEFL = f;gfx;sndと指定した場合に、常にスキャンされるライブラリはLIBF.LIBとLIBGFX.LIBとLIBSND.LIBです。LIBC.LIBは指定する必要がありません。なぜなら、HI-TECH C標準ライブラリは常にスキャンされるからです。この変数はオプションです。

HICLIB
この変数はライブラリ管理用のBTM(O2L.BTM,

C2L.BTM, A2L.BTM, DL.BTM, VL.BTM, EL.BTM and XL.BTM)で使われます。これはライブラリ名が指定されなかった時 (LIBXXX.LIBをXXXとする省略フォーマット)に命令が参照するライブラリを指定します。この変数はオプションですが、もしこれがないとBTMを実行する時つねに正確なライブラリ名が必要になります。

4)変数がセットされるように、新しいAUTOEXEC.BATを実行したり、マシンをリセットしたりしてください。

その瞬間からコンパイル、アセンブル、リンクする時に、どこのディレクトリにファイルがあってもNestorBeTemesが使えます。 ただし、コンパイラ、ライブラリ、ヘッダファイルは、(HICPATHで指定した)同じディレクトリに置いてください。

BTMs詳細

短いけれど同時に明白な名前をBTMにつけるようにしました。a2b.BTMは"aタイプのファイルをbタイプに変換する"という意味です。aやbの部分に使われるのはC(Cのソースファイル)、A(アセンブラソースファイル)、X(.COM実行ファイル)、O(オブジェクトファイル)、L(ライブラリファイル、この場合"変換する"のであって、"挿入する"点に注意)。

aL.BTMは"aという操作をライブラリに対して行う"という意味で、aの部分に使われるのは L (list fileファイルのリスト), X (extract fileファイルの解凍), D (delete fileファイルの削除) or E (relocate file at the end of the libraryライブラリの最後にファイルをリロケートする).です。

EDH.BTMは".Hファイルを編集する"という意味です。

もし、この名前が気に入らなければBTMファイルをお好きな名前に付け替えられます。唯一変えることができないのがCOMUN.BTMで、これは他のBTMから参照されているためです(もし、この名前を変更するのであれば、comun.btmという文字列を全てのBTMで変更し、新しい名前にしてください。)

詳細なBTMの記述は以下の通りです。


2X
このBTmはCソースファイルをコンパイルし、適切なライブラリと連結して、.COM実行ファイルを作成します。
この書式は以下の通りです。
C2X [path]file[.ext] [options for C.COM]
ソースファイルは特定のパス(パスが設定されていない場合はカレントディレクトリ)をサーチし、カレントディレクトリにターゲットファイルが生成されます。拡張子が与えられない場合、.Cとみなされます。
このプロセスによって検索されるライブラリは、LIBC.LIBと、前章で説明したHICDEFL変数で指定されたものか、"C.COMのオプションの一部として"-LXXX(LIBXXX.LIBを指定する場合)"で指定されたものです。
ライブラリファイル以外に、"C.COMのオプションとして"の一部の名前を指定するだけで、リンクされるオブジェクトファイルをリンクできます。しかし、このファイルはHI-TECH C ディレクトリに置かれている必要があります。
Examples:
C:\COMS>SET HICDEFL=
C:\COMS>c2x A:\SOURCES\TEST
A:\SOURCESに置かれているTEST.Cをソースとして読み込んで、C:\COMS内のTEST.COMを生成します。LIBC.LIBのみをリンク時にスキャンします。
C:\COMS>SET HICDEFL=
C:\COMS>c2x A:\SOURCES\TEST -Lgfx
前のものと同じですが、LIBC.LIB とLIBGFX.LIBがリンク時にスキャンされます。
C:\COMS>SET HICDEFL=f;snd
C:\COMS>c2x A:\SOURCES\TEST
前のものと同じですが、LIBC.LIBとLIBF.LIBとLIBSND.LIBがリンク時にスキャンされます。
C:\COMS>SET HICDEFL=snd
C:\COMS>c2x A:\SOURCES\TEST -Lgfx
前のものと同じですがLIBC.LIBとLIBSND.LIBとLIBGFX.LIBをスキャン時にリンクします。
O2X
このBRMは特定のライブラリとオブジェクトファイルをリンクします、.COM実行ファイルを生成します。
O2X [path]file[.ext] [options for LINK.COM]
ソースファイルを、特定のパス(パスが指定されていない場合はカレントディレクトリ)でサーチし、ターゲットファイルがカレントディレクトリに生成されます。
このプロセスによって検索されるライブラリは、LIBC.LIBと、前章で説明したHICDEFL変数で指定されたものか、"C.COMのオプションの一部として"-LXXX(LIBXXX.LIBを指定する場合)"で指定されたものです。
C2Xの例ではTEST.Oが指定されたと仮定していますので、見てください。
C2O
このBTMはCソースファイルをコンパイルしますが、リンクはしませんので、単純にオブジェクトファイルを返すだけです。書式は以下の通りです。
C2O [path]file[.ext] [options for C.COM]
ソースファイルは特定のパス(パスが設定されていない場合はカレントディレクトリ)をサーチし、カレントディレクトリにターゲットファイルが生成されます。拡張子が与えられない場合、.Cとみなされます。
Example:
C:\OBJS>c2o A:\SOURCES\TEST
A:\SOURCESに置かれているTEST.Cをソースとして読み込んで、C:\COMS内のTEST.COMを生成します。LIBC.LIBのみをリンク時にスキャンします。


A2O
このBTMはアセンブラソースファイルをアセンブルし、オブジェクトファイルを返します。書式は以下の通りです。
A2O [path]file[.ext] [options for C.COM]
ソースファイルは特定のパス(パスが設定されていない場合はカレントディレクトリ)をサーチし、カレントディレクトリにターゲットファイルが生成されます。拡張子が与えられない場合、.ASとみなされます。
Example:
C:\OBJS>a2o A:\SOURCES\TEST
A:\SOURCESに置かれているTEST.ASをソースとして、C:\OBJS内にTEST.Oを生成します。
C2L
このBTMはCソースファイルをコンパイルしますが、リンクはしません。オブジェクトファイルが生成されて適切なライブラリファイルに挿入されます。書式は以下の通りです。
C2L [path]file[.ext] [library]
ソースファイルは特定のパス(パスが設定されていない場合はカレントディレクトリ)をサーチし、カレントディレクトリにターゲットファイルが生成されます。拡張子が与えられない場合、.ASとみなされます。
[library]では省略したフォーマットで(LIBXXX.LIBはXXX)、

生成したオブジェクトファイルが挿入されるライブラリ名を指定します。

HICPATHで指定されたディレクトリに、与えられた名前のライブラリファイルが無い場合、新しく作成されます。
[library]が指定されない場合、HCLIBが使用されます。
[library]もHICLIBも存在しない場合はエラーメッセージが表示されます。
Examples:
C:\COMS>SET HICLIBL=def
C:\COMS>c2l A:\SOURCES\TEST
A:\SOURCESに置かれているTEST.Cをソースとして、TEST.Oを生成し、LIBDEF.LIBにライブラリファイルを挿入します。
C:\COMS>SET HICLIB=def
C:\COMS>c2l A:\SOURCES\TEST mine
前の例とおなじですが、ここで使用されるライブラリはLIBMINE.LIBです。
C:\COMS>SET HICLIB=
C:\COMS>c2l A:\SOURCES\TEST mine
次のメッセージが表示されます

*** Error: library name was not specified and HICLIB does not exist

A2L

このBTMはアセンブラソースファイルをアセンブルし、適切なライブラリファイルに挿入される、オブジェクトファイルを生成します。書式は以下の通りです。

A2L [path]file[.ext] [library]
指定されたパス(パスが指定されない場合はカレントディレクトリ)でソースファイルが検索されます。もし、拡張子が与えられない場合は、ASとみなされます。


[library]の意味と例はC2L.BTMを参照してください
O2L
このBTMは既に存在するオブジェクトファイルを適切なライブラリに挿入します。書式は次の通りです。
O2L [path]file[.ext] [library]
指定されたパス(パスが指定されない場合はカレントディレクトリ)でソースファイルが検索されます。もし、拡張子が与えられない場合は、ASとみなされます。
[library]の意味と例はC2L.BTMを参照してください
VL
このBTMはオブジェクトファイルを探しながらライブラリファイルをスキャンし、名前がみつかった表示します。また、見つかったファイルの中で定義されているシンボルと使われているシンボルをオプション的に表示します。
VL [@]file[.ext] [library]
VL [@]* [librer¡a]
このライブラリは明確に指定されるか、C2L.BTMと同様の方法で、HICLIB変数を介して指定されます。
指定されたファイルはライブラリファイルの中で検索されます(もし、拡張子が与えられない場合は、Oとみなされます。見つかった場合は、シンプルに名前が表示されます。見つからなかった場合は何も表示されません。

特定のファイル内で全てのシンボルが定義されて使われている場合、その名前の代わりに"@"がファイル名の前につけられて表示されます。"@"がファイル名の代わりに指定された場合、ライブラリ内に含まれる全てのオブジェクトリストが表示されます。"@*"は全てのファイルの全てのシンボルを表します。

Examples:
A:\>SET HICLIB=def
A:\>vl myobject
MYOBJECT.OがLIBDEF.LIBに存在する場合、MYOBJECT.Oの名前がスクリーンに表示されす。それ以外は何も表示されません。
A:\>vl * mine
LIBMINE.LIBに含まれる全てのオブジェクトファイルリストを表示します。
A:\>vl @myobject mine
LIBMINE.LIBにMYOBJECT.Oが存在する場合、全ての定義されて使われているシンボルが表示されます。その他の場合、何も表示されません。
DL
このBTMはライブラリファイルからオブジェクトファイルを削除します。書式は以下の通りです。
VL file[.ext] [library]
ライブラリの指定は、C2L.BTMと同様に明示されるかHICLIB変数を介して指定されます。拡張子が無い場合、.Oとみなされます。
Examples:
A:\>SET HICLIB=def
A:\>dl myobject
MYOBJECT.OファイルをLIBDEF.LIBから削除します。
A:\>dl myobject mine
MYOBJECT.OファイルをLIBMINE.LIBから削除します
XL
オブジェクトファイルを削除することなくライブラリファイルから抽出します。書式は以下の通りです。
XL fichero[.ext] [librer¡a]

ファイルがカレントディレクトリにコピーされます。ライブラリの指定はC2L.BTMと同様の方法で明示的に、もしくはHICLIB変数を介して行われます。拡張子が無い場合、.Oとみなされます。

Examples:
A:\OBJS>SET HICLIB=def
A:\OBJS>xl myobject
MYOBJECT.OファイルをLIBDEF.LIBからA:\OBJSにコピーします
A:\OBJS>xl myobject mine
Copies file MYOBJECT.O from LIBMINE.LIB into A:\OBJS

MYOBJECT.OファイルをLIBDEF.LIBからA:\OBJSにコピーします。

EL
このBTMはライブラリファイルに含まれるオブジェクトファイルを検索し、それをライブラリの最後部に再配置します。書式は以下の通りです。
EL fichero[.ext] [librer¡a]
ライブラリの指定はC2L.BTMと同様の方法で明示的に、もしくはHICLIB変数を介して行われます。拡張子が無い場合、.Oとみなされます。
この操作が必要なのは、コンパイル時に"undefined symbol"エラーが出たが、シンボルが定義されているオブジェクトが実際にはリンクに指定されているライブラリには含まれている、そんな時です。
このようなオブジェクトをライブラリの最後部に再配置することで、この問題は解決します。
Example:
A:\>SET HICLIB=def
A:\>vl *

first.o
second.o
third.o
A:\>el first
A:\>vl *

second.o
third.o
first.o


EDH
HI-TECH Cディレクトリに切り替え、指定したヘッダファイルとともにTEDをロードします。
EDH file[.ext]
ヘッダ[1]が指定されない場合、.Hとみなされます
このBTMはHI-TECH Cディレクトリや完全なファイルパスをTEDコマンドラインで指定することなく?ヘッダファイルを編集するときにのみ便利です。
TEDが実行されているときに、HI-TECH C ディレクトリがカレントディレクトリになってから?他のどのヘッダファイルもディスクメニューでタイプするだけでロードできます。TEDが終了するときに、以前のディレクトリは復元されます。
TED以外のテキストエディタを使いたい場合、EDH.BTMで"ted"という文字列を探して、他こテキストエディタの名前に変えてください。
Example:
A:\SOURCES>edh miheader
HI-TECH Cディレクトリに変更して、TED MIHEADER.Hを実行します。TEDを抜けるときには、A:\SOURCESをカレントディレクトリとして戻します。
COMUN
COMUN.BTMは他の全てのBTMに共通の命令を持ち、他の全てのファイルから呼び出されます。
これは他のBTMファイルが以前に作成した一時的な変数を削除する時にパラメータなしで実行する時以外には、単体で呼び出されることを意図されていません。

(全てのBTMファイルはプロセスの終了時に、一時的な変数を削除しますので、BTMプロセスが完了前に終了した時にのみ、残されたテンポラリ変数がシステム内にあります)


COMUN.BTMは他の全てのBTMファイルから参照されているためリネームできません。


NOTES

BTMプログラムの途中中断(コンパイルエラーに応じて)は、条件ブロック内を実行中の場合、問題が起きる場合があります。

以下は簡単なトラブルシューティングです。

  • もしBTMを中断した後にコマンドインタプリタがコマンドを受け付けない場合、ELSEを実行してください。
  • もしBTMを中断した後にカレントディレクトリがHI-TECH C ディレクトリだった場合、POPDを実行するだけで、元のディレクトリに戻れます(もしかしたら2回実行する必要があるかもしれません)
  • BTM 実行中に"Too many parameters"というメッセージが出た場合、ENDIFFを数回実行するか、同じものをもう一度実行する前にBASICへ行ってDOSに戻ってきてください。
  • 残った一時的な変数をクリアするため、BTMプログラムの実行を中断した後にCOMUNをパラメータ無しで実行(もしくは他のBTMプログラムをパラメータ無しで実行)してください。

THE USUAL BULLSHIT

NestorBeTeMes is freeware, so distribute it as you want, but please distribute only the complete package (the explained BTMs plus NESBTM.TXT and NESBTME.TXT) and if you do any modification please explain it in a separate text file.

If you want to kick me or congratulate me or blah, blah... contact me at konamiman@konamiman.com, and visit my home page at http://www.konamiman.com


COMMAND 2.4xはフリーウェアではありません。これは作者のところから購入してください。彼の働きがなければ、これはとても安っぽいものになってしまっていたはずだからです。これを書いている時点ではFokke Post 氏に直接メールを送るしか方法はありません。価格は15.88ユーロです。

Remember that COMMAND 2.4x is not freeware, please buy it to the author because he did a great job and besides it is a cheap stuff. At the time of writing this, the only way to buying it is contacting directly with Fokke Post (direccion@lokesea.com), and the price is 15.88 euro.

And Kyoko rules.


VERSION INFORMATION

  • 1.01 (14-2-2001): Faster EDH.BTM version, this one does not call COMUN.BTM
  1. 拡張子??