
| https://www.crimson-systems.com | YouTube |
| ENIAC シュミレーターA go・Tcl/Tk版のプログラム → ENIACシュミレーター |
ENIACシミュレーション( https://ieeexplore.ieee.org/document/8326772 ) のサンプルプログラムの紹介です。 ENIACのプログラミングは、計算(数式)をENIACで処理できるように分解しなければなりません。 さらに処理の手順・組合わせを考えます。(データフロー・マシン) これらは、相当に経験を積まないと出来ないと思います。 プログラム作成に於いてセットアップ図が必要なので、未記入の用紙を作成しました。 ![]() |
![]() |
●GitHub → programs 内に小さなプログラムがあります。 sq.e、sq2.e、sq3.e の順に試しました。 ![]() |
![]() |
![]() |
●ENIACの操作コマンド |
![]() |
●ENIACのユニット |
![]() |
●記法 (抜粋) |
| i 開始ユニット |
![]() |
| p マスタープログラマ |
![]() |
| a1〜a20 アキュームレータ |
![]() |
| c 定数送信器 |
![]() |
| pr プリンター 8つのアキュムレータ1、2、15、16、17、18、19、20は、プリンター(IBMのカードパンチ)に接続されている。 |
![]() |
| ●Adele Goldstine の技術マニュアルにある、ENIACの基本操作より、べき乗表を計算するプログラムのサンプル 上記を利用し、1 〜 1000 迄の2乗の表を作成するには、
|
||
●ENIACのプラグボードの接続・スイッチの設定 |
||
![]() |
||
●プログラムの制御フロー @プログラムライン1-1の開始ユニット出力信号は、アキュムレータ6と7のプログラム5と、定数送信器のプログラム26を起動します。 この結果、2つのアキュムレータのそれぞれに1が加算されます。 ![]() Aプログラム 5 が完了すると、アキュムレータ 6 はプログラム ライン 1-2 に接続された 5o ラインに制御パルスを送信し、 マスター プログラマのステッパー C の入力に送られます。 ![]() Bステッパー C のカウントが 999 を超えていない場合、 マスター プログラマはプログラム ライン 1-3 に接続された C1o ラインに制御パルスを送信します。 ![]() Cプログラムライン1-3の信号は、両方のアキュムレータのプログラム6をトリガーします。 このプログラムは、アキュムレータ6にデータを2回送信させ、アキュムレータ7にデータを2回受信させ、現在の値に加算します。 つまり、アキュムレータ6の値が2倍になった値がアキュムレータ7に加算されることになります。 ![]() Dこの加算が完了すると、アキュムレータ 7 は 6o 端子に制御パルスを送信し、 プログラム ライン 1-1 を駆動して、プロセス全体を再度開始します。 ![]() |
||
|
||
![]() |
![]() |
|||
![]() |
|||
開始ユニットのパネル |
|||
|
【 マスタープログラマの設定 】
![]() |
![]() |
端末とスィッチ ( Master Programmer PANEL 1 ) |
![]() |
| Master Programmer PANEL 1 | Master Programmer PANEL 2 | |
![]() |
![]() |
|
20di 〜 11di Decade direct input terminals |
| Adi 〜 Kdi | Stepper direct input terminals | |
| Ai 〜 Ki | Stepper pulse input terminals | |
| Acdi 〜 Kcdi | Stepper clear direct input terminals | |
| A1o 〜 A6o; ... K1o 〜 K6o | Stepper program pulse output terminals |
【 アキュームレータ 6 の設定 】
![]() |
![]() |
![]() |
![]() |
| |
![]() |
【 アキュームレータ 7の設定 】
![]() |
![]() |
![]() |
![]() |
![]() |
【 定数送信器の設定 】
![]() |
||||||
| |
||||||
![]() |
||||||
|
||||||
■シュミレーション結果 |
||||||
![]() |
||||||
各セクタの表示は、 [S1 View] 〜 [S5 View] のボタンをクリック ![]() |
||||||
![]() |
||||||
Secter 2の ACC6 & ACC7 ACC6: n=1000 ACC7: n^2=1000000 |
||||||
![]() |
||||||
動画 |
||||||
| stepを0〜2の範囲でテストしました。 |
![]() |
step=0 |
![]() |
step=1 |
![]() |
step=2 |
![]() |
※同様なプログラムを修正したもの




| ●Cube3.e nの2乗、3乗 |
![]() |
![]() |
プリンター |
![]() |
| ●アダプター(Adapters) のテスト |
| @ デジット・アダプター(Digit Adapters): 10桁の数値信号(デジット・パルス)の順序を入れ替えたり、特定の桁だけを抽出したりする Aプログラム・アダプター(Program Adapters) 複数のユニットを並行して動かしたり、特定の条件で計算の順序を変えたりする際の論理ゲート的な役割を、物理的なプラグの差し込みによって実現。 |
| 【 testpd.e】 |
![]() |
・定数送信器に、 1234567890 をセット ・ACC1に定数器から 1234567890を取り込む ・ACC1の内容をアダプターで5桁上下交換 ・アダプターの上下 交換結果をACC2に送る |
| |
![]() |
| ●高速乗算器(High-Speed Multiplier) |
| 乗算は、九九表を使い積を10位桁と1位桁に分け、10位(LHPP)と1位(RHPP)の部分積を集計して積を計算します。 |
| 被乗数:3の九九表を作成 ※サイクリングユニットの 1P, 2P, 2'P, 4Pで、乗数の1〜9を生成することができます。 |
![]() |
被乗数3の 積を求め、Left Hand Partial Product(10の位) と Rigth Hand Partial Product(1の位)の値から、 サイクリングユニットの 1P, 2P, 2'P, 4Pで数値が生成できるようにします。 |
![]() |
上図の被乗数3の積の表から、 ・マトリックス回路で、パルスが通過できないよう抵抗で抑制します。 ・また数値の生成不要なパルスは省きます。 ![]() |
●Arthur W. Burksの乗算器の構造図 |
![]() |
| ●乗算処理の概要 @被乗数をACC11、乗数をACC12へ A乗算器は 10の位をACC13、1の位をACC14 or ACC15へ B各々の部分積(LHPPとRHPP)を求める C部分積は、シフター(桁処理)をおこない、L側・右側を加算する D左側と右側の合計が乗算積(20桁) 10の位: LHPP(Left Hand Partial Product) 1の位: RHPP(Right Hand Partial Product) |
![]() |
例) 3 x 6 = 18 ・・・ 計算結果 1(Left Hand Partial roduct) と 8(Right Hand Partial roduct)の信号が生成される LとRの部分積を累計して結果のACCへ |

【 multtest2.e 】 42 x 347
![]() |
![]() |
![]() |
![]() |

![]() |