2022年の総括

全ての国産PCのエミュレータを開発しようと始めたこの活動も、今年で19年目となりました。
今年もあとは蕎麦を食べるだけ、年が明けたらさだまさしですね。
ごろーさんの年末特番は、実家から帰ってから見ようかと思います。

2022年も、とにかく本業が超多忙な1年でしたが、思ったよりも開発が進みました。
昨年は多忙すぎて、帰宅したらもう趣味の開発をする余力が残ってない感じでしたが、
今年は更に多忙で、晩酌して趣味の開発をしてないとやってられん、という感じでした(苦笑)

今年は、FX-9000P, EX-80BS, M23, CRC-80, TRNジュニアをリリースできました。
技術的には大したネタではありませんが、久しぶりの豊作でしたね。

ネタという点では、PC-8801の16bitボードを実装できたのはエミュ開発者冥利に尽きましたね。
こういうネタを振ってもらえて、本当に長く活動を続けてきた甲斐がありました。
後はPC-9801の68000ボードの実装ができたら、心残りが無くなるというものなのですが。

MZ-2500の80B/2000モードとか、PC-9801の再現性向上とか、やり残しもぼちぼち進められました。
思いがけず、本業絡みでMS-DOS Playerのシリアル通信周りの改良も出来ましたし、
開発的にはいい一年だったと思います。
色々動作報告や資料提供を頂いた皆様方に感謝感謝です。

本業ですが、来年もまだまだ繁忙が続くかなと思います。
体を壊さない範囲で、細々と活動を続けていきたいところです。
まずは、やりかけになったままのN5200とM68と、いい加減FM16βを何とかしないと(苦笑)



2022/12/31
EmuZ-700/800/1500およびEmuZ-2200を更新しました。
クイックディスクのシーク音をサポートしました。

ePC-9801/E/U/VF/VM/VX/RA, ePC-98XA/XL/RL/DOを更新しました。
マウスの処理を改良しました。

2022/12/30
Common Source Code Projectを更新しました。
MS-DOS Playerを更新しました。
NP21/WのI386コアを、ver0.86 rev88 beta4相当に更新しました。
ただし、fpemul_softfloat.cについては、testi386.exeで例外が発生するようになったため、
今回はまだ取り込んでいません。

2022/12/29
ePC-9801/E/U/VF/VM/VX/RA, ePC-98XA/XL/RL/DOを更新しました。
ラインカウンタ制御周りを再修正しました。
テキストのアトリビュートの、ブリンクとリバースの処理を修正しました。

2022/12/24
Common Source Code Projectを更新しました。
YM2203において、モード設定によらず、ポートA/Bを入力モードに固定する仕組みを追加しました。

ePC-9801/E/U/VF/VM/VX/RA, ePC-98XA/XL/RL/DOを更新しました。
画面の描画周りとジョイスティックの修正しています。

2022/12/22
Common Source Code Projectを更新しました。
T98-NEXT nfd r1形式のディスクイメージに対応しました。
ただし、特殊読み込み情報については読み飛ばします。
不安定データを持つセクタが複数回読まれていた場合、値が変化しているかbit単位で取得して、
FDCが該セクタを読み込むたびに、それらのbitの値が乱数で変化するようにしました。
コロコロプロテクトが再現できるようになっているかと思います。
MB8877, uPD765Aについて、上記不安定データを扱えるようになっています。

ディスクに書き込みがあった場合、ディスクイメージはD88形式で保存されます。
このとき、不安定データを保存できるよう、D88形式の独自拡張を行いました。
不安定データを含むディスクイメージの場合、拡張子は.D8Eとなります。
フォーマットの変更内容は以下の通りです。
各トラックの先頭からセクタ数だけ読み込む分には、通常のD88と同じように扱えます。

各トラックで、通常のセクタの後ろに、不安定データをそのまま続けて保存します。
各トラックのデータ長は、次のトラックの開始位置(またはディスクの末端)から求められますが、
通常のセクタが終わってまだトラックのデータ長が残っていれば、不安定データが格納されています。
不安定データの格納の仕方は通常のセクタと同じです。
対象のセクタと同じヘッダ情報を持ちますが、オフセット+4,+5は不安定データをもつセクタ数、
またオフセット+9,+10は、対象のセクタがトラック中の何番目のセクタか、が格納されます。
データ部分は、対象のセクタと同じサイズです。
基本的に00hで埋まっていますが、不安定になっているbitだけ立っています。

2022/12/17-2
本日2回目の更新です。
ソース、バイナリを更新していますので、午前中にダウンロードされた方は再ダウンロードお願いします。

Common Source Code Projectを更新しました。
2022/12/4にi8237を弄ったとき、VERIFY時にI/Oアクセスしなくなっていたのを修正しました。
また、せっかく計算したウェイトサイクルを、CPUにバス要求していませんでした。
PC-9801で、HDDのフォーマットが異様に遅くなっている問題が解決しているかと思います。

2022/12/17
Common Source Code Projectを更新しました。
2021/1/17のuPD765Aの変更で、アンフォーマットのディスクイメージに対して、
物理フォーマットに失敗するようになっていた問題、
2022/12/4のuPD7220の変更で、QC-10の画面が崩れるようになっていた問題を修正しました。

ePC-9801/E/U/VF/VM/VX/RA, ePC-98XA/XL/RL/DOを更新しました。
画面の描画周りを色々修正しています。

2022/12/4
Common Source Code Projectを更新しました。
i86/i286/i386で、ウェイトサイクルを加算するようにしました。
i8237/uPD72071で、DMA転送時のバスの占有サイクルを追加するようにしました。
uPD7220で、CSRWコマンドで指定したアドレスから、描画位置のX,Yの値を算出するときに、
VRAMのプレーンサイズを考慮するよう修正しました。
i8080/uPD7801で、バスに16bitアクセスしないように修正しました。
Z80で、ソフトリセット時にIX/IYの値を変更しないようにしました。
EmuZ-2200で、Edit.of PASOCOM Graphicが動くようになっています)
汎用メモリバスおよびI/Oバスクラスで、バス幅を考慮するようにしました。

以上、かなり大工事をしています。
何か動かなくなってそうなので、お気付きの点がございましたらお知らせください。

ePC-9801/E/U/VF/VM/VX/RA, ePC-98XA/XL/RL/DO, EmuZ-5500/6500を更新しました。
メモリおよびI/Oのウェイトサイクルを追加しました。

2022/11/20
Common Source Code Projectを更新しました。
8251について、リセット時に送信可能フラグが立つよう修正しました。
PC-9801RA21から吸い出したITF/BIOSでブートできるようになっているかと思います。

2022/11/17
ePC-9801/E/U/VF/VM/VX/RA, ePC-98XA/XL/RL/DOを更新しました。
GDCのSCROLLコマンドでテキスト画面を分割した場合の処理を修正しました。
2020/12/18にEGCの修正をしましたが、いったん元の状態に戻しました。
その他、RAMウィンドウでFA0000h以降のアドレスにアクセスしようとしたときの修正や、
i386搭載機のA20ラインマスクを修正しています。

2022/11/14
Common Source Code Projectを更新しました。
8255のポートBのモード1の動作を修正しました。

ePC-8801/mkIIを更新しました。
PC-8801-16をサポートしました。(多謝多謝>某氏)
8086-8MHzが搭載された16bitボードで、MS-DOS V1.25が動作します。

ePC-9801を更新しました。
初代PC-9801において、常に2HD FDD I/Fが有効になるよう修正しました。
version 1.0のBIOSでブートするようになっているかと思います。

2022/11/12
ePC-8801/mkIIを更新しました。
400ラインモードが無効になっていたのを修正しました。
また、5インチドライブが切断されていると、エミュレータがクラッシュする問題を修正しました。
ご指摘ありがとうございます>UME-3様

ePC-9801/E/U/VF/VM/VX/RA, ePC-98XA/XL/RL/DOを更新しました。
メモリスイッチ周りを修正しました。

2022/10/14
EmuZ-2500を更新しました。
表示領域の縦方向スタートラインとエンドラインに対して同じ値を指定したときに、
常にVBLANK中と見做すように修正しました。
前回の変更で、MZ-2500版MAGICが動作しなくなっていたのが解決しています。

2022/10/12
EmuZ-700/800/1500を更新しました。
前回の更新で、割り込み周りがおかしくなっていたのを修正しました。
いぬふと様のGUNTUSが動くようになっています。

2022/9/30
Common Source Code Projectを更新しました。
Z80で、EIが連続して実行された場合に、更にその次の命令の実行が完了するまで、
割込みを受け付けないよう修正しました。
例えば、DI,EI,EI,DIと命令が並んだ場合、割込みは受け付けられません。

ePC-9801/E/U/VF/VM/VX/RA, ePC-98XA/XL/RL/DOを更新しました。
PC-9801シリーズにおいて、テキスト画面のスクロールレジスタを修正しました。
スクロールエリア外にごみが表示されたり、クラッシュする問題が解決しています。

2022/9/20
MS-DOS Playerを更新しました。
仮想マシン上でCOMSPECの値が変更された場合、COMMAND.COMにアクセスする際に、
COMSPECで指定されたパスを参照するようにしました。

2022/9/11
Common Source Code Projectを更新しました。
SCSIデバイスにおいて、ACK信号が立ち上がってデータを受け取った後、
REQ信号を立てるまでの遅延時間を修正しました。

eX1/twin/turbo/turboZにおいて、SCSI IDの異なるデバイスを交互にアクセスしたときの
安定性が向上しているかと思います。

2022/9/9
Common Source Code Projectを更新しました。
従来から、Z80では命令単位でなくサイクル単位で並行してイベントを駆動するようになっていましたが、
この機能の改良と高精度化を図りました。

EmuZ-2500を更新しました。
MZ-2000/80Bモードのサポート時に、PCG/漢字ROMのバンク切替が壊れていたのを修正しました。
また、4MHzのときのメモリやI/Oのアクセスウェイトを修正しました。
テキスト画面とグラフィック画面で、それぞれ別のコントローラに分かれていますが、
BLANK/SYNC信号の実装が、それぞれごちゃ混ぜになってしまっていたのを修正しました。
表示期間中にVRAMにアクセスしたときのウェイトの掛かり方も、より正しい実装になっているかと思います。

ePC-8801/mkII/MA, eX1/twin/turbo/turboZを更新しました。
JAST SOUNDの音質向上と音量を調整しました。(多謝々々>佐藤様)

2022/8/31
MS-DOS Playerを更新しました。
プロセス起動時のPSPについて、第1および第2のFCBの内容をセットするようにしました。
最初のプロセス起動時と、INT 2Eh, INT 2Fh AX=AE01hについて対応しています。

2022/8/30
EmuZ-80B/2200を更新しました。
SFTLOCKキーの割り当てを、CapsLockキーからCtrlキーに変更しました。
コントロールコードの入力がし易くなっているかもしれません。

EmuZ-2500を更新しました。
もの凄く今更な感じですが、MZ-2000/80Bモードをサポートしました。

2022/8/27
Common Source Code Projectを更新しました。
NP21のI386コアのFPUを修正しました。
また、SCSIデバイスについて、INQUIRYコマンドでデバイスリビジョンを返すよう修正しました。

EmuZ-700/800を更新しました。
MZ-700において、MZ-1E05, MZ-1E14, MZ-1R12をサポートしました。
MZ-800について、VRAM/PCGのアクセスウェイトを掛けるようにしました。

ePC-9801/E/U/VF/VM/VX/RA, ePC-98XA/XL/RL/DOを更新しました。
メモリスイッチの内容を保存するようにしました。
またディップスイッチのSW2について、メニューから変更できるようにしました。

2022/8/15
MS-DOS Playerを更新しました。
BEEP音を連続して発声したとき、再生が止まらないように修正しました。
NP21/WのI386コアについて、FPUタイプをSOFTFLOATからDOSBOX2に変更しました。
またDOSBOXのFPU_ST80()について、NaN/INFのケースを考慮して修正しました。

2022/7/27
Common Source Code Projectを更新しました。
Windowsがシャットダウンされる際に、エミュレーションコアを開放するようにしました。

2022/7/21
MS-DOS Playerを更新しました。
BEEP音の再生をサポートしました。
システムポートのbit0,1がオンのとき、PITのCh.3のカウント値に応じた周波数で再生します。

2022/7/9
EmuZ-700/800/1500を更新しました。
MZ-700のPALバージョンをサポートしました。
またCRTC周りの信号のタイミングを改良しました。

2022/7/8
Common Source Code Projectを更新しました。
Intel 8251のRTS信号をサポートしました。

ePC-8801/mkII/MA, eX1/twin/turbo/turboZを更新しました。
JAST SOUNDをサポートしました。ああーん。

ePC-9801/E/U/VF/VM/VX/RA, ePC-98XA/XL/RL/DOを更新しました。
RS-232C接続のMIDI音源をサポートしました。

2022/7/3
Common Source Code Projectを更新しました。
東芝のZ80+Z80CTC+Z80SIO+Z80PIO複合チップ、TMPZ84C015をサポートしました。
MIDIポートデバイスやアナログ入力のスピーカデバイスをサポートしました

ESP企画 TRNジュニアのエミュレータ、eTRNJuniorをリリースしました。
トランジスタ技術SPECIAL No.29 特集 マイコン独習Z80完全マニュアルで制作されたワンボードマイコンです。

2022/7/1
MS-DOS Playerを更新しました。
シリアル通信周りの改良を行いました。

2022/6/8
Computer Research CRC-80エミュレータのeCRC-80をリリースしました。

2022/5/29
Emu23を更新しました。
疑似ROMフォントを内蔵しました。現在のところ、JISのみの対応です。

2022/5/28
Common Source Code Projectを更新しました。
MB8877について、ディスクが交換されたことを取得する関数を追加しました。
Z80CTCについて、外部クロックがCPUの1クロックの整数倍でない場合の精度を向上しました。

Emu23を更新しました。
安定性の向上を図ってみました。
その他、色々調査で分かった内容を反映しています。

2022/5/25
Common Source Code Projectを更新しました。
MB8877でレディー信号を出力できるようにしました。
Z80CTCで、タイマーイベントが突き抜けて、カウンタがマイナスになり得る問題を修正しました。
Z80SIOの受信割り込みを修正しました。YAT様のパッチを取り込んでいます。多謝多謝。
キーボードのLEDなど、任意のインジケータをステータスバーに表示できるようにしました。

SORD M23エミュレータのEmu23をリリースしました。

eMYCOMZ-80Aを更新しました。
動作確認できていませんが、フロッピードライブをサポートしてみました。
また従来より公開していた取扱説明書に、回路図のページのスキャンを追加しました。

2022/5/7
Common Source Code Projectを更新しました。
i8080/i8085の割り込み処理を修正しました。
HALT中に割り込みが発生して、割り込みベクタとしてCALL/RST命令が発行されたときに、
PCの値がインクリメントされないままPUSHされるケースがありました。

東芝 EX-80BSエミュレータのeEX-80BSをリリースしました。
従来のeEX-80はeEX-80BSに統合される形になります。

2022/4/9
Common Source Code Projectを更新しました。
内蔵デバッガで、CMT/FD/QD/HDをマウント・アンマウントするコマンドをサポートしました。
また、VC++2019でビルドしたときのワーニングを修正しました。(多謝>Meister氏)

ePC-8801MAを更新しました。
2HDアクセス時に、アクセスランプを緑色で表示するようにしました。

eSMC-70/777を更新しました。
ジョイスティックポートやグラフィック画面の描画処理を修正しました。
うちのタマ知りませんかが動くようになっています。

2022/4/5
Common Source Code Projectを更新しました。
ステータスバー上のFDDのアクセスランプの色を変更する仕組みをいれました。
Z80DMAでEnable After RETIコマンドをサポートしたのと、
WR3を変更したときにInt on Readyで割り込みが掛かるように修正しました。
スリープ復帰などでDirect3D9のデバイスがロストした場合に再初期化するようにしました。
X1センターの佐藤様のパッチを取り込ませていただきました、多謝多謝です。
また内蔵デバッガについても、save/load_stateコマンドやTelnet接続のサポートをしています。

eX1/twin/turbo/Zを更新しました。
X1turboで2HDアクセス時に、アクセスランプを緑色で表示するようにしました。
またX1/twinで、画面が下に2ドットずれて表示される問題を修正しました。
サウンド生成周波数に、48000Hzの代わりに62500Hzを指定できるようにしました。

CASIO FX-9000PエミュレータのeFX-9000Pをリリースしました。
2008年に実機を入手していたのですが、ようやく実装することが出来ました。

3年ぶりの国際ロボット展が終わって、ようやくちょっと作業を進められました。

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