作りたいものに妥協しないために、会社を興してまで完成させた作品です。うれろー、うれろー。

2011年02月16日

X1のキーボード周り

例によって更にX1twinの作業中です。

110216-1.png110216-2.png

主にザナドゥ向けにキー入力周りの修正を行いました。
加速ジャンプとかSHIFT移動とか出来るようになったのは、X1エミュレータとして
それなりに売りになるかなと思います。

SHIFT移動は、SHIFTキーを押しながらテンキーで操作するのですが、
Windows上でこのキーの組み合わせをすると、勝手にSHIFTキーをリリースして
カーソルキーが押された扱いになってしまいまして(苦笑)
SHIFTのリリースとカーソルのプレスが連続してやってきたら、仮想マシン側で
SHIFT+テンキーとして解釈するようにしてますが、誤判定が怖いですね。

その他、FM音源ボードのサポートをしています。
元々がエイプリルフールの一発ネタでしたし、これまでX1twinの仕様にない機能は
避けていたのですが、この際だから実用的なX1エミュレータ路線でいこうかなと。
取り敢えずEMMとデータレコーダの実装はやるつもりです。

#Turbo/Zのサポートはどうしようかなあ。
posted by 武田 at 23:41| Comment(2) | TrackBack(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2011年02月01日

テープの波形補正のお話

最近、パソピアおよびパソピア7のカセットテープを多数入手しました。
PCに取り込んで動作確認してみましたが、ものの見事に全滅しまして(苦笑)
ということで、先の週末から波形の補正を試みています。

以前にも同様の記事を投稿していますが、今回はもう少し詳細を紹介してみます。


パソピアおよび7では、データを音声化する際にあたって、1200Hzの幅の広いパルスで1を、
2400Hzの幅の狭いパルスで0を表現します。
1バイトのデータは、スタートビットとして頭に0を、ストップビットとしてお尻に1を付けて、
間に最下位ビットから順にパルスを出力します。
例えば55hは、0101010101となりますので、以下のような波形が出力されます。
黄色の部分がスタートビット、水色の部分がストップビットです。

110201-1.png

wave形式でサンプリングした波形を、C++で作成したツールで解析します。
まず、ボリュームが−側から+側に変化したところから、次に同様に変化するところまでを
1パルスとして、+側、−側のサンプル数をそれぞれ記録します。

48KHzで録音すると、幅の広いパルスは40サンプル、幅の狭いパルスは20サンプルとなります。
従って、例えば+側のサンプル数が20前後、パルス全体のサンプル数が40前後の場合は
幅の広いパルスとする、といった感じで判定しますが、実際にはノイズやテープの伸び縮み等の
影響で波形が乱れていますので、何かしらの補正が必要となります。

現在のツールでは、以下の補正をしています。

サンプル数が極端に短いパルスは、前後のパルスが半端に短かい場合は、そちらと結合して
1つの基準以内の長さのパルスとします。
(1つ前のパルスの−側か、1つ後のパルスの+側か、サンプル数が半端に短い方に結合します)

サンプル数が半端に長いパルスで、前後に半端に短いパルスがある場合、半端なサンプルを
そちらに移動することで、双方を基準以内の長さのパルスとします。
(+側の半端なサンプルについては、1つ前のパルスの−側が半端に短い場合に移動します。
同様に、−側の半端なサンプルは、1つ後の波形の+側に移動します)

ある1つのパルスで、+側のサンプル数、−側のサンプル数、全体のサンプル数のすべてが
基準以内の場合、そのパルスは完全なパルスと判定します。
そして、前後のパルスが完全な場合、間のパルスは通常より緩い基準で判定します。

補正後に、結果をテキストとして出力します。
長いパルスはw、短いパルスはNとします。
基準に収まらないパルスは、例えば(12345)[20,20|17,3|10,10]などと出力します。
()内の数字は、wavファイルで何サンプル目からのパルスかを示します。
[]内の数字は、前のパルス|このパルス|後のパルスの、+側,−側のサンプル数です。

ただし、前後のパルスのサンプル数については、完全なパルスの場合は、20,20または10,10と
理論サンプル数で出力します。
これは、典型的な波形の乱れを、テキストエディタ上で一括変換するときに便利だからです。

110201-2.png

後は、基準に収まらなかったパルスを、テキストエディタ上でひたすら手動で修正していきます。

例えば、[20,20|25,15|20,20]のように、完全なパルスに挟まれており、そのパルス自体も、
基準のサンプル数に収まらなかっただけで、明らかに幅が広いパルスだろう、みたいなのは、
テキストエディタ上で一括変換して一気に修正してやります。

また、(1000)[20,20|21,8|2,9](1040)[21,8|2,9|20,20]のように、2つのパルスが
連続して基準に収まらなかったとします。
この場合、21,(8+2+9=19)という1つのパルスの−側の部分が、ノイズによって一瞬+側に
振れてしまって、2つのパルスに泣き別れになったと考えられます。
このような波形の乱れは、サンプル数だけを見れば、大体は判断が可能です。

(泣き別れたパルスが極端に短い場合は、先述の通り自動的に補正します)

短いパルスが多数連続して出現した場合は、サンプル数だけでは判断が困難です。
このような場合は、実際の波形を見て判断します。
そのパルスが、wave内の何番目のサンプルから始まるかは、()内の数字で判りますので、
VB6で作成したツールを使用して、Excel上で折れ線グラフとして波形を表示してやります。

まず、波形が乱れている部分が1バイトの表現のどの部分で、何個のパルスに相当するのかを、
前後の一連のデータから判断します。例えば、次のようなデータがあったとします。

NNwNwwNwwNNNwwNwwwNwNNNNNNwNNN(ここが乱れている)wNwNNNNNwNNw

前後の10バイト程度を見てやれば、スタートビット、ストップビットがどれか判りますので、
1バイトずつ改行していきます。

NNwNwwNww
NNNwwNwww
NwNNNNNNw
NNN???wNw
NNNNNwNNw

これで、波形が乱れている部分は3パルスに相当することが判りました。
後は波形と、乱れている部分の全体の長さから、失われたパルスを判断します。
経験的に、1つのパルスの波長はあまり壊れません。
ボリュームが極端に小さくなってしまって、+側のピーク値が+の値にならなかったり、
その逆になったりはしますが、山谷の形の痕跡は残っている場合が多いです。


パルスの幅が広いか狭いかの基準値は、非常にデリケートな調整が必要です。
必要に応じて、テープ毎にそれぞれ微調整しています。
基準を厳しくしすぎると、基準に収まらず、手動で修正する必要のあるパルスが増えます。
基準を緩くしすぎると、波形を誤判定してしまう可能性が高くなります。

一番困るのが、連続した2つの幅の狭いパルスを、1つの幅の広いパルスと判定したり、
その逆の判定をしたりして、1ビットが失われたり増えたりすることです。

1バイトは10パルスで表現されており、頭とお尻にNとwが必ず付きますので、エディタを
10の倍数桁(例えば80桁)にすると、スタートビット、ストップビットのところで、
縦にNとwがずらっと並ぶことになります。
これが途中でずれたりすると、そこで1ビットずれていることが判ります。

110201-3.png

1ビット失われている、また増えている1バイトを特定したら、その前後の波形を確認します。
誤判定した場合、()で開始位置が表示されないため、近傍の基準外のパルスの開始位置から
波形を探す必要があります。この辺は改良の余地ありですね。

グラフをキャプチャして、ペイント上に貼り付けます。
明確に判断できるパルスを描き込んでいくと、怪しい部分が見えてきます。

110201-4.png

黄色がスタートビット、水色がストップビットとして、白い部分の幅の広いパルスを、
2つの幅の狭いパルスだと誤判定していたことが判ります。
波形がかなり乱れていますが、山谷の形は残っていますので、本当は幅の広いパルスだったと
いうことはかろうじて確認できます。
(その1つ前のパルスも、自動補正のおかげで正しく判定されてはいますが、実際の波形では
−側の一部が+側に振れてしまっていますね)


こんな感じでちまちまと修正していって、全部修正できたら、テキストデータをwave形式なり、
私のエミュレータのテープイメージであるcas形式に変換します。

後はエミュレータ上でロードできれば良し。
エラーになった場合は、修正ミスやビットがずれないような誤判定なりがあったのでしょう。
その場合、エミュレータ上でどこまでテープイメージを読み込んだかを確認して、その周辺だけ
より厳しい条件で再変換して修正し直すことになるでしょうか。

ざっくり、1本のテープの修正に2〜3日くらい掛かりそうな感じです。
他の開発もありますし、まあ気長にぼちぼち進めます。


余談ですが、私の経験上、パソピアのカセットは、他の機種より波形の劣化が酷いようです。
他の機種に比べて、データレコーダ、または本体側の出力部分のアナログ回路の品質が
いまいちだったんじゃないかなあと思います。

マルチ8なんかだと、長いパルス×2、または短いパルス×4と、複数のパルスの組み合わせで
で1ビットを表現しますので、仮に波形の乱れがあっても補正が簡単なんですが。
そんなことしなくても、結構きれいな波形なんですよね(苦笑)
posted by 武田 at 01:07| Comment(0) | TrackBack(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2011年01月26日

更にX1の作業中

更にX1TWINの作業中です。
ご協力多謝です>Y.S.さん

110126-1.png

ウィバーンでPCGの定義に失敗する問題を修正しました。
元々X1のPCG定義はかなりトリッキーで、今現在CRTCがアクセスしているPCGに
データを登録するようになってます。
どのPCGに出力されるかは、垂直帰線期間に入ってからの時間に依存するので、
タイミング調整を厳密にやってやる必要があるのですが、今回の修正では
R/G/Bのデータを出来るだけ同じPCGに出力されるような仕組みを入れています。

110126-2.png

DAIVAでキー入力が出来ない不具合を修正しました。
サブCPUが前のコマンドを実行して、キー割り込みが発生する前に、
もう次のコマンドが発行されていたのが原因でした。
取り敢えずコマンドの実行直後に割り込みを発生するように修正しています。

PC Engine側もガンヘッドが動かない問題が残ってますし、何とかしたいですね。
posted by 武田 at 23:36| Comment(7) | TrackBack(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2011年01月20日

X1のサブCPUや画面周りの修正中

X1twin向けに、X1部分のサブCPUや画面周りを弄ってます。

110120-1.png
縦2倍モードの対応の修正や、

110120-2.png
PCGの定義周りの修正を行いました。

サブCPU周りでは、直前に実行したコマンドのリザルトを全て送信し終わって、
それらがZ80に読み込まれてOBFが立つまで、キー割り込みを発生しないようにするとか、
全て読み込まれる前に次のコマンドが発行された場合に、強制的にOBFを立ててやるとか、
そういった辺りの修正中です。

色々変わってますので、ソフトによっては却って動かなくなっているかもしれません。
取り敢えず正式リリース前に以下にアップしておきますので、よろしければお試しください。
何か問題がありましたらご連絡頂けますと幸いです。

http://homepage3.nifty.com/takeda-toshiya/x1twin.zip

(2011/1/21 1:30追記) 一部修正して再アップしました。
(2011/1/21 22:15追記) 正式リリースしたので、上記アーカイブを削除しました。
(2011/1/25 22:30追記) サブCPUの修正テスト版を仮アップしました。
posted by 武田 at 23:17| Comment(6) | TrackBack(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2011年01月16日

MZ-2500とかX1とかの画面周り

ここ数日、2chの某スレで指摘されていた、MZ-2500やX1の画面周りの修正をやってました。

110116-1.png
X1のゼビウスがちゃんと動作するようになったのが、一番の目玉でしょうか。
(修正は一番簡単だったんですけどね)
CRTCで、1文字のラスタ数を4に、1画面の表示行数を50行にするといった、
変態設定をしたときの画面生成を修正しています。

この辺、MULTI8とかPASOPIAとかの、同じCRTCを使った機種にも横展開しないと
いけないんだろうけど、そっちでこんな変態的な使い方をしているソフトが
ある訳でもないだろうしなーと。
いっそ描画アドレスの生成処理も、全部CRTC側でやってしまおうかと思案中です。


MZ-2500では、画面のスクロールレジスタやマスク関係の機能を修正しています。
自分では持ってないので判らないのですが、店頭デモで、地球が割れてしまったり、
画面マスクが機能してなくて描画中の状態が丸見えになったり、といった問題が
修正されているみたいです。

まだエミュレータを開発し始めたばかりの頃のコードがいっぱい残っていて、
今見ると結構無駄な処理があるなあということで、かなり大掛かりに弄ってます。
おかげでdiffをとると、一面まっかっかです。
ただMZ-2500の細かい仕様を忘れてて、なんでそんな無駄なコードになっているか
判らないままに最適化しようとして、後で泣きながら元に戻したりとか(苦笑)
そういえば、MZ-2500の画面周りって複雑怪奇だったなーと色々懐かしんでます。
posted by 武田 at 15:02| Comment(5) | TrackBack(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2011年01月09日

リスト更新

随分以前にここのコメントで頂いた情報を元に、国産マシンリストを更新してみました。

してみましたけど・・・

どうやって入手したらいいの?みたいな機種ばっかり増えちゃって。
ソフィアのコスモターミナルDとか。
いやもう、開発すればするだけ目標が遠のいてく感じです(苦笑)

この活動は皆様のご協力から成り立っております。
当時のユーザの方とか、最近からユーザの方とか、可能ならメーカの中の人とか。
ご協力いただけますと本当に幸いです。


更新ついでにエミュレータ研究室 WEbさんにリンクさせて頂きました。
雑誌は無くなっちゃいましたが、時々紹介して頂いて感謝しております。
月末の新刊も期待しております。
posted by 武田 at 02:22| Comment(9) | TrackBack(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2010年12月31日

2010年の総括

(本サイトからの転載です)

全ての国産PCのエミュレータを開発しようと始めたこの活動も、今年で7年目となりました。
また、unofficial nesterでエミュレータ開発に携わるようになって、丸10年となります。

今年は、コモンソースではMAP-1010, FP-1100, PHC-20, 初代PC-9801, PC-9801E/F/M, FM16πの開発を行いました。
また、QEMU/9821でWin3.1やWin98SEがブートするようになった他、MS-DOS Playerの改良を行いました。
今年から本業が忙しくなり、特に後半はちょっと停滞気味になってしまいましたが、成果としてはまずまずでしょうか。

今年は技術的に目新しいことはありませんが、FP-1100やMAP-1010をリリース出来たのが最大のトピックでしょうか。
まあまあメジャーな機種で、色々解析が行われていたにも係わらず、何故かエミュレータが存在しなかったFP-1100。
存在自体は知られていても、その実態は殆ど知られていなかった、レトロPC界のUMAであるMAP-1010。
数あるホームコンピュータの中で、存在そのものが忘れ去られていた感のあるPHC-20。
いずれも、資料面でご協力いただいたお陰でリリースすることができました。本当にありがとうございます。
また、FM16πやPC-9801Fは個人的に思い入れがあるマシンでしたので、ようやくリリースすることができて感無量です。

また、従来は既にエミュレータが存在する機種は基本的には手を出さなかったのですが、今年から少しずつ着手することにしました。
本来の開発が行き詰っているときに、手を止めてしまわないようにしたいという理由が半分。
将来立ち上げ予定のコンピュータ資料館で、展示の補助に使用するエミュレータを、出来るだけ自作で揃えたいという理由が半分。
今年はPHC-25, ファミリーベーシック, SC-3000, MZ-80K, MZ-1200, MZ-1500をリリースしています。

CP/M PlayerやMS-DOS Playerを含めて、これで45機種となった訳ですが。
この活動を始めてそろそろ長くなってきましたが、残されたネタもいよいよどマイナーになってきましたね(苦笑)
探せば探すだけ、新しい未知のマシンが出てきて、ちっとも終わりが見えなくて。
今年のネタも随分と微妙でしたが、来年以降は資料収集に苦労することになりそうです。

2011年の展望ですが、当面はΛ-1などのワンボードマイコンや黎明期の16bit機を中心に進めていく予定です。
また、QEMU/9821をベースにハイレゾ98のサポートをするつもりです(Ap3+ハイレゾボード?)
その他、国産機種ではありませんが、そろそろQEMU/BeBoxを本格的に始動していきたいと思います。
多分来年中には50機種いくかと思いますが、そのときは何かお祝いをしたいですね。

エミュレータの開発以外に、今年はOSC/Tokyoに春夏の2回参加して、秋はLTでの発表も行いました。
今後は色々な方のご協力が必要となりますので、広報目的も兼ねて、色々顔を出していきたいと思っています。

今年は本業がとにかく多忙でしたが、来年はプライベートで色々ありそうです。
今年一年間、ありがとうございました、また来年もよろしくお付き合いください。



#ということで、毎年恒例の1年の総括記事の更新も終わりましたので、
#後はやっぱり毎年恒例の、ゆく年くる年見ながら年越しコンパイルして、さだまさし。
##年内にもう1機種は流石に無理だった(苦笑)
posted by 武田 at 22:59| Comment(0) | TrackBack(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2010年12月28日

eFM16πリリース

フロッピードライブも動くようになったということでリリースしました。

これで45機種目。
あと5機種で大台ですが、流石に年内は無理でしょうね(苦笑)

101228-4.png
101228-5.png

フロッピーがうまく動いていなかったのは、FDCのIRQ信号の駆動の問題でした。
前のコマンドの実行が完了してIRQが立ち上がって、立ち上がったままだったため、
次のコマンドが完了する前に更に次のコマンドを発行してしまってたようです。

この辺は、デバイス間の信号のやり取りを、敢えてレベルかエッジかを区別せずに
曖昧なままにしていたのが原因です。
FDCから出力されるIRQはエッジのつもりで、8259に直結される分にはIRQにTRUEが
出力されるたびに割り込みが発生するということで問題なかったのですが。
今回の場合は8255に接続されて、その状態をみてポーリングするようになっており、
レベルとして解釈されてしまっていたということになります。

実装の簡易化や高速化に係わる話で、現状の実装を根本的に見直すという方向には
ありませんが、この辺はよく注意しないといけませんね。
posted by 武田 at 23:06| Comment(2) | TrackBack(0) | 開発 | このブログの読者になる | 更新情報をチェックする

続まさかのときのFM16π

FM16πの画面化け、あっさり解決しました(苦笑)

101228-1.png
101228-2.png
101228-3.png

VRAMは78000H-7BFFFHに存在するのですが、そのシャドーが70000H-73FFFH,
74000H-77FFFH,7C000H-7FFFFHにも存在するようで、スクロール時などには
本来のアドレスから食み出たアドレスでアクセスされることがあるようです。

#ファミコンのVRAMのミラー設定を垂直にした感じです>判る人向け

まだディスク周りがちゃんと動かないのですが、近日中にでもリリースします。
posted by 武田 at 00:46| Comment(0) | TrackBack(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2010年12月27日

まさかの時のFM16π

最近はMZ-1500のクイックディスク対応とかIBM JXとかをやってた筈なのですが、
気がついたら、まさかのFM16πが先に動き始めてたでござるの巻。

中学当時、PC-9801F2を購入するまでメインで使用した思い出の愛機でした。
先日ヤフオクでハードウェア・ファームウェア解説書を入手できた成果です。

101227-1.png
101227-2.png

ブートしてCP/Mが起動したところと、メニューを起動したところ。
MSM58321もちゃんと動いているようです。

101227-3.png
101227-4.png
101227-5.png

それぞれJWORD,BASIC,SETUPを起動したところ。

画面の消去やスクロールがうまくいっておらず、ごみが残ってしまいます。
この辺の不具合は、I/OではなくCPUの問題のような感じです。
簡単に解決できる問題か判りませんが、もうちょっと頑張ってみます。
posted by 武田 at 22:23| Comment(0) | TrackBack(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2010年11月13日

MS-DOS PlayerのLFN対応とか

引き続き、MS-DOS Playerの作業中です。

101113-1.png101113-2.png

今回の更新の目玉はロングファイルネーム対応です。
MGとかFMとかのロングファイルネーム対応版がちゃんと?動くようになりました。

ついでに、find fileでボリュームを取得できるようにしたりとか、
MBCSをホスト環境のコードページに合わせて初期化するようにしたりとか、
_strupr()を、MBCSをちゃんと参照するように自前実装したりとか、
ファイル時間がUTCのままだったのをローカル時間に変換するようにしたりとか、
放置しっぱなしだったint 2fh関係を少しずつ実装したりとか、
結構大掛かりにソースを弄ってます。

もしかしたら、今まで動いていたアプリが動かなくなったりしてるかもしれません。
何かお気づきの点がございましたら、ご報告お願いいたします。

#int 21h ah=73h辺りの、FAT32関係のシステムコールも実装しないと。
#あと拡張エラー取得という大物が残ってるのをどうしたものかなーと。
posted by 武田 at 02:44| Comment(0) | TrackBack(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2010年11月10日

MS-DOS Player更新

久しぶりにMS-DOS Playerを更新しました。

101110-3.png

今回の更新で、ようやくISH.COMが動作するようになりました。
不正な命令が混ざってたりとか、スペースが含まれるファイル名の扱いの問題とか、
結構色々な問題があったようです。

a様からご報告頂いた不具合について、佐川様からご提供頂いたパッチも組み込まれてます。
多謝です>a様&佐川様


余りネット上には報告していませんでしたが、最近は以下の作業を進めてます。

MZ-1500のクイックディスク対応
MZ-80K/1200/700/1500のMZT形式のテープイメージ対応(済み)
IBM JXの実装
PC-9821As3+PC-9821A-E02(QEMU/9821ベース)
SC-3000のジョイスティックの問題(済み)

MZ-80K/1200/700/1500のMZT形式のテープイメージ対応の件ですが、
BASICプログラムとか多段ロード形式のテープイメージを扱えるように、
MZTファイルをメモリ上に直にロードするのではなく、
内部で波形データに変換してデータレコーダ経由でロードする形式になります。

正式リリースはクイックディスク対応が完了してからのつもりですが、
近々BLOGの方でバイナリだけ先行リリースしようかと思います。
posted by 武田 at 00:39| Comment(2) | TrackBack(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2010年10月01日

我が家にIBM JXがやって来た

jx.jpg

ヤフオクで落としたJXが到着しました。
残念ながらテクニカルリファレンスマニュアルは付いていませんでしたので、
PC Jrの情報を参考にしながら解析しないといけませんね。

#もしお持ちの方がいらっしゃいましたら、暫く貸して頂けますと助かります。

で、初代98、9821Ra43と入れ替えで設置して、早速BIOSの吸出し。
DOSが動くマシンはメモリダンプが楽でいいわあ。
漢字ROMもCPUからアクセスできるらしいとは知っているのですが、
現状ではまだ吸い出せてません、詳しい方、情報プリーズ。

取り敢えず年内リリースを目指します。
posted by 武田 at 00:58| Comment(0) | TrackBack(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2010年09月28日

QEMU/9821とWindows 3.1

で、更にPC-98x1尽くしの作業報告。

QEMU/9821の方で、最近のi386コアの修正をバックポートしたところ、
Windows 3.1がインストールできるようになりました。

win31-1.pngwin31-2.png

環境を自動認識させると、640x400, 256色と判定されるのですが、
これを手動で640x4000, 16色に設定を変更する必要があります。

win31-3.png

256色の設定にすると、この有様です。
多分、PEGCがフル実装されていることが前提になっているのかなあと思います。
現状だとパックドピクセルのみ対応で、プレーンアクセスが未実装なんですよね。
後期のPC-9821だとPEGCはフルサポートされていないみたいだし、まじめに実装するか
ちょっと考えてしまうところ。

ちなみにWindows NT 4.0とWindows 2000はまだインストーラが動作しません。
多分メモリのシステム領域の値に問題があるんじゃないかなあと辺りをつけてるところです。
実機の値を取得して、1バイトずつ比較するほうが早いかもしれませんね。


で、こっちもまた後日あらためてリリースします。
posted by 武田 at 00:46| Comment(3) | TrackBack(0) | 開発 | このブログの読者になる | 更新情報をチェックする

初代PC-9801のROM吸出しとディスク周りの修正

pc9801.jpg
(最初のPC-9801と、最後のPC-9821の2段重ねの図、右にはPC-9821Rv20)

初代PC-9801を調達できましたので、早速ROMの吸出し。
ROM-BASIC上で、DEF SEGしてPEEKしてOPEN "COM:"とPRINT #1でシリアル送信して、
TeraTermで受信してバイナリに変換というお決まりの手順です。
RS-232Cが付いてると本当に楽でいいなあ。

で、先日リリースしたePC-9801で動作確認したらブートしない体たらく(苦笑)
通常のPC-98x1だと、RECALIBとSENCE INTSTATでドライブの存在確認をして、
SENCE DEVSTATでメディアの存在確認をするというのがお約束なのですが、
初代PC-9801ではRECALIBとREAD IDを実行して、SENCE INTSTATでステータスを
確認することでメディアの存在確認をしているようですね。

従来の実装だと、SENCE INTSTATではRECALIBやSEEKのエラーステータスしか
取得できないようになっていたので、その辺を修正して対応しました。

100928-1.png100928-2.png

で、手持ちの2HDなソフトで古めのものを吸い出して動作確認。
ブートはするのですが…んー、ZORKって要2画面か要GRCGでしたっけ?

100928-3.png

ついでに、ePC-9801EでXANADUがブートできない件の修正。
こっちはREAD DATAのリザルトのうち、ST1のENとORが立っていると駄目だったようです。
EOTの設定からして、タイムアウトはしてるような気はするんですが、いいのかな?
というか、PC-9801のFDCってTCはどう処理してるんだったか調べないといけないですね。
先日ヤフオクに出てた全回路図を落とし損ねたのが悔やまれるなあ。


FDCを随分と弄り回してしまって、他の機種とのすり合わせがまだ出来てないので、
リリースはまた後日です。
posted by 武田 at 00:38| Comment(0) | TrackBack(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2010年09月21日

PC-9801の初代とかE/F/Mとか

という訳で、10周年記念のネタは初代PC-9801と、PC-9801E/F/Mでした。

PC-9801VM以降とかPC-9821とか、既存のエミュレータは色々とあるのに、
(というか、自分自身でもQEMU/9821の実装とかもやってるのに)
敢えて最初期のモデルのみ対応です。

まあ、ほら、俺のやることだし(苦笑)
実機とソフトが入手できたら、PC-9801U2とかもやっちゃうと思います。

100920-3.png100920-5.png

動作確認は、自分が中学の頃使ってたディスクを吸い出してやってます。
何とも懐かしい画面で、当時の思い出が色々よみがえったりして、もう何ともはや。
高校の頃部活で作った麻雀が出てきたりして、思わず噴出しました(苦笑)

100921-1.png

当時TAKERUで購入したXANADUがまだブートできていないのですが、
こっちは流石にディスクが随分磨り減ってますし、仕方がないのかなあと。
ただ、猫さんだとタイトル画面までは動くようなので、
こちらでもせめてそこまでは動かせるようにしたいなあと思ってます。
posted by 武田 at 00:20| Comment(7) | TrackBack(0) | 開発 | このブログの読者になる | 更新情報をチェックする

活動10周年のご挨拶

私がnesterのマッパー10対応コードを作成して、Darren Ranalli氏にメールしたのが2000年9月20日でした。
これが私のエミュレータ開発に携わった事始で、今日でちょうど10周年となります。

これが切欠で、エミュレータ上でゲームするよりも、エミュレータの開発の方が楽しくなってしまって、
unofficial nesterとして本格的にファミコンエミュレータの開発に関わることになった訳ですが。
(ファイアーエムブレム遊びたさでマッパー10対応したのに、結局いまだにプレーしてません(苦笑))
当時は大学院の修士論文を書いていた頃で、研究も進めつつ、ほぼ日刊ペースで開発もしつつ、といった感じで。
あの頃はまだ若かったというか、タフだったなあと(苦笑)

大学院を卒業して就職後、unofficial nesterが一段落して、次の開発ネタを探していたのですが。
そんなとき、当時存在していたemulation9.comとretropc.netの共同掲示板上で、
「実機提供してもいいから、誰かMZ-2500エミュレータ作ってくれませんか?」
といった感じの投稿がありまして、思わず飛びついてしまったのが、レトロPC方面に参入する切欠でした。
安易に飛びついた後で、実機のアーキテクチャを調査して、その複雑さ加減に頭抱えたのもいい思い出です。

その後は、85年頃にPOPCOMを読んで指を咥えていた、ナイコン族だったあの時代に感じた各機種への憧れとか、
生来のマイナー専体質とか、とにかく実機解析してエミュレータ実装するのが楽しいとか、そんなこんなで。
国産コンピュータを全てエミュレータとして再現すべく、他の人が手をつけなさそうなマイナー機を中心に、
レトロPCのエミュレータを実装し始めた辺りの経緯は、野望のページに書いた通りです。

エミュレータの大量生産に対応すべく、コモンソースコードプロジェクトにソース統合したのは2006年12月でした。
技術的にはこれが大きな転機となりまして、これまで実装してきたソースコードの再利用性の向上など、
最大限に量産効果を発揮できるようになりました。
簡単な機種なら数時間でエミュレータを実装できるようになり、野望の達成も多少は現実性が出てきたかなと。

そんなこんなで10周年です。
本日記念としてリリースした初代PC-9801、およびPC-9801E/F/Mで、これで44機種となりました。
まだ何機種かは未実装のネタを抱えていますが、今後は本当にマイナーな機種の入手も検討する必要があり、
活動の広報も兼ねて、今年に入ってからオープンソースカンファレンスに参加するなどしております。
皆様方にも今後ともご協力いただけますと幸いです。

私個人としては、そろそろコンピュータ資料館の設立を現実の課題として検討し始めているところです。
5〜6年後を目処に、何かしらご報告できる日を楽しみにしております。



#と、本サイトの方の内容をそのままコピペ(笑)
posted by 武田 at 00:09| Comment(0) | TrackBack(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2010年09月19日

PC-98のエラー音

ちょっと質問です。

PC-98で、起動時にピーピッピッと長-短-短でビープが鳴るのって
どういう症状でしたでしょうか?

マニュアルに載ってるのは覚えてるけど、今手元にないので(苦笑)
posted by 武田 at 21:20| Comment(2) | TrackBack(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2010年09月14日

OSC 2010 Tokyo/Fall終了

OSC 2010 Tokyo/Fall、無事終了しました。
私のブースにお出で下さいました皆様方、LTをお聞き下さいました皆様方、ありがとうございます。

今回初挑戦のLTでしたが、まあまあ好意的な反応が得られたかなと思います。
ちょっとネタに走り過ぎたかなという反省もありますが、こんな活動をしてるおっさんがいるよ、
という広報的な意味ではまずまずの成功だったかなと。

ブースの方は、実装した機種一覧が見事におっさんホイホイとして機能してくれました(笑)
メーカの中の方からB16とか2020とか2050の逸話を伺ったりと、収穫もいっぱい。
まったり昔話をするのも楽しくて、色々元気補給させていただきました。

OSASKの河合さん、Androidの今岡さん、KOZOSの坂井さんには色々お世話になりました。
東京でOSCがあるときは出来るだけ参加したいと思いますので、またお会いできたときには
よろしくお願いいたします。
posted by 武田 at 01:00| Comment(0) | TrackBack(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2010年09月09日

OSC2010 Tokyo/Fall準備中

明日から2日間、OSC2010 Tokyo/Fallに参加します。
もしお時間がございましたら、お寄りいただけますと幸いです。

という訳で、現在準備の追い込み中です。
明日から暫くネットに繋がらなくなりますが、携帯からmixiは
ときどきチェックしますので、お急ぎの御用の場合はそちらから
メッセージをお送りください。
posted by 武田 at 23:49| Comment(2) | TrackBack(0) | 開発 | このブログの読者になる | 更新情報をチェックする
まるくん、がんばれ、ちょうがんばれ