LoginSignup
1
1

More than 3 years have passed since last update.

[祝]HITAC10 生誕50周年

Posted at

目的

 ガラクタ箱を漁っていると、HITAC10.LZHとマジックで書かれた媒体が出てきた。
 何時作成したのか記憶にも無いが、なんと我が国初のミニコンピュータの名前ではないか。
 そして調べたらなんと、1969年2月に発表されてから今年は生誕50周年ではないか。
 ◆◆◆ そうだ、HITAC10 生誕50周年を祝おうではないか ◆◆◆
 HITAC10を得意(?!)のFPGAで再現してみようではないか。
 まあ、急がないと50周年が過ぎてしまいそうですけれどもね。
0001_01_l.jpg 画像は「コンピュータ博物館」より

経緯

 投稿者は日立関連の会社に在籍したことが有ります。
 入社後初めて扱ったコンピューターがHITAC10であり、それなりの思い入れが有ります。
 しかし、やはり大昔の事であり覚えているはずもなく、まずはネット等で情報を収集。
 1.日立評論1969年11月号:「超小形電子計算機 HITAC 10」に基本概念が記載されている。
  ※基本命令、動作周期等はこの資料を参考にしました。
 2,「組み込みCPUの道具箱」の「ミニコンHITAC10」では、既にFFPGAでの作成例が有り、またかなり詳細な情報が記載されています。
  ※大部分は、このサイトの情報を参考にしましたが、二番煎じである本機の完成度はこのサイトよりも低いような気が...。
  ※このサイトで作製されているVHDL(hitac3s_14.v)は、礼儀として閲覧しておりません。
  ※HITAC10.LZHは、このサイトから過去にダウンロードしたものかも知れません。
 3.「HITAC10 エミュレータ」を作られている方がいました。
  ※起動はさせましたが、テープの作り方が良く判りませんでした。
 4.あまぞんで「システムプログラムの実際 (サイエンスライブラリ情報電算機 11) 」が売っていましたので購入しました。
  ※命令の説明部分は役に立ちましたが、アセンブラ表記が異なっており理解が大変。(まあ、作者の目的が違うが)
 5.国会図書館に上記を含め何冊か関連本が有る事を確認。
  ※上記資料だけで一応動作したので行っていない。
 
 何にしても情報が少ない、 会社に居た頃はそこらかしこに情報があふれていたのに。
 大事なものでも平気で捨て去ってしまう、これは国民性なのか。
 もしHITAC10の関係者がこれを見られたら、資料を公開してほしい。(まあ、いないだろうが)

開発のコンセプトなど

 今回の目標は完成したHITAC10のemulatorを作ることではない。
 その理由としては、情報不足に加え投稿者の技術レベルに起因し、又今回は時間的制約も有り、完全性を求めない(求めても実現できないだろう)。

 では、なぜ行うのか。その理由としては
 1.投稿者の知的欲求(自己満足を含むが)。そこに山が有るから登るのだ。
 2.多少なりと次の世代への啓発が出来れば。
  FPGAの例題として、LEDちかちかが推奨されているが、それ以降は極端に敷居が高く、無理と諦めてしまう可能性が高い。
  こんなことが出来る、この程度のことはできる等を見せて、連続的な技術のステップアップを図る例となりたい。

前提条件

 以下のハード・ソフトを予め準備の事。(購入先、金額は参考までに)
 1. FPGA-board      EP4CE6 Starter(EBAYで購入、5K\位)、別に之で無くともEP4CE6の乗ったボードで構わない。
 2.Quartus Prime    FPGAのプログラムを作成。(開発は Ver17.1)

開発手順

 1.資料に記載されているメモリ(4KW)、レジスタ類を取り合えず定義。
 2.基本周期が1,4u、3サブサイクルと書かれているので、0.47uを基本クロックとして作成。
 3.動作はフェッチサイクルと実行サイクルより成るので、3+3=6ステートを基本とするシーケンサを構築。
 4.フェッチサイクルでは、メモリより命令を読み出すようにシーケンサに追加。命令はインストラクションレジスタ入れておく。
 5.実行サイクルでは、まず適当な(例えば加算)命令の処理をシーケンサに追加。
 6.旨く行ったら、インストラクションレジスタをデコードして、徐々に命令を追加していく。
 7.命令特有の処理は、その場に処理を書。似たような処理はフラグを立てて後で纏めて処理をする。
 8.全ての命令の処理(case文のお化け)を書き終えたら完成です。
  ※勿論、作成途中にも、各命令の動作を簡単に確認しておくべき。
 9.メモリに命令を書込んで、個々の命令の動作確認を地味に行う。

 開発したプログラム(Verilog)を下記に格納しているので、もの好きな方は参照してみて。
  「FPGA_HITAC10
H10_holt.jpg プログラムを実行中(只の基板の写真ですな)

デバッグ機能

 行き当たりばったりの開発なので、デバック機能の確保は重要事項。(コンパイルの時間が...)
 1.基本は「Signal Tap」頼り、思い通りにいかない場合は信号をトレースして、自分の頭の中と比較して間違いを探す。
  ※信号が見えなくなった場合は、LEDに出力するとか、(* KEEP )( Preserve *)等を使うと見えるかも。
 2.メモリ作成時の設定により「In-System Memory Content Editor」活かす。これも結構便利。
  ※稼働中のメモリの書き換えをサポート。HEXファイルのロード/セーブも可能。
   アセンブル結果でメモリを書き換えれば、コンパイルしなくても動作の再確認が可能。
  ※実行結果もメモリに書き込めば確認できる。メモリダンプツールが要らない。
 3.プログラム内にブレーク/ステップ機能を記載。
  ※好きな所でいくらでも止められる。Signal Tapでレジスタも見放題。
 4.LEDに実行中のレジスタを表示。
  ※実機にも付いているが、7SEGの方が分かり易い。

動作の概要説明

 <テープリーダー機能>
 1.本機はHITAC10本体に付随して、テープリーダー機能を有している。
 2.本体からの要求に応じて、テープリーダー機能が動作する。
 3.テープリーダーとの接続は簡易(独自)接続。(実機の接続はやけに複雑、上位機種のプロトコルなのだろう)
 4.テープデーターとして、メモリ(12KB)にOML,MASSを連続して格納している。
  ※なお、OMLテープデータにはパリティが付いておらず読み取り中にHLT、原因が判るまで結構時間を取られた。

 <メモリ>
 1.HITAC10のコアメモリは基本で4KW(8KB)。0.47u(多分)でR/W可能だが、読むと壊れるので再書き込みサイクルが必要。
  FPGAでは不要。
  ※コアメモリはバカ高い、軽自動車が買えるぐらいの値段だったと記憶している。
 2.コアメモリ相当の4KW(16KB)と、テープデータ(12KB)をFPGAに実装。

 <実行ステップ>
 1.本機はリセット直後、IPLをコアメモリ部に転送し、PC=2番地からIPLを実行する。
 2.IPLはテープリーダーに、テープ(OML)の読み込みを要求する。
 3.テープリーダーはテープデータを読み取り、本体に送出する。
 4.OMLの読み取りが完了すると、拡張機構ソフトの読み取りを始める。
 5.読み取りが完了すると、PC=0x20番地にジャンプし、MASSテープの読み取りを開始する。
  ※この部分は本来は手動操作であり、HITAC10には無い機能。
 6,MASSテープの先頭ブロックを読み取り後、PC=0x180にジャンプ。
 7.テープリーダよりの割り込み待ちでループしている。
  ※割り込み信号の仕様が不明のため、割り込み信号を発生させていないもので。
  ※MASSソフトの起動に成功したという情報は何処にも無いので、先駆者も同様なのでしょう。

結果

 努力の結果として下記の如く一応動作しているが、中途半端な仕上がりとなっている。
 1.基本命令の動作確認。(入出力、割り込みを除く)
 2.IPLの動作
 3.OMLテープの読み込み、拡張機能ソフトの読み込み。
 4.MASSテープの読み込みの途中で、割り込み待ちで無限ループ。

自己評価

 FPGAで設計されたHITAC10は10年前にも存在したが、外付けハードのはんだ付けが必要で敷居が高い。
 本機はその辺のFPGAボードで実行可能となっており、実施の敷居はかなり低いと思っている。
 まあ、ハードの進歩によるものですけれどもね。

 残念ながら、今回の作成は中途半端な状態で終わりそうな予感。これは、技術資料が公開されてないことにも起因する。
 年寄りが過去を懐かしむだけでなく、未来の(わが子も含めた)技術者たちに何かを残す努力をすべきと思う。
 手持ちの情報(恐らく紙)を公開する場所を作れないだろうか。情報が火葬場で焼却され消え去る前に。
 過去の技術を伝承し将来につなげる為に、可能な限り公開すべきと考えるが、如何なものだろうか。
 なお、もし追試する奇特な方がおられた場合、上記記載内容は無保証であり、各自の責任においてご利用願います。

1
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1