https://www.crimson-systems.com YouTube
  
ENIAC シュミレーター         → ENIACシュミレーターA
   
ENIACのシュミレーターは幾つかありますが、 2つのシュミレーターの紹介です。

@kinnla Till Zoppke    Java Applet版
Ablstuart Brian L. Stuart  go・Tcl/Tk版


Java Applet版は、プログラミングのケーブル配線・スイッチ設定をマウスで行うので、当時のプログラマー疑似体験ができます。
一方 go・Tcl/Tk版は、ケーブル配線・スイッチ設定の操作をファイルに作成し、シュミレーターに渡します。
そういった意味では、現在のプログラムの作成・修正に通じます。



ENIAC: Electronic Numerical Integrator And Computer




ENIACは、1946年にアメリカのペンシルベニア大学で、
物理学者のジョン・モークリー(John Mauchly)と電気技師のJ・プレスパー・エッカート(J. Presper Eckert)によって設計・開発されました。

 開発者: ジョン・モークリー、ジョン・プレスパー・エッカート
 場所: ペンシルベニア大学ムーア電気工学学校
 目的: 第二次世界大戦中に米陸軍の大砲の弾道計算を行うため
 特徴:
 約1万8000本の真空管を使用し、従来の機械式に比べ驚異的な計算速度を実現
                                                AIより



       アーウィン・ゴールドスタイン伍長が可搬式関数テーブルを操作





ENIACの大砲の弾道計算  https://ieeexplore.ieee.org/document/8540483















ENIAC 操作マニュアル → http://www.bitsavers.org/pdf/univOfPennsylvania/eniac/ENIAC_Operating_Manual_Jun46.pdf

 




ENIAC レイアウト (ムーア・スクール)




   ※8つのアキュムレータ1、2、15、16、17、18、19、20に、プリンター(IBMのカードパンチ)に接続されています。







ENIACシュミレーター (Java Applet版)

■マウスで、ケーブルの配線・各スィッチを設定し、実行(GOボタン)します。



下記 URLより ENIACシュミレーターのダウンロードができます。
URL → https://zuse-z1.zib.de/simulations/eniac/index.html




Javaランタイム環境バージョン1.7(以上)にします。 → f.a.qからダウンロード可
.






●シュミレータのダウンロードは、excutable jar_file をクリックしします。







●シュミレータのドキュメント 







kinnra →  GitHub






●ENIACシュミレーター SKIN








●アキュームレータ

・10進 10桁 符号有り P: プラス  M: マイナス (10の補数で加算)
・アキュームレーターは、12個のプログラムコントロールがあり、上段4個は、リピート不可、下段8個がリピート可
・スィッチで入力/送信用に切替
  入力: α β γ δ ε
  出力: A S AS



アキュームレータ No.3の写真
   kondo3d Home https://www.kondo3d.com/eniac/jp.html より

入力SW: α,β,γ,δ,ε   送信SW: A, S, AS     O: 何もしない    リピートSW( 1〜9 )
 


高速乗算器 https://commons.wikimedia.org/wiki/File:Eniac-panel.jpg より







【 ENIACシュミレーターで遊ぶ 】


eniac.jarをクリックし、 ENIAC構成画面等の選択を選択します。









 ・Simple example:    簡単な例
 ・Euclidean Algorithm: ユークリッドの互除法
 ・Fibonacci number:  フィボナッチ数

 他は、画面サイズを選択し、自分でケーブル配線・スィッチ設定をします。

※使用可能なユニットは、開始ユニット、サイクリングユニット、アキュームレータ、定数送信器のみ




[Simple example] → シュミレーターのデモ画面が表示
写真の人物はアーサー・バークスで、ポータブルコントロールステーションを操作しています。





●Overview window ・・・ 小さなディスプレイで、各々のパネルが見れるよう、画面範囲が設定できます。






予め、ケーブルセッティングがしてあるので、GOボタンで動作が見れます。

計算は、 5回 x 8 + 2 = 42

ACC1に8をセットし、リピート数は 5をセット
ACC2に2をセット





計算結果 42




【 動画 】




練習  3回 x 365 + 31 = 1126





●アキュームレータの内部配線



※各ユニットには、電源SWが有ります。
 電源がONになってないと動作しないので、ケーブル配線・スイッチ設定と合わせて確認が必要です。







  【 ユークリッドの互除法 】  2 つの自然数の最大公約数を求める

●Euclidean Algorithmを選択





ACCを4個使用   ACC2 と ACC3が連結 ( 10進20桁 )




定数ユニットに 6 と 9がセット済み




計算結果




※簡単なプログラムなら、ケーブル配線等おもしろいかも知れませんが、複雑なプログラムの場合デバックが大変です。

 ・各ユニットの電源をON
 ・アキュームレータの内部配線と終端抵抗器のセット
 ・各ユニットとトランクの配線
 ・アキュームレータの、入力SWと出力SWの設定
 ・リピートが有れば、リピートSWの設定
 ・サイクリングユニットでステップ毎の確認可









ENIACシュミレーター ( go・Tcl/Tk版 ) → https://www.cs.drexel.edu/~bls96/eniac/simulator.html

     Brian L. Stuart 教授 → https://www.cs.drexel.edu/~bls96/


■ケーブルの配線・各スィッチの設定を、一連の操作コマンドのファイル(プログラム)に出力し、エミュレータに渡します。

ENIACシュミレータは、ターミナルからコマンド入力、およびグラフィカルサポートも可になっています。
シュミュレータの動作では、goコンパイラー、Tcl/Tkが必要 (画面はWish)





GitHub  →  https://github.com/blstuart/eniac-simulator








goコンパイラのインストール  →  https://go.dev/doc/install







 






ENIACシュミレーター  ターミナル(DOS窓)


● programs内のエニアックプログラム






● 操作(コマンド)




● ユニット名




● 記法(一部)





●GitHubのDOCフォルダー内のcmd.tex, ref.tex 






● プログラム example.e

pコマンド: ジャンパーの接続
sコマンド: スィッチの設定




※注釈行は、 1桁目に #
※プログラムは UTF-8 BOM無しであること。




● シュミレーターの実行方法

eniac [プログラム名] →  eniac  sieve.e





b i で、実行  ・・・ ボタン i (イニシエータ)を押す




・計算結果(アキュームレータの値)は、prコマンドでプリント(IBMパンチカード)できます。
 (8つのアキュムレータ1、2、15、16、17、18、19、20のみ)
・シュミレーションでは、ターミナル(DOS窓)に表示されるので、結果の確認、計算途中の値の表示ができます。


※ コマンド q で終了





【 グラフィカルサポートの構築 】

@Tcl/Tkのインストール →  https://www.activestate.com/platform/supported-languages/tcl/  ( ActiveTcl )





 


もし、wish ( Windowing Shell) が動作しない場合  →  wishのパスを確認






windowsの環境変数に C:\ActiveTcl\binを追加






グラフィカルシュミレーターの実行方法

eniac  -v vis/eniactk  [プログラム名] →  eniac  -v vis/eniactk test.e




ENIACルームが表示されるので、ポータブルコントロールステーションで操作します。



[INIT] ボタンを押して実行




 
 Co  通常動作モード
 1P  1パルスモード(PULSE ボタンを押すたびに1サイクル単位のパルスを出力)
 1A  1加算モード(ボタンを押すたびに1回の加算を実行PULSE)
 CLEAR  プログラムの終了(アキュムレータの値はすべて 0 )
 READ  パンチカードリーダーの読込み
 INIT  計算を開始
 PULSE1  Addモードと1 Pulseモードで、それぞれ1ステップを開始



※ポータブルコントロールステーションが、画面から外れていたので修正しました。



eniactk.go の heightを 875に変更


再度コンパイルします。    →  go build -o eniactk.exe




 
[S1View] 〜 [S5View] で、区画毎 / 全体が見れます。




※セクション1〜5を表示する画像 (e1900s1.ppm〜e1900s5.ppm)を加工し、アキュームレータ番号を表示しました。

e1900s1.ppm


e1900s2.ppm


e1900s3.ppm





●1Pluseモードによるデバック方法

プログラムに、 s cy.op 1a を記述しておきます。




ポータブルコントロールステーションで、 PLUSE ボタンをクリックして進ませ、アキュームレータの内容が確認できます。








●example.e

定数送信器に 123 をセットし、 ACC6に加算(送る)します。

 

結果



●Adele Goldstine の技術マニュアルにある、べき乗表を計算するプログラムのサンプル → ENIACシュミレーターA


 コマンド p ・・・ 端子間のケーブル接続
 コマンド s ・・・ 各スィッチの設定


●Adele Goldstine の技術マニュアルにある、べき乗表を計算するプログラムのサンプル → ENIACシュミレーターA

※GitHub → programs 内にプログラムがあるので、 これらを試しながらプログラミングの練習をしました。



動画




■ Brian L. Stuart  →  ENIACに関するプログラミング

@ https://ieeexplore.ieee.org/document/8326772

A https://ieeexplore.ieee.org/document/8467000

B https://ieeexplore.ieee.org/document/8540483










【 ENIAC関連文書 】   →  https://ftp.arl.army.mil/~mike/comphist/





【 米陸軍 ENIACに関する報告書 1946年 】    → https://ftp.arl.army.mil/~mike/comphist/46eniac-report/index.html







Chapter 1 -- Introduction  → https://ftp.arl.army.mil/~mike/comphist/46eniac-report/chap1.htm








【 関連書籍 】

■Electronic Numerical Integrator and Computer (ENIAC) ENIAC Operating Manual  (操作方法 )    Periscope Film, LLC
 

イニシエーティング ユニット



■Electronic Numerical Integrator and Computer (ENIAC) ENIAC Technical Manual  ( プログラミング手法 )   Periscope Film, LLC
  Adele Goldstineの技術マニュアル
 

マスタープログラマ ユニット    PANEL1, PANEL2


定数送信ユニット






配線例



ENIACプログラム → https://www.clps.ugent.be/sites/default/files/talk-slides/UA_CHOC_Lehmer.pdf
図1.11 ENIACのプログラミングに相当する基本コンポーネントの接続図 (出典:Eames,Charles and Ray,A Computer Perspective: Background to the Computer Age、Harvard University Press. First Edition 1973; Second Edition 1990. )





  エニアック / スコット・マッカートニー    
     



  ENIAC神話の崩れた日 / ATANASOFF    
   



   ENIAC ―現代計算技術のフロンティア    モークリーによる処理の分岐(IF文)のアイディア ・・・ マスタープログラマ
     



  コンピュータの発明 / 能澤 徹   ENIACのプログラミング
 



  6人の女性プログラマー / キャシー・クレイマン    
  6人の女性プログラマー

 キャスリーン・マクナルティ
 フランシス・ビーラス
 ルース・リクターマン
 ジーン・ジェニングス
 ベティ・スナイダー
 マーリン・ウェスコフ










     


実験公開日 1946年2月15日
ジョンとプレスが、公開実験の前夜、白いピンポン玉を半分に切って表示ランプの先端にかぶせ、誰でも読めるように数字を描いてENIACを化粧直し。
 

ネオン管 NE-2






●ENIAC・他コンピュータの写真集 ・・・  ENIACなど複数のコンピュータの写真が沢山載っています。


CORE MEMORY ヴィンテージコンピュータの美 / オライリー・ジャパン
 


コンピュータ―写真で見る歴史 / クリスチャン ワースター






 https://www.crimson-systems.com