P C 6 0 0 1 V -- Ver.1.24 -- === NEC PC-6000 Series Emulator === Copyright (C) Yumitaro 1999,2016 ______________________________________________________________________ *** WARNING *** BIOS ROM software of PC-6000 series are copyrighted by NEC and Microsoft. Other software for PC-6000 series are also copyrighted material. It is strictly forbidden to distribute these software without permission of copyright holders. Don't distribute PC6001V and illegal copies of software in same place, nor same media. Such piracy will obstruct development of PC6001V. *** 警告 *** PC-6000 シリーズの BIOS ROM のソフトは NEC と マイクロソフトの 著作物です。その他の PC-6001 シリーズ用のソフトも著作物です。 これらのソフトを著作権所有者の許可なく配布することは固く 禁じられています。PC6001V と ソフトの不正コピーを,同じ場所や 同じメディアで配布しないで下さい。 そのような海賊行為は PC6001V の開発を阻害することになります。 ______________________________________________________________________ 【PC6001Vとは?】---------------------------------------- PC6001Vは,NEC PC-6000シリーズ をエミュレートします。 サウンド,テープ,ジョイスティックなど標準機能は大体再現できてます。 Ver.1.06より,不完全ながら音声合成に対応しました。 Ver.1.21よりSRにも対応し,P6シリーズ全機種対応となりました。 開発および動作確認はWindows7(64bit)で行っています。 【注意!!】--------------------------------------------- ROMイメージ,及びTAPEイメージは各自の責任において作成して下さい。 所有権のない人(実機,オリジナルのソフトを持っていない人)には 決して譲渡しないでください。 【フォントについて】------------------------------------- Ver.1.06よりフォントファイルの形式がPNGになりました。 初回起動時に自動作成されますので特に準備は必要ありません。 ただし作成される半角フォントにはP6独自文字とひらがなが含まれません。 そこでP6のCGROMをベースに半角フォントを作成しました。 ただしこれをそのまま配布するのはマズイと思われますので,CGROM に対する 差分パッチとして配布します。 [パッチの使い方] 1) cgrom60.6* をfontフォルダにコピーする。(*は0,2,6) 2) cg2font6*.exe を実行する。 3) 出来上がった cgrom60.6* を fonth12.png にリネームする ちなみに自作フォントを使用することも可能です。 【固定語について】------------------------------------- 音声合成の固定語データは音声合成チップに内蔵されているため吸出せません。 そこで実機の出力音声をWAVEファイルに録音したものを使用します。 必要なファイルはPC6001VW(http://bernie.hp.infoseek.co.jp/)と同じですので 作成方法はそちらを参考にしてください。 ちなみに現段階では再現性が低く,正しく発声できません。 発声速度を変更するとピッチ(声の高さ)まで変わってしまいます。 【バージョンアップする場合の注意】----------------------- バージョンアップに伴いINIファイルの書式が変わることがあります。 前バージョンまでのINIファイルは一旦削除することをお勧めします。 【その他】----------------------------------------------- 詳しいことは下記Webページを参照してください。ってことで省略。 http://papicom.net/ (mail:yumitaro@papicom.net) 14/04/20 ゆみたろ 【履歴】------------------------------------------------- 16/02/07 Ver.1.24 戦士のカートリッジmkII対応。 これに伴いメモリ関係を大幅に変更。 フラッシュメモリの書込みは非対応。 mk2以降の内部/外部RAM同時書込みモードを実装。 FDDアクセス時ウェイトの無効化オプションを追加。 eighttailsさんの高速化パッチ取り込み(Thanks) 外付DISKに書き込めない不具合を修正。 mk2のCPUクロックを間違えていたのを修正。 どこでもSAVEのバグ修正。 ファイルのマウントに失敗していた。 mk2以降で戦士のカートリッジ使用時に外部RAMが保存できていなかった。 14/12/21 Ver.1.23 <<オホーツクに消ゆ 30周年>> SRモード時のVRAMアクセスの間違いを修正。 SRモードでOUT &H93,2しても画面が消えないのを修正。 FM音源の音量を微調整。(超適当) 14/09/13 Ver.1.22 FM音源(OPN)を実装。fmgenを使わせて頂きました。 P6VXで実装済みの「リプレイの途中保存,再開」を取り込み。(eighttailsさん Thanks) VRTC割込のタイミングを修正(VSYNC立上エッジで発生)。P-TYPEが動くようになった。 サウンドのノイズを低減。 相対パス化ルーチンのバグ修正。 ジョイスティックを認識しなくなっていたのを修正。 14/04/20 Ver.1.21 ついにSRに対応。ただしFM音源はまだ鳴らない。 スナップショットの色がおかしかったのを修正。 リセット時にフリーズすることがあるのを改善。 NOMONITOR(モニタモードなし)でビルドした時の不具合を修正。 内部のカラーモードを8bitに戻した。(最終出力は32bit) OSDパス名処理関係を見直し。Delimiter(),UnDelimiter()廃止。 iniファイル,どこでもSAVEファイルのパス表記を相対パスに変更。(実行ファイル以下のサブディレクトリのみ) スレッドクラスのバグ修正。(cThread::IsCancel() の初期戻り値間違い) DISKルーチンを修正。エラー処理を追加。(秋川さん Thanks) どこでもSAVEのバグ修正。(eighttailsさん Thanks) 13/09/29 Ver.1.20 各種ファイルのDrag & Dropに対応。(複数ファイルは未対応) p6t,p6,cas : TAPEイメージ(LOAD用のみ) d88 : DISKイメージ(ドライブ1のみ) rom,bin : 拡張ROMイメージ dds : どこでもSAVE ddr : リプレイデータ bas,txt : 打込み代行ファイル SDLを改造してDrag & Dropを実装しているため,必ず同梱のSDL.dllに差換えてください。 標準のウィンドウサイズをx2に変更。(スキャンライン有無にかかわらず一定サイズ) 初代機のVDG内蔵フォントをmc6847.cppに埋込み。cgrom60s.60が必要なくなった。 PC-6001Aに対応。(実機を所有していないので未検証) カラーモードを32bitに統一。ビデオキャプチャは16,24,32bit出力を選択可能。 MENUキーにポップアップメニューを割当て。 ポーズ機能追加。F9キーに割当て。 スピードコントロール機能追加。マウスホイールでぐりぐりと。 TAPEのオートスタートを見直し。モニタから起動するソフトのリードエラーが減ったかも。 4:3表示を改善。綺麗になった? ジョイスティックを繋いだ状態で「なし」が選べなかったのを修正。 どこでもLOAD改良。  現在の機種やFDDの設定がどこでもSAVE時と異なっていても読込めるようにした。  戦士のカートリッジにも対応した。(対応できていなかったことに今更気付いた) リプレイ再生が1フレーム遅れていたのを修正。 どこでもLOAD,リプレイ再生時,ステータスバーにTAPE,DISK情報が表示されなかったのを修正。 内部処理を大幅に見直し。何をどうしたかはもはやわからない。 不要になったOSD関数を整理。 13/06/23 Ver.1.19 バージョン違いのROMに対応。(MORIYAさん Thanks) 今のところバージョン違いが確認されているのはmk2のみ。他機種の情報求む。 タイマ割込み修正。(えすびさん Thanks) 初代機の場合,割込み有効後の最初の周期が半分(1ms)になるらしい。 mk2,66もちょっと短いようだ。 8bitカラー時 パレットの設定に失敗していたのを修正。 13/06/01 Ver.1.18 モニタモードにloadmem,savememを実装。 モニタモードでBUSREQが発生しないように修正。 外付DISKのエラー処理修正とI/OポートD3H(IN)の処理を追加。(D2Hのイメージ) これによりmk2用ロードランナーが動くようになったかも。 12/12/30 Ver.1.17 J方式にじみカラーに対応。可読性がぐっと向上。(JOTさん,eighttailsさん Thanks) イベント関連関数 cSche::ScaleとcSche::Resetの実装ミスを修正。 サウンドに妙なノイズが乗るのはこれが原因でした。 PSG音量が反映されていなかったので修正。(以前に修正したはずだったのですが...) DISK関係を再度修正。DISKイメージのセクタステータスに応じた処理を追加。 Ditt!のバグ?仕様?への対応。今度こそロードランナーが動くはず。 ブレークポイントを設定しているとTAPEのオートスタートが効かないのを修正。 12/10/23 Ver.1.16 DISK関係を色々変更。 2ドライブ対応。 アクセスランプ,ウェイトを適当に実装。 66のDISKルーチンを修正。 IDだけでデータがないセクタのリザルトステータスをちゃんと返す。(秋川さん Thanks) Read Diagnosticを限定的に実装。決め打ちでgap3とsyncを返す。 ロードランナーとプラズマラインが起動するようになったはず。(これも秋川さん Thanks) Sense Interrupt Status の挙動を修正。ハドソンものが動くようになったはず。 えすびさんの解析結果を参考に幾つかのI/Oポートの挙動を修正。(えすびさん Thanks) OUTI/OUTD/OTIR/OTDRバグ修正(Bレジスタをデクリメントしてから出力)。 このバグにより66のDISKの書込みに失敗していました。DISKを壊しちゃった方,ゴメンナサイ。 OUT&H90,4/5(英数<->かな,かな<->カナ切換)実装。じゃんめろさん対応。 処理クロック数の計算を微調整。 SDL2への対応準備。(まだ対応してません) 12/03/18 Ver.1.15 メニューにサンプリングレートの変更を追加。 サウンドストリーム更新ルーチンを修正。 タイマ関連の関数をWin32からSDLに変更。ちょっと音が安定した? 12/03/11 Ver.1.14 <<東日本大震災から1年>> PortF8Hを実装。66付属のワープロが動くようになった。(MORIYAさん,Windyさん Thanks) プリンタ出力を実装。(すっかり忘れてた) 66のFDDバッファを見直し。FIFOと思っていたが違うらしい。 IN,OUTでA8-A15を出力するようにした。(FDDバッファ対応) どこでもLOAD,リプレイ再生実行時は必ず再起動するようにした。 フォントファイル名,パス名を固定化。 モニタモードのメモリブロック名が長すぎてはみ出してたのを修正。 クラス構造やらなにやらをあれこれ変更。 未初期化変数バグを修正。(eighttailsさん Thanks) SDLを1.2.15に変更。キー化けパッチを修正。 11/02/12 Ver.1.13 どこでもLOADの不具合を修正。 ROMに書込めてしまう不具合を修正。 ジョイスティック 2P側実装。 Z80未定義命令を追加。まだあるかも。 キーコードの補正を廃止。SDLのパッチで対応。 [ALT]+[F11]に再起動を割当て。 VDGのコードを整理。全てのモードで1ライン毎に描画するようにした。 (1ラインに異なるモードが混在した場合の処理は不完全) 色の設定をそれらしく適当に修正。正しい色は未だわからず... メモリの初期値を見直し。 フルスクリーン解像度を640x480に変更。開発用PCを更新したら320x200表示不可になったのでT-T あれこれソースの整理。(詳細失念) コンパイラをgcc 4.5.1にした。やたら遅くなった。T-T 08/08/24 Ver.1.12 「PC-6001,拡張RAMなし」が正しく起動しなくなっていたのを修正。 素早いキー入力時に誤認することがあったのを修正。 右クリックメニューの設定項目の一部が正しく反映されていなかったのを修正。 BoostUpデフォルトを「無効」に変更。 環境設定をちょっと変更。(サウンドバッファサイズの設定をスライドバーに) 08/06/13 Ver.1.11 スペースハリアーでノイズが入る不具合を修正。(ROMパッチ) PSG,TAPEモニタ音にローパスフィルタを適用。 パレットの管理方法をちょっと変更。 内部RAMと外部RAMの処理を分割。 「戦士のカートリッジ」対応。 INIファイル関係の内部処理をいろいろ変更。 INIファイルに以下の項目を追加 FullScreen フルスクリーンモード Yes:有効 No:無効 DispStatus ステータスバー Yes:表示 No:非表示 PsgLPF PSG LPFカットオフ周波数(0で無効) SaveQuit 終了時INIファイルを保存 Yes:する No:しない UseSoldier 戦士のカートリッジ Yes:有効 No:無効 GUIの並びを一部見直し。 ソースファイルの文字コードをEUCからShift-JISに変更。 SDL1.2.12でPS/2とUSBのキーの割当てが統一されてたので修正。 コンパイラをgcc 4.2.2に変更。 リソースコンパイラをwindresだけ使うようにした。 UPX圧縮をやめた。 07/11/11 Ver.1.10 どこでもSAVEで保存していないパラメータがあったので修正。 リプレイ機能実装。 SDL1.2.12で'\'キーの不具合が解消されたためBackSpaceキーの割り当てをDELに戻した。 07/06/29 Ver.1.09 mk2以降で PortF3H INT1,2処理が反映されていなかったので修正。 サブCPUの動作タイミングをあれこれ修正。 PS/2キーボードとUSBキーボードでキーの割当てが違っていたのを修正。 (SDLのバグ(?)に起因する不具合対応) キーマトリクスを実装。 BackSpaceキーを'\'に割り当て (日本語キーボードの'\'キーが無効の場合があるため) スナップショットのキーをPrintScreenからF12に変更 (PrintScreenキーが無効の場合があるため) キー割り当てを任意に設定可能にした。(暫定的にiniファイルでの対応) ウィンドウサイズ切替えのバグ修正。 NTSCのアスペクト比に合わせて表示する4:3表示モード追加。 ついでに16,24bitカラーモードを追加。(4:3表示が綺麗になる) 初代機のVDG内蔵フォント対応。(P6VWで作成される cgrom60s.60 を使用) mk2以降,N60モードのセミグラ描画をちゃんと実装。フォントのバグも再現。 TAPEのオートスタートをちょびっと高速化。 テキストファイルからの自動入力機能「打込み代行」追加。 WindyさんのMac用パッチをある程度取り込み。 05/09/25 Ver.1.08 <<愛・地球博 閉幕>> ビデオキャプチャ機能追加。 環境設定に項目追加。(24/8bit および Run-Length encoding) フレームレート,サンプリングレートはキャプチャ開始時の設定値をそのまま反映。 TAPE最速化機能「BoostUp」追加。 BASICのワークエリアFA19HをチェックしてCMT割込みの待ち時間を最短にする。 当然ROM内CMTルーチンを使用しているものに限る。独自LOADERはダメ。(DoorDoorとか) 倍率はN60とN60m/N66で異なる。N60:9倍 N60m/N66:5倍 (暫定) 環境設定に倍率設定項目追加。 たまにコケるので要注意。 CGROMバンク切り替え時のメモリマッピングを修正。 フレームレートの設定をフレームスキップに変更。基本は60fps。 メニューにフレームスキップの設定を追加。 スキャンライン表示をスナップショットに反映。 初代機のボーダーカラーを再現。スナップショットサイズも変更。 グラフックモード時のCRT KILLの処理を修正。 Port92Hへの出力が反映されていなかったので修正。(AX-6のデモがちゃんと喋るようになった) VDGの処理を初代機とmk2以降で分割。表示モードが混在する場合の処理を少し変更。 (ジャン狂で画面が崩れなくなった) スケジューラの無駄な処理を整理。 モニタモードにヒストリバッファ追加。 モニタモードの描画処理を変更。 05/03/15 Ver.1.07 <> 初代機,拡張RAMなしで画面が表示されない不具合を修正。 CSAVEでP6Tファイルが作成されない不具合を修正。 初期化に失敗する不具合を修正。 8255とサブCPUのやり取り,割込みの内部処理を見直し。一部のハドソン系が動くようになったかも。 モニタモードのステップ実行でスケジューラが動いていなかったのを修正。 16KB未満の拡張ROMイメージを読込めるようにした。 FDDアクセスウェイト再現準備。中途半端に実装。 フォント表示用に内部的に作成していたサーフェスを廃止。 メモリアクセスウェイトを割と真面目に実装。 WAITチェックを1命令毎から1画面描画毎に変更。ちょっと軽くなったはず。 タイマ割込み周波数を修正。(CPUクロックの13分周=487.5Hz かな?) 66のアイコンをアイボリホワイトに変更。 その他細々とした内部処理変更。 04/06/06 Ver.1.06 <<66の日>> ciscさんの音声合成エンジンを搭載。まだいろいろ不具合あり。 サウンドの内部処理を変更。 サウンドバッファ長の定義を変更。(INIファイルに変更あり) PSG音量が反映されていなかったので修正。 66,FDDあり,DISK未挿入時のTAPEのオートスタートに失敗していたのを修正。 フォントファイルをPNGに変更。 キー割り当てを一部変更。 スケジューラを大幅見直し。 デバイス間のやりとりを大幅見直し。 つまり全体的に大幅見直し。(でも地味) 04/04/11 Ver.1.05 TAPEをマウントせずにCLOADすると落ちるバグを修正。 環境設定にスキャンラインの輝度,マスター音量,色の変更等を追加。 音声合成のI/O処理をちょっと追加。(まだ喋りません) どこでもSAVEを追加。(検証不十分) FDCの挙動をちょっと修正。 タイトルバーにフレームレート表示を追加。 キー入力の一部が変だったので修正。 03/12/03 Ver.1.04 環境設定のファイル選択で落ちることがあるのを修正。 オーバークロック設定追加。 ブロック命令(LDIR等)実行中の割り込みを許可するように変更。 mk2以降でCRT KILLの処理を変更。(RGB出力相当<-ビデオ出力相当) か? タイトル表示が誤解を招くので修正。 拡張ROMのマッピングミスを修正。(mk2以降) 拡張ROMイメージ用のフォルダ追加。 ROMイメージのCRCチェックを追加。 メニューに拡張ROMの挿入,取出を追加。 またしても内部処理をいろいろ変更。 03/09/28 Ver.1.03 拡張ROMイメージが読めなかったのを修正。 モニタモードの未実装機能を一部追加。 キー入力処理を変更。(機種依存コードを極力使わないようにした) 割込み禁止時のキー入力処理を修正。 漢字表示対応。 環境設定のUIを少し整理。 INIファイルの書式を一部変更。(ファイル名をフルパスで指示) その他 内部処理をかなり変更。(詳細は忘れました) 03/06/14 Ver.1.02 ジョイスティック対応。 TAPEのベタイメージに対応。 03/05/14 Ver.1.01 DISKに書込むとDISKイメージを破壊するのを修正(66のみ)。 DISKイメージのファイル属性が読取り専用になっているとエラーになるのを修正。 (ライトプロテクト状態でマウントするようにした。) 62以降->60に機種変更,再起動時に色が反映されない不具合を修正。 再起動時,INIファイルの読込みに失敗することがあるのを修正。 TAPEのオートスタートに失敗することがあるのを修正。 DISKとTAPEのオートスタートがかち合ったときの挙動を変更。 TAPE+DISK(System) -> DISK TAPE+DISK(非System) -> TAPE 注意:PC-6001(拡張BASICなし)+TAPE+DISK(System)の場合,オートスタートは効きません。 指定機種のROMイメージがないときは他の機種を検索するようにした。 TAPE,DISKの属性を表示色で表現。 TAPEのオートスタート:黄色 SystemDISK :黄色 ライトプロテクト :背景茶色 TAPEの取りこぼしをある程度防止。 アイコンの色が一部抜けていたのを修正。 03/05/04 Ver.1.0 Windows版 初版リリース。 【TODO(予定と妄想)】------------------------------------------------- 8049コア実装 音声合成タイミング調整 固定語のピッチ改善 FDDウェイト GUIマルチプラットホーム対応(VX任せ?) マニュアル類の整備 周辺ツール類の整備