X88000 - PC-8801エミュレータ Copyright (C) 1998-2015 Manuke ◎概要 X88000はWindows/Linux上で動作するPC-8801エミュレータです。 (PC-8001mkII/SRもエミュレート可) N88-BASIC V1/V2モード、N-BASICモード、およびN80-BASIC V1/V2モ ードで動作可能です。 X88000はP88SR用ディスクイメージファイル(拡張子:D88)の読み 書きが可能です。 また、カセットテープイメージファイル(拡張子:T88、CMT)の読 み込み/書き出しができます。 (T88ファイルの作成には、別途"Wav2T88"もしくは"TransT88"が必 要です) さらに、N80用のメモリイメージファイル(拡張子:N80)も利用可能 です。 ◎使用環境(Windows版) ・OS MS-Windows98/Me/NT4/2000/XP/Vista/7/8/8.1/10 (Win95で動作させたい場合はソースからコンパイルし直してく ださい) DirectX3以降(なくても動くはず…) ・CPU なるたけ早いやつ (MMX Pentium 166MHz以上が基本かな?) ・メモリ そこそこ(笑) (基本的な動作には5MB前後の空きメモリが必要) ◎使用環境(Linux版) ・OS GNU/Linux & X Window System & GTK+2.8以降 ・CPU x86/PPC/EmotionEngineで動作確認 ・メモリ Windows版に準ずる(^^;) ◎必要ファイル X88000の動作にあたっては、PC-8801mkIISR以降の機種から吸い出し たROMファイルが別途必要となります。 以下のいずれかの組み合わせのものを用意し、X88000の実行ファイ ルと同一フォルダに格納してください。 ○P88SR用ROMファイル+フォントファイル (漢字は表示できません) PC88.ROM PC88.FNT(もしくはFONT.ROM) ○P88SR用ROMファイル+M88用漢字ROMファイル PC88.ROM KANJI1.ROM KANJI2.ROM ○M88用ROMファイル N88.ROM N88_0.ROM N88_1.ROM N88_2.ROM N88_3.ROM N80.ROM DISK.ROM KANJI1.ROM KANJI2.ROM E8.ROM(N80 BASIC 4TH-ROM、なくても動作可) FONT80SR.ROM(ひらがなフォント、なくても動作可) また、PC-8801mkII以前のものであるN88用のROMファイルも使用可能 ではありますが、これを使用した場合はX88000の中からディスクシ ステム及びN88-BASIC V2モードの機能を使うことはできません。 ○N88用ROMファイル+フォントファイル (漢字は表示できません) 8801-N88.ROM 8801-N80.ROM 8801-4TH.ROM PC-8801.FON ○N88用ROMファイル+M88用漢字ROMファイル 8801-N88.ROM 8801-N80.ROM 8801-4TH.ROM KANJI1.ROM KANJI2.ROM N80-BASIC V1/V2で動作させるためには、PC-8001mkII/SRから吸い出 したROMファイルが別途必要となります。 ○N80-BASIC V1/V2用ROMファイル N80_2.ROM(V1用) N80_3.ROM(V2用) KANJI1.ROM KANJI2.ROM HIRAFONT.ROM(なくても動作可) 海外版モードを動作させるには、海外版用フォントROMファイルが必 要です。 ○海外版モード用フォントROMファイル OPTFONT.ROM ◎操作説明 X88000はPC-8801シリーズの後期型キーボード(ファンクションキー ×10個のやつ)をエミュレーションしますが、一部キートップと異 なる割り付けを行っています。 以下にその部分を示します。(OADG106キーボードでの表記) STOP → F11 GRPH → F12 後退 → Backspace HOME CLR → Home HELP → End ROLL UP → PageDown ROLL DOWN → PageUp 変換 → 変換(こりゃ同じか(^^;)) 決定 → 無変換 全角 → 半角/全角 COPY → Alt+F1 CTRL+COPY → Ctrl+Alt+F1 GRPH+COPY → Shift+Alt+F1(ちょっと変則的) また、カナキーはWindowsのカナ入力モードに準じます。 (ScrollLockでも代用可能です) さらに、IME経由での文字入力も受け付けます。 受け付ける文字は半角文字、全角英数字、半角記号に対応した全角 記号、および全角ひらがな/カタカナです。 なお、DirectInputを使用しない場合、一部のキーを厳密に判別でき ません。(全角キー、左右シフト/リターンキー判別、シフト押下 時のテンキーなど) ※DirectInputとIME入力の併用は相性が悪い場合があります。 (キーが押しっぱなしになったりする) この場合には、DirectInputを使用しない状態でIME入力を利用す ると良いようです。 その他、PC-8001mkII(非SR)のN80-BASIC V1モード用に、下/右カ ーソルキーをエミュレートしています。 (SHIFT+上/左カーソルが使いづらいので…(笑)) ◎メニュー説明 ○システム ・リセット システムをリセットします。 ・BASICモード ・N-BASICモード N-BASICモードに切り替え、リセットします。 ・N88-BASIC V1-Sモード N88-BASIC V1-Sモードに切り替え、リセットします。 ・N88-BASIC V1-Hモード N88-BASIC V1-Hモードに切り替え、リセットします。 ・N88-BASIC V2モード N88-BASIC V2モードに切り替え、リセットします。 ・N80-BASIC V1モード N80-BASIC V1モードに切り替え、リセットします。 ・N80-BASIC V2モード N80-BASIC V2モードに切り替え、リセットします。 ・動作クロック ・4MHzモード Z80 CPUを4MHzで動作させます。 ・8MHzモード Z80 CPUを8MHzで動作させます。 ・ブーストモード(Alt+B) 時間待ちのウェイトON/OFFを切り替えます。 (ブースト時は、エンジン臨界点までカウントスタートし ます(嘘)) ・フルスクリーンモード(Alt+Enter) : (Windows) フルスクリーン動作を切り替えます。 ・クリップボード ・コピー:ビットマップ : (Windows) ・書き出し:画像書き出し:XWD : (Linux) (Windows) テキスト+グラフィック画面をビットマップとしてク リップボードへコピーします。 (Linux) テキスト+グラフィック画面をXWD(X-Windowダンプ) 形式でファイルへ保存します。 ・コピー:テキスト テキスト画面の内容をテキストとしてクリップボードへ コピーします。 ・張り付け:テキスト クリップボードに上げられたテキストをキー入力します。 ・環境設定 環境設定ダイアログを開きます。 (詳細は下記) ・パラレルポート ・デバイスの設定 パラレルポートに接続したデバイスの設定を行います。 デバイスの種類によりダイアログの内容が異なります。 ・なし パラレルポートからデバイスを外します。 (デフォルト) 「デバイスの設定」メニューは選択できなくなります。 ・PC-PR201 パラレルポートにプリンタPC-PR201を接続します。 「デバイスの設定」メニューでPC-PR201の各種操作を行 うダイアログが表示されます。 (詳細は下記) ・X88000の終了 X88000を終了します。 ○イメージ ・ディスクイメージ(Alt+D) ディスクイメージ選択ダイアログを開きます。 (詳細は下記) ・テープイメージ(Alt+T) テープイメージ選択ダイアログを開きます。 (詳細は下記) ・メモリイメージ(Alt+M) メモリイメージファイルを読み込みます。 読み込める形式はN80です。 (自動的にN-BASICモードに切り替わります) ○デバッグ ・メインCPUデバッグ メインCPUデバッグモードのON/OFFを切り替えます。 ・サブCPUデバッグ サブCPUデバッグモードのON/OFFを切り替えます。 ・デバッグ実行(Alt+F5) ブレークポイントに到達するまで、CPUを実行させます。 ・ステップ実行(Alt+F10) CPUを1ステップ実行させます。 トレース実行と違い、以下の命令を実行した場合にはその 次の命令を示す位置まで一気に実行します。 HALT DJNZ e CALL nn CALL cc, nn RST n LDIR / LDDR CPIR / CPDR INIR / INDR OTIR / OTDR ・トレース実行(Alt+F11) CPUを1命令実行させます。 ・ステップ実行2(Alt+F12) CPUを1ステップ実行させます。 「ステップ実行」のものに加え、以下の命令もステップ実 行します。 JR cc, e JP cc, nn 但し、これらの命令はループに限定されないため、次の命 令を示す位置で停止するとは限りません。 ・実行ログ記録 CPUが実行した命令のアドレスをファイルに落とします。 (実行ファイルのあるディレクトリのDebug.log) ・RAM書き出し メモリのダンプをファイルに落とします。 (実行ファイルのあるディレクトリ) ◎メインRAM0 : 0000H-7FFFH main0.ram : 32KB ◎メインRAM1 : 8000H-FFFFH main1.ram : 32KB ◎高速テキストVRAM(低速モード時) fast_tv.ram : 4KB ◎低速テキストVRAM(高速モード時) slow_tv.ram : 4KB ◎グラフィックVRAM0 gv0.ram : 16KB ◎グラフィックVRAM1 gv1.ram : 16KB ◎グラフィックVRAM2 gv2.ram : 16KB ◎サブシステムRAM sub.ram : 16KB ◎拡張RAM0 ex0.ram : 128KB ◎拡張RAM1[VAB](ビデオアートボード) ex1.ram : 128KB ・逆アセンブル 指定した位置のコードを逆アセンブルして、テキストボッ クスに格納します。 ・ダンプ 指定した位置のダンプリストをテキストボックスに格納し ます。 ・ブレークポイント設定 ブレークポイントを登録/削除します。 デバッグ実行中にプログラムカウンタが登録されたアドレ スのいずれかと等しくなったとき、実行を中断します。 ○ヘルプ ・バージョン情報 X88000のバージョンを表示します。 ◎環境設定ダイアログ ○「一般」タグ ・UI言語 ユーザインターフェースに使用する言語を選びます。 日本語と英語のどちらかを選択可能です。 (「自動」はロケール設定から自動判別します) ・ブーストリミッタ ブーストモード時の最大速度を制限します。 (「V-MAX」は無制限) 100%より小さい場合には減速されます。 ・ディスク ディスクドライブの数を指定します。 ただし、3ドライブ以上はBIOS-ROMが対応している必要があ ります。 (M付き2HD対応機種は駄目みたい…) ※次回リセット時に反映 ・CRT CRTの種類(24KHz/15KHz)を選択します。 24KHz : 垂直周期24KHz/640x400のCRT 15KHz : 垂直周期15KHz/640x200のCRT (ウェイト速度に影響) 15KHzでは400ライン表示ができなくなります。 ※次回リセット時に反映 ・その他 ・ウェイト 実機相当のウェイトエミュレーションを実施します。 (エミュレーション詳細を参照) ※次回リセット時に反映 ・旧機種互換 新機種で追加されたI/Oポートを一部塞ぎます。 (エミュレーション詳細を参照) ※次回リセット時に反映 ・PCG-8800 HAL研究所のPCG-8800をサポートします。 (エミュレーション詳細を参照) ※次回リセット時に反映 ・海外版モード テキストフォントを海外で発売された機種(PC-8801A等) へ差し替えます。 ※OPTFONT.ROMが必要 ○「画面」タグ ・更新レート 画面の更新レートを指定します。 ・インタレース 画面をインタレース表示するかどうか指定します。 ○「入力」タグ : (Windows) ・DirectInput キーボード入力にDirectInputを使うかどうか指定します。 ・IME IMEオン/オフ切り替えを禁止するかどうか指定します。 ○「入力」タグ : (Linux) ・XQueryKeymap キーボード入力にXQueryKeymapを使うかどうか指定します。 ・IM : (Linux) インプットメソッドオン/オフ切り替えを禁止するかどう か指定します。 ○「サウンド」タグ : (Windows) ・DirectSound BEEP/疑似サウンド/PCGサウンド再生にDirectSoundを使 うかどうか指定します。 ・周波数 DirectSoundの再生周波数を指定します。 ・ビット DirectSoundの再生ビット数を指定します。 ・チャンネル DirectSoundの再生チャンネル数を指定します。 ・BEEP音量 BEEP音/擬似サウンドの音量を指定します。 (左:音量小、右:音量大) ・ミュート(BEEP) BEEP音/擬似サウンドをミュートします。 ・PCG音量 PCGサウンドの音量を指定します。 (左:音量小、右:音量大) ・ミュート(PCG) PCGサウンドをミュートします。 ◎プリンタ設定ダイアログ ・プリンタ名 プリンタの名前を表示します。 ・用紙サイズ プリンタにセットする用紙のサイズを選びます。 用紙を選択しなおすと、現在の印刷結果がクリアされます。 ・用紙中央 可能な場合、用紙位置を指定することができます。 チェック状態では、用紙はプリンタの中央にセットされま す。 非チェック状態では、用紙は左寄せになります。 ・ページ プレビュー表示する用紙のページ番号を指定します。 ・コピー : (Windows) ・書き出し : (Linux) (Windows) 印刷結果をクリップボードへコピーします。 (Linux) 印刷結果をファイルへ書き出します。 (詳細は下記) ・用紙削除 印刷した用紙を削除します。 特定の1ページ、または全ページの削除が可能です。 ・紙送り 紙送りを実行します。 紙送り量はページ単位、行(1/6インチ)単位、ポイント (1/72インチ)単位の中から選べます。 ・リセット プリンタをリセット(電源再投入)します。 X88000本体をリセットしてもプリンタはリセットされませ ん。ご注意ください。 ・プレビュー 印刷内容をプレビュー表示します。 ハッチパターンはプリンタヘッド行を示します。 マウス左クリックで拡大、右クリックで縮小が可能です。 ◎プリンタ設定:コピーダイアログ : (Windows) ◎プリンタ設定:書き出しダイアログ : (Linux) ・ページ コピー/書き出し対象のページ番号を指定します。 ・メタファイル : (Windows) ・PDF : (Linux) (Windows) 拡張メタファイル形式で印刷結果をクリップボードへ コピーします。 (Linux) PDF形式で印刷結果をファイルへ書き出します。 ・比率 (Windows) メタファイルの大きさを決定します。 (Linux) PDFの大きさを決定します。 等倍、1/2、1/4の中から選択可能です。 ・枠 用紙の外枠を描画するかどうか指定します。 ・スプロケット穴 連続紙の場合、用紙左右のスプロケット穴を描画するかど うか指定します。 ・テキスト抽出 (Windows) 印刷された内容のうち、文字として出力されたデータ のみを抽出し、テキスト形式でクリップボードへコピ ーします。 ※エンコードはShift_JIS (Linux) 印刷された内容のうち、文字として出力されたデータ のみを抽出し、テキスト形式でファイルへ保存します。 ※エンコードはロケール設定に順ずる 抽出可能なデータはASCII文字、半角カナ(Linuxは全角カ ナに変換)、全角漢字です。 (図形イメージとして書き出された文字は抽出できません) ◎ディスクイメージ選択ダイアログ ○「ディスクイメージファイル」グループ ・ファイル 読み込まれているディスクイメージファイルの名前が表示 されます。 ファイル名の後の括弧内の数字は、ファイルに含まれるデ ィスクイメージの数を表します。 (リードオンリーディスクはのマークが付きます) ・追加 ディスクイメージを読み込み、ファイルリストに追加しま す。 (リードオンリー指定されたディスクは、書き込み内容が ファイルに反映されません) ・削除 ファイルリストからディスクイメージファイルを削除しま す。(ファイルが消えてしまうわけではありません) ・全削除 ファイルリストからディスクイメージファイルを全て削除 します。(ファイルが消えてしまうわけではありません) ○「ディスクドライブ」グループ ・ドライブ1 ・ドライブ2 ・ドライブ3 ・ドライブ4 フロッピーディスクドライブにセットするディスクイメー ジを指定します。 (環境設定で指定したドライブ数に影響されます) ・P(プロテクトシール) フロッピーディスクのプロテクトシール状態を切り替えま す。(チェック状態が書きこみ禁止) ◎テープイメージ選択ダイアログ ○「ロードイメージ」グループ ・開く テープイメージファイルを読み込み、位置を先頭にセット します。 読み込める形式はT88およびCMTです。 (拡張子省略時はT88) ・<< テープを巻き戻し、データブロックの先頭に合わせます。 ・>> テープを早送りし、データブロックの先頭に合わせます。 ○「セーブイメージ」グループ ・保存 セーブされたテープデータをテープイメージファイルに書 き出します。 書き出せる形式はT88およびCMTです。 (拡張子省略時はT88) ・消去 セーブされたテープデータを消去します。 ◎起動オプション/環境設定ファイル X88000起動時に、オプションを指定することができます。 X88000 [opt [opt ...]] また、「※コマンドライン限定」の記述がないものは、環境設定フ ァイルにも登録可能です。 (環境設定ファイル読み込み後、コマンドラインオプションを解釈 するため、同一オプションはコマンドラインが優先されます) 環境設定ファイルは「X88000.ini」の名前で実行ファイルと同一の ディレクトリに置かれます。 各オプションは先頭のハイフン('-')を取り除いたキー名で、環境 設定ファイルの[option]セクションに記述します。 例: X88000 -basic:v1s ↓ [option] basic=v1s また、コマンドラインから非保存指定(-saveenv:off)がない限り、 メニューで設定を変更すると各オプション内容が環境設定ファイル に反映されます。 # 下記のように記述すると、Ver.1, 1, 5以前と同等の動作になりま # す。 # X88000 -default -saveenv:off ... <ファイル名> ※コマンドライン限定 起動するD88/T88/CMTファイルを指定します。 (スペースが入るパス名の場合はダブルクォートで囲むこと) D88は複数指定可能ですが、/T88/CMTは最後に指定した一つだけが 有効です。 -default ※コマンドライン限定 全オプションをデフォルトに戻します。 -saveenv: ※コマンドライン限定 メニューから設定したとき、環境設定を保存するか指定します。 on : 設定を保存する(デフォルト) off : 設定を保存しない -readonly: ※コマンドライン限定 このオプションの後ろで指定されるD88ファイルの属性を指定しま す。 (リードオンリー指定されたディスクは、書き込み内容がファイ ルに反映されません) on : リードオンリーON off : リードオンリーOFF(デフォルト) -drive1:<数字> ※コマンドライン限定 ドライブ1にセットするディスクの番号を指定します。 (ディスクファイル指定の前/後は問わず) 0 : ディスクをセットしない。 それ以外 : ディスクの通し番号を指定。 (「ディスクイメージ」ダイアログの並びと同じ) -drive2:<数字> ※コマンドライン限定 ドライブ2にセットするディスクの番号を指定します。 (-drive1を参照) -drive3:<数字> ※コマンドライン限定 ドライブ3にセットするディスクの番号を指定します。 (-drive1を参照) -drive4:<数字> ※コマンドライン限定 ドライブ4にセットするディスクの番号を指定します。 (-drive1を参照) -basic: ベーシックモードを指定します。 n : N-BASICモード v1s : N88-BASIC V1Sモード v1h : N88-BASIC V1Hモード v2 : N88-BASIC V2モード(デフォルト) n80v1 : N80-BASIC V2モード n80v2 : N80-BASIC V2モード -clock:<4|8> 動作クロックを指定します。 4 : 4MHzモード(デフォルト) 8 : 8MHzモード -uilang: ユーザインターフェースに使用する言語を選びます。 auto : ロケールから自動判別(デフォルト) ja : 日本語 en : 英語 -boost: ブーストモードを指定します。 on : ブーストON off : ブーストOFF(デフォルト) -boostlim: ブーストモードリミッタを指定します。 v-max : 最大速度で動作(デフォルト) 数字 : リミット値をパーセントで指示(25%〜400%) -drives:<数字> ディスクドライブの数を指定します。 1〜4 : ドライブ数を指定(デフォルト:2) -crtvsync:<24|15> CRTの種類を指定します。 24 : 垂直周期24KHz/640x400のCRT(デフォルト) 15 : 垂直周期15KHz/640x200のCRT -waitemu: 実機相当のウェイトエミュレーションを行うか指定します。 on : ウェイトエミュレーションする off : ウェイトエミュレーションしない(デフォルト) -oldcompat: 旧機種互換モードにするか指定します。 on : 旧機種互換モードにする off : 旧機種互換モードにしない(デフォルト) -pcg: PCG-8800を使用するか指定します。 on : PCG-8800を使用する off : PCG-8800を使用しない(デフォルト) -optfont: 海外版モードにするか指定します。 on : 海外版モードにする off : 海外版モードにしない(デフォルト) -framerate:<20|30|40|60> 画面の更新レートを指定します。 20,30,40,60 : 更新回数/秒(デフォルト:20) -interlace: インタレースモードを指定します。 on : インタレースON off : インタレースOFF(デフォルト) -directinput: (Windows) キー入力にDirectInputを使用するか指定します。 on : DirectInputを使用する(デフォルト) off : DirectInputを使用しない (Linux) キー入力にXQueryKeymapを使用するか指定します。 on : XQueryKeymapを使用する(デフォルト) off : XQueryKeymapを使用しない -imedisable: (Windows) IMEオン/オフ切り替えを禁止するか指定します。 on : IMEを禁止する off : IMEを許可する(デフォルト) (Linux) インプットメソッドオン/オフ切り替えを禁止するか指定します。 on : インプットメソッドを禁止する off : インプットメソッドを許可する(デフォルト) -directsound: (Windows) BEEP/疑似サウンド再生にDirectSoundを使用するか指定します。 on : DirectSoundを使用する(デフォルト) off : DirectSoundを使用しない -dsoundfreq:<11025|22050|44100|48000> (Windows) DirectSoundの動作周波数を指定します。 11025,22050,44100,48000 : Hz(デフォルト:44100) -dsoundbit:<8|16> (Windows) DirectSoundの動作ビット数を指定します。 8,16 : ビット数(デフォルト:8) -dsoundch:<1|2> (Windows) DirectSoundの動作チャンネル数を指定します。 1,2 : チャンネル数(デフォルト:1) -beepvolume:<数字> (Windows) BEEP/疑似サウンドの音量を指定します。 0〜100 : 音量(100で最大、デフォルト:50) -beepmute: (Windows) BEEP/疑似サウンドのミュート状態を指定します。 on : ミュートする off : ミュートしない(デフォルト) -pcgvolume:<数字> (Windows) PCGサウンドの音量を指定します。 0〜100 : 音量(100で最大、デフォルト:50) -pcgmute: (Windows) PCGサウンドのミュート状態を指定します。 on : ミュートする off : ミュートしない(デフォルト) -parallel: パラレルポートにデバイスを接続します。 null : デバイスを外す(デフォルト) pr201 : PC-PR201を接続する ◎エミュレーション詳細 ・X88000のコアであるZ80エミュレータは、Manukeが調査できた範囲 の未定義命令をすべて実装しています。 ただし、C++で記述されているため今一速度は遅いです(;_;)。 (やっぱアセンブラ使わんとあかんのかなあ…) ・X88000は速度同期のため、CPUを2ミリ秒分いっぺんに実行し、そ の後ウェイトをかけています。 このため、実行処理にややムラが出ることがあるかもしれません。 ・カレンダクロックは起動時/リセット時にX88000の実行環境のも のに合わせられますが、メニューやダイアログ表示中は停止しま す。 また、ブースト時にはカレンダのカウンタも加速します。 このため、実行環境の時刻とずれてしまう可能性があります。 ・カレンダクロック同様、VSyncやタイマ割り込みもブースト中は同 率で加速されます。 ・画面の更新は標準20fpsです。(環境設定で指定可能) (VRAM等が更新されていない場合は書き直ししません) ・起動時/リセット時にフロッピーディスクドライブにディスクイ メージがセットされていないとき、X88000はROM BASICモードで起 動します。 ・X88000はメインCPUを10命令分実行した後、周辺装置との同期を取 ります。 ソフトによっては、これが原因で誤動作する可能性もあります。 ・サブCPUは、ポート0FEHを256回参照する間、メイン側からアクセ スのない場合には、高速化のためアクセスが発生するまでスリー プモードに入ります。 ・テープデータの読み書きで、データ前後のマーク/スペースはリ アルタイムで処理されます。 (読み込み時は最大2秒までで打ち切り) しかし、データ本体の読み書きは即座に処理されるため、実機と 動作が異なる可能性があります。 (ロード時に演奏したりするばやいなど) ・N88-BASICモードでのテープイメージファイルの読み込み速度アッ プのため、一部ROMルーチンを高速エミュレートしています。 (N88-BASIC ROM : 7F87H - カセット1文字入力) 実用上問題ないはずですが、4クロックでルーチンが終了してしま うため、実機とタイミングが異なる可能性があります。 ・N88との互換のため、I/Oポート0にデータを出力するとテープイメ ージからマシン語を高速ロードします。 (PCG-8800が有効になっている場合は、この機能は使えません) I/Oポート0は実機では出力に結び付けられていないためデータ出 力は行われないはずですが、アプリケーションによってはトラブ ルが生じる可能性もあります。 ・BEEP/PC-8801mkII疑似サウンドは、DirectSoundによって再生さ れます。 このため、DirectSoundをハードウェアでサポートしていないサウ ンドカードをお使いの場合、音階の再現度が悪くなります。 ・X88000は、256KBの拡張RAMを装備した状態になっています。 (128KBのRAMカードx2枚) カード0 : 拡張RAM(PC-8801-02N相当) カード1 : ビデオアートボード(PC-8801-17) ・ビデオアートボード画面は65536色を使用するため、画面モードが 256色モードでは画面を奇麗に表示することはできません。 ハイカラー以上の画面モードでご利用ください。 (フルスクリーンは、256色モードで動作しています) ・現バージョンでは、Linux版は以下の機能が実装されていません。 ・フルスクリーンモード ・ウィンドウサイズ変更 ・BEEP再生 ・ウェイトエミュレーションモードでは、以下のようなウェイトを 実行します。 ・低速モードでのM1サイクルウェイト ・低速テキストVRAMのDMA転送 ・低速グラフィックVRAMバンク時のCPU停止 ・高速テキストVRAMのM1サイクルウェイト ・8MHz動作時のメモリアクセスウェイト ・FDDサブシステム(2D)のM1サイクルウェイト このうち、「低速グラフィックVRAMバンク時のCPU停止」は統計的 データに頼らざるを得なかったため(^^;)、若干実機との速度が異 なる可能性もあります。 ・旧機種互換モードでは、N88-BASIC V1/N-BASIC/N80-BASIC V1モー ドにおいて、新機種で追加されたI/Oポートを一部塞ぎます。 このため、新機種で動作しないソフトが比較的動作しやすくなり ます。 ただし、新機種対応ソフトでありながら上記BASICモードを使用す るソフトが逆に動作しなくなりますのでご注意ください。 ・HAL研究所のPCG-8800は、一部実機と異なる実装が行われています。 リセット時、X88000はハイコードにバンク0のPCG-RAMを表示する ように設定されます。PCG-8100相当のソフトを実行する場合に、 "OUT 3,8"を事前に行う必要性をなくすためです。 これに伴い、PCG-RAMの内容はリセット直後、キャラクタ80H-FFH の内容があらかじめコピーされた状態になります。 また、PCG-8800では省略されてしまったキャラクタコピー機能が、 X88000ではPCG-8100の仕様のまま実装されています。 上記仕様はPCG-8100対応ソフトとの互換性を高めるためのもので すが、実機と異なる仕様のため問題が生ずるかもしれません。 ・海外版用のテキストフォントファイルOPTFONT.ROMは、8x8ドット のテキスト表示用フォント256文字分を格納した2048バイトのファ イルです。 フォントデータは全文字分埋められている必要はなく、変更のあ る文字のみでもOKです。(1文字の全ビットが0の場合、国内版フ ォントの内容が使いまわされます) ◎PC-PR201エミュレーション詳細 手元にあったPC-PR201Gマニュアルを元に、PC-PR201系のコマンドは ほぼ全て実装してあります。 (縁取り/影付き文字等のWindows上で実装の難しいものは一部省き ました) なお、PC-PR201Gはモノクロプリンタなのでカラーはサポートしてま せん。<言い訳(笑) また、プロポーショナルフォントの横幅に関してはかなりいい加減 になってます(^^;) # 実機がない状態で作り込んだので動作が完全かどうかは保証でき # ませんです(^^;)。 # (特にエラーコマンドの処理方法など) 印刷イメージは、文字は表示デバイスの解像度で、イメージデータ はPC-PR201の解像度である160DPIで出力されます。 このため、印刷結果は実機とは多少異なる場合があります。 選択できる用紙は以下のものです。 ・15インチ連続紙 ・10インチ連続紙 ・A4(縦置き/横置き) ・A5(縦置き/横置き) ・B4(縦置き/横置き) ・B5(縦置き/横置き) ・はがき(縦置き/横置き) 15/10インチ連続紙はトラクタフィーダ、他はカットシートフィー ダ扱い(左寄せ/中央寄せ選択可)になります。 ※X88000は直接このプリンタ出力結果をWindows/Linux上のプリンタ にて印刷する手段を持っていません。 実際に紙に印刷したい場合には以下の手順が必要です。 (Windows) 「コピー」で印刷結果をクリップボードへコピーし、コンテ ナ系アプリケーション等へ貼り付けて印刷。 (Linux) 「書き出し」で印刷結果をPDF形式で書き出し、他のアプリケ ーションで印刷。 (PDF作成にCairoを使用していますが、現時点ではCairoが縦 書き文字に対応していないため、印刷文字の一部で回転・移 動を使い擬似的に縦書き表記を実現しています) ◎課題 ・高速化。 ・FM音源のサポート。 ・FDCのエミュレーション強化。 ・カレンダ/VSync/タイマの外部同期モード。 ◎更新履歴 2015-08-10 : Ver. 1.5.0 ・Z80の16ビットADC/SBC実行後、P/Vフラグがおかしかったのを修正。  (apaslothyさんご提供) ・CRTCの設定反映方法を修正。  (apaslothyさんご提供) ・N80 BASICの4TH-ROMを追加、バンク切り替え動作を修正。  (apaslothyさんご提供) ・Vista以降のWindowsで、フルスクリーン時にAltキーのゴミが画面  に残ってしまう不具合を修正。 2008-10-09 : Ver. 1.4.0 ・apaslothyさんが提供してくださった、HAL研PCG-8800機能及び海 外版モードを追加。 ・インターフェースに英語モードを追加。 ・FDCのWRITE IDコマンド(FDフォーマット)をサポート。 ・WindowsXP/Vistaを正式にサポート。 ・Windows95が非対応に。 (コンパイラをWin95非対応のVC2005に変更したため。必要な場合 はソースからコンパイルしてください) ・Linux版のツールキットGTK+を2.8以降に変更。 ・Linux版PC-PR201エミュレーションのPostScript書き出しをPDF書 き出しに変更。 (Cairoを使用するため、GhostScriptは不要になりました) ・実行時のCPU負荷を軽減。 ・バージョン表記方法を変更(^^;) 2002-06-15 : Ver. 1, 3, 3 ・CMTファイル読み込み時の問題点を修正。 連続したマシン語ファイルが読めない不具合対応。 末尾にゴミデータ(00H)が入ったときの対応。 データファイルを厳密にチェックするよう修正。 ・g++コンパイル時にメモリ使用量が少なくなるよう、Z80エミュレ ータ部分を若干書き直し。 (動作には全く影響はありません) ・g++/PowerPCコンパイル時に、"-fsigned-char"オプションが不要 になるようZ80エミュレータを修正。 2001-10-09 : Ver. 1, 3, 2 ・ウェイトエミュレーションモード装備。 V1-Sモード等の速度が実機に近づきました。 ・旧機種互換モード追加。 ・Linux版にてPR-201エミュレーションを実装。 (PostScript使用。動作にはGhostScriptが必要です) ・8MHz動作時、FDDサブシステムCPUも8MHzで動作していた不具合を 修正。(常に4MHz) 2001-08-25 : Ver. 1, 3, 1 ・ジョイスティックの状態不正による不具合を修正。 (ボタンが押されっぱなしになってました(^^;)) 2001-07-07 : Ver. 1, 3, 0 ・Linuxプラットフォーム対応。(一部制限あり) ・areareaさんが提供してくださった、PC-8001mkII/SRエミュレーシ ョン部分を組み込み〜♪ ・ビデオアートボードエミュレーション装備。 320x200x65536色画面が表示可能です。 (え、いらない?(^^;)) ・OPNAタイマ割り込みの動作不具合を修正。 ・ディスクが挿入されていないドライブへ書き込みしたとき、異常 終了する不具合を修正。 ・RAM書き出し機能の追加。 2000-12-24 : Ver. 1, 2, 0 ・プリンタPC-PR201エミュレーション装備〜♪ 力作っす。(苦労しました…(;_;)) ・BEEP音、およびPC-8801mkII疑似サウンド機能をDirectSoundで再 現。 ・後期型キーボード対応。 ・CMT形式テープイメージで、ファイル名つきマシン語プログラムが うまく読めなかったのを修正。(T88形式は問題なし) ・88マシン語モニタが書き出したテープデータを読み残すため(涙)、 マシン語プログラムが2つ連続したテープイメージを正常に読めな かった不具合を修正。(モータOFF時に1文字読み飛ばし〜) ・IME入力/クリップボード貼り付けをESCキーで中断可能に。 ・ウィンドウサイズ変更をサポート。 ・リセット時に時刻合わせを行うよう変更。 ・フルスクリーン動作時、マウスカーソル移動でメニューバーを表 示するよう変更。 1999-01-24 : Ver. 1, 1, 5 ・フルスクリーンモードの追加。 ・インタレース表示を追加。 ・ディスクドライブ数変更を追加(笑)。 ・キー入力をDirectInputに変更。 ・結合T88ファイルの読み込みをサポート。 1998-12-13 : Ver. 1, 1, 4 ・メニュー構造の整理。 ・クリップボード操作を追加。 ・4MHz/8MHz切り替えを追加。 ・DAA命令が不完全だったのを修正。 ・背景パレットの不具合を修正。 ・割り込みコントローラの動作を変更。 ・VSYNCタイミングのバランスを調整。 ・FDC動作を修正。 MultiTrack時EOT動作修正(まだおかしかった(^^;))。 1998-11-08 : Ver. 1, 1, 3 ・ディスクイメージへの保存機能を追加。 ・偽READ DIAGNOSTICをサポート。 ・FDCアクセス時にディレイを入れるよう修正。 ・IME経由のカナ入力をサポート。 ・デバッグトレース機能の追加。 ・テキストアトリビュートのN-BASIC/N88-BASIC判別方法が誤ってい たのを修正。 ・コンパイラをVisualC++6.0へ変更。 1998-10-09 : Ver. 1, 1, 2 ・Manuke誕生日スペシャルバージョン(嘘)。 ・FDC動作を修正。 MultiTrack時EOT動作修正。 TC入力時のエラーリストア不具合訂正。 ST3のReadyフラグが立っていなかったのを修正。 ・BIT 7, r実行時、サインフラグへ結果を反映するよう変更。 ・デバッグ表示時のP/Vフラグの表示が間違っていたのを修正。 ・デバッグモードを若干機能アップ。 1998-09-25 : Ver. 1, 1, 1 ・メイン/サブCPUの同期方法を変更。 ・N80メモリイメージが読めなくなっていたバグを修正。 (テキスト表示がOFFになってた(^^;)) 1998-09-23 : Ver. 1, 1, 0 ・V2モード/ディスクイメージのサポート(^^)。 (ただしディスクはまだ暫定です。保存などができません) ・デバッグ機能の追加。 ・テキストVRAM周りのバグ修正。 ・INC IXL/INC IYLが誤動作していたのを修正。 ・また少しだけ高速化(したはず)。 1998-08-21 : Ver. 1, 0, 2 ・テープがうまく巻き戻せないバグを修正。 ・N-BASICモードでテキストウィンドウが有効になっていたのを修正。 ・N-BASIC起動の手法を変更。 (ROMまかせから自前セットアップに) ・OUT 0でテープイメージのマシン語高速読み込み機能を追加。 ・メモリイメージ(N80)読み込み機能を追加。 ・メニューアクセラレータを付加。 1998-08-16 : Ver. 1, 0, 1 ・グラフィックカラーモード/400ラインモードの優先順位を訂正。 ・N88-BASICモードでテープイメージが正常に読めなかったのを修正。 (Delayが不足してました(;_;)) ・ROMルーチンを一部高速エミュレートするよう変更。 ・CMTファイルを読み書き可能に。 ・ちびっと高速化(したのか?)。 1998-08-10 : Ver. 1, 0, 0 ・いっちゃん最初のバージョン。 ◎著作権等 ROMファイルやディスク/テープ/メモリイメージファイルは著作物 のため、個人利用以外の運用は著作権法に反するおそれがあります。 ご注意ください。 P88SRはぶるー氏の、M88はcisc氏の、N88およびN80はH.Kanemoto氏 の著作物です。 ◎お・や・く・そ・く このプログラムはフリーウェアです。著作権はManukeが有するもの とします。 ただし、このプログラムを用いたことによるいかなる損害もManuke は補償しません。悪しからずご了承くださいませm(_ _)m。 配布は自由ですが、Manukeが提供した形態を変更しないでください。 (ファイル追加したり、一部だけ配布しないよーに) また、バージョン統一管理のため転載はなるべく控えてください。 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 へ へ Manuke の の E-Mail : manuke.skylark@gmail.com 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜