KIM-1

KIM-1(Keyboard Input Monitorの略)は、モステクノロジーが1976年に開発した6502ベースのワンボードマイコン（マイクロコンピュータ）キットである。発売当時、その低価格と拡張性により成功を収めた。

 歴史 
モステクノロジーの最初のプロセッサ 6501 はMC6800用のマザーボードにセットして使うことができたので、能力のある技術者やホビーストは既存のハードウェアを使って簡単にシステムを構築することができた。これはモトローラを怒らせ、モスは 6501 を市場から引き上げざるを得なくなった。そこでピン配置を換えて投入したのが6502である。機能は 6501 と変わりなかったが、周辺のハードウェアが揃っていないため、そのCPUを使ったシステムを作ることはハードルが高くなってしまった。

モスの650xチームのリーダーチャック・ペドル（以前は モトローラのMC6800チームのメンバー）は、そのようなニーズを満たすために KIM-1を設計し、1976年にリリースした。マシンは基本的に技術者に使ってもらうことを想定していたが、多くのホビーストがいることがすぐにわかった。システム構築はキットの価格245ドルを含めて500ドル以下で可能で、後は使い古しの端末とカセットテープレコーダーがあればよかった。

KIM向けの小さなアセンブリ言語プログラムが載った本がいくつも出版された。例えば、"The First Book of KIM" がある。あるデモプログラムではソフト制御可能な出力ビットを小さなスピーカーにつないでKIMに音楽を奏でさせた。

システムは Tiny BASIC 言語が使えるようになってさらに人気が高まった。ただしこれを使うにはメモリを拡張する必要があった。また、テープからのBASICのロードには15分間かかった。

ロックウェル・インターナショナル（6502のセカンドソース）は Synertek と共に 1976年に評価ボード AIM-65 をリリースしている。AIMにはフルASCIIキーボードと20桁の14セグメント英数字LEDディスプレイ、キャッシュレジスターのような小さなプリンタを備えていた。ファームウェアとしてデバッグモニタが標準で搭載されており、ユーザはオプションのROMチップを購入してアセンブラか Microsoft BASIC インタプリタを選ぶことができた。

さらに、Synertekは派生品SYM-1を出している。これはKIM-1とAIM65の中間とも言うべきもので、KIMのような小さな表示と16進入力用の29キーのキーボードを備えていたが、AIMと互換のある拡張インターフェイスを備え、RS-232Cも持っていた。

KIMを出して間もなくモステクノロジーはコモドールに買収され、KIM-1はCBMのラベルを付けて売られるようになった。チャック・ペドルはQWERTY配列のフルキーボードとカセットテープ装置とモノクロディスプレイ装置を組み込んだ拡張版の開発に取り掛かった。

ディスプレイは新たに設計したデジタル回路で駆動され、外付けの端末を不要とした。内蔵ROMには BASIC が格納されるようになり、電源を入れると同時にBASICが使えるようになった。こうして1977年、PET 2001 がリリースされた。これは同年発売された歴史的な3つのホビーパソコンの1つである（他は Apple II と TRS-80）。

 詳細 
KIM-1組み立てキットの内容は以下の通りである。
 プリント基板×1: 部品は片面実装
 CPU：6502×1
 周辺チップ
 6530×2（1KB ROM、64バイト RAM、8ビット双方向ポート×2、プログラマブル・インターバルタイマ）
 6102×8（1Kビット RAM）
 周辺デバイス
 7セグメントLED×6桁分
 24キー電卓型キーパッド

KIM-1の説明書には "1 K BYTE RAM" とあるが、6102×8による1024バイトの他に6530×2による128バイトが加わるので、正確には1152バイトである。Byte magazine 1976年4月号で紹介され、掲載された広告には "1 K BYTE RAM" および "2048 ROM BYTES" と書かれていた。

6530の多くのI/Oピンは基板の端にあるコネクタ部分に接続されていて、TTY 33-ASRテレタイプ端末や紙テープ装置を接続するシリアルポートとして使うことができた。一部のコネクタピンは電源供給用、また一部はカセットテープレコーダを接続することができる。

初期のマイクロコンピュータである Altair 8800 などは、ずらっと並んだスイッチでデータを入力した。使いやすくするためには、まず「ブートストラップローダ」という小さなプログラムをスイッチを使ってマシンに入力しなければならなかった。一度プログラムを入力し終えると、そのローダがもっと大きなプログラムを紙テープ読み取り装置などから読み込んだ。これにはどんなに小さなプログラムでも読み込むのに5分以上かかり、スイッチを操作していてちょっとでも間違えるとブートストラップローダが誤動作することになるのである。そうなったら、最初からやり直すことになる。

KIM-1はもう少し複雑なブートストラップ・ローダに相当するプログラムTIMを 6530の内蔵ROMに焼き付けてあった。このプログラムはカセットテープを記憶装置として使う機能を持っており、LED表示を操作し、キーパッドからの入力を受け付けた。電源を入れると、TIMが動作し、ユーザは即座にキーパッドから入力することができた。KIM-1は最初のワンボードマイコンの1つであり、電源装置を追加するだけでコンピュータの実験ができた。その事実と比較的低価格で始められることによって1970年代後半を通じてホビーストの間で人気を博した。

 ビデオディスプレイ 
ドン・ランカスター は、KIM-1 用の低価格なビデオディスプレイを開発した。追加基板でTVまたはモニターに最大4000文字を表示できる装置であった。一般的な設定は、16行×32桁表示で、大文字だけというものであった。その基板上には10個の低価格なICが使われているだけで、KIM-1 のメモリを表示用に利用していた。

Popular Electronics 誌の1977年6月号で TVT-6 プロジェクトが始まった。このキットは PAiA Electronics が 34.95ドルで通信販売した。

ドン・ランカスターはこれを応用してカラー表示と単純なグラフィックス表示が可能な装置を The Cheap Video Cookbook という本で紹介した。

 仕様 
 CPU: MCS6502
 2×PIO MCS6530 - 1024×8ビットROM、64×8ビットRAM、2×8ビットGPIOポート、
 8×6102 SRAM 1024×1 （合計1152バイト）
 6×7セグメントLED
 24キーの電卓型キーパッド
 2×シリアルポート
 Terminal Interface Monitor (TIM) - ブート、キーパッド、7セグメントLED、カセットレコーダを制御

 テープのフォーマット 
カセットテープ上では、個々のビットが2.484ミリ秒間の音を3つ配置することで表現される。最初の音は常に3700Hzで、2つめの音は "0" なら 3700Hz、"1" なら 2400Hz 、最後の音は常に2400Hz である。これにより、実質のビットレートは134.2ビット毎秒となる。LM565を使ったPLLで読み取る。

テープ上のフォーマットは次のような順序である。
 0x16 (SYN) 100バイト
 0x2A (*) 1バイト
 レコード識別番号
 開始アドレス（アドレスの下位バイトに対応する2文字に上位バイトに対応する2文字が続く）
 終了アドレス（開始アドレスと同じ形式）
 実際のデータ
 0x2F (/) 1バイト
 チェックサム2バイト
 0x04 (EOT) 2バイト

メモリ上の1バイトはテープ上ではASCII文字2文字で格納される。例えば、十六進法でB5（十進では181）という値があるとき、テープ上には "B" と "5"（十六進では42と35）が書き込まれる。

 脚注 

 参考文献 
 Bagnall, Brian (2006) On The Edge - The Spectacular Rise and Fall of Commodore, Variant Press, ISBN 0-9738649-0-7

 関連項目 
 ワンボードマイコン
 AIM-65
 SYM-1

 外部リンク 

 バーチャル博物館 OLD-COMPUTERS.COM での KIM-1 の展示(英語)(リンク切れ)
 KIM-1 oldcomputermuseum.com
  – erik.vdbroeck のKIM-1に関するサイト。HTML化されたマニュアルや書籍がある。(リンク切れ)
 Instructions on building your own KIM-1
 KIM-1 Hints/FAQ
 Floodgap Retrobits KIM-1 コモドール64上で動作するKIM-1エミュレータがある。
 Modern KIM-1 clone website(リンク切れ)
 KIM-1 hobbyist's development: KIM-1とそのクローンの写真

Category:第一世代のマイクロコンピュータ
Category:シングルボードコンピュータ
Category:パソコンの歴史