テクハンwiki

2章 操作の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
,{c H},{BGCOLOR:dddddd|BOLD|CENTER}
,{c NH},{BGNOCOL|NORMAL}
,{c C},{CENTER}
,{c L},{LEFT}
//%第1版第9第刷
//!!!第 2 章 操作
 本章では、MSX-DOS の操作の基本となるキーボードからのコマンドライン入力の方法、およびその際に心得ておくべき事項と、MSX-DOS で利用可能な各種のコマンドの実際の使用法について説明します。

!!2.1 基本的な操作

'''●起動時のメッセージ'''

 
 
 MSX-DOS version 1.03
 Copyright 1984 by Microsoft
 
 COMMAND version 1.11
 
{{div_begin style='text-align:center;'}}
'''図 3.3 起動時の画面'''
{{div_end}}

 上の 2 行は、MSX-DOS.SYS のバージョンとそのコピーライトの表示です。1 行おいて次の行は、COMMAND.COM のバージョンを表示しています。

'''●プロンプト'''
 そして、バージョンの下に、プロンプト (入力促進記号) が表示されます。MSX-DOS のプロンプトは、デフォルト・ドライブ名 + ">" の 2 文字で表されます。

'''●デフォルト・ドライブ'''
 プロンプトの 1 文字目に表示されている "デフォルト・ドライブ" とは、ドライブ名を省略した際に自動的にアクセスされるドライブのことです。たとえば、デフォルト・ドライブを A とした時、B ドライブ上の "BEE" というファイルを参照するためには "B:BEE" のように表さなければなりません。しかし、デフォルト・ドライブ A にある "ACE" というファイルは、ドライブ名を省略して単に "ACE" と表すことができます。

  例 1) A>DIR B:BEE    (←B ドライブの "BEE" を参照している)

  例 2) A>DIR ACE     (←A ドライブの "ACE" を参照している)

'''●デフォルト・ドライブの変更'''
 2 ドライブ以上のシステムを使用しているならば、"B:" と入力することによってデフォルト・ドライブは B に変更されます。C〜H のドライブにデフォルト・ドライブを変更する場合も同様に "C:" などと入力します。ただし、存在しないドライブを指定した場合はエラーとなります。

  例1) A>B:
     B>         (←デフォルト・ドライブが B に変更された)

  例2) A>K:
     Invalid Drive Specification
     A>         (←K ドライブは無かった。デフォルト・ドライブは不変。)

'''●コマンドの入力'''

プロンプトが表示されている状態では、MSX-DOS はコマンドの入力待ちとなっており、ここでコマンドを入力することによって、MSX-DOS に各種の指示を与えることができます。

コマンドには表 3.2 の 3 形式が存在します。入力されたこれらのコマンドは、COMMAND.COM というプログラムによって解釈実行されます。MSX-DOS の操作とは、"コマンドを入力する→COMMAND.COM に実行させる" という動作の繰り返しにすぎません。

,{t},{CENTER}
,{c},{L|NH|SIZE:130},{L|NH}
,(1)内部コマンド ,COMMAND.COM の組み込みコマンド。RAM 上に存在するマシン語ルーチンである。後述の 13 種類が準備されている。
,(2)外部コマンド ,ディスク上に存在するマシン語ルーチンである。実行時にはディスクからロードされる。ファイル名に "COM" という拡張子を持つ。
,(3)バッチコマンド,複数のコマンドを記述したテキストファイル。記述した順にコマンドが実行される (バッチ処理)。ファイル名に "BAT" という拡張子を持つ。
{{div_begin style='text-align:center;'}}
'''表3.2 3形式のコマンド'''
{{div_end}}


'''●ファイル命名規則'''
 MSX-DOS で扱うファイルは、以下に記述した形式の "ファイルスペック" によって表されます。

(1) ファイルスペックは「<ドライブ>:<ファイル名>」の形で表される。
(2) <ドライブ> は A〜H の 1 文字で表される。ただし、デフォルト・ドライブを指定する場合は、後ろのコロン ":" とともに省略できる。
(3) <ファイル名>は「<ファイル名前部>.<拡張子>」の形で表される。
(4) <ファイル名前部> は 1 文字以上 8 文字以下の文字列である。8 文字以上指定した場合、9 文字目以降は無視される。
(5) <拡張子>は 0 文字以上 3 文字以下の文字列である。3 文字以上指定した場合、4 文字目以降は無視される。
(6) <拡張子> は前のピリオド "." とともに省略できる。
(7) <ファイル名前部> および <拡張子> に使用できる文字は表 3.3 のとおりである。
(8) アルファベットの大文字と小文字は区別されない。

,{t},{CENTER}
,{c},{NH|C|SIZE:130},{NH|L}
,使用可能の文字,A〜Z 0〜9 $ & # % ' ( ) - @ ^ { } ~ ` !{{br}}80H〜FFHのキャラクターコードに相当する文字
,使用不可の文字," * + ,. / : ; = ? [ ]{{br}}00H〜20Hのキャラクターコードに相当する文字
{{div_begin style='text-align:center;'}}
'''表 3.3 ファイル名として使用可能な文字'''
{{div_end}}


'''●ワイルドカード'''
 ファイルスペックの <名前> および <拡張子> の記述に "ワイルドカード" と呼ばれる特殊文字を使用すると、一度に複数のファイルを指定することができます。ワイルドカードには "?" と "*" の 2 種類があります。

(1) "?" は任意の 1 文字にあてはまります。

 例) "TEXT" , "TEST" , "TENT"		← "TE?T"
     "F1-2.COM" , "F2-6.com"			← "F?-?.COM"

(2)"*" は任意長の文字列にあてはまります。

 例) "A" , "AB" , "ABC"  			← "A*"
     「"COM" という拡張子を持つファイル」	← "*.COM"
     「すべてのファイル」			← "*.*"

 なお、実際のファイル名とワイルドカードを使用したファイル名を比較する場合、<ファイル名前部> の 8 文字に満たない部分および <拡張子> の 3 文字に満たない部分は、スペース (" ") で埋められているものとして考えます。このため、"A???.??" という指定は、図 3.4 に示すように "ABCDE.123" とは一致しませんが、"AZ.9" とは一致してしまいます。
{{div_begin style='text-align:center;'}}
{{svg 図3.4.svg,,size:550x230}}
'''図 3.4 ワイルドカードの一致'''
{{div_end}}

 また、"*" はいったん 8 個あるいは 3 個の "?" と置き換えられてから解釈されます。したがって、たとえば "A*B" というファイル名は "A で始まり B で終わる任意の文字列" とはみなされません。これは下記のように単に "A で始まる任意の文字列" である、と解釈されてしまいます。

  A*B			("*" が "?" に展開される)
  ↓
  A????????B		(8 文字以降が削除される)
  ↓
  A???????


'''●デバイス名'''
 MSX-DOS では、周辺装置 (デバイス) とのデータ入出力に特別なコマンドを必要としません。これは、対象となるそれぞれの装置を一種のファイル (デバイスファイル) とみなし、そのファイルに対して読み書きを行うという形で入出力の動作が行われるからです。このため、MSX-DOS のユーザーは、入出力装置をディスク上のファイルとまったく同様に取り扱うことが可能です。MSX-DOS が標準でサポートしているデバイスには表 3.4 に示す 5 種類があり、専用のデバイス名で指定されます。ですからディスク上のファイルに、これらの名前をファイル名として使用することはできません。また、これらのデバイス名にドライブの指定や拡張子を付けたものも、単なるデバイス名と同一に扱われます。

,{t},{CENTER}
,{c},{H},{H}
,デバイス名,指定される入出力装置
,{c},{C|SIZE:100},{L}
,AUX,入出力拡張用の予約名、普通は NUL と同じ効果を持つ。
,CON,コンソール (入力として使用された場合はキーボード、出力として使用された場合は画面)。
,LST,プリンタ (出力のみ、入力としては使用できない)。
,PRN,プリンタ (LST と同様)。
,NUL,結果を画面やファイルに出力したくない場合にダミーとして使用する特殊なデバイス。入力に用いると、かならず EOF 状態になる。
{{div_begin style='text-align:center;'}}
'''表3.4 デバイス名'''
{{div_end}}

'''●テンプレートを使用した入力機能'''

コマンド入力時には "テンプレート" という文字バッファ領域が使用できます。テンプレートには前回入力したコマンド行がそのまま記憶され、コマンド入力時にはキーボードとテンプレートのどちらから読み込みを行うかということが 1 文字ごとに選択できます。このテンプレートの機能を利用すれば、前回に入力したコマンドを再度実行すること、あるいはその一部分だけを書き換えて実行することなどが簡単に行えます。テンプレートを操作するためには、表 3.6 に示したキーを使用します。

'''●その他の特殊キー'''

テンプレートを操作するもの以外に、次のコントロールキーが使用できます。これらの特殊キーの機能は、後述する一部のシステムコール使用時にもサポートされます。

,{t},{CENTER}
,{c},{H},{H}
,,機能
,{c},{C|SIZE:100},{L}
,^C,実行中のコマンドを中断します。
,^S,画面出力を一時停止します。
,^P,画面へ表示する文字を同時にプリンタへ出力するようになります。
,^N,^P の設定を取りやめ、画面出力のみとなります。
{{div_begin style='text-align:center;'}}
'''表 3.5 特殊キーの機能'''
{{div_end}}

,{t},{CENTER}
,{c},{H},{H},{H}
,名称,使用するキー,機能
,{c},{C|SIZE:100},{L},{L}
,COPY1,"[→], ^\",テンプレートから 1 文字入力し、コマンドラインに表示する。
,COPYUP,"[SELECT], ^X",次に指定する文字 (キーボードにより指定) の直前までテンプレートから入力し、コマンドラインに表示する。
,COPYALL,"[↓], ^_",テンプレートの現在参照している位置から行末までの文字をすべて入力し、コマンドラインに表示する。
,SKIP1,[DEL],テンプレートの文字を 1 文字スキップする。
,SKIPUP,"[CLS], ^L",次に指定する文字 (キーボードにより指定) の直前までテンプレートをスキップする。
,VOID,"[↑],[ESC],^ ^, ^U, ^[",テンプレートは変えずに、現在の 1 行の入力をとりやめる。
,BS,"[←],[BS], ^H, ^] ",1 文字分の入力を取り消し、テンプレートの参照位置を 1 文字前に戻す。
,INSERT,"[INS], ^R",挿入モード/通常入力モードを切り替える。挿入モードでは、テンプレートの参照位置を固定したまま、キーボードからの入力をコマンドラインに表示する。
,NEWLINE,"[HOME], ^K",その時点コマンドラインの内容をテンプレートに転送する。
,リターンキー{SIZE:200|COLS 2},,その時点のコマンドラインの内容をテンプレートに転送し、それを実行する。
,上記以外の通常キー{SIZE:200|COLS 2},,キーに相当する文字がコマンドラインに表示され、テンプレートの文字を 1 文字スキップする。
{{div_begin style='text-align:center;'}}
'''表 3.6 テンプレートの機能'''
{{div_end}}


,{t},{CENTER}
,{c},{H},{H},{H}
,キーボード入力,コマンドライン表示,テンプレート内容 (_ は現在参照位置)
,{c},{L},{L},{L}
,DIR ABCDE{{br}}{{br}}[RETURN]{{br}}{{br}}[↓]{{br}}{{br}}[←][←][←]{{br}}{{br}}[INS]XYZ{{br}}{{br}}[→][→][→]{{br}}{{br}}[↑]{{br}}{{br}}[↓]{{br}}{{br}}[↑]{{br}}{{br}}XXX{{br}}{{br}}[↓]{{br}}{{br}}[HOME],A>DIR ABCDE{{br}}{{br}}A>{{br}}{{br}}A>DIR ABCDE{{br}}{{br}}A>DIR AB{{br}}{{br}}A>DIR ABXYZ{{br}}{{br}}A>DIR ABCXYZCDE{{br}}{{br}}A>{{br}}{{br}}A>DIR DIR ABCDE{{br}}{{br}}A>{{br}}{{br}}A>XXX{{br}}{{br}}A>XXX ABCDE{{br}}{{br}}A>XXX ABCDE@,-------------{{br}}{{br}}__D__IR ABCDE{{br}}{{br}}DIR ABCDE_{{br}}{{br}}DIR AB__C__DE{{br}}{{br}}DIR AB__C__DE{{br}}{{br}}DIR ABCDE_{{br}}{{br}}__D__IR ABCDE{{br}}{{br}}DIR ABCDE_{{br}}{{br}}__D__IR ABCDE{{br}}{{br}}DIR_ABCDE{{br}}{{br}}DIR ABCDE_{{br}}{{br}}__X__XX ABCDE
{{div_begin style='text-align:center;'}}
'''表 3.7 テンプレート操作の実例'''
{{div_end}}

'''●ディスクエラー'''
 ディスクアクセス時にエラーが発生した場合、MSX-DOS は何回か再試行を試みます。それでもなおエラーが起きるならば、次のメッセージを出力し、どのような対応をするべきか質問してきます。A,R,I の中からひとつ選んでキーを押して下さい。
{{div_begin style='text-align:center;'}}
{{svg 図3.5.svg,,size:530x230}}
'''図3.5 エラーの表示'''
{{div_end}}

 また、この形式以外に次のようなエラーが発生することもあります。これは FAT の中のポインタが、存在しないクラスタを指していることを示しています。このエラーが発生した場合、そのディスケットはもう使用不可能となっています。

'''  Bad FAT'''


!!2.2 内部コマンド


 内部コマンドは、COMMAND.com に組み込まれたマシン語プログラムです。ディスクから読み込む必要が無く、高速に実行可能です。内部コマンドには、以下の 13 種類が用意されています。本節では、これらのコマンドの使用法を解説します。

'''BASIC''' ・・・・・・・・・	MSX DISK BASIC へジャンプする
'''COPY''' ・・・・・・・・・・	ファイルをコピーする
'''DATE''' ・・・・・・・・・・	日付の表示、変更
'''DEL''' ・・・・・・・・・・・	ファイルを削除する
'''DIR''' ・・・・・・・・・・・	ファイルの一覧を表示する
'''FORMAT''' ・・・・・・・・	ディスクをフォーマットする
'''MODE''' ・・・・・・・・・・	1 行に表示される文字数の変更
'''PAUSE''' ・・・・・・・・・	バッチコマンドの処理を一時停止する
'''REM''' ・・・・・・・・・・・	バッチコマンド中にコメント行を入れる
'''REN''' ・・・・・・・・・・・	ファイル名を変更する
'''TIME''' ・・・・・・・・・・	時刻の表示、変更
'''TYPE''' ・・・・・・・・・・	ファイルの内容を出力する
'''VERIFY''' ・・・・・・・・	ベリファイモードの ON/OFF を行う

'''●BASIC'''

 '''書式'''  BASIC [<ファイルスペック>]

 DISK-BASIC を起動します。これは BASIC を RAM 上にロードするのではなく、スロット切り替えによって 0000H〜7FFFH に BASIC-ROM を選択することによって行いますから、瞬時に起動します。<ファイルスペック> を指定した場合には、その BASIC プログラムを自動的に読み込み、実行します。BASIC から MSX-DOS の環境に戻るには "CALL SYSTEM" を実行します。

'''●COPY'''
 基本的には、あるファイルの内容を他のファイルにコピーするコマンドです。ただし、パラメータの指定法によって種々の異なった動作を行います。

'''(1) ファイルの複製'''

 '''書式'''  COPY <ファイルスペック 1> <ファイルスペック 2>

 <ファイルスペック 1> で指定されるファイルを複製し、<ファイルスペック 2> で指定さるファイルを作ります。ただし、ひとつのドライブ上に同じ名前のファイルを作成することはできません。ドライブが異なる場合は、同じファイル名を指定することは可能です。

'''使用例'''
 A>COPY ABC XYZ          ← "ABC" というファイルをコピーし、"XYZ" というファイルを作成する。
 
 A>COPY B:ABC XYZ        ← B ドライブ上の "ABC" というファイルをコピーし、"XYZ"というファイルを作成する。
 
 A>COPY B:ABC C:XYZ      ← B ドライブ上の "ABC" というファイルをコピーし、C ドライブ上に "XYZ" というファイルを作成する。

 ファイルコピーの際、アスキーモードとバイナリモードの選択が可能です。アスキーモードは "/A" スイッチで指定、バイナリモードは "/B" スイッチで指定します。デフォルトではバイナリモードが選択されます (ただし、後述のようにファイルの結合を行う場合、デフォルトの指定はアスキーモード)。両モードの違いを表 3.8 に示します。

,{t},{CENTER}
,{c},{H},{H},{H}
,,ソースファイルの読み出し,デスティネーションへの書き込み
,{c},{C},{L},{L}
,アスキーモード,1AH (ファイルエンドマーク) 以降は無視する,最後に 1 バイトの 1AH を付加する
,バイナリモード,物理的なファイルサイズまで読み出す,何も変更せずに書き込む
{{div_begin style='text-align:center;'}}
'''表 3.8 アスキーモードとバイナリモード'''
{{div_end}}

'''使用例'''
 A>COPY /A ABC XYZ       ← ABC を XYZ にコピーする (両ファイルともアスキーモード)
 
 A>COPY ABC /A XYZ /B    ← ABC をアスキーモードで読み出し、XYZ にバイナリモードで書き込む


'''(2) 他のドライブへのファイル複写'''

 '''書式'''  COPY <ファイルスペック> [<デスティネーション・ドライブ>:]

 <ファイルスペック> で指定されるファイルを、<デスティネーション・ドライブ> に統一のファイル名でコピーします。<デスティネーション・ドライブ> を省略した場合にはデフォルト・ドライブにコピーされます。なお <ファイルスペック> に含まれるドライブ名が <デスティネーション・ドライブ> と一致してはいけまえん。
 <ファイルスペック> で指定されるファイルを、<デスティネーション・ドライブ> に統一のファイル名でコピーします。<デスティネーション・ドライブ> を省略した場合にはデフォルト・ドライブにコピーされます。なお <ファイルスペック> に含まれるドライブ名が <デスティネーション・ドライブ> と一致してはいけません。

 <ファイルスペック> にワイルドカードを使用して複数のファイルをコピーすることも可能です。このような場合、ひとつのファイルがコピーされるごとに、そのファイル名が画面に表示されます。


'''使用例'''
 A>COPY *.COM B:         ← デフォルトドライブ上の "COM" という拡張子を持つすべてのファイルを B ドライブにコピーする
 A>COPY B:ABC            ← B ドライブ上の ABC というファイルをデフォルト・ドライブ上にコピーする

'''(3) 多数ファイルの一括複製'''

 '''書式''' COPY <ファイルスペック> <ファイルスペック 2>
          ───┬─── ───┬───
         ワイルドカード記述  ワイルドカード記述

 デスティネーションとなる <ファイルスペック 2> をワイルドカードを用いて記述した場合、その中のワイルドカードキャラクタに相当する部分は <ファイルスペック 1> の対応一の文字と置き換えられます。たとえば、

 COPY AB-07.021 FL?X*.V??

を実行すると、図 3.6 のように解釈され、"FL-X7.V21" というファイルにコピーが作成されます。
{{div_begin style='text-align:center;'}}
{{svg 図3.6.svg,,size:680x200}}
'''図 3.6 デスティネーションファイルのワイルドカード指定'''
{{div_end}}

 さらに、<ファイルスペック 1> の指定にもワイルドカードを適用すると、多数のファイルの複製を一度に作成することが可能です。

'''使用例'''
 A>COPY *.ASM *.MAC      ← "ASM" という拡張子を持つすべてのファイルについて、拡張子を "MAC" に変えたものを作成する
 A>COPY A*.* B:Z*.*      ← A で始まるファイルの先頭の文字を Z に変えたものを、B ドライブに複製する

'''(4) ファイルの結合'''

 '''書式'''  COPY <複数のファイルスペック> <ファイル名>
          ────┬────
         ワイルドカードによる指定、あるいは複数のファイルスペックを "+" で接続したもの

 ソースとなるファイルが複数であり、それを受けるデスティネーションが単独のファイル名の場合、すべてのソースファイルの内容が結合されて、指定したデスティネーションファイルに格納されます。複数のソースファイルを指定するには、ワイルドカードを用いる方法と、個々のファイルスペックをプラス記号 "+" で接続する方法があります。

 ファイルの結合が行われる際、デフォルトでアスキーモードが選択され、1AH をファイルエンドマークと判断します。そのため、1AH というデータを含むバイナリファイルを COPY コマンドで結合しようとすると、最初に出てきた 1AH 以降のデータが欠落してしまいます。これを避けるためには、/B スイッチを指定し、バイナリモードで COPY コマンドを使用してください。

 また、ソースファイルの指定に 2 回以上ワイルドカードが現れると、2 回目以降のワイルドカードは (3) の場合と同様、最初のファイル名を参照して展開されます。このことを利用すると、同じ様なファイルの組の結合が一度に行えます。

'''使用例'''
 A>COPY X+Y+Z XYZ            ← X,Y,Z のファイルを結合し、XYZ というファイルに格納する
 A>COPY *.LST ALL            ← 拡張子 "LST" を持つすべてのファイルを結合し、ALL というファイルに格納する
 A>COPY/B *.DAT ALL          ← すべての ".DAT" ファイルをバイナリモードで結合する
 A>COPY ASC/A+BIN/B AB/B     ← ASC というアスキーファイルと BIN というバイナリファイルを結合して AB に格納する
 A>COPY *.LST+*.REF *.PRN    ← ファイル名前部が等しい、拡張子 "LST" のファイルと、拡張子 "REF" のファイルを結合して、拡張子 "PRN" のファイルを作成する


'''●DATE'''

 '''書式'''  DATE [<年>- <月> - <日>]
             ┬   ┬
             ├──┘
           "/","." も可

 内蔵の CLOCK-IC に日付を設定します。CLOCK-IC を持たない MSX の場合は、特定のワークエリアに書き込まれます。MSX-DOS でファイルを作成あるいは変更すると、ここで設定した日付情報がファイルごとに記録されます。

 <年>/<月>/<日> の指定を省略して DATE コマンドを実行した場合には、現在設定されている日付が数のように表示され、さらに新しい日付の入力待ちとなります。ここで RETURN キーだけを押せば日付は変更されません。

 Current date is <曜日> <年>-<月>-<日>
 Enter new date:

 DATE コマンドで設定する日付のフォーマットは、<年>,<月>,<日> の 3 つのフィールドを "-" または "/" または "." で区切って並べたものです。それぞれのフィールドには、次のような数値を与えることができます。

<年>: 1980〜2079 (西暦年数)
   0〜79 (2000年〜2079年とみなされる)
   80〜99 (1980年〜1999年とみなされる)
<月>: 1〜12
<日>: 1〜31

 なお海外バージョンの MSX-DOS では、日付のフォーマットが異なり、<月>-<日>-<年> または <日>-<月>-<年> の順で表します。


'''●DEL'''

 '''書式'''  DEL <ファイルスペック>
       ERASE でも可

 指定されたファイルを削除します。<ファイルスペック> にワイルドカードを用いて複数のファイルを指定することもできます。

 "DEL *.*" を実行するとディスケット上のすべてのファイルが削除されるわけですが、あまりにも危険な操作のため、この場合に限り確認を求めてきます。

 A>DEL *.*
 Are you sure (Y/N)?

 ここで "Y" または "y" を押すと、全ファイルが削除されます。
 なお、"ERASE" によっても DEL コマンドと同じファイル削除の操作が可能です。


'''●DIR'''

 '''書式'''  DIR [<ファイルスペック>] [/W] [/P]

 <ファイルスペック> 指定したファイルに関して、

  '''<ファイル名> <ファイルサイズ> <作成日> <作成時>'''

の情報を、左から順に 1 行に表示します。これらの情報が 1 行に収まらない場合には、右端に近い項目の表示は省略します。

 <ファイルスペック> の指定には、通常のワイルドカードに加えて、以下に示す略記法が使えます。

,{t},{CENTER}
,{c},{H},{H}
,略記法,正式な記法
,{c},{L},{L}
,DIR,DIR *.*
,DIR <ドライブ>,DIR <ドライブ>:*.*
,DIR <ファイル名前部>,DIR <ファイル名前部>.*
,DIR .<拡張子>,DIR *.<拡張子>

/W スイッチを指定すると、<ファイル名> のみを 1 行に詰めて表示します。/P スイッチを指定すると、ファイル数の数が多くて画面がスクロールしてしまう場合に、画面が一杯になった時点でいったん表示を停止し、任意のキーを押すまで待ってくれるようになります。

'''使用例'''
 A>DIR          ← A ドライブ上のすべてのファイルの情報を表示する
 A>DIR B:       ← B ドライブ上のすべてのファイルの情報を表示する
 A>DIR TEST     ← "TEST" という <ファイル名前部> を持つすべてのファイルの情報を表示する
 A>DIR /W       ← A ドライブ上にあるすべてのファイル名を表示する


'''●FORMAT'''

 '''書式''' FORMAT

 ディスケットを、MSX-DOS 用にフォーマットします。すなわち、ディレクトリと FAT を初期化し、すべてのファイルを消去します。MSX-DOS は MS-DOS と同一のディスクフォーマットを持っていますから、ここでフォーマットしたディスケットは MS-DOS からの自由に書き込み/読み出しが可能です。

 FORMAT コマンドを実行すると、

 Drive name? (A,B)           (← ドライブの数によって異なる)

のように、フォーマットしたいディスクの入っているドライブ名を質問してきます。これに "A" または "B" と答えると、片面フォーマットと両面フォーマットを選択できるドライブを使用している場合はメニューが表示されます。そこで、フォーマットの種類を指定すると、

 Strike a key when ready

と表示してキー入力待ちになります。ここで任意のキーを押すとフォーマット作業が始まります。フォーマットのメニューについては、ディスクドライブの説明書をご覧ください。


'''●MODE'''

 '''書式'''  MODE <1 行の文字数>

 画面の 1 行に表示される文字数を設定します。<1 行の文字数> には、1〜80 の値が設定でき、その値に応じてスクリーンモードも変わります。

,{t},{CENTER}
,{c},{H},{H}
,<1 行の文字数>,スクリーンモード
,{c},{C},{L}
,1〜32,GRAPHIC1 (SCREEN 1)
,33〜40,TEXT1 (SCREEN 0:WIDTH 40)
,41〜80,TEXT2 (SCREEN 0:WIDTH 80)

'''●PAUSE'''

 '''書式'''  PAUSE [<コメント>]

 MSX-DOS には、テキストファイルに記述された一連のコマンドを自動的に実行する "バッチ処理" の機能があります。このバッチ処理の実行中に、ディスクの差し替え操作などのためコマンド処理の流れを一時停止させたいことがあります。PAUSE コマンドは、そのような場合に使用します。

 このコマンドが実行されると、まず画面に

 Strike a key when ready

と表示されて、キー入力待ちとなります。ここで Ctrl-C 以外の任意のキーを押せば、PAUSE コマンドは終了し、作業が先へ進みます。Ctrl-C を押すと、バッチ処理を中断します。"PAUSE" の後ろにはどんなコメントを書いてもかまいません。これを利用して、何のためにキー入力待ちとなったのか表示することもできます。


'''●REM'''

 '''書式'''  REM [<コメント>]

 バッチコマンド中にコメントを記述するために用いられます。コマンドとして何も実行しません。なお、"REM" と <コメント> の間はスペースを空けなければいけません。


'''●REN'''

 '''書式'''  REN <ファイルスペック> <ファイル名>
       RENAME も可

 <ファイルスペック> で指定したファイルの名前を変更する命令です。<ファイルスペック>,<ファイル名> ともに、ワイルドカードを使用することができます。<ファイル名> をワイルドカードで指定した場合には、ワイルドカード部分は <ファイルスペック> の対応する位置の文字に置き換えられます (COPY コマンド参照)。

'''使用例'''
 A>REN ABC XYZ            ← "ABC" というファイル名を "XYZ" に変更する
 A>REN B:ABC XYZ          ← B ドライブ上の "ABC" というファイル名を "XYZ" に変更する
 A>REN *.BIN *.COM        ← ファイルの拡張子が "BIN" であるものを、すべて "COM" に変更する

'''●TIME'''

 '''書式''' TIME [<時>[:<分>[:<秒>]]]

 内蔵の CLOCK-IC に時刻を設定します。CLOCK-IC を持たない MSX の場合は、何も起こりません。MSX-DOS でファイルを作成あるいは変更すると、ここで設定した時刻情報がファイルごとに記録されます。

 時刻の指定を省略して TIME コマンドを実行した場合には、現在設定されている時刻が次のように表示され、さらに新しい時刻の入力待ちとなります。この時 RETURN キーだけを押せば時刻は変更されません。

 Curent time is <時>:<分>:<秒>.<秒/100><p または a>
 Enter new time:

 TIME コマンドで設定する時刻のフォーマットは、<時>,<分>,<秒> の 3 つのフィールドを ":" で区切って並べたものです。<分> 以降あるいは <秒> 以降は省略可能であり、省略すると 0 とみなされます。それぞれのフィールドには、次のような数値を与えることができます。

<時>: 0〜23
   12A       (0時とみなされる)
   0A〜11A   (0時〜11時とみなされる)
   12P       (12時とみなされる)
   1P〜11P   (13時〜23時とみなされる)
<分>: 0〜59
<秒>: 0〜59

'''使用例'''
 A>TIME 12       ← 時刻を 12:00:00 に設定
 A>TIME 1:16P    ← 時刻を 13:16:00 に設定


'''●TYPE'''

 '''書式'''   TYPE <ファイルスペック>

 <ファイルスペック> で指定したファイルの内容を画面に表示するためのコマンドです。<ファイルスペック> にワイルドカードを指定すると、それに一致する最初のファイルを表示します。このコマンドは、アスキーファイルの表示を目的としたものであり、バイナリファイルを表示すると画面におかしなコントロールキャラクタが送られてしまいます。


'''●VERIFY'''

 '''書式'''  VERIFY {ON | OFF}

 ベリファイモードの設定/解除を行います。ベリファイモードを ON に設定しておくと、ディスクへのデータ書き込みの後にはかならずそれを読み出し、書き込みが正しく実行されたことをチェックします。ただし、その分ディスクアクセスに要する時間は長くなります。デフォルトでは "VERIFY OFF" に設定されています。


!!2.3 バッチコマンドの使用法

 MSX-DOS には、いくつかのコマンドを操作手順にしたがって並べておき、その流れに沿って自動的に一連の処理を実行させる機能があります。この操作手順が書かれているファイルを "バッチファイル" と呼び、バッチファイルによって定義される一連の操作を "バッチコマンド" と呼びます。

 バッチファイルには、拡張子 "BAT" が付けられます。そしてそのファイル名 (から拡張子 "BAT" を除いた部分) をコマンドラインから入力すると、MSX-DOS はファイルから 1 行ずつコマンドを読み込み、次々と実行していきます。

 たとえば次のような処理を考えてみましょう。

1.A ドライブ上の "COM" という拡張子を持ったファイルを、すべて B ドライブにコピーする。
2.B ドライブに最終的に集まった ".COM" ファイルの一覧を表示する。
3.A ドライブの ".COM" ファイルをすべて削除する。

 この処理は次のようなコマンドを MSX-DOS に与えることで実現できるはずです。

 A>COPY A:*.COM B:
 A>DIR B:.COM/W
 A>DEL A:*.COM

 もし、この 3 行をまとめて "MV.BAT" というバッチファイルを作成しておけば、コマンドラインから "MV" と入力するだけで自動的に目的の処理が実行できることになります。以下のその実行例を示します。

 A>COPY CON MV.BAT     ┐
 COPY A:*.COM B:       ├ "MV.BAT" の作成
 DIR B:.COM/W          │
 DEL A:*.COM           ┘
 ^Z                      Ctrl-Z + リターンキーの入力
 A>TYPE MV.BAT         ┐
 COPY A:*.COM B:       ├ "MV.BAT" の確認
 DIR B:.COM/W          │
 DEL A:*.COM           ┘
 A>MV                    バッチコマンド "MV" を起動
 A>COPY A:*.COM B:       1 行目の自動読み込みとその処理
 :
 A>DIR B:.COM            2 行目の自動読み込みとその処理
 :
 A>DEL A:*.COM           3 行目の自動読み込みとその処理
 :

 バッチコマンドの途中で Ctrl-C が押された場合、その時点で実行していた行の処理は中断され、さらに画面に図 3.7 のように表示されて入力待ちになります。

 Terminate batch file (Y/N)?
{{div_begin style='text-align:center;'}}
'''図 3.7 バッチ処理の中断'''
{{div_end}}

 ここで "Y" を選択するとバッチコマンド全体が終了して MSX-DOS に戻り、"N" を選ぶとバッチファイルの次の行が読み込まれて、バッチコマンド自体の処理は続けられます。


'''●バッチ変数'''

 バッチコマンドをより柔軟に使用するため、バッチコマンドにはコマンドラインから任意の文字列をパラメータとして渡すことができます。渡されたパラメータは、バッチコマンドの中で、"%n (n は 0〜9 の数字 1 文字)" の記号で参照されます。この "%n" をバッチ変数と呼びます。

 バッチ変数 %1, %2, … は、コマンドラインで指定したパラメータと左から順に対応し、%0 はパッチコマンド自身の名前に対応します。

 A>COPY CON TEST.BAT       … バッチコマンドの作成
 REM %0 %1 %2 %3
 ^Z
         1 file copied
 A>TIPE TEST.BAT
 REM %0 %1 %2 %3           … 3 つの引数を表示するバッチコマンド
 
 A>TEST ONE TWO THREE FOUR … バッチコマンドに引数を与えて実行
 A>REM TEST ONE TWO THREE
 A>
{{div_begin style='text-align:center;'}}
'''図 3.8 バッチ変数の使用例'''
{{div_end}}


'''●AUTOEXEC.BAT'''

 "AUTOEXEC.BAT" という名前のバッチファイルは、MSX-DOS では特別に MSX-DOS 起動時のオートスタートプログラムとして使用されます。MSX-DOS が起動したとき、COMMAND.COM はこの AUTOEXEC.BAT ファイルが存在するかどうかを調べ、もし存在すれば実行します。


!!2.4 外部コマンド

 外部コマンドは拡張子 "COM" を持つファイルの形でディスケット上に存在し、この外部コマンドの名前 (から拡張子を除いた部分) をコマンドラインから入力すると以下の手順で実行に移されます。

(1) 外部コマンドを 100H 番地以降にロードする
(2) 100H 番地をコールする


'''●外部コマンドの作成'''

 100H 番地に置かれて動作するようなマシン語ルーチンを作成し、それに "COM" という拡張子を持つファイル名を付けてセーブすれば、そのまま MSX-DOS から実行可能な外部コマンドとなります。

 たとえば、1 文字出力ルーチン (システムコール参照) を使ってコントロールコード "0CH" を出力し、画面のクリアを行うプログラムを考えます。これは次のように 8 バイトのサイズになります。

{{div_begin style='text-align:right;'}}
'''リスト 3.1 CLS.COM の内容'''
{{div_end}}
 1E 0C   	LD	E,0CH	; E := control-code of CLS
 0E 02   	LD	C,02H	; C := function No. of CONSOLE OUTPUT
 CD 05 00	CALL	0005H	; call BDOS
 C9      	RET	

 この 8 バイトを CLS.COM という名前のファイルに書き込めば、画面をクリアする外部コマンド "CLS" が完成します。次のサンプルプログラムは、BASIC にシーケンシャルファイル・アクセスの機能を利用し、これを作るものです。プログラムを実行し終えると、CLS コマンドがディスケットに作成されています。MSX-DOS に戻って動作を確かめてください。

{{div_begin style='text-align:right;'}}
'''リスト 3.2 CLS.COM の作成'''
{{div_end}}
 100 '==== This program makes "CLS.COM" ====
 110 '
 120 OPEN "CLS.COM" FOR OUTPUT AS #1
 130 '
 140 FOR I=1 TO 8
 150   READ D$
 160   PRINT #1,CHR$(VAL("&H"+D$));
 170 NEXT
 180 '
 190 DATA 1E,0C,0E,02,CD,05,00,09


'''●外部コマンドへの引数の受け渡し'''

 引数を持った外部コマンドを作成する場合、コマンドラインからその外部コマンドに引数を渡す方法が 2 つあります。まず、ファイル名を引数としてコマンドに渡したい時には、システム・スクラッチエリアの 5CH 番地と 6CH 番地を用います。COMMAND.COM は外部コマンド実行の際、つねにコマンドラインの第 1 パラメータおよび第 2 パラメータをファイル名とみなし、それをドライブ番号 (1 バイト) + ファイル名前部 (8 バイト) + 拡張子 (3 バイト) に展開して 5CH 番地および 6CH 番地に格納します。これは FCB の先頭の 12 バイトと同じ形式を持っていますので、これらの番地を FCB の先頭アドレスとして設定することによって、ファイルのオープンをはじめとする種々の操作が可能です。ただし、この方法では両 FCB の先頭アドレスの差は 16 バイトしかありませんから、完全な FCB として使用できるのは 5CH 番地または 6CH 番地の片方だけです。次に、数値などのファイル名以外の引数をコマンドに渡したい場合、または 3 つ以上のファイル名を扱うような外部コマンドを作成する場合には、DMA 領域 (初期設定アドレス 0080H) を用います。DMA 領域には、COMMAND.COM によって、その外部コマンドが起動されたコマンドライン全体からコマンド名自身を除いた部分が、そのバイト数 (1 バイト) + コマンドライン本体の形式で格納されていますから、外部コマンド内でそれを適当に解釈して利用することが可能です。4 章のリスト 3.3 にこの DMA 領域を用いた引数の受け渡しの例がありますので参照してください。