Diff for /np2/update.txt between versions 1.38 and 1.129

version 1.38, 2004/01/05 09:31:24 version 1.129, 2004/08/16 15:46:06
Line 5 Line 5
  mov SS直後に割り込みが発生するとか不都合があります。   mov SS直後に割り込みが発生するとか不都合があります。
  これについては、直す気力があれば(286コードを追っかける時だけだし…)   これについては、直す気力があれば(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依存の文字コードで処理しようとする…
     まだ機能しません。定義しないで下さい。
   
     OEMCHAR (現状char固定、将来として UCS2でUINT16、UCS4でUINT32)
     OEMTEXTの追加
     コンパイルが通るかご確認下さい。
   
     ステップ.1 (WinCE,X11)
      OEMコードと SJIS(EMBED/hostdrv)の変換調整
      (FONTMNGは SJISのままで EMBEDで変換)
   
      つか…X11版のDOSIO file_catname,file_cmpnameの入力が sjisになってる…
      (NP2はファイル名は OSLANGに従う…筈…
      と思ったら hostdrvで SJISのまま食わせてる?(汗
   
      EUCの2バイトコード判定が (((c - 0xa1) & 0xff) < 0x5d)で
      半角カナ(0x8e)の判定で狂う
      (c & 0x80)のほうが良い?
   
      現状の…
   
      ・codecnv.hのインクルードは compiler.hに移動
   
      ・#if defined(OSLANG_EUC)
        codecnv_sjis2euc(tmp, NELEMENTS(tmp), src, (UINT)-1);
        file_catname(path, tmp, NELEMENTS(path));
       #elif defined(OSLANG_UTF8)
        oemtext_sjis2oem(tmp, NELEMENTS(tmp), src, (UINT)-1);
        file_catname(path, tmp, NELEMENTS(path));
       #else
        file_catname(path, src, NELEMENTS(path));
       #endif
   
       を
   
       #define oemtext_sjis2oem codecnv_sjis2euc
       #define oemtext_oemsjis2 codecnv_euc2sjis
   
       としておいて
   
       #if defined(OSLANG_ANK) || defined(OSLANG_SJIS)
        file_catname(path, src, NELEMENTS(path));
       #else
        oemtext_sjis2oem(tmp, NELEMENTS(tmp), src, (UINT)-1);
        file_catname(path, tmp, NELEMENTS(path));
       #endif
   
       とする?
   
      メモ: http://euc.jp/i18n/charcode.ja.html
   
     ステップ.2 (WinNT,MacOSX)
      OEMCHARのUCS2対応
   
     ステップ.3 (MacOSX)
      ANSI PageCodeと Macintosh PageCodeの調整
      メモ: http://homepage1.nifty.com/nomenclator/unicode/normalization.htm
   
     ステップ.4 (WinNT,WinCE,MacOSX,X11)
      フォント関数回りを SJISからOEMコードに移行
   
   
   
   // ----
   
    ver0.79 → ver0.80
    ・BIOS - スクロールコマンド修正
    ・BIOS - システムポートの修正(i286/V30ではほぼ無意味)
    ・GDC - ステップフラグの反映
    ・FDC - レディ信号を修正
    ・i286x - div命令 (i286モード側)
    ・i286c - div命令 (V30モード側)
   
   
    (X11)
     ・ジョイスティックサポート
      サウンドドライバに SDL を使用している時にのみ使用可
     ・screen depth == 24bpp の時にキーディスプレイ、ソフトウェアキーボードの
      描画がおかしい不具合を修正
     ・T98-Next(.NHD)形式、Anex(.HDI)形式ハードディスクイメージ作成サポート
   
   (MacOSX)
     ・日本語リソース追加
     ・ソフトウェアキーボードを有効にした
   
   
   // ----
   
    ver0.78 → ver0.79
    ・CGROM - JIS83罫線の不都合修正
    ・CGROM - 2バイト半角アクセス修正
    ・86PCM - バッファリングの不都合を修正
    ・BEEP - BEEP PCMの修正
    ・BIOS - 2Dタイプのシリンダ倍移動を修正
    ・BIOS - FDD割り込みフラグを修正
    ・AMD98 - レジスタリードの追加
    ・VRAM - スキップライン描画の修正
    ・BMPSave - スキップライン有効時のセーブ不都合を修正
   
    (Win9x)
     ・ソフトウェアキーボードを有効にした
   
    (MacOSX)
     ・カレンダーに対応
   
   
    ・内部変更
   
      char *file_getext(const char *path);
      char *file_getname(const char *path);
      (constが付きます)
   
      記念に gif保存に対応してみたり
       vram/scrnbmp.c の代わりに vram/scrnsave.c をリンクして
   
        SCRNSAVE ss = scrnsave_get();
        scrnsave_writegif(ss, "out.gif", SCRNSAVE_AUTO);
              scrnsave_trash(ss);
   
        bmpなら scrnsave_writebmp(ss, "out.bmp", SCRNSAVE_AUTO);
   
        np21のVGA時に 257色以上になるのに注意
        (ss->type == SCRNSAVE_24BITの時にgif保存出来ません)
   
   
   // ----
   
    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   ver0.72 → ver0.73
   
  ・主にRISC向けの最適化、その2   ・主にRISC向けの最適化、その2
  ・アーキテクチャの選択   ・EPSON PCシリーズのアーキテクチャをサポート
    ・ARM版CPUコアのサポート
  ・CPU(I286C) … シングルステップ割り込みの修正   ・CPU(I286C) … シングルステップ割り込みの修正
  ・CPU(I286C) … int3 / int imm8 / into クロック数を修正   ・CPU(I286C) … int3 / int imm8 / into クロック数を修正
  ・CPU(I286C) … shl r/m8,cl / shr r/m8,cl の修正   ・CPU(I286C) … shl r/m8,cl / shr r/m8,cl の修正
  ・CPU(I286C) … sar r/m (eVC3/eVC4コンパイラバグ回避)   ・CPU(I286C) … sar r/m (eVC3/eVC4コンパイラバグ回避)
  ・CPU(I286C) … グループ7とか…   ・CPU(I286C/I286X/I286A) … グループ7とか…
  ・DMAC … インプットでアドレスとカウンタが逆なのを修正   ・DMAC … インプットでアドレスとカウンタが逆なのを修正
  ・PIT … ビープカウンタを修正   ・PIT … ビープカウンタを修正
  ・NP2SYSP … ポートを叩いた瞬間 フリーズするバグを修正   ・NP2SYSP … ポートを叩いた瞬間 フリーズするバグを修正
    ・CALENDAR … 時間をインクリメントしないバグの修正
  ・ITF … 拡張メモリ使用時にエミュレーション内部のメモリを破壊するのを修正   ・ITF … 拡張メモリ使用時にエミュレーション内部のメモリを破壊するのを修正
    ・CS4231 … 再生しなくなっていたのを修正
    ・CS4231 … DMA,IRQを変更出来るようにしました
    ・CS4231 … デフォルトのDMAチャネルを #1に変更
  ・MIDI … STATSAVEの修正   ・MIDI … STATSAVEの修正
  ・SOUND … JAST SOUNDに仮対応   ・SOUND … JAST SOUNDをサポート
  ・Vermouth … Roland GSコマンドの一部に対応   ・Vermouth … Roland GSコマンドの一部に対応
   
    補足
     ver0.73では EPSONモードの時 D000〜DFFFがRAM化されます。
     ・SOUND BIOSは D000,D400に配置しないで下さい、もしくはUMB等で破壊されないようにして下さい。
   
   
  (X11)   (X11)
   ・Qt 2.x の実験的なサポート    ・Qt 2.x の実験的なサポート
   ・SDL の実験的なサポート    ・SDL の実験的なサポート
Line 36 Line 519
   ・io/itf.cをリンクよりはずして下さい    ・io/itf.cをリンクよりはずして下さい
   
   ・configのモデル選択 http://retropc.net/yui/cvs/config.gif    ・configのモデル選択 http://retropc.net/yui/cvs/config.gif
     np2cfg.model に それぞれ "VM" "VX" "EPSON"の文字列を設定する。     np2cfg.model に それぞれ "VM" "VX" "EPSON"の文字列を設定する。
      (それぞれ common/strresにstr_VM, str_VX, str_EPSONが用意されています)
   
   ・JAST SOUNDの選択 http://retropc.net/yui/cvs/jastsnd.gif    ・JAST SOUNDの選択 http://retropc.net/yui/cvs/jastsnd.gif
     パラレルなので 機種依存部の COMMNG.Cを修正して CMJASTCを呼ぶ     パラレルなので 機種依存部の COMMNG.Cを修正して CMJASTCを呼ぶ
     使用・未使用判定は OSごと(np2oscfg)で設定すること     使用・未使用判定は OSごとに(np2oscfgで)設定すること
   
     ・wavemix sound/getsnd については ver0.73では不要ですが、
      ver0.74あたりで使用する予定(Seeksnd?/OPNA/AMD-98の共用ルーチン化)
      今までのseeksndインタフェイスはどうするかね…
   
   
  更新履歴に書かなくていい変更点   更新履歴に書かなくていい変更点
   ・i286c/i286xに簡易プロテクトモードを追加(保護・タスクなし)    ・i286a/i286c/i286xに簡易プロテクトモードを追加(保護・タスクなし)
   ・DMACを再配置できるように修正    ・DMACを再配置できるように修正
   ・CPU/EGCのストラクチャの調整    ・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...
   
   
 // ----  // ----

Removed from v.1.38  
changed lines
  Added in v.1.129


RetroPC.NET-CVS <cvs@retropc.net>