私が初めて持つことになったコンピューターは、1978年後半に誕生日プレゼントとしてもらったものです。そのコンピューターは 4KB のメモリーを搭載した TRS-80 Model I で、当初は大容量記憶装置としてカセット・テープを使っていました (後になって記憶装置は Exatron の Stringy フロッピーにアップグレードしました)。それから数週間で私の BASIC プログラミング・スキルは上達し、作成中のプログラムがメモリーに収まりきらないという悲しい思いをする羽目になりました。しかしその当時は、まさか 30 年後に組み込みファームウェア・エンジニアとして相変わらず大量のコードとデータを小さなアドレス空間に押し込もうと四苦八苦するとは思いも寄りませんでした。
コンピューターの歴史は興味深いものですが、初期の頃に開発されたコンピューターも同様に興味深いものです。初期のマシンの多くは初歩的な計算機でした。その一例は、Konrad
Zuse が 1931年に発明した Z1 です。さらに歴史を遡ると、1890年の国勢調査で使用された Herman Hollerith
の機械式ソート・マシンもあります。その 6 年後、彼の会社を含む複数の会社が合併し、IBM が生まれました。Z1 を開発した Zuse は、その後、Z4
コンピューターのための初のアルゴリズムによるプログラミング言語、プランカルキュール (Plankalkül) を考案しました。Z4 は電気機械式 (リレー・ベース)
であり、64 ワードのメモリーをサポートし、なんと 40Hz (消費電力 4KW) で動作しました。最初のデジタル・コンピューターを発明したのは、John Atanasoff 教授です。彼はアイオワ州立大学で 1937年に 2 進法を用いて計算を行うコンピューターの開発に着手し、1941年に完成を迎えました。このアタナソフ・ベリー・コンピューター (ABC: Atanasoff-Berry Computer) の概念は、初の汎用電子コンピューターである ENIAC に適用されました。これらのシステムのプログラミングは、Pascal、C、LISP などで育った私たちの多くにとっては異質なものでしょう。例えば、ENIAC でプログラムを変更するには、物理的な配線をし直さなければならなかったりします。ウィキペディアには、コンピューターの進化に関する興味深い情報が記されています (「参考文献」を参照)。
Computer History Simulation Project
かつて私が使っていた TRS-80 が箱にしまいこまれて埃をかぶっているように、過去のコンピューティング・システムは忘れ去られてしまいがちです。けれども幸い、コンピューティングの歴史上極めて重要なコンピューティング・システムに光を当てるために時間と労力を注ぎ込んでいる Bob Supnik のような人々がいます。Supnik は、重要な意味を持つコンピューティング・システムをシミュレーションによって復活させる手段として、Computer History Simulation Project を作成しました。Supnik のプロジェクトは世界中の人々による貢献を得て、数多くのコンピューティング・システムをシミュレートするマルチシステム・フレームワークという形になりました。SIMH と命名されたこのフレームワークがシミュレートするシステムには、Data General Nova、DEC の PDP と VAX、IBM 1401 および 7090/7094、Interdata システム、さらには MITS Altair システム (8080 と Z80 の両方) もあります。その他のシミュレーション対象のシステムについては、「参考文献」を参照してください。
まずは SIMH の全体的なアーキテクチャーを調べていきます。アーキテクチャーを理解した上で、SIMH を使って古いハードウェアをシミュレートしてブートする例を具体的に探っていきます。
SIMH は、複数のエミュレーターがまとめて組み込まれたフレームワークです。SIMH ソース・ツリーの階層を探ってみると、汎用シミュレーター・ファイルの一式があり、さらにそれぞれのマシン・シミュレーション (あるいはマシン・シミュレーションのクラス) が含まれる複数のサブディレクトリーがあることがわかります。図1 に示されているように、シミュレーターはシミュレーター制御パッケージ (シミュレーター・コンソール、端末およびファイル I/O ライブラリー、タイマー、ソケットなどが含まれるパッケージ) と一連のデバイスで構成されます。これらのデバイスの中核となっているのは、デバイスの状態を (デバイスがアクティブになっている間) 維持するための複数のレジスター、そしてデータ・セットを表す複数のユニット (通常は、デバイスを表すために使用されるファイル) です。すべてのデバイスが存在していなければならないというわけではありません。例えば、ネットワーク・デバイスは適切でない場合もあります。
図 1. SIMH の基本アーキテクチャー
仮想マシンがシミュレーター上で起動されると、まず始めにシミュレーター制御パッケージによってその環境の詳細 (一連のデバイス、バイナリー・ローダー・ルーチン、インストラクション・セット・シミュレーターなど) が明らかにされます。この後すぐにわかるように、シミュレーターの起動後、シミュレーターを操作して仮想マシンをブートできるようになります (またはこの操作をファイルに含めて、仮想マシンのブート・ステップを単純化することもできます)。シミュレーターは本質的にはデバッガーであるため、ブレークポイントを設定して、デバイス、CPU、およびメモリーを操作することもできます。SIMH に用意されている機能の量の割には、コードは理解しやすく、想像するほど大きくはありません。
ここからは、SIMH が初期のコンピューティング・システムを蘇らせる仕組みについて探っていきます。このセクションでは、最初に SIMH をインストールしてビルドする方法を説明した後、ソフトウェア・キットについて説明します。
以下に記載するセッションに、SIMH をダウンロードしてビルドする方法が示されています。この例では SIMH のバージョン 38.1 を使用していますが、Web サイトでパッケージが更新されているかどうかを調べてください。リスト 1 に示されているとおり、パッケージを作成するには、その前に ./BIN サブディレクトリーを作成する必要があります。
リスト 1. SIMH のインストールとビルド
$ mkdir simh ; cd simh $ wget http://simh.trailing-edge.com/sources/simhv38-1.zip $ unzip simhv38-1.zip $ mkdir BIN $ make -f makefile |
リスト 1 に記載されたステップを完了すると、./BIN サブディレクトリーには個々のシミュレーターを表す一連のバイナリーが作成されているはずです (ibm1130 や vax780 など)。
上記のステップで SIMH シミュレーターをビルドしましたが、これを実際に使用するには、個々のシミュレーター用のソフトウェア (オペレーティング・システムとアプリケーション) が必要です。シミュレーション対象のシステムは紙テープや磁気テープを使って動作していたため、これらの媒体を利用して表現されていたソフトウェアが、使いやすいように複数のファイルに再パッケージ化されています。この記事ではデモの一環として、必要なソフトウェア・キットについて調べ、これらのソフトウェア・キットをどこにダウンロードすればよいかを学びます。
シミュレーター (例えば altairz80など、その名前はシミュレーション対象のマシンにちなんで付けられます)
を起動すると、sim>
プロンプトが表示されます。このプロンプトは、現在、基本シミュレーターがアクティブになっていることを示すためのプロンプトです。この状態から、基本シミュレーターを構成して、シミュレーション・ターゲットを起動することができます。この記事で取り上げるのは、実行可能な多数のコマンドのうちの一部にすぎません。包括的なコマンドのリストを確認するには、help を使用してください。もう 1 つ重要な点として、サポート・マシンのいずれかをエミュレートしている間は、Ctrl-E を押すことでシミュレーターに戻れます。そしてシミュレーターで、ブレークポイントを設定し、レジスターを確認し、シミュレーターのイベント・キューを調べるなど、さまざまな操作を行うことができます。
SIMH についての基本知識をおさえたところで、今度は各種のコンピューター・システムで SIMH を使用する例を紹介します。具体的には、IBM 1130 システムでの LISP、Interdata 32ビット・システムでの UNIX®、MITS Altair マシンでの CPM、そして PDP-15 での Focal を見ていきます。
IBM 1130 システムは、比較的低価格の市場を焦点とした人気のコンピューティング・システムでした。このシステムではパンチ・カードと紙テープを使用していましたが、低価格のディスク・ストレージも使用していました (合計 1MB)。オペレーティング・システムとデータは、このディスクに保存されます。
1130 システムは 1965年に発表されました。当時、主要なプログラミング言語となっていたのは FORTRAN です (FORTRAN のコンパイラーは完全にアセンブリー言語で作成されており、わずか 4000 ワードのメモリーで実行されていました)。システムは 15 ビット・ワードをベースとしたアドレス空間を使用し、マシンのコア・メモリーを 64KB に制限していました。
IBM 1130 システムの興味深い側面の 1 つは、代替言語をサポートしていたことです。FORTRAN の他に、APL および RPG を使用して 1130 をプログラミングすることも可能でした。Guy Steele は、ボストン・ラテン・スクール (高校) で 1130 を使用する機会がありました。その彼が作成した LISP インタープリターは、今でも使用することができます。それではまず、1130 を保守しているサイト、ibm1130.org から LISP インタープリターを入手するところから始めます (リスト 2 を参照)。ここでは、SIMH をインストールした ./simh サブディレクトリーがカレント・ディレクトリーになっていることを前提とします。
リスト 2. LISP インタープリター・ソフトウェア・キットのインストール
$ mkdir kits/ibm1130 ; cd kits/ibm1130 $ wget http://media.ibm1130.org/lisp.zip $ unzip lisp.zip |
このエミュレーションでは、SIMH を操作する際の詳細の多くを隠します。けれども、これは、かつての 1130 の用途の 1 つを垣間見る興味深い一例です。このバッチ操作のデモでは、シミュレーターに対してジョブを指定し、出力をリスト・ファイルに送信します。指定するジョブは、LISP インタープリンターを使用した非常に単純なものです (出力を見るとわかります)。リスト 3 に、バッチ・セッションを記載します。
リスト 3. IBM 1130 シミュレーターでの LISP インタープリターを使用する例
$ ../../BIN/ibm1130 job lisptest IBM 1130 simulator V3.8-1 PRT: creating new file Loaded DMS V2M12 cold start card Wait, IAR: 0000002A (4c80 BSC I ,0028 ) sim> quit Goodbye $ more lisptest.lst PAGE 1 // JOB 1234 LOG DRIVE CART SPEC CART AVAIL PHY DRIVE 0000 1234 1234 0000 V2 M12 ACTUAL 32K CONFIG 32K ^L PAGE 1 // JOB LOG DRIVE CART SPEC CART AVAIL PHY DRIVE 0000 1234 1234 0000 V2 M12 ACTUAL 32K CONFIG 32K // XEQ LISP ***** 1130 LISP 1.6 ***** BOSTON LATIN SCHOOL ***** LITHP ITH LITHTENING... (SETQQ A (X Y Z)) (X Y Z) (CAR A) X (CDR A) (Y Z) (PLUS 1 2 3) 6 (QUIT) ***** 1130 LISP 1.6 ***** END OF RUN ***** THO LONG, COME AGAIN THOON $ |
リスト 3 のコードは、IBM 1130 シミュレーターを起動し、実行するジョブを指定します。このコードは内部で、シミュレーターをディスク (LISP
インタープリターのロード先)、カード・リーダー (ジョブの読み込み先)、プリンター (出力の送信先) に合わせて構成します。指定するジョブは、リスト 4
(ソフトウェア・キット内の lisptest.job) に記載されているとおりです。ジョブの出力は、ジョブ名の後に .lst が付いたサブディレクトリーに保存されます。
リスト 4. lisptest.job ファイル
// JOB // XEQ LISP (SETQQ A (X Y Z)) (CAR A) (CDR A) (PLUS 1 2 3) (QUIT) |
IBM 1130 ソフトウェア・キットは、これを開発した IBM1130.org で保守されています。このサイトには、(FORTRAN および RPG の他に) APL デッキもあります。
Interdata 社は 1966年、16 ビットおよび 32 ビットのミニコンピューターの開発に乗り出しました (同社は 1973年に Perkin-Elmer 社に買収されました)。1974年に発表された Interdata-7 は、最初の 32 ビット・コンピューターの 1 つです。Interdata のアーキテクチャーは、大体において IBM System/360 メインフレームのアーキテクチャーをベースとしていました。このセクションの例では、シミュレーターの観点から (シミュレーターを使用したオプションの構成に関して)、マシンの起動方法についてもう少し掘り下げて検討します。
リスト 5 のコードは、UNIX バージョン 6 のイメージをダウンロードして、kits のサブディレクトリーに抽出します。ダウンロードを解凍した後は、Interdata シミュレーターを起動して構成に取り掛かります。最初にコンソール端末 (TTP) を有効にしてから、プログラマブル非同期ライン・コントローラー (PAS)、磁気テープ・コントローラー (MT) を関連付けます。これは、デバイス番号の競合を避けるためです。
ブート・デバイスであるカートリッジ・ディスク・コントローラー (DP) は、ソフトウェア・キットの外部ファイル (iu6_dp0.dsk) に関連付けます。ブート・ディスクの定義が完了すれば、このディスクをブートする準備は完了です。ディスクをブートすることにより、UNIX V6 イメージが起動されます。Interdata は、PDP 以外のシステムに UNIX を移植した最初の例です。
リスト 5. UNIX を使用した Interdata 32b システムのシミュレーション
$ mkdir kits/id_unix_v6 ; cd kits/id_unix_v6 $ wget http://simh.trailing-edge.com/kits/iu6swre.zip $ unzip iu6swre.zip $ ../../BIN/id32 Interdata 32b simulator V3.8-1 sim> set ttp ena sim> set pas dev=12 sim> set mt dev=85 sim> att -e dp0 iu6_dp0.dsk sim> boot dp0 ?unix Memory = 182.50 K login: root You have mail. # ls -la total 361 drwxr-xr-x 9 root 272 Jun 4 00:16 . drwxr-xr-x 9 root 272 Jun 4 00:16 .. drwxr-xr-x 2 root 1104 Nov 14 1978 bin drwxr-xr-x 2 root 784 Jun 4 01:07 dev drwxr-xr-x 2 root 528 Nov 14 1978 etc drwxr-xr-x 2 root 240 Jun 3 21:44 lib -rw-r--r-- 1 root 552 Jun 3 20:48 mdl drwxr-x--- 2 root 32 Aug 2 1978 mnt drwxrwxrwx 2 root 144 Jun 4 15:38 tmp -rw-r--r-- 1 root 424 Jun 4 00:27 tpboot -rw-r--r-- 1 root 568 Jun 3 20:48 tuboot -rw-r--r-- 1 root 728 Jun 3 20:48 uboot -rw-r----- 1 root 52272 Jun 3 23:56 unix -rwxrwxrwx 1 root 59236 Jun 4 01:21 unix.oxon -rwxrwxrwx 1 rm 60852 Jun 4 01:44 unix.sydney drwxr-xr-x 14 root 240 Jun 4 15:43 usr # |
リスト 5 に示されているように、システムがブートした後は、最近の UINX システムと同じようにシステムとの対話を実行することができます。
DEC 最後の 18 ビット・システムは、1969年に発表された PDP-15 です。それ以前の PDP はディスクリートのトランジスターで構成されていましたが、PDP-15 はそれとは異なり、TTL 集積回路を使用して実装されました。PDP-15 は PDP-9 との互換性を持ち、メモリー保護や浮動小数点をはじめ、さまざまな拡張機能を組み込んでいました。
PDP-15 がサポートしていたオペレーティング・システムはさまざまですが、このマシンで興味深い点は FOCAL (FOrmula CALculator)
言語を使用することです。Richard Merrill によって当初 PDP-8 用に作成された FOCAL は、3000 ワードのメモリー (12 ビット)
とユーザー・プログラム用の 1000 ワードしかないシステムでも実行することができました。FOCAL には、オペレーティング・システムは必要ありません。それ自体が、完全な環境です。FOCAL システムは、バイナリー・ローダー・フォーマットで使用される紙テープのイメージとして提供されます (リスト 6 を参照)。PDP-15 シミュレーターを起動した後、focal15 イメージをロードし、run を実行して起動します。すると、FOCAL15 プロンプトが表示されるので、短い FOCAL プログラムを入力し、GO コマンドでプログラムを開始します。
リスト 6. PDP-15 での FOCAL のデモ
$ ../../BIN/pdp15 PDP-15 simulator V3.8-1 sim> load focal15.bin sim> run FOCAL15 V6B *01.10 ASK "WHAT YEAR WERE YOU BORN?", BORN *01.20 ASK "WHAT YEAR IS IT?", YEAR *01.30 SET AGE=YEAR-BORN *01.40 TYPE "YOU ARE ", AGE-1, " OR ", AGE, " YEARS OLD.", ! *GO WHAT YEAR WERE YOU BORN?:1964 WHAT YEAR IS IT?:2010 YOU ARE 45.0000 OR 46.0000 YEARS OLD. * <Ctrl-E> Simulation stopped, PC: 000221 (SPA) sim> show dev PDP-15 simulator configuration CPU, idle disabled CLK, 60Hz, devno=00 FPP PTR, devno=01 PTP, devno=02 TTI, devno=03 TTO, devno=04 LP9, disabled LPT, devno=65-66 RF, devno=70-72 RP, devno=63-64, 8 units DT, devno=75-76, 8 units MT, devno=73, 8 units TTIX, lines=1, devno=40-47 TTOX sim> |
上記のリストには、シミュレーターとのやりとりも示されています。それは、Control-E を押すとシミュレーションが終了し、シミュレーター・フレームワーク・コンソールに戻るという部分です。コンソールに戻ると、デバイスを列挙するように要求することができ、これによってこの PDP-15 に対してシミュレートされた各種のデバイス (浮動小数点プロセッサー、紙テープ・リーダー、紙テープ・パンチなど) が表示されます。
この例は、イメージにはオペレーティング・システムが不要であり、イメージと対話できるという、SIMH が持つ (IBM 1130 システムで実行した、前のバッチとは異なる) 別の側面を明らかにしています。
SIMH の最後のデモでは、世界初のミニコンピューターである MITS Altair をシミュレートします。1975年に設計された Altair は Intel® 8080 プロセッサーをベースとしており、メモリーはわずか 256 バイトしかありません。容量は最小限であるにも関わらず、このモデルは発売を開始した最初のひと月で数千台の売り上げを記録しました。Altair のバス (S-100) の拡張性により、さまざまなベンダーが 18 スロット・システム用のカード (シリアル・カードやディスク・コントローラーなど) を開発できたことから、実用的なコンピューターになったというわけです。
Altair が登場する以前に設計されたコンピューター・システムもありましたが (そのなかには、同じく Intel 8008 プロセッサーをベースとしたものもありました)、それらに比べて Altair は実用に応えられるだけの強力さを持ち合わせていました (例えば、当時主要な言語として教えられていた BASIC を実行する場合など)。Altair は、パーソナル・コンピューター革命のきっかけとなったと広く認められています。
SIMH内では、標準の Intel 8080 ベースの Altair、あるいはそこから派生した Altair システムとして Zilog Z80 または Intel 8086 プロセッサーを使用した Altair システムを実行することができます。シミュレートされる Altair は、バンク・メモリーなどの追加機能も提供します。Altair 用のソフトウェア・キットは、CP/M (Control Program for Microcomputers) を実行する最も簡単な手段となります。リスト 7 に記載する例では、Altair シミュレーター (この場合は Z80 プロセッサー・バージョン) を起動してから、cpm2 スクリプト・ファイルを使用して CP/M をブートします。このスクリプトは 2 つのディスク (オペレーティング・システム・ディスクとアプリケーション・ディスク) を使用して CP/M 環境を作成します。CP/M 環境が作成された後は、使用可能なファイルをチェックアウトし、続いて Microsoft Basic を実行して Eliza プログラムを解釈します。
リスト 7. MITS Altair での CP/M のデモ
$ mkdir cpm ; cd cpm
$ wget http://simh.trailing-edge.com/kits/psaltair.zip
$ unzip psaltair.zip
$ ../../../BIN/altairz80
Altair 8800 (Z80) simulator V3.8-1
sim> do cpm2
62K CP/M Version 2.2 (SIMH ALTAIR 8800, BIOS V1.17, 28-Apr-02)
A>dir
A: PIP COM : LS COM : XSUB COM : STAT COM
A: GO COM : RSETSIMH MAC : SYSCOPY COM : SHOWSEC COM
A: DIF COM : R COM : W COM : L80 COM
A: M80 COM : WM HLP : WM COM : CBIOSX MAC
A: FORMAT COM : SYSCPM2 SUB : DDTZ COM : DSKBOOT MAC
A: TSTART COM : ED COM : DDT COM : EX8080 MAC
A: LOAD COM : ASM COM : LU COM : MBASIC COM
A: ELIZA BAS : DUMP COM : CREF80 COM : EXZ80 MAC
A: UNERA COM : BOOT COM : OTHELLO COM : WORM COM
A: LADDER DAT : LADDER COM : ZSID COM : ZTRAN4 COM
A: SURVEY MAC : CPMBOOT COM : TSHOW MAC : TSTART MAC
A: TSTOP MAC : UNERA MAC : MOVER MAC : EX8080 SUB
A: EXZ80 SUB : CCP MAC : DSKBOOT COM : USQ COM
A: MC SUB : MCC SUB : BDOS MAC : RSETSIMH COM
A: TSHOW COM : TSTOP COM : UNCR COM : SURVEY COM
A: EX8080 COM : EXZ80 COM : COPY COM : SID COM
A: BOOT MAC : BOOTGEN COM : LIB80 COM : DO COM
A>
A>mbasic eliza.bas
BASIC-80 Rev. 5.21
[CP/M Version]
Copyright 1977-1981 (C) by Microsoft
Created: 28-Jul-81
32824 Bytes free
**************************
ELIZA
CREATIVE COMPUTING
MORRISTOWN, NEW JERSEY
ADAPTED FOR IBM PC BY
PATRICIA DANIELSON AND PAUL HASHFIELD
BE SURE THAT THE CAPS LOCK IS ON
PLEASE DON'T USE COMMAS OR PERIODS IN YOUR INPUTS
*************************
HI! I'M ELIZA. WHAT'S YOUR PROBLEM?
? I'M IN LOVE WITH RETROCOMPUTING
DID YOU COME TO ME BECAUSE YOU ARE IN LOVE WITH RETROCOMPUTING
?
|
上記のリストからわかるように、ディスクには有用なユーティリティーが豊富に含まれています。これらのユーティリティーには、例えば CP/M アセンブラー (ASM.COM)、ライン・エディター (ED.COM)、1 組のデバッガー (Intel 8080 プロセッサー用の SID.COM と Z80 プロセッサー用の ZID.COM)、さらにはスクリーン・エディター (WM.COM) まであります。
SIMH はかつてのコンピューティング・システムに対応した優れたシミュレーターですが、増大するシミュレーターおよびエミュレーター群のうちの 1 つにすぎません。歴史的に興味深いエミュレーターには他にも数々の例があります。例えば、市販のハードウェアで IBM メインフレーム・コンピューター (System/370、IBM System/390®、IBM zSeries® など) をエミュレートする Hercules などです。
エミュレーターのなかには、歴史的なハードウェアを蘇らせることではなく、使用されていたハードウェアが存在しなくなったテレビゲームを復活させることを焦点としているものもあります。そのなかでもとりわけ興味深いエミュレーターは、MAME (Multi-Arcade Machine Emulator) です。このエミュレーターは、年代物のさまざまなテレビゲーム・ハードウェア (ゲーム・センターに置かれているようなゲーム機を含む) を対象にシステム・エミュレーションを行い、それによって古いプロセッサーと、これらのプロセッサーを中心に構築されたハードウェア環境 (データ・バス、ストレージ・デバイス、オーディオおよびビデオ・ハードウェアなど) をエミュレートします。現在、MAME プロジェクトでは 4500 を超えるゲームをエミュレートすることが可能です。MAME はまた、約 500 のコンソール、コンピューター、計算機をエミュレートする MESS (Multi-Emulator-Super-System) のコアにもなっています。
アポロ月面着陸ミッションで使用された AGC (Apollo Guidance Computer) など、特化されたハードウェアのシミュレーターもあります。また、これと同様の取り組みでは、軌道に入るまでの上昇中にロケット・エンジンの点火を管理するために使用されていた LVDC (Launch Vehicle Digital Computer) をシミュレートします。LVDC はトランジスターから設計されたコンピューターですが、AGC は集積回路を使って設計された初のコンピューターです。この 2 つには両方ともカスタム・インストラクション・セットがあり、プログラムはそれぞれに固有のマシン・コードで設計されています。
以上のエミュレーターやその他のエミュレーターについての詳細は、「参考文献」を参照してください。
レトロ・コンピューティングには、実に興味をそそられる魅力があります。現在私たちが使用しているコンピューティング・システムは、過去のコンピューティング・システムから派生したものです。これらのコンピューティング・システムの多くには、機能するハードウェアとして使用できるものがもはや存在しなくなっています。有難いことに、SIMH プロジェクトはそのようなハードウェア (そしてオペレーティング・システムとアプリケーション) に再び息を吹き込み、過去のコンピューティング・システムを新しい世代の人達が使って楽しめるようにしてくれます。
学ぶために
- Technical University of Berlin では、Konrad Zuse
の「Z」マシンについて詳しく説明しています。Zuse の Z3 と
Z4、そして最初の言語、プランカルキュールの詳細を調べてください。
- コンピューターの進化に関するウィキペディアの記事で、静かに競われてきたコンピューター構築に関する興味深い歴史、そしてそのなかで定義されてきたさまざまなスキーム (Konrad Zuse の初期の Z マシンから、ドイツの暗号通信を解読するために使用されたイギリスの Colossus コンピューターなど) を説明しています。
- 2010年の時点で、計算を自動化した初のデジタル・コンピューターの発明者については論争が続いていました。大抵は
ENIAC を開発したペンシルベニア大学ということになっています。けれども、ほとんど話題にされていませんが、それ以前の業績もあります。1930年代後半には、John Atanasoff と Clifford Berry が、現在 ABC と呼ばれる最初のコンピューターの作成にすでに着手しました。この初期の歴史に目を向けた、新しい本が最近出版されています。この本の著者、Jane Smileyについては、Wired の記事「Pulitzer Prize-Winning Novelist Tells the Tale of the World's First Computer」で取り上げられています。Smiley はコンピューターの歴史だけでなく、この発明の背後にある政治的、心理的背景、そして企業のドラマについても明らかにしています。
- 1971年、Intel は世界で最初のシングルチップの商用マイクロプロセッサー、4004 を発表しました。4004プロセッサーは 4 ビットの CPU
であり、毎秒 92,000 の命令を実行可能です。その後継である 4040 プロセッサー (1974年にリリース) では、インストラクション・セット、プログラム・メモリー、レジスター・セット、およびスタックが拡大されました。
- Computer History Simulation Project
は、多数のコンピューティング・システムのシミュレーターを実装します。このプロジェクトの
Web サイトに、30 を超える重要な対象システムのリストが記載されています。
- 「Writing a Simulator for the SIMH
System」を読むと、シミュレーターのアーキテクチャーについての詳細だけでなく、シミュレート対象となる各種マシンの詳細についても学ぶことができます。また、Bob
Supnik によるプレゼンテーション、「SIMH:
Forward into the Past」にも目を通してください。歴史的なシステムがどのようになっているかがシミュレーション用に説明されています。
- Peter
Schorn が、SIMH の Altair エミュレーター、および Altair に関する膨大な情報とソースを持つ Web サイトを管理しています。彼のサイトに、Altair のオペレーティング・システム、代替プログラミング言語、そしてその他のアプリケーションの膨大なリストが記載されています。
- Hercules は、さまざまな IBM メインフレーム (System/370、ESA/390、z/Architecture など) を対象としたオープンソースのエミュレーターです。Hercules は Linux® および FreeBSDをはじめ、各種のホスト・オペレーティング・システムで使用できます。
- この記事では、AGC などの特化した電子機器を焦点とするエミュレーターについて説明しています。Virtual AGC (および関連するエミュレーター)
は、コンピューティング・システムが持つ別の興味深い側面を維持します。AGC の詳細とその歴史については、『Journey to the Moon: The History of the Apollo Guidance Computer』を読んでください。
- ゲーム・エミュレーターは、面白い開発分野です。これらのエミュレーターは無料で入手できる場合もありますが、ゲームを提供する
ROM については、今でもライセンス保有者が所有しています。ROM
をダウンロードまたは使用する前に、必ず該当するライセンスを調べてください。大抵、これらの古いゲームは、購入して新しいハードウェアで実行できるようになっています。最も興味深いプロジェクトには、Multi-Arcade Machine Emulator、そして
(MAME をコアとする) Multi-Emulator
Super-System があります。ウィキペディアにも、ビデオ・ゲーム・コンソール・エミュレーターのリスト、そして豊富なエミュレーターのリストが記載されています。
- SIMH の実装、およびこのシミュレーター・フレームワークで実行できるコマンドについては、「SIMH User's
Guide」に詳しく説明されています。その他のエミュレーター・プロジェクト (コンピューティング・システムの復元を含む) についての詳細を調べるには、「Computer History and Simulation Links」を参照してください。
議論するために
- developerWorks blogs から developerWorks コミュニティーに加わってください。

M. Tim Jones は組み込みソフトウェアのエンジニアであり、『Artificial Intelligence: A Systems Approach』、『GNU/Linux Application Programming』(現在、第 2 版です) や『AI Application Programming』(こちらも現在、第 2 版です)、それに『BSD Sockets Programming from a Multilanguage Perspective』などの著者でもあります。技術的な経歴は静止軌道衛星用のカーネル開発から、組み込みシステム・アーキテクチャーやネットワーク・プロトコル開発まで、広範にわたっています。ソフトウェア・アーキテクトであり、本の著者でもある彼はコロラド州ロングモン在住です。