"أخيرًا ، نأتي إلى التعليمات التي كنا ننتظرها جميعًا - SEX!"
/ من المقال حول المعالج الصغير CDP1802 /

في أوائل السبعينيات ، كانت
الألعاب الإلكترونية البسيطة مثل
Pong شائعة جدًا في الولايات المتحدة الأمريكية (في اتحاد الجمهوريات الاشتراكية السوفياتية ، ظهرت
نظائرها للبيع في 5-10 سنوات). كقاعدة ، لم يكن لهذه الألعاب معالج دقيق وذاكرة بالمعنى الحديث لهذه الكلمات ، ولكنها بنيت على منطق جامد. وبناءً على ذلك ، فإن الخراطيش القابلة للاستبدال لم تكن منطقية كثيرًا ، وأين كانت - كانت مجرد مجموعة من لاعبات القفز التي تضمنت اللعبة المطلوبة.
في عام 1977 ، تم إصدار وحدتي تحكم في وقت واحد تقريبًا:
قناة Fairchild F و
RCA Studio II . كانت هذه هي وحدات التحكم الأولى في الألعاب على شكل أجهزة كمبيوتر كاملة - مع معالج دقيق وبرامج خراطيش قابلة للاستبدال. RCA Studio II ، الذي سيتم مناقشته ، لم يتم تطويره من قبل
RCA فقط ، ولكن من قبل شخص معين -
جوزيف أ. ويسبكر (مثل بنية
COSMAC بالكامل) .
كان أول جهاز من هذا النوع ،
System 00 ، المعروف أيضًا باسم COSMAC FRED (1971) ، نموذجًا أوليًا ولم يتم إنتاجه بكميات كبيرة.
تم تنفيذ المعالج فيه على المنطق المعتاد (في
FRED2 - على شريحتين تسمى CDP1801 R و U ، والتي ظهرت في عام 1973). كانت ذاكرة الوصول العشوائي في منطقة 256 بايت - 4 كيلو بايت ، بالإضافة إلى ذلك ، كان لدى FRED2 مسجل شريط مدمج.
أول تنفيذ تجاري لهندسة COSMAC كان
COSMAC ELF . في عام 1976 ، تم وضع ELF كجهاز كمبيوتر للحمص (تم
نشر سلسلة من المقالات في مجلة Popular Electronics) وكان لوحة صغيرة مع مفاتيح تبديل ، ومؤشرات ، ومعالج CDP1802 (نفس 1801 ، ولكن بالفعل في رقاقة واحدة) و 256 بايت من ذاكرة الوصول العشوائي. بالنسبة له ، كانت هناك بطاقات توسيع إضافية سمحت بعرض الرسومات على الشاشة (باستخدام رقاقة CDP1861) ، وتم توصيل لوحة مفاتيح خارجية ومسجل شرائط. استنادًا إلى ELFs ذات الامتدادات ، ظهر ELF II و VIP. في COSMAC ROMs ، كان هناك آلة افتراضية تسمى CHIP-8 ، تم شحذها للألعاب البدائية (أوامر لإخراج وتحريك عفاريت البرامج ، وتوليد أرقام عشوائية ، وما إلى ذلك) كانت هناك أجهزة كمبيوتر ومحطات بدائية أخرى تعتمد على هذه البنية.
كانت جميع هذه الأجهزة أسلافًا مباشرًا لـ RCA Studio II ولها بنية أجهزة وبرامج قريبة جدًا.
تم إصدار RCA Studio II في عام 1977 ثم تم بيعه مقابل 150 دولارًا (600 دولار مقابل المال الحالي). كما يحدث في كثير من الأحيان ، ليس الأول في السوق بالضرورة هو الأكثر نجاحًا. في عام 2008 ،
اعترفت مجلة PC World
بأن وحدة التحكم هذه هي أسوأ وحدة تحكم للألعاب في كل العصور (والتي ، من حيث المبدأ ، ليست بعيدة عن الحقيقة). صورة بالأبيض والأسود للمربعات ، وغياب عصا التحكم (بدلاً من حقلين من 10 أزرار) وعشرات الألعاب - لوضعها بشكل معتدل لا المشترين سعداء.
بالإضافة إلى ذلك ، تم كتابة جميع الألعاب (المدمجة والمباعة على الخراطيش) في الرمز الزائف للجهاز الظاهري ST2 (نفس الفكرة كما هو الحال مع CHIP-8 في COSMACs) ، مما جعلها بطيئة جدًا.
تمكنت RCA من إطلاق حوالي 64 ألف وحدة من RCA Studio II ، دون احتساب النسخ المستنسخة التي ظهرت لاحقًا (Toshiba Visicom ، Conic M-1200 ، وما إلى ذلك) مع ظهور
Atari VCS ، انسحب RCA Studio II وقناة Fairchild F من القتال.
وحدة المعالجة المركزية
كشركة مصنعة للرقائق ، اختارت RCA منتجها الخاص كمعالج فك التشفير - معالج
RCA CDP1802 الصغير ، الذي يعمل بسرعة 1.78 ميجاهرتز ومصنع باستخدام تقنية CMOS.
كان سلفه CDP1801 ، وهو معالج ثنائي الشريحة (متوافق تمامًا مع 1802):
يُعرف CDP1802 بنسخته المقاومة للإشعاع (السليكون على الياقوت) ، حيث تم استخدامه ، على سبيل المثال ، في محطة
جاليليو بين الكواكب ، التي كانت تطير إلى المشتري في التسعينات (كان هناك 6 معالجات من هذا القبيل) ، وكذلك في
MAGSAT .
يحتوي المعالج على نظام استخدام تسجيل خادع إلى حد ما. يحتوي على تراكم 8 بت واحد D وستة عشر تسجيلات 16 بت - R0..RF (R0-R15) ، يمكن لكل منها أن يصبح مؤشر تعليمات ، اعتمادًا على محتويات التسجيل 4 بت P (يشير إلى واحد من R) ، قابل للتغيير فريق SEP Rn. بمعنى آخر - لا يوجد جهاز كمبيوتر واحد في المعالج!
بالإضافة إلى ذلك ، يمكن أن يصبح أي من R0 ... R15 فهرسًا (العنوان). يتم تحديد التحديد بناءً على القيمة الموجودة في تسجيل 4 بت X (المعدل بواسطة الأمر SEX Rn) ، وبعد ذلك يتم اعتبار R المحدد مفهرسًا لبعض الأوامر.
دائمًا ما يكون سجل العنوان لـ DMA هو R0. داخل المقاطعة ، يكون عداد التعليمات هو R1.
يوجد تسجيل T 8 بت ، والذي يُستخدم لحفظ تسجيلات X و P فيه تلقائيًا عند حدوث مقاطعة. يتم تمكين المقاطعات عن طريق تعيين إشارة تمكين مقاطعة IE عبر أوامر RET أو DIS.
تحتوي سجلات 4-بت I و N على التعليمات الحالية التي ينفذها المعالج.
يوجد سجل علم - DF. بتعبير أدق ، علامة واحدة ، لأنها تتكون من رقم واحد وتحتوي فقط على علامة تحمل.
بالإضافة إلى ذلك ، يحتوي المعالج على منفذ إخراج أحادي البت Q ، يتم تغيير حالته بواسطة أوامر SEQ و REQ.
كما هو الحال مع العديد من المعالجات من ذلك الجيل ، فإن المكدس بالمعنى المعتاد غير موجود هنا (لا توجد أوامر PUSH أو POP أو مؤشر المكدس) ، وإذا لزم الأمر ، يتم تنفيذه من خلال التعليمات الموجودة.
لا توجد تعليمات تقليدية لاستدعاء إجراءات الروتين أيضًا. يتم الانتقال إلى الروتين الفرعي باستخدام تعليمات SEP Rn التي ، على ما أذكر ، تجعل تسجيل Rn المشار إليه عداد أوامر. للرجوع ، يتم استخدام نفس تعليمات SEP ، ولكن مع سجل كان عداد الأوامر قبل المكالمة. أو (في إصدار أكثر شمولية ولكن أبطأ) يتم استخدام MARK و RET.
بالإضافة إلى القفزات الشرطية وغير المشروطة التقليدية (بالمناسبة - كلها مطلقة) ، هناك العديد من تعليمات SKIP التي ، عند استيفاء الشرط ، تخطي تعليمات SKIP التالية (وحدتي بايت). كما يتم توفير SKIP غير المشروط.
غالبًا ما يُشار إلى المعالج 1802 كواحد من معالجات RISC الأولى. ومع ذلك ، في السياق نفسه ، يتم ذكر 6502 ، على سبيل المثال ، بالإضافة إلى البعض الآخر. من المؤكد أن العمارة ليست عادية تمامًا ، ومن وجهة نظر البرمجة ، تسبب مشاعر مختلطة. من ناحية ، هناك ما يصل إلى ستة عشر تسجيلات 16 بت. من ناحية أخرى ، لا يمكن تقليل محتوياتها وزيادة حجمها إلا بمقدار واحد. على سبيل المثال ، وضع ثابت في Rn يبدو كالتالي:
ldi $01 ; const -> D plo r6 ; D -> R6.0 ldi $02 ; const -> D phi r6 ; D -> R6.1
لذلك ، فإن نصيب الأسد من الكود يتحرك البايت ذهابًا وإيابًا.
من بين الانتقالات حسب الشرط ، في الواقع ، هناك فقط انتقال إلى الصفر (فقط الحالة عندما يكون 0 في المجمع D) ويتم وضع علامة النقل في الاعتبار. الحلقات النموذجية هي كما يلي:
loop: ... dec r7 ; R7-- glo r7 ; R7 -> D bnz loop loop: ... adi 2 ; D = D + const xri $07 ; compare using XOR. (D == const) -> D bnz loop
تعمل جميع التعليمات الحسابية والمنطقية مع البطارية D.
بالإضافة إلى المنفذ أحادي البت الذي يتم التحكم فيه بواسطة SEQ / REQ ، هناك منفذ آخر رباعي البت يتم التحكم فيه بواسطة أوامر OUT / INP. لسوء الحظ ، لا يتم استخدامه في RCA Studio II.
الذاكرة
يوجد: 2 كيلو بايت من ROM (BIOS + خمس ألعاب مدمجة) 512 بايت من ذاكرة الوصول العشوائي (نصف محجوز للفيديو)
بطاقة ذاكرة
000-2FF ROM RCA System ROM : SP2 300-3FF ROM RCA System ROM : BIOS 400-7FF ROM ( ) 400-7FF ROM ( ) 1024 800-8FF RAM (256 ) 900-9FF RAM (256 ) A00-BFF ROM ( ) C00-DFF --- , 800-9FF E00-FFF ROM ( )
من الضروري ملاحظة أنه بالنسبة للألعاب والبرامج الموجودة على الخراطيش ، لا يتوفر سوى جزء من BIOS - الجهاز الذي يحتوي على SP2 (غير ضروري ، بشكل عام) ، صور الأرقام من 0 إلى 9 ومعالج المقاطعة القياسي للفيديو.
بالصوت والصورة
بالنسبة للرسومات ، يتم استخدام شريحة
RCA CDP1861 - ما يسمى "Pixie".
يحتوي RCA Studio II القياسي على إخراج قياسي مع هوائي (RF) فقط ، ومع ذلك ،
يعيد الناس
تصميمه في مركب بحيث تكون الجودة أفضل (كتبت تقريبًا "من أجل استنساخ لوني أفضل" :))
من الناحية الفنية ، توفر وحدة التحكم في الفيديو دقة قصوى تبلغ 64 × 128 بلونين (أسود وأبيض). ومع ذلك ، يتطلب هذا 1024 بايت من ذاكرة الفيديو ، وفي Studio II يبلغ إجمالي حجم ذاكرة الوصول العشوائي 512 بايت. لذلك ، تكون الدقة 64 × 32 (والتي تتطلب 256 بايت) ، ويتم إصلاح الدقة الأفقية (64). في سطر واحد من 64 بكسل ، يتم دائمًا عرض 8 بايت ، وهذا يحدث لمدة 14 دورة معالج.
يتم استخدام معالج المقاطعة BIOS لعرض الذاكرة ($ 900- $ 9ff) على الشاشة. يتم بدء المقاطعة بواسطة وحدة تحكم الفيديو وتحدث 60 مرة في الثانية (NTSC). يقوم معالج BIOS بجميع العمليات الضرورية - يحتاج البرنامج القابل للتنفيذ فقط إلى تغيير ذاكرة الفيديو ، حيث يتوافق كل بت بشكل مباشر مع نقطة سوداء أو بيضاء (من اليسار إلى اليمين ، من أعلى إلى أسفل).
ومع ذلك ، لا شيء يمنعك من كتابة المعالج الخاص بك. أبسط الحالات هي دقة 64 × 128 ، حيث أنه أمر طبيعي لوحدة تحكم الفيديو. بالنسبة له ، في المعالج يكفي كتابة عنوان ذاكرة الفيديو في R0 (من أين ستأتي البيانات الخاصة بالشاشة) وسيبدأ عرض وحدات البايت من خلال DMA نفسها ، وملء الإطار. الوضع أكثر تعقيدًا مع درجات الدقة الرأسية بخلاف 128. هناك يجب عليك إدخال التأخيرات وتكرارها البيانات عن طريق تغيير R0 (انظر وصف cdp1861 ومصدر BIOS).
من حيث المبدأ ، يمكنك حتى عمل دقة رأسية متغيرة ، وعدم إخراج أي شيء لجزء من الشاشة ، وكذلك تحديد ROM ، وليس RAM (أو ROM جزئيًا ، و RAM جزئيًا) كذاكرة فيديو. يمكنك أيضًا تنفيذ التمرير الرأسي ، وتغيير الأولية في R0 العنوان الذي يبدأ منه إصدار البيانات إلى وحدة التحكم.
لاحظ أنه عند إخراج INT لوحدة التحكم بالفيديو ، تظهر الوحدة خطين قبل وصول الحزمة إلى المنطقة المرئية. لذلك ، يبدأ معالج المقاطعة عادةً بتأخير يسمح لك ببدء عرض الذاكرة في الوقت المحدد.
تحتوي وحدة التحكم في الفيديو أيضًا على إخراج EFX ، حيث يظهر 0 لأربعة أسطر قبل ظهور الشعاع في المنطقة المرئية ثم للخطوط الأربعة الأخيرة من هذه المنطقة. يتم توصيل خرج EFX بالمعالج EF1 ويمكن التحقق من حالته باستخدام الأمر B1 (BN1).
يتم تنفيذ التوقع النموذجي لحزمة العودة على طول الإطار على النحو التالي:
... delay: bn1 delay ; wait for EFX in video chip ...
كما هو مذكور أعلاه ، في ROM لا توجد صور للحروف والعلامات. ومع ذلك ، لا تزال هناك أرقام (بعد كل شيء ، في الألعاب المدمجة تحتاج إلى إظهار النقاط ورقم اللاعب بطريقة أو بأخرى). ومع ذلك ، حتى هنا تمكنوا من حفظ:
كما ترى ، فإن الأرقام عالقة معًا بحيث يتم الحصول على الأرقام المتبقية من العديد من الأرقام المجاورة.
الصوت
دعنا نقول فقط أن هناك صوت. لكن ليس أكثر. يتم إرفاق NE555 بمنفذ إخراج أحادي البت لـ CDP1802 مع ربط ثم يتم توصيله بالكامل بمكبر الصوت المدمج في جهاز فك التشفير. عندما يتم توفير وحدة لمدخل RST NE555 (بواسطة أمر معالج SEQ) ، فإنه يبدأ في صفير بتردد 625Hz. عند الصفر (بواسطة الأمر REQ) - يتوقف صوت الصفارة. في الواقع هذا كل شيء. ومع ذلك ، لا يزال هناك مكثف بسبب ذلك ، في بداية الصرير ، ينخفض التردد تدريجيًا إلى النصف في غضون 0.4 ثانية (أي يتم الحصول على بعض الصرخة الإضافية).
في معالج مقاطعة BIOS القياسي ، بالإضافة إلى الجزء المسؤول عن الفيديو ، هناك قطعة تتحقق من محتويات خلية ذاكرة معينة ، وإذا لم يكن هناك صفر ، يشغل الصرير ويبدأ في تقليل محتويات الخلية 08CD دوريًا (عند الوصول إلى الصفر ، يتم إيقاف الصرير). وبالتالي ، لا يمكنك أن تهتم بالتسجيل الذاتي في المنفذ ، ولكن ببساطة قم بتعيين مدة الصرير وسيحدث في الخلفية ، دون إيقاف البرنامج:
ldi $8cd & $ff plo rf ldi 250 ; str rf ...
يمكن أيضًا القيام بنفس الشيء يدويًا (بعد إيقاف تشغيل المقاطعات):
; sex r3 ; set X to R3 dis ; return X to R5, P to R3, 0-IE, R3=R3+1 db 53h ; forces X=5 P=3 - which is no change ; seq ; ldi 250 ; delay plo r6 delay: dec r6 glo r6 bnz delay ; req ; sex r3 ; set X to R3 ret ; return X to R5, P to R3, 1-IE, R3=R3+1 db 53h ; forces X=5 P=3 - which is no change
البرامج
في السبعينيات ، تم كتابة ما يزيد قليلاً عن اثنتي عشرة لعبة والعديد من البرامج الأخرى (بشكل أساسي من قبل RCA نفسها). لم تتم كتابتها جميعًا تقريبًا في المجمّع ، ولكن في
الكود الزائف - في وحدة التحكم ROM ، يوجد جهاز مترجم افتراضي خاص ST2. من الصعب أن نقول بالضبط ما الدافع وراء مثل هذا القرار. على الأرجح ، كانت الفكرة هي حفظ الذاكرة - تبين أن الألعاب أقل حجمًا حقًا. بشكل عام ، تنمو آذان ST2 من VM مماثل يسمى
CHIP-8 ، المستخدم في COSMACs. على الرغم من أن جهازي VM غير متوافقين مع بعضهما البعض ، فقد تم بالفعل كتابة مترجم CHIP-8 لـ RCA Studio II في العقد الأول من القرن الحادي والعشرين. نظرًا للتشابه الشديد في البنيات ، فليس من المستغرب ، كما يكتب المترجم ، أن الألعاب مع COSMACs التي لا تتطلب الكثير من الذاكرة بدأت دون مشاكل في RCA Studio II.
للأسف - يعمل VMs على مثل هذه الهندسة ببطء شديد ، مما يترك بصمة لا تمحى على الألعاب نفسها. في وقت لاحق ، في عام 2013 ، كتب Paul Robson عن اثنتي عشرة لعبة أخرى - تم تجميعها بالفعل
وتوزيعها مع المصدر.
التنمية
في البداية ، وفقًا للشهود ، تم تطوير RCA Studio II حتى بدون مجمّع - على COSMAC ELF و FRED2.
حاليا ، ليست هناك حاجة للمعاناة مثل هذا. هناك محاكي لائق لـ Windows -
Emma ، مع مصحح جيد (بالمناسبة ، لا يحاكي RCA Studio II فقط ، ولكن جميع COSMACs).
بصفتي مجمّعًا ، حاولت أولاً استخدام
المجمع المجمع a18 ، ولكن ، لعدد من الأسباب ، انتهى الأمر بالتركيز على
asmx ، والتي تحتوي أيضًا على
نصوص Python لإنشاء صورة جاهزة للخرطوشة (لديها الملحق .st2).
يمكن العثور على مقدمة موجزة عن المجمع 1802
هنا . أبسط اختبار ل RCA Studio II مع حلقة لا نهائية سيبدو كما يلي:
.include "1802.inc" .org 400h .db 4,2 ; SYS $402 start: br start ; some code .end
انتبه إلى التعليمات ".db 4،2". هذا هو عنوان أول تعليمات قابلة للتنفيذ ، أي ".db> (start)، <(start)".
تنفيذ حلقة بسيطة:
ldi 50 ; D plo r6 ; D r6 loop: dec r6 ; r6 = r6 -1 glo r6 ; r6 D bnz loop ; loop D
باستخدام تعليمات SKIP:
; q = 0 $FF00 , q=1 $FF loop: ghi r1 ; hi(r1) -> D lsz ; 2 , D (.. seq) req ; 0 -> Q skp ; 1 (.. inc r1) seq ; 1 -> Q inc r1 ; r1 = r1 + 1 br loop ; ...
للتدريب في مجمع نظيف CDP1802 ، من السهل استخدام محاكي المجمع على الإنترنت asm80. يجب أن يكون امتداد الملف المصدر الذي تم إنشاؤه .a18
لإطلاق تطبيق نهائي على الأجهزة الحقيقية في الطبيعة ، هناك خرطوشة
RCA Studio II 40th Annicart Multicart . لم أكن أملكها ، ولكن tnt23 أعادت تشكيل إحدى الخراطيش المتاحة مع لعبة لشريحة EEPROM AT28C16 (2k x 8) مثبتة في المقبس.
لذا ، للتشغيل على قطعة الحديد ، قمت بإدخال الشريحة في المبرمج في كل مرة ، وقمت بوميضها ، وإعادة ترتيبها في خرطوشة محولة ، وتشغيل وحدة التحكم. وهكذا في كل مرة.
INTRO NO SHADERS
من أجل تطوير النظام الأساسي ، كتبت 256 بايت من المقدمة (المقدمة في
Chaos Constructions'2018 في مسابقة
المقدمة الصغيرة ).
على عكس
Vectrex ، على سبيل المثال ، حيث يمكنك الحصول على صورة مذهلة حتى من خلال رسم منحنى أو من
Videopac ، حيث يحتوي ROM بالفعل على مجموعة من الصور للرجال الصغار ، هنا لدينا وضع حزين - عادي ، مألوف للجميع ، رسومات نقطية ، ولكن أبيض وأسود والقرارات أدناه في أي مكان (64 × 32). في ROM ، لا توجد صور فقط ، بل حتى شخصيات. الصوت - وهذا يقتصر على صرير 625Hz.
وبالتالي ، تم إلغاء الموسيقى ، وجميع أنواع البلازما النموذجية ، والأضواء ، وبشكل عام كل شيء يتضمن خطوطًا غير مربعة. تم إلغاء النص بأي شكل - لن تكون هناك مساحة كافية للحروف.
ونتيجة لذلك ، تقرر أ) التمرير ب) شيء مكرر ج) بسرعات مختلفة ، واتضح على النحو التالي:
كما ذكر أعلاه ، لا يوجد تمرير للجهاز في وحدة تحكم الفيديو. ومع ذلك ، فإن الدقة المنخفضة والأسود والأبيض ليس لها سلبيات فحسب ، بل أيضًا إيجابيات - الكتابة فوق وحدات بايت أقل.
لقد قمت بالتمرير سطرًا تلو الآخر ، باستخدام الأمر shlc (التحول الأيسر مع الواصلة) - عند تنفيذه في حلقة ، اتضح أن أقصى اليسار من البايت التالي يتم إزالته إلى اليسار ولا يختفي ، ولكن يتم وضعه في علامة الحمل (DF). وفقًا لذلك ، يلتقط shlc التالي في حلقة ويضعه في البايت إلى اليسار. اتضح التمرير البسيط للخط بأكمله ، حيث سيتم تمرير ثمانية منها في دورة (حيث أنه من الملائم أخذ أنماط الغيوم والمنازل بايت بايت)
... scrollret: sep r3 ; return from subroutine ; scroll: ; set lines counter ldi LINES ; const -> D plo r10 ; D -> Rn.0 nextline: ; set bytes counter ldi BYTES_PER_LINE ; const -> D plo r7 ; D -> Rn.0 ; set carry to scroll glo r12 ; Rn -> D shr ; get one bit to set carry plo r12 ; D -> Rn.0 (save shifted byte) nextbyte: ldx ; Rx -> D shlc ; D = D << 1 (carry -> DF) stxd ; D -> M(Rx), Rx-- dec r7 ; Rn-- glo r7 ; Rn -> D bnz nextbyte dec r10 ; Rn-- glo r10 ; Rn -> D bnz nextline ; one line (8 bytes) scrolled, let's scroll next br scrollret ...
لاحظ أن نقطة الدخول إلى الروتين الفرعي تقع على ملصق التمرير ، وللعودة ، لا يتم تنفيذ sep r3 فقط ، ولكن يتم أولاً تنفيذ التمرير br و sep r3 من هناك.
يتم ذلك من أجل ترك r14 (وهو عداد الأوامر داخل الروتين) في الحالة الصحيحة ، ثم يمكن استدعاء روتين مرارا وتكرارا (باستخدام sep r14).
بالطبع ، لا يتم حفظ أي متغيرات أثناء المكالمات هنا - جميع السجلات المتغيرة عالمية.
يتم استدعاء روتين التمرير مرتين في الحلقة العامة - كل مرة ثانية للمنازل وكل رابع للسحب (يتم تمريرها أبطأ). تتم مزامنة الدورة العامة في الاتجاه العكسي للحزمة (الطريق والمنازل والسحب - لديها وقت للرسم والنجوم ثابتة). في حالة الطريق ، يتم تمرير خط واحد فقط - يتم رسم حواف الطريق ببساطة بخطوط.
من أجل الاهتمام ، حاولت تمرير الشاشة بأكملها - لا تتناسب مع الحركة العكسية للشعاع في الوقت المناسب.
يتم تعيين المنازل من خلال الأنماط:
... house1: .db %00000000 .db %11111111 .db %10101010 .db %11111111 .db %10101010 .db %11111111 .db %00000000 .db 1 house2: .db %00000000 .db %00011111 .db %01110101 .db %01011111 .db %01110101 .db %00011111 .db %00000000 .db 1 ...
وجهاز لوحي به ارتباط لكل منهما:
... commands: .db house5 .db house2 .db house1 .db house3 ...
في الدورة ، يتم فرز هذه التسمية بالتسلسل.
على عكس المنازل ، تمثل كلتا الغيوم ، من أجل البساطة ، نمطًا واحدًا يمر ببساطة دوريًا.
يمكن كسب عدد معين من وحدات البايت بسبب إخراج الغيوم وفقًا لنفس المبدأ مثل المنازل ، وكذلك بسبب الفجوات المبرمجة بين الأنماط (الآن هذه مجرد أصفار مكررة في البيانات).
ومع ذلك ، تكمن المشكلة أيضًا في استخدام بعض السجلات بواسطة معالج المقاطعة - لا يمكن تغيير R0 و R1 و R2 و R8 و R9 و R11. وتخزين المتغيرات في الذاكرة هو الكثير من البايتات الإضافية لكتابتها وقراءتها (ناهيك عن دورات الساعة).
من الناحية المثالية ، ربما يجب أن يتم التمرير في معالج المقاطعة. ومع ذلك ، سيكون عليك كتابة معالج خاص بك بدلاً من المعالج القياسي. سيكون هذا أكثر صحة (وبالمناسبة ، يمكن أن يحرر اثنين من سجلات R) ، ولكن على الأرجح ، في النهاية ، لن يتناسب كل شيء معًا مع 256 بايت.
بالنسبة للنجوم ، فهي ثابتة ، ولكن لرسم بعض النقاط التي تبدو عشوائية ، لم يكن الأمر بسيطًا:
... loop: ldn r4 ; M[Rn] -> D ani %00000010 ; D AND const -> D bdf skip ; jump if carry ldi 0 ; const -> D skip: stxd ; D -> M(Rx), Rx-- glo r4 ; Rn -> D adi 47 ; D + const -> D plo r4 ; Rn -> D glo r15 ; Rn -> D bnz loop ...
هنا ، في دورة ، يتم أخذ البيانات من BIOS ، والتي يتم تخفيفها ويتم إخفاء البتات الزائدة. يتم اختيار القناع (للعاني) والملعب (للعدي) يدويًا.
أما بالنسبة للصوت ، فبسبب عدم القدرة على تغيير التردد ، يتم تقليد "صفير" السيارة ببساطة.
بالمناسبة - أعتقد أن هذا العمل الداخلي هو أول عمل demoscene لـ RCA Studio II :)
خاتمة
بعد Studio II ، أصدرت RCA عدة حالات من
RCA Studio III . الاختلافات في شيئين - ظهر اللون (بينما لم تتغير الدقة) والصوت أفضل (لا يمكنك بالفعل إصدار واحد ، ولكن 255 ترددًا مختلفًا).
من المثير للاهتمام أن كلا الجهازين متوافقان مع بعضهما في كلا الاتجاهين ، بما في ذلك من خلال استخدام نفس الرمز الوسيط مع المترجم.
من المعروف أيضًا أنه كانت هناك خطط لـ RCA Studio IV. كان يجب أن تكون هناك زيادة في الدقة إلى 64x128 ، وحتى تمت كتابة مترجم شفري زائف جديد بالفعل.
أما بالنسبة لـ CDP1802 ، يستمر إنتاج هذا المعالج الدقيق - أولاً تم تصنيعه من قبل Hughes ، ثم
Intersil (Renesas)إذا كنت تريد معرفة المزيد عن هذا الفرع الغريب من تاريخ تطور تكنولوجيا الكمبيوتر ، فإنني أوصي بـ Google بعبارة "
COSMAC" و "CDP1802 ".
روابط أقسام الموقع