4004マイクロプロセッサ 50周年 ~ Busicom-141PF電卓プログラム

2021/12/13

 Busicom-141PFは、50年前、当時のビジコン社によって開発製造されたプリンタ電卓です。この電卓に内蔵されていた電卓プログラム(ファームウェア)は、インテル4004プロセッサの開発と並行してインテル4004プロセッサと同等なブレッドボードを使って開発されたようです。


全体のプログラムサイズは、基本部分1KB、平方根部分256Bからなります。先頭の256Bのアセンブラ言語(機械語)で記述された低レベルのプログラムで、後半の1KBの大半が、疑似命令と呼ばれる一種のサブルーチン(電卓マクロ命令)の先頭アドレスが並んだテーブルになっています。このようなテーブル記述によるプログラムは、FORTHにも採用されています。メリットは、コンパクトなプロクラムと効率的なプロクラム実行が実現できます。後日、JAVA(バイトコード)にも受け継がれていると思います。


下記は、電卓プログラムの概略フロー図です。




Busicom 141-PFには、エプソン製の17桁印字可能なドラム式インパクトプリンタ「MODEL-102プリンタ」が搭載されています。このプリンタからは、ドラム位置を知らせる約28mS間隔のセクタパルス信号が4004のTEST入力ピンに接続され、全体の処理の基準信号となっています。また、このセクタパルスは、キーボードの検出タイミングにも利用されていますので、電卓全体のタイミングを担う重要な信号になります。


概略フロー図の先頭部分で、プリンタドラムのセクタパルス信号待ちによる同期を行った後、キー入力の検出を行い、キー入力が確認できれば、キー毎の電卓マクロ命令を実行する仕組みになっています。


「MODEL-102プリンタ」は、17桁印字可能なドラム式インパクトプリンタです.プリンタドラムは回転方向に、14等分され、約28mS間隔で各位置タイミングを知らせるセクタパルス信号と回転ドラム先頭の文字タイミングを知らせるインデックスパルス信号が出力されています。各桁には、最大13種類の文字が刻印されていますので、インデックスパルス信号からセクタパルスを数えた位置で印字ハンマをトリガすれば、刻印された印影をインクリボンのインクで紙に転写できる仕組みになっています。


下記は、電卓マクロ命令を逐次実行する部分のプログラム(インタープリタ)です。“JMS 300H”で電卓マクロ命令を読込み、“JMS 100H”でそのマクロ命令の実体(低レベルのプログラム)を実行するしくみになっています。













下記は、“JMS 300H”と“JMS 100H”の内部処理です。“305H番地”から一連の電卓マクロ命令が格納されています。













モニタプログラムには、電卓マクロ命令レベルのトレースができる”J”コマンドを備えていますので、動きが追えます。下記は、「1」「2」を押した場合のトレース結果の画面です。















Busicom-141PFは、電卓プログラムの解析内容は、下記のURLで公開されています。

https://www.4004.com/2009/Busicom-141PF-Calculator_asm_rel-1-0-1.txt

興味ある方は、参照してください。


電卓プログラムを実行中でも、FPGA内RAMは、Dual Port化してありますので、いつでもモニタプログラムから参照可能です。














モニタプログラムは、ターミナルソフトだけでなく電卓キーボードからも操作できます。例えば、ASキーは、アセンブラ機能を提供しています。


「6」「0」「0」、「AS」、「I」「N」「C」「SP」「3」「SP」、「N」「O」「P」「SP」「SP」で600H番地から"INC 3"命令と"NOP"命令をアセンブルできます。


電卓キーによるモニタプログラムの操作は、それほど操作性は高くありませんが、SBC4004単独でも操作が可能になります。興味があれば、他のコマンドキーも試してみてください。


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