-

差分

移動先: 案内検索

LIBRARIES PUBLIC DOCUMENT BTM

19,780 バイト追加, 2017年8月22日 (火) 12:29
ページの作成:「NestorBeTeMes 1.01, by Konami Man, 2-2001 ----------------------------------------- ==これは何?== NestorBeTeMesは、BTM(メモリにロードされたBAT)ファ...」
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

:次のメッセージが表示されます
<nowiki>*** Error: library name was not specified and HICLIB does not exist</nowiki>

;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]

:ヘッダ<ref>拡張子??</ref>が指定されない場合、.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

案内メニュー