RCA 1802

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索
RCA CDP1802
RCA CDP1802ダイ写真

RCA CDP1802とは、1976年はじめにRCAが初のシングルチップマイクロプロセッサとしてCOSMAC (Complementary Symmetry Monolithic Array Computer) アーキテクチャに基づき40ピンLSIパッケージの集積回路に実装した[1]8ビットCMOSマイクロプロセッサである[2]。それより以前(1970年代初め)には、RCAの内部では1801や1802マイクロプロセッサはしばしば "COSMAC" として言及された[3]。ホビーストは通常1802と呼んだ。これは現在でもインターシルで高信頼性マイクロプロセッサとして製造され続けている。1802は他の大半の8ビットマイクロプロセッサとは異なるアーキテクチャを持つ。

1970年から1971年にかけて、ジョセフ・ウェイスベッカーは新しい8ビットアークテクチャのコンピュータを開発した[4]。1975年のはじめにRCAはC-MOSプロセスを用いてウェイスベッカーの成果をCOSMAC 1801Uと1801Rの2チップ(TA6889/TA6890とTC1084/TC1805として知られる)として発売した。1976年にはジェリー・ヘルゾグの率いるチームが、この2つのチップを1つにまとめてCDP1802とした[2][5][6]

CDP1802の後続機種はCDP1804、CDP1805、CDP1806であり、命令セットの拡張や、その他の強化(オンチップRAM、ROM、タイマーの装備)が行われ、幾つかの版では顕著ではないにしても動作速度の向上が行われていた。一方でDMAオートブート機能など、削除された機能もあった。幾つかのピンの機能も変更された。

概要[編集]

このPNG画像は40pinLSIであるRCA COSMAC CDP1802 のピン配置を示す。黄色は電源、緑は出力、青は入力、赤はトライステートIOである。

CDP1802はスタティックCMOSで設計され、 クロック周波数の下限がなく、非常に遅いクロックで非常に低消費電力でも動作し、動作に影響を与えること無くクロックを停止してサスペンドさせることも出来る。独立した2つの8ビットバスを持ち、その1つは8ビット双方向データバスで、他方は16ビットのアドレスを上位と下位8ビットをクロックサイクル毎に時分割で交互に出力する多重化したアドレスバスである。

1802は、プログラマブルで参照可能な単一ビットの出力ポート(Q)と、分岐命令で直接参照できる4本の入力ポート(EF1-EF4)を持つ。

柔軟でプログラマブルなI/Oモードと、オンチップの単相クロック発振器を持つ。レジスタは16本の16ビットレジスタからなり、SEP Rn 命令で指定したいずれのレジスタでもプログラムカウンター (PC)とすることができ、複数のPCを持つことが容易で、簡単にサブルーチンコールを行える(下記のサブルーチンコールを参照)。 同様に、SEX Rn命令でインデックスレジスタ(Xレジスタ)となるレジスタを指定し、それをポインタや間接アドレッシングに使えるし、16本のレジスタを汎用レジスタとして使える。DMA入力ならびにDMA出力では特定のレジスタを使用する。

用途[編集]

耐放射線強化[編集]

「バルク・シリコン」のC2L CMOS技術に加え、シリコン・オン・サファイア(SOS)半導体プロセス技術でも製作されており、ある程度の耐放射線および耐静電気放電(ESD)性を持つ。非常に低い消費電力で動作することから、このチップは宇宙用途や軍事用途に非常に適している(なお、1802が発表された時には市場にはほかに耐放射線強化のマイクロプロセッサは殆どなかった)[7][8]

宇宙用途[編集]

CDP1802は多くの宇宙機や宇宙実験プロジェクトやモジュールで使用されている。ガリレオでは20個に及ぶ1802マイクロプロセッサを使用した[9]。しばしばバイキングボイジャーにも使用されていると誤って言及されるが、これらの探査機が設計された時には1802はまだ存在せず、一次資料によればバイキングやボイジャーのコンピュータはマイクロプロセッサベースではなく、1802とは全く異なるアーキテクチャであるとしている[10]。1802は地球周回衛星(AMSAT Phase 3-D[11])、幾つかのOSCAR衛星[12]、UoSAT-C[13]、 MAGSATに主コンピュータとして幅広く使われ、1990年代以降は複雑度の低い飛行制御および通信システムコンピュータへの使用が主流となった[14]。前身の2チップの1801と、1チップの1802は早期のAMSAT衛星に使用された[15]。NASAの資料からもハッブル宇宙望遠鏡マゼランの金星プローブ、ユリシーズに使用されていることが確認されている。また、1980年代はじめのMASCOT(MIT Astronomical Spectrometer/Camera for Optical Telescopes)の多数の望遠鏡の制御装置にも使われた[16][17]。スペースシャトルにより打ち上げられ回収されたNASAの長時間暴露施設 (LDEF) の57の実験装置の少なくとも1つ、熱制御表面実験 (TCSE) で1802を使用した。1802をベースにしたセキュリティデバイスである "Electronic Fill Device" は米国のスペースシャトルのセキュアな通信システムとして、打ち上げ前に地上基地の暗号化/復号化システムから最高機密のミッションキーを複数のシャトルや地上基地へ伝達するのに使われた[18]

マイコンシステム[編集]

初期のマイクロコンピュータでは1802をベースとしていたものが多くあった。例えば、COSMAC ELF(1976)、Netronics ELF II、Quest SuperELF、COSMAC VIP、Comx-35、フィンランドの Telmac1800 と Oscom Nano、ユーゴスラビアのPecom32と64、また1970年代後半にMontgomery Wardを通じて販売されたCybervisionシステム[19]はRCA Studio II ビデオゲームコンソールとなり、ビットマップグラフィックを最初期に使用したコンソールであった。

1802の Retrocomputing のホビーストの成果として、近年(2000年以降)はAltoidsの容器に収まる「Membership Card マイクロコンピューターキット」[20] や "Spare Time Gizmos Elf2000(Elf2K)"[21]などが製作されている。その他のシステムについてはエミュレータ-シミュレータを参照のこと。

製品[編集]

CDP1802はまた多くの製品やシステム、科学用途の機材や他の商用製品にも使われた。例えばNASAと他の連邦政府機関のジョイントベンチャーで開発されたRemote Deployable Water Quality Monitoring System (WQMS)では2つの1802を使用していた[22]。他の例としては1980〜1985年のSinar Moisture Metersのうち初期の2品種が挙げられる[23]。1980年代中頃には Infocel TimeTrac 時間追跡デバイスの設計では1802を使用している[24]。1980年以降はクライスラーや関連する自動車のモデルでは第2世代の電子リーンバーンシステムの電子点火制御装置に1802が使われ、最初期のコンピュータベースの自動制御システムの一つとなった[25][26]。スペインでは多くのピンボールマシンやビデオアーケケードゲームの製造に用いられた[27]。合衆国の多くの特許では1802プロセッサを参照している(キーワード CDP1802, RCA1802, 或いは COSMACで検索せよ)。カリフォルニア大学バークレー校の地球科学部門であるローレンス・バークレー国立研究所アメリカ合衆国エネルギー省のために自動地震計 (Automated Seismic Processor, ASP) のMicroearthquake検出解析システムにおいて複数の1802がマスタースレーブ構成の設計で用いられた[28]。1802はボーイング737のデジタル・クロノメーターに使用された[29]。1980年代はじめに南極に配置された多くの自動測候所 (Automated Weather Stations, AWS) は1802を使用した[30]

早くから1802向けに使用できた高級言語としてはForth Inc.が1976年に提供したForthがあった。その他に使えるインタプリタやコンパイラのプログラム言語としては、CHIP-8とその変種、リー・ハートが開発したForth系の言語である8th[31]、トム・ピットマンのTiny BASIC[32]、C、幾つかのアセンブラやクロスアセンブラ、などである。NASAや、その施設、AMES、ゴダード、ラングレー、マーシャル、およびジェット推進研究所 (JPL) では、HAL/S クロスコンパイラ[33]、Forthに似た言語であるSTOIC[16]、その他の専用の言語が使用された。

エミュレータ、およびシミュレータ[編集]

ホビーストたちは1802チップや、それを使ったコンピュータをハードウェアやソフトウェアでエミュレートないしシミュレートしている。デザインの1つではFPGA向けにVHDLで記述されている[34]。バスの動作まで正確でCOSMAC Elfと同じ速度のクローンがCDP1802マイクロプロセッサとCDP1861ビデオチップを用ずPIC マイコンを用いて作られている[35]。JavaScriptで記述された、拡張されたCOSMAC Elfのオンラインシミュレータは、ダウンロードすることなく手許のブラウザで実行できる[36]

技術解説[編集]

チップのサフィックス[編集]

CDP1802の技術仕様は部品番号に付けられたサフィックスにより示される。A、B、Cにより動作速度 (3.2MHzから6.4MHz)・温度(-40℃〜+85℃、-55℃〜+125℃)・電圧範囲 (4V〜10.5V)が、D,E,Qによりパッケージタイプが、また、Xによりバーンインが示される。これらはRCA、Intersil、Harris、ヒューズエアクラフト、Solid State Scientific (SSS) などの複数の供給者の間である程度標準化されている。型番のプレフィックスとしてCDPの代わりにヒューズはプレフィックスHCMP、SSSはSCP(と、おそらくBCP)を使用し、文書化されていないサフィックスも使用した(例:CDP1802A、CDP1802ACE、CDP1802BCD、HCMP1802AP、SCP1802D)[37]

サフィックス パッケージタイプ
D PDIP= プラスチック デュアル イン-ラインパッケージ
E SBDIP=サイド ブレーズド セラミック デュアル インーラインパッケージ
Q PLCC =プラスチックリード付チップキャリア
X バーンイン

レジスタ及びI/O[編集]

CDP1802は、8ビットを1バイトとするバイトアーキテクチャであり、2バイト操作を行う最小限の16ビットオペレーションもサポートする。主アキュムレータは、8ビットのDレジスタ(データ・レジスタ)である。フラグとしては1ビットのキャリーフラグであるDF(データ・フラグ)がある。算術、論理、メモリ参照ロード、ストアを含む大半のオペレーションではDレジスタを使用する。16ビットの処理では必要に応じてキャリーやボローをDFに格納し、Dレジスタを介してまず下位バイトを処理し次に上位バイトを処理する。命令により16本の16ビットレジスタの上位バイトや下位バイトからDレジスタを介して取り出したり置いたりできる。一方で16ビットレジスタは1命令でインクリメントしたりデクリメントできるし、LDA (load advance) やSTXD (store via X and decrement) のように自動的にインクリメントしたりデクリメントする命令も幾つかある。16ビットレジスタと値の比較は、Dレジスタを介して複数の命令を組み合わせて実行する必要がある。

1802の重要な特徴は16本の16ビット幅レジスタの構成にある。R0-RF(しばしばRを省略して0-Fで表現される)と呼ばれる16本のレジスタのいずれでもSEP命令によりプログラムカウンタにでき、SEX命令によりインデックスレジスタにできる[38]。レジスタR0は内蔵DMAコントローラが処理対象とするメモリアドレスを保持する専用の役割も持つ。レジスタR1は割り込み処理ルーチンのプログラムカウンタを保持する専用の役割も持つ[39]

プロセッサは5つのI/O専用線を持つ。単一のQ出力はSEQ命令でセットでき、REQ命令でリセットできる。EF1、EF2、EF3、EF4の4本の入力があり、これらの入力の状態を参照する8つの条件分岐命令がある。また、インデックスレジスタとDアキュムレータを使用して入出力を行う、7つの入力命令と7つの出力命令がある。

ホビーストのコンピュータではEF1〜4入力とQ出力は有用で扱い易いことから複数のインターフェースに使われた。典型的にはQ出力はステータスLEDカセットインタフェース、RS-232インターフェイスの駆動に用いられた。これにより、音量制御が実装されていない場合にはRS-232やカセットにデータが転送されているのをユーザーが実際に耳で聞くことができた。COSMAC Elfのシリーズでは伝統的にEF4入力は押しボタンに接続された。他のシステムでは他の入力も使われる。

この他に、いくつかの他の特別なレジスタとフラグがある。内部処理に用いられるものと、プログラマが使用できるもので、4ビットのN、P、X、Iレジスタ、8ビットのTレジスタ、および1ビットのIEレジスタがある。

分岐[編集]

CDP1802には3種類の無条件分岐と条件分岐がある。ショートブランチ、ロングブランチ、スキップである。

ショートブランチは2バイト命令で、1バイトのオペコードと1バイトのアドレスバイトを持ち、ページ絶対アドレッシングにおいて0から255(16進でFF)の256バイトの範囲に用いる。相対分岐命令は無く、2つの例外を除いてショートブランチではページを跨ぐことができないことに注意しなければならない。その例外はショートブランチを実行する際の副作用を前提にしたもので、1つはショートブランチ命令のオペコードをページの最後のバイトに置く方法、もう1つはショートブランチ命令のアドレスバイトをページの最後のバイトに置く方法である。前者の場合はアドレスバイトが次のページの最初に置かれており、それを読み取った時点でPCは次のページを指している。後者の場合は場合はアドレスバイトを読み取った後にPCがインクリメントされ、次のページを指す。いずれの場合も分岐命令はショートブランチ命令のオペコードが置かれていたページではなく、次のページを対象に実行される。

ロングブランチは16ビットアドレスを用いて64Kのメモリアドレス空間をサポートし、これだけが3バイト命令である。

スキップ命令は、PCを1つすすめる無条件ショートスキップか、2つすすめるロングスキップがある。ロングスキップにのみ条件分岐がある。

サブルーチンコール[編集]

CDP1802は他のプロセッサに見られるサブルーチンCALL命令やRET命令を持たないが、SEP[40]命令を用いてシミュレートできる。16本レジスタ構成の設計と、SEP命令により興味深いサブルーチンコールとリターンの仕組みが構成され、一般的なコーディングに比べて小規模なプログラムに適している。

頻用される少数のサブルーチンについては16本のレジスタの1つにそのアドレスを保持しておくことで高速に呼び出すことができる。ただし、呼ばれたサブルーチンは「リターン」命令を実行するためにSEP命令を実行するので、呼んだ側のPCがどのレジスタに割り当てられていたかを知らなければならず、またSEP命令ではPCに指定するレジスタ番号をハードコーティングせざるを得ないので、呼ぶ側のPCのレジスタ番号は固定される。あるSEP命令は16ビットレジスタの1つが保持するアドレスから始まるサブルーチンを呼び出すのに使用され、別のSEP命令が呼び出した側に戻るために使われる。サブルーチンから戻る前に、そのエントリポイントの直前にジャンプし、SEP「リターン」命令を実行して制御を呼び出し側に戻したときに、レジスタが次の使用に備えて正しい値になるようにする。プロセッサは実行する命令を参照した後、次に実行する命令を拾うためにPCをインクリメントするので、前述のようなテクニックが使える。

SCRT(Standard CALL and RETURN Technique / 標準CALLとRETURNテクニック)と呼ばれる良く知られる手続きがあり、これにより引数をインラインで渡すことのできる汎用のサブルーチンが記述できる。ただしこのテクニックを使うには幾つかのレジスタがこの用途のために占有される。CDP1802のユーザーマニュアルに記載されたRCA提供のルーチンの多くでは、R2をスタックポインタに、R3をプログラムカウンタに、R4をサブルーチンコールのアドレス保持に、R5をリターンアドレスの保持に、R6を引数へのポインタ(非破壊)に割り当てることを推奨している。この割り当てではR0をDMA用に、R1を割り込み用にでき、R7からRF("F" は16進数で15を意味するので、7番〜15番の9本のレジスタ)を汎用レジスタとして使用できる。ただし、一般のマイクロプロセッサではCALLやRET命令はアーキテクチャの設計の一部となっているのに対して、1802における、この手続きは実行速度においてオーバーヘッドとなる。

アドレッシングモード[編集]

CDP1802は16ビットアドレス、8ビットデータバス、16ビット幅の16本の汎用レジスタを持つが、アキュムレータは8ビットである。このためアキュムレータがボトルネックになりがちである。1つのレジスタの内容を別のレジスタに写すには4命令が必要となる。レジスタの上位バイトについてGetとPutが必要であり、下位バイトについても同様である[41]。新しい定数をレジスタにロードする、例えば新しいサブルーチンジャンプのためのアドレスや、データ変数のアドレスをロードする場合も4命令が必要となる[42]

アドレッシングモードとしては、レジスタ間接モードと、自動インクリメント付きレジスタ間接モードの2つがあり、アキュムレータを使った8ビット演算を行ううえではかなり有効である。しかし、その他のアドレッシングモードはなく、他のプロセッサに見られるダイレクトアドレッシングモードは、前述の定数をレジスタにロードする要領で空いているレジスタにメモリアドレスを読む4つの命令[42]を置き、続けてインデックスレジスタを指定する命令を置き、最後にそのアドレスが指し示すデータに関する命令を置いて、これを実行することでエミュレートする必要がある。

DMAとロードモード[編集]

CDP1802は入力要求と出力要求の2本の要求線を持つDMAコントローラを内蔵し、R0がDMA処理を行う対象アドレスを示すアドレスポインタとなる。

DMAコントローラには、プロセッサのCLEARとWAIT入力が同時にアクティブである間にメモリにロードできる特別な「ロードモード」がある。これを使うとROMベースのブートストラップなしでプログラムをロードできる。COSMAC Elfマイクロコンピュータやその後継機では、ソフトウェアや最小限のハードウェアを必要とせずトグルスイッチや16進キーボードからプログラムをロードするのに使われる。

命令タイミング[編集]

大半の8ビットマイクロプロセッサに比較するとCDP1802のクロックサイクル効率はかなり劣る。1マシンサイクルは8クロックサイクルからなる。大半の命令は実行に2マシンサイクル (16クロックサイクル) を要し、一部の命令は3マシンサイクル (24クロックサイクル) を要する。これに対し、MOS Technology 6502では1命令実行に2ないし7クロックサイクルを要し、Intel 8080では4ないし18クロックサイクルを要する。

サポートチップ[編集]

ビデオグラフィックス[編集]

CDP1802ベースの初期のマイクロコンピュータでは、コンパニオングラフィックビデオディスプレイコントローラとしてCDP1861(これはNTSC用であり、PAL用としてはCDP1864がある。以下は1861で代表して説明する)を用い、1802に内蔵されたDMAコントローラと組み合わせて標準テレビスクリーンに白黒のビットマップグラフィックを表示した。1861は、また、ドットグラフィクス・システム/チップ/ビデオジェネレータとしても知られ[43]、特にCOSMAC ELFマイクロコンピュータではそう呼ばれる。他にTA10171, TA10171V1やTA10171Xのマーキングがされた1861がある。これらは初期の設計の「量産前エンジニアリングサンプル」や「暫定パーツナンバー」で、RCA Studio IIやNetronics Elf マイクロコンピュータに使用されているのが確認された。

1861は1802の制御ソフトウェアと割り込みサービスルーチンを使用してDMAレジスタであるR0に格納したビデオフレームバッファのアドレスを参照して、水平方向に64ドット、垂直方向に128ドットの表示を行える。使用するメモリを減らすために解像度は64×64や64×32に減らすことができる。64×32ドットでは正方形のドットを生成でき、使用メモリは256バイト (2Kビット) となる。これはCHIP-8ゲームプログラミングシステムにおいて良く使われる解像度である。ビデオフレームバッファはシステムのメモリサイズとしばしば同程度、あるいは同じ容量であり、ユーザーのプログラムやデータがスクリーンに映されてコンピューターが「考える」(例、データ処理)のを観ることができることも珍しくなかった。プログラムが暴走したり誤って自身を上書きする様子も観察できた。

1802の高速版は電源電圧が5Vの時には4〜5MHz、10Vの時にはより高速に6.4MHzで動作し、たいていは3.58MHzで動作させて、毎秒100,000を少し越える命令を実行する。またクロックを分周した1.76MHzを1861チップに与える。

カラーグラフィックスを生成するためにCDP1861のコンパニオンチップであるCDP1862カラージェネレーターIC回路が用いられた。Pecom 64など、CDP1869やCDP1870といったコンパニオンチップから構成される、より高解像度のカラーグラフィクスのVIS(ビデオインターフェースシステム)を用いるコンピュータシステムもあった。

ドットグラフィクスディスプレイイメージの例
Octo Chip-8 エミュレータで64×32ドット表示を行った Iconic COSMAC Elf コンピュータのスタートレックの様な宇宙船の絵とプログラムコードのドットグラフィクスの例のスクリーンショット
Octo Chip-8 エミュレータで64×32ドット表示を行ったマスターマインドゲームの開始画面の例のスクリーンショット
Octo Chip-8 エミュレータで64×32ドット表示を行ったSpace Jam! ゲームの開始画面の例のスクリーンショット

コードの例[編集]

この例のコードは ALU (算術論理ユニット) の動作を診断するルーチンである。

..  TEST ALU OPS
0000 90         GHI 0     .. SET UP R6
0001 B6         PHI 6
0002 F829       LDI DOIT  .. FOR INPUT OF OPCODE
0004 A6         PLO 6
0005 E0         SEX 0     .. (X=0 ALREADY)
0006 6400       OUT 4,00  .. ANNOUNCE US READY
0008 E6         SEX 6     .. NOW X=6
0009 3F09       BN4 *     .. WAIT FOR IT
000B 6C         INP 4     .. OK, GET IT
000C 64         OUT 4     .. AND ECHO TO DISPLAY
000D 370D       B4 *      .. WAIT FOR RELEASE
000F F860       LDI #60   .. NOW GET READY FOR
0011 A6         PLO 6     .. FIRST OPERAND
0012 E0         SEX 0     .. SAY SO
0013 6401       OUT 4,01
0015 3F15       BN4 *
0017 E6         SEX 6     .. TAKE IT IN AND ECHO
0018 6C         INP 4     .. (TO 0060)
0019 64         OUT 4     .. (ALSO INCREMENT R6)
001A 371A       B4 *
001C E0         SEX 0     .. DITTO SECOND OPERAND
001D 6402       OUT 4,02
001F E6         SEX 6
0020 3F20 LOOP: BN4 *     .. WAIT FOR IT
0022 6C         INP 4     .. GET IT (NOTE: X=6)
0023 64         OUT 4     .. ECHO IT
0024 3724       B4 *      .. WAIT FOR RELEASE
0026 26         DEC 6     .. BACK UP R6 TO 0060
0027 26         DEC 6
0028 46         LDA 6     .. GET 1ST OPERAND TO D
0029 C4   DOIT: NOP       .. DO OPERATION
002A C4         NOP       .. (SPARE)
002B 26         DEC 6     .. BACK TO 0060
002C 56         STR 6     .. OUTPUT RESULT
002D 64         OUT 4     .. (X=6 STILL)
002E 7A         REQ       .. TURN OFF Q
002F CA0020     LBNZ LOOP .. THEN IF ZERO,
0032 7B         SEQ       .. TURN IT ON AGAIN
0033 3020       BR LOOP   .. REPEAT IN ANY CASE

注釈:上記のルーチンではCDP1802マイクロプロセッサが初期リセット状態、あるいは同等な状態にあることを前提に動作する。ここで、プログラムカウンタ (PC) とインデックスレジスタは両方とも16ビットレジスタR0に割り当てられている。それゆえ、PCとXが両方R0であるので、例の中の OUT 4,00 で即値を出力できる。即ち、PCはメモリから OUT 4 命令を読み取った後にインクリメントされるため、命令を実行する時点では PC であり且つインデックスレジスタである R0 は次のバイト、即ち00を指している。この状態でOUT命令が実行されるので00が出力される。OUT命令はまたXレジスタ、即ちR0をインクリメントするが、これはまたPCでもあるので、即値の次のアドレスにある命令から実行が続けられる。これが、このルーチンでXレジスタを必要に応じてSEX命令でR6やR0に設定する理由である。また、OUT命令が逐次RXレジスタをインクリメントするので連続したメモリの内容を容易に出力できるのに対して、INP命令はそうしないことにも注意。これは値をRXが指すメモリとDレジスタに入れるが、RXを変更しない。

このルーチンでは、また、OUT 4でCPUシステム内の値が8ビットのLEDか2桁の16進ディスプレイに表示され、IN 4で8個のトグルスイッチの値(または16進キーボード)を読み取ると仮定している。BN4命令、ここでは "LOOP: BN4 *" と表記されるが、オペランドの*(アスタリスク)はこの命令の置かれているアドレスを指す。つまり、条件が成立する間はスピンループする。これは「EF4入力がLOであったら分岐」する命令で、すなわち「入力」押しボタンが押される瞬間を待つ。同様にB4命令(もしHIなら分岐)ループはボタンが離されるのを待つ。SEQとREQはQ出力をONまたはOFFにする。Q出力には大抵LEDが接続されており、これでLEDを点けたり消したりする。

1802は「バイトマシン」だが、16ビットレジスタを16本、R0-RF(しばしばRを省略して0-Fで表現される)を持つ。16ビットレジスタを扱うにはプログラマはDレジスタを介して上位バイトや下位バイトの値をGet(上位バイトならGHI、下位バイトならGLO)やPut(同様にPHIやPLO)しなければならない。16本のレジスタのこれら上位バイトと下位バイトはしばしばRn.0(下位バイト)とRn.1(上位バイト)として言及される。ショートブランチは256バイトアドレス境界内の絶対ページアドレスで、ロングブランチは3バイト命令で16ビットアドレスで示される64KBのメモリ空間の何処にでも分岐できる。

これらの情報は、「擬似コード」を読む充分な知識はあるが、アセンブラやマシン語プログラムに不慣れなコンピュータプログラマがよりルーチンを深く理解するのに役立てられる。

備考[編集]

  1. ^ RCA Laboratories Research Report 1973”. RCA. 2016年5月24日閲覧。
  2. ^ a b RCA COSMAC 1802”. AntiqueTech.com (2009年4月21日). 2013年1月2日時点のオリジナルよりアーカイブ。2010年12月27日閲覧。
  3. ^ Interprocessor Communication for Multi-Microcomputer Systems”. IEEE. 2016年6月15日閲覧。
  4. ^ An Eight-Bit Micro-Processor, RCA Technical Report, PRRL-7l-TR-207
  5. ^ Joseph Weisbecker”. Vintage-Computer.com (2010年2月8日). 2010年12月27日閲覧。
  6. ^ Joseph A. Weisbecker (1932 - 1990)”. CosmacElf.com. 2010年12月27日閲覧。
  7. ^ A high speed bulk CMOS C2L microprocessor”. IEEE. 2016年6月4日閲覧。
  8. ^ A Radiation-Hardened Bulk Si-Gate CMOS Microprocessor Family”. IAEA.org. 2016年6月4日閲覧。
  9. ^ Tomayko, James (1987年4月). “Computers in Spaceflight: The NASA Experience”. NASA. 2010年2月6日閲覧。
  10. ^ http://www.retrotechnology.com/memship/1802_spacecraft.html COSMAC 1802 History in Space
  11. ^ http://www.amsat.org/amsat-new/AboutAmsat/amsat_history.php AMSAT History
  12. ^ http://www.retrotechnology.com/memship/amsat.html The COSMAC 1802 and AMSATs, OSCARs and UoSATs
  13. ^ 73 Amateur Radio Magazine, International Edition, June 1988” (1988年6月). 2016年6月29日閲覧。
  14. ^ RCA COSMAC VIP”. Obsolete Technology Website. 2010年1月31日閲覧。
  15. ^ IPS HIGH LEVEL PROGRAMMING OF SMALL SYSTEMS, 2nd Ed.”. 2016年6月11日閲覧。
  16. ^ a b MASCOT (MIT Astronomical Spectrometer / Camera for Optical Telescopes)”. 2016年12月4日閲覧。
  17. ^ How CCD Detectors have Revolutionized Astronomy”. 2016年12月4日閲覧。
  18. ^ Mead, Barry (2016年3月). “MDCCCII.com (1802) People”. William Donnelly. 2016年7月31日閲覧。
  19. ^ Ruske, Dave. “Cybervision 2001, 3001, and 4001”. COSMACELF.COM. 2016年6月30日閲覧。
  20. ^ The 1802 Membership Card Computer”. Lee Hart. 2016年5月22日閲覧。
  21. ^ Spare Time Gizmos Elf 2000 (Elf 2K)”. 2016年12月10日閲覧。
  22. ^ Remote Deployable Water Quality Monitoring System”. 2016年12月10日閲覧。
  23. ^ Five generations of Sinar Moisture Meters”. 2016年5月22日閲覧。
  24. ^ Inforcel”. 2016年5月22日閲覧。
  25. ^ RCA/Weisbecker "System 00" aka "FRED"”. Herb Johnson (2016年6月22日). 2016年6月23日閲覧。
  26. ^ The Chrysler Lean Burn engine control system”. AllPar.com. 2016年6月23日閲覧。
  27. ^ Donnelly, William (2016年7月7日). “MDCCCII (1802) | Product Integration: Commercial & Scientific Applications”. William Donnelly. 2016年7月7日閲覧。
  28. ^ Earth Sciences Division Annual Report 1979”. IAEA.org (1980年7月). 2016年7月24日閲覧。
  29. ^ Mead, Barry (2016年3月). “MDCCCII.com (1802) People”. William Donnelly. 2016年7月31日閲覧。
  30. ^ The challenges of changing technologies for the USAP AWS program” (2009年). 2016年8月9日閲覧。
  31. ^ Membership Card Software”. 2016年12月11日閲覧。
  32. ^ Itty Bitty Computers & TinyBasic”. 2016年12月11日閲覧。
  33. ^ Current Status of the HAL/S Compiler on the Modcomp Classic 7870 Computer”. 2016年12月11日閲覧。
  34. ^ 1802 CPU coded in VHDL”. Scott Baker (2016年). 2016年12月11日閲覧。
  35. ^ Elf Clone”. Ted Rossin (2011年). 2016年12月11日閲覧。
  36. ^ COSMAC Elf-ish CDP1802 Simulator in JavaScript”. William Donnelly (2011年). 2016年12月11日閲覧。
  37. ^ RCA 1802 (CDP1802) microprocessor family”. Gennadiy Shvets (2016年10月2日). 2016年12月11日閲覧。
  38. ^ What does SEX mean?”. 2013年12月26日閲覧。
  39. ^ User Manual for the CDP1802 COSMAC Microprocessor
  40. ^ SEPはSet Program Counter の略で、16本のレジスタのうちどれを今実行するルーチンのプログラムカウンタとして使用するかを指定する。
  41. ^ 例えばR1の内容をR2に写すなら GHI R1; PHI R2; GLO R1; PLO R2; の4命令となる。
  42. ^ a b 上位バイトの定数をDレジスタにロードするLDI命令、それをレジスタの上位バイトに置くPHI命令、続けて下位バイトのLDI命令と、それを置くPLO命令の4命令が必要である。
  43. ^ Build the PIXIE Graphic Display”. Popular Electronics. 2016年6月13日閲覧。

参考文献[編集]