File:  [RetroPC.NET] / np2 / update.txt
Revision 1.97: download - view: text, annotated - select for diffs
Wed Apr 21 02:27:18 2004 JST (21 years, 6 months ago) by yui
Branches: MAIN
CVS tags: VER_0_76, HEAD
fix Win9x configure (T.Yui)


// ---- 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.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

 ・主に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>