MC6800

**MC6800**あるいは**Motorola 6800**（モトローラ 6800）は、モトローラ社が開発し1974年に発表、および出荷開始した、CISCの8ビットマイクロプロセッサである。

## 概説
MC6800は 8ビットのデータバスと16ビットのアドレスバスを備えており、最大 64 KiBのメモリ空間を直接アドレス可能である。

;命令セット
命令セットはおおよそ 72 命令を提供し、複数のアドレッシングモード（即値・直接・拡張・インデックス・相対など）をサポートしていた。同時期のIntel 8080と比べて、洗練された命令セットが高く評価されている。

;5V単一電圧
当時の多くのマイクロプロセッサが複数の電源電圧を必要としていたのに対し、MC6800が必要とするのは +5 V 電源のみであることも特長であった。

;動作周波数
動作周波数は初期型が 1 MHz 程度であり、後の改良型では最大 2 MHz 程度までクロックが引き上げられたとする資料もある。

;システム展開
MC6800は、CPU単体だけでなくシステムとして使用することを想定し、補助ICと統合が実現するよう設計されていた。
CPU単体に加えて周辺回路（RAM、ROM、入出力インタフェース IC）を含むマイクロコンピュータ・システムを "M6800"と総称して展開した。

## 仕様
8ビットのレジスタを二つ、16ビットのインデクスレジスタを一つ持つ。レジスタの少なさをカバーするために、メモリの0000〜00FFを8ビットで指定するダイレクトアドレッシング機能を備えていた。MC6800の命令は、ALU演算/ロードストア系、インデクスレジスタ/スタックポインタ操作系、絶対番地分岐/相対番地分岐系、CCR操作系に区分されている。分岐命令に-128〜+127の相対アドレッシングを使用できるので、位置に依存しないプログラムを作成できる。そのほかにも10進演算命令やビットテスト命令、ソフトウエア割り込み命令を備えており、また二相クロックを使用してメモリアクセスを1クロックで実行する。これを利用し、CPUがメモリアクセスするタイミングと、ビデオコントローラが表示のためにメモリをアクセスするタイミングを協調させ、バスの競合が起きないようにすることができた（トランスペアレントによるサイクルスチール）。

なお、インデックスレジスタが一つしかなくブロック転送の手順に手間がかかる点は弱点と指摘されることがある。

### レジスタ

### 命令セット
6800の命令セットは、以下の主要なカテゴリに分類される。
*データ転送命令：レジスタ間やメモリとのデータ転送を行う。
*算術命令：加算、減算、加算・減算を行う。
*論理命令：論理積（AND）、論理和（OR）、排他的論理和（XOR）などの論理演算を行う。
*ビット操作命令：シフトや回転、ビットの設定・クリアなどを行う。
*比較命令：レジスタとメモリの内容を比較し、条件コードレジスタを更新する。
*分岐命令：条件付き・無条件のジャンプを実行する。
*スタック操作命令：スタックポインタを用いたデータのプッシュやポップを行う。
*制御命令：割り込みの有効化・無効化、停止命令など、プロセッサの制御を行う。

;アドレッシングモード
6800は、以下の7種類のアドレッシングモードをサポートしている。
*即値アドレッシング（Immediate Addressing）：命令内に直接データを含む。
*直接アドレッシング（Direct Addressing）：命令内のアドレスが直接指定され、そのメモリ位置を参照する。
*間接アドレッシング（Indirect Addressing）：指定されたアドレスがポインタとなり、その先のメモリを参照する。
*インデックスアドレッシング（Indexed Addressing）：指定されたアドレスにインデックスレジスタの内容を加算し、その結果のメモリを参照する。
*拡張アドレッシング（Extended Addressing）：16ビットのアドレスを使用し、より広いメモリ空間を参照する。
*インヘラントアドレッシング（Inherent Addressing）：命令内にオペランドを含まず、命令の動作が固定されている。
*相対アドレッシング（Relative Addressing）：現在のプログラムカウンタに対する相対的な位置を指定する。

;命令のバリエーションとオペコード
6800の命令セットは、基本命令に多様なオペランドを組み合わせることで、多様な命令バリエーションを実現している。たとえば、加算命令（ADD）は即値、直接、間接、インデックス、拡張などの各アドレッシングモードと組み合わせることが可能である。これにより、プログラマは効率的にメモリ操作や演算を行うことができる。

;命令セットの概要
各命令カテゴリの代表的な命令を以下に示す。
*データ転送命令
**LDA（Load Accumulator）：アキュムレータAにデータをロードする。
**STA（Store Accumulator）：アキュムレータAの内容をメモリに保存する。
**LDX（Load Index Register X）：インデックスレジスタXにデータをロードする。
**STX（Store Index Register X）：インデックスレジスタXの内容をメモリに保存する。
**PSH（Push）：スタックにデータをプッシュする。
**PUL（Pull）：スタックからデータをプルする。
*算術命令
**ADD（Add）：加算を行う。
**ADC（Add with Carry）：キャリーフラグを考慮した加算を行う。
**SUB（Subtract）：減算を行う。
**SBC（Subtract with Borrow）：借りを考慮した減算を行う。
**INC（Increment）：レジスタまたはメモリの内容をインクリメントする。
**DEC（Decrement）：レジスタまたはメモリの内容をデクリメントする。
*論理命令
**AND（Logical AND）：論理積を計算する。
**ORA（Logical OR）：論理和を計算する。
**EOR（Exclusive OR）：排他的論理和を計算する。
**BIT（Test Bits）：指定したビットをテストする。
**TSTA（Test Accumulator A）：アキュムレータAの内容をテストする。
*ビット操作命令
**ASL（Arithmetic Shift Left）：算術的に左シフトを行う。
**LSR（Logical Shift Right）：論理的に右シフトを行う。
**ROL（Rotate Left）：左回転を行う。
**ROR（Rotate Right）：右回転を行う。
**BSET（Bit Set）：特定ビットをセットする。
**BCLR（Bit Clear）：特定ビットをクリアする。
*比較命令
**CMP（Compare）：レジスタとオペランドを比較し、条件コードを設定する。
*分岐命令
**BRA（Branch Always）：無条件ジャンプを行う。
**BNE（Branch if Not Equal）：条件コードに基づき条件付きジャンプを行う。
*スタック操作命令
**PSH（Push）：スタックにデータを格納する。
**PUL（Pull）：スタックからデータを取得する。
*制御命令
**SEI（Set Interrupt Disable）：割り込みを無効化する。
**CLI（Clear Interrupt Disable）：割り込みを有効化する。
**SWI（Software Interrupt）：ソフトウェア割り込みを発生させる。
**NOP（No Operation）：何も行わない。

## 開発史

;モトローラ設立から1970年代初頭までの概略
ガルビン・マニュファクチャリング・コーポレーションは1928年に設立され、1947年に社名をモトローラへと変更した。1955年には、アリゾナ州フェニックスに新設された150万ドルの工場で、トランジスタの商業生産を開始した。

1960年代半ばまでに、モトローラはレスター・ホーガン（Lester Hogan）の指揮のもとで半導体部門を拡大していた。モトローラのトランジスタや集積回路は、同社の通信機器、軍事用機器、自動車関連製品、民生機器に内部利用されただけでなく、他社にも販売されていた。

1968年、ロバート・ノイスがフェアチャイルドセミコンダクターを退社してインテルを設立すると、フェアチャイルドは対抗措置としてホーガンを新CEOに招聘した。彼とともに8名のモトローラ社員もフェアチャイルドへ移籍し、彼らは「ホーガンズ・ヒーローズ」と呼ばれた。この移籍劇による混乱はあったものの、長引くことはなく、モトローラはその後も成長を続けた。

1973年までに、モトローラの半導体製品部門（SPD）の売上高は4億1900万ドルに達し、テキサス・インスツルメンツに次いで業界で2番目に大きな半導体企業であった。

;プログラム電卓用CPUの開発とトム・ベネットのスカウト
1970年代初頭までに、フェアチャイルドや当時まだ新興のインテルを含む半導体業界の大手企業の多くがマイクロプロセッサの投入を計画していることは明らかであった。インテルは後のIntel 4004となる最初のコンセプトを持ち歩き、営業活動の中でシカゴのVictor Comptometer（英語版）を訪れ潜在的な顧客を探していた。Victor社は集積回路を使用した世界初の電子計算機、Victor 3900を発売していたのだった。インテルの営業が来たことでトム・ベネットは4004の設計を目にした。

1971年、モトローラは計算機（電子式卓上計算機）事業への参入を決めた。プロジェクトの責任者を求め、ベネットをVictor社から引き抜いた。入社後間もなく、オリベッティがプログラマブル計算機シリーズに使用予定のマイクロプロセッサ設計概要を携えてモトローラを訪問した。モトローラは設計の完成とフェニックスのPMOSラインでの製造を引き受けた。

設計は最終的に成功裏に完成したが、製造工場はチップを生産できなかった。生産ラインの問題は類似の失敗例が多数あることで明らかであり、競争力のあるメモリデバイスや他の設計も製造できなかった。契約を守るために、モトローラは競合のMostekに設計をライセンス供与し、Mostekは計算機市場以外でのみ販売できる条件とした。Mostekはこの設計をMostek 5065（英語版）として市場に投入した。

### 6800開発チーム発足

顧客からの新たなアイデアが続々と持ち込まれ、これらのコンセプトは柔軟な単一のマイクロプロセッサ設計で実装可能であることが明白になった。1971年末に新たな開発を開始したが、1972年初頭にマーケティング部が報告を返し、「5年間で販売可能なのは18,000個に過ぎない」と伝えた。その数字に納得できなかったベネットはリンク・ヤングを雇い挑戦させ、ヤングはナショナル・データ・コーポレーションから20万個の将来の潜在注文を持ち帰った。この潜在的需要数ならば、設計作業を開始するのに十分であった。

;開発チームの初期メンバー6名、その後のチームの膨張
チームは設計者のトム・ベネット、エンジニアリングディレクターのジェフ・ラベル、製品マーケターのリンク・ヤング、システム設計者のマイク・ワイルズ、ジーン・シュライバー、ダグ・パウエルで構成されていた。彼らは全員、アリゾナ州メサ、フェニックス大都市圏 (英語版）に住んでいた。（なお、開発プロジェクト終了時にはベネットの下に17名のチップ設計者とレイアウト担当者がおり5チップを担当し、ジェフ・ラベルは15〜20名のシステムエンジニアを抱え、同規模の応用エンジニアリング部門も存在する状態にまでチームメンバーが増えていた。）

トム・ベネットは産業用制御のバックグラウンドを持ち、1960年代にVictor Comptometer社で最初のMOS集積回路を使った電子計算機Victor 3900の設計に携わっていた。1969年5月、テッド・ホフはインテル 4004の初期設計図をベネットに示し、計算機用途に適するか確認を求めた。1971年にベネットはモトローラに入社し、計算機用ICの設計を担当した。そしてすぐに6800マイクロプロセッサの主任設計者に任命された。6800設計の功績を他者が主張することもあるが、1975年9月、EDN誌のマイクロプロセッサ編集者ロバート・H・カッシュマンがMOS Technologyの6502設計者チャック・ペドルにインタビューし、「6800の設計者トム・ベネット」にコメントを求めている。（なお6800プロジェクト後、ベネットは自動車用応用設計に携わり、モトローラは自動車用マイクロプロセッサの主要サプライヤとなった。）

ジェフ・ラベルは1966年にモトローラに入社し、コンピュータ産業界を相手とするマーケティング部門に所属していた。以前はコリンズラジオ社（Collins Radio Company）のC8500コンピュータ（小規模ECL集積回路で構成されたコンピュータ ）の開発に携わった。1971年に既存顧客（ヒューレット・パッカード、ナショナル・キャッシュ・レジスター、コントロールデータコーポレーション、デジタルイクイップメントコーポレーションなど）のニーズ調査を率い、製品機能の集積回路化によるコスト削減を模索した。調査の結果、15種類のブロックが抽出され、それぞれ集積回路で実装可能であった。（これらのブロックの一部はM6800初期製品に搭載され、その後数年でブロックが追加されることになる。）

### プロトタイプ制作
設計中に、6800アーキテクチャを評価するため、ジェフ・ラベルのチームはプロトタイプとして、まず451個の小規模TTL集積回路を用い5枚の10×10インチ基板で6800と同等の回路を制作し、その後、ROMと中規模集積論理を使い114個のICで1枚の基板にまとめ、テストを行った。

### 開発チーム各人の役割
ジョン・ブキャナンはモトローラのメモリ設計者であり、ベネットの依頼で6800用の電圧倍増回路を設計した。典型的なnチャネルMOS ICは−5V、+5V、+12Vの3電源を必要としたが、M6800は+5V単一電源で動作する。−5V電源は内部電圧反転回路で作ることが可能であったが、増強モード論理回路は10〜12V電源を要した。この問題に対処するためチップ内に電圧倍増回路を追加した。ブキャナンは6800の回路設計、解析、レイアウトを担当し、電圧倍増回路と6800チップのレイアウトで特許を取得した。ロッド・オーギルは解析とレイアウトを支援した（彼は、後にMOS Technologyの6501マイクロプロセッサを設計することになる。）

ビル・ラティンは1969年にモトローラに入社し、6800の新しいMOS回路特性評価用のコンピュータシミュレータを提供した。ラティンとフランク・ジェンキンスはカリフォルニア大学バークレー校において回路シミュレータSPICE設計者ドナルド・ペダーソンの指導を受けていた。モトローラのシミュレータMTIMEはバークレーで開発されたTIMEの改良版であり、1973年に「5V単一電源nチャネル技術」を1MHzで動作させるMOSデバイスモデルの論文を発表した。IBM 370/165メインフレーム上で50個のMOSFET回路をシミュレート可能であった。（なお、ラティンは1975年11月、インテルに移籍し次世代マイクロプロセッサの開発に携わることになる。）

ビル・メンシュは1971年にアリゾナ大学を卒業しモトローラに入社した。電子技術者として数年勤務後、学士号を取得。入社初年度は4部門を3ヶ月ずつローテーションし、モデム（後の6860となる）用のフローチャート作成やM6800システム定義の応用グループで働いた。訓練期間後は6820周辺機器インターフェースアダプタ（PIA）開発チームに配属され、同チップ設計の主要メンバーとしてICレイアウト特許を取得し、他にも7件のM6800システム特許の共同発明者に名を連ねた。（後にMOS Technologyの6502マイクロプロセッサを設計した。）

マイク・ワイルズはジェフ・ラベルのグループの設計技術者であり、6800製品定義段階でトム・ベネットと共に多くの顧客訪問を行った。18件の6800特許の発明者に名を連ねるが、特に6800コンピュータ用の常駐モニタプログラム MIKBUGで知られる。MIKBUGは512バイトのプログラムで、MCM6830 ROMの容量の半分を占め、MEK6800評価キットや初期のホビーコンピュータ・キットに使用されることになった。（ワイルズは6800開発プロジェクト終了後もモトローラに残り、モトローラの設計センターの移転とともにオースティンに移り、1978年に発売されたMC6801マイクロコントローラの設計に貢献した。）

チャック・ペドルは1973年、6800プロセッサ設計終了後にチームに加わったが、システム設計全般や周辺機器チップ（特に6820 PIA）の設計に寄与した。ペドルは6800関連16件のモトローラ特許の発明者として登録されており、その多くは6人以上の共同発明者を有する。他のエンジニア同様、ペドルも潜在顧客を訪問しフィードバックを得た。ペドルとジョン・ブキャナンは6800の初期デモ基板の1つを製作した。（1974年8月、ペドルはモトローラを退社し、MOS Technology（当時はペンシルベニア州の小規模半導体会社）に入社、同社で6500マイクロプロセッサファミリの設計チームを率いることになった。）

## 周辺デバイス
MC6800バスに接続可能な周辺デバイスファミリーが存在する。メモリマップドI/Oが採用され、I/Oポートは、メインメモリアドレス空間の一部にマッピングされる。

*MC6810 128バイトRAM 
*MC6818 リアルタイムクロック
*MC6820/6821 パラレルI/O PIA(Peripheral Interface Adapter)
*MC6828 割り込みコントローラ PIC(Priority Interrupt Controller)
*MC6830 1024バイトROM
*MC6840 カウンタ/タイマー
*MC6843 フロッピーディスクコントローラ
*MC6844 DMAコントローラ
*MC6845 CRTコントローラ
*MC6846 ROM + カウンタ/タイマー + GPIO 
*MC6847 ビデオディスプレイコントローラ
*MC6850 非同期シリアルインタフェース ACIA(Asynchronous Communications Interface Adapter)
*MC6852 同期シリアルインタフェース SSDA(Synchronous Serial Data Adapter)
*MC6854 通信インタフェース ADLC(Advanced Data Link Controller) HDLC/SDLC通信
*MC6860 モデム
*MC6883 MC6847用DRAMコントローラ SAM(Synchronous Address Multiplexer)

## シリーズ展開
* MC6802 - MC6800に内蔵RAMとクロックジェネレータを追加したもの。
* MC6808 - MC6802から内蔵RAMを除いたもの。MC68HC08（後述）と互換性はない。
* MC6801 - MC6800にいくつかの命令を追加し一部命令を高速化、RAM、ROM、クロックジェネレータ、シリアル/パラレルI/O、タイマを追加したもの。ROMについては、マスクROM、UVEPROM、ROMなし（MC6803）のバージョンがある。互換品にはピギーバックソケット付き（パッケージ背面にROMソケットがある）もあった。

## 採用例

* Motorola純正, MEK6800D1 (開発ボード), 発表1975年頃。MEK6800D2　もあり。
* Southwest Technical Products Corporation, SWTPC 6800 Computer System, 1975年（発表／発売）- ホームコンピュータ
* Sphere Corporation, Sphere 1（英語版）, 1975年11月頃発表
* MITS, Altair 680, 1975年11月発表、1976年頃発売。 ほかAltair 680Bなども。 
* Hewlett‑Packard, HP 9815A（英語版）, 1975〜76年
* テクトロニクス, Tektronix 4051 Graphics Computing System, 1975年10月頃発表
* Midwest Scientific Instruments, MSI 6800 System 1, 発売1977年。
* Williams Electronicsの アーケードゲームボード ピンボールマシン（初期タイトル）
* Heathkit, ET‑3400 (および ET‑3400A)  - 教育用コンピュータ
* Xenesis, 6800‑CORE - キット式のシングルボードコンピュータ　詳細不明
* アスターインターナショナル（Aster International）, コスモターミナルD、1977年発売 - 日本のマイコンショップチェーン「コスモス」によるコンピュータ。

;MC6800シリーズ
* General Motors (GM) 車載電子制御モジュール (Electronic Control Module) 初期型, 1970年代後半。MC6800／6801系マイクロコントローラ採用
*松下グループ, JR‑100, 1981年11月発売。および、JR‑200,JR-300。（MC6800シリーズのMC6802を使用。）

;互換CPU
*富士通, LKIT-8, 1977年5月発売。ワンボードコンピュータとキー入力表示ボードからなるマイコンキット。富士通によるMC6800上位互換CPU「MB8861」を搭載。
*日立製作所, ベーシックマスター MB‑6880, 1978年9月発表。CPUはMC6800互換の日立によるCPU「HD46800」（750kHz）

## MC6800から派生したMPU/MCU
以下に、MC6800をベースに開発されたプロセッサを示す。オブジェクトコードの互換性はないが、一部ではニーモニックレベルでの上位互換が考慮されている。
*MC6809 - MC6800を大幅に強化したMPU。「究極の8ビットCPU」とも謳われる。 
*MC6805 - MC6800からBレジスタの削除やX/SP/PC/CCRもビット幅を縮小し命令数も削減し簡素化したCPU機能に、ROM/RAMやタイマーなどの周辺機能を内蔵した、小規模の組み込み用に特化したマイクロコントローラ。
**MC68HC08 - MC6805のCMOS版（MC68HC05）をベースに機能を強化したマイクロコントローラ。MC6805上位互換。（HC08）
**MC68HCS08 - HC08を論理合成による回路設計とプロセスの改善により高クロック化したマイクロコントローラ。（S08）
*MC68HC11 - MC6805とは逆にMC6801にIYレジスタと命令を追加して高機能化したCPU機能と、ROM/RAMやタイマー/SPI/SCI/ADコンバータなどの周辺機能を内蔵したマイクロコントローラ。
*MC68HC12 - MC68HC11に一部命令を追加した形の16ビットCPU機能を内蔵したマイクロコントローラ。（HC12）
**MC68HCS12 - HC12を論理合成による回路設計とプロセスの改善により高クロック化したもの。ファジー制御命令を追加。（S12）
*MC68HC16 - 16ビットマイクロコントローラ。DSP命令がある。
*MB8861 - 富士通のMC6800セカンドソース製品。MC6800に対して、上位互換とされ、ビット操作やインデックス加算など、命令が5つ追加されている。

## 脚注

### 注釈

### 出典

## 参考文献
* 

## 関連項目
*MC68000
*MOS 6502

## 外部リンク
* Motorolaによる公式資料（1975年5月。英文）
* CPU-Museum(英文) - 閉鎖。（2008年11月20日時点のアーカイブ）
* 半導体コレクション展示会場(日本語)
* 6800IDE (a freeware windows based IDE for Motorola's 6800/6811 processor)