
		QUASI88  -- PC-8801 エミュレータ for UNIX/X11

						2001/12/27
						福永省三
						e-mail : fukuchan@mh1.117.ne.jp

目次)
	1.) QUASI88 とは？
	2.) QUASI88の配布物
	3.) QUASI88の性能
	4.) コンパイル方法
	5.) ROMイメージ、ディスクイメージの準備
	6.) 使用方法
	7.) トラブルシューティング
	8.) 今後の予定
	9.) 著作権／免責
	10.) 作者／e-mailアドレス


1.) QUASI88 とは？

	  このソフトは、UNIX + X Window System の環境で動作する、
	PC-8801 のエミュレータです。

	fMSX のソースコードを参考に、作成しました。
	FreeBSD 4.4R + XFree86 3.3.6 で動作確認をしています。

	サウンドドライバは、xmame-0.36b6.1 のソースから移植しました。

	警告！
		  QUASI88では、高速化のために、いくつかの配列をイリーガルな
		ポインタ経由でアクセスしています。
		具体的には、
			unsigned char buf[100][4]; 
		という配列を、
			unsigned int *p = (unsigned int)buf;
		というふうなポインタでアクセスしています。
		  なので、(unsigned) char = 8 bit, (unsigned) int = 32bit を
		前提にしています。
		これとは異なる環境下では正常に動作しないと思われます。m<__>m
		( どういった環境下なのかといわれると、詳しくは知らないのです
		  が・・・ なお、FreeBSD/Linux/AIX/IRIX では動いています。)


2.) QUASI88の配布物

	  QUASI88 の配布物の内容は以下の通りです。

		FAQ		F.A.Q.
		FORMAT		ディスクイメージのフォーマット仕様
		GET-IMAGE	ROM/ディスクイメージの吸い出しの方法
		HISTORY		履歴
		MANUAL		マニュアル
		QUASI88		このファイル

		Makefile	メイクファイル
		*.c *.h		ソース

		_quasi88rc	環境設定ファイルのサンプル

		snddrv/00README	サウンドドライバ関連についての注意
		snddrv/*.c *.h	サウンドドライバ関連のソース
					(xmame-0.36b6.1 からの移植)

		tools/*		各種ツール (完全無保証です)


3.) QUASI88の性能

	●エミュレート性能

	  【エミュレートしているもの】
	    ・Z80       ( メインCPU・サブCPU )
	    ・割り込み	( VSYNC・1/600秒RTC・サウンド )
	    ・メモリ	( PC-8801mkIISR相当分・拡張RAM・辞書ROM )
	    ・画面表示	( テキストVRAM・VRAM・パレット・ALU )
	    ・漢字ROM	( 第1・第2水準 )
	    ・FDC/FDD	( 主要コマンドのみ。D88フォーマット対応[ 2Dのみ ] )
	    ・PIO
	    ・キーボード / マウス
	    ・カレンダクロック	( 時刻の読みだしのみ )
	    ・サウンド  (YM2203・BEEP音)
			[ サウンドドライバは、xmame-0.36b6.1 からの移植 ]

	  【エミュレートしていないもの】
	    ・割り込みの正確なタイミング
	    ・CRTC/DMAC 関連の大部分
	    ・FDC の重要でないコマンド・2DD/2HD のディスク操作
	    ・プリンタ出力・シリアル入出力・カセット入出力
	    ・ジョイスティック
	    ・カレンダクロックの時刻読みだし以外の機能
	    ・サウンド (YM2608)
	    ・いろんなウエイト
	    ・その他、いろいろ

	  【互換性 (完成度)】

	    エミュレータとしての性能としてはどの程度のものかというと、
	  そこそこは動くといったところです。動作率は 6〜8割ぐらいでしょうか。

	    とりあえず、手元にあるソフトで動いたものを挙げてみましょう。

	    「N88 DISK-BASIC」「PC8801FH 附属のデモディスク」「スナッチャー」
	    「シルフィード」「ぎゅわんぶらあ自己中心派」「イース」「三国志」
	    「ソーサリアン」「ハイドライド3」「大戦略88」「レリクス」
	    「テクザー」「テスタメント」「アルファ」「カサブランカに愛を」
	    などなど・・・

	  いずれも動作確認しただけで、最後までプレイしたわけではありません。
	  また、なにかオプションを指定しないと動かないものもあります。

	●QUASI88の動作条件

	  【高速なマシン】

	    QUASI88はかなり重いソフトです。動作させるには、それなりの
	  CPUパワーが必要です。
	    作者の手元にある環境は Pentium-75MHzですが、処理速度は Z80 CPUで
	  2〜3MHz 程度、表示速度は秒間4〜6フレームぐらいです。(;_;)
	    もっとも、WindowsXP とかが快適に動作するような、最近のマシンでは
	  特に問題無いとおもわれます。

	  【ROMイメージ・ディスクイメージ】

	    現在 QUASI88 の配布物には、ROMイメージや、ディスクイメージの
	  吸いだしツールが附属しておりません。よって、自力で揃える必要が
	  あります。
	    幸い、インターネット上には、各種ツール類が転がっているので、
	  独力でこれらのツールを使ってイメージを入手しましょう。
	  附属のドキュメント(ファイル名 GET-IMAGE) にも、これらのツールに
	  ついて紹介してあります。

	    ちなみに、QUASI88 で使用するディスクイメージは、P88SR.EXE
	  (PC8801mk-2SR emulator) で使用されている、D88フォーマットに
	  準拠しています。ROMイメージも、P88SR.EXE の ROM をそのまま
	  使用することが可能です。


4.) コンパイル方法

     1) Makefile をお手持ちの環境にあわせて変更します。
	コメントアウトする場合は、行頭に # を付けます。
	コメントアウトを外す(しない)場合は、行頭の # を取ります。

	以下に主な変更点を挙げます。


		ROMDIR = /local/quasi88/rom/

	  QUASI88 は起動時に ROM イメージファイルを読み込みます。
	通常は、環境変数 QUASI88_ROM_DIR に設定したディレクトリから、
	ROM イメージファイルを読み込みますが、この環境変数が設定されて
	いない場合は、ここで指定したディレクトリから読み込みます。

		DISKDIR = /local/quasi88/disk/

	  QUASI88 の起動時に、ディスクイメージファイルを指定した場合、
	通常は、環境変数 QUASI88_DISK_DIR に設定したディレクトリで、
	ファイルを探しますが、この環境変数が設定されていない場合は、
	ここで指定したディレクトリからファイルを探します。
	  なお、ファイルが見つからなかった場合は、カレントディレクトリ
	でファイルを探します。

		LSB	= -DLSB_FIRST

	ビッグエンディアンのマシンの場合、この行をコメントアウトして下さい。

		MSHM	= -DMITSHM

	MIT-SHM を使用しない場合、この行をコメントアウトして下さい。
	この行をコメントアウトしなかった場合は デフォルトで MIT-SHM が
	使用されます。(オプションで抑制できます。)

		TYPE_SPECIFIER_OF_32BIT	= int

	32bit長の型を指定します。通常の UNIX の場合は、int が 32ビット長なの
	で、このまま変更しなくてもいいでしょう。

		READLINE	= -DUSE_GNU_READLINE
		READLINELIB	= -lreadline 
		IGNORE_C_D	= -DIGNORE_CTRL_D

	上の3つは、モニターモード (デバッグ用のモード) での機能設定です。
	いずれも、コメントアウトのままでいいでしょう。

		OS = FREEBSD

	OS を一つだけ指定します。ここに無い OS の場合は、'OS = another_unix'
	を指定して下さい。

		SD = nosound

	サウンドの設定を一つだけ指定します。サウンド未対応の OS の場合は、
	'SD = nosound' を指定します。

		S_LIN = -DFANCY_SOUND

	AIX や solaris では、この行をコメントアウトしておかないと、ノイズが
	でるそうです。(作者未確認)

		USEINLINE	= -DINLINE=inline

	gcc などの、インライン関数をサポートしているコンパイラを使用する場合は
	この行のコメントアウトを外してください。
	なんのことかわからない場合は、コメントアウトのままにしておきましょう。

		X11INC		= -I/usr/X11R6/include
		X11LIB		= -L/usr/X11R6/lib

	X11 関連のインクルードファイルやライブラリのディレクトリを指定します。

     2) make します。
	make には、必ず GNU make が必要です。
	make が無事完了すると、quasi88 というファイルができます。

     3) インストール………の方法は用意していません。
	適当なディレクトリにコピーして下さい。


5.) ROMイメージ、ディスクイメージの準備

      1) ROM イメージの準備

	  ROMイメージを入手し、コンパイル時に Makefile の ROMDIR で指定した
	ディレクトリに置きます。
	必要なファイルは、

		N88.ROM		… N88 BASIC ROM (32KB)
		N88EXT0.ROM	… N88 BASIC 拡張ROM バンク 0 (8KB)
		N88EXT1.ROM	… N88 BASIC 拡張ROM バンク 1 (8KB)
		N88EXT2.ROM	… N88 BASIC 拡張ROM バンク 2 (8KB)
		N88EXT3.ROM	… N88 BASIC 拡張ROM バンク 3 (8KB)
		N88N.ROM	… N BASIC ROM (32KB)
		N88SUB.ROM	… サブCPU ROM (8KB)
		N88KNJ1.ROM	… 漢字ROM第1水準 (128KB)
		N88KNJ2.ROM	… 漢字ROM第2水準 (128KB)
		N88JISHO.ROM	… 辞書ROM (512KB)
		FONT.ROM	… フォントイメージ (4096Byte)

	です。すべてのROMが揃っていなくても、QUASI88は起動します。
	(もっとも、最低限のROMがないと起動してもエミュレート出来ませんが)

	  ちなみに、ROM イメージファイルは P88SR.EXE (PC8801mk-2SR emulator) 
	のものを使用することもできます。( 起動時に、オプション -compatrom が
	必要 )。 M88 のROM イメージファイルを使用することも出来ますが、この
	場合はファイル名の変更が必要です。( 付属の FAQ 参照 )

     2) ディスクイメージの準備

	  つぎに、ディスクイメージを準備します。ディスクイメージはどこの
	ディレクトリに置いても構いません。が、コンパイル時に Makefile の 
	DISKDIR で指定したディレクトリにまとめておくと管理がしやすいかも
	しれません。

	  なお、ディスクイメージのフォーマットは、「D88形式」とか、「D88フォー
	マット」とか呼ばれるもので、P88SR.EXE (PC8801mk-2SR emulator) で
	使用されているフォーマットに準拠しています。詳しくは附属のドキュメント
	(ファイル名 FORMAT) を参照下さい。



6.) 使用方法

     1) 起動

	環境変数 DISPLAY が適切に設定されていることを確認します。
	必要に応じて、環境変数 QUASI88_ROM_DIR、QUASI88_DISK_DIR も設定
	しましょう。(未設定の場合は、コンパイル時に Makefile で設定した
	ディレクトリがデフォルトになります)

		QUASI88_ROM_DIR  … ROMイメージのあるディレクトリ
		QUASI88_DISK_DIR … ディスクイメージを検索するディレクトリ。

	コマンドラインから以下のように入力して、QUASI88 を起動します。

	% quasi88 file_a file_b

	この場合、
	   ドライブ 1: ＝ file_a のディスクイメージ
	   ドライブ 2: ＝ file_b のディスクイメージ
	という状態で、起動します。

	QUASI88 は起動時に、${QUASI88_DISK_DIR} ディレクトリの下で file_a、
	file_b を探します。もし見つからなければ、カレントディレクトリの下で
	再度探します。( ただし、"./file_a" のように、パス込みでファイル名を
	指定した場合は、${QUASI88_DISK_DIR} ディレクトリは検索されません )。
	なお、ファイルが見つからなければエラーを表示し、そのドライブは空の
	状態で起動します。


	指定したファイルが、複数のイメージを持つ場合、それぞれイメージ番号 
	1 番目のイメージがドライブ 1:、2: にセットされます。

	複数のイメージを持つファイルの場合、指定の際にイメージ番号を指定
	出来ます。

	% quasi88 file_x 3
		↓
	   ドライブ 1: ＝ イメージファイル file_x ： 3番目のイメージ

	% quasi88 file_x 2 4
		↓
	   ドライブ 1: ＝ イメージファイル file_x ： 2番目のイメージ
	   ドライブ 2: ＝ イメージファイル file_x ： 4番目のイメージ

	また、複数のイメージを持つファイルを一つだけ指定した場合、1番目、
	2番目のイメージがそれぞれドライブ 1:、2: にセットされます。

	% quasi88 file_x
		↓
	   ドライブ 1: ＝ イメージファイル file_x ： 1番目のイメージ
	   ドライブ 2: ＝             〃          ： 2番目のイメージ

	また、起動時にはさまざまなオプションを指定できます。
	詳細は附属のドキュメント(ファイル名 MANUAL) を参照下さい。


     2) メニューモード

	ソフトによっては、途中でディスクの交換を要求するものや、ブランク
	ディスクが必要なものがあります。

	メニューモードでは、イメージ交換や、各種環境変更が GUI ライクな
	画面で行なえます。F12 キーを押して、メニューモードに入って下さい。

	メニューモードからエミュレータに戻るには、「戻る」または「EXIT」
	ボタンをクリックします。

	「終了」または「QUIT」ボタンをクリックすると、QUASI88 そのものを
	終了します。

	メニューモードには他にもいろいろな設定の変更が可能です。
	詳細は附属のドキュメント(ファイル名 MANUAL) を参照下さい。


     3) モニターモード

	QUASI88 には、モニターモードと呼ばれるデバッグ用のモードがあります。
	このモードでは、エミュレータのメモリ、レジスタ状態のチェックを始め、
	様々なことが行なえます。
	なお、モニターモードを利用するには、QUASI88 の起動時に -debug オプ
	ションを指定しておく必要があります。

	QUASI88 の動作中に、Ctrl-C を押すとモニターモードに入れます。
	(メニューモードからでも、モニターモードに入ることが出来ます)

	モニターモードに入ると、

		QUASI88>

	というプロンプトが出ます。

	モニターモードでの操作は、コマンド入力形式になっています。
	例えば、現在ドライブに設定してあるファイルの情報をみてみましょう。

		drive    または、 drive show

	と入力すれば、ドライブのアクセスランプの状態、ファイルの情報、
	イメージの情報などが表示されます。

	また、任意のファイルの情報を見たい時は、

		file show ファイル名

	と入力してみてください。

	モニターモードを終了し、エミュレータを再開するには、

		go

	と入力します。

		menu

	と入力すれば、メニューモードに入ります。

	モニターモードには、他にもいろいろな機能がありますが、それらの
	使い方は、附属のドキュメント(ファイル名 MANUAL) を参照下さい。

	    （ちなみに、コンパイル時に、GNU ReadLine を有効にした場合、
	      モニターモードでの操作性が格段に向上するでしょう。）


     4) 終了

	QUASI88 の終了は、メニューモードで「終了」を選択するか、
	モニターモードで quit を入力してください。


     5) 環境設定ファイルについて

	毎回、決まりきったオプションを指定する必要のある場合など、
	環境設定ファイルを用意しておくと便利です。 環境設定ファイルは、
	.quasi88rc というファイル名で、ホームディレクトリに置きます。

	サンプルファイル _quasi88rc が付属されているので、これを .quasi88rc
	にリネームして、ホームディレクトリにコピーし、適宜編集すればよい
	でしょう。環境設定ファイルの記述方法は、マニュアルを参照ください。



7.) トラブルシューティング

	  QUASI88 が正常に起動しない場合、まずは、-verbose 1 オプションを
	つけて起動し、エラーが表示されていないかを確認してください。
	また、付属の FAQ にも目を通してみてください。

	起動してもウインドウが出ない
		→ X の初期化に失敗しています
	起動してもすぐに終了する
		→ メモリの確保か、X の初期化に失敗しています
	起動しても、ウインドウになにも表示されない
		→ ROMイメージがない、または壊れている。
			正しいROMイメージを、正しいファイル名で用意してください
		→ FONT.ROM ないし、N88KNJ1.ROM が壊れている。
			これらの ROM は無くてもかまいませんので、無い状態で
			起動してみてください。



8.) 今後の予定
	いろいろとやりたいことはあります。
	「エミュレータ性能の向上」「高速化」「configure対応」………。
	ま、やりたい事と出来る事は必ずしも一致しないものでして・・・。(^_^);



9.) 著作権／免責
	  QUASI88 （サウンドドライバ関連を除く）はフリーソフトウェアであり、
	著作権は作者が保有しています。このソフトは無保証であり、このソフトを
	使用した事によるいかなる損害も作者は責任を負いません。

	  QUASI88のサウンドドライバ関連は、MAME および、XMAME のソースを
	使用しています。この部分のソフトは、各著作者が著作権を有します。
	この箇所のライセンスは、MAME および、XMAME のドキュメントを参照下さい。

	  QUASI88の作成にあたり、Marat Fayzullin氏作の fMSX、Nicola Salmoria氏
	( MAME/XMAME project) 作の mame/xmame、ゆみたろ氏作の PC6001V を
	参考にさせてもらいました。


10.) 作者／e-mailアドレス

	福永省三
	e-mail : fukuchan@mh1.117.ne.jp
	QUASI88 Home Page →) http://www.117.ne.jp/~show/pc8801/pc88emu.html
