2017年の総括

全ての国産PCのエミュレータを開発しようと始めたこの活動も、今年で14年目となりました。
また総括を書く日が来たんだなーと、紅白を聴きながらしみじみと感じます。

早いもので、この春には上の娘が小学校、下の娘が幼稚園です。
上の娘が通っている幼稚園が最近大人気で、入園の可否が抽選になってしまったのですが。
かみさんが何とか当たりくじを引いて、下の娘も同じ幼稚園に通えることになって一安心です。
秋には上の娘が数えで7歳、下の娘が実年齢で3歳ということで、まとめて七五三もやりました。

今年は新ネタとして、TK-85、JR-800、YIS、X1turboZ、PC-9801VXをリリースしました。
単純に機種名でカウントして、これで95機種ですね。
年末にFM-16βをリリースするために頑張ってみましたが、間に合いませんでした(苦笑)
来年には100機種いきたいところですが、はてさて。

今年の最大のトピックは、やっぱりYISをリリースできたことですね。
守谷さんのブログで、突然YISの写真集が公開されたのも記憶に新しいですが、
実はその前年にヤフオクでジャンク品を落札して、守谷さんに調査のため預かって頂いてました。
その後、守谷さんの伝手で、ヤマハ株式会社様に資料提供等、多大なご協力を頂きまして、
無事エミュレータをリリースすることができました。
日本のパソコン史でも重要な機種ですので、本件に関わることができて感無量でした。
これまで、各メーカ様の御黙認の上でエミュレータの開発を続けてきましたが、
メーカ様からこれ程のご協力を頂くのは初めてで、その意味でも感無量です。
長年この活動を続けてきて、本当に良かったです。

今年の技術的なトピックは、MS-DOS PlayerのPC/AT仮想マシンとしての再現性向上でしょうか。
マドリード工科大学のPedro Pablo Lopez Rodriguez教授が教育用に開発された、
SO1というオペレーションシステムが動作するように、BIOSやI/Oに随分と手を入れました。
また、金野様にご協力いただいて、VZエディタの動作についても改善することができました。

X1turboZについても、X1センターの佐藤様から度々詳細なレポートを頂きまして、
かなり細かいところまで再現性を向上することができました。
PC-8801MAも、某スレッドで不具合情報を頂いて、幾らか改良を進めることができました。
やっぱり、使い込んでくださる方がいらっしゃると、開発側としても本当に助かります。

2018年ですが、まずはFM-16βを最優先で作業を進めたいと思います。
その後は、作業中のままになっているハイレゾ98辺りを進める感じでしょうか。
ブログの方でコメントを頂いている件も、できるだけ順次進めていきたいところです。
(お待たせしてしまって申し訳ありません)
Artane.さんとのソースの統合も進めていかないといけませんね。

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



2017/12/27
Common Source Code Projectを更新しました。
T98-NEXTのnfd r0形式やBKDSK形式のディスクイメージをサポートしました。
ステートセーブを読み込んだ際に、サウンド周波数や遅延の設定を復元するようにしました。
既存のステートセーブは、すべて読み込めなくなりますのでご注意ください。

2017/12/15
Common Source Code Projectを更新しました。
YM2151のステートセーブで、Timerの情報が保存されない不具合を修正しました。
また各機種で、ステートセーブのファイルの互換性チェックを強化しました。
既存のステートセーブは、すべて読み込めなくなりますのでご注意ください。

2017/12/14
Common Source Code Projectを更新しました。
HD46505のR0-R9, uPD7220のSYNCの設定を変更した際に、
強制的にイベントマネージャのタイミングを更新するようにしました。
デバッガで、現在のスキャンラインが開始してからのクロック数を表示するようにしました。

eX1, eX1twin, eX1turboを更新しました。
高速PCGモード時のPCGやアナログパレットのアクセスウェイトを再修正しました。

2017/12/12
Common Source Code Projectを更新しました。
ディスクのIDおよびデータフィールドのCRCの計算方法を修正しました。

eX1, eX1twin, eX1turboを更新しました。
高速PCGモード時のPCGやアナログパレットのアクセスウェイトを修正しました。
また、各ラインの描画のタイミングを修正しました。

2017/12/3
Common Source Code Projectを更新しました。
uPD765AのREAD DIAGNOSTICコマンドを修正しました。
詳細は、ePC-8801MAのページをご参照ください。

2017/11/28
Common Source Code Projectを更新しました。
デバッガの改良の続きです。
UTコマンドで逆アセンブルするステップの範囲が間違っていたのを修正しました。
一通りのCPUで、消費クロック数の表示とUTコマンドに対応しました。
MC6800で、tap/cli/seiの次の命令でbreakできない不具合を修正しました。
MCS48, Z80で、割り込み処理に消費したクロック数が、ブレーク時に表示される、
CPUが開始してからのクロック数に加算されていなかったのを修正しました。

2017/11/26
ePC-8001mkIISR, ePC-8801MA, ePC-98DOを更新しました。
PC-8001/PC-8801のテキスト画面の描画処理を修正しました。

2017/11/25
Common Source Code Projectを更新しました。
主に、デバッガを改良しました。
詳細は、eX1, eX1twin, eX1turboのページをご参照ください。

ePC-8001mkIISR, ePC-8801MA, ePC-98DOを更新しました。
PC-8001/PC-8801のテキスト画面の描画処理を修正しました。
その他、PC8801MA改で修正して頂いた内容を一部取り込みました。

eX1, eX1twin, eX1turboを更新しました。
X1センターの佐藤様より頂いたパッチを取り込みました。

2017/10/26
MS-DOS Playerを更新しました。
INT 21h, AH=0Fh/14h/15h/16h/17h/21h/22h/23h/24h/27h/28hを修正しました。
FCBを使用したファイル操作関係のサービスです。
◆N2583ZYOB6様から頂いたパッチを取り込んでいます、多謝多謝です。

2017/9/3
MS-DOS Playerを更新しました。
INT 15h, AX=E820h/E881hをサポートしました。
INT 15h, AH=89hを、最新のDOSBoxのソースを元に修正しました。

2017/8/28
MS-DOS Playerを更新しました。
INT 67h, AX=DE00h-DE0Chをサポートしました。
INT 21h, AH=56hを修正しました。

2017/8/27
MS-DOS Playerを更新しました。
Windows 2000において、フォントサイズの変更を正しく動作するようにしました。

2017/8/26
MS-DOS Playerを更新しました。
Windows 10の拡張されたコマンドプロンプト上で動作するように修正しました。

2017/8/25-2
MS-DOS Playerのバイナリを差し替えました。
カーソルのサイズの算出方法を修正しています。
00:30〜02:50にダウンロードされた方は、再ダウンロードをお願いいたします。

2017/8/25
MS-DOS Playerを更新しました。
INT 16h, AH=09h/0Ahをサポートしました。
INT 16h, AH=11hを修正しました。
キー入力を取得しますが、キーバッファからは削除されないようにしています。
CRTCのI/Oで、R10とR11の値を操作することで、カーソルのサイズや表示・非表示を
変更できるようにしました。

2017/8/24
MS-DOS Playerを更新しました。
INT 15h, AH=C2hで設定する、PS/2マウスのハンドラの呼び出し方を修正しました。
CRTCのI/Oを操作して、BIOSが管理しているカーソル位置とは別の位置に、
コンソール上のカーソルの表示位置を変更した際、INT 21hなどで文字を表示すると、
正しい位置に表示されない可能性がある問題を修正しました。

2017/8/23
MS-DOS Playerを更新しました。
CRTCのI/Oを一部実装しました。
CPUの例外、ハードウェア割り込み、PC BIOS、MS-DOSの各サービスなどに予約されている
割り込み番号について、割り込み先をIRET命令でないようにしました。
INT 21h, AH=4Ehを修正しました。
INT 10h, AX=1100h/1110hをサポートしました。
内蔵デバッガの細かい不具合を修正しました。

2017/8/21
MS-DOS Playerを更新しました。
キーボード周りを更に修正しました。
INT 10h, AH=11hを修正しました。

2017/8/20
MS-DOS Playerを更新しました。
INT 10h, AX=1101h/1102h/1104h/1111h/1112h/1114hを修正しました。
先の更新で、キーバッファが空でない場合に、IRQ1を発生するように修正した件について、
キーバッファに入らないキー入力の場合に、割り込みが発生しなくなっていたのを修正しました。

2017/8/12
Common Source Code Projectを更新しました。
デバッガを小修整しました。

ePC-8001mkIISR, ePC-8801MA, ePC-98DOを更新しました。
PC-8001/PC-8801のテキスト画面の描画処理を修正しました。

MS-DOS Playerを更新しました。
キーバッファの処理を改良しました。

2017/8/11
MS-DOS Playerを更新しました。
今更ながら、CPUのHALT命令をサポートしました。
INT 10h, AH=0Ehを修正しました。
INT 15h, AX=C200h-C209hをサポートしました。

2017/8/10
Common Source Code Projectを更新しました。
デバッガの安定性向上を図りました。
また、カナキーをローマ字変換で入力する機能を改良しました。
シフトキー+ファンクションキーを入力できるようにしています。

ePC-8001mkIISR, ePC-8801MA, ePC-98DOを更新しました。
白黒モード時のグラフィック画面の描画処理を修正しました。

PC-9801VXエミュレータのePC-9801VXをリリースしました。
将来のハイレゾ機実装のための、ITFとEGCの実装テスト用です。

2017/8/9
MS-DOS Playerを更新しました。
キー入力の有無のチェックの処理を、短期間に繰り返し実行している場合のウェイトを、
Sleep(10)から_mm_pause()に変更しました。

2017/8/4
MS-DOS Playerのページに、前回の更新について追記しました。

2017/7/27
MS-DOS Playerを更新しました。
Win32/64のプログラムを子プロセスとして起動できるようにしました。
MS-DOS PlayerでCOMMAND.COMを実行して、その上でWin32のコンソールアプリを
シームレスに使用できるようになっているかと思います。

2017/7/24
MS-DOS Playerを更新しました。
BIOSデータアリア内のキーボードバッファを更新するようにしました。
Shift+F8〜F10、Ctrl+F1を入力できない不具合を修正しました。
その他、INT 29hやINT 21h/2Fhの入力待ちなどの安全対策などを施しています。

2017/7/14
MS-DOS Playerを更新しました。
INT 21h/2Fhのサービスによって、コンソールに文字を表示する際に、
INT 29hの処理がフックされている場合は、INT 29hを経由するように修正しました。

2017/7/12
MS-DOS Playerを更新しました。
DOS内部、またはEMSやマウスBIOSのマイナーなサービスをサポートしています。

2017/7/7
MS-DOS Playerを更新しました。
主に、サポートされていないファンクションに関する処理を修正しています。

2017/7/4
MS-DOS Playerを更新しました。
INT 21h, AH=59hを修正しました。
BXの値が0000hであることをチェックするようにしました。
INT 21h, AX=5D0Ahを実行していない場合は、AX, BH, BL, CHの値のみ更新するようにしました。

2017/7/1
MS-DOS Playerを更新しました。
COMモデルのプログラムで、CALL 5でファンクションコールする仕組みをサポートしました。

2017/6/22
Common Source Code Projectを更新しました。
カナキーをローマ字変換で入力する機能をサポートしました。
メニューのControl - Romaji to Kanaか、アプリケーションキーで有効・無効を切り替えます。
また、Alt+Ctrl+Enterで、フルスピード動作の有効・無効を切り替えられるようにしました。

uPD765Aのドライブステータスを正しく取得できない不具合を修正しました。
YM2203に対して、YM2608のレジスタを操作したときの処理を修正しました。
i86/i286コアに、MAME 0.150〜0.185の変更を反映しました。

ePC-8001mkIISR, ePC-8801MA, ePC-98DOを更新しました。
RPE避難所で配布されている、ePC-8801MAの改造版の修正を取り込みました。

2017/6/16
MS-DOS Playerを更新しました。
今回も、あまり使われなさそうなサービスの追加や修正を行いました。
細かいコード整理も行っています。

2017/6/9
MS-DOS Playerを更新しました。
更に、あまり使われなさそうなサービスの追加を行いました。

2017/6/7
MS-DOS Playerを更新しました。
例によって、あまり使われなさそうなサービスの追加を行いました。

2017/5/31
MS-DOS Playerを更新しました。
i86/i286コアに、MAME 0.150〜0.185の変更を反映しました。
その他、あまり使われなさそうなサービスの追加、修正を行っています。

2017/5/28
Common Source Code Projectを更新しました。
フルスピードでエミュレーションを実行する機能を追加しました。
このとき、画面については仮想マシン内時間で1秒に1回更新されます。
i386コアを、MAME 0.185相当にアップデートしました。

MS-DOS Playerを更新しました。
i386コアの修正漏れがありました。
これで最新のMAME 0.185相当になっているかと思います。

2017/5/26
MS-DOS Playerを更新しました。
Drive Parameter Block関係の処理を修正しました。
INT 67h, AH=4Fhを修正しました。
キーバッファの処理を改良しました。
i386コアを、MAME 0.184相当にアップデートしました。

2017/5/24
MS-DOS Playerを更新しました。
i386コアがおかしくなっていたのを修正しました。
CPUリセット後に、0040:0067に指定されたアドレスにジャンプするように修正しました。
INT 10h, AH=0Ch/0Dhをサポートしました。

2017/5/20
eX1turboZを更新しました。
ハイレゾ80桁のとき、多色モードでなくても多色パレットで画面を描画するよう修正しました。

eYISを更新しました。
PU-1-20のグラフィックコマンドをサポートしました。

2017/5/17
eX1turboZを更新しました。
4096色モードや、64色モード2画面の重ね合わせなどを修正しました。

X1センターの佐藤様に検証用プログラムを作成いただきました。
いつもありがとうございます。

2017/5/15
X1turboZエミュレータのeX1turboZをリリースしました。
よろしければ、64色/4096色モードの確認をしていただけますと、大変助かります。

X1turboZの多色モード周りの情報は、X1センターの佐藤様に教えて頂きました。
まことにありがとうございます。

2017/5/13
YISエミュレータのeYISをリリースしました。
ご協力いただきましたヤマハ株式会社様と守谷様に感謝を。

Common Source Code Projectを更新しました。
専ら、YIS絡みの新規デバイスの追加を行っています。
また、eFM77AVなどで、無駄にウィンドウをセンタリングしていたのを修正しました。

2017/4/16
Common Source Code Projectを更新しました。
幾つかの機種でサウンド周りの不具合のご報告をいただきましたので、
取り急ぎIOおよびSN76489ANの修正を元に戻したバイナリをリリースします。

2017/4/15
Common Source Code Projectを更新しました。
デバッガにおいて、ブレークした原因が正しく表示されない不具合を修正しました。
また、SN76489のI/Oウェイトをサポートしました。

EmuZ-700, EmuZ-800, EmuZ-1500を更新しました。
CPUクロックおよび垂直同期周波数を、より正確な値に修正しました。

2017/4/2
Common Source Code Projectを更新しました。
主に、仮想マシン側の設定と、ホスト側の設定に分けて整理しています。
また、ステートセーブを10個まで保存できるようにしました。
カテゴリ毎にサブメニューに纏めることで、これまでよりすっきりしているかと思います。

eEX-80を更新しました。
TV画面の表示を消すことができるようにしました。

2017/3/30
Common Source Code Projectを更新しました。
HuC6820, i8080, MCS48のデバッガにおいて、シンボルに対応しました。
M6502のデバッガを追加しました。
また、_UNICODEの場合のビルドエラーを多数修正しました。
その関係で、COMMONにchar, wchar_t, _TCHARの相互変換用の関数を追加しています。

eFamilyBASICを更新しました。
デバッガーに対応しました。
eBabbage-2nd, eYS-6464Aを更新しました。
デバッガおよびステートセーブに対応しました。

2017/3/28
Common Source Code Projectを更新しました。
MC6800, MC6809, TMS9995, uPD7801, Z80のデバッガにおいて、シンボルに対応しました。
Kei Moroboshi様よりご提供いただいたパッチを、多少整理して取り込ませて頂きました。
多謝多謝です、HuC6280の対応はまた後日にでも。

シンボル対応の詳細については、ePyutaの記事をご参照ください。

2017/3/26
eFamilyBASICを更新しました。
牧村製作所様のMMC5/VRC7 BASICをサポートしました。

Common Source Code Projectを更新しました。
eFamilyBASIC用に、YM2413のミュート信号を追加しています。

2017/3/20
Common Source Code Projectを更新しました。
zlibを組み込んで、gzip形式の読み込みをサポートしました。
現状では、データレコーダおよびCD-ROMのイメージの読み込みでのみ使用できます。
データレコーダでT77形式のセーブをサポートしました。
ステータスバーのチラつきを抑制するため、更新周期を下げました。

eBASICMasterJrを更新しました。
テープレコーダの音が再生されない不具合を修正しました。

eFM8, eFM7, eFM77を更新しました。
320KB/1MBのFDDの接続を指定するメニューを追加しました。(ご指摘多謝>Artane.様)

2017/3/18
Common Source Code Projectを更新しました。
TK-80BS用に、テープレコーダを複数サポートできるようにしました。

eBASICMasterJrを更新しました。
テープレコーダをサポートしました。

eTK-80BSを更新しました。
TK-80仕様のテープレコーダをサポートしました。

2017/3/15
Common Source Code Projectを更新しました。
ウィンドウにステータスバーを追加しました。
ドライブのアクセスランプや、CMTの動作状況の表示用です。
従来クライアント領域の右下に表示していたアクセスランプは廃止しています。

eHC-20を更新しました。
TF-20のCPUのデバッグが出来ない不具合を修正しました。

JR-800エミュレータのeJR-800をリリースしました。
PockEmulのJR-800ドライバを参考にしています。

2017/3/12
Common Source Code Projectを更新しました。
CMTの早送りの音が止まらない場合がある不具合を修正しました。

2017/3/11
Common Source Code Projectを更新しました。
機械的なノイズを再生する機能をサポートしました。

エミュレータの実行ファイルと同じディレクトリにある、
FDDのシーク(FDDSEEK.WAV)、ヘッドの上げ下げ(HEADUP/HEADDOWN.WAV)、
CMTのリレーのオン・オフ(RELAY_ON/RELAYOFF.WAV)、早送り(FAST_FWD.WAV)、
の各WAVファイルが再生されます。
ボリューム調整は、FDDとCMTのそれぞれの音を一括で変更します。

EmuZ-80B, EmuZ-2200を更新しました。
Suga様から頂いた、VGATE信号のパッチを取り込みました。

2017/3/8
Common Source Code Projectを更新しました。
yayaMSX1, yayaMSX2, ePX-7を更新しました。
MSX2+, HX-20, FS-A1エミュレータのyayaMSX2+, yayaHX-20+, yayaFS-A1をリリースしました。
umaiboux様から頂いたパッチを取り込んでいます。

eFMR-30を更新しました。
8086と80286のバイナリをビルドするようにしました。

2017/3/7
Common Source Code Projectを更新しました。
Artane.様の更新の取り込みの続きとして、各マシン固有デバイスのデバイス名を追加しました。
また、シフト+Caps Lock/ひらがな/全角キーを検出できるよう修正しました。

EmuZ-80B, EmuZ-2200を更新しました。
Suga様から頂いた、PIO-3039のパッチを取り込みました。

2017/3/4
Common Source Code Projectを更新しました。
また、eFM8, eFM7, eFM77, eFM77AV, eFM77AV40, eFM77AV40EXを更新しました。
Artane.様の最近の更新を取り込んでいます。

2017/3/1
Common Source Code Projectを更新しました。
デバッガに<コマンドを追加しました。
ファイルから複数のコマンドを読み込んで実行することができます。
また、ウイルスの誤検出対策として、今回からビルド環境をVC++2008に戻しています。

eX1, eX1twin, eX1turboを更新しました。
X1センターの佐藤様より頂いたパッチを取り込みました。

MS-DOS Playerを更新しました。
"COMMAND.COM /C (program)"を起動する際の、パイプのチェックの処理について、
"<", ">"だけでなく、"0<", "1>", "2>"もチェックするように修正しました。
また、-iオプションを指定したときの、不正なオペコードを無視する処理を改良しました。

2017/2/28
MS-DOS Playerを更新しました。
子プロセスとして、"COMMAND.COM /C (program)"を起動する際の処理を修正しました。
また、プリンタポートやシリアルポートの微修正を行いました。

2017/2/26
MS-DOS Playerを更新しました。
プリンタポートをサポートしました。
シリアルポートをファイルとして開く機能をサポートしました。

2017/2/23
MS-DOS Playerを更新しました。
キーが押されたときにBIOSデータエリア内のカーソル位置の情報を更新したり、
マルチバイト文字を考慮してバックスペースキーを処理するように修正しています。

2017/2/22
MS-DOS Playerを更新しました。
文字ま・文字列入力のDOSサービスを改良して、待機中もCPUを回すようにしました。
タイマ割り込みの動作が改善しています。
また、DR-ROSのCOMMAND.COMが起動するようになりました。
18:00にアーカイブを更新しましたので、必要に応じて再ダウンロードをお願いいたします。

2017/2/21
MS-DOS Playerを更新しました。
バックスペースキーやエスケープキー、マウスBIOS周りを修正しています。

2017/2/18
MS-DOS Playerを更新しました。
藤田様から頂いたパッチを取り込んだり、Ctrl-Break/Cの処理を改良したり、
メモリ管理を修正したり、自分用に内蔵デバッガを追加したり、色々です。

2017/2/9
Common Source Code Projectを更新しました。
ワンボードマイコンのボタンに画像を貼りつけられるように改良しました。

TK-85エミュレータのeTK-85をリリースしました。
また、eBabbage-2nd, eEX-80, eSM-B-80TE, eTK-80BS, eYS-6464Aを更新しました。

2017/2/2
MS-DOS Playerを更新しました。
COMMAND.COM上でエラーメッセージを表示できるように修正しました。
int 67h, AH=57h(EMS転送)を修正しました。
その他、環境変数の読み込みやリソース開放など、細々とした修正をしています。

2017/1/31
MS-DOS Playerを更新しました。
主にEMS周りの修正をしています。
また、ビルド環境をVC++2013からVC++2008に戻しました。

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

MS-DOS Playerを更新しました。
Windows XP向けにリビルドしました。