2019年の総括

全ての国産PCのエミュレータを開発しようと始めたこの活動も、今年で16年目となりました。
今年一年、あまり娘達と遊んであげられなかった埋め合わせの大晦日です。

今年新ネタとしてリリースしたのは…ePC-8001/mkII, ePC-8801/mkIIだけですか。
これらも純粋に新ネタとも言い難いですし、CEFUCOM-21は結局リリースできませんでしたし。
春から課長に昇進したということもありますが、とにかく本業が多忙すぎました。

強いてトピックを上げると、デバッガを多少強化できたことくらいでしょうか。
ありがたいことに、拙作を開発にご活用してくださる方々がいらっしゃいますので、
できるだけご要望は吸い上げていきたいと思っています。
一応Twitterもこっそり覗いておりますが、メールでもご要望を上げて頂ければ幸いです。
(返事できるのが数か月後とかになりそうですが)

それ以外だと、ずっと未確認だったハイレゾ98のグラフィック周りの確認ができたのは良かったです。
システムチェックプログラムでエラーが出る項目が多いのも何とかしていかないと。

2020年ですが、何を頑張るという以前に、とにかく作業時間を確保していきたいですね。
今年はオリンピック絡みで業界最大の展示会が年末に差し掛かってしまったのですが、
そこで発表したネタ(ぉぃ)が妙にお客様にヒットしてしまったみたいで。
来年は今年以上に多忙になってしまいそうです。
時間が取れたら娘たちと遊ぶのを優先しつつ、体調と相談しながらこっちの作業も頑張ります。

来年も頑張りますので、また次の一年もお付き合いいただけましたら幸いです。



2019/12/31
EmuZ-2500を更新しました。
紅茶羊羹さんのCRTC周りのパッチを取り込みました。
テキスト64色モードで、透明黒と不透明黒を重ねたときの挙動が修正されています。多謝多謝です。

2019/11/3
ePC-98XA, ePC-98XL, ePC-98RLを更新しました。
VRAMやCGウィンドウのアクセス周り、水平周波数周りの修正を行っています。

2019/10/28
eX1, eX1twin, eX1turbo, eX1turboZを更新しました。
HuBASICでテープのセーブができない問題を修正しました。
他のソフトで悪影響が出ていないか、テストにご協力お願いいたします。

2019/10/22
本業多忙につき、年末まで身動き取れそうにありません。
気になった部分だけプチ更新です。

eX1, eX1twin, eX1turbo, eX1turboZを更新しました。
CMTのTape End Signalの挙動を修正しました。
イナブキ X1ラボ様のRuinous XIIIが起動するようになっています。
他にも多段ロードのソフトで動くようになっているものがあるかもしれません。

MS-DOS Player for Win32-x64を更新しました。
INT 21h, AH=2Chにおいて、1/100秒の値が正しくない問題を修正しました。
藤田望様から頂いたパッチを取り込んでいます、対応が遅くなってしまい申し訳ございません。

2019/4/30
Common Source Code Projectを更新しました。
2019/2/19に一旦取り下げた、Z80の1命令実行中のイベント駆動の改良を復活させました。
SCSIホストについて、コマンド/メッセージフェーズ時にIRQを立てるようにしました。
X1シリーズでSASI-HDDが動作しなくなっていたのが修正されています。
8259のISRレジスタの読み込み時、マスクレジスタを反映しないようにしました。
PC-9801シリーズの三国志のサウンドが鳴らない問題が修正されています。

EmuZ-2500を更新しました。
紅茶羊羹さんから頂いた、CRTC周りのパッチを取り込みました。
対応が遅くなってしまい申し訳ございません。

ePC-8801/mkII/SRを更新しました。
CMDSING、PCG描画、スキャンライン毎のパレット変更を無効にできるようにしました。

日野電子 CEFUCOM-21の実装中です。
まだ暫く掛かりそうなので、スクリーンショットのみ出しておきます。

2019/2/19-2
Common Source Code Projectを更新しました。
先のイベント周りの修正ですが、幾つかのソフトで不具合が見つかったため一旦取り下げます。
後日修正の上で再取り込の予定です。

2019/2/19
Common Source Code Projectを更新しました。
プライマリCPUがZ80の場合、1命令の実行中、Read/Writeサイクル単位でイベントを駆動するようにしました。
命令の途中で表示期間に突入して、VRAMアクセスでCPUにウェイトが掛かるような場合の再現性が向上しています。
命令の途中でウェイトが掛かった場合、残りの実行時間はウェイト解除後に加算されます。

EmuZ-2500を更新しました。
表示期間中にPCGRAMにアクセスしたときに、CPUにウェイトを掛けるよう修正しています。

2019/2/16
Common Source Code Projectを更新しました。
デバッガの! deviceコマンドについて、デバッガに対応したデバイスのみ列挙するようにしました。
複数の理由でブレークした場合、すべての理由を表示するようにしました。
また、! deviceでCPUを選択した場合、そのブレークポイントでもブレークできるようにしました。
PC、メモリ、I/Oの全てのブレークポイントが、! deviceで選択したデバイスに対して機能します。

各DMAコントローラについて、デバッガを有効にしました。
! deviceでDMAコントローラを選択して、RBP/WBPでブレークポイントを掛けることによって、
DMAコントローラからのメモリアクセスでブレークするようになります。
Z80DMAについては、IBP/OBPによってI/Oアクセスでもブレークを掛けることが可能です。

TMS9918について、IBP/OBPによってレジスタR0-R7へのアクセスでブレークを掛けられるようにしました。
RBP/WBPは、VRAMに対するアクセスでブレークが掛かります。

なお、AY-3-891x, YM2151, YM2203については、RBP/WBPでレジスタアクセスにブレークを掛けます。
素直に考えればI/O扱いですが、256/512個もあると、Dコマンドでダンプしたくなりまして(苦笑)

MB8877で、シーク完了直後、read/writeするまで最低60msは待機する処理をオミットしました。
FM-Techknow p.180の記述を根拠とした実装でしたが、MB8877の内部処理のフローチャートを見る限り、
いまいち信憑性に欠けるようです。
この修正で、X1turboのイース2のオープニングの終わりのタイミングがいい感じになっています。

# 近々、デバッガの使い方のドキュメントを整備したいと思います。

2019/2/14
Common Source Code Projectを更新しました。
デバッガにおいて、CPU以外のデバイスのブレークポイントをサポートしました。
メモリ、I/Oのブレークポイントは、D/E/L/W等と同様、! deviceで選択したデバイスに対して機能します。
(! deviceで他のデバイスを選択するまでは、デバッグ対象のCPUに対して機能します)
また、デバッガが受け付けるコマンド長さを最大1024文字に拡張しました。

AY-3-891x, YM2151, YM2203について、デバッガからレジスタをメモリ空間として操作できるようにしました。
また、レジスタの読み書きでブレークできるようにしました。
TMS9918Aについて、デバッガからVRAMをメモリ空間として操作できるようにしました。
また、VRAMの読み書きでブレークできるようにしました。
MB8877において、シークコマンド直後の最初のシークに掛かる時間を調整しました。
Z80CTC, Z80DMAにおいて、リセットコマンド実行時に割り込み状態をリセットするように修正しました。

eX1, eX1twin, eX1turbo, eX1turboZを更新しました。
EMM, VRAMについて、デバッガからメモリ空間として操作できるようにしました。
また、VRAMの読み書きでブレークできるようにしました。

今回も、X1センターの佐藤様から頂いたレポートを反映しています。
いつもありがとうございます。

2019/2/9
Common Source Code Projectを更新しました。
MB887において、ドライブレジで現在選択されているのとは別のドライブのディスクを抜くと、
MB887で実行中のコマンドが誤って中断されてしまう問題を修正しました。
また、MB8877/uPD765Aのデバッグ情報として、現在のヘッドの位置と、現在のトラック中の
各セクタの情報、AM1、データがトラック中のどの位置にあるか表示するようにしました。

eX1turbo, eX1turboZを更新しました。
X1センターの佐藤様からレポートを頂いた不具合について対応を行いました。
いつもありがとうございます。

2019/2/8
Common Source Code Projectを更新しました。
昨日のデバッガの改良について、ソースの整理を行いました。
また、V9938Pなど一部のデバイスの描画処理についても改良をおこなっています。

eBUBCOM80を更新しました。
DMAC周りについて、最近のePC-8801MAの修正を反映しました。

eHC-80を更新しました。
サブCPUのコマンド 0x27, 0x29 を修正しました。
オペレーションモードが3の場合、XORで点または線を描くよう修正しています。
Stefano Bodrato様にご指摘いただきました、ありがとうございます。

2019/2/7
Common Source Code Projectを更新しました。
D88形式のブランクディスクを作成する処理を、winmainからemuクラスに移しました。
CPUのデバッグ中も画面を更新するようにしました。
VRAMやパレットなどを変更すると、すぐに画面に反映されるようになっています。

2019/1/29
EmuZ-80K, EmuZ-1200を更新しました。
吉喜工業のCOLOR GAL 5をサポートしました。
Suga様からご提供頂きましたソースを取り込みました、いつもありがとうございます。

ePC-8001/mkII/SRを更新しました。
カーソルが表示されなくなる不具合を修正しました。

2019/1/18
ePC-8001/mkII/SRを更新しました。
リセット時のRAM[0xff33]の初期値を0にしました。
PC-8001mkIIのGALAXIANが正常に起動するようになっています。

eSMC-70, eSMC-777を更新しました。
スキャンライン毎に画面の描画を行うように改良しました。
SMC-70のデモプログラムの、カラーバーがスクロールする場面が正しく表示されるようになりました。

2019/1/16
Common Source Code Projectを更新しました。
uPD765AのST3のTSビットを常に立てるように(暫定的に)修正しました。
ディップスイッチの状態が変更された場合、リセット時にVMクラスを再生成するようにしました。
ディップスイッチを、デバイスの有無の指定に使用することを念頭に入れた修正です。

ePC-8001/mkII/SR, ePC-8801/mkII/MAを更新しました。
PC-8001/8801について、GSX-8800をサポートしました。
また、各音源ボードの有効・無効を切り替えられるようにしました。
前回の更新で幾つかデグレしていたのを修正しました。
Nモードで片面だけ使っているディスクが起動しなくなっていたのを修正しました。

2019/1/11
ePC-8001/mkII, ePC-8801/mkIIをリリースしました。

2019/1/1
新年あけましておめでとうございます。
今年もよろしくお願いいたします。