آر سي إيه 1802

معالج RCA CDP 1802   والمعروف أيضاً بـ COSMAC (كمبيوتر المصفوفة المتآلفة المتماثلة التكميلية) وهو معالج دقيق CMOS (µP) 8 بت أنتجته شركة RCA في أوائل عام 1976. ويتم تصنيعه حاليا بواسطة شركة انترسيل كمعالج دقيق عالية الثقة. ويختلف هيكل معالج 1802 عن معظم المعالجات الدقيقة 8 بت الأخرى.
في 1970 و1971 قام جوزيف ويسبكر نظام كمبيوتر جديد بهيكل 8 بت،  وأصدرت شركة RCA عمل ويسبكر باسم COSMAC 1801R و1801 Uفي أوائل عام 1975 باستخدام عمليتها CMOS (باسم COSMOS اختصار سيليكون تكميلية/ أشباه موصلات أكسيد فلزي Complementary Silicon/Metal-oxide Semiconductor). وفي 1976 قام فريقي بقيادة جيري هرزوج بتكامل الرقيقتين في رقاقة واحدة، وهي رقاقة 1802.

مقدمة

يتمتع RCA 1802 بتصميم CMOS ثابت مع عدم وجود الحد الأدنى من التردد على مدار الساعة بحيث يمكن تشغيله بسعة منخفضة جدا وبطاقة منخفضة أيضا. فلديه ناقل متوازي 8 بت وناقل بيانات ثنائي الاتجاه وناقل عنوان مضاعف (أي بايت نظام عالي لعنوان 16 بت وبايت نظام منخفض للعنوان الذي يتناوب في استخدام خطو ناقل العنوان المادي 8 بت عن طريق الوصول إلى خطوط الناقل في دورات مختلفة على مدار الساعة).
و RCA 1802 بها بت واحدة، منفذ مخرجات قابل للبرمجة أربعة دبابيس مخرجات يتم اختبارها مباشرة بواسطة تعليمات الفرع.
ونموذج I/O مرن وقابل للبرمجة وبه ساعة أحادية المرحلة مع جهاز تذبذب سريعة على رقية رقاقة. وجموعة سجلة تتكون من ستة عشر سجلات 16 بت. ويمكن وضع وعداد البرنامج (PC) في أي من هذه الأماكن الأمر الذي يوفر طريقا سهلا لتنفيذ عدادات برامج أو مؤشرات أو سجلات.

التطبيقات

بالإضافة إلى تقنية CMOS المعيارية أصبح 1802 أيضاً متوفرا ومصنوع بتقنية عملية أشباه موصلات من السليكون على الياقوت Silicon on Sapphire، الأمر الذي يعطيه درجة من المقاومة الإشعاع وتفرغ كهربي (ESD)، وإلى جانب قدراته البالغة في خفض الطاقة فإن هذا يجعل الرقاقة مناسبة تماما في تطبيقات الفضاء (وأيضاً في الوقت الذي تم فيه إنتاج معالج 1802 توافر عدد قليل من المعالجات الدقيقة الإشعاعية في الأسواق).
استخدمت المركبة الفضائية جاليليو معالجات 1802. كما زُعم على نحو غير صحيح غالبا أن المعالج 1802 استخدم في المركبات الفضائية الأولي فيكينج Viking وفوياجر Voyager لكنه لم يكن متوفر في وقت تصميم هذا المركبات الفضائية، وتصف المصادر الرئيسية أجهزة كميوتر فيكينج Viking وفوياجر Voyager على أن لها هيكل يختلف تماما عن المعالج 1802 وليست قائمة على معالج دقيق. واستخدم معالج 1802 بشكل واسع في الأقمار الصناعية التي تدور في مدار الأرض بشك أساسي في كمبيوترها الرئيسي لكن منذ التسعينات حيث انتشر استخدام جهاز كمبيوتر نظم الاتصالات عن بعد التحكم في الطائرات قليلة التعقيد.
اُستخدم معالج 1802 أيضاً في ACAL، نظام قائم على معالج دقيق لتحديد الغازات في الحرب الكيماوية. وقد تم تصميم ACAL  بواسطة وسائل Oldelft / DelftK، شركة هولندية متخصصة في أعمال الدفاع والعسكرية. وقد حصل ACAL فقط على مرحلة النموذج الأولي ولم تحقق إنتاج أبدا.
من بين التطبيقات التجارية نظام التحكم في دخول بناء رئيسي MIL، صُنع في أستراليا، وتم وسُوق في أوروبا في الثمانينات. 
كان الكثير من المعالجات الدقيقة تقوم على معالج 1802 ومن بينها COMX-35 وCOSMAC ELF (1976 وCOSMAC VIP وNetronics ELF II وQUEST SuperELF وFinnish Telmac 1800 وOscom Nano وYugoslave Peccom 32 و64 بالإضافة إلى لوحة مفاتيح RCA Sudio II video game console (واحدة من أول لوح المفاتيح المستخدمة في الرسومات النقطية)
أول لغة عالية المستوى كانت متوفرة لدى معالج 1802 كانت فورث Forth من إنتاج شركة فورث Forth في 1976.

السجلات وI/O

من الخصائص الهامة في معالج 1802 هي ملف السجلات والذي يتكون من 16 ملف كل ملف 16 بت. ويمكنك اختيار أي من هذه السجلات الستة عشر على أن يكون حاسب البرنامج من خلال استخدام تعيمات SEX. للسجل R0 استخدام خاص في الاحتفاظ بعنوان الذاكر لجهاز التحكم المثبت DMA.
للمعالج خمسة خطوت I/O خاصة، ويجود مخرج Q واحد يمكن ضبطه باستخدام تعليما SEQ وإعادة ضبطة باستخدام REQ. ويوجد ثلاثة مدخلات خارجية: EF1 وEF2 وEF3  وEF4 ويوجد 8 تعليمات فرعية مخصصة للتفريع المشروط حسب حالة خطوت المدخلات هذه.
خطوط EF وQ مُبالغ في استخدامهم بصورة نموذجية في أجهزة الكمبيوتر الهواة القائمة على RCA معالج 1802 بسبب المعالجة المناسبة للخطوط. وهي نموذجية بالنسبة لخط Q لتوجيه واجهة حالة كاسيت CASSETTE وLED وواجهة RS-232 والسماعات. وهذا يعني أن المستخدم يمكنه بالفعل سماع بيانات الكاسيت أو RS-232 التي يتم نقلها.

مكالمات فرعية subroutine call

لا يحتوي المعالج على مكالمة فرعية فورية وتعليمات RET على الرغم من إمكانية محاكاتهما. وملف السجلات يجعل من الممكن بعض آليات العودة والمكالمة الفرعية المهمة على الرغم من أنها مناسبة للبرامج الصغيرة بصورة أفضل من التشفير بغرض عام. كما يمكن إجراء المكالمات الفرعية المستخدمة بصفة عامة بسرعة عن طريق الاحتفاظ بعناوينها في أحد السجلات الستة عشر؛ ويمكن استخدام تعليمات SEP لاتصال مكالمة فرعية يوجهها أحد سجلات البت الستة عشر وتعليمات SEP أخرى للإعادة إلى المتصل (SEP اختصار Set Program Counter، وتحدد أي السجلات الستة عشر سيتم استخدامها لعداد البرنامج من هذه النقطة فصاعدا). وقبل أن تعود المكالمة الفرعية تقفز إلى الموقع الذي يسبق نقطة إدخالها حتى يتم توجه السجل بعد إعادة التعليمات التحكم للمتصل إلى القيمة الصحيحة للمرة القادمة. والاختلاف الكبر في هذا البرنامج هو تلقي مكالمتين فرعيتين أو أكثر في رنة واحدة فيتم اتصالهما بترتيب جولة روبين. ففي أجهزة كمبيوتر الهواة الأولى كانت الخدع الشبيهة بذلك تستخدم بصورة عامة في اختراق أفقي لإعادة برمجة عنوان خط الفحص لتكرار كل خط فحص أربع مرات لجهاز التحكم في الفيديو. ولم تكن المكالمات الفرعية مشكلة لأن كافة تعليمات المكالمات CALL مفهرسة (بعض المعالجات لها مكالمات مباشرة فقط)

نماذج المعالجة

نظرا لأن ناقل العنوان 16 بت وناقل البيانات 8 بت وسجلات الغرض العام الستة عشر جميعها عرضها 16 بت، لكن المتراكم accumulator (ما يُسمى بسجل البيانات أو D-register) هو الوحيد الذي اتساعه 8 بت. ولذلك فإن المتراكم يميل إلى أن يكون عنق زجاجة. وتحويل محتويات أحد السجلات إلى سجل آخر يشمل أربعة تعليمات (أحدهم Get وآخر Put على HI بايت للسجل، وزوج مشابه بالنسبة لـ LO بايت: GHI R1 وPHI R2 وGLO R1 وPLO R2). وبشكل مشابه فإن تحميل ثابت جديد في أحد السجلات (مثل عنوان جديد لقفزة فرعية أو عنوان متغير بيانات) يشمل أيضاً أربعة تعليمات (اثنان بتحميل مباشرة، تعليمات LDI، وواحد لكل نصف ثابت، وكل واحد يعقبه أمر PUT للسجل، PHI وPLO).
نموذجا المعالجة، السجل غير المباشر Indirect register والسجل غير المباشر بزيادة غير تلقائية Indirect register with auto-increment  فعالان إلى حد ما للقيام بعمليات 8 بت على البيانات الموجودة في المتراكم. وهناك نماذج معالجة أخرى وهكذا فإن نموذج المعالجة المباشرة direct addressing  يحتاج إلى محاكاته باستخدام الأربعة تعليمات المذكورة آنفا لتحميل العنوان في شريط السجل؛ ثم يعقبها تعليمات لاختيار هذا السجل كسجل فهرس؛ ثم يعقبها أخيرا العملية المقصودة على متغير البيانات الذي يُشير إليه العنوان.

نموذج التحميل وDMA

يحتوي معالج CDP 1802 على جهاز تحكم ثابت DMA، وبه خطان طلب DMA لعمليات مدخلات ومخرجات DMA، ويُستخدم R0 كمؤشر عنوان DMA.
كما يقدم جهاز تحكم DMA أيضاً "نموذج تحميل" خاص يسمح بتحميل الذاكرة تكون مدخلات المعالج، CLEAR وWAIT، نشطة. الأمر الذي يسمح بتحميل البرنامج دون الحاجة إلى برنامج تحميل تمهيدي قائم على ROM. وقد استخدم هذا جهاز الكمبيوتر الدقيق COSMAC E1F وملحقاته لتحميل البرنامج من مفاتيح التبديل أو لوحة مفاتيح عشرية.

توقيت التعليمات

كفاءة دورة الساعة ضعيفة بالمقارنة بمعظم المعالجات الدقيقة 8 بت. فثمان دورات ساعة تمثل دائرة آلة، ومعظم التعليمات تستغرق في تنفيذها دورتان آلة (16 دورة ساعة)، والتعليمات المتبقية تستغرق ثلاث دورات آلة (24 دورة ساعة). وبالمقارنة نجد أن MOS Technology 6502 يستغقر من 2 إلى 7 دورات ساعة لتنفيذ أمرا واحدا، وIntel 8080 يستغرق من4 إلى 8 دورات ساعة.

الفيديو

في المعالجات الدقيقة الأولى كانت رقاقة جهاز التحكم في عرض الفيديو Video Display Controller  للرسومات المصاحبة، CDP1861 لصيغة الفيديو NTSC، (تختلف CDP1864 بالنسبة لـ PAL، تستخدم جهاز التحكم DMA الثابت لعرض الرسومات النقطية.
رقاقة 1861 يمكنها عرض 64 بيكسل بصورة أفقيا و128 بيكسل رأسيا، وعلى الرغم من أن ذلك يتم عن طريق إعادة تحميل سجل R0 إلا أن الدقة قد تقل إلى 46 × 64 أو 64 × 32 لاستخدام مساحة أقل من الذاكرة أو لعرض بيكسلات مربعة. ونظراً لان إطار الحاجز مشابه في من حيث الحجم للذاكرة فإنه من المعتاد أن عرض بياناتك أو برنامجك على الشاشة سيسمح لك بمشاهدة "فكر" الكمبيوتر (أي معالجة بياناته).
البرامج التي تتصرف بجنون وتقوم بشكل عارض بالكتابة فوق بعضها البعض يمكن أن تكون رائعة، فعلى الرغمن من أن النسخة الأسرع لمعالج 1802 يمكن أن تعمل عن د سرعة 5 ميجا هرتز (عند 5 فولت، تبدو أسرع من عند 10 فولت)، إلا أنها عادة ما تعمل عند سرعة 3.58 ميجا هرتز/2 للتناسب مع متطلبات رقائق 1861 التي تعطي سرعة تزيد زيادة طفيفة عن 100,000 أمر في الثانية.

أمثلة للكود

هذا الكود يقتطف اختبار ALU OPS، فهو روتين تشخيصي:
..  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