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

2018年05月24日

Common Source Code Projectの100機種到達と、システムズフォーミュレート BUBCOM80

Common Source Code Projectで遂に100機種目のリリースを達成しました、Ураааааааа!!
unofficial nesterの開発開始が2000年9月ですから、もうすぐ18年間ですか。
いやはや何でも続けてみるものですね。
次の目標は128機種ですか、一体何時になることやら。

という訳で、記念すべき100機種目はシステムズフォーミュレート BUBCOM80でした。
実体としては、PC-8001+バブルメモリといったところでしょうか。

180524-1.png

BASIC ROMから起動したところ。
テキスト画面はDMAC(uPD8257)でRAMからCRTC(uPD3301)に転送して表示します。
フォントはRAMに格納されており、パターンを書き換えることが可能です。

180524-2.png180524-3.png

標準グラフィックは160x100で、テキスト画面にセミグラフィックで表示します。
高解像度グラフィックは640x200で、テキスト画面とは独立したVRAMを持ちます。
VRAMはI/O空間の4000h-FFFFhに割り当てられています。

180524-4.png

Z80CTCのZC/TO #0を分周してスピーカに出力しており、BEEP命令やPLAY命令に使用しています。
また、1秒おきに割り込みを発生して、TIME$の値をインクリメントします。
フロッピードライブI/Fを搭載した場合、I/F上のRTC(MSM5832?)から日時・時刻を取得します。
データレコーダのCSAVE,CLOADはSIO(MB8863H)経由で行います。


180524-5.png180524-6.png

PC-9801VX/RA, PC-98XL/RLやX1turbo/ZなどでSASI I/FおよびSASI HDDのサポートを行いました。
BIOSフックでなく、ガチンコでハードウェアからサポートしています。
PC-98エミュレータで使用されるTHD/NHD/HDI形式およびベタイメージをマウント可能です。
posted by 武田 at 02:28| Comment(3) | 開発 | このブログの読者になる | 更新情報をチェックする

2018年03月29日

RFC: Common Source Code Projectのデバッガの改良

Common Source Code Projectのデバッガの改良中です。
趣旨としては、操作対象のデバイスやCPUを切り替えられるようにしよう、というものです。
以下に試作版をアップしています。
http://takeda-toshiya.my.coocan.jp/00tmp/debugger.zip

私のエミュレータのデバッガを開発に使ってくださっている方がいらっしゃいましたら、
ご意見ご要望をコメントに頂けますと助かります。

180329-1.png

! device
とすると、仮想マシンの全デバイスを列挙します。
! device (id)
とすると、操作対象のデバイスを切り替えます。

ただし、CPUを実行するG,T,Pコマンドおよびブレークポイント関係のコマンドは、
デバッグ対象のCPUに対して実行されます。
T,PコマンドでCPUをステップ実行すると、CPUのレジストリ情報とあわせて、
操作対象のデバイスの情報が緑色で表示されますので、
例えば、サブCPUを操作対象にして、TコマンドでメインCPUをステップ実行しながら、
メインCPUとサブCPUの実行中の命令やレジスタの状態を並べて確認したり、
(メインCPUで1ステップ進める間にサブCPUが複数ステップ進む、といことはありますが)
サブCPUのメモリやI/O空間を操作したり、といったことが可能です。

! device cpu
とすると、操作対象のデバイスを元のCPUに戻すことができます。

180329-2.png

CPU以外を操作対象にすることができます。
例えばMB8877やuPD765Aを指定すると、FDCのレジスタ状態や実行中のコマンド、
現在アクセスしているセクタの情報を確認することができます。

180329-3.png

また、TMS9918を指定すると、D,EコマンドでVRAMの内容を表示・編集したり、
N,L,WコマンドでVRAMの内容をファイルに読み書きすることができます。
(元々は、たなむさんのTweetを見て、これがやりたかったのが発端です)

180329-4.png

デバッグ対象のCPUを切り替えることも可能です。
! cpu
とすると、仮想マシン中の(デバッガが付いている)CPUを列挙します。
! cpu (id)
とすると、デバッグ対象のCPUを切り替えます。

例えば、最初はメインCPUをデバッグ対象としてデバッガを立ち上げて、
サブCPUにコマンドを送ったところでブレークを掛けて、
サブCPUにデバッグ対象を切り替えて、サブCPUをトレースすることが可能です。

また、これは従来からサポートしていますが、T,PコマンドでCPUをステップ実行して、
CPUのレジストリの情報を表示する際に、
CPUの消費クロック数(起動時から・前回のブレーク時から)、
現在のスキャンラインが始まってからのクロック数、
現在のスキャンライン番号が表示されるようになっています。
HBLANK/VBLANKの間にVRAMに転送する処理を詰め込むような場合に便利かもしれません。
posted by 武田 at 01:34| Comment(3) | 開発 | このブログの読者になる | 更新情報をチェックする

2018年01月09日

FM16β

昨年末から本格的に作業を進めています。
取り敢えずCP/MやF-BASIC86がブートするところまでは実装できました。

180102-1.png180103-1.png180103-2.png

180109-1.png180109-2.png180109-3.png

まだまだ未実装な部分が多いですが、最低限キーボードを実装して
操作できるようになったら一旦リリースしようかと思います。
その後は、BLOGにコメントして頂いた内容を順次対応していく予定です。
posted by 武田 at 01:21| Comment(6) | 開発 | このブログの読者になる | 更新情報をチェックする

2017年05月20日

YAMAHA YISのグラフィックコマンド

170520-1.png

実機のフォントROMを読み込むようにしました。
これまでは自作のダミーフォントROMで開発していましたが、大分雰囲気が変わりますね。

170520-2.png170520-3.png170520-4.png170520-5.png170520-6.png170520-7.png

PU-1-20のグラフィックコマンドをサポートしました。
YIS GRAFで、実際にグラフを表示することができるようになりました。

170520-8.png170520-9.png170520-10.png170520-11.png

YIS BASIC上で、実装したグラフィックコマンドをテストしました。
Microsoft系のBASICとは異なるコマンド体系ですね。
posted by 武田 at 00:25| Comment(6) | TrackBack(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2017年05月15日

X1turboZ

170515-1.png170515-2.png170515-3.png

X1turboZの多色モード周りをサポートしました。
対応ソフトが少なすぎて、ちゃんと実装できているか些か不安なのですが(苦笑)
特に64色/4096色モードのテストにご協力いただけますと幸いです。

資料関係は、例によって、X1センターの佐藤様に大変お世話になりました。
多謝多謝です。

(2017/5/17 21:50追記)
170517-1.png

X1センターの佐藤様に多色モードの検証用プログラムを作成して頂きました。
4096色モードや、64色モード2画面の重ね合わせなどが修正できているかと思います。
posted by 武田 at 22:29| Comment(0) | TrackBack(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2017年05月13日

Common Source Code Projectの100バイナリ到達と、YAMAHA YIS

Common Source Code Projectで配布する実行ファイルが100個に到達しました。
2割弱は、Artane.さん、tanamさん、umaibauxさん、Sugaさんに
実装して頂いたものですが、まあ何とも結構な数になったものですね。

170513-1.png

100機種、ではないのです、まだ。
CPU違いとか、オプションボードの有無とか、日本版と海外版とか、
MSX汎用と特定機種とか、別バイナリになっている機種もありまして(を

別機種とする基準が難しいのですが、単純に機種名でカウントすると、
(FMR-30/50のCPU違いは1つに纏めるけど、FMR-60/70/80は別とか)
今のところ93機種くらいでしょうか。

#X1turboZを近々リリースできそうなので、直に+1になりますが(を
#その次は、PC-98RLかFM-16β辺り?

来年辺りには、機種数でも100機種を到達できるといいなあと思います。

170513-2.png170513-3.png170513-4.png170513-5.png

という訳で、記念すべき100バイナリ目は、まさかのYAMAHA YISでした。
日本のレトロPC界隈でも極めつけのUMAですね。
ネット上では、守谷様のサイトが一番情報が纏まっているかと思います。
ヤフオクでジャンク品が出品されたときは、まだ実機が現存したのか、
とびっくりしたものです。

6502ベースのCP/M風マシンで、SHARP MZ-2500やEPSON QC-10のような
柔軟なメモリマッパーと128KBのRAM、グラフィック用のサブCPUにZ-8001、
更にFDC+DMAC、浮動小数点演算用にAM9511を搭載するなど、
とても1982年の機種とは思えない、非常にリッチな構成です。
価格の方も、810,000円とそれ相応に超リッチだった訳ですが(苦笑)

エミュレータを実装していても非常に興味深い、楽しい機種でした。
まだ最大の特徴であるグラフィック回りが実装できていないのですが、
今後も継続して解析、実装していきたいと思います。

まあ、その辺りの話は本サイトの方を見ていただくとして。

170513-6.jpg170513-7.jpg

実は、今回の開発では、ヤマハ株式会社様に、ディスクやマニュアルなど
貴重な資料をご提供いただくなど、多大なご協力をいただきました。

2000年にunofficial nesterの開発を始めて、ずっとエミュレータの開発を
続けてきましたが、メーカ様にご協力いただけるのは初めての経験です。

#社内の方に個人的なメールをいただいたことならあるんですが(を

ご対応いただいたのは、マネージャクラスの大変偉い方だったのですが、
社内に散逸した資料を掻き集めて頂いたり、資料をスキャンして頂いたり、
もうもう大変にお骨折りいただきました。
わがままな依頼にも快くご対応いただきまして、
本当にどうお礼を申し上げればいいものやら、申し訳ない限りです。

また、守谷様には、ハードウェアの調査をご担当いただいたり、
ヤマハ様との仲介をしていただきました。

おかげさまで、日本のコンピュータ史的にも、とても重要な仕事を
させていただくことができました、本当にありがとうございます。

※ ご注意

まだ詳細はご紹介できませんが、諸々の事情がありまして、
ヤマハ株式会社様には、特別なご配慮を頂いたと理解しております。

一般に、ここまでのご対応をいただける訳ではないということを、
よくよくご承知おきいただきたく、
また本件について、ヤマハ株式会社にお問い合わせ等なさらないよう、
深くお願い申し上げます。
posted by 武田 at 18:04| Comment(1) | TrackBack(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2016年12月31日

2016年の総括

※ 本サイトに掲載したものと同じ内容です。

全ての国産PCのエミュレータを開発しようと始めたこの活動も、今年で13年目となりました。
unofficial nesterを開発していた当時は24歳だった私も、とうとう40歳です。
みんなでMZ-700で盛り上がっていたのも2008年ですか、年を取ったなーとしみじみ感じてます。

2歳になった下の娘が絶賛イヤイヤ期で、最近は中々大変です。
5歳になった上の娘は余りお肉が好きじゃなくて、下の娘はお肉しか食べたがらなくって。
二人とも、お魚さんは結構よく食べてくれるから助かります。
年賀状の印刷業者を変えたのですが、インクジェットプリンタ用のテカテカなやつでなくて、
普通の官製はがきだったので、写真の印刷品質がいまいちだったのが残念。
来年は元の業者に戻そうかなあと思案中ですが、デザインがマンネリでしてねえ。

今年は新ネタとして、PC-2001、SMC-70、ヤルキー、SM-B-80TEをリリースしました。
また、Artane.様の実装されたFM-8、たなむ様の実装されたColecoVisionを取り込みました。
これでやっと85機種ですね。
ヤルキーについては、殆ど反響がありませんでしたが、ただでさえWeb上に情報のないこの機種、
どのような代物だったのかの記録を残すことができて良かったと思います。
この界隈での立ち位置というか、自分に期待されているのは何かを再確認できました(を

今年の技術的なトピックは、SCSIバスの実装が進んだことでしょうか。
主にFMR-30/50/60のハードディスク用なのですが、疑似BIOSを経由せず、がちんこでドライブ類を
サポート出来たのは嬉しかったです。
また、副産物として、PC EngineのCD-ROM^2のサポートもあわせて出来たのは幸いでした。
The Manholeは中学時代に遊んだ思い出のソフトだったので、自分の実装したエミュレータで
遊べるようになったのは感無量でした。

今年は、どちらかと言うと、MS-DOS Playerの方が作業が進みました。
EMS/XMS、マウス、シリアルポートをサポートした他、コマンドファイルをmsdos.exeに埋め込んで
単体バイナリ化する機能をサポートしました。
新機能以外にも、細かい挙動の改良も色々と進みました。
海外の有名なIT系ニュースサイトで紹介されたため、海外でもにわかに注目を受けたみたいですね。

今年は本当に忙しい1年でした。
本業がとにかく忙しくて、休日(しかも40歳の誕生日)の夜に、海外支社からの連絡で呼び出されて、
お酒飲んでたから運転代行で出社して、そのままほぼ2徹とか(苦笑)
去年の総括で、「ご要望のある方は是非お知らせください」なんて書いておいて、メールの返事すら
全然出来ていませんでした、本当に申し訳ございません。m(_ _)m
来年も本業が忙しいのが確定しているのですが、昨今の社会情勢から、残業規制が厳しくなったため、
プライベートな作業時間はそこそこ取れるといいなあと思います。

2017年ですが、毎年やるやる詐欺になっている16bit機を今度こそ何とかしたいと思いますが、
本業や私生活もありますので、無理せずぼちぼち活動を継続していければと。

来年も頑張りますので、また一年お付き合いいただけましたら幸いです。
posted by 武田 at 23:37| Comment(1) | TrackBack(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2016年12月29日

SM-B-80TE

161229-1.png

ほぼOh!石さん向けネタです。
数年前に入手していたのですが、ROMの吸出しが面倒で放置してました(苦笑)

本業多忙でここ半年ばかり活動できていませんでしたが、年末年始の休暇で
リハビリがてら何か簡単なものでも実装しようということで。
結局帰省前にROMの吸出しができなかったので、ユーザーズマニュアルの
モニタROMのリストから手入力しています(を
posted by 武田 at 18:38| Comment(1) | TrackBack(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2016年04月02日

湯浅教育システム ヤルキー

今年のエイプリルフールネタということで、起動画面が出るところまででリリースしたのですが、
思いの外に早くカセットの読み込みができるようになったので、動画をアップしてみました。

公開については、もう少し作業を進めてからと思います。
カセットの停止、再生はできるようになったのですが、巻き戻し、頭出しの処理についても
解析をしてからにしようかと。
技術的にも中々興味深い点がありますので、そちらも纏めて公開したいところです。





ヤルキーは、いわゆる教育用コンピュータの走り的なものです。
カセットテープの音声に従って操作、学習をします。
高額で中々販売が伸びず、普及のため学習塾(現在のヤルキー学園)まで展開したとか。

余りネット上でも情報がなく、実態が知られていない本機。
この動画でどんな感じの機種だったのか、追体験いただければと思います。

YUASA_PM-1001_front.jpg YUASA_PM-1001_back.jpg YUASA_PM-1001_top.jpg
posted by 武田 at 23:41| Comment(13) | TrackBack(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2016年02月11日

MB8877とT3444Aのタイミング

MB8877とT3444Aのタイミングを再々修正しました。
今度こそ大丈夫な筈、です、多分。

X1turboのアルファにおいて、オープニングデモの銃声が2重に再生されたり、
ポリスロボットにつかまった後にCGが化ける問題が解決しています。
同じくX1turboのイース2のオープニングのタイミングは、もうちょっとかな?

MZ-80KのSP-6010の起動も高速化しています。
むしろ実機より高速っぽいですが、これはモータが回転し始めて、回転が安定して
READYが返るまでの時間が入ってないのが原因かと思います。
次はこの辺の改良を進めたいですね。

私のFDCの実装では、ヘッドの現在位置を意識してタイミングを取得しています。

具体的には、最後にDRQが立ったときのヘッドの位置と仮想マシン内の時間を控えておいて、
そこからの経過時間と、ディスクの回転数、トラック長から、現在のヘッド位置を算出します。
また、インデックスホールを先頭に、トラック全体のデータの並びを生成することで、
各セクタのIDやデータが、トラック上のどの位置にあるかを取得します。

例えばREAD/WRITE SECTORでは、現在のヘッド位置から、アクセスするセクタの位置までの
ヘッドの移動量を算出して、アクセス開始までの待ち時間を決定するという塩梅です。

ここまでは従来からやっていたのですが、じゃあ何が問題だったかと言いますと。
最後の最後で、セクタの位置の配列の引数が間違っていて、別のセクタまでの移動量を元に
タイミングを算出していたという体たらくでして(苦笑)


この方式、各セクタのIDやデータの、トラック上の位置を正確に取得できるかが重要ですが、
現在のディスクイメージでは完璧な実装にならないのが悩みの種です。

例えばD88フォーマットでは、トラック長やセクタ間のギャップ長の情報がありません。
標準的なフォーマットであれば、規定値を元に算出できるのですが、
モータの回転数を落としてフォーマットすることで、トラック長を大きくしてやって、
その分セクタを余分に突っ込んでいるようなものもあったりする訳で。

さらに2D形式などのベタイメージだと、セクターのIDの順番に格納されていますので、
セクターの並び順すら確実ではなかったりします。

将来的には、KryoFluxのRaw Stream形式をそのまま扱えるようにしたいのですが、
まずはKryoFluxを購入するところから始めないといけませんね(を
posted by 武田 at 01:26| Comment(8) | TrackBack(0) | 開発 | このブログの読者になる | 更新情報をチェックする
まるくん、がんばれ、ちょうがんばれ