--- np2/update.txt 2003/11/24 20:44:14 1.17 +++ np2/update.txt 2004/06/19 17:54:19 1.114 @@ -1,12 +1,492 @@ +// ---- 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) +------------------------------------------------------------------------------- + + + CHARSET_OEMについて +  要は毎回Shift-JISに変換せずに OS依存の文字コードで処理しようとする… +  まだ機能しません。定義しないで下さい。 + + +  つか…X11版のDOSIO file_catname,file_cmpnameの入力が sjisになってる… +  (NP2はファイル名は OSLANGに従う…筈… + +  EUCの2バイトコード判定が (((c - 0xa1) & 0xff) < 0x5d)で +  半角カナ(0x8e)の判定で狂う +  (c & 0x80)のほうが良い? + + + +// ---- + + ver0.78 → ver0.79 + ・CGROM - JIS83罫線の不都合修正 + ・CGROM - 2バイト半角アクセス修正 + ・86PCM - バッファリングの不都合を修正 + ・BIOS - 2Dタイプのシリンダ倍移動を修正 + ・BIOS - FDD割り込みフラグを修正 + ・AMD98 - レジスタリードの追加 + ・VRAM - スキップライン描画の修正 + ・BMPSave - スキップライン有効時のセーブ不都合を修正 + + (Win9x) +  ・ソフトウェアキーボードを有効にした + + + +// ---- + + ver0.77 → ver0.78 + ・PIC - スレーヴのマスクの修正 + ・CGROM - JIS83罫線の不都合修正 + ・TEXTRAM - JIS83罫線の不都合修正 + ・86PCM - 割り込みステータスの修正 + ・BIOS - ブート時にメモリを完全に消去するようにした +      ※ RanceII対策、他のホットスタートで不都合が出るかも + ・BIOS - 直線描画のアルゴリズム修正 + ・BIOS - 円の半径が異常だった不都合の修正 + ・BIOS - JIS83罫線の不都合修正 + ・LIO - 内部塗り潰し指定付きBOX描画の対応 + ・LIO - 半角ひらがなの対応 + ・LIO - 円の仮サポート + + (X11) +  ・ソフトウェアキーボードサポート + + ・内部変更 + +   追加ファイル +    /lio/gcircle.c + + + +// ---- + + ver0.76 → ver0.77 + ・BIOS - FDC BIOSの修正 + ・FDD - ディスクシーク音再生中にリセットを行なうと 以降ディスクアクセスが行なえなくなる不都合を修正。 + + (X11) +  ・i386 アーキテクチャ以外でコンパイルできない不具合を修正 + + + +// ---- + + ver0.74 → ver0.76 (branch...) + ・DMA - バンク・アドレスマスクの修正 + ・PIC - スペシャルマスクモードの対応 + ・PIT - マルチプルラッチコマンドのサポート(uPD71054) + ・CGROM - 2バイト半角の処理を修正 + ・CGWINDOW - ワードアクセスの挙動修正 (MacOS9/MacOSX/x11/SDL) + ・MOUSE - uPD8255のコマンドレジスタの修正 + ・86PCM - 停止時にもかかわらずバッファを進めてしまう不都合を修正 + ・CS4231 - PIOサポート + ・BIOS - ベクタ08/1A/1Fの修正 + ・BIOS - リセット時の挙動の修正 + + (Windows9x) +  ・ATマシンの場合に PageUp/PageDownを反転 + + + ・内部変更 +   基本的にファイルが存在しなければプロジェクトから除外、 +   リンクエラーが出たらgrepしてファイル追加 + +    追加ファイル +     /bios/bios1f.c +     /bios/biosfd80.res +     /cbus/ideio.h +     /cbus/ideio.c (SUPPORT_IDEIO定義時) +     /cbus/atapicmd.h +     /cbus/atapicmd.c (SUPPORT_IDEIO定義時) +     /cbus/idebios.res +     /io/pcidev.h +     /io/pcidev.c (SUPPORT_PC9821定義時) + + +    削除ファイル +     /bios/bios02.c +     /bios/bios08.c +     /bios/biosboot.res +     /common/pf_key.tbl +     /sound/wavemix.h +     /sound/wavemix.c +     /sound/rhythmg.c +     /lio/gview.c +     /lio/gcolor1.c +     /lio/gcolor2.c +     /lio/gcls.c + + +   ROMIMAGEは MASMからNASMへ移行中でつ。 + +   SUPPORT_IDEIOは定義しないで下さい(まだマトモに動きません) + +   IA32でもハードウェアEMSを有効にしてみるテスト。 + + + +// ---- + + ver0.74 → ver0.75 + + ・GDC - ベクタの初期化し忘れを修正 + ・GDC - パターンの修正 + ・ITF/BIOS - リセット時の挙動の修正 + ・BIOS - 1842h モノクロフラグを修正 + ・EGCの高速化(?) + ・リズムの修正(PCM 44khz 16bit monoralの制限を外した) + ・LIOの修正 + + + (Windows) +  ・(I286X) EGCバイトアクセス修正 +  ・(I286X) ストリング命令修正 +  ・フロッピードライブ接続状態指定 + + (MacOS9) +  ・フロッピードライブ接続状態指定 +  ・MPU-PC98IIの設定ダイアログ + + (WinCE) +  ・(I286A) メモリの修正 +  ・GDC - GDCクロック 1.79MHzのサポート + + (X11) +  ・Configure Dialog にてアーキテクチャの指定を追加 + + (MacOSX) +  ・フロッピードライブ接続状態指定(FDD1、FDD2のみ) +  ・設定ダイアログのディップスイッチ画像表示 +  ・CoreMID経由のMIDI演奏に対応 +  ・MPU-PC98IIの設定ダイアログ拡充 +  ・Key Display対応(マウスクリックでFMとMIDIが切り替わります) + + + ・200ラインモードについて (正式サポート / #define SUPPORT_CRT15KHZ) +  PC-9801シリーズ(FELLOW、PC-9821、ハイレゾ機を除く)に搭載されている +  200ラインモードは設定ファイルのDIPswtchにて設定可能となります。 + +   400ラインモード +    DIPswtch=3e ?? ?? + +   200ラインモード +    DIPswtch=3f ?? ?? + +  本機能は DIPSW1-1に相当する機能であり、PC-9801VM以降のマシンで +  一般に言われている200ラインモードとは異なる機能です。 + +  ※PC-98シリーズの一般的な200ラインモードは、640x200を縦に2倍拡大し +   400ラインモードで動作しています。 + +  本機能は DIPSW1-1の切り替え機能を削除した FELLOW、PC-9821、ハイレゾ機の +  BIOS.ROMを使用時には正常に動作致しません。 +  これを理由に、本機能は NP2上で設定スイッチを設けません。 + +  また、レジューム動作時に DIPswtchの値を変更した場合、正常に +  スクリーンモードを変更できなくなります。 +  (PC-98動作中にディップスイッチを変更した時と同じ状態になります。) +  必ずリセットして下さい。 + + + + ・キー設定について +  bios.romとかと同じフォルダに key.txtというファイル名のテキストファイルを +  作成して、キー設定を記入して下さい。 + +  書式) +   [keyname] = [key1] (key2) (key3) +   [keyname] [TAB] [key1] (key2) (key3) +   userkey[1-2] = [key1] (key2) (key3) ... (key15) +    フルキー 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 + +   通常キーは3個、userkeyは15個の同時押し設定が可能です。 +   [=] キーは = で区切られてしまうので TABで区切るか [EQU]として下さい。 + +   例: +    W = UP (ダイアモンドキーをカーソルにしてみたり…) +    S = LEFT +    D = RIGHT +    X = DOWN +    [7] = [4] [8] (テンキー斜め同時押しにしてみたり…) +    [9] = [6] [8] +    [1] = [4] [2] +    [3] = [6] [2] +    userkey1 = CTRL XFER (CTRL+XFER FEP切り替え) +    userkey2 = D O A Z (D+O+A+Z 同時押し) + + + + ・内部変更 +   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と定義して +    くれると嬉すぃ + +  ・keystat_initialize(keystat_reset)をコールして初期化すること… + + +// ---- + + 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 - ・CPU … ARMに対しての最適化 - ・PIT … インターバルタイマの割り込みを修正, リカバリ修正 + ・主に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 のサポート  でぶねこ補足 @@ -23,13 +503,9 @@   基本的には WinCE版とSDL版用のファイルで追加されたファイルで   リンクエラーが発生しない限りは必要はないと思われ。 - (MacOSX) -  ・Open/Saveダイアログ修正 -  ・ドラッグ&ドロップ修正 // ---- -  ver0.70 → ver0.71  ・CPU … enter命令(level>=2)の修正(C版のみ)