.\" .\" Copyright (c) 1992, 1993, 1996 .\" Berkeley Software Design, Inc. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by Berkeley Software .\" Design, Inc. .\" .\" THIS SOFTWARE IS PROVIDED BY Berkeley Software Design, Inc. ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL Berkeley Software Design, Inc. BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" BSDI doscmd.1,v 2.3 1996/04/08 19:32:29 bostic Exp .\" %FreeBSD: src/usr.bin/doscmd/doscmd.1,v 1.12.2.4 2000/12/19 16:22:08 ru Exp % .\" .\" jpman %Id: doscmd.1,v 1.3 1998/10/13 21:31:33 vanitas Stab % .\" WORD: raw file ロウファイル (mknod.8 によると character special file) .\" WORD: cooked device 加工されたデバイス (mknod.8 によると block special) .Dd January 30, 1995 .Dt DOSCMD 1 .Os .Sh 名称 .Nm doscmd .Nd リアルモード DOS プログラムのサブセットを実行する .Sh 書式 .Nm doscmd .Fl 23AbDEfHIMOPRrtVvXxYz .Fl c Ar file .Fl d Ar file .Fl i Ar port Ns Xo .Op : Ns Ar cnt .Xc .Fl o Ar port Ns Xo .Op : Ns Ar cnt .Xc .Fl S Ar int .Fl U Ar int .Op Ar cmd [args ...] .Sh 解説 .Nm は、DOS のサブセットをエミュレートして単一コマンド .Ar cmd .Ar args を実行することができますし、 PC をエミュレートして DOS をブートすることもできます。 DOS をブートする場合には、より多様な DOS アプリケーションを 実行することができます。 MS-DOS 6.2 以降は .Nm ではうまく扱えないようです。 DOS をブートするには、 .Fl b フラグを指定するか、 .Ar cmd 引数を省略してください。 .Fl b を指定すると、 .Ar cmd と .Ar args は無視されます。 .Pp .Nm は DOS のサブセットを提供するだけですが、 多くのプログラムを実行するには十分です。 コンパイラ、アセンブラ、リンカローダといったプログラムも実行できますが、 これらに限定するものではありません。 .Pp 次に示す多様なフラグを .Nm に指定可能です: .Bl -tag -width indent .It Fl 2 DOS プログラムからの .Nm エミュレータへのすべてのトラップのデバッグトレースを有効にします。 カーネルによって扱われるためにトレースされないトラップがあることに 注意してください。 .It Fl 3 割り込みベクタの変更や論理ドライブへのパスの初期化といった、 いくつかの下位レベル機能のデバッグを有効にします。 .\" .\" .\" .It Fl A エミュレータを通過するすべての割り込みのトレースを有効にします。 .Fl S オプションを、255 個すべての割り込みの値とともに指定する場合と同じです。 .\" .\" .\" .It Fl b DOS をエミュレートする代りに DOS をブートします。 .\" .\" .\" .It Fl c Ar file 画面へのすべての出力を捕まえて、 .Ar file へ出力します。 画面の直接の書き込みは捕まえられないことに注意してください。 .\" .\" .\" .It Fl C MS-DOS の呼び出しエミュレーションと戻り値をリストします。 .\" .\" .\" .It Fl D ディスクとファイルの操作に関するデバッグを有効にします。 .\" .\" .\" .It Fl d Ar file デバッグ出力を、標準エラー出力の代りに .Ar file へ送ります。 .\" .\" .\" .It Fl E exec ルーチンのデバッグを有効にします。 .\" .\" .\" .It Fl H 中途半端に実装された呼び出しのトレースを有効にします。 .\" .\" .\" .It Fl I すべての割り込みのトレースを有効にします。 .Fl A とほとんど同じですが、有効になるトレースは少しだけ少ないです。 .\" .\" .\" .It Fl i Ar port Ns Xo .Op : Ns Ar cnt .Xc 入出力ポート .Ar port からのすべての入力要求のトレースを有効にします。 もし .Ar cnt が与えられると、 .Ar port から .Ar port+cnt Ns No -1 までをトレースします。 .\" .\" .\" .It Fl M メモリ操作のデバッグを有効にします。 .\" .\" .\" .It Fl O デバッグ出力を、標準エラー出力の代りに、標準出力へ出力します。 .\" .\" .\" .It Fl o Ar port Ns Xo .Op : Ns Ar cnt .Xc 入出力ポート .Ar port からのすべての出力要求のトレースを有効にします。 もし .Ar cnt が与えられると、 .Ar port から .Ar port+cnt Ns No -1 までをトレースします。 .\" .\" .\" .It Fl p Ar port Ns Xo .Op : Ns Ar cnt .Xc 要求された I/O .Ar port (オプションとして .Ar port+cnt Ns No -1 までの範囲を指定可能です) を実機ハードウェア I/O ポートへマップします。 アクセスには root 権限が必要でしょう。 .\" .\" .\" .It Fl P 入出力ポート呼び出し (例えば .Li inb , .Li outb など) のトレースを有効にします。 .\" .\" .\" .It Fl R ファイルリダイレクトコードのデバッグを有効にします。 .\" .\" .\" .It Fl r 生のキーボード入力と表示を使用します。 を押すと、 doscmd は終了します。VGA グラフィックスが使えるようになります。 .\" .\" .\" .It Fl S Ar int 割り込み .Ar int のトレースを有効にします。 .\" .\" .\" .It Fl t 命令レベルのトレースを試みます。 トレースを混乱させる命令があります。 .Li を押すとトレースモードの有効と無効とを切り替えます。 .\" .\" .\" .It Fl U Ar int 割り込み .Ar int のトレースを無効にします。 .Fl A や .Fl I の後で使用すると便利です。 .\" .\" .\" .It Fl V 未知の割り込みを報告する際、レジスタダンプも含めます。 .\" .\" .\" .It Fl v .Fl AH と同じです。 .\" .\" .\" .It Fl X XMS 操作のデバッグを有効にします。 .\" .\" .\" .It Fl x X11 のウィンドウを表示出力のためにオープンします。 他の方法では利用できない様々な割り込みを有効にします。 .Fl b を指定しても、指定しなくても、使用可能です。 .\" .\" .\" .It Fl Y EMS 操作のデバッグを有効にします。 .\" .\" .\" .It Fl z DOS プログラムにジャンプする直前に .Nm を停止させます。 .Nm を開発する以外の用途はほとんどありません。 .El .Pp 起動時に、 .Nm はコンフィギュレーションファイルを読もうとします。 まず、カレントディレクトリのファイル .Cm .doscmdrc を試します。もし見付からない場合、 .Cm $HOME を検索します。それでもなお見付からない場合、ファイル .Cm /etc/doscmdrc を使用します。 .Pp コンフィギュレーションファイルでは、コメントは \fB#\fP 文字から開始します。 また、空行は無視されます。 非空行は、環境変数またはデバイスを設定するコマンドです。 空白の前に \fB=\fP がある行は、環境変数への代入であると扱われ、 DOS の環境に追加されます。 その他の行は次のいずれかです。 .Bl -tag -width XXXXX .\" .\" .\" .It Cm boot Op Cm A: | C: ブートするデバイスを設定します。 デフォルトでは、 .Cm A: が定義されていれば最初に試され、もしそれが失敗すると、 .Cm C: が試されます。 .\" .\" .\" .It Cm assign Xo .Op Cm A-Z : .Op Fl ro .Ar path .Xc .Tn BSD/OS のディレクトリ .Ar path を、指定したドライブに割り当てます。 .Fl ro フラグを指定すると、読み取り専用ファイルシステムになります。 DOS ブート時には、 .Pa /usr/libdata/doscmd/redir.com バイナリが実行されるまでは、これらの割り当ては実行されません。 .\" .\" .\" .It Cm assign Xo .Cm lpt Ns Op Cm 0-4 : .Op Cm direct .Ar path .Op Ar timeout .Xc 指定したプリンタを .Ar path に割り当てようとします。 .Ar timeout が指定された場合、 その期間 (秒数) 活動がない場合に、プリンタをフラッシュすべきことを示します。 デフォルトは 30 秒です。 .Ar path が本物のプリンタを参照している場合には、 .Cm direct オプションを指定してください。 .\" .\" .\" .It Cm assign Xo .Op Cm A: | B: .Op Fl ro .Ar path .Ar density .Xc .It Cm assign Xo .Cm flop Ns Op Cm 01 .Op Fl ro .Ar path .Ar density .Xc ファイル .Ar path を、次に利用可能なフロッピまたは指定したフロッピに割り当てます。 .Fl ro が指定されると、フロッピは読み取り専用になります。 .Ar density は次のいずれかです: .sp .Bl -tag -compact -width 1440x .It 180 9 ヘッド 40 トラック片面フロッピ .It 360 9 ヘッド 40 トラック両面フロッピ .It 720 9 ヘッド 80 トラック両面フロッピ .It 1200 15 ヘッド 80 トラック両面フロッピ .It 1440 18 ヘッド 80 トラック両面フロッピ .It 2880 36 ヘッド 80 トラック両面フロッピ .El .\" .\" .\" .It Cm assign Xo .Op Cm C-Z : .Op Fl ro .Ar path .Op Ar type | cyl head sec .Op Ar fdisk_tab .Xc .It Cm assign Xo .Cm hard Ns Op Cm 01 .Op Fl ro .Ar path .Op Ar type | cyl head sec .Op Ar fdisk_tab .Xc ファイル .Ar path を、次に利用可能なハードディスクまたは指定したハードディスクに割り当てます。 ディスクのジオメトリは、シリンダ数 .Ar cyl とヘッド数 .Ar head とトラックあたりのセクタ数 .Ar sec で直接指定することもできますし、標準タイプから 1 つを .Ar type (後述) で指定することもできます。 オプションの .Ar fdisk_tab 引数は、このディスクの最初のセクタとして使用するファイルを指定します。 .Ar path がディスクの一部のみを参照する場合に、 偽の fdisk テーブルを挿入するために使用できます。 .\" .\" .\" .It Cm assign Xo .Cm com Ns Op Cm 1-4 : .Ar path .Ar port .Ar irq .Xc .Ar path で指定した tty または pty を、 指定した com ポートとして使用するように割り当てます。 ベースアドレスは .Ar port でエミュレートされ、割り込みは .Ar irq で指定されます。 このコードは軽くテストしただけなので、向かない用途があるかもしれません。 .\" .\" .\" .It Cm "setver command version" doscmd が DOS をエミュレートする場合、 .Cm command という名前のプログラムから呼ばれた時に、DOS バージョンとして .Cm version を報告するようにします。 .Cm version のフォーマットは、後述の .Cm MS_VERSION 変数と同じです。 .El .Pp .Cm C: は、まだ割り当てられていない場合には、ルートディレクトリ (/) に割り当てられ、 .Cm C: のカレントディレクトリは、現在のカレントディレクトリに設定されます。 これはすなわち、 .Pp Unknown interrupt 21 function 99 .sp .Pp のように起動しても、動作しないことを意味することに注意してください。 なぜなら .Cm C: ディレクトリはカレントパスで開始するからです。 また、次の環境変数も、未設定の場合には設定されます: .Bd -literal .Cm "COMSPEC=C:\eCOMMAND.COM .Cm "PATH=C:\e .Cm "PROMPT=DOS> .Ed .Pp .Cm PATH 変数は .Ar cmd を検索する際にも使用されます。 DOS のように、まず .Ar cmd.com が検索され、それから .Ar cmd.exe が検索されます。 .Sh コンフィギュレーション変数 .Pp doscmd の内部変数であり、実際の DOS の環境では設定されない変数が、 .Cm .doscmdrc ファイル中にいくつかあります。 それらを以下に示します: .Bl -tag -width MS_VERSION .It Cm MS_VERSION この変数の値は、 .Nm が報告を行なう DOS のバージョンを決定するために使用されます。 .Nm は、動作を変えずに、報告方法だけを変えることに注意してください。 デフォルトでは、この値は .Cm 410 であり、 .Tn "MS-DOS バージョン 4.1 に対応します。 バージョン 3.2 (以前の .Nm のデフォルトでした) に変更するには、値 .Cm 320 を使用してください。 .It Cm X11_FONT この変数の値は X window で使用するフォントを決定します。 デフォルトのフォントは .Cm vga であり .Pa /usr/libdata/doscmd/fonts にインストールされています。 X サーバがフォントを見付けられるように .Ql xset fp+ /usr/libdata/doscmd/fonts を .Pa ${HOME}/.xsession か .Pa ${HOME}/.xinitrc に追加してください。 .El .Sh ファイル変換 .Nm は .Tn BSD/OS のファイル名を .Tn DOS のファイル名に変換する際、すべて大文字に変換し、無効な文字を除去します。 ASCII ファイルを、DOS の世界で好まれる .Cm 形式へ変換するということはありません。 ASCII ファイルを変換するには、プログラム .Xr bsd2dos 1 を使用してください。 .bp .Sh ディスクタイプ .TS H expand, box; r | r | r | r | r. タイプ シリンダ ヘッド セクタ サイズ = 01 306 4 17 10MB 02 615 4 17 20MB 03 615 6 17 30MB 04 940 8 17 62MB 05 940 6 17 46MB _ 06 615 4 17 20MB 07 462 8 17 30MB 08 733 5 17 30MB 09 900 15 17 112MB 10 820 3 17 20MB _ 11 855 5 17 35MB 12 855 7 17 49MB 13 306 8 17 20MB 14 733 7 17 42MB 15 976 15 17 121MB _ 16 612 4 17 20MB 17 977 5 17 40MB 18 977 7 17 56MB 19 1024 7 17 59MB 20 733 5 17 30MB _ 21 733 7 17 42MB 22 733 5 17 30MB 23 306 4 17 10MB 24 925 7 17 53MB 25 925 9 17 69MB _ 26 754 7 17 43MB 27 754 11 17 68MB 28 699 7 17 40MB 29 823 10 17 68MB 30 918 7 17 53MB _ 31 1024 11 17 93MB 32 1024 15 17 127MB 33 1024 5 17 42MB 34 612 2 17 10MB 35 1024 9 17 76MB _ 36 1024 8 17 68MB 37 615 8 17 40MB 38 987 3 17 24MB 39 987 7 17 57MB 40 820 6 17 40MB _ 41 977 5 17 40MB 42 981 5 17 40MB 43 830 7 17 48MB 44 830 10 17 68MB 45 917 15 17 114MB _ 46 1224 15 17 152MB .TE .bp .Sh 擬似ディスクへの DOS のインストール .Pp doscmd の擬似ハードディスクに DOS をインストールするには、 次のようにします: .Bl -tag -width XXXX .It 1 少なくとも次の記述を含む .Pa .doscmdrc を作成します: .Bd -literal -offset indent assign A: /dev/fd0.1440 1440 assign A: /dev/fd0.720 720 assign hard boot_drive 80 2 2 .Ed .Pp A: ドライブに対応するロウファイル (訳注: キャラクタスペシャルファイル) を、 システムに応じて修正する必要があるかもしれません。 この例では、HD ドライブを最初に試し、DD ドライブを次に試します (訳注: HD = High Density; 高密度、DD = Double Density; 倍密度)。 .\" HD = Hard Disk と思ってしまうと混乱するので、訳注を追加したい。 .\" HD = High Density, DD = Double Density .\" 1998/09/20 by horikawa@jp.FreeBSD.org .Pp ここでは、 ロウデバイスやロウファイルのみを使用する必要があることに注意してください。 加工された (cooked) デバイス (訳注: ブロックスペシャルファイル) を使用しないこと! (おそらくハードディスクは大丈夫でしょうが、フロッピは確実に駄目です) .Pp .Li boot_drive は、ブート可能なイメージを格納するファイルの名前です。 .Li 80 2 2 という 3 つの数字は、 ドライブが 80 個のシリンダと 2 個のヘッドとトラックあたり 2 個のセクタを 持つことを示します。 これは、MS-DOS 5.0 を .Pa config.sys と .Pa autoexec.bat のファイルと共にインストールすることが可能な、最小のドライブです。 .Pp もっと大きなブートドライブを作成したいかもしれません。 .Pp ファイル .Pa boot_drive は存在する必要がありますので、touch コマンドで作成してください。 .It 2 MS-DOS をブート可能で fdisk, format, sys コマンドを含むフロッピディスクを、 A: ドライブに挿入してください。 ファイル redir.com もフロッピにコピーしてください。 この際、msdos ファイルシステム型でフロッピをマウントするか、mtools を使用してください (例えば .Li mwrite redir.com a: とします)。 .It 3 doscmd を実行してください。 .It 4 > プロンプトにて、 .Li fdisk とタイプします。 .It 5 .Li Create DOS partition or Logical Drive を選択します。 .It 6 .Li Create Primary DOS Partition を選択します。 .It 7 大きさを指定します (典型的にはドライブ全体です。それでも非常に小さいものです。) .It 8 .Li を何度か押して、FDISK を終了します。 .It 9 doscmd が実行中断するでしょうから、 そうなった場合、doscmd を再度実行します。 .It 10 > プロンプトにて、 .Li format c: とタイプし、指示に従います。 .It 11 > プロンプトにて、 .Li sys c: とタイプします。 .It 12 doscmd を終了します。 .It 13 ドライブからフロッピを取り除くか、 .Bd -literal -offset indent boot C: .Ed という行をあなたの .Pa .doscmdrc に加えてください。 .It 14 新しいディスクから DOS を動かします。 config.sys と autoexec.bat の両ファイルが欲しいでしょうから、 まず最初は次のようにします: .Bd -literal -offset indent > copy con: config.sys LASTDRIVE=Z ^Z > copy con: autoexec.bat @echo off redir.com ^Z .Ed .It 15 doscmd を終了します。 .It 16 .Fx ディスクを組み込む魔法のプログラム .Li redir を自動的に呼び出す、ブート可能な擬似ディスクが完成しました。 FreeBSD ディスクを使用するためには、次の行をあなたの .doscmdrc に追加します: .Bd -literal -offset indent assign D: /usr/dos assign P: -ro /usr/prb .Ed 名前の問題により、 アクセスできないファイルがあるかもしれないことに注意してください。 .El .Sh 診断 .Pp 実装されていない割り込みに出会うと、 .Nm は次のようなメッセージを表示し終了します: .Pp .Dl Unknown interrupt 21 function 99 .Pp .Pp .Nm .Fl x スイッチ指定時に、 .Ic X11 support not compiled in というメッセージが表示された場合、環境変数 .Ev X11BASE を X Window System をインストールした場所 (通常 .Pa /usr/X11R6 ) に設定し、ソースディレクトリ (通常 .Pa /usr/src/usr.bin/doscmd ) で .Ic make install とタイプすることで、本機能を有効にすることができます。 このように動作するためには、 X プログラマキットがインストールしてある必要があります。 .Sh 作者 .An Pace Willisson , .An Paul Borman .Sh 歴史 .Nm は BSD/386 に初めて登場しました。