1つのエミュレーターの開発の歴史
1.なぜですか?
私のプログラミングの人生はすべてアプリケーションプログラマーだったと言えます。 彼は、箱入り製品の開発に参加し、注文に応じて、小企業などに参加しました。 これは面白くて多様な作品です。 しかし、私は鉄に密接に関連するものを書いたことは一度もありませんでした。 しかし、私のプログラミングの若者は、Win32 / MFCの下でC ++の開発に合格しました:)ある程度、自分の力をテストしたかったのです。
2.なぜUKSCなのか?
彼は学校でこれらのマシンを操作しました(これは1992〜93年でした)が、Basicほど複雑ではなく、教師のマシンでフロッピーディスクをクロールしました。 つまり エミュレートされたマシンについての真剣な知識はありませんでした。 まだ持っていないように、私は自分のUKSCを自由に使うこともできませんでした。
エミュレーターの作成のきっかけ
はArseny Gordinの
サイトでした。ArsenyGordinでは、数年にわたってUKSCおよびその他のPDP-11互換マシンに関するすべての入手可能な情報を収集してきました。 もっと正確に言うと、サイト自体ではなく、
「ROMとRAMのイメージを削除する」アーカイブがAlexander Streletsによって発見されたという事実です(ところで、ありがとうございました!)。 実際のマシンでROMイメージを取得する手順はアーカイブに記載されており、(見よ!)キャプチャされたイメージが発見されました。 ここでは、ペンが非常に目立って取り除かれています... 2006年6月頃でした。 ところで、当時、UKSCのエミュレータは1つもありませんでした。 (はい、そして今、一般的に、それらの多くはありません...)
3.最初の試み
その後、私は自分自身を押しのけるものを探し始めました-最初からすべてを書くことは(その時点で)私にとっては不可能な作業になります。 検索の結果、利用可能なVM2プロセッサエミュレータはなく、ソースはもちろん、1つもライブではありませんでした。 しかし、長い間、VM1を実装したエミュレータがあります。ご想像のとおり、これらは
BCエミュレータです。 選択肢は
Yuri Kalmykovエミュレーターにかかっていました -まず、ソースコードにあり、次に、MFCで書かれているので私に近かったです。 プロセッサコードと逆アセンブラーのみがKalmykovエミュレーターから取得されたため、元のバージョンにはおそらく何も残っていません-コードは何度も処理されています。
1週間半後、将来のエミュレーターはプロセッサー、メモリー、逆アセンブルされたフラグメントの状態をすでに示し、
手動モードでは最初のコマンドを活発にウォークスルーしました 。 さらに、プロセッサを改良し、UKSCのすべてのデバイスをプログラムする長い道のりがありました...しばらくの間、特別な結果を示すことなく、この方向にゆっくり踏みました。 2007年1月のどこかで、私はその時点から始めなかったという結論に達しました。マシンのデバイスに関する情報とプロセッサの詳細な理解が非常に不足していました。 したがって、私は主題に関する私の知識を要約し体系化する文書のために座った。
4.共創
また、2007年2月に、エミュレータの作業が大幅に加速しました。
3DOエミュレーターの作成経験があり、UKSCのエミュレーターを作成し、仲間を探しているFelix Lazarevは、Arseny Gordinに来ました。 一緒に動作するようにSVNをデプロイしました。
UKSCの作業を理解するにあたり、私は2桁弱かったので、Felixがプロセッサとデバイスを揺する間、主にインターフェイスとデバッガーで作業しました。 2月末までに
、スクリーンドロワーが
作成さ
れました 。 3月中旬までに、開始テストによって発行された
RAMおよびROMエラーに関するテキストを見ました 。
この頃、Alexey Kislyはプロジェクトを積極的に支援し始めました。 Alexeyには本物のUKSCがあり、文字通り一緒に勉強しました。 彼は、私たちにUKSCのROMプログラムのテキストを提供し、手動で逆アセンブルしました-エミュレータをデバッグするために、その時に本質的に欠けていた何か。
さらに、アレクセイはアセンブラーで書いたUKSC(!)のエミュレーターさえ持っていました。 そのエミュレータは、実際のマシンの「半分」のように機能しました。CPUとプロセッサ間チャネルのみをエミュレートし、CPUのPCの存在をシミュレートしました。 過去2.5年にわたって、Alexeyはマシンのすべての詳細についてアドバイスをしてきました。プロジェクトへの彼の貢献は非常に貴重です。
2007年3月19日には、初めて
ブートメニューが表示されまし
た 。 2007年3月20日-組み込みテストに合格。
3月末に向けて、Arseniyは、UKSC専用の既知のROMカートリッジのダンプを、なんとか特別な「カセット」バージョンのBASICで入手することができました。 そして、2007年3月27日には、すでにエミュレータにロードされていました。 また、3月28日には、フロッピーディスクからのブート(読み取り専用、ディスクへの書き込みなし)がすでに開始されています。
そしてその後、両方の開発者はメインの仕事に深く没頭することでタイムアウトを取りました...
2007年6月、彼はプロジェクトのインストーラーとビルドスクリプトを作成しました。
2007年6月21日、最初のインストーラーがベータテスターに送られました。 目標は、私が正しいことをしていることを確認し、エミュレータに関するフィードバックを収集することでした。
2007年8月、彼はVlad Zhigalovから原稿「UKSCのリソース」-このマシンがプログラマーに提供するものに関する彼の研究を受け取りました。 そのため、このドキュメントのスキャンは完了していませんが、必要になります...スキャンされるのは
こちらです。
2007年9月28日には、最初のパブリックベータが公開されました。これは、限定版で送信したものと同じバージョンです。 2007年10月から11月に、3つのリリースがリリースされました。 エミュレータを起動せずにディスクイメージを操作するためのrt11dskユーティリティが作成されます。
Alexeiの助けを借りて、彼はUKNTのHDDのコントローラーのデバイスをディスクに記録するために詳細に理解し始めました。 2008年1月27日-
ベータ6 ディスクへの書き込みを獲得しました!
5.開く
2008年3月3日-
ベータ-9 プロジェクトはオープンソースになります。
code.google.com/p/ukncbtl2008年の夏に、さらに2つのリリースがリリースされ、著者は再びプロジェクトを打ち出しました...
2009年4月4日-Felixはベータ12をリリースします。 プロセッサのタイミングが改善され、リアルなサウンドが得られます。 それから再び大きなボルトを入れて......
最後に、2009年11月以来、過去2か月の作業がほぼ毎週末に行われ、3つのリリースがリリースされています。 BM1およびVM2プロセッサの受け入れテストが見つかりました。これらのテストは、すべてのモードで動作を徹底的にテストします。 Alexeyのコミットのお陰で、すでにこれらのテストに合格しています。
6.結論
- 不可能なことは何もありません-一般的に、私は自分にできることを証明しました。
- しかし、厳密に言えば、私だけで「多すぎる」ことができますが、知識のある人々とのチームでは本当に「のみ」です。 レトロコンピューティングの問題では、協力が非常に重要です。
- 作業は完了しておらず、いつ終了できるかを言うのは困難です。ソフトウェアの99%はすでに動作していますが、エミュレータは理想からほど遠いため、終了していません。 エミュレーションの正確性と完全性(テープレコーダー、プリンター、ジョイントC2、ネットワーク...)、および利便性(フルスクリーン、状態保存...)と移植性(Qt、SDL ...)の両方の面で開発する余地があります。
プロジェクトサイト: code.google.com/p/ukncbtlスクリーンショット: code.google.com/p/ukncbtl/wiki/ScreenshotsPS 2009年11月14日、UKNCBTLコードに基づいて、BK-0010を少なくともエミュレートするBKBTLプロジェクトが開始されました:
code.google.com/p/bkbtl