// ---- info
TRACE版(i286_step())で シングルステップ割り込みが割り込み続けるとか
mov SS直後に割り込みが発生するとか不都合があります。
これについては、直す気力があれば(286コードを追っかける時だけだし…)
// ---- IA-32 info
・CPU panic や警告表示時に msgbox() という API を使用します。
compiler.h あたりで適当に定義してください。
・sigsetjmp(3), siglongjmp(3) が無いアーキテクチャは以下の define を
compiler.h あたりに追加してください。
-------------------------------------------------------------------------------
#define sigjmp_buf jmp_buf
#define sigsetjmp(env, mask) setjmp(env)
#define siglongjmp(env, val) longjmp(env, val)
-------------------------------------------------------------------------------
// ----
ver0.74 → ver0.75
・GDC - ベクタの初期化し忘れを修正
・EGCの高速化
・リズムの修正(PCM 44khz 16bit monoralの制限を外した)
(Windows)
・(I286X) EGCバイトアクセス修正
・(I286X) ストリング命令修正
(WinCE)
・GDC - GDCクロック 1.79MHzのサポート
・内部変更
win9x/unasmをgenericへ移動(+P6,FPU命令をサポート)
np2infoをgenericへ移動
エスケープ文字を !KEY から %KEY%へ変更
ex == NULLで OS指定の改行コードになる筈
(MacOSXは np2info.cppがそのまんま移動になるかと思われ
io/serial.*に存在した keystat系を /keystat.* へ移動
keystat.cをリンク、 keystat.hをインクルード
SUPPORT_WAVEMIX廃止
→ SUPPORT_SWSEEKSNDに変更
ハードウェアで対応してる場合には 一応 SUPPORT_HWSEEKSNDと定義して
くれると嬉すぃ
// ----
ver0.73 → ver0.74
・I/OレベルでのSASIに対応(INT3/DMA#0/BIOS:d0000-d0fff)
・SCSI HDDに対応
・np2qn形式 HOSTDRVに対応
・拡張メモリの修正 (80286)
・VRAM - 通常ディスプレイ時にメモリを破壊するバグを修正
・GDC - GDCクロック 1.79MHzのサポート
・GDC - 走査周波数を可変にした
・GDC - マスクが左右反転していたのを修正
・GDC - テキスト処理を修正(uPD7220A? cmd:05)
・GDC - VECTEコマンド(R)を修正 (undocumented Tを追加)
・GDC - TEXTEコマンド(SL/T)を修正 (undocumented L/C/Rを追加)
・GDC - GRCG/EGC動作中の挙動を修正
・EGC - マスクフラグを修正
・FDC - DMAとステータスを修正
・SERIAL - キーボードステータスの修正
・uPD4990 - ホールド時の出力が不定になっていたのを修正
・RHYTHM - レジュームが反映されなかった不都合を修正
・ADPCM - サンプルリードがMSB/LSB逆転していたのを修正
・BIOS - ブート時にディップスイッチで指定した画面モードを反映
・BIOS - 1840h/1841h/1842h/1847hの結果をワークメモリへ反映するようにした
・BIOS - 1847h マスクを左右反転させていなかったのを修正
・BIOS - 1848h/1849h/184ahをサポート
・ITF - PC-9801VM/PC-286時に BEEPが初期化されない不都合を修正
・ITF - SSP終了時にハードウェアリセットをかけるように修正
・IDE - ディップスイッチ内容(SW2-6)を反映するように修正
(Windows)
・(I286X) sidt命令の修正
・(I286X) テキストRAMアクセスの修正
・(I286X) 割り込みの修正
・(I286X) EGCシフタを修正
・Aboutダイアログの修正
・ろみおとか…
(MacOS9)
・テンキーの [+] [/] の修正
・file_attr()で FILEATTR_READONLY を返すように…
(MacOSX)
・テンキーの [+] [/] の修正
・file_attr()で FILEATTR_READONLY を返すように…
・ツールウィンドウ修正
・FDIイメージ対応(仕事早いよー>ゆいさん)
・フルスクリーン修正(たぶん・・)
・マウスドラッグに対応(タコミス・汗)
・Userkeyについて
userkey1, userkey2は、cfgを書換えることによりキーを自由に変更することが
出来ます。
書式)
userkey1 = [key1] (key2) (key3)...
フルキー 0〜9 A〜Z - ^ \ @ [ ] ; : , . / _
STOP COPY ESC TAB BS RET SPC XFER NFER
INS DEL RLUP RLDN HMCL HELP
ファンク F1〜F10 VF1〜VF5
テンキー [0]〜[9] [-] [/] [*] [+] [=] [,] [.]
シフト SHIFT CAPS KANA GRPH CTRL
例:
userkey1 = CTRL XFER (CTRL+XFER FEP切り替え用)
userkey2 = D O A Z (D+O+A+Z 同時押し)
本機能は 簡易的な実装であり ver0.75で変更されます。
また、ver0.74ではシフト系は不整合が発生する可能性があります。
・内部変更
pccore.h の中で statsave.hをインクルード
→ #include "statsave.h" をトル
io/extmem を io/emsioに変更
(IA32は emsioは要らないが、NEC EMSバンク形式で必要になるかも)
np2cfg.hddfile[2] -> np2cfg.sasihdd[2]
void diskdrv_sethdd(REG8 drv, const char *fname);
drv = BIOSのデバイス番号
0x00〜0x01 SASI #0-1
0x20〜0x23 SCSI #0-3 (SUPPORT_SCSIを定義した時のみ)
bios/sxsibios.c はリンク必須
cbus/sasiio.c - SUPPORT_SCSIを定義した時にリンク
cbus/scsiio.c cbus/scsicmd.c - SUPPORT_SCSIを定義した時にリンク
IA32でハードウェアEMSを禁止しました。
→ #define CPU_SETEXTSIZE() init_mem() に変更 (済)
→ memory.cの EMM部分をトル (済)
→ cpumem extmem_size を CPU_EXTMEM, CPU_EXTMEMSIZEに変更(済)
→ protectmem_sizeをトル (済)
しかし emm386.exeが使えないから ハードウェアEMSを有効にした
ほーがいいかな? 辻褄は合いそうだし。
386以降に乗っかってる NEC EMSバンク方式だと あまりにアホだし。
dosio.hの FTYPEを common.hへ移動。
こそーり fdiを読めるよーにしてみたり。
フロッピードライブについて np2cfg.fddequipを見に行くようにしました
デフォルトで2基
np2cfg.fddequip = 0x03 (ドライブ1 = ビット0 〜 ドライブ4 = ビット3)
(実際に動作中の装備状態は fdc.equipで リセット時に更新されます)
必要によって main()で変える、cfgに書き出す等してください。
S98について SUPPORT_S98定義時のみリンクするようにしました。
(Win9x, MacOSX, x11(USE_GTK))
PC9861Kについて SUPPORT_PC9861K定義時のみリンクするようにしました。
(シリアル通信に対応していなければ無意味な機能です)
userkey
ini.cで profile_setkeys, profile_getkeysで np2cfg.userkeyを更新
キーボードのどこかにキーに キーコード 0x76,0x77を追加
メモ
実機で FDでVRAMクリアされるのは何故?
// ----
ver0.72 → ver0.73
・主にRISC向けの最適化、その2
・EPSON PCシリーズのアーキテクチャをサポート
・ARM版CPUコアのサポート
・CPU(I286C) … シングルステップ割り込みの修正
・CPU(I286C) … int3 / int imm8 / into クロック数を修正
・CPU(I286C) … shl r/m8,cl / shr r/m8,cl の修正
・CPU(I286C) … sar r/m (eVC3/eVC4コンパイラバグ回避)
・CPU(I286C/I286X/I286A) … グループ7とか…
・DMAC … インプットでアドレスとカウンタが逆なのを修正
・PIT … ビープカウンタを修正
・NP2SYSP … ポートを叩いた瞬間 フリーズするバグを修正
・CALENDAR … 時間をインクリメントしないバグの修正
・ITF … 拡張メモリ使用時にエミュレーション内部のメモリを破壊するのを修正
・CS4231 … 再生しなくなっていたのを修正
・CS4231 … DMA,IRQを変更出来るようにしました
・CS4231 … デフォルトのDMAチャネルを #1に変更
・MIDI … STATSAVEの修正
・SOUND … JAST SOUNDをサポート
・Vermouth … Roland GSコマンドの一部に対応
補足
ver0.73では EPSONモードの時 D000〜DFFFがRAM化されます。
・SOUND BIOSは D000,D400に配置しないで下さい、もしくはUMB等で破壊されないようにして下さい。
(X11)
・Qt 2.x の実験的なサポート
・SDL の実験的なサポート
・ビープ音量が設定ファイルに保存されないのを修正
ver0.73向け
・io/necio.c io/epsonio.c をリンクして下さい
・io/itf.cをリンクよりはずして下さい
・configのモデル選択 http://retropc.net/yui/cvs/config.gif
np2cfg.model に それぞれ "VM" "VX" "EPSON"の文字列を設定する。
(それぞれ common/strresにstr_VM, str_VX, str_EPSONが用意されています)
・JAST SOUNDの選択 http://retropc.net/yui/cvs/jastsnd.gif
パラレルなので 機種依存部の COMMNG.Cを修正して CMJASTCを呼ぶ
使用・未使用判定は OSごとに(np2oscfgで)設定すること
・wavemix sound/getsnd については ver0.73では不要ですが、
ver0.74あたりで使用する予定(Seeksnd?/OPNA/AMD-98の共用ルーチン化)
今までのseeksndインタフェイスはどうするかね…
更新履歴に書かなくていい変更点
・i286a/i286c/i286xに簡易プロテクトモードを追加(保護・タスクなし)
・DMACを再配置できるように修正
・CPU/EGCのストラクチャの調整
・BIOS … DISK BIOSをサポート(但し 通常のBIOSコールは DISK BIOSを使用せずに BIOSレベルでシミュレートしています)
・BIOS … SASI/SCSI BIOS ROMをサポート(BIOSアドレス d000:0000)
補足→ (ver0.74に回す)
SASI/SCSI BIOSは 殆どの場合にはブート時にしか使っていないので RAM内容を破壊しても HDDアクセスは正常に行なわれます。
※アプリケーションが SASI/SCSI BIOSを直視しない限りは大丈夫。
ver0.72までは SASI/SCSI BIOSがサポートされていない(=つまり使われていない) ver0.72までに動いていたソフトウェアはほぼ大丈夫と言えます。
・hostdrv...
// ----
ver0.71 → ver0.72
・主にRISC向けの最適化(CPU, BEEP counter, BIOS etc...)
・CPU … aaa命令の修正
・PIT … インターバルタイマの割り込みを修正、リカバリ修正
・VRAM … SLとLRの関係をミスってた。
・PC-9801-26K … ステータスを修正
・PSG … サウンド作成タイミングの修正(ヴォリューム変更時)
・マウス … 負方向の演算の不都合を修正
・一部の設定だけを変更しても cfgに保存されないのを修正
・vermouth … Win9x,MacOS,X11でバンク切替えを有効にした
(済: MacOSX→cmverを使って下さい)
(済: x11→midimod_loadprogram/rhythmの代わりに midimod_loadallを)
・ini/cfg … biospathの追加 (nullstringでdosioカレント)
(MacOSX)
・Open/Saveダイアログ修正
・ドラッグ&ドロップ修正
・vermouthをcmverを使うように変更
・XFERとNFERをそれぞれカナキーと英数キーに割り当てた。
・ウィンドウの位置をnp2.cfgに記録するようになった。
・これまでF12に割り当てていたキーをF11とF12で分担するように変更(要再設定)。
・割り当て可能なキーにNFERとXFER(とカナ)を追加。
・コマンド+クリックを右クリックに割り当てるように変更。
(Win9x)
・標準ディスプレイ→プラズマディスプレイ移行時にゴミがのこるのを修正
(WinCE)
・ソフトウェアキーボードのサポート
(X11)
・Qt の実験的なサポート
・MIT Shared-Memory Extention shared Pixmap サポート
・画面描画時の無駄を減らした
・Key Display のサポート
でぶねこ補足
・必須
compiler.h に 以下のうち必要な定義を入れること
OSLANG_SJIS, OSLANG_EUC
OSLINEBREAK_CR, OSLINEBREAK_LF, OSLINEBREAK_CRLF
SUPPORT_ANK, SUPPORT_SJIS, SUPPORT_EUC
・変更
(target)/keydisp -> (generic)/keydisp
(target)/cmmidi -> (target)/cmver (vermouthのみ使用の場合)
基本的には WinCE版とSDL版用のファイルで追加されたファイルで
リンクエラーが発生しない限りは必要はないと思われ。
// ----
ver0.70 → ver0.71
・CPU … enter命令(level>=2)の修正(C版のみ)
・メモリスイッチ … 初期値を修正(コプロセッサフラグ)
・FDC … Read IDの対応
・FDD … Write ID時にキャッシュがフラッシュされていなかったバグの修正
・np2sysp … ポート指定ミスを修正
・PSG … ステレオ出力の対応
・PC-9801-14 … DIPSWポートの修正、PITのクロックを変更
・AMD-98 … クロックを修正、レジュームの対応
(Win9x)
・keydisp PSG修正
・マウス修正
(MacOS9)
・マウス対応(Classicのみ)
・キーボード修正
バックグラウンド処理中にキー入力を抑制
Classic - 旧Classicルーチンを使用するようにした
Carbon - キーリピートに対応
・メニュー修正
・エミュレーションウィンドウを可変サイズに
(MacOSX)
・マウス修正
・New Disk修正
・ヘルプ対応
・IIx専用ロゴ追加
・書類アイコン追加/変更
・About表示変更
・AMD-98対応
・画面回転対応
・エミュレーションキー追加
・シークサウンドをリソースに追加(外部ファイルは不要です)
・その他にも細かな修正あり
RetroPC.NET-CVS <cvs@retropc.net>