https://www.crimson-systems.com YouTube
  
ENIAC シュミレーター         → ENIACシュミレーターA (Programming)
   
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

 





      drawings → https://www.cs.drexel.edu/~bls96/eniac/drawings/





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
Pulse-level simulator of the ENIAC

     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ステップを開始



 
[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



Brian Stuart, PhD → https://drexel.edu/news/experts/stuart-brian










【 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





ENIAC 第2世代プログラミング(1948年以降) → https://ftp.arl.army.mil/~mike/comphist/48eniac-coding/index.html

Section I General Description of the ENIAC ENIACの概要
Section II Conversion of Digit Pulses to Programming Pulses デジタルパルスからプログラミングパルスへの変換
Section III Detailed Description of the Sixty Orders 60codeの詳細な説明
Section IV Summary of Orders 命令の概要
Section V A Suggested Test Program 推奨されるテストプログラム
Section VI Flow Diagram of Typical Problem 典型的な問題のフロー図
Section VII Coding the Operation Boxes 操作ボックスのコーディング
Section VIII Modified ENIAC 改良型ENIAC







【 関連書籍 】

■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人の女性プログラマー / キャシー・クレイマン   オーラル・ヒストリー(oral history): 口述歴史
  6人の女性プログラマー

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








     
 


   
  Pioneer Programmer / Jean Jennings Bartik  
     アーサー・バークス & ジーン・ジェニングス・バーティク

ENIACの女性プログラマ6人の1人
1948年 ENIACをプログラム内蔵方式に改造に携わる
BINAC,UNIVACの開発・設計に携わる




 Kay Mauchly インタビュー    微分解析機での弾道計算 左:ケイ




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

ネオン管 NE-2






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


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




コンピュータ―写真で見る歴史 / クリスチャン ワースター     コンピュータのデザイン・写真集 メインフレームからミニコン・PC等
 0:マンマシン/インターフェース
 1:科学、軍事コンピュータ
 2:メインフレームコンピュータ
 3:ミニコンピュータ
 4:マイクロコンピュータ
 5:デスクトップコンピュータ
 6:転換と変更






 https://www.crimson-systems.com