● SL9821 改訂履歴
○ 0.4.0.2 2021/1/24
  CPU
    ページングありのプロテクトモードにおけるiret処理にバグがあったため修正(バージョン0.4でのエンバグ)
    これによりVEM486が正常に動作しない問題が改善されます。

○ 0.4.0.1 2021/1/17
  UI
    設定で、「すべてのマウスイベントを通知」を選択中、スクリーンウインドウをドラッグするとウインドウが意図しない位置に移動する
    問題に対応、
    従来はカレントウインドウになった時点でマウスイベントをエミュレータで横取りしていましたが、この対応によりスクリーンウインドウの
    ウインドウ内部でクリックするまでマウス操作をエミュレータに譲渡しなくなります。
    macOS版でダークモードを使用しているときコンソールの上部の表示が正常ではないバグを修正
    macOS版でCD-ROMにドライブを選択したときの表示や操作に関するバグを修正
  CD-ROM
    macOS版でWindows3.1のメディアプレイヤーでCD-DAを再生したときに挙動がおかしい問題を修正
  その他
    ROMフォルダにBIOSを入れていない時にダイアログを表示しないバグを修正(バージョン0.4でのエンバグ)

○ 0.4.0.0 2020/12/27
  CPU
    基本的に0.3.3.1の刷新になります。基本的なロジックの流用はしているものの大分コードを書き換えたので、
    完成度は従来バージョンより下がっているものとお考えください
    設計段階からSIMDへの対応を考慮しているため、実装はSSE4.2までのおおよその追加分を実装し、UIでSSE2までに制限しています
    処理速度は非常に遅く、MP3エンコーダのlameの動作速度基準では、MMXはないより少しまし、SSE,SSE2はない方がよいということで
    課題が多いです(遅い理由は分かっていることがいくつかあるので追々修正していければと思っています)
  UI
    プロセッサタイプの設定方法を変更
    メモリの上限を511MBまでに変更
    なお、確認した限りではWindows3.1は255MBより大きい値を設定すると起動しません。
    Windows9x系は511MBより大きい値を設定すると起動しないため、UIの上限をここに設定しています。
    CD-ROMのベンダIDとプロダクトIDの入力欄の削除
    (xmlファイルの設定は生きていて、設定がある場合はその値、設定されていない場合はデフォルトとして実機で取得される値と
    同じ値を設定するように変更)
  NIC
    macOS版だけネットワーク機能に対応させてみました(安定性と速度はいまいちですが)
    同梱している外部実行ファイルを管理者権限に変更するなど、利用に際し面倒な手順がありますがOSの標準機能のみで実現できたので
    機能として追加しました。詳しくは実行ファイルに同梱のテキストファイルを参考にしてください。

○ 0.3.3.1 2020/12/27
  CPU
    ページングが有効のときのメモリライトアクセスでページングエラー例外が発生する条件とエラー要因が間違えているバグを修正
    FPUでNaNの判定方法を変更(Xcode(LVMM?)では、if(fv!=fv)ではfvがNaNのときに真にならないみたいなので)
  タイマ
    タイマモジュールでラッチ後のタイマ値の取得にバグがあるようなので修正
    (従来では正常に動作しないプログラムがあるため正しくないということは分かっているのですが、今回の修正で期待通りなのかは少し不明確です)
  その他
    アプリケーション終了時に保存する設定ファイルでmidiの設定が正しく保存されないケースがあるバグを修正
    HDとFD/CD-ROMのメディアを指定するパスに存在しないパスを指定したときにアプリケーションが不正終了するバグを修正
    macOSでキーコンフィグのリセット処理が正常でないバグを修正

○ 0.3.3.0 2020/09/05
  CPU
    算術演算時のフラグレジスタの更新処理を変更(本当は少し速くなることを期待したのですがあまり効果がなかったようです)
    FPU命令の実行条件のチェックをしていないバグを修正
    fsave,frstor命令でFPUレジスタ保存、回復させる数が間違えているバグを修正
    プロテクトモードで、アクセス可能なメモリの範囲の管理が適切でなかったので修正
  SOUND
    PCMのバッファに積んだ後のFIFOフル状態の解除条件を変更(特にバグというわけではなくなんとなく...)
  VIDEO
    初期化処理を微修正
    ※最新のmacOSでレンダリングにopenGLを使用すると結構な頻度で全角フォントが表示されない症状が現れます
      上記修正の一部はそのワークアラウンドになりますが、完全に解消されません。なおMetalでは起きない模様
  SCSI
    疑似BIOS使用時にフラグレジスタの変更不要なビットをクリアするバグを修正
    CD-ROMのread capacity,read TOCコマンドで返す総セクタ数が間違えているバグを修正

  その他
    ポート5ch、5ehのカウンタの更新処理にバグがあったので修正(なおラップアラウンド時に誤差があるのは仕様です。
    正確な値にしようとすると計算過程でオーバーフローが起きやすくなるのでオーバーフローが起きにくい簡易仕様にしています)
    IDEのポート043xh、タイマの3fdxhのポート一致チェックが間違えているバグの修正
    VS2019でリンクした実行ファイルだとエミュレータ画面に文字が表示されないためパワーオン時の処理の順番を修正

○ 0.3.2.1a 2019/10/13
  VIDEO
    macOSでOpenGLでレンダリング中スクリーンウインドウをリサイズしたときにゴミが表示されるバグを修正
  その他
    PowerOff状態でリセットを押したときの挙動がおかしいバグを修正

○ 0.3.2.1 2019/10/12
  メモリリークが起きるバグを修正
  VIDEO
    macOS 10.15でスクリーンウインドウを閉じたときにアプリケーションが不正終了する問題への対処
    ※NSWindowをcloseしたときにARCのリファレンスカウンタが不正になってしまうらしく、いろいろ小細工したもののうまくいかないため、
      アプリケーション終了時以外は不可視状態にするだけでウインドウのリソース自体は解放しないように修正
      (なお、アプリケーション終了時は当該問題は起きないため、正常に終了します)
    macOSでMetalでレンダリング中スクリーンウインドウをリサイズしたときに画面がぼやけて見える問題を修正
  SOUND
    サウンド割り込みが設定されても正常に割り込み制御が行われないバグを修正
    ビープ音の再現性が低いケースに対応
      サウンドの再生開始とバッファエンプティによる停止が頻繁に繰り返されるケースでサウンド再生開始のオーバヘッドによる
      再生開始時刻のズレで実際の再生音がひずんで聞こえるというケースがあったので、再生停止後も一定時間無音を再生することで
      間欠的な鳴動であってもできるだけ連続再生をさせることで問題を回避するようにしています
      (なので、この回避策からはずれるケースでは今まで通りですが、この場合は無音が一定期間続くので耳障りな音にはならないと思います、多分)
      この問題はmacOSでのみ確認していますが、修正はWindows版にも行っています
      また、macOSでは音声の再生停止を頻繁に繰り返していると意図せず音声再生が出来なくなってしまうことがあるのでその緩和にも
      なっていると思います。
  FDC
    SLFファイル作成ツールで2D(320KByte)をサポートしたので、エミュレータ側でも検出できるように修正
    なお、検出が出来るようにしただけなので1.44MBの2HD同様読み出しが出来るわけではありません(FDCを適切に制御したらあるいは読めるかもという程度です)

○ 0.3.2.0a 2019/07/20
  本リリースはMAC向けのバグ修正のみになります
  VIDEO
    Metalでのレンダリングで256色モードが正常に表示されないバグを修正
    スクリーンウインドウの表示方法(主に画角に関して)を変更、スケーリングや解像度が変更される際の違和感や画面乱れを軽減

○ 0.3.2.0 2019/06/29
  VIDEO
    テキスト表示が乱れるバグを修正
    ・外字の右半分と判定する条件の修正
    ・ポート70hで指定する非表示ラインに表示されることがあるバグを修正
    ・アンダーラインが表示されなければいけない条件で表示されないことがあるバグを修正
    なお、シェーダのバグ修正に併せて処理自体も少し変更(エンバグしているかも)

  以下MACのみの修正
  SOUND
    動的に確保するメモリ領域が不足していて領域外アクセスを行ってしまうバグを修正
  VIDEO
    試験的にMetal用のシェーダを追加
    ※初期状態では従来通りOpenGLでのレンダリングを行うため、レンダリングにMetalを使用するには
      UIに新規追加した設定のチェックを外す必要があります。

○ 0.3.1.7 2019/05/24
  IDE
    実機ITFと疑似IDEBIOSの組み合わせで2台目のHDDイメージを正常に検出できないバグを修正

    FreeDOS(98)でIDEハードディスクへのリードアクセスに失敗する問題への対策(現象の確認はしていませんがライトアクセスにも同様の対策をしています)
    この問題はIDE BIOSに起因するもので、実機BIOSと基本的にそれをベースに作成している疑似BIOSで共通に発生するものですが、
    本バージョンでは対策を疑似BIOSに対してのみ行っているため実機BIOSでは問題が解消されません。
    ですのでFreeDOS(98)を使用する場合はIDEBIOS.ROMをROMフォルダから削除(またはリネーム)してエミュレータを実行してください

  ※起きている問題についての補足
    AH=06h Int18hによるリード要求が行われるとBIOS内部ではハードディスクコントローラへのIOアクセスに先立ちパラメータチェックを
    行うのですが、そのパラメータチェックのなかに格納先アドレスの[セグメント値×16＋オフセット値]から転送サイズ分転送したときに
    下位の16ビットが0xffffをまたぐ(16ビットでオーバーフローする)ケースはエラーと判断しているところがあり、FreeDOS(98)でのリード
    処理の失敗はこの条件に引っかかっていたものでした。
    (このような理由のため、すべてのリード処理が失敗するというわけではありません、というか、発生するのは割とレアケースなのかもしれません
    実際に起きたケースのひとつは、セグメント:オフセットが6f8e:000fで転送サイズが0800hでした)
    
    しかしよく考えてみると、オフセット値＋転送サイズがオーバーフローする状況でなければ正常に処理が出来るはずであり、前述の条件でエラー
    にする必要はないため今回の疑似BIOSに対する修正ではオフセット値＋転送サイズが0xffffを超える値になっていなければ正常にリード処理を行う
    ようにしました。
    (なんとなくFreeDOS側もオフセットには下位4ビットのみを設定するようにしてオーバフローを避けるようなアドレッシングになっているようですし...)

    もしかしたら、内蔵HDDにIDEが使われるようになる以前はSASIのHDDが使用されていたと思うのですが、SASIのデータ転送にDMAを使用していたとしたら
    DMA処理の関係で上記の制約が必要となるため、BIOSの外側の挙動を共通にするためにあえてそうしているのかもしれません。
    
    なお当該問題は、FreeDOS(98)のFDイメージで起動、MS-DOSでフォーマットしたHDDイメージで確認したもので、追加試験としてFreeDOS(98)の
    BTNPARTコマンドを用いてフォーマットしたハードディスクイメージを使用して確認(起動はFDから)したところ、確認した範囲では問題は
    起きませんでした。
    リードしたデータを展開するアドレスやサイズがどのように決められているのかまでは確認していないため、はっきりとしたことはいえませんが、
    もしかしたらFreeDOS(98)でフォーマットしたHDDイメージであれば問題は発生しないのかもしれませんし、あるいは前述したようにレアケースで
    あるためたまたま起きていないだけなのかもしれません。
    確認した中での有意的な違いとしては、同一容量のHDDイメージでMS-DOSフォーマットのものは一回あたりの読み出しサイズが2048バイトなのに対し、
    FreeDOSでフォーマットしたものは一回あたりの読み出しサイズが512バイトでした。読み出しサイズが小さければそれだけアドレスがオーバーフロー
    する条件は狭くなり、これが意図的なものだとしたらFreeDOSでフォーマットしたHDDイメージであれば実機BIOSでも問題は起きないと考えられます。

○ 0.3.1.6 2019/05/18
  VIDEO
    テキストVRAMにおける半角全角の判定が正しくなく表示が乱れるケースがある問題を修正(まだ直し切れていないかも)
    ポート64hへの出力によるVSYNC割り込みの発生は、VSYNCのタイミング後であっても外部割り込みが未処理の状態(IRRがセットされている状態)
    のときは新規に割り込み要求を行わないように修正。
    本修正でDOS SHELL終了後にコマンドプロンプトへ戻らない問題が改善されると思いますが、サイドエフェクトがあるかも...
  IDE
    疑似BIOSのアセンブラ命令にバグがあったので修正

○ 0.3.1.5b 2019/04/29
  今回のリリースもmacOS向けのみになります
  MAC 
    macOS10.14.3でキーカスタマイズが出来ない問題を修正
    サウンドの鳴動開始の冒頭で音がおかしいことがある問題への対応(完全に修正し切れていないかもしれません)

    なお、macOSの次期バージョンでは実行ファイルに署名が必須になるかもしれないため、OSバージョンアップ後に動作しなくなるかもしれません
    この件に関しては状況が確認したうえであらためて修正版をリリースしたいと思います

○ 0.3.1.5a 2019/02/10
  ※このバージョンはソースファイルとmacOS版のみのリリースです
  Win版との共通ファイルにも修正が入っていますが、Win版では挙動が変わることはない(はず)です。
  MAC
    macOS10.14.3でメディアファイルを入れ替えたとき、アプリケーションを終了させたとき等に正常に動作しない問題を修正。
    操作していて気がついたところを順次直している状況ですので、まだ問題が残っているかもしれません。

    愚痴:10.13へのOSアップデートのときにいろいろ痛い目に遭ったので、今回は警戒してしばらくアップデートをしていないでいたのですが、
         やっぱりというか何というか、やっぱり10.14でも痛い目に遭ってしまいました。
         もっとも、公開しているプログラムが動かないという状況を考えると、もっと早くアップデートしておくべきだったのかもしれませんが...

         macOSは(というかappleのOSは)バージョンが変わると挙動が大きく変わることが多くてOSアップデートへの対応が大変です...
         ファイルセレクタのウインドウを閉じたときに関係のないOpenGL Viewをクローズしようとしないでください...
         そろそろmetal対応も考えなきゃいけないんですかね...(OpenGLは10.14で非推奨になってしまっていますし)

○ 0.3.1.5 2019/02/09
  VIDEO
    GDCのSCROLLコマンドのSLパラメータに基づくループ処理を若干変更
  MAC
    macOS10.14.3でエミュレータが正常に動作しないバグを修正。

○ 0.3.1.4 2019/01/28
    ITF.ROM、BANK.ROMを使用している環境で立ち上がらないバグを修正
    ※0.3.1.3はエンバグしたため、あらためて修正し直し
  WIN
    UI関係を修正

○ 0.3.1.3 2019/01/27
    ITF.ROM、BANK.ROMを使用している環境で立ち上がらないバグを修正

○ 0.3.1.2 2019/01/26
  VIDEO
    メインスレッドと描画スレッドで排他制御をせずにアクセスしている領域があるバグを修正
    ポート60h/A0hのVERTICAL SYNCビットのセット条件を変更
    ※以前の実装では定周期で動かしているVSYNC割り込み発生処理が何らかの理由で遅延した場合、割り込み発生後のタイミングでポートを
    チェックしたときにはタイミング的に既にVSYNCビットがクリアされているという状況が起こりえたため、VSYNC割り込みの発生が遅れた
    場合でも必ず一定期間はVERTICAL SYNCビットがセットされているように処理を変更
    ※この修正も DragonSlayer英雄伝説II の挙動がおかしい(オープニングでフローラが座っているシーンで画面が縦スクロールするときに
      もたつく等)問題の修正になります。
  MAC
    エミュレータOFF時にスケーリングの変更を行うと、その後エミュレータ画面が正常に表示できなくなるバグを修正

○ 0.3.1.1 2019/01/20
  VIDEO
    テキストのラインスクロール処理がいろいろと間違っていたので処理を見直しして修正
    グラフィックGDCのSCROLLコマンドでコマンドパラメータを0から7までしか参照していなかったものを15まですべて参照するように修正
  CPU
    ポートF0hによるリセット処理で、外部割り込みの発生情報をクリアするとうまく動作しないことがあるため、クリアしないように修正
  SOUND
    SSGノイズの発生方法を少し変更(実機に近くなったとかそういうわけではありません。聞いた感じで幾分よくなったかも程度です)
  MAC
    不正終了するいくつかの問題を修正

  ※VIDEOとCPUの修正は主に DragonSlayer英雄伝説II で確認した問題の修正になります。以前のバージョンであった以下の問題が改善されます。
    ・オープニング、ゲーム中に停止する問題
    ・エンディングで画面が乱れる問題の修正(フレイアの画像がスクロールする画面、スタッフロール)
    なお、通しでプレイしたわけではないので、他の問題があるかもしれません。

○ 0.3.1.0 2018/10/14
  FDD
    エミュレータ起動時にドライブの検出に失敗する問題の対処
  VIDEO
    画面の解像度を640x400(480)固定から、GDCに設定された値を基準に決定するように変更
    設定可能な上限値は768x512で、実際の評価としては「30行BIOS、90桁BIOS」を使用して、
    88x30のテキスト画面(704x480)が乱れずに表示出来ることを確認しています
    (もっとも使い方がよく分かっていないので、解像度を変えた後画面が崩れずに表示されていることを確認しただけです)。
    評価に使用させて頂いた30行BIOS、90桁BIOSの作者様にはこの場を借りて御礼申し上げます。
  SOUND
    PCMでノイズが乗ることがある問題の修正。あわせてPCMの処理方法自体も少し変えています(エンバグしている可能性あり)
  CPU
    REPプリフィックスを伴ったストリング命令で、ECXレジスタに巨大な値が設定されていると長期間他の操作を受け付けないことになることになるため、
    CPUの処理を一定周期で抜けるように修正

  その他動作に大きく影響しない細かい修正

○ 0.3.0.3 2018/03/03
  SOUND
    エミュレータリセット後音が鳴らなくなる問題の修正(現象はmacOSでのみ確認していますが、同様の修正をWin版にも入れています)
  IDE
    コンパイル時に出たワーニング(関数の戻り値として未初期化の値を返す可能性がある)への対応

○ 0.3.0.2 2018/02/24
  CPU
    RETF,CALL(far)命令処理中にスタック領域へのアクセスがページフォールトになった場合、正しく例外処理ができていないバグを修正
  IDE
    疑似BIOSを使用している状態でINT1Bhを実施後、フラグレジスタの値が不正な値になるバグを修正
    (確認している現象としては、割り込み許可フラグがクリアされてしまうことにより、INT1Bh実施後に割り込みが入らなくなるケースがあります)
    HDDを2ドライブ接続した状態で、Windows98終了時に「MS-DOSモードで再起動する」を選択したときにハングアップする問題を修正
  SOUND
    エミュレータを一度PowerOFFした後再度PowerONした際、再初期化してはいけない領域を初期化してしまうため、
    その後PCMを再生しようとしたときに不正終了してしまうバグを修正

○ 0.3.0.1 2018/01/20
  KEYBOARD
    キーイベントを処理し損なう問題(キーを押した後離しても押した状態が継続するようなケース)を改善
  SOUND
    エミュレータをリセット後、音が鳴らなくなることがある問題を修正
    スピーカ出力とヘッドホン出力を切り替えていると音が鳴らなくなる問題の修正(macOSのみ)

○ 0.3.0.0 2017/11/19
  FDC
    新規に設計したフロッピーディスクイメージ(SLFフォーマット)に対応
    SLFフォーマットのイメージファイルの作成にはRaspberryPi3とフロッピーディクスドライブ、接続のためのコネクタ等が必要になります。
    詳しくは(http://www.satotomi.com/pifdc/)参照のこと

    従来のbinファイルをマウントしたにもかかわらず、slfファイルが作成されることがあります。これは、イメージファイルに更新が必要になケースで、
    ・マウント後にファイル属性を読み書き可能から読み込み専用に変えた場合
    ・ベタデータでは保存できない特殊なトラック構造を持つメディアに作り替えられた(異なるサイズへのフォーマット中に中断した場合など)
    場合になります。

    また、新しいファイルフォーマットに対応した結果、特殊なセクタ属性にも対応できるようになったため、
    今まで未実装だったり適当だった一部のFDCコマンドに関しては実装し直しました(ただし、新たに追加したREAD A TRACKとSCANコマンドの処理は多分正しくないです)。

    イメージファイル名の拡張子の前に「.ro」とつけると(例: fdimage.ro.slf、fdimage.ro.bin)とライトプロテクトされていると判断するようにしました。

  ドライブ全般
    IDEにアクセス中にフロッピーディスクの入れ替えを行うとデッドロックが起きることがある問題の修正
    IDEにエラー対応の処理を追加
  CPU
    プロテクトモードでTSS参照時にIOプロテクトのテーブルの参照先を更新していないケースがある問題を修正
    プロテクトモードで割り込みが発生したときに行うスタックポインタの保護範囲チェックの計算が間違えていたので修正
  MOUSE
    マウスの処理の作りがいろいろとよくなかったので修正
    ・ポインタの座標情報をラッチしていないときに、現在のカウンタを返していない問題を修正
    ・周期割り込みがすでに発生中のときに再度周期割り込みの要求が出されたときに、次の割り込み発生までの時間をリセットしてしまい
      いつまでもマウスの割り込みが発生しないという状況が発生しうる問題を修正
    ・周期割り込みの初回の割り込みは設定直後に発生させるように変更(サイドエフェクトがあるかも)
  SOUND
    0.2.4.3で試験的に実装したプリスケーラの変更処理がバグで全く動いていない状態だったので修正(あくまで机上のバグを直しただけなので、修正した後も実機のように動くかは自信なし)
  DMA
    ベリファイの設定ビットパターンを間違えていたので修正

○ 0.2.5.3 2017/8/26
  ユーザ定義フォントが正しく表示されないバグを修正

○ 0.2.5.2 2017/8/26
  VIDEO
    一度に大量の(というほど大量ではないのですが)GDCのリクエストが来たときに、処理をさばききれず正しくコマンド処理を実施できないことがあるバグの修正

○ 0.2.5.1 2017/7/30
  SSG音源の出力レベル調整(以前よりバランスはよくなったと思います。あまり自信ないですが)
  ソース内部のスペルミス修正(実行ファイルには影響しません)

○ 0.2.5.0 2017/7/17
  言語対応に関して、英語メニューの表示条件の改善以来があったため対応しました。
  対応方法を変えたため、本バージョンからリリースにenディレクトリとその配下のdllファイルはなくなりました。
  あわせて指摘頂いた方に英語訳の改善をして頂きました。この場を借りて御礼申し上げます。ご協力ありがとうございました。
  なお、上記修正には以下のサイトの情報を参考にさせて頂きました。
  https://social.msdn.microsoft.com/Forums/ja-JP/a68caf09-4ec3-421c-86fc-1a7b4936b504/1exe?forum=wpfja

  ファイル選択ダイアログにユーザ任意の拡張子を選べるように、設定ファイルの機能を拡張しました。
  エミュレータ最初の起動後に作成されるsettings.xmlファイルにテキストエディタ等で直接編集する必要があります。
  settings.xmlをテキストエディタ等で開き、<drive>タグの配下に以下のように記述します。
  <drive>
    :
    :
    <fdext title="FD Image File" extension="*.fdd;*.bin" />
    <cdext title="CD Image File" extension="*.iso;*.bin" />
  </drive>

    fdextタグは、フロッピーディスクイメージファイルを選択するダイアログ用、
    cdextタグは、CDイメージファイルを選択するダイアログ用で、従来のメニューに先行して表示されるようになっています。
    title属性にはプルダウンメニューに表示される内容、extension属性にはセミコロン区切りで選択可能な拡張子を記述します。
    タグの形式はwindowsとmacOSで共通ですが、記述内容が異なります。
    ○windows版はプルダウンメニューに表示される内容はイメージ的には"$title($extension)"というような形でextensionに記述した内容も記述されます。
      また、extensionには拡張子を"*.ext"というように、"*."をつけて記述します。
    ○macOS版はプルダウンメニューにはtitle属性に設定した内容のみが表示されます。
      そのため、拡張子も表示したいときはtitle属性にも表示されるイメージで記述しておく必要があります。
      また、extensionには"*."は記述せず拡張子のみを記述します。以下はmacOS版での表示サンプルです。
    <fdext title="FD Image File(*.fdd;*.bin)" extension="fdd;bin" />

    プログラム中では記述内容のチェックはしていないので、記述の際には注意してください。
    また、おわかりかとは思いますが、この機能は選べるファイルを変えられるようにするだけで、データ構造を持ったイメージファイルへの対応ではありません。
    この機能でファイルを選べるようにしても、データ構造を持ったイメージファイルが読めるようになるわけではありません。

  以下バグ修正
  CPU
    ins/outs命令で、プロテクトモード時に行うI/Oプロテクトチェックをしていなかったバグを修正
    cmpxchg8b命令で、比較計算を間違っていたバグを修正
  VIDEO
    描画の際に、vram領域外のデータを参照し表示が乱れるケースがあったため、ラップアラウンド処理を追加

○ 0.2.4.3 2017/7/9
  COM
  シリアルポートの実装にバグがあって正常に動作していなかった問題を修正
  (チェック漏れで従来からずっと機能していませんでした申し訳ありません)
  CPU
  32ビットのidiv命令で、計算結果が除算エラーになる範囲を間違えていたため、本来除算エラーにならなければならない計算で
  エラーが発生しないことがある問題の修正
  VIDEO
  試験的にGDCのSYNCコマンドでI/Sビットがそれぞれ1/0の場合は、縦倍表示を行うように変更(テキスト、グラフィックとも)
  SOUND
  試験的にプリスケーラの変更に対応(対応が十分じゃないかもしれません)
  ソースのスペルミスの修正

  その他細かい修正

  以下MAC版の機能追加分
  ・シリアルポートへの対応(Windows版同様調歩同期(UART)のみ、ハードウェアフロー制御は非対応)
  ・ホストのCD-ROMドライブに対応
  なお、MACに関しては現状対応可能な機能をすべて実装したつもりなので、バージョンをWindows版にあわせることにしました。
  Windows版で実装してMAC版で実装できていない機能については以下の通りです。
  ・FDDドライブ対応(マウントしたメディアのパーミッションがないためユーザ権限での読み書きが出来ない)
  ・ゲームパッド対応(対応デバイスを持っていないためペンディング)

○ 0.2.4.2 2017/6/3
  VIDEO
  画面表示のオプション「400ライン表示時もVGA領域を表示する」にチェックしているとき、解像度の変更の際表示が乱れる問題が発生していたため修正
  (0.4.2.0の修正によるエンバグ)
  SOUND
  BEEPの周波数が実機の1/2の周波数で鳴動していたため実機と同一の周波数に変更(あまり自信なし)
  SSGおよびBEEP鳴動用の矩形波テーブルを周波数成分の異なるテーブルを複数持つようにして、より広い範囲の周波数でまともに聞ける音が出るように修正
  (だいたい上が4400Hz程度(オクターブ8のC#付近)、下は特に破綻する閾値はないですが周波数が低くなるほどゆがみが激しくなり、
   感覚的には100Hzを下回るとゆがみがひどくなる感じがします)
  (MACのみ)リズム音源の鳴動タイミングによって曲の演奏が実際より遅く演奏されるケースがあったので状況が多少よくなるように処理を変更
  (MACのみ)FM+SSG音源鳴動用のサンプリングレートの設定が正しく反映されない問題の修正

○ 0.2.4.1 2017/5/20
  VIDEO
  前回の修正で、400ライン表示がぼやける問題が発生したので修正
  グラフィック用GDCにTEXTEとZOOMコマンドを実装(実機の挙動に正確ではないかもしれません)
  グラフィック用GDCで机上で見つけた内部処理のバグを修正
  その他表示関連したいくつかの挙動を修正

○ 0.2.4.0 2017/4/30
  今回のリリースのメインとしてCPUエミュレーションのソースコードに速度改善を見込んだ全般的な修正をしています。
  CPUの修正はコード全般にわたっており、修正にあたり机上でいくつかのバグを直しているものの、修正量が多いためエンバグしている可能性もあり
  全般的なバグの改善度合いは一進一退といった感じだと思います。
  肝心な速度改善の方ですが、修正規模に見合わずベンチマークベースで一割強速くなった程度ですので体感的にはほとんど変化がないと思います。

  CPU以外の修正は以下のとおりです。
  HDD
  HDDイメージを新規作成後の最初のマウントした状態でHDDの先頭領域の読み出しでゴミデータを読み出してしまうバグを修正。
  SOUND
  FM音源でエンベロープ設定を行っていないチャネルをKeyONをしたときに不正終了する問題を修正
  VIDEO(Windowsのみ)
  機種によって2017/3～4頃のアップデート後のWindows10で画面が縦に潰れたように表示される問題があるため描画方法を変更
  VIDEO(macOSのみ)
  機種によってテキスト表示が乱れる問題を修正

  追加機能
  CPUの修正ついでで、P5で追加された命令に対応しました。
  MPU-401コンパチブルのMIDI対応(UARTモードのみ)をしました。(確認しているソフトが少ないので正常に鳴らないかもしれません)

  ● OSをMIDI対応させる方法
    事前にUIでMIDIを使用可能にしておきます。
    I/Oポートと割り込みラインのデフォルトはそれぞれ「E0D0」と「2」になります。通常は変える必要はないと思います。
    (しかも、割り込みラインに関してはプログラム中で一切参照していないので変更しても何ら効果はありません...)
    またドライバのインストールにはOSのインストールメディアが必要になるので事前に用意しておく必要があります。
  Windows3.1
    1. プログラムマネージャの「メイン」で「コントロールパネル」を開く
    2. 「ドライバ」を選択し「ドライバの設定」を開く
    3. 右のメニューから「追加...」ボタンをクリックし、「ドライバの追加」を開き、ドライバの一覧から「Roland MPU-PC98II」を選択します。
    4. 続けて表示されるドライバの設定ではUIで指定したI/Oポートと割り込みラインの値を設定します。
  Windows98
    1. 「コントロールパネル」を開き、「ハードウェアの追加」を選択します。
    2.  最初の選択で「いいえ(一覧から選択する)」を選択し、次へ進みます。
    3. 次のメニューでは「サウンド、ビデオ、およびゲームのコントローラ」を選び、次の画面で製造元「Microsoft」、モデル「MPU-401 Compatible」を選択します。
    4. 再起動を促されますが、ここでは再起動せず「コントロールパネル」から「システム」を選択し、デバイスマネージャを開きます。
    5. 「サウンド、ビデオ、およびゲームのコントローラ」ツリー下の「MPU-401 Compatible」のプロパティを開きます。
    6. プロパティのリソースの設定を、UIで指定した値にあわせて変更し、OSを再起動します。

○ 0.2.3.0 2017/2/8
  GAMEPAD
  環境によって起動時に不正終了する場合がある問題を修正
  ゲームパッド名をアンマネージドコードからマネージドモードへ渡す際適切なメモリの渡し方をしていなかったことが原因でした。
○ 0.2.2.0 2017/2/4
  CPU
  VEM486(Version 1.29N)が動作しない問題に関連したCPUのバグを修正
  修正した本バージョンでは代替BIOSを使用して下記の設定で起動することを確認しています。
  (正常に起動し指定領域がUMBになっていることのみ確認しています。詳細な動作検証はしていません。また、実機BIOSだとIDE BIOSのROM移動が出来ません)
  MS-DOS5.0A-H
     DEVICE=(path)VEM486.EXE /U=A5-A7,C0-CB,D0-DF,E9-F0 /M=D8:F1,D9:F2,DA:F3,DC:F4 ※
     DEVICEHIGH=(path)VEMEMM.SYS
  MS-DOS6.2
     DEVICE=(path)VEM486.EXE /U=A5-A7,C0-CB,D0-DF,E8-F0 /M=D8:F1,D9:F2,DA:F3,DC:F4
     DEVICEHIGH=(path)VEMEMM.SYS
  ※PC-9821本体付属のMS-DOS5.0A-Hに同梱されているNECCD.SYSは初期化時にセグメントE800hの領域を参照しています(NECチェックの一環?)。
  そのため、NECCD.SYSを使用してCD-ROMを認識させるためにはE8をUMB領域から除外する必要があります。

  0.2.1.2で追加したデバッグレジスタ機能に関連した変更の漏れを修正
  BIOS
  従来のままだと代替BIOSがVEM486のROM移動で正常に動作しないため、移動しても動作するように修正
  SCSI
  ポートF0hによるCPUリセット後割り込みが入らないことがある問題の修正
  IDE
  不正なメモリアクセスをしていたバグを修正
  (0.2.0.0の頃指摘を頂いていた不正終了の件はこれが原因かも...?)
  UI
  文言の間違いを修正

○ 0.2.1.2 2017/1/25
  VIDEO
  0.2.1.1で画像が乱れるという指摘を受け、誤差の補正処理方法を見直し再修正
  カーソルブリンクの反転時の表示がおかしい問題の修正
  CPU
  デバッグレジスタの仮実装

○ 0.2.1.1 2017/1/22
  VIDEO
  シェーダの見直しを行い、演算効率を改善
  DirectX9.0対応(およびソフトウェア処理によるDirectX9.0c対応)のGPUでハードウェア処理が出来るように
  専用のシェーダを追加(ただしパフォーマンスは期待できません。ソフトウェア処理よりまし程度です)
  SOUND
  従来、サウンドデバイスのないPCで実行しようとするとダイアログが表示されて起動しなかったものを
  起動できるように修正
  CPU
  ハードウェア割り込みの処理を少し変更。
  ハードウェア割り込み発生時に、当該の割り込みがマスクされていた場合に以降割り込みが発生しなくなる場合があるかもしれない
  MAC
  ハードディスクイメージの新規作成で、作成するサイズの計算間違いで期待したサイズで作成できない問題を修正

○ 0.2.1.0 2016/12/26
  VIDEO
  GDCのWRITEコマンドのビット判定を誤っていたバグを修正
  SOUND
  計算間違いによりAttackRateの初期テーブルが期待とは異なる値で生成されるバグを修正
  COM
  COMイベント受信関数の使い方を間違えていたので修正
  その他
  ITFの代替機能を使用しているとき、画面上のメモリサイズの表示がおかしい(0が表示されない)問題を修正
  VS2015およびxcodeによるコード分析で修正した方がよいと思われるワーニングについて一部修正
  dllファイルにもバージョン情報を追加

○ 0.2.0.0 2016/12/14
  ITF.ROM、IDEBIOS.ROM、SCSIBIOS.ROMがない場合にも動作するように代替機能を追加

  CPU
  インストラクションフェッチの処理を修正
  排他制御すべきフラグが排他制御できていない問題の修正(アプリケーションの終了時に不正終了する問題の修正)
  IDE
  ハードディスクイメージへの読み書きのバグ修正により全般的な処理の信頼性の向上
  ハードディスクを複数台設定できることを想定した修正
  VIDEO
  描画のタイミングの調整
  (DOSシェル終了時にプロンプトに戻ってこれない問題の対策、発生頻度は低くなったように感じますが完全に解消されていません)
  SOUND
  机上で気がついた明らかにおかしい箇所の修正(ハードウェアLFO関連)
  SCSI
  SEEKコマンドの処理でポインタの指定を間違えていて正常に動作しないバグを修正
  COM
  シリアルポートの制御に関するバグの修正とロジックの見直し
  UIで設定したボーレートを使用する機能を追加
  その他
  不揮発情報の保持を行うかどうかを設定しているディップスイッチ情報を正しくエミュレーション出来ていない問題を修正
  スペルミス、コメント間違えの細かい修正

○ 0.1.5.0 2016/09/22
  FDC
  実FDDを使用したときにフロッピーディスクの制御が不安定だった問題の改善
  CD-ROM
  実CD-ROMドライブを使用したときのCD-ROMの制御が不安定だった問題の改善
  実CD-ROMドライブを使用しているときUIのイジェクトボタンでイジェクトできるように変更
  KEYBOARD
  Windows2000で、キーボードが使えない問題の修正(0.1.2.0の修正時にエンバグ)

○ 0.1.4.0 2016/09/15
  VIDEO
  テキストグラフィックのスムーススクロール機能を修正(従来はまともな実装すらされていませんでした、すみません...)
  読み出すフォントデータのコードにANKを指定したあとで、フォントサイズの切り替え(6x8<->7x13)を行ったとき、フォントデータの内容を更新していないバグを修正
  (上記、ポリスノーツのルビ表示がおかしい問題の指摘に対する修正ですが、原因が特定できての修正ではないのでこれで改善されるかは不明です)
  CD-ROM
  メディアの入っていないCD-ROMドライブを設定していたときエミュレータが起動しない問題を修正
  SOUND
  rtythm.datファイルがないときに不正なメモリアクセスを起こすバグを修正

○ 0.1.3.0 2016/09/12
  SCSI/CD-ROM
  CD Audio関連のバグを修正
  トラック番号や再生時刻といった数値情報をBCD値で返さなければいけないところを16進数で返していた問題を修正
  MS-DOS6.2+Windows 3.1でMCI CDオーディオが正しく動作しない問題を修正
  その他CD Audio制御に関連した問題を修正

○ 0.1.2.0 2016/09/02
  CPU
  インストラクションフェッチ処理を一部修正
  インストラクションフェッチ時のエラー判定で誤った判定を行っているか所を修正

  KEYBOARD MOUSE
  オートリピートの間隔をOS資源から、プログラム内の高精度カウンタに変更
  キースキャン判定が誤って通知される問題への対応

○ 0.1.1.0 2016/08/29
  エンベロープを使用したときのSSGの鳴動処理を修正
  シリアルポートの受信処理のバグを修正
  releasenote.txt(本ファイル)の追加

○ 0.1.0.0 2016/08/03
  ファーストリース
