# $Id: README.DOS,v 1.1.1.1 2000/06/27 01:48:03 amura Exp $
==============================================================================
    README.DOS for Ng 1.3 MS-DOS version.			  1991.01.25
						 吉田茂樹 (shige@iamas.ac.jp)
                      1.4 (修正加筆)                              2000.04.20
                                           村松  篤 (amura@ma3.seikyou.ne.jp)
==============================================================================

1. Ng MS-DOS version

    Ng 1.4 MS-DOS バージョンは、Ng 1.4 を MS-DOS へ移植したものです。Ng 1.4
    については、README.Ng をお読み下さい。このドキュメントには、MS-DOS 版に
    固有の注意事項等が書かれています。

    Ng MS-DOS バージョンは、MS-DOS ver. 3.1 での動作を確認しています。また、
    機種依存の部分はありませんので、どの MS-DOS マシンでも利用できるはずです。
    (ただし、コンパイル時に IBMPC または PC9801 オプションを指定することによっ
    て、IBM PC(J-3100) バージョンおよび PC-9801 バージョンにすることもできま
    す。どのバージョンかを確認するには、ng -v または ng -c を実行して Ng の
    バージョンを表示させて下さい。ただし、この機能は Ng 1.3 以降でしか利用で
    きません。以下の説明では MS-DOS/IBM PC/PC-9801 版を合わせて "MS-DOS" 版
    と呼びます)

[註]  1.4から J-3100 版を IBM PC 版と名称を変更しました。(機能的には変わっ
      ていません) これは、旧版の J-3100版でも IBM PC互換機(もしくは DOS/V
      互換機)で問題なく動作する上、 J-3100 シリーズよりも IBM PC 互換機の
      方が一般的になったからです。 ドキュメントで一部変更されていない部分
      があるかも知れませんが、J-3100 を IBM PC と読み換えて読んでください。

    Ng MS-DOS バージョン用に配布されるものには次のものがあります。
	a) UNIX 版と一緒に配布されるソースファイルとドキュメント一式。
	b) MS-DOS 版専用のソースファイル一式。
	c) MS-DOS 版の実行モジュール一式。
	d) ドキュメント一式。

    Ng MS-DOS バージョンを利用する場合は c) が、詳しい使い方等を知りたい場合
    は d) が、改造等のためコンパイルをしたい場合は a) または b) が必要となり
    ます。なお、a) には b) および d) のほとんど全てが含まれています。ただし、
    一部の機種依存のファイルは含まれません。このドキュメント (README.DOS) は
    a) から d) 全てに含まれています。

    Ng MS-DOS バージョンをコンパイルするには、MS-C 5.1, MS-C 6.0, Turbo-C
    1.5, Turbo-C 2.0, Turbo-C++ のいずれかのコンパイラと、MASM または TASM、
    OPTASM などのアセンブラが必要です。それ以前のバージョンの MS-C, Turbo-C 
    や MS-C, Turbo-C 以外のコンパイラでコンパイルするには、Ng のソースの手直
    しが必要となるでしょう。なお、b) の MS-DOS 版専用のソースの配布には、ア
    センブラを必要とするソースの .obj ファイルが含まれていますので、アセンブ
    ラがなくてもコンパイルできます。


2. Manifest

    Ng MS-DOS バージョンのそれぞれの配布に含まれているファイルは以下の通りで
    す。

    a) UNIX 版と一緒に配布されるソースファイルとドキュメント
	MANIFEST ファイルをごらん下さい。

    b) MS-DOS 版専用のソースファイルの配布
	README.DOS	このドキュメント。
	makefile	MS-C 用の makefile。(MS-C 6.0 の nmake および
					     UNIX like の make 用)
	makefile.msc	MS-C 用の makefile。(MS-C 5.1 の make 用)
	makefile.tc	Turbo-C 用の makefile。(Turbo-C 標準の make 用)
	linkfile	link 時に参照される link 用記述ファイル (MS-C 用)
	linkfile.tc	link 時に参照される link 用記述ファイル (Turbo-C 用)
	*.c		C 言語のソース。
	*.h		ヘッダファイル。
	*.asm		アセンブラのソース。
	*.obj		アセンブラソースのオブジェクト。
	rawget31.obj	rawgetc.asm のオブジェクト (J-3100 用)。
	rawget98.obj	rawgetc.asm のオブジェクト (PC-9801 用)。
	termcap		実行時に必要となる termcap (端末機能記述) ファイル。
	ng.ini		初期設定ファイルのサンプル。
	COPYING		GNU EMACS GENERAL PUBLIC LICENSE

    c) MS-DOS 版の実行モジュールの配布
	README.DOS	このドキュメント。
	ng.exe		Ng の MS-DOS 汎用実行モジュール。
	ng31.exe	Ng の J-3100 用実行モジュール。
	ng98.exe	Ng の PC-9801 用実行モジュール。
	termcap		実行時に必要となる termcap (端末機能記述) ファイル。
	ng.ini		初期設定ファイルのサンプル。
	COPYING		GNU EMACS GENERAL PUBLIC LICENSE

	註) 実行モジュールの配布には、MS-DOS/IBM PC/PC-9801 用のセットがそれ
	    ぞれあり、それらには対象となる機種に合わせて ng.exe, ng31.exe,
	    ng98.exe のいずれか 1 つだけが含まれています。

    d) ドキュメントの配布
	README.DOS	このドキュメント。
	README.Ng	Ng 全体についての説明。
	README		Mg2a 全体についての説明。
	Ng.doc		Ng の日本語機能についての説明。
	Ng.tut		Ng の初心者用入門チュートリアル。
	Ng.ref		Ng のリファレンス・マニュアル。
	CHANGES.dos	Ng のチェンジノート。
	fepctrl.doc	FEP 自動制御ライブラリの説明。
	mg.tex		Mg2a のマニュアル。(TeX テキストファイル)
	mgidx.tex	Mg2a マニュアルの索引。(TeX テキストファイル)
	mg2a.cha	Mg2a チェンジノート。
	mgprog.doc	Mg2a のプログラム内部に関する説明。
	COPYING		GNU EMACS GENERAL PUBLIC LICENSE


3. Make & Install

    UNIX 版と同時に配布されたソースファイルを用いて、MS-DOS マシンでコンパイ
    ルし利用するには、以下の手順の通りに行います。なお、MS-DOS 版専用のソー
    スファイルの配布を用いる場合は、1) から 6) の手順は必要ありません。さら
    に、MS-DOS 版の実行モジュールを利用するだけの場合は、1) から 8) の手順は
    必要ありません。なお、以下では UNIX マシン上の Ng のソースがあるディレク
    トリを $NG とします。

    1)	UNIX マシン上で $NG の下に MS-DOS 用の作業ディレクトリ doswork を作
	ります。
		cd $NG
		mkdir doswork

    2)	$NG の下のファイルを全て $NG/doswork へコピーします。
		cp * doswork

    3)	$NG/sys/default の下のファイルを全て $NG/doswork へコピーします。
		cp sys/default/* doswork

    4)	$NG/sys/msdos の下のファイルを全て $NG/doswork へコピーします。
		cp sys/msdos/* doswork

    [3 と 4 は必ずこの順番で行ってください。$NG/sys/default と $NG/sys/msdos
     で重複するファイルがあるためです。]

    5)	paragraph.c を parag.c へ名前を変更して、re_search.c を research.c 
	へ名前を変更します。
		cd doswork
		mv paragraph.c parag.c
		mv re_search.c research.c

    6)	$NG/doswork にある全てのファイルを MS-DOS マシンへ転送します。

    [必要ならば、改行コードの変更をしてください。アーカイブでは、改行コードは
     LF のみになっています。このままではMS-DOS 用コンパイラの一部で、問題を起
     こします。(Turbo-C 2.02 IBM PC英語版 では正常にコンパイルできませんでし
     た) うまくコンパイルできない時は改行コードを CR LF に変更してみてくださ
     い。ただし、この時に漢字コードは変更してはいけません。
     (なお、Turbo-C++ 1.01 PC-9801版では改行コードを変更しなくてもコンパイル
     できます)]

    7)	必要な初期設定を行います。

	Ng で日本語を扱うためには、コンパイル時に KANJI オプションをつけてコ
	ンパイルしないといけません。また、禁則処理を行うためには同じく
	KINSOKU オプションをつけてコンパイルする必要があります。デフォルトで
	は KANJI および、KINSOKU の両方をつけてコンパイルするようになってい
	ます。

	KANJI, KINSOKU を含めて、コンパイル時オプションは config.h というファ
	イルで設定を変更できます。デフォルトでは、Ng 1.4 で利用できる機能を
	全て利用するような設定になっています。利用したい機能に合わせて適宜変
	更して下さい。

	IBM PC バージョンまたは PC-9801 バージョンを作りたい場合は、config.h
	と makefile を修正して、J3100 または PC9801 オプションを define して
	下さい。

	漢字コードの初期値は、kinit.h で設定されています。必要に応じて変更し
	て下さい。より詳しくは Ng.doc を御覧下さい。

     8) Ng をコンパイルします。

	MS-C と MS-C 5.1 に付属している make を使う場合は makefile.msc を、
	MS-C と MS-C 6.0 に付属している nmake またはフリーソフトなどで配布さ
	れている UNIX like の make を使う場合は makefile を、Turbo-C を使う
	場合は makefile.tc を使って下さい。なお、各コンパイラがインストール
	されている環境によっては、makefile.* や linkfile.* のドライブ名やパ
	ス名を若干手直しする必要があります。
		make makefile.msc	(MS-C & MS-C 5.1 make)
		make			(MS-C & MS-C 6.0 nmake or
					 MS-C & UNIX like make)
		make -fmakefile.tc	(Turbo-C)

    [コンパイルに失敗する時:コンパイラ、config.h の設定によっては、Segment
     Overflow (もしくは、Fixup Overflow) が起こってリンクに失敗する事がある
     かもしれません。そのときは、お手数ですが、sys/default/ttydef.h 内のマ
     クロ NROW と NCOL を減らすとリンクできるようになります。ただし、NROW は
     25 以上、NCOL は 80以上にしないと問題を起こすかもしれません。]

    9) できた ng を PATH 環境変数に設定されているディレクトリのいずれかにコ
       ピーします。
		(例) copy ng.exe a:\bin

    10)	termcap ファイルを \etc (または、希望するディレクトリ) へコピーしま
	す。(すでに他のプログラム用に termcap がある場合はこの手順は不要です)
		(例) copy termcap a:\etc

    11) 必要に応じて Ng の初期設定ファイルのサンプル ng.ini を希望するディレ
        クトリへコピーして、内容を希望する設定に修正します。
		(例) copy ng.ini a:\usr\home

    12)	TERMCAP 環境変数と TERM 環境変数、NG 環境変数または HOME 環境変数を
	設定します。これらは Ngを実行するために必要なので、autoexec.bat に書
	いておいたほうがよいでしょう。(それぞれの環境変数については下記参照)
		(例) set TERMCAP=a:\etc\termcap
		     set TERM=j3100
		     set NG=a:\usr\home


4. Caution & Difference

    MS-DOS 版 Ng の注意および、UNIX 版 Ng との違いは以下の通りです。

    a) TERMCAP 環境変数には、termcap ファイルの位置を指定する。TERMCAP 環境
       変数が設定されていないと、カレントドライブの \etc\termcapファイルを探
       す。

    b) TERM 環境変数には、使用する端末のタイプ (マシンの種類) を指定する。Ng 
       は TERM 環境変数が存在しないと起動できないので、必ず指定する事。なお、
       TERM 環境変数に指定する端末のタイプは、termcap ファイル中に存在するも
       のでないといけない。termcap ファイル中に、使用する端末の記述が存在し
       ない場合は、同じようなタイプの他の端末を指定するか、他の端末用の記述
       を参考にして、追加する。

    c) NG (または HOME) 環境変数には、Ng の初期設定ファイルがあるディレクト
       リを指定する。Ng は起動時に NG 環境変数に設定してあるディレクトリの下
       の ng.ini ファイルを探し、見つかればそれを読み込んで解釈し実行する。
       NG 環境変数が設定されていなければ、HOME 環境変数に設定してあるディレ
       クトリの下の ng.ini ファイルを探す。

    d) C-@, C-SPC (NUL) に加え、C-\ でもマークの設定ができる。MS-DOS では通
       常 C-@ や C-SPC で NUL を入力できないための対処である。ただし、
       IBM PC, PC-9801 版では C-SPC で NUL の入力ができるようになっている。

    e) bsmap-mode コマンドが使用でき、デフォルトで bsmap-mode が ON になって
       いる。これにより、C-h で一文字後退削除を行うようになっている。また、
       ヘルプは DEL である。

    f) cd コマンドで、カレントドライブと違うドライブにあるディレクトリを指定
       すると、カレントドライブを切り替えたあと指定されたディレクトリに移る。
       また、"ドライブ名:" を指定するとカレントドライブの切り替えだけを行う。

    g) suspend-emacs (C-z) コマンドでは、SHELL 環境変数に設定されているコマ
       ンドの実行を行う。SHELL 環境変数が設定されていなければ、shell,
       COMSPEC, comspec 環境変数の順に探して、それでもなければ command.com 
       が実行される。これらのコマンドはカレント・ディレクトリか、 PATH に設
       定されているディレクトリのいずれかに存在しなければいけない。

    h) dired で表示されるファイルサイズと、それを読み込んだ後　list-buffers
       で表示されるファイルサイズでは、その値が違っている。これは、ディスク
       上にあるファイルの各行の最後が ^J^M となっているのに対して、バッファ
       に読み込まれたものは行の最後が ^J だけになるからである。

    i) キー入力は、コンソールから直接読み込みを行っている (MS-DOS のシステム
       コール 06H を使用している) ので、特殊キーで入力されるコードには注意す
       る必要がある。例えば、IBM PC シリーズでは初期状態では DEL キーを押し
       ても、10 進数で 0 と 83 の 2 つのコードが続けて入ってくるだけで、DEL 
       コード (127) は入ってこない。

    j) shell-command (ESC !) で使用する一時ファイル ("ng??????") は、TMP 環
       境変数に設定されているディレクトリに作成される。TMP 環境変数が設定さ
       れていなければ、tmp, TEMP, temp 環境変数の順に探して、それでもなけれ
       ばカレントディレクトリに作成される。

    k) デフォルトでは make-backup-files が disable になっている。また、
       make-backup-files が enable の時に作成されるバックアップファイル名は、
       強制的に拡張子が ".bak" になる。そのため、例えば "foo.c" と "foo.h"
       という 2 つのファイルのバックアップファイルはどちらも "foo.bak" にな
       るので注意が必要である。

    l) FEP 自動制御機能が追加されている。詳しくは 5. FEP auto control を参照
       のこと。

    m) Ng MS-DOS バージョンの実行モジュールの配布に含まれている ng.exe,
       ng31.exe, ng98.exe では、GNU emacs の正規表現ルーチンを使用しているの
       で、GNU emacs の copyright の制限を受ける。GNU emacs の copyright に
       ついては、COPYING を参照のこと。


5. FEP auto control

    コンパイル時に FEPCTRL オプションを指定すると、かな漢字変換フロントエン
    ドプロセッサを Ng から自動的に制御できるようになります。

    Ng で利用できるのは、C-x 2 のように 2 文字目が通常の文字であるようなコマ
    ンドや、C-x C-f のようにミニバッファで文字列引き数を入力しなければいけな
    い時に、FEP が on になっている場合自動的に off にして、文字または文字列
    の入力が終わったら再度自動的に on にする機能です。

    FEP 自動制御機能を使うには、初期設定ファイル ng.ini で

		(set-fep-control t) 

    と指定するか、Ng 起動後 set-fep-control コマンドで t を指定してください。
    なお、これらに n を指定すると FEP 自動制御機能が off になります。

    FEP 自動制御機能は、太田純氏による FEPCTRL ライブラリを一部 Ng 用に修正
    したものを利用しています。制御できる FEP や使用時の注意、プログラムに関
    する注意などは、fepctrl.doc をご覧ください。なお、fepctrl.doc には MS-C
    でコンパイルすると ATOK7, FIXER が直接制御できない、と書いてありますが、
    Ng 用 FEPCTRL ライブラリでは改良を加えて、MS-C でも ATOK7, FIXER を直接
    制御できるようになっています。

    なお、カレントドライブがフロッピーディスクになっていて、ルートディレクト
    リに非常に多くのファイルが存在すると、FEP 自動制御機能の初期化のために、
    数十秒時間がかかることがあります。


6. For IBM PC & PC-9801 user

    IBM PC 版と PC-9801 版では、DEL キー、カーソル (矢印) キーなどを Ng 用
    に設定するようになっています。他のプログラム用にすでに何らかの設定がされ
    ていても強制的に Ng 用の設定にしてしまいますので注意をしてください。

    他に IBM PC 版では、カーソルの形や動作を設定することができます。

    1) IBM PC シリーズ

	a) IBM PC シリーズでは、以下のキーが Ng で使用できます。
		Del		DEL コード (127)。
		左矢印 (<-)	カーソルの左移動。(C-b)
		右矢印 (->)	カーソルの右移動。(C-f)
		上矢印		カーソルの上移動。(C-p)
		下矢印		カーソルの下移動。(C-n)
		Home		バッファの先頭への移動。(ESC-<)
		Pg Up (Prev)	前ページの表示。(ESC-v)
		Pg Dn (Next)	次ページの表示。(C-v)
		End (Exec)	バッファの最後への移動。(ESC->)
	   Ng を終了すると、初期設定に戻ります。

	b) IBM PC シリーズでは ibmpc-set-cursor というコマンドにより、Ng 内
           でカーソルの形や動作を指定することができます。
           [旧版の j31-set-cursor も使用できます]

	   初期設定ファイル ng.ini 中では以下のように指定します。

		      (ibmpc-set-cursor "0,15,t,n")
					 | |  | |	指定値
		スタートラスター  -------+ |  | |	0 から 15
		エンドラスター  -----------+  | |	0 から 15
		ブリンク設定  ----------------+ |	t または n
		終了時動作設定  ----------------+	t または n

	   スタートラスター/エンドラスターでカーソルの大きさを指定します。ス
	   タートラスターの方がエンドラスターより大きい場合はカーソルが消え
	   ます。

	   ブリンク設定に t を指定するとカーソルが点滅します。n を指定すると
	   点滅が止まります。

	   終了時動作設定に t を指定すると、Ng の終了時および suspend-emacs
	   (C-z) 時に現在のカーソル設定をそのまま残します。n を指定すると Ng
	   起動前または suspend-emacs 終了前のカーソル設定に戻ります。

	   各値は省略することができます。それぞれの値が省略された時は、その
	   部分の値は以前のものを使用します。

		例)	(ibmpc-set-cursor "0,15")	形だけ指定
			(ibmpc-set-cursor ",,n")	点滅停止だけ指定

	   Ng 使用中に ibmpc-set-cursor コマンドを実行するときは、ミニバッ
           ファのプロンプトに対して一度に各値を指定します。

		例)	IBM PC Cursor: 0,15,t,n
			IBM PC Cursor: ,,n


    2) PC-9801 シリーズ

	a) PC-9801 シリーズでは、以下のキーが Ng で使用できます。
		DEL		DEL コード (127)。
		左矢印 (<-)	カーソルの左移動。(C-b)
		右矢印 (->)	カーソルの右移動。(C-f)
		上矢印		カーソルの上移動。(C-p)
		下矢印		カーソルの下移動。(C-n)
		ROLL UP		次ページの表示。(C-v)
		ROLL DOWN	前ページの表示。(ESC-v)
		HOME CLR	バッファの先頭への移動。(ESC-<)
		HELP		バッファの最後への移動。(ESC->)
	   Ng を終了すると、初期設定に戻ります。

7. Turbo-C direct console I/O

    Turbo-C/C++、Borland C++ の direct console I/O を使う事ができます。
    コンパイル時にオプション TCCONIO を設定してください。このとき、termcap
    ライブラリは使わなくなります。(環境変数 TERM、TERMCAP の設定は不要です。
    もちろん、direct console I/O を使うと機種依存しますので注意してください。
    MS-C で TCCONIO を設定してもコンパイルエラーを起こすだけなので、設定しな
    いでください。

8. Author (Only MS-DOS part)

    吉田茂樹		Ng MS-DOS バージョン、IBM PC(J-3100) バージョン、
			  下記以外の追加機能
    高野和博		Ng PC-9801 バージョン、C モード、FEP 自動制御機能
    白橋明弘		PC-9801 高速バージョン、Turbo-C バージョン
    前田薫		ファイル名補完機能、shell-command 機能、
			  細かなバグ修正
    太田純		termcap ライブラリ、FEP 自動制御ライブラリ、
			  Turbo-C 1.5/++ バージョン
    澤柳喜郎		新しい版の補完機能
    村松篤		Turbo-C direct console I/O

9. Bug

    MS-DOS 版に固有のバグは以下の通りです。

	a) shell-command (ESC !) で、キーボードからの入力を必要とするような
	   MS-DOS コマンド (例えば "date", "time" など) を実行させるとハング
	   アップする。
