4004マイクロプロセッサ 50周年 ~ SBC4004/Busicom-141PFの詳細

2021/11/15

 本日は、November 15, 1971, Electronic News誌にインテル社が4004マイクロプロセッサの広告を掲載し、この発表した日から50年目"Intel 4004 — 50th Anniversary"に当たります。インテル社のOB会"Intel Alumni Network"が主催して、2021年12月8日に当時の関係者(Federico Faggin, Hal Feeney and Ted Hoff)を交え、50周年のオンラインイベントが開かれる予定だそうです。

4004開発時にはインテル社員ではなかったためか、残念ながら彼らと開発を共にした嶋正利氏の名前は無いようです。


さて、それでは、SBC4004/Busicom-141PFの詳細内容に入っていきたいと思います。

①SBC4004/Busicom-141PFの電卓操作

②SBC4004/Busicom-141PFのデバッガ・モニタの操作

③SBC4004/Busicom-141PFの回路図、部品表(BOM)と基板画像

④4004コアを含むFPGA内部回路図


細かな部分もありますので、必要に応じ見ていただければと思います。

次回は、オレンジピコショップで頒布予定の専用基板を使った製作方法について、専用基板が手元に届いた時点で説明していきたいと思います。


①SBC4004/Busicom-141PFの電卓操作


電卓として、単体でSBC4004/Busicom-141PFを動作させるには、プリンタと5V ACアダプターを接続し、電源と入れた後、「GO」コマンドキーを押すだけで、電卓プログラムが起動します。


それでは、例題として、「12.34 - 34.56 + 56.789 + 56.789 + 0.123」を求めてみましょう。まず、小数点位置と丸め方法の設定が必要です。

左の写真のように、小数点の位置を3桁目とし、丸め設定を四捨五入にします。



当時の電卓は、会計業務用としてのニーズが主であったため、小数点と丸め設定が必要とされていたのではないでしょうか。

次に、「C 12.34 + 34.56 - 56.789 + + .123 + =」とキー入力すると、結果として「91.481」が得られます。数値を入れた後にそれに対する演算キーを指定する形式で、業務用に向いていたのかもしれません。「+」が連続する部分は、同じ数値の場合、省略できる機能のようです。いずれにしても、レトロ感があります。



左は、プリント結果です。






その他は、電卓操作説明を参照してください。


②SBC4004/Busicom-141PFのデバッガ・モニタの操作


デバッガ・モニタの操作には、電卓キーボードとLED表示だけでも操作できますが、Pro MicroのUSB経由で、PC上のターミナルソフトTeraterm等に接続すると操作性が良いと思います。SBC4004/Busicom-141PFの電源投入後、速やかにターミナルソフトを接続状態にすると、下記のようなLED表示とターミナルソフト画面になります。(この場合は4004コアで動作しています。)












LEDの表示形式は、表示内容によって、下記のフォーマットになります。

 ★RAM内容表示

D.xxx.xxxxxxxxxxx : ROM内アドレス.ROMデータ(6バイト)

 ★ROM内容表示

P.xxx.xxxxxxxxxxx :  RAM内アドレス.RAMデータ(12文字)

 ★実行STOP時

P.xxx.xxxx.x.xx.xx.xxx : PC.命令.次命令.CL.SRC.データバス(X2, X3).ブレークポイントアドレス

 ★アセンブル時

P.xxx.xxxx.xxxxxxxx : ROM内アドレス. アセンブル結果命令. ROMデータ(8バイト)

 ★REG表示

A.x.C.x.xxxxxxxxxxxx : ACC.CY.REG(0)-REG(11)

 ★REG継続表示

xxxxxxxxxxxxxxxx :    REG(0)-REG(15)


さて、それでは、デバッガ・モニタのコマンドを使ってみましょう。ターミナルソフトから「U0 28↵」と入力すると下記のように電卓プログラムの一部が逆アセンブルできます。














次はすべての命令をアセンブルしてみましょう。

「A600↵ NOP↵ JNT 600H↵ JC 600H↵ JZ 600H↵ JT 600H↵ JNC 600H↵ JNZ 600H↵ JCN 15 600H↵ FIM 0P 55H↵ SRC 0P↵ FIN 1P↵ JIN 1P↵ JUN *-5↵ JMS 123H↵ INC 0↵ ISZ 0 *+7↵ ADD 0↵ SUB 0↵ LD 0↵ XCH 0↵ BBL 0↵ LDM 0↵ WRM↵ WMP↵ WRR↵ WPM↵ WR0↵ WR1↵ WR2↵ WR3↵ SBM↵ RDM↵ RDR↵ ADM↵ RD0↵ RD1↵ RD2↵ RD3↵ CLB↵ CLC↵ IAC↵ CMC↵ CMA↵ RAL↵ RAR↵ TCC↵ DAC↵ TCS↵ STC↵ DAA↵ KBP↵ DCL↵ ↵」と入力すとすべての命令がアセンブルできます。


「U600↵」と入力すると逆アセンブル結果が表示できます。













下記は、1+2を計算する例題のアセンブル・逆アセンブルした画面です。











その例題プログラムをステップ実行して、レジスタの内容を調べてみます。











その他の機能は、デバッガ・モニタコマンド一覧を参照してください。


③SBC4004/Busicom-141PFの回路図、部品表(BOM)と基板画像


SBC4004/Busicom-141PFの回路図です。

SBC4004/Busicom-141PFの部品表(BOM)(2021/12/02 Updated)です。


下記は、SBC4004/Busicom-141PF基板の表面画像です。














④4004コアを含むFPGA内部回路図


下記は、4004コアのブロックダイアグラムです。FPGAに特化した構成をしています。











見てもわかりにくいと思いますが、どんな雰囲気か感じてもらうため掲載してみました。

4004コアを含むFPGA内部回路図です。


(再クロール更新:2022/12/22)

4004マイクロプロセッサ 50周年 ~ SBC4004/Busicom-141PFの概要

2021/11/14

 4004は、最初のマイクロプロセッサとしてシンプル(最小限・低コスト)のマイクロプロセッサでした。その命令体系は、当時のDEC社ミニコンピュータPDP-8の命令体系に影響をうけているのではないかと思います。12bitという限られたプログラム領域、ページ分割されたプログラム領域、同じ命令名などです.4004の内部構成は、PC、ACC、SP、インデックスレジスタ、ALUなど、50年後のマイクロプロセッサに引き継がれています。

PDP-8のシステム価格が当時10,000ドルを超える価格とのことですので、インテル4004単体の価格にはなりますが、30ドル台は当時としても衝撃的と言えます。


このような4004ですが、使い倒すにはどうしてもデバッグ機能が必要になります。当時、2,395ドルと高価な「INTELLEC 4/MOD 4」と呼ばれる開発システムが販売されていたようです。そのデバッグ機能と同等以上のデバッガ・モニタを備えることで、ビルディングアップを重ね、オリジナルの電卓ファームウェアがそのままで動作できるBusicom 141-PF電卓を再現しました。

4004には、割込みもなく、3レベルのスタックしかないので、多重関数呼び出しもできません。そのため、いつでも任意のアドレスにジャンプできるジャンプ命令を差し込める機能をFPGAで実現することで、ステップ実行などのデバッグ制御を実現しました。

このデバッグ機能で、歴史的な4004プロセッサの体験学習にも使えるのではないでしょうか。以下にSBC4004/Busicom-141PFの概要・機能を説明します。


①電気的仕様

・電源:5V ACアダプター

・制御ポート:Arduino用USB、FPGAボード用JTAGポート

・プリンタポート:POS/ESC互換サーマルプリンタ専用コネクタ

・拡張入出力ポート:各4ビット

・プリンタ用電源:5V専用コネクタ

・表示器:16桁7セグメントLED

・キーボード:Busicom 141-PF配列のキーボード

・インディケータ:Busicom 141-PFのステータス表示LED、実行中LED

・設定SW:Busicom 141-PFの小数点位置・丸め設定SW、RUN/STEP切替


②形状

150mm×170mm(専用プリント基板)


③機能

・MPU 4004コア:FPGA上のコア、オプションソケットのMPU 4004実物が検出できない場合に有効化

・周辺チップ機能:4001(ROM)・4002(RAM)・4003(シフトレジスタ)・4289(標準メモリ用インタフェース)各チップ機能

・4,096ワード(バイト)の2ポートROM、1,280文字(ニブル)の2ポートRAM

・デバッグ支援機能:FPGAバスモニタ・命令実行制御とArduinoモニタプログラム

・Busicom 141-PF 周辺機器エミュレーション:電卓キーボード・「EPSON Model-102」プリンタをモニタプログラムでエミュレート

・Busicom 141-PF 電卓プログラム:ROM上に書き込み済み(Busicom社の解散により著作権は消滅)


④ユーザ・インターフェース

電卓キーボードと表示LEDによる操作または、USB経由でターミナルソフトから操作


⑤主な採用部品

★Cyclone II EP2C5T144 Mini Board

Altera社(現在は、Intel社) CycloneIIシリーズのFPGAを採用したボード

Doug Gilliland氏のGitHubで公開されている Cyclone II EP2C5を採用


★Arduino Pro Micro(3.3V版)

SparkFun Pro Micro - 3.3V/8MHz ボード(FPGAと直結するためには、3.3V版が必須)

FPGAとArduinoスケッチが連携し、豊富なデバッグ機能を実現しました。

・ROM・RAM参照・書き込み、レジスタ参照・変更

・I/Oポート読込み・書き込み

・ステップ実行、連続実行、トレース実行、ブレークポイント設定

・アセンブラ・逆アセンブラ

・FPGAレジスタダンプ


★POS/ESC互換サーマルプリンタ GOOJPRT QR204(58mm紙幅)

ユーザ定義のグラフィック文字で、ラインプリンタ「EPSON Model-102」の印刷文字を再現


下記は、SBC4004/Busicom-141PFのブロックダイアグラムです。















下記は、FPGA内部のブロックダイアグラムですが、細かな部分になりますので、読み飛ばしていただいても結構です。


















次回は、デバッグ・モニタ機能及び、Busicom 141-PF電卓操作の紹介をしたいと思います。

(再クロール更新:2022/12/22)

4004マイクロプロセッサ 50周年 ~ インテル4004とBusicom 141-PF

2021/11/13

①インテル4004
この写真は、以前入手したインテルP4004とセカンドソースのナショセミINS4004Jです。



このマイクロプロセッサは、50年前の1971年11月15日にインテル社から世界初の商用MPU 4004として発表され、それ以降、マイクロプロセッサの黄金時代が開幕しました。







インテル4004は、写真のように16ピンのDIPのLSIです。4004のマーキングの数字から4004であることがわかります。当時電卓を製造していた日本のビジコン社が米国のインテル社と開発契約を行い、事務用プリンタ電卓Busicom 141-PFに搭載された4ビット・マイクロプロセッサです。開発契約上のチップ名は、NCM-ARU、NCM-ROM、NCM-RAM、NCM-SHRでしたが、インテル社が発表した時点では、各々4004、4001、4002、4003と命名され、MCS-4(Micro Computer Set)と呼ばれました。

4004開発ストーリは、有名です。ビジコン社がインテル社に、ソフトウェアの柔軟性に着目しプログラム駆動の電卓専用LSIを開発依頼したところ、インテル社のエンジニアが提案した、ビジネス的に有利なマイクロプロセッサ命令を採用し、プロセッサ命令による電卓疑似命令(一種の関数)の組み合わせによる、Busicom 141-PF電卓を実現したことでした。

4004マイクロプロセッサの主な仕様:
・ 4ビット・マイクロプロセッサ(16ピンのDIP)
・ 2,300個のPMOS トランジスタ(10μmデザインルール)
・ 4ビット幅の ALU
・ 3レベルのサブルーチン命令を含む46命令
・ 10.8マイクロ秒の命令サイクル(クロック周波数704KHzの8倍周期)
・ 別チップの最大4,096ワード(バイト)のROM、最大1,280文字(ニブル)のRAM

この4004マイクロプロセッサ 50周年に合わせて、今回、SBC4004/Busicom-141PFを
製作してみることにしました。

②Busicom 141-PF
事務用デスクトップ電卓としてプリンタのみで表示器がない電卓でした。14桁まで取り扱えますので100兆円未満までの計算ができます。専任の事務員の方がブラインドタッチで金額計算をこなしていたのではないかと思います。

ビジコン社Busicom 141-PF電卓は、情報処理学会によって2011年、情報処理技術遺産に指定されました。インターネット上のバーチャル博物館「電卓博物館」で展示されていますが、実際に動作可能か定かではありません。

















「情報処理学会 コンピュータ博物館」より引用 URL:http://museum.ipsj.or.jp/heritage/2011/img/busicom-n3.jpg

同時期に発売されたOEM商品Unicom System社の141電卓の操作マニュアルがinternet Archiveサイトに掲載されていますので、興味ある方は、参照ください。

インテル4004はすでに希少価値となり、限られた数のチップがeBayなどで取引されています。そのため、インテル4004に触れていただけるため、現在の技術(ArduinoとFPGA)で、お手軽に4004コアおよび、電卓機能を再現してみました。

もちろん、インテル4004用のソケットを設けていますので、実物の4004があれば、その4004が141PF電卓のファームウェアを実行し、4004が検出されなければ、FPGA内蔵の4004コアによって、141PF電卓のファームウェアが実行できます。

内蔵のプリンタは、「EPSON Model-102」ラインプリンタが採用されていましたが、41PF電卓のファームウェアのプリント指令をモニタ・デバッガがエミュレートしていますので、実物と同じ印字結果が得られます。今回は、LED表示器にも入力値、計算結果を表示して使いやすいように再現しました。

下記の写真は、実物の4004を搭載し、電卓プログラムを実行して平方根の計算した結果です。


SBC4004/Busicom-141PFの専用基板は、ピコソフト株式会社様のご協力で、オレンジピコショップより頒布させていただく予定です。次回以降で詳細仕様・製作記事を掲載する予定です。

(再クロール更新:2022/12/22)