RCA 1802
RCA CDP 1802 | |
| 一般情報 | |
|---|---|
| 発売 | 1974 |
| 物理的仕様 | |
| パッケージ | |
| 歴史 | |
| 後継 | CDP1804、CDP1805、CDP1806 |
COSMAC (相補対称型モノリシックアレイコンピュータ)は、RCAが発表した8ビットマイクロプロセッサファミリです。歴史的には、最初のCMOSマイクロプロセッサとして知られています。[ 1 ]最初の生産モデルは2チップのCDP1801RとCDP1801Uで、後にこれらは1チップのCDP1802に統合されました。[ 2 ] 1802はCOSMACの生産の大部分を占め、今日では製品ライン全体がRCA 1802として知られています。
このプロセッサ設計の歴史は、 1970年代初頭にジョセフ・ワイズベッカーが自宅でTTL部品を用いて設計した実験的な家庭用コンピュータに遡ります。RCAは1973年にCMOS版プロセッサの開発を開始し、1974年にサンプル出荷を行い、すぐにシングルチップ実装に移行する計画でした。ジェリー・ヘルツォグがシングルチップ版の設計を主導し、1975年にサンプル出荷、1976年に生産開始となりました。[ 3 ] [ 4 ]
当時のほとんどの設計がNMOSプロセスで製造されていたのに対し、COSMACはCMOS形式で実装され、スタティックロジックを採用していました。これにより、低消費電力で動作し、完全に停止させることさえ可能でした。さらに、NMOSチップほど発熱量が少なく、低温で動作しました。RCAは耐放射線バージョンも製造しており、航空宇宙分野で使用されました。[ 5 ]これらは2022年現在も生産されており、[ 5 ] 2008年時点ではルネサス(旧インターシル)によって生産が継続されていました。[ 6 ] [ 7 ]
1802の後継機種はCDP1804、CDP1805、CDP1806で、拡張命令セット、その他の強化機能(オンチップRAMとROM、内蔵タイマーなど)を備えており、一部のバージョンはクロック速度が高速化されていますが、速度差はそれほど大きくありません。DMA自動ブートローダー機能など、一部の機能は廃止されています。ピン機能にも若干の変更が見られますが、2026年現在もこのシリーズはオリジナルの40ピンDIP(デュアル・インライン・パッケージ)形式で生産されています。[ 8 ]
歴史
フレッド
ジョセフ・ワイズベッカーは、家庭におけるコンピュータの可能性に長年魅了され、1955年には早くも、将来的にはほぼあらゆる機器にコンピュータが組み込まれるだろうと述べていました。当時の技術では小型の組み込みコンピュータは不可能でしたが、 1960年代に集積回路(IC)が登場したことで状況は劇的に変化しました。1974年、彼はIEEE Computer誌の記事でその可能性について次のように述べています。
20年間、コンピュータのハードウェアはますます複雑になり、言語はより巧妙になり、オペレーティングシステムは効率を低下させてきました。しかし今、マイクロコンピュータは、一部の人々に、よりシンプルなシステムに戻る機会を与えています。安価なマイクロコンピュータは、広大な新市場を開拓する可能性があります。[ 9 ]
1970年初頭、[ a ]ワイズベッカーはRCAトランジスタ・トランジスタ・ロジック(TTL)ICを用いてプロセッサを組み立てる小型機械の設計を開始した。スイッチやランプなどのその他の部品はラジオシャックから購入する必要があり、なぜそんなに多くの部品を買っているのかと聞かれないように、意図的に4店舗に分けて購入した。[ 10 ]設計は1971年10月に実行され、100個のチップ[ 1 ]が複数の回路基板に分散されていた。[ 1 ]
その結果、彼はFRED(Flexible Recreational Educational Deviceの略)と名付け、数年後のAltair 8800と似たような箱に収められました。前面パネルには入力用のトグルスイッチ、出力用のランプが付いており、後には16進パッドのキーボードも追加されました。[ 10 ] Weisbeckerは継続的に新機能を追加し、1972年までに文字ジェネレータとカセットテープへのプログラムの読み込みと保存機能が追加されました。[ 1 ]
ワイズベッカーの娘、ジョイス・ワイズベッカーはすぐにこのシステムに魅了され、プログラムを書き始めました。その中にはいくつかのゲームが含まれており、それらはCOSMACをベースにした後継機に移植されました。1970年代後半にRCAがゲーム機事業に参入した際、これらのゲームはROMカートリッジの形で焼き込まれ、ジョイスは商業用ビデオゲーム開発者として初めて知られる女性となりました。[ 10 ]
リリース
ワイズベッカーはこの間ずっとRCA経営陣にこのマシンのデモンストレーションを行っていたが、当初はほとんど関心を示さなかった。これは、デイビッド・サーノフが引退し、CEOの座を息子のロバート・サーノフに譲った直後のことだった。ロバートは、レコーディング・スターとの交際をしながら、会社のメディア部門の構築に熱心で、業界をリードする数々の開発が行われていたRCA研究所を無視していた。経営陣が懐疑的な態度を示したのは、RCAが最近、メインフレーム・コンピュータ事業を巨額の減損処理を伴ってスペリー・ランドに売却したことが一因だったのかもしれない。[ 10 ]
最終的に、同社はこのシステムに興味を持ち、新たに導入したCOS/MOS製造システムへの適応を開始しました。1973年の研究所報告書[ b ]には、1972年に「プロトタイプ」が納入されたと記されていますが、これはおそらくオリジナルのTTL実装を指していると思われます。さらに、プロセッサを2チップ実装に縮小する取り組みが行われ、1974年にCOS/MOSで納入されたことも記されています。ここで初めて、このプロセッサは相補対称モノリシックアレイコンピュータ(COmplementary-Symmetry-Monolithic-Array Computer)の略称であるCOSMACと名付けられました。さらに、別の研究所が8チップのシリコン・オン・サファイア方式でこのシステムを製造する予定であるとも記載されていますが、その時期はCMOSバージョンの「すぐ後」とだけ記されており、シングルチップバージョンの計画も既に進行中でした。[ 11 ] [ c ]
COSMACデバイス
RCAは1970年代初頭にCOSMACの開発を開始しましたが、それをベースにした自社製品を発売するまでにはしばらく時間がかかりました。1975年には、コイン式ゲーム機事業向けに、ROM交換可能なアーケードゲーム機のプロトタイプが開発されましたが、最終的には中止されました。[ 10 ]
一方、ワイズベッカーは、RCA社内で当時System 00として知られていたオリジナルのFREDを改良し、新しいチップセットを用いて、当時COSMAC ELFとして知られる大幅に簡素化されたシングルボードシステムを開発しました。1976年の『ポピュラーエレクトロニクス』誌の記事でその構築手順が解説され、1977年の2番目の記事では、様々なアップグレードを加えた拡張版が掲載されました。ELFのユニークな特徴は、起動時に読み取り専用メモリ(ROM)を必要とせず、プロセッサのダイレクトメモリアクセス(DMA)システムを使用してフロントパネルのスイッチを直接メモリに読み取ることです。[ 10 ]
RCAは、ELFのパッケージ版を市場に投入するかどうかを検討していました。議論が続く中、さらなる開発が進められ、ELFと新しいディスプレイドライバチップCDP1861を組み合わせた簡易版のゲームコンソールが完成しました。この頃、ジョイス・ワイズベッカー(ジョセフの娘)がRCAに雇われ、このプラットフォーム向けにいくつかのビデオゲームを開発しました。その中には、 RCAの買収攻勢に巻き込まれた多くの企業の一つであるランダムハウスと提携したクイズ形式の教育用製品も含まれていました。[ 10 ]
1年間の議論を経て、同社は最終的にこのプラットフォームをベースにした2つの量産製品、COSMAC VIPとして知られるキットコンピュータとRCA Studio IIとして知られるゲームコンソールを発売することを決定した。これらのマシンは1975年から販売されていたが、Studio IIが発表されたのは1977年1月、フェアチャイルド・チャンネルFが市場初のカートリッジベースマシンとなってから数か月後のことだった。両機種とも、同年後半に発売されたAtari 2600によってすぐに影を潜め、ほとんど忘れ去られることになる。RCAは1978年2月にStudio IIの開発を中止した。[ 10 ]
RCAは、1802の発売当初からRCAの倒産に至るまで、 RCA Microboardフォームファクターをベースにした一連のモジュラーコンピュータシステムをリリースしました。これらは主に産業用アプリケーションとシステム開発を対象としており、高度な構成が可能でした。[ 13 ]
埋め込み使用
COSMACはCMOS設計により低消費電力を実現したため、組み込み市場で大きな成功を収めました。1970年代後半には、多くの産業用途、特に航空宇宙分野で広く使用されるようになりました。 1989年には木星探査機ガリレオの補助入出力プロセッサとして複数の1802が使用され、2017年現在も同様の用途で使用されています。[ 10 ]
アプリケーション

マイクロコンピュータシステム
初期のマイクロコンピュータの多くは1802をベースにしており、COSMAC ELF(1976年)、Netronics ELF II、Quest SuperELF、COSMAC VIP、Comx-35、フィンランドのTelmac 1800、Telmac TMC-600、Oscom Nano、ユーゴスラビアのPecom 32および64、1970年代後半にMontgomery Wardを通じて販売されたCyberVision 2001システムなどがある。 [ 14 ]また、RCA Studio IIビデオゲームコンソール(ビットマップグラフィックを採用した最初のコンソールの1つ)もその1つである。拡張版COSMAC ELFに似たEdukitシングルボードコンピュータトレーナーシステムは、1980年代初頭にイギリスのModus Systems Ltd.から提供された。[ 15 ]インフィニット社は1970年代後半にUC1800と呼ばれる1802ベースのS-100バス拡張コンソールコンピュータトレーナーを製造し、組み立て済みまたはキットの形で入手可能でした。[ 16 ] [ 17 ]
1802年以降のレトロコンピューティング愛好家による研究の一環として、アルトイド缶に収まるMembership Cardマイクロコンピュータキット[ 18 ]やSpare Time Gizmos Elf 2000(Elf 2K)[ 19 ]など、より最近(2000年以降)にもコンピュータが製作されています。その他のシステムについては、 § エミュレータとシミュレータを参照してください。
製品統合

1802は科学機器や商用製品に使用されました。[ 20 ] [ 21 ]
1802はプレッシー公衆電話で使用されました。[ 22 ]
1980年以降のクライスラーおよび関連モデル車両では、1802を第2世代の電子式リーンバーンシステム(電子点火制御付き)に使用しており、これは車載コンピュータベースの最初の自動車制御システムの1つである。[ 23 ] [ 24 ]
1802はスペインでピンボールマシンやビデオアーケードゲームの製造に使用されました。[ 25 ]
放射線耐性強化
1802の高速バージョンは、シリコン・オン・サファイア(SOS)半導体プロセス技術で製造され、放射線および静電放電(ESD)に対するある程度の耐性を備えています。[ 26 ] RCAとサンディア国立研究所が共同で開発した1802の別の耐放射線バージョンは、 C2L(クローズドCOS / MOSロジック)技術を使用してバルクシリコン上に構築されました。 [ 27 ] [ 28 ] 非常に低い電力消費能力と相まって、このチップは宇宙や軍事用途に最適です。[ 27 ](また、1802が発表された当時は、他の耐放射線マイクロプロセッサは市場にほとんどありませんでした)。
宇宙技術と科学
1802は、ガリレオ宇宙船[ 29 ] 、マゼラン[ 30 ]、 ESAのユリシーズ宇宙船のプラズマ波分析装置、さまざまな地球周回衛星[ 31 ] 、アマチュア無線を運ぶ衛星など、多くの宇宙船や宇宙科学プログラム、実験、プロジェクト、モジュールで使用されました。[ 32 ]
NASAのハッブル宇宙望遠鏡のいくつかのサブシステムは、 WFPC [ 33 ] やMAT [ 34 ]など1802個のプロセッサを使用しています。
軍事利用
1980 年代から 1990 年代にかけての多くの英国軍の装備品には 1802 が使用されていました。その中には次のようなものがあります。
- L1A1 信管セッター[ 35 ]
- SLR / SA80ライフルに取り付けられたSAWESトレーニングシステム(小火器武器効果シミュレータ)
- ターミガン戦場通信システム
プログラミング言語
1802 で利用できる最初の高級言語はForthで、Forth, Inc. によって提供され、1976 年に MicroFORTH として知られていました (Forth Inc のアーカイブを参照)。その他の利用可能なプログラミング言語 (インタープリタとコンパイラの両方) には、CHIP-8 ( Joseph Weisbeckerによって発明された) (およびその派生言語)、8th (Lee Hart によって作成された Forth のバージョン)、[ 36 ] Tom Pittman のTiny BASIC、[ 37 ] C、さまざまなアセンブラとクロスアセンブラなどがあります。その他の特殊言語は、NASA やジョンソン宇宙センター、AMES、ゴダード、ラングレー、マーシャル、ジェット推進研究所 (JPL) などの連邦機関によって使用されており、HAL/Sクロスコンパイラ、[ 38 ] STOIC (Forth に似た言語)、[ 39 ]などが含まれていました。
プログラミング言語と開発環境であるIPS( Interpreter for Process Structures )は、 AMSAT衛星のリアルタイム制御のために特別に作成され、使用されました。[ 40 ]
エミュレータとシミュレータ
1802チップと、このマイクロプロセッサを搭載したコンピュータは、愛好家によってハードウェアおよび/またはソフトウェアでエミュレーションおよびシミュレーションが行われてきました。FPGA用のVHDL設計は3つあります。 [ 41 ] [ 42 ] [ 43 ] PICマイクロコントローラを使用して、CDP1802マイクロプロセッサチップやCDP1861ビデオチップを使わずに、バス精度でフルスピードのCOSMAC Elfクローンが作成されました。[ 44 ] JavaScriptで書かれたCOSMAC Elf(拡張版)のオンラインシミュレータは、ダウンロードなしでユーザーのブラウザ上で動作します。[ 45 ]
説明
導入

RCA 1802 は、最小クロック周波数のない静的コアCMOS設計を採用しているため、マイクロプロセッサの動作に影響を与えずにマイクロプロセッサを一時停止するクロック周波数ゼロを含む、非常に低速かつ低電力で動作できます。
1802は2つの独立した8ピンバス、すなわち8ビット双方向データバスと時分割多重アドレスバスを備えており、16ビットアドレスの上位8ビットと下位8ビットは、下位アドレスに2クロックの遅延をかけてアサートされます。これは、専用の16ビットアドレスバスを使用していたMOS 6502やIntel 8080といった当時のほとんどの設計とは対照的です。また、1802は、下位アドレスを未使用データバスに多重化し、アドレス遅延をほとんど発生させなかった Intel 8085と比べても劣っています。
1802には、1ビットのプログラムおよびテスト可能な出力ポート(Q)と、分岐命令によって直接テストされる4つの入力ピン(EF1~EF4)があります。これらのピンにより、単純な入出力(I/O)タスクを直接処理し、容易にプログラミングすることができます。
命令の実行には16~24クロックサイクルかかるため、1802は特に高速とは言えませんでした。比較すると、6502はほとんどの命令を2~4クロックサイクルで実行し、最長命令(公式命令)[ 46 ]では7クロックサイクルかかりました[ 47 ] 。
部品番号の接尾辞指定
CDP1802の部品番号に付いた様々なサフィックスは技術仕様を表し、A、B、Cのように動作速度(3.2 MHz~6.4 MHz)、温度(-40 °C~+85 °C、-55 °C~+125 °C)、電圧範囲(4V~10.5V)、パッケージタイプ(D、E、Q)、バーンイン(X)などがある。これらはRCA、インターシル、ハリス、ヒューズ・エアクラフト、ソリッド・ステート・サイエンティフィック(SSS)といった様々な供給元間である程度標準化されていた。ヒューズはHCMPを、SSSはCDPの代わりにSCP(おそらくBCPも)をプレフィックスとして採用しており、現在までに文書化されていない追加のサフィックスもあった。(例:CDP1802A、CDP1802ACE、CDP1802BCD、HCMP1802AP、SCP1802D)[ 48 ]
| サフィックス | パッケージタイプ |
|---|---|
| E | PDIP =プラスチックデュアル インライン パッケージ |
| D | SBDIP = サイドろう付けセラミックデュアルインラインパッケージ |
| 質問 | PLCC = プラスチックリードチップキャリア |
| X | バーンイン |
説明書
RCA 1802命令のほとんどは1バイト(8ビット)の長さです。これらの命令では、上位4ビット(上位ニブル)は命令オペコードを指定し、命令フェッチ時にIレジスタにラッチされます。下位4ビット(下位ニブル)は16個の汎用レジスタの1つを選択し、Nレジスタにラッチされます。[ 49 ]
レジスタ参照命令の場合、 Nで指定されたレジスタは、演算内容に応じてソースオペランドまたはデスティネーションオペランドとして使用されます。プログラム実行中は、中間値と状態が選択されたレジスタに共通に保持されるため、連続する命令にまたがるマルチステップ演算を実行できます。
LDI (Load Immediate)命令など、一部の命令は2バイト(16ビット)の長さです。これらの場合、最初のバイトにはオペコードが含まれ、2番目のバイトには命令で使用される即値オペランドまたはアドレス値が提供されます。プログラムの実行には、レジスタとメモリ間の転送や条件分岐および無条件分岐操作が含まれることもあり、実行の進行に応じて制御フローが変化することを可能にします。
レジスタとI/O
1802は8ビットバイトマシンであり、2バイト操作を除き、16ビット演算を最小限しかサポートしていません。主要なアキュムレータは8ビットの「D」レジスタ(データレジスタ)です。1ビットのキャリーフラグはDF(データフラグ)です。算術演算や論理演算、メモリ参照のロード命令やストア命令など、ほとんどの演算はDレジスタを使用します。ほとんどの16ビット演算は、下位バイトを処理し、次にDレジスタを介して上位バイトを処理します。必要に応じてDFをキャリーやボローとして使用します。
1802の重要な特徴は、16ビットのレジスタを16個備えていることです。これらは主にアドレス指定に使用されます。SEP命令は、16ビットのレジスタのいずれかをプログラムカウンタとして選択できます。SEX命令は、16ビットのレジスタのいずれかをインデックスレジスタとして選択できます。[ 50 ]レジスタR0は、内蔵DMAコントローラのメモリアドレスを保持するという特別な用途があります。レジスタR1は、割り込みハンドラのプログラムカウンタという特別な用途があります。一部の命令では、R2をスタックとして使用します。[ 51 ]
これらのレジスタの値をDレジスタ経由で設定および読み出しできる命令があり、上位8ビットと下位8ビットを個別に操作できます。また、16ビット値全体をインクリメントおよびデクリメントする命令もあり、LDA(ロードアドバンス)やSTXD(Xレジスタ経由でストアしデクリメント)のように、自動インクリメントおよびデクリメントを実行する命令もいくつかあります。16ビットレジスタと値の比較も、Dレジスタを仲介として利用し、複数の命令を用いて操作を実行する必要があります。
プロセッサには5本の特殊I/Oラインがあります。Q出力は1本あり、SEQ命令でセット、REQ命令でリセットできます。外部には1ビットフラグ入力が4本(EF1、EF2、EF3、EF4)あり、これらの入力ラインの状態に基づいて条件分岐を行うための専用分岐命令が8つあります。R(X)レジスタとDアキュムレータを使用するINputポート命令とOUTputポート命令はそれぞれ7つずつあります。
EFラインとQラインは、扱いやすく扱いやすいことから、1802ベースの趣味用コンピュータにおいて複数のインターフェースによく使用されていました。Qラインは、ステータスLED、カセットインターフェース、RS-232インターフェース、スピーカーを駆動するのが一般的でした。つまり、ユーザーはRS-232とカセットのデータが送信される音を実際に聞くことができました(音量調節機能が実装されていない場合)。伝統的に、EF4ラインはCOSMAC ElfのINPUTモーメンタリプッシュボタンに接続されています。他のシステムでは、他のラインのいずれかが使用される場合があります。
他にも、4 ビットの N、P、X、8 ビットの T、および 1 ビットの IE など、内部の特殊用途のレジスタとフラグやプログラムで使用可能なレジスタとフラグがいくつかあります。
分岐
1802 には、無条件分岐と条件分岐、ショート分岐とロング分岐、スキップの 3 種類があります。
ショート分岐は2バイト命令であり、256バイト範囲、1バイトアドレス、0から255(16進FF)までのページ絶対アドレス指定を使用します。相対分岐はありません。ショート分岐は常に、アドレスバイトを含むページ内で分岐します。[ 51 ]
ロング分岐は、64K メモリ アドレス空間をサポートするために完全な 16 ビット アドレス指定を使用する、唯一の 3 バイト命令です。
スキップ命令は、無条件ショートスキップの場合はPCを1増加し、ロングスキップの場合はPCを2増加します。ロングスキップのみ条件分岐が可能です。
サブルーチン呼び出し
プロセッサには標準的なサブルーチンCALL命令とRET命令はありませんが、シミュレーションは可能です。16レジスタ設計により、興味深いサブルーチン呼び出しと戻りのメカニズムが実現可能ですが、汎用コーディングよりも小規模なプログラムに適しています。
よく使用されるいくつかのサブルーチンは、そのアドレスを16個のレジスタのいずれかに保持することで、素早く呼び出すことができます。ただし、呼び出されるサブルーチンは、「return」命令を実行するために、呼び出し元のPCレジスタを(ハードコードして)知っておく必要があります。SEP命令は、16ビットレジスタの1つが指すサブルーチンと、呼び出し元に返すための別のSEP命令を呼び出すために使用されます。SEPはSet Program Counter(プログラムカウンタの設定)の略で、16個のレジスタのうち、その時点以降にプログラムカウンタとして使用するレジスタを選択します。サブルーチンは、SEPの「return」命令が呼び出し元に制御を戻した後、レジスタが次に使用するために正しい値を指すように、サブルーチンから戻る前にエントリポイントの直前の位置にジャンプします。プロセッサは、参照と使用の後、常にPCをインクリメントして(次に実行する命令を指すように)、この手法は前述のとおり機能します。
この方式の興味深いバリエーションとして、2つ以上のサブルーチンをリング状に配置して、ラウンドロビン方式で呼び出すというものがあります。初期のホビー用コンピュータでは、このようなトリックやテクニックが、水平リフレッシュ割り込み時にスキャンラインアドレスを再プログラムし、ビデオコントローラの各スキャンラインを4回繰り返すためによく使われていました。
よく知られ、よく使われるルーチンの一つにSCRT(Standard CALL and RETURN Technique)があります。これは、汎用サブルーチンの呼び出しと戻り(パラメータの「インライン」渡しや、スタックを用いたネストされたサブルーチンを含む)を可能にします。この手法では利用可能なレジスタのどれでも使用できますが、プログラマの好みに応じて、多くのプログラマはRCAがCDP1802ユーザーマニュアルで提供しているルーチンを使用しています。このルーチンでは、推奨レジスタの使用法として、R2 = スタックポインタ、R3 = 汎用プログラムカウンタ(PC)、R4 = 呼び出し、R5 = 戻り、R6 = 引数渡しポインタ(非破壊)が挙げられます。これらの補助ルーチンは小さいですが、マイクロプロセッサの設計に実際のCALL命令とRET命令が組み込まれている場合と比較して、実行速度にオーバーヘッドが生じます。この設定により、R0をDMAに、R1を必要に応じて割り込みに使用でき、R7からRF(16進数)までを一般的なプログラム用途に使用できます。
アドレッシングモード
16ビットのアドレスバスと8ビットのデータバスのため、16個の汎用レジスタは16ビット幅ですが、アキュムレータのDレジスタは8ビット幅しかありません。そのため、アキュムレータがボトルネックになりがちです。あるレジスタの内容を別のレジスタに転送するには、4つの命令が必要です(レジスタのHIバイトに対して1つのGet命令と1つのPut命令、そしてLOバイトに対しても同様の命令のペアが必要です:GHI R1; PHI R2; GLO R1; PLO R2)。同様に、新しい定数(サブルーチンジャンプ用の新しいアドレスやデータ変数のアドレスなど)をレジスタにロードする場合も、4つの命令が必要です(定数の各半分に対して1つずつ、合計2つのLDI命令)。これらの命令の後に、レジスタPHIとPLOへのPut命令が続きます。
間接レジスタ、自動インクリメント付き間接レジスタ、自動デクリメント付き間接レジスタの各アドレッシングモードは、アキュムレータ内のデータに対して8ビット演算を実行するのに非常に効率的です。ただし、他のアドレッシングモードはありません。したがって、直接アドレッシングモードをエミュレートするには、前述の4つの命令を使用してアドレスを予備レジスタにロードし、続いてそのレジスタをインデックスレジスタとして選択する命令を実行し、最後にそのアドレスが指すデータ変数に対して目的の演算を実行する必要があります。
自動インクリメントモードと自動デクリメントモードは、大まかなスタックを作成するために使用できます。他のプロセッサのスタックポインタは、プリデクリメントおよびポストインクリメント操作、またはその派生で実装されています。COSMACはポストインクリメントとデクリメントのみを提供するため、スタックポインタの方向を変更する際には、INC命令またはDEC命令を使用して明示的に修正する必要があります。MARK命令と割り込み動作のため、R2はスタックポインタとして最もよく使用されます。STXDはPUSH命令として使用でき、LDXIまたはLDAはPOP命令として使用できます。
間接レジスタおよび即値アドレッシングモードによるALU演算はサポートされていますが、レジスタを直接操作するALU演算はサポートされていません。レジスタに対しては、ロード、ストア、インクリメント、デクリメントのみがサポートされています。
割り込み
1802が初期化されると、IE(割り込みイネーブル)が直ちにセットされ、割り込みが有効になります。割り込みサービスルーチン(ISR)がセットアップされるまで、割り込みは電気的に抑制する必要があります。R1は初期化プログラムによってISRのアドレスにロードされます。R2はプログラムによってISRがスタックとして使用できる領域にロードされます。
INT- ラインが Low に保持され、現在の命令または DMA サイクルが完了すると、X レジスタと P レジスタの内容が一時レジスタ T に格納されます。X は 2 に、P は 1 に設定されます。これにより、プログラム カウンタが ISR に、R(X) がスタックに切り替わります。IE はクリアされ、以降の割り込みが無効になります。この時点で、割り込み サービス ルーチンが制御を握ります。DEC R2 命令を使用してスタック上にスペースを割り当て、SAV 命令で T レジスタ (X と P の以前の内容を含む) をスタックにコピーします。アキュムレータは別の DEC R2 と STXD で保存されます。DF は SHL と別の STXD で保存されます。必要に応じて、さらに他の状態を同様の方法で保存できます。次に、割り込み コードがハードウェアにサービスを提供して、INT- ラインを解放します。
割り込みサービスルーチンを終了するには、INC R2 を実行してスタックポインタを修正します。保存されたレジスタはすべてスタックから復元されます。DF は LDXA と SHR によって復元されます。次に、アキュムレータ D が LDXA によって復元されます。R1 は ISR のアドレスへのポインタです。R1 は ISR の起動以来プログラムカウンタとして使用されているため、保持されている ISR アドレスが変更されています。これは、 ISR エントリポイントの直前に分岐し、RET を実行することで修正されます。これにより、R1 は ISR エントリポイントに戻り、割り込みが有効になり、スタックから以前の X と P がリロードされて割り込みが終了します。
DMAとロードモード
CDP1802には、DMA入出力用の2本のDMAリクエストラインを備えたシンプルなDMAコントローラが内蔵されています。CPUは、マルチステップマシンサイクルの特定のサイクル(8~16クロックサイクル)でのみメモリにアクセスします。外部ハードウェアは、これらの期間中にプロセッサを中断することなくデータの読み書きを行うことができ、これはサイクルスチールと呼ばれる一般的な概念です。
R0はDMAアドレスポインタとして使用されます。DMAデータの開始アドレスはR0に格納され、CPU上の適切な読み取りまたは書き込みピンがLowレベルにプルダウンされます。CPUはDMA要求に応答してR0の値をインクリメントし、次の要求では自動的にメモリ内の次の位置が使用されます。このように、DMAピンを繰り返しトリガーするだけで、システムはメモリ全体を走査し、要求ラインの指示に従って読み取りまたは書き込みを実行します。
DMAコントローラは特別な「ロードモード」も提供しており、プロセッサのCLEAR入力とWAIT入力がアクティブな状態でメモリへのロードが可能です。これにより、ROMベースのブートストラップローダを必要とせずにプログラムをロードできます。COSMAC Elfマイクロコンピュータとその後継機種では、このロードモードを使用して、トグルスイッチや16進キーパッドからソフトウェアを必要とせず、最小限のハードウェアでプログラムをロードできました。ユーザーはスイッチを次の値に設定し、読み取りをトグルするだけで、次の処理に進むことができます。アドレスを変更する必要はありません。DMAステッピングによって自動的にアドレスが変更されます。
命令セット
クロックサイクル効率は、ほとんどの8ビットマイクロプロセッサと比較して低いです。8クロックサイクルで1マシンサイクルが構成されます。ほとんどの命令の実行には2マシンサイクル(16クロックサイクル)かかりますが、長い分岐、長いスキップ、およびNOP命令は3マシンサイクル(24クロックサイクル)かかります。比較すると、MOS Technology 6502では1命令の実行に2~7クロックサイクル、Intel 8080では4~18クロックサイクルかかります。
| オペコード | オペランド | ニモニック | 説明 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | b2 | b3 | ||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | — | — | IDL | 割り込みまたはDMAサイクルを待つ |
| 0 | 0 | 0 | 0 | n | — | — | LDN n | D ← M(R(n)) [Rn経由でメモリをロード、n≠0] | |||
| 0 | 0 | 0 | 1 | n | — | — | INC n | R(n) ← R(n) + 1 | |||
| 0 | 0 | 1 | 0 | n | — | — | 12月n | R(n) ← R(n) - 1 | |||
| 0 | 0 | 1 | 1 | コンディション | 追加 | — | BR BQ BZ BDF SKP BNQ BNZ BNF追加 | CONDが真の場合、R(P).0 ← 加算[ R(P)の下位半分に 加算をコピー] | |||
| 0 | 0 | 1 | 1 | n | 1 | e | 追加 | — | B1 B2 B3 B4 BN1 BN2 BN3 BN4追加 | EF(e+1) ≠ n の場合 R(P).0 ← 追加 | |
| 0 | 1 | 0 | 0 | n | — | — | LDA n | D ← M(R(n)); R(n) ← R(n) + 1 | |||
| 0 | 1 | 0 | 1 | n | — | — | STR n | M(R(n)) ← D | |||
| 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | — | — | IRX | R(X) ← R(X) + 1 |
| 0 | 1 | 1 | 0 | 0 | p | — | — | アウトp | バス ← M(R(X)); R(X) ← R(X) + 1; N = p [p≠0] | ||
| 0 | 1 | 1 | 0 | 1 | p | — | — | IN p | D ← M(R(X)) ← BUS; N = p + 8 [p≠0] | ||
| 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | — | — | RET | t ← M(R(X)); R(X) ← R(X) + 1; X:P ← t; IE ← 1 [ d ] |
| 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | — | — | ディス | t ← M(R(X)); R(X) ← R(X) + 1; X:P ← t; IE ← 0 [ d ] |
| 0 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | — | — | LDXA | D ← M(R(X)); R(X) ← R(X) + 1 |
| 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | — | — | STXD | M(R(X)) ← D; R(X) ← R(X) - 1 |
| 0 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | — | — | ADC | DF:D ← D + M(R(X)) + DF |
| 0 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | — | — | SDB | DF:D ← M(R(X)) - D - (¬DF) |
| 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | — | — | SHRC | D 0-6 ← D 1-7 ; D 7 ← DF; DF ← D 0 |
| 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | — | — | 中小企業 | DF:D ← D - M(R(X)) - (¬DF) |
| 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | — | — | SAV | M(R(X)) ← T |
| 0 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | — | — | マーク | M(R(2)) ← T ← X:P; X ← P; R(2) ← R(2) - 1 |
| 0 | 1 | 1 | 1 | 1 | 0 | 1 | b | — | — | 要求シーケンス | Q ← b |
| 0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | イム | — | ADCI imm | DF:D ← D + imm + DF |
| 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | イム | — | SDBI imm | DF:D ← imm - D - (¬DF) |
| 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | — | — | SHLC | D 1-7 ← D 0-6 ; D 0 ← DF; DF ← D 7 |
| 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | — | — | SMBI投資銀行 | DF:D ← D - imm - (¬DF) |
| 1 | 0 | 0 | 0 | n | — | — | グローn | D ← R(n).0 | |||
| 1 | 0 | 0 | 1 | n | — | — | GHI n | D ← R(n).1 | |||
| 1 | 0 | 1 | 0 | n | — | — | PLO n | R(n).0 ← D | |||
| 1 | 0 | 1 | 1 | n | — | — | ファイn | R(n).1 ← D | |||
| 1 | 1 | 0 | 0 | コンディション | アディ | 追加 | LBR LBQ LBZ LBDF LSKP LBNQ LBNZ LBNF追加 | CONDが真の場合、R(P).1 ← addhi; R(P).0 ← addlo | |||
| 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | — | — | いいえ | 操作なし |
| 1 | 1 | 0 | 0 | s | 1 | 0 | 1 | — | — | LSNQ LSQ | Q = s ならば R(P) ← R(P) + 2 |
| 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | — | — | LSNZ | D≠0の場合、R(P) ← R(P) + 2 |
| 1 | 1 | 0 | 0 | s | 1 | 1 | 1 | — | — | LSNF LSDF | DF = s ならば R(P) ← R(P) + 2 |
| 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | — | — | LSIE | IE = 1 の場合、R(P) ← R(P) + 2 |
| 1 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | — | — | LSZ | D = 0の場合、R(P) ← R(P) + 2 |
| 1 | 1 | 0 | 1 | n | — | — | 9月n | P ← n | |||
| 1 | 1 | 1 | 0 | n | — | — | セックスn | X ← n | |||
| 1 | 1 | 1 | 1 | 0 | アルミ | — | — | LDX OR AND XOR ADD SD SM | ALU M(R(X)) | ||
| 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | — | — | SHR | DF ← D 0 ; D 0-6 ← D 1-7 ; D 7 ← 0 |
| 1 | 1 | 1 | 1 | 1 | アルミ | イム | — | LDI ORI ANI XRI ADI SDI SMI imm | ALU imm | ||
| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | — | — | SHL | DF ← D 7 ; D 1-7 ← D 0-6 ; D 0 ← 0 |
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | b2 | b3 | ニモニック | 説明 |
| 3 | 2 | 1 | 0 | COND(分岐) | アルミ | ||||||
| 0 | 0 | 0 | 0 | BR LBR(常に) | LDX LDI (D ← 引数) | ||||||
| 0 | 0 | 0 | 1 | BQ LBQ (Q = 1) | または ORI (D ← D ∨ arg) | ||||||
| 0 | 0 | 1 | 0 | BZ LBZ (D = 00) | AND ANI (D ← D ∧ arg) | ||||||
| 0 | 0 | 1 | 1 | BDF LBDF (DF = 1) | XOR XRI (D ← D ⊻ arg) | ||||||
| 0 | 1 | 0 | 0 | ADIを加算 (DF:D ← D + arg) | |||||||
| 0 | 1 | 0 | 1 | SD SDI (DF:D ← 引数 - D) | |||||||
| 0 | 1 | 1 | 1 | SM SMI (DF:D ← D - arg) | |||||||
| 1 | 0 | 0 | 0 | SKP LSKP (決して) | |||||||
| 1 | 0 | 0 | 1 | BNQ LBNQ (Q = 0) | |||||||
| 1 | 0 | 1 | 0 | BNZ LBNZ (D ≠ 00) | |||||||
| 1 | 0 | 1 | 1 | BNF LBNF (DF = 0) | |||||||
| 3 | 2 | 1 | 0 | COND(分岐) | アルミ | ||||||
| R0 - R15 | 16ビット汎用レジスタ16個 |
| ランク0 | 下位レジスタ半分 |
| 1番 | 上位レジスタ半分 |
| n | 命令に埋め込まれたレジスタセレクタ |
| R(n) | n によって選択されたレジスタ |
| M(R(n)) | nで選択されたレジスタによってアドレス指定されたメモリバイト |
| P | 4ビットプログラムカウンタセレクタ |
| R(P) | プログラムカウンタ |
| X | 4ビットレジスタセレクタ |
| R(X) | Xによって選択されたレジスタ |
| M(R(X)) | Xで選択されたレジスタによってアドレス指定されたメモリバイト |
| D | 8ビットアキュムレータ |
| DF | 1ビットキャリーレジスタ |
| DF:D | キャリーレジスタとアキュムレータの9ビットの組み合わせ |
| IE | 1ビット割り込みイネーブルレジスタ |
| 質問 | 1ビットのテスト可能な出力レジスタ |
| EF1 - EF4 | 4つの1ビットテスト可能な入力 |
| T | 8ビットの一時レジスタ |
| 北 | INとOUTで使用される4ビットの状態コード |
サポートチップ
グラフィック
1802年初頭のマイクロコンピュータでは、コンパニオングラフィックスビデオディスプレイコントローラチップであるRCA CDP1861 ( NTSCビデオフォーマット用、 PAL用CDP1864バリアント)が内蔵DMAコントローラを使用して、標準テレビ画面に最大水平64ピクセル、垂直128ピクセルの白黒ビットマップグラフィックスを表示していました。1861はPixieグラフィックスシステムとしても知られていました。
1802 の高速版は 4~5 MHz (5 V 時、10 V ではさらに高速 (6.4 MHz)) で動作したが、通常は 1861 チップの要件に合わせて 3.58 MHz を 2 で割った値 (1.79 MHz) で動作し、1 秒あたり 100,000 命令を少し超える速度を実現していた。ただし、中にはComxの約 2.8 MHz やPecomの 5 MHzなど、他の速度で動作したものもあった。COSMAC VIPはビデオ チップとプロセッサを統合し、趣味用キットへのアドオンではなく、単一の専用コンピュータとして構築したが、1802 をはるかに低速で動作させ、Pixie の仕様書のリファレンス デザインで推奨されているように、非標準の 1.76064 MHz で 1861 と正確に同期させた。[ e ]
CDP1862カラージェネレータ回路ICは、1861コンパニオンチップであり、カラーグラフィックスを生成するために使用できました。Pecom 64やTelmac TMC-600などの一部のコンピュータシステムでは、CDP1869とCDP1870コンパニオンICで構成されるVIS(ビデオインタフェースシステム)が使用されており、1980年代の他の8ビットシステムに匹敵する、はるかに高解像度のカラーグラフィックスを実現していました。
コードサンプル
以下の小さなアセンブラソースコードは、バイトをある場所から別の場所にコピーするサブルーチンCPYMEMのものです。ポインタとカウントはどちらも16ビットです。1802は、他のほとんどのマイクロプロセッサのように、専用命令によるCALLとRETをサポートしていません。代わりに、サブルーチンへのポインタを設定し、SEP命令を使用してそのポインタを新しいPCとすることが想定されています。サブルーチンが戻るには、別のSEPを使用して呼び出し元のPCを選択する必要があります。これにより、サブルーチンのネストが困難になります。SCRT呼び出し方式(前述の「サブルーチン呼び出し」セクション)は、ゲストサブルーチンへのCALLとして機能するサブルーチンと、RETとして機能する別のサブルーチンを提供します。この方式は大幅なオーバーヘッドを追加し、いくつかのレジスタを使用します。R2はスタックポインタ、R3はプログラムカウンタ、R4はCALLルーチン、R5はRETurnルーチン、R6は引数ポインタです。 CPYMEM は、SCRT 方式で呼び出されたと想定します。通常、サブルーチンはリターン時にエントリポイントの直前に分岐してアドレスを復元しますが、SCRT 方式ではこれは必要ありません。この汎用サブルーチンは先頭にジャンプするため、SCRT の有無にかかわらず呼び出すことができます。
1020 1020 D5 1021 47 1022 58 1023 18 1024 29 1025 89 1026 3A 21 1028 99 1029 3A 21 102B 30 20 | ; R7 でアドレス指定されたメモリ バイトを、R9 に含まれるバイト数だけ、R8 でアドレス指定された場所にコピーします。; このサブルーチンは、R5 で示される戻りプロシージャを使用します。 ; このルーチンは、0 から 15 が R0 から R15 と等しいと想定しています。ORG 1020H CPYR: SEP R5 ; PC を R5 に反転して戻ります。CPYMEM: LDA R7 ; バイトを @R7 から D に移動し、R7 を移動します。 STR R8 ; D を @R8 に保存します。INC R8 ; 宛先ポインタを移動します。DEC R9 ; バイトをカウント ダウンします。GLO R9 ; R9 の両方の半分が 0 かどうかを確認します。 BNZ CPYMEM ; 最初に下位GHI R9 ; 次に上位BNZ CPYMEM ; それ以外の場合は、すべてのバイトについてループします。BR CPYR ; ルーチンを再利用できるように先頭に戻ります |
大きなコード例は、ALU(算術論理演算装置)操作をテストする診断ルーチンです。[ 52 ]
このルーチンは、CDP1802 マイクロプロセッサが初期リセット状態にある(またはこのコードを実行する前にそのように設定されている)ことを前提としています。したがって、プログラム カウンタ (PC) と X 間接レジスタ「ポインタ」は両方とも 16 ビット レジスタ R0 に設定されます。PC と X は両方とも R0 を指しているので、例 'OUT 4,00' のように即値を出力できるのはそのためです。PC はオペコード命令バイトがメモリから取得された後にインクリメントされるため、OUT 4 が実行されると次のアドレスを指します。したがって、次の即値バイトである RX = R0 が指すメモリ内の値が出力されます。OUT 命令は X レジスタ (R0、つまり PC でもある) もインクリメントするため、OUT の後に即値が出力され、即値に続く次の命令アドレスでプログラム実行が継続されます。ルーチンが必要に応じて X (SEX) をレジスタ R6 と R0 に設定するのはそのためです。また、OUTオペコードはメモリの一部(「バッファ」)を簡単に出力するためにRXレジスタをインクリメントしますが、INPオペコードはそうしません。INPはRXが指すアドレスの値をDの8ビットデータバイトアキュムレータに格納しますが、RXは変更されません。
このルーチンでは、OUT 4 はCPUシステムの8ビットLEDまたは2桁の16進ディスプレイに値を表示し、IN 4 は8つのトグルスイッチ(または16進キーパッド)から値を取得することを前提としています。BN4 オペコード(ループ; * = 'このアドレス')は、「1ビット入力 EF4 ラインがローレベルの場合に分岐」し、モーメンタリ「入力」プッシュボタンが押されているかどうかをテストします。B4 オペコード('ハイレベルの場合')ループは、ボタンが放されるのを待ちます。SEQ と REQ は、通常 LED に接続されている単一の Q ラインのオン/オフを切り替えます。
1802は「バイトマシン」ですが、16個の16ビットレジスタ(R0~RF(「R」プレフィックスなしで0~Fと呼ばれることもあります))を備えています。16ビットレジスタのデータを扱うには、プログラマはDアキュムレータを介してレジスタの上位または下位の値を取得(Get)および取得(Put)する必要があります。これらのレジスタの上位バイトと下位バイトは、Rn.0(lo)およびRn.1(hi)と呼ばれることもあります。ショート分岐は、ページ絶対アドレス指定と256バイトのアドレス境界を持つ2バイトのオペコードです。ロング分岐は、完全な16ビットアドレス分岐を持つ3バイトのオペコードです。
..テストALU OPS0000 90 GHI 0 ..セットアップR60001 B6ファイ60002 F829 LDI DOIT ..オペコードの入力用0004 A6 PLO 60005 E0セックス0 .. ( X = 0すでに)0006 6400 OUT 4 , 00 ..準備完了をお知らせします0008 E6セックス6 ..今X = 60009 3 F09 BN4 * ..待って000 B 6 C INP 4 .. OK 、ゲット000 C 64 OUT 4 ..ディスプレイにエコー000 D 370 D B4 * ..リリースを待つ000 F F860 LDI #60 ..今すぐ準備しましょう0011 A6 PLO 6 ..第1オペランド0012 E0セックス0 ..そう言って0013 6401 OUT 4 , 010015 3 F15 BN4 *0017 E6セックス6 ..テイク・イット・イン・アンド・エコー0018 6 C INP 4 .. ( TO 0060 )0019 64 OUT 4 .. ( R6もインクリメント)001 A 371 A B4 *001 C E0 SEX 0 .. DITTO 2番目のオペランド001 D 6402 OUT 4 , 02001 F E6セックス60020 3 F20ループ: BN4 * ..待って0022 6 C INP 4 ..ゲットイット(注: X = 6 )0023 64 OUT 4 ..エコー0024 3724 B4 * ..リリースを待つ0026 12月26日6 .. R6を0060にバックアップ0027 12月26日60028 46 LDA 6 ..第1オペランドをDに取得0029 C4 DOIT : NOP .. DO操作002 A C4 NOP .. (スペア)002 B 12月26日6 .. 0060に戻る002 C 56 STR 6 ..出力結果002 D 64 OUT 4 .. ( X = 6 STILL )002 E 7 A要求.. Qをオフにする002 F CA0020 LBNZループ..ゼロの場合、0032 7 B SEQ ..もう一度電源を入れてください0033 3020 BRループ..いずれの場合も繰り返し注記
- ^ COSMACに関する日付のほとんどと同様に、正確な日付は文献によって異なります。エドワーズは1969年としていますが、 [ 10 ]他の多くの人は1970年としており、ここでもその日付が使用されています。
- ^これは1973年の活動の年次レビューであり、1974年に出版されました。 [ 11 ]
- ^各種COSMAC装置のサンプリングと一般公開の正確な日付は不明である。ハーブ・ジョンソンは、本稿の日付の根拠となるRCA報告書の詳細なリストを作成している。 [ 12 ]
- ^ a b示されている操作は、おそらく 1802 の実際の操作です。ただし、1802 のドキュメントでは、この操作は X:P ← M(R(X)); R(X) ← R(X) + 1; IE ← 0 または 1 と示されています。これが真実であれば、割り込みが返されるたびに予測不可能な R(X) が増分されることになります。
- ^しかし、このマシンの古さを考えると、より高速なグレードがまだ開発されていなかったため、プロセッサの定格クロックは最大3.2MHz、あるいは2.5MHzだった可能性もある。これは極端な例だが、タイミングシステムのコストと複雑さを軽減するために、CPUを定格クロックよりはるかに低い速度で動作させたのは、このマシンだけではないだろう。単純に3.52MHzで動作させるのは、リスクの高い10%、あるいは持続不可能な極端な41%のオーバークロックを意味していただろう。
参考文献
引用
- ^ a b c dキャス 2018 .
- ^ 「RCA COSMAC 1802」。アンティークチップコレクターのページ。AntiqueTech.com。2009年4月21日。2013年1月2日時点のオリジナルよりアーカイブ。 2010年12月27日閲覧。
- ^ "Joseph Weisbecker" . Vintage-Computer.com. 2010年2月8日. 2012年3月16日時点のオリジナルよりアーカイブ。 2010年12月27日閲覧。
- ^ 「ジョセフ・A・ワイズベッカー(1932-1990)」 CosmacElf.com。2014年6月16日時点のオリジナルよりアーカイブ。 2010年12月27日閲覧。
- ^ a bキャス、スティーブン. 「チップの殿堂:RCA CDP 1802 - IEEEスペクトラム」 . IEEE . IEEE . 2023年7月19日閲覧。
- ^ “CDP1802A” . 2012年3月9日時点のオリジナルよりアーカイブ。2010年8月23日閲覧。
- ^ 「CDP1802AC/3 高信頼性CMOS 8ビットマイクロプロセッサ」 Intersil Americas LLC. 2008年10月17日。
- ^ルネサス CDP1802A 40ピン SBDIP パッケージ
- ^ワイスベッカー 1974、41ページ。
- ^ a b c d e f g h i jエドワーズ 2017 .
- ^ a b Lab 1973、152ページ。
- ^ジョンソン、ハーブ(2018年12月11日)「COSMAC 1801、1802年の日付」「。
- ^ 「RCA MCDS、Microboardコンピュータ開発システム」 RetroTechnology.com、2020年10月28日。 2022年5月8日閲覧。
- ^ Ruske, Dave. 「サイバービジョン 2001、3001、4001」 . COSMAC Elf . COSMACELF.COM . 2016年6月30日閲覧。
- ^ 「Wireless World誌22ページの広告」(PDF) . American Radio History . 1981年5月. 2017年1月21日閲覧。
- ^ 「機器レポート - Infinite UC1800マイクロコンピュータ」(PDF) . ClassicCmp.org - Classic Computing . Radio Electronics Magazine. 1977年8月. 2017年1月22日閲覧。
- ^ハーバーハーン、ウィリアム(1977年2月)「Kilobaud Magazine Article Pg 90」 Archive.orgウェイン・グリーン2017年1月22日閲覧。
- ^ハート、リー. 「1802年会員カードコンピュータ」 .リー・ハートのホームページ. リー・ハート. 2016年5月22日閲覧。
- ^ 「Spare Time Gizmos Elf 2000 (Elf 2K)」。
- ^ 「Sinar水分計5世代」 。 2016年5月22日閲覧。
- ^ 「Inforcel」 . 2016年5月22日閲覧。
- ^ 「英国の公衆電話CT24 CT25」 。 2026年1月9日閲覧。
- ^ジョンソン、ハーバート・R. (2016年6月22日). 「RCA/ワイズベッカー「システム00」、別名「フレッド」」「 . Retrotechnology . 2016年6月23日閲覧。
- ^ 「クライスラー・リーンバーン・エンジン制御システム」 All Mopar Chrysler Info AllPar.com 2016年6月23日閲覧。
- ^ Donnelly, William (2016年7月7日). 「MDCCCII (1802) | 製品統合:商用および科学アプリケーション」 . COSMAC 1802 CPU RetroComputing Extravaganza . William Donnelly . 2016年7月7日閲覧。
- ^ Briggs, GR; Connor, SJ; Sinniger, JO; Stewart, RG (1978年8月). 「40MHz CMOS-on-sapphireマイクロプロセッサ」. IEEE Transactions on Electron Devices . 25 (8): 952– 959. Bibcode : 1978ITED...25..952B . doi : 10.1109/T-ED.1978.19207 .
- ^ a b Dingwall, A.; Stricker, R.; Sinniger, J. (1977年10月). 「高速バルクCMOS C2Lマイクロプロセッサ」. IEEE Journal of Solid-State Circuits . 12 (5). IEEE: 457– 462. doi : 10.1109/ISSCC.1977.1155726 .
- ^ 「放射線耐性強化バルクSiゲートCMOSマイクロプロセッサファミリー」(PDF) IAEA.org 2016年6月4日閲覧。>
- ^ Tomayko, James (1987年4月). 「宇宙飛行におけるコンピューター:NASAの経験」 NASA . 2010年2月6日閲覧。
- ^ http://www2.jpl.nasa.gov/magellan/guide4.html#4.11マゼラン金星探査機ガイド、第4章 - マゼラン宇宙船 - コンピューティングとソフトウェア
- ^ 「RCA COSMAC VIP」 . 2010年1月31日閲覧。
- ^ http://www.amsat.org/amsat-new /AboutAmsat/amsat_history.php 2006年10月5日アーカイブWayback Machine AMSATの歴史
- ^ Afshari, A. (1993年1月). 「ハッブル宇宙望遠鏡の広視野/惑星カメラ」(PDF) . Shutterbug . 2016年10月6日時点のオリジナル(PDF)からアーカイブ。
- ^ Xapsos, MA; Stauffer, C.; Jordan, T.; Poivey, C.; Haskins, DN; Lum, G.; Pergosky, AM; Smith, DC; LaBel, KA (2014年12月). 「ハッブル宇宙望遠鏡はどのくらいの期間、確実に作動するのか? 総線量の観点から」(PDF) . IEEE Transactions on Nuclear Science . 61 (6): 3356– 3362. Bibcode : 2014ITNS...61.3356X . doi : 10.1109/TNS.2014.2360827 . hdl : 2060/20160005759 . S2CID 1792941. 2017年2月27日時点のオリジナル(PDF)からアーカイブ。2017年7月7日閲覧。
- ^ Royal Ordnance L1A1 fuze setter teardown、2021年5月2日、 2022年10月16日閲覧。
- ^ 「会員カードソフトウェア」。
- ^ 「Itty Bitty Computers & TinyBasic」。
- ^ 「Modcomp Classic 7870 コンピュータ上の HAL/S コンパイラの現在の状態」(PDF)。
- ^ MASCOT (MIT天文分光計/光学望遠鏡用カメラ) . 1980年1月.
- ^ James Miller G3RUH; Paul Willmott VP9MU; Stacey Mills W4SM (2002). 「IPSプログラミング」 . AMSAT. 2012年2月29日時点のオリジナルよりアーカイブ。 2012年4月21日閲覧。
{{cite web}}: CS1 maint: 数値名: 著者リスト (リンク) - ^ Baker, Scott (2016). 「1802 CPU coded in VHDL」 . Scott L Baker Github . Scott Baker . 2016年7月24日閲覧。
- ^ Smith, Eric (2009). 「cosmac - RCA COSMAC CDP1802 機能的に同等なCPUコア(VHDLで記述)」 . Eric Smith Github . Eric Smith . 2019年7月9日閲覧。
- ^ Teal, Steve (2016). 「Lattice MachXO2 Picoボード用TinyBASIC搭載VHDL 1802 Core」 . Steve Teal Github . Steve Teal . 2019年7月9日閲覧。
- ^テッド・ロッシン (2011). 「エルフクローン」。テッド・ロッシンのホームページ。テッド・ロッシン。2016 年7 月 24 日に取得。
- ^ Donnelly, William (2011). 「JavaScriptで書かれたCOSMAC Elf風CDP1802シミュレータ」 . Donnelly-Houseホームページ. William Donnelly . 2016年7月24日閲覧。
- ^ Landsteiner, Norbert (2021年6月5日). 「Now Go Bang! 6502の「違法」オペコードの謎を解明」 . Now Go Bang!. 2024年2月2日閲覧。
- ^ 「6502命令セット」 . mass:werk .
- ^ Shvets, Gennadiy (2016年10月2日). 「RCA 1802 (CDP1802) マイクロプロセッサファミリー」 . CPU-World . Gennadiy Shvets . 2016年10月17日閲覧。
- ^ 1802命令セット
- ^ 「SEXとはどういう意味か?」2013年12月26日閲覧。
- ^ a b CDP1802 COSMACマイクロプロセッサのユーザーマニュアル
- ^ Pittman, Tom (1980). 「A Short Course In Programming」 . cosmacelf.com . 2017年5月20日閲覧。
参考文献
- 研究報告書 1973 (PDF) (技術レポート). RCA Laboratories. 1973.
- キャス、スティーブン(2018年7月2日)「チップ殿堂:RCA CDP 1802」IEEE Spectrum
- エドワーズ、ベンジ (2017年10月27日). 「歴史に埋もれた初の女性ビデオゲームデザイナーの再発見」 Fast Company . 2026年2月8日閲覧。
- ワイズベッカー, ジョー (1974年3月). 「簡素化されたマイクロコンピュータアーキテクチャ」. IEEE Computer . 7 (3): 41– 47. Bibcode : 1974Compr...7c..41W . doi : 10.1109/MC.1974.6323475 . S2CID 30965828 .
外部リンク
- CDP1802A/AC/BC データシート、1997 年( PDF )
- CDP1802AC/3 データシート、2008 年( PDF )
- COSMAC ELFのウェブサイト
- プログラミング短期コース(1980年版 RCA 1802 アセンブラのテキスト)
- 高解像度のダイショット
この記事の重要な部分は、もともとGFDLライセンスのFree On -line Dictionary of Computing の資料に基づいています。