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

						2002/06/30
						福永省三
						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 
    エミュレータです。

    QUASI88 は、fMSX のソースコードを参考に作成されました。
    FreeBSD 4.5R + XFree86 4.1.0 で動作確認をしています。

    サウンドドライバは、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、Solaris では動作報告があります。)

-------------------------------------------------------------------------------
2)  QUASI88の配布物
-------------------------------------------------------------------------------

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

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

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

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

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

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

-------------------------------------------------------------------------------
3)  QUASI88の性能
-------------------------------------------------------------------------------

    1. エミュレート性能

     【エミュレートしているもの】

	・Z80		( メインCPU・サブCPU )
	・割り込み	( VSYNC、1/600秒RTC、サウンド )
	・メモリ	( PC-8801mkIISR相当分、拡張RAM、辞書ROM )
	・画面表示	( テキストVRAM、VRAM、パレット、ALU )
	・漢字ROM	( 第1、第2水準 )
	・FDC/FDD	( 主要コマンドのみ。D88フォーマット対応[ 2Dのみ ] )
	・PIO
	・キーボード
	・マウス
	・時計		( 時刻の読み出しのみ )
	・サウンド	( YM2203、BEEP音 )

     【エミュレートしていないもの】

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

     【互換性 (完成度)】

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

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

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

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


    2. QUASI88の動作条件

     【高速なマシン】

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

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

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

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

-------------------------------------------------------------------------------
4)  コンパイル方法
-------------------------------------------------------------------------------

    1. Makefile をお手持ちの環境にあわせて変更します。

	コメントアウトする場合は、行頭に # を付けます。
	コメントアウトを外す(コメントインする)場合は、行頭の # を取ります。

	以下に主な変更点を挙げます。
	意味の分からないものは、とりあえず変更しないことをお勧めします。

	[1] ROMイメージファイルのあるディレクトリの設定

			ROMDIR = /local/quasi88/rom/

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

	[2] ディスクイメージファイルのあるディレクトリの設定

			DISKDIR = /local/quasi88/disk/

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

	[3] エンディアンネスの設定

			LSB	= -DLSB_FIRST

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

	[4] MIT-SHM 機能を使用するかどうかの設定

			MSHM	= -DMITSHM

		  MIT-SHM を使用しない(できない)場合、この行をコメントアウト
		して下さい。

	[5] gettimeofday 関数を使用するかどうかの設定

			GETTIMEOFDAY	= -DHAVE_GETTIMEOFDAY

		  gettimeofday 関数を使用しない(できない)場合、この行をコメント
		アウトしてください。

	[6] OS の指定

			OS = FREEBSD

		  OS の種類を一つだけ選択します。
		ここに無い OS の場合は、OS = another_unix を選択して下さい。

	[7] サウンドの有無の指定

			SD = nosound

		  サウンドの有無の設定を一つだけ選択します。
		サウンドに対応している OS の場合は、SD = sound を選択できます。
		( OS = irix の場合のみ、SD = al_sound の選択が出来ます。)

	[8] サウンド関連の設定

			S_LIN = -DFANCY_SOUND

		  AIX や solaris では、この行をコメントアウトしておかないと、
		ノイズがでるそうです。(作者未確認)
			※注意  Solaris ではこの行をコメントアウトしたところ、
			        kernel panic が発生したという報告もあります。

	[9] コンパイル関連の設定

			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 を起動します。
	a.d88 や b.d88 はディスクイメージファイルのファイル名とします。

		% quasi88 a.d88 b.d88

	この場合、
		ドライブ 1: に a.d88 のディスクイメージをセット
		ドライブ 2: に b.d88 のディスクイメージをセット
	という状態で、起動します。

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

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

		% quasi88 x.d88 3
			↓
		    ドライブ 1: にファイル x.d88 の 3 番目のイメージをセット

		% quasi88 x.d88 2 4
			↓
		    ドライブ 1: にファイル x.d88 の 2 番目のイメージをセット
		    ドライブ 2: にファイル x.d88 の 4 番目のイメージをセット

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

		% quasi88 y.d88
			↓
		    ドライブ 1: にファイル y.d88 の 1 番目のイメージをセット
		    ドライブ 2: にファイル y.d88 の 2 番目のイメージをセット

	  起動時にはさまざまなオプションを指定できます。
	以下に、よく使いそうなオプションを挙げます。

	    -cpu 1	 … 正常に動かない (エミュレートできない) 場合に
	    		    指定してみてください。
	    -cpu 2       … -cpu 1 をつけても正常に動かない場合は、こちらを
			    指定してみてください。
	    		    -cpu 1 をつけると動くことは動くが、処理速度が
			    とても遅い、という場合にも指定してみて下さい。
	    -cpu 3       … -cpu 1 をつけても、-cpu 2 をつけても動かない場合
	    		    これを指定してみて下さい。それでも動かなければ、
			    あきらめて下さい。m<__>m

	    -v1s         … V1S モードで起動します。
	    -8mhz        … CPU クロック 8MHz で起動します。

	    -frameskip 1 … 処理落ちしてないのに、画面がカクカクすると
			    思った場合に、指定します。
			    このオプションをつけると処理落ちするようになった
			    場合は、値を 2、3、4、5、6 … と増やしてみて、
			    最適な値を選んでください。

	    -vol -6      … 音量を調整します。
			    -32 (最小) 〜 0 (大音量) を指定します。

	    -fmvol 100
	    -psgvol 100
	    -beepvol 100 … FM音源、PSG音源、BEEP音のバランスが悪いと思ったら、
			    これらのレベルを好きにいじることが出来ます。
			    それぞれ、0 〜 100 (%) で指定できます。

	    -resume      … サスペンド状態から復帰します。

	    -resumefile ファイル名 … サスペンドする時にファイル名を指定した
	    			      場合は、このオプションで復帰します。

	詳細は附属のドキュメント(ファイル名 MANUAL) を参照下さい。


    2. メニューモード

	  F12 キーを押すと、メニューモードになります。
	メニューモードでは GUI ライクな操作で、イメージ交換や環境の変更が
	出来ます。

	  メニューモードからエミュレータに戻るには、「戻る」または「EXIT」
	ボタンをクリックします。「終了」または「QUIT」ボタンをクリックすると、
	QUASI88 そのものを終了します。

	メニューモードでは様々な機能をカテゴリに分けて用意しています。
	以下に、よく使いそうなものを挙げます。

	  [リセット] または [RESET]  … エミュレータをリセットします。
	  [CPU設定]  または [CPU]    … クロック変更やウエイト調整ができます。
	  [画面表示] または [GRAPH]  … フレームレートの変更などができます。
	  [音量]     または [VOLUME] … 音量の変更ができます。
	  [ディスク] または [DISK]   … イメージの交換や、状態変更ができます。
	  [その他]   または [MISC]   … サスペンドや、ブランクイメージの作成が
				        できます。

	詳細は附属のドキュメント(ファイル名 MANUAL) を参照下さい。


    3) モニターモード

	  QUASI88 には、モニターモードと呼ばれるデバッグ用のモードがあります。
	もっとも、通常は使う必要は無いと思われます。

	  試しに使ってみたい場合、-debug オプションを付けて QUASI88 を起動
	してみてください。そして 端末で Ctrl-C を押すと、デバッグモードに
	入れます (メニューモードからでも入ることができます)。

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

		QUASI88>

	というプロンプトが出ます。
	ここで、例えば現在ドライブに設定してあるファイルの情報をみる場合は、

		drive

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

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

		go

	と入力します。

		menu

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

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


    4) 終了

	  QUASI88 の終了は、メニューモードで「終了」または「QUIT」ボタンを
	クリックするか、モニターモードで quit を入力してください。


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

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

	ファイル内容はテキストで、1行1オプションを記述していきます。
	付属のサンプルファイル _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
