
		   QUASI88  -- PC-8801 エミュレータ

-------------------------------------------------------------------------------
【目次】

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

-------------------------------------------------------------------------------
1)  QUASI88 とは？
-------------------------------------------------------------------------------

      QUASI88 は、 PC-8801 エミュレータです。
    SDL2 を使用しており、以下の環境にて動作確認しています。

	・FreeBSD 13.2R + SDL 2.26.5
	・Windows 11    + SDL 2.30.1

    サウンド出力機能は、 MAME 0.112/XMAME 0.106 のソースから移植しました。
    また、FM音源のジェネレータとして fmgen 008 も使用しています。

    なお、 SDL については以下のウェブサイトを参照ください。

        https://www.libsdl.org/

    注意)
    Windows環境では別途、VCRUNTIME140.dll が必要です。
    もし「VCRUNTIME140.dll が見つからないめ、コードの実行を継続できません。」
    というようなダイアログが表示される場合は、例えば以下の URL から
    Visual C++ 再頒布可能パッケージを取得してインストールしてください。

        https://learn.microsoft.com/ja-jp/cpp/windows/latest-supported-vc-redist?view=msvc-170

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

    ソース形式で配布される場合、以下の内容が含まれます。

	doc/		ドキュメント (マニュアル、コンパイル方法など)

	src/		ソースファイル
	src/snddrv/	サウンドドライバ関連のソースとライセンス
	src/fmgen/	FM音源ジェネレータ fmgen 関連のソースとライセンス

	Makefile	UNIX用メイクファイル
	quasi88.rc	UNIX用環境設定ファイルのサンプル
	keyconf.rc	UNIX用キー設定ファイルのサンプル

	visualc/	WINDOWS用のビルド環境 および 設定ファイル
		QUASI88.sln	VS2022用プロジェクトファイル
		QUASI88.vcxproj	VS2022用プロジェクトファイル
		QUASI88.ini	環境設定ファイル (のサンプル)
		KEYCONF.ini	キー設定ファイル (のサンプル)
		SDL2/		ビルド時に必要なSDL2開発用ファイルの置き場


    実行ファイル形式 (Windows) で配布される場合、以下の内容が含まれます。
    なお、Windows用実行ファイルは、VS2022でビルドしたものです。

	doc\		ドキュメント (マニュアルなど)
	license\	ライセンス (SDL, MAME, fmgem のライセンスファイル)

	x64\		64bit版Windows用の実行ファイル および 実行環境
	    QUASI88.exe		64bit版Windows用実行ファイル
	    QUASI88.ini		環境設定ファイル (のサンプル)
	    KEYCONF.ini		キー設定ファイル (のサンプル)
	    SDL2.dll		SDLライブラリ
	    ROM\		ROMイメージファイル をセットしておくフォルダ
	    DISK\		DISKイメージファイルをセットしておくフォルダ
	    TAPE\		TAPEイメージファイルをセットしておくフォルダ
	    INI\		イメージ毎環境ファイルをセットしておくフォルダ
	    SNAP\		スナップショットが保存されるフォルダ
	    STATE\		ステートファイルが保存されるフォルダ

	x86\		32bit版Windows用の実行ファイル および 実行環境
	    QUASI88.exe		32bit版Windows用実行ファイル
	    QUASI88.ini		環境設定ファイル (のサンプル)
	    KEYCONF.ini		キー設定ファイル (のサンプル)
	    SDL2.dll		SDLライブラリ
	    ROM\		ROMイメージファイル をセットしておくフォルダ
	    DISK\		DISKイメージファイルをセットしておくフォルダ
	    TAPE\		TAPEイメージファイルをセットしておくフォルダ
	    INI\		イメージ毎環境ファイルをセットしておくフォルダ
	    SNAP\		スナップショットが保存されるフォルダ
	    STATE\		ステートファイルが保存されるフォルダ


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

    1. エミュレート性能

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

	・Z80		   ( メインCPU・サブCPU )
	・割り込み	   ( VSYNC、1/600秒RTC、サウンド )
	・メモリ	   ( PC-8801mkIISR相当分、拡張RAM、辞書ROM )
	・画面表示	   ( テキストVRAM、VRAM、パレット、ALU )
	・漢字ROM	   ( 第1、第2水準 )
	・FDC/FDD	   ( 主要コマンドのみ。D88フォーマット対応 )
	・PIO
	・キーボード
	・マウス           ( バスマウス、シリアルマウス )
	・ジョイスティック ( 一部のシステムでのみ可 )
	・時計		   ( 時刻の取得 )
	・サウンド	   ( YM2203、YM2608、BEEP音 )
	・テープ	   ( ロード／セーブ )
	・プリンタ	   ( ファイルに出力 )
	・RS232C	   ( ファイルに出力／ファイルから入力 )
	・PCG-8100	   ( サウンドは未対応 )

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

	・割り込みの正確なタイミング
	・CRTC/DMAC 関連の大部分
	・FDC の重要でないコマンド、2DD/2HD のディスク操作
	・時計の時刻取得以外の機能
	・正確なウエイト
	・その他、いろいろ

     【互換性 (完成度)】

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

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

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

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


    2. QUASI88の動作条件

     【高速なマシン】

	  QUASI88 はかなり重いソフトです。動作させるには、それなりの CPUパワー
	が必要です。もっとも、最近の Windows系のOSが快適に動作するような
	マシンでは特に問題無いとおもわれます。

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

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

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

-------------------------------------------------------------------------------
4)  コンパイル・インストール方法
-------------------------------------------------------------------------------

    ソースからコンパイル＆インストールする方法は、以下を参照してください。
	UNIX の場合			「build-unix.txt」
	Windows の場合			「build-win.txt」

    実行ファイル形式 (Windows) で配布される場合、インストーラは無いので、
    必要なファイルを、好きなフォルダにコピーしてください。
    ( アンインストールの際は、コピーしたファイルを全て削除してください )

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

    1. ROM イメージの準備

	  ROMイメージファイルを、ROM用ディレクトリ(*1)にコピーしておきます。
	必要なファイルは以下の通りです。(ファイル名は小文字でもOK)

	    ファイル名       内容                      (サイズ)

            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               	  (2KB or 8KB)
            N88KNJ1.ROM      漢字ROM第1水準            	(128KB)
            N88KNJ2.ROM      漢字ROM第2水準            	(128KB)
            FONT.ROM         フォントイメージ      (なくてもOK)

	  ちなみに、ROM イメージファイルは M88 で使用しているものや、
	P88SR.EXE (PC8801mk-2SR emulator) のものを使用することもできます。

	  また、サウンドボード2をエミュレートする場合は、リズム音用のファイル
	が必要となります。
	必要なファイルは、「ym2608_adpcm_rom.bin」、または、「2608_BD.WAV」
	「2608_SD.WAV」「2608_TOP.WAV」「2608_HH.WAV」「2608_TOM.WAV」
	「2608_RIM.WAV」です。ファイルが無い場合、リズム音が出力されません。

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

	  つぎに、ディスクイメージを準備します。ディスクイメージはどこの
	ディレクトリに置いても構いませんが、DISK用ディレクトリ(*2)にまとめて
	おくとよいでしょう。

	  扱えるディスクイメージの形式は、「D88形式」です。
	これは P88SR.EXE (PC8801mk-2SR emulator) で使用されている形式です。

    3. テープイメージの準備

	  QUASI88 はテープイメージも扱えます。テープイメージはどこの
	ディレクトリに置いても構いませんが、TAPE用ディレクトリ(*3)にまとめて
	おくとよいでしょう。

	  扱えるテープイメージの形式は、「CMT形式」および「T88形式」です。
	ただし、セーブは「CMT形式」のみとなります。


   (*1 - *3) ROM用ディレクトリ／DISK用ディレクトリ／TAPE用ディレクトリ
	配布物に ROM や DISK や TAPE というディレクトリがあれば、それです。
	いずれも、環境変数や設定ファイルで変更できます。

-------------------------------------------------------------------------------
6)  使い方
-------------------------------------------------------------------------------

    1. 起動

	以下を確認して、 QUASI88 を起動してください。

	UNIX の場合
	  SDL2を予めインストールしておいてください。
	  環境変数 DISPLAY やパスが適切に設定されていることを確認してください。

	Windows の場合
	  SDLのライブラリ (SDL2.dll というファイル名です) を、QUASI88 の実行
	ファイルと同じディレクトリにコピーしておいてください。

	SDLのライブラリが配布物に含まれていない場合は、SDLのウェブサイト
	( https://www.libsdl.org/ ) から入手しておいてください。


    2. キー操作

	  QUASI88 は、Windows用の日本語106キーボードを前提にキー入力を
	エミュレートしています。
	PC-8801の特殊なキーは、以下のキーで入力できる場合があります。
	(CAPSキー・カナキーはロックできません)

		PC-8801のキー  106キーボード
		-------------  -------------------------------
		STOP           Pause ／ ScrollLock
		COPY           PrintScreen
		HOME CLR       Home
		HELP           End
		ROLL DOWN      PageUp
		ROLL UP        PageDown
		カナ           右Alt
		GRPH           左Alt
		決定           無変換
		変換           変換
		全角           アプリキー

	  また、 F11 と F12 は以下の機能に割り当てられています。

		F11      ステータス表示。押すたびに表示／非表示が切り替わります
		F12      メニューモードへ移ります。


    3. メニューモード

	  F12キー (一部環境では左Winキー・左Cmdキー) を押すと、
	メニューモードになります。 QUASI88 の各種設定変更はここで行います。

	  メニューモードからエミュレータに戻るには、ESCキーを押すか、
	  [戻る] (または[EXIT]) ボタンをクリックします。
	  [終了] (または[QUIT]) ボタンをクリックすると、QUASI88を終了します。

	メニューモードでは様々な機能を以下のカテゴリに分けて用意しています。

	  [リセット] … エミュレータをリセットします。
	  [CPU]      … クロック変更やウエイト調整ができます。
	  [画面]     … フレームレートの変更などができます。
	  [音量]     … 音量や、サウンド出力設定の変更ができます。
	  [ディスク] … ディスクイメージの交換や、状態変更ができます。
	  [キー]     … 特殊キー割り当てができます。
	  [マウス]   … マウス・ジョイスティック設定ができます。
	  [テープ]   … テープイメージの設定が出来ます。
	  [他]       … ステートセーブや、画面・サウンドの保存ができます。


    4. 環境設定ファイル

	  QUASI88の設定は、以下のテキストファイルにて行います。このファイル
	を、環境設定ファイルと呼びます。

	UNIX の場合
	  「~/.quasi88/QUASI88.rc」

	Windows の場合
	  実行ファイルと同じフォルダにある、「QUASI88.ini」

	環境設定ファイルは、適当なツール (Windowsならメモ帳など) にて編集
	します。

	設定は 1行につき1項目ずつ記述してください。空行および、# 記号で始まる
	行は無視されます。以下に、いくつか例を挙げます。

	    起動時のBASICモードの設定します。いずれかひとつ指定できます。
		-v2
		-v1h
		-v1s

	    起動時のCPUクロックの設定します。いずれかひとつ指定できます。
		-4mhz
		-8mhz

	    サウンドボードIIをエミュレートします。
		-sd2

	    マウスをエミュレートします。(ジョイスティックとは排他使用)
		-mouse

	    ジョイスティックをエミュレートします。(マウスとは排他使用)
		-joystick

	    画面を何フレームごとに更新するかを設定します。
	    1 を指定すると、秒間 60フレーム相当になります。2 にすると
	    秒間 30 フレーム、4 にすると秒間 15フレーム……となります。
		-frameskip 1

	    サウンドを出力しません。
		-nosound

	    FM音源のエミュレートに、fmgen を使用します。
		-fmgen

	    サブCPUの駆動タイミングを変更します。
	    -cpu 0 がデフォルトです。これで動作しないアプリケーションの場合、
	    -cpu 1 や -cpu 2 を指定してみてください。
		-cpu 1

	    メニューモードで起動します。
		-menu

	    ROM用ディレクトリを指定します
	    ディレクトリのパスの前後は " で囲んでおきましょう。
		-romdir "ディレクトリのパス"

	    ディスク用ディレクトリを指定します
		-diskdir "ディレクトリのパス"

	    キー設定ファイルを読み込みます。
	    キー設定ファイルの記述方法は、サンプルから想像してください ^^;
		-keyboard 0

	例えば、

		o 秒間30フレーム表示
		o サブCPU駆動タイミングを 1 にする
		o サウンドボードII を実装
		o ウインドウサイズを 640x480 にする
		o サウンドのバッファサイズを 4096 に増やす

	という設定にしたい場合は、環境設定ファイルを以下のように編集します。

		+--------------------------------------------+
		|# MY SETTING				     |
		|					     |
		|-frameskip 2				     |
		|-cpu 1					     |
		|-sd2					     |
		|-width 640				     |
		|-height 480				     |
		|-sdlbufsize 4096			     |
		+--------------------------------------------+


    5. コマンドラインからの起動

	  コマンドラインから QUASI88 を起動する場合、起動時のディスクイメージ
	ファイルを指定できます。
	以下はファイル N88BASIC.D88 を指定した例です。

		% quasi88 N88BASIC.D88

	この時、環境設定ファイルのほかに、個別設定ファイルとして、以下の
	ファイルが読み込まれます。( ”N88BASIC”の部分は、ディスクイメージ
	ファイルのファイル名に応じて、変化します )

	UNIX の場合
	  「~/.quasi88/rc/N88BASIC.rc」

	Windows の場合
	  「INI」フォルダにある、「N88BASIC.ini」

	  起動時にはオプションの指定もできます。ここで指定するオプションは、
	環境設定ファイルに記述する内容と同じです。

	以下は、秒間30フレーム表示・サブCPU駆動設定 1・サウンドボードII 実装で
	ファイル N88BASIC.D88 を指定した例です。

		% quasi88 N88BASIC.D88 -frameskip 2 -cpu 1 -sd2
	
	●Windows の場合は、「コマンドプロンプト」を先に起動し、
	  そこからコマンドラインにて QUASI88 を起動できます。

	○システムやバージョンによっては、コマンドラインによる各種設定が
	  できません。この場合は、環境設定ファイルを利用してください。

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

      QUASI88 が正常に起動しない場合、-verbose 1 オプションをつけて起動してみて
      ください。(環境設定ファイルに -verbose 1 の1行を書き加えればいいです)

      コンソールにいろいろと表示されるので、その内容を確認してください。

	1) 起動しない
	   必要なライブラリ (SDLのライブラリなど) があるか確認してください。

	2) 起動してもすぐに終了してしまう
	   なんらかの初期化に失敗してます。OSの状態を確認してみてください。
	   環境設定ファイルを一旦削除してみてください。

	3) 画面が真っ黒なままだ
	   ROMイメージが読めていないようです。-verbose 1 オプションを指定して
	   起動し、出力された内容を確認してください。

	4) 画面の表示が崩れている
	   ファイル FONT.ROM か N88KNJ1.ROM がおかしいようです。これらの
	   ファイルは無くてもかまいませんので、一度削除してみてください。

	5) 正常に動作しないアプリケーションがある
	   メニューの [CPU] ないしは、-cpu オプション／-fdc_wait オプションの
	   設定を変更してください。

	7) サウンドがノイズだらけになる
	   デフォルトのままではサウンドのバッファが足りないことがあります。
	   -sdlbufsize, -sdlbufnum オプションで調整してみてください。

	8) 処理速度が遅い
	   速いマシンに乗り換えましょう :-)
	   オプションをいろいろと組み合わせればなんとかなるかもしれません。
	   -autoskip を使ってみる、-frameskip でフレームレートを下げる、
	   -half で画面サイズを小さくする、-fullscreen でフル画面にしてみる、
	   -nowait でウェイトなしにする、 -sd で、サウンドボードIIをやめる、
	   -nofmgen で、fmgen の使用をやめる、-nosound でサウンド出力そのもの
	   をやめる、などなど。

-------------------------------------------------------------------------------
8)  今後の予定
-------------------------------------------------------------------------------

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

-------------------------------------------------------------------------------
9)  著作権／免責
-------------------------------------------------------------------------------

      QUASI88 （サウンド出力処理部を除く）はフリーソフトウェアであり、
    著作権は作者が保有しています。このソフトは無保証であり、このソフトを
    使用した事によるいかなる損害も作者は一切の責任を負いません。
    ライセンスに関しては、修正BSDライセンスに準ずるものとします。

      QUASI88 のサウンド出力処理部は、MAME および、XMAME のソースコードを
    使用しています。このソースは、各著作者が著作権を有します。
    ライセンスに関しては、MAME および、XMAME のドキュメントを参照下さい。

      QUASI88 のサウンド出力処理部のうち、FM音源ジェネレータには fmgen の
    ソースコードを使用しています。このソースは cisc氏が著作権を有します。
    ライセンスに関しては、fmgen のドキュメントを参照ください。

-------------------------------------------------------------------------------
10) 作者／連絡先
-------------------------------------------------------------------------------

    作者：福永省三
    連絡先：ｕｓｒ０１０６０＠ｇｍａｉｌ。ｃｏｍ
            (半角文字に変換してください／。はピリオドです)
    ウェブサイト：https://www.eonet.ne.jp/~showtime/quasi88/
