テキサス・インスツルメンツ TMS0100シリーズ

TMS0100シリーズは、1971年9月にテキサス・インスツルメンツ（TI）によって発売された電卓用マイクロコントローラのファミリである。TMS0100シリーズの最初のものは、TMS1802NC (TMS0102)であった。 TMS0100シリーズは、電卓に必要な論理回路が一つのチップに集積された「ワンチップ上の電卓」（Calculator-on-a-chip）である。 「ワンチップ上の電卓」としては世界初ではない。しかし、内部に4ビットのCPU、Read only memory（ROM）、Sequential Access Memory（SAM）、そして入出力端子（I/O）を統合していた。 そのため、実質的な世界初のマイクロコントローラと見なされることが多い。しかし、後述のように1974年のTMS1000を世界初のマイクロコントローラとする人もいる。 1970年11月に半導体メーカーMostekは、世界初の「ワンチップ上の電卓」（Calculator-on-a-chip）である Mostek MK6010 を発表した。 従来、電卓の論理回路を作るために複数の半導体が必要であったが、ついに半導体一個だけで電卓の論理回路が全て収まるようになった。 MK6010は、ビジコン社の Busicom Junior という電卓に搭載された。 MK6010は、ビジコン社専用のチップであったが、後に MK5010 として一般に販売された。 Mostek MK6010 の登場によって、テキサス・インスツルメンツも「ワンチップ上の電卓」の開発が必要となった。 1971年9月17日にテキサス・インスツルメンツは、「ワンチップ上の電卓」である TMS1802NC を発表した。 主な開発者は、ゲアリー・ブーン（Gary Boone）とマイケル・コクラン（Michael Cochran）であった。 TMS1802NCは、約5,000トランジスタで構成されており、内部に4ビットのCPU、Read only memory（ROM）、Serial Access Memory（SAM）、そして入出力端子（I/O）を統合しており、今でいうマイクロコントローラに近いものであった。 マスクROMに四則演算（加減乗算）ができる電卓のプログラムが書き込まれており、外付けの電子部品を接続するだけで電卓の回路が完成した。 そのため、技術力の低い企業でも電卓の製造が可能になった。 ワンチップのため製造コストも低下し、一個20ドル程度で入手可能であった。 TMS1802NCは、TI Datamath電卓とSinclair Executive（英語版）電卓などに使用された。 その後、TMS1802NCは、TMS0102と改名された。 TMS0100シリーズは、PMOSロジックで作られていた。電源に必要な電圧は、VDD : 0 V、VSS : +7.2 V、VGG : -7.2 Vの3種類であった。つまり2電源（+7.2 V, -7.2 V）が必要であった。 消費電力は、通常265 mW、最大400 mWであった。 最大クロック周波数は、400 kHzであった（単相クロック）。通常は250 kHzで使用することが推奨された。 実際の電卓では消費電力を抑えるために150 kHzから200 kHzで動作させることが多かった。 内蔵の揮発性メモリは、Random Access Memory (RAM) ではなく、Serial Access Memory (SAM)というシフトレジスタを基本としたものであった。SAMのデータ構成は、演算レジスタ（3×BCD11桁×4ビット）とフラグレジスタ（2×13ビット）の合計182ビットであった。電卓専用のため汎用で使える空きメモリのようなものはなかった。 内蔵の不揮発性メモリは、Read Only Memory (ROM) であったが、今のような8ビットの倍数でデータを扱うものではなく、1ワードが11ビットであり、320ワードの命令を格納できた。つまり合計3,520ビットであった。 内蔵CPUの詳細は不明だが、SAMの一部を11桁のBCDとして扱うことができることとROMの容量が非常に少ないことからハードウェアでBCD演算をサポートしていたことは明らかであった（320ワードでBCD演算のサブルーチンを組むのは不可能なため）。 TMS0100シリーズは、28ピンのパッケージに収められていた。 D1からD11までの11端子がキースキャン用の出力端子。KN, KO, KP, KQの4端子がキー入力端子。SAからSHとSPの9端子がセグメント表示出力であった。残りはクロック入力CKと電源3端子（VDD, VGG, VSS）であった。 TMS0100シリーズは、電卓として以下の機能を持つ。 8桁あるいは10桁の表示（一部機種は8桁＋指数2桁） 四則演算（一部機種は指数入力、逆数、二乗、平方根あり） 浮動小数点あるいは固定小数点 定数計算あるいはチェーン操作 自動数値丸め（四捨五入、切り捨て、切り上げ） オーバーフロー検出 ゼロサプレス キー入力の自動エンコード（キースキャンはハードウェアが自動で行った） デコードされた表示出力 電源ON時の自動初期化 TMS0100シリーズは以下の品種が存在する。 実際にはTMS0100という名称はなく、TMS0101から番号が始まる。 しかし、これらの中で最初に登場したのは、TMS1802 (TMS0102)である。 加算器方式電卓（8桁）：TMS1802 (TMS0102), TMS0103, TMS0105, TMS0109, TMS0112 加算器方式電卓（10桁）：TMS0106, TMS0107 通常方式電卓（8桁）：TMS1875, TMS0101, TMS0110, TMS0111, TMS0115, TMS0119 通常方式電卓（10桁）：TMS0118 通常方式電卓（8桁＋指数2桁。指数入力、逆数、二乗、平方根）：TMS0120 BCDコプロセッサ：TMS0117 TMS0117は、TMS0100シリーズのBCD演算機能だけを集積回路にしたものである。 TSM0100シリーズの内部構造は、マイクロコントローラに類似していることは間違いない。 しかし、TMS0100シリーズを世界最初のマイクロコントローラとせず、1974年のTMS1000こそ世界初のマイクロコントローラとする人も多い。 それは以下のような理由である。 TMS0100シリーズは、レジスタ構成が電卓に特化し過ぎており、汎用性がない。 TMS0100シリーズは、ユーザー（電子機器開発者）が作成したプログラムを実行できない。 これらのことからTMS0100シリーズの内部構造はマイクロコントローラに類似しているもののユーザーにとっては「ワンチップの電卓」の一つに過ぎないといえる。 しかし、マイクロコントローラの定義が明確ではないので、TSM0100シリーズを世界初のマイクロコントローラと見なしても間違いではない。 そのため、TMS0100シリーズが「世界初のマイクロコントローラ」なのかどうかについては見解によって異なると言える。 マイクロコントローラ テキサス・インスツルメンツ TMS1000（世界初の汎用性のあるマイクロコントローラ） 電卓 Intel 4004（世界初のワンチップマイクロコンピュータ。これも電卓のために作られた） ^ a b c d TMS 0100 NC MOS/LSI One-Chip Calculator Series for Design Engineers ^ a b c d The Arrival of the "Calculator-on-a-Chip" (Vintage Calculators Web Museum) ^ a b c d e f Texas Instruments TMS0100 Family (DATAMATH CALCULATOR MUSEUM) ^ Texas Instruments: They invented the Microcontroller (DATAMATH CALCULATOR MUSEUM) ^ A History of Early Microcontrollers, Part 1: Calculator Chips Came First (EE Journal) ^ a b 1974: GENERAL-PURPOSE MICROCONTROLLER FAMILY IS ANNOUNCED(Computer History Museum) ^ a b THE TMS1000: THE FIRST COMMERCIALLY AVAILABLE MICROCONTROLLER (HACKADAY) ^ News Archive - Texas Instruments TMS 1802 Calculator Chip Introduction (THE OLD CALCULATOR WEB MUSEUM) ^ a b c The Story of the Datamath Calculator (DATAMATH CALCULATOR MUSEUM) ^ Texas Instruments SR-10 Version 1 (Display 2) (DATAMATH CALCULATOR MUSEUM) ^ 例えば、3.14×2, 3.14×3, 3.14×4 のような計算をするとき、毎回3.14を入力するのは手間なので、それを省略する機能。今の電卓にも存在し、電卓メーカーによって操作方法が大きく異なる。 ^ 計算結果が表示されているときに演算子キー（＋ー×÷）を押して計算の続きをする機能。今の電卓では当然となっている。 ^ 古い電卓は、123を表示するときに"00000123"と表示していた。123の左にある余計なゼロの表示を抑制する機能のことである。 ^ [+=][-=]のようなキーを有する電卓のこと。表示されている数値から加減算を行うことが容易になる。例えば、通常の電卓だと、表示されている数値から500を引くときは、[-][5][0][0][=]と操作する。一方、加算器方式の場合、[5][0][0][-=]と手順が一つ減る。加減算だけを繰り返すときは操作が楽になる。2023年現在でも少ない種類の加算器方式電卓が販売されている。