تقنية MOS VIC-II

إن شريحة VIC-II ( شريحة واجهة الفيديو II )، والمعروفة تحديدًا باسم MOS Technology 6567/6566/8562/8564 ( إصدارات NTSC )، و6569/8565/8566 ( PAL )، هي الشريحة الدقيقة المكلفة بتوليد إشارات الفيديو Y/C (المدمجة في فيديو مركب في مُعدِّل الترددات اللاسلكية ) وإشارات تحديث DRAM في أجهزة الكمبيوتر المنزلية Commodore 64 و Commodore 128 .
بعد أن خلفت شريحة MOS Technology VIC الأصلية المستخدمة في VIC-20 ، كانت شريحة VIC-II واحدة من الشرائح المخصصة الرئيسية في Commodore 64 (والأخرى هي شريحة الصوت MOS Technology 6581 ).
تاريخ التطوير
صُممت شريحة VIC-II بشكل أساسي من قِبل ألبرت شاربنتييه وتشارلز وينتربل [ 1 ] في شركة MOS Technology، كخليفة لشريحة MOS Technology 6560 "VIC" . وكان فريق MOS Technology قد فشل سابقًا في إنتاج شريحتين رسوميتين، هما MOS Technology 6562 لجهاز الكمبيوتر Commodore TOI، و MOS Technology 6564 لجهاز Color PET، بسبب قيود سرعة الذاكرة. [ 2 ]
لبناء جهاز VIC-II، أجرى شاربنتييه ووينتربل دراسة سوقية لأجهزة الكمبيوتر المنزلية وألعاب الفيديو المتوفرة آنذاك ، وسجلا الميزات الحالية والميزات التي يرغبان في إضافتها إلى VIC-II. استُلهمت فكرة إضافة الرسوم المتحركة (Sprites) من جهاز الكمبيوتر TI-99/4A ومعالجه الرسومي المساعد TMS9918 . أما فكرة دعم اكتشاف التصادم، فاستُوحيت من جهاز ماتيل إنتيليفيجن . كما استُخدمت ميزات إضافية من جهاز أتاري 800 ، لا سيما وضع الصور النقطية، الذي كان هدفًا رئيسيًا لفريق MOS، حيث أن جميع منافسي كومودور الرئيسيين في مجال أجهزة الكمبيوتر المنزلية كانوا يعتمدون على رسومات الصور النقطية، بينما كان جهاز VIC-20 يدعم فقط الأحرف القابلة لإعادة التعريف. [ 3 ] [ 4 ] يُستخدم حوالي ثلاثة أرباع سطح الشريحة لوظيفة الرسوم المتحركة. [ 5 ]
تم تصميم الشريحة جزئيًا باستخدام أدوات أتمتة التصميم الإلكتروني من شركة أبليكون (التابعة الآن لشركة يو جي إس )، وجزئيًا يدويًا على ورق شفاف . وتم تصحيح أخطاء التصميم جزئيًا بتصنيع شرائح تحتوي على أجزاء صغيرة منه، والتي أمكن اختبارها بشكل منفصل. كان هذا سهلاً نظرًا لوجود مختبر البحث والتطوير ومصنع أشباه الموصلات التابعين لشركة إم أو إس تكنولوجي في نفس الموقع. خرجت الدفعة الأولى من شرائح الاختبار شبه كاملة الوظائف، مع وجود شريحة واحدة معيبة فقط. [ 6 ] تم تطوير الشريحة بتقنية 5 ميكرومتر. [ 3 ]
اكتمل العمل على شريحة VIC-II في نوفمبر 1981، بينما كان روبرت يانيس يعمل في الوقت نفسه على شريحة SID . وقد تم الانتهاء من كلتا الشريحتين، مثل شريحة كومودور 64 ، في الوقت المناسب لمعرض الإلكترونيات الاستهلاكية في عطلة نهاية الأسبوع الأولى من يناير 1982. [ 7 ]
ميزات VIC-II
بعض أنماط الرسومات في جهاز 64 غريبة حقًا، ولا يوجد لها مثيل في أجهزة أتاري أو أبل، مثل إمكانية تغيير لون خلفية الأحرف على الشاشة. وقد منحنا ذلك إمكانيات لونية هائلة لم تكن مستغلة من قبل.
— كريج نيلسون من شركة إيبكس، 1986 [ 8 ]
- مساحة عناوين 16 كيلوبايت لذاكرة الشاشة والشخصية والرسوم المتحركة
- دقة الفيديو 320 × 200 بكسل (160 × 200 في وضع الألوان المتعددة)
- دقة نصية 40 × 25 حرفًا
- ثلاثة أوضاع لعرض الأحرف ووضعان لعرض الصور النقطية
- 16 لونًا
- معالجة متزامنة لـ 8 صور متحركة لكل خط مسح ، كل منها بحجم 24 × 21 بكسل (12 × 21 متعدد الألوان)
- مقاطعة المسح الضوئي (انظر التفاصيل أدناه)
- التمرير السلس
- تحديث ذاكرة الوصول العشوائي الديناميكية المستقلة
- التحكم في ناقل النظام من نوع 6502 ؛ وصول وحدة المعالجة المركزية ووحدة VIC-II إلى الناقل أثناء دورات نصف الساعة المتناوبة (ستقوم وحدة VIC-II بإيقاف وحدة المعالجة المركزية عندما تحتاج إلى دورات إضافية).
التفاصيل الفنية

لاحظ أن عناوين السجلات المذكورة أدناه مذكورة كما يراها المعالج في جهاز C64. وللحصول على أرقام السجلات كما هو معتاد في جداول البيانات (أي بدءًا من 0)، يجب حذف "D0" في البداية.
برمجة

تتم برمجة جهاز VIC-II من خلال معالجة سجلات التحكم الـ 47 (مقارنةً بـ 16 سجلًا في جهاز VIC)، والمُخزّنة في الذاكرة ضمن النطاق $D000 – $D02E في مساحة عناوين C64. من بين هذه السجلات، يُعنى 34 سجلًا منها حصريًا بالتحكم في الرسوم المتحركة (التي تُسمى MOBs، اختصارًا لـ "Movable Object Blocks" في وثائق VIC-II). وكما هو الحال في سابقه، يدعم VIC-II إدخال قلم الضوء ، وبمساعدة ذاكرة القراءة فقط (ROM) القياسية للأحرف في C64، وفّر مجموعة أحرف PETSCII الأصلية من عام 1977 على شاشة عرض ذات أبعاد مماثلة لشاشة سلسلة PET ذات الـ 40 عمودًا .
من خلال إعادة تحميل سجلات التحكم في معالج VIC-II عبر شفرة الآلة المتصلة بروتين مقاطعة المسح (مقاطعة خط المسح)، يُمكن برمجة الشريحة لتوليد أكثر من 8 صور متحركة متزامنة (وهي عملية تُعرف باسم تعدد إرسال الصور المتحركة )، ومنح كل جزء من الشاشة، وفقًا للبرنامج، خصائص تمرير ودقة ولون مختلفة. ويمكن زيادة الحد الأقصى لعدد الصور المتحركة المسموح به في كل خط مسح، والمحدد بـ 8 صور متحركة، عن طريق جعل الصور المتحركة تومض بسرعة. يُعد إتقان مقاطعة المسح أمرًا أساسيًا لإطلاق العنان لإمكانيات معالج VIC-II. وقد اعتمدت العديد من العروض التوضيحية وبعض الألعاب اللاحقة على تزامن ثابت بين وحدة المعالجة المركزية ومعالج VIC-II، بحيث يُمكن التلاعب بسجلات VIC في اللحظة المناسبة تمامًا، مع تقليل الاعتماد على مقاطعات المسح لضمان التزامن الصحيح، وبالتالي تقليل العبء الإضافي الناتج عنها.
رسومات الشخصيات
كان جهاز C64 مزودًا بمجموعة أحرف PETSCII في ذاكرة قراءة فقط (ROM) سعتها 4 كيلوبايت، ولكن، كما هو الحال في جهاز VIC-20 السابق، كانت البيانات الفعلية للأحرف تُقرأ من الذاكرة في موقع محدد. هذا الموقع هو أحد سجلات VIC-II، مما سمح للمبرمجين بإنشاء مجموعات الأحرف الخاصة بهم عن طريق وضع البيانات المناسبة في الذاكرة؛ كل حرف عبارة عن شبكة 8×8، حيث يمثل كل بايت 8 بتات أفقيًا، لذا يلزم 8 بايتات لكل حرف، وبالتالي تستخدم مجموعة الأحرف الكاملة المكونة من 256 حرفًا ما مجموعه 2048 بايتًا. نظريًا، يمكن استخدام ما يصل إلى ثماني مجموعات أحرف إذا تم ملء ذاكرة الفيديو بالكامل البالغة 16 كيلوبايت. [ 9 ] : 363
بالإضافة إلى مجموعات الأحرف، يستخدم جهاز VIC-II أيضًا 1000 بايت لتخزين 25 سطرًا، كل سطر يحتوي على 40 حرفًا ، بايت واحد لكل حرف، ويقع هذا الموقع في الوضع الافتراضي عند التشغيل بين $400 و $7E8 . [ 9 ] : 117-119. يتم الوصول إلى ذاكرة الوصول العشوائي للألوان (Color RAM) من خلال البتات من 8 إلى 11 من مصفوفة الفيديو؛ [ 10 ] في الإصدارين 64 و128، تقع هذه الذاكرة في مساحة الإدخال/الإخراج بين $D800 و $DBFF ولا يمكن نقلها من هذا الموقع. تحتوي هذه الذاكرة على قيم اللون 1 (اللون 3 في وضع الألوان المتعددة) لكل حرف.
تُخزَّن ذاكرة القراءة فقط (ROM) الخاصة بالأحرف في اثنتين من "نوافذ" VIC-II الأربع، عند العنوانين $1000 - $1FFF و $9000 - $9FFF ، على الرغم من أن وحدة المعالجة المركزية (CPU) لا تستطيع الوصول إليها هناك (قد يتم نقل ذاكرة القراءة فقط الخاصة بالأحرف إلى العنوان $D000 - $DFFF حيث تكون مرئية لوحدة المعالجة المركزية، ولكن ليس لـ VIC-II). وبالتالي، لا يمكن وضع بيانات الرسومات أو مخازن الفيديو المؤقتة عند العنوانين $1000 - $1FFF أو $9000 - $9FFF لأن VIC-II ستتعرف على ذاكرة القراءة فقط الخاصة بالأحرف هناك. ولأن شريحة الرسومات في VIC-II لا تستطيع استخدام هذه المناطق من ذاكرة الوصول العشوائي (RAM)، فقد استُخدمت بشكل متكرر للموسيقى/المؤثرات الصوتية (شريحة SID). يتميز جهاز C64 بإمكانية وجود ذاكرة الوصول العشوائي (RAM) وذاكرة القراءة فقط (ROM) في نفس العنوان في الذاكرة، ولكن وحدة المعالجة المركزية "تتعرف" على أحدهما وشريحة VIC-II "تتعرف" على الآخر.
في وضع الأحرف عالي الدقة الافتراضي، يمكن ضبط لون مقدمة كل حرف على حدة في ذاكرة الألوان. في وضع الأحرف متعددة الألوان، يقتصر اللون 3 على أول ثمانية قيم لونية ممكنة؛ ثم تُستخدم البتة الرابعة كعلامة تشير إلى ما إذا كان سيتم عرض هذا الحرف بدقة عالية أو بألوان متعددة، مما يتيح إمكانية دمج كلا النوعين على شاشة واحدة. [ 9 ] : 460-462. يتم ضبط اللونين 1 و2 بواسطة المسجلين في $D022 و $D023 وهما عامان لجميع الأحرف. [ 9 ] : 373
في حال استخدام وضع ألوان الخلفية الموسّعة، تُستخدم أعلى بتين من رمز الحرف لاختيار أحد سجلات ألوان الخلفية الأربعة. يتيح هذا أربعة ألوان خلفية مختلفة على الشاشة، لكن على حساب اقتصار عدد الأحرف على 64 حرفًا فقط بدلًا من 256. ونظرًا لهذا التقييد، نادرًا ما استخدمته الألعاب.
وضع الصورة النقطية
كان إضافة وضع عرض الصور النقطية القابل للعنونة على جميع النقاط أحد الأهداف الرئيسية لفريق تصميم كومودور، نظرًا لافتقار جهاز VIC-I لهذه الميزة. ومع ذلك، ولتقليل استخدام الدوائر الإضافية قدر الإمكان، قاموا بتنظيمها بنفس طريقة وضع الأحرف، أي مربعات 8x8 و4x8. تتطلب رسومات الصور النقطية صفحة بحجم 8 كيلوبايت لبيانات البكسل، ويتوافق كل بايت مع صف واحد من ثمانية أو أربعة بكسلات. البايت التالي هو الصف الذي يليه مباشرةً، وبعد الصف الثامن، يعود إلى أعلى المربع التالي.
في الصور النقطية عالية الدقة، تُستخدم ذاكرة الوصول العشوائي للشاشة لتخزين ألوان المقدمة والخلفية لكل مربع (النصف العلوي والسفلي من كل بايت). هذا هو الوضع الوحيد في معالج VIC-II الذي لا يستخدم ذاكرة الوصول العشوائي للألوان في العنوان $D800 أو سجل لون الخلفية في العنوان $D021 .
يسمح وضع الصور النقطية متعددة الألوان بثلاثة ألوان لكل مربع (اللون الرابع هو لون الخلفية كما هو محدد في $D021 ). يتم اختيار اللونين 1 و2 بواسطة البتات الموجودة في ذاكرة الوصول العشوائي للشاشة (كما هو الحال في الصور النقطية عالية الدقة)، بينما يتم اختيار اللون الثالث من ذاكرة الألوان.
على الرغم من دقة الألوان العالية وإمكانية معالجة جميع النقاط في وضع الصور النقطية، إلا أنه غير عملي عمومًا لرسومات الألعاب نظرًا لاستهلاكه موارد نظام كبيرة (8 كيلوبايت لبيانات البكسل بالإضافة إلى دورات معالجة مركزية أكثر بكثير لتعديل كل مربع)، كما أنه لا يمكن تمريره عادةً. لذا، يُشاهد غالبًا في شاشات التحميل وأحيانًا في شاشات العناوين.
رسومات متحركة
تتكون رسومات VIC-II من نوعين: أحادية اللون بحجم 24×21 بكسل، ومتعددة الألوان بحجم 12×21 بكسل. وكما هو الحال في رسومات الأحرف، تحتوي الرسومات متعددة الألوان على لون واحد لكل رسمة، بالإضافة إلى لونين عامين. يحتوي VIC-II على ثماني رسومات، تشغل كل منها 64 بايت من الذاكرة، ولكن مع بعض القيود، يمكنه عرض عدد أكبر بكثير. يُعدّ تعدد إرسال الرسومات طريقة شائعة لعرض أكثر من ثماني رسومات على الشاشة (مع العلم أن الحد الأقصى هو ثماني رسومات لكل سطر مسح). يمكن استطلاع عداد خطوط المسح في VIC-II حتى الوصول إلى النقطة المطلوبة على الشاشة، أو يمكن برمجة مقاطعة المسح النقطي لتفعيلها عند سطر مسح معين، وبعدها يقوم البرنامج بتغيير إحداثيات الرسومات بسرعة. يمكن أن تؤدي هذه الطريقة إلى عرض العديد من الرسومات الإضافية على الشاشة في وقت واحد، ليصل العدد الإجمالي غالبًا إلى 16 أو 24 رسمة أو أكثر. أما بالنسبة للعروض التوضيحية، فإن هذا الحد أكثر مرونة.
نظريًا، يبلغ الحد الأقصى لعدد الصور المتحركة المختلفة المرئية في الوقت نفسه 256 صورة (بافتراض امتلاء صفحة VIC-II بالكامل، والتي تبلغ سعتها 16 كيلوبايت). ويتم الوصول إليها باستخدام رقم كتلة للإشارة إلى كل نمط صورة متحركة في الذاكرة، بدءًا من 0 وحتى 255 ($FF)، وذلك حسب موقعها في صفحة الفيديو. (في حال استخدام بنك الفيديو الثاني (المرقم من 0 إلى 3)، فإن الكتلة 0 تشير إلى الصورة المتحركة المخزنة في $4000 ، بينما تشير الكتلة 255 إلى الصورة المتحركة المخزنة في $7FC0 ).
قد يتضاعف حجم كل صورة متحركة عموديًا أو أفقيًا أو كليهما. هذا لا يزيد من دقة الصورة (فهي لا تزال بعرض 24 بكسل وارتفاع 21 بكسل)، ولكن كل بكسل سيصبح ضعف العرض و/أو ضعف الارتفاع.
نظرًا لأن سجل الموضع الأفقي لكل صورة متحركة هو بايت واحد ومحدود بقيمة قصوى تبلغ 255، فإنه لا يمكنه وحده تغطية كامل مساحة شاشة VIC-II البالغة 320 بكسل، لذلك يوفر سجل إضافي يسمى علامة البايت الأكثر أهمية بتًا للموضع التاسع لجميع الصور المتحركة.
يحتوي كل من $D01E و $D01F على سجلات الخلفية وسجلات تصادم الكائنات الرسومية. نادرًا ما يُستخدم السجل الأول لأنه لا يوفر معلومات عن كائن الخلفية المحدد الذي تلامسه الكائن الرسومي.
يحتوي الملف $D01B على سجل أولوية حركة الكائن الرسومي إلى الخلفية، والذي يُستخدم لتحديد ما إذا كان الكائن الرسومي يتحرك خلف أو أمام رسومات الخلفية. عندما يدخل كائن رسومي نفس المساحة مع كائن رسومي آخر، فإن الكائنات ذات الأرقام الأقل ستتجاوز دائمًا الكائنات ذات الأرقام الأعلى.
التمرير
لتمرير شاشة الأحرف، يتم ضبط معالج VIC-II على وضع 38 عمودًا و/أو 24 سطرًا عبر المسجلين $D011 و $D016 . يؤدي هذا إلى إنشاء مخزن مؤقت خارج الشاشة، حيث يتم وضع صف الأحرف المراد تمريره. من خلال ضبط بتات التمرير في المسجلين المذكورين، يمكن تحريك صف واحد على الشاشة، وبعد ذلك يتكرر ما لم يتم وضع صف جديد في المخزن المؤقت. يتم تمرير ذاكرة الوصول العشوائي للألوان بالتزامن مع ذاكرة الوصول العشوائي للشاشة، وتعمل بنفس الطريقة.
يُعدّ التمرير في معالج VIC-II مهمةً معقدةً نسبيًا وتستهلك موارد المعالج بكثافة، مع أنّه ليس من النادر أن يلجأ مبرمجو ألعاب C64 إلى حيلةٍ تتمثل في تصميم الرسومات بحيث تبقى ذاكرة الألوان ثابتة. ومن الحيل الشائعة الأخرى استخدام جزء من الشاشة (ربما الصفوف الأربعة أو الخمسة العلوية من الأحرف) كمنطقة لعرض حالة اللعبة، مثل النتيجة وعدد المحاولات، مما يقلل من كمية التمرير المطلوبة. وأخيرًا، غالبًا ما يكون من الضروري استخدام تقنية "التخزين المؤقت المزدوج" لمنع تشوّه الشاشة . حيث يتم حجز كتلتين من ذاكرة الشاشة، كلٌّ منهما بسعة 1 كيلوبايت؛ تُعرض إحداهما بينما تُكتب الأخرى، ثم يتم تبديلهما بسرعة أثناء فترة اختفاء الشاشة (vblank) من خلال معالجة سجلات VIC-II. لسوء الحظ، لا يمكن تطبيق هذه التقنية على ذاكرة الألوان.
في أواخر عمر جهاز كومودور 64 التجاري، تم اكتشاف ثغرة أمنية تُعرف باسم VSP (تحديد موضع الشاشة المتغير)، والتي تتضمن التلاعب ببتات التحكم في $D011 لإنتاج تمرير سريع بتكلفة دورة معالج أقل بكثير من سجلات التمرير القياسية. مع ذلك، تطلبت هذه الثغرة برمجة دقيقة للغاية، ولم تكن تعمل بكفاءة على بعض إصدارات VIC-II؛ كما أنها تقتصر على التمرير الأفقي فقط. وقد استُخدمت هذه الثغرة بشكل ملحوظ في لعبة Mayhem in Monsterland .
مقاطعات الراستر
يُعدّ استخدام مقاطعات الشبكة جزءًا أساسيًا من برمجة ألعاب C64. في حالة التشغيل الافتراضية، تُولّد شريحة MOS Technology CIA الأولى مقاطعة قابلة للإخفاء (IRQ) 60 مرة في الثانية (سواءً كانت NTSC أو PAL، فهذا لا علاقة له بتحديث الفيديو)، مما يُرسل وحدة المعالجة المركزية إلى معالج مقاطعات النواة الموجود في العنوان $EA31 . يستجيب المعالج لمقاطعة CIA، ويُحدّث الساعة، ويفحص لوحة المفاتيح، ويُومض المؤشر بلغة BASIC.
عادةً ما تُعطّل الألعاب مقاطعة CIA، وتُهيّئ VIC-II لتوليد مقاطعات عند الوصول إلى سطر مسح مُحدد، وهو أمر ضروري لتمرير الشاشة المنقسمة وتشغيل الموسيقى. تُعيد اللعبة تعيين متجه IRQ عند $0314 / $0315 إلى مُعالج النقط الخاص بها، والذي يُنفّذ هذه الوظائف، ثم يُنفّذ اختياريًا تعليمة JMP $EA31 لإعادة التحكم إلى النواة.
تستخدم بعض الألعاب مقاطعة واحدة فقط (IRQ)؛ إلا أن المقاطعات المتسلسلة أكثر شيوعًا وتُحسّن استقرار البرنامج. في هذا الإعداد، يُعاد توجيه المقاطعة إلى الروتين الثاني، وهكذا لكل روتين حتى يُعيدها الروتين الأخير إلى عنوان المقاطعة الأولى. عند استخدام المقاطعات المتسلسلة، يلزم تنفيذ تعليمة JMP $EA31 واحدة فقط في السلسلة، ويمكن إنهاء البقية بـ JMP $EA81 ، التي تُنهي معالج النواة. كما أنه من الشائع أن تستبدل الألعاب النواة وتستخدم معالج مقاطعات خاص بها. يمكن استخدام NMI لإنشاء خيط مقاطعة إضافي، مع العلم أن الضغط عن طريق الخطأ على مفتاح الاستعادة قد يُؤدي إلى آثار جانبية غير مرغوب فيها، حيث يُؤدي الضغط عليه إلى NMI.
قد يقوم جهاز VIC-II أيضًا بتوليد مقاطعة مسح ضوئي من سجلات التصادم، ولكن نادرًا ما يتم استخدام هذه الميزة لأنها لا توفر معلومات كافية للبرنامج في معظم الحالات.
رسم خرائط الذاكرة
يحتوي معالج VIC-II على ناقل عناوين 14 بت، ويمكنه استخدام أي من قطاعات ذاكرة C64 الأربعة (سعة كل منها 16 كيلوبايت) لبيانات الفيديو. ولإدارة ذلك، تُضاف بتان إضافيتان للعناوين من بتات منافذ CIA. النطاق الافتراضي عند التشغيل هو من 0000 إلى 3FFF . يُعد القطاع الثاني ( من 4000 إلى 7FFF ) الخيار الأمثل عادةً للبرمجة بلغة BASIC، كونه القطاع الوحيد الذي يُمثل ذاكرة وصول عشوائي (RAM) خالية تمامًا، دون أي ذاكرة قراءة فقط (ROM) أو سجلات إدخال/إخراج مُرتبطة به. كما يُعد القطاع الرابع ( من C000 إلى FFFF ) خيارًا جيدًا أيضًا عند استخدام لغة الآلة، حيث يجب تعطيل ذاكرة القراءة فقط (ROM) الخاصة بالنواة لتمكين وحدة المعالجة المركزية من الوصول للقراءة، كما أنه يتجنب وجود بيانات ورموز برمجية غير متجاورة قد تنتج عن استخدام النطاق من 4000 إلى 7FFF . لاحظ أنه يمكن تخزين بيانات الرسومات بحرية أسفل ذاكرة القراءة فقط الأساسية (BASIC ROM) في النطاق من $A000 إلى $BFFF ، وذاكرة القراءة فقط الخاصة بالنواة (kernel ROM) في النطاق من $E000 إلى $FFFF، أو سجلات الإدخال/الإخراج وذاكرة الوصول العشوائي للألوان (Color RAM) في النطاق من $D000 إلى $DFFF ، حيث أن معالج VIC-II لا يرى سوى ذاكرة الوصول العشوائي، بغض النظر عن كيفية تعديل تعيين ذاكرة وحدة المعالجة المركزية (CPU). تكون ذاكرة القراءة فقط الخاصة بالأحرف مرئية فقط في القطاعين الأول والثالث، وبالتالي إذا تم استخدام القطاع الثاني أو الرابع، فيجب على المبرمج توفير بيانات الأحرف الخاصة به. يجب أن تشغل ذاكرة الوصول العشوائي للشاشة وصفحة الصور النقطية والرسومات المتحركة ومجموعات الأحرف نفس نافذة القطاع (شريطة ألا يتم تغيير بتات CIA عبر مقاطعة خط المسح). تحتوي البايتات الستة الأخيرة من ذاكرة النظام ( $FFFA - $FFFF ) على متجهات IRQ و NMI وإعادة الضبط، لذلك إذا تم استخدام الجزء العلوي من الذاكرة لتخزين مجموعة أحرف أو بيانات رسوم متحركة، وتم استبدال ذاكرة القراءة فقط (ROM) الخاصة بالنواة مما يكشف عن ذاكرة الوصول العشوائي (RAM) الموجودة أسفلها لوحدة المعالجة المركزية (CPU)، فسيكون من الضروري التضحية بحرف واحد أو رسم متحرك واحد لتجنب الكتابة فوق المتجهات.
السجلات
يحتوي جهاز VIC-II على 47 سجل قراءة/كتابة مدرجة أدناه:
| يسجل | النظام الست عشري | البت 7 | البت 6 | البت 5 | البت 4 | البت 3 | الجزء 2 | البت 1 | البت 0 | وصف |
|---|---|---|---|---|---|---|---|---|---|---|
0 | D000 | M0X | إحداثيات X Sprite 0 | |||||||
1 | D001 | M0Y | إحداثيات Y للكائن 0 | |||||||
2 | D002 | M1X | كائن إحداثيات س 1 | |||||||
3 | D003 | M1Y | كائن إحداثيات Y 1 | |||||||
4 | D004 | M2X | صورة إحداثيات X 2 | |||||||
5 | D005 | M2Y | صورة متحركة بإحداثيات Y 2 | |||||||
6 | D006 | M3X | صورة متحركة بإحداثيات X 3 | |||||||
7 | D007 | M3Y | صورة متحركة بإحداثيات Y 3 | |||||||
8 | D008 | M4X | صورة إحداثيات X رقم 4 | |||||||
9 | D009 | M4Y | صورة متحركة بإحداثيات Y رقم 4 | |||||||
10 | D00A | M5X | صورة إحداثيات X 5 | |||||||
11 | D00B | M5Y | صورة متحركة بإحداثيات Y 5 | |||||||
12 | D00C | M6X | إحداثيات X Sprite 6 | |||||||
13 | D00D | M6Y | إحداثيات Y Sprite 6 | |||||||
14 | D00E | M7X | صورة متحركة بإحداثيات X 7 | |||||||
15 | D00F | M7Y | إحداثيات Y Sprite 7 | |||||||
16 | D010 | M7X8 | M6X8 | M5X8 | M4X8 | M3X8 | M2X8 | M1X8 | M0X8 | البتات الأكثر أهمية لإحداثيات X |
17 | D011 | RST8 | وحدة التحكم الإلكترونية | بي إم إم | عرين | RSEL | YSCRALL | سجل التحكم 1 | ||
18 | D012 | RST | عداد النقاط | |||||||
19 | D013 | LPX | قلم ضوئي إكس | |||||||
20 | D014 | LPY | قلم ضوئي Y | |||||||
21 | D015 | M7E | M6E | M5E | M4E | M3E | M2E | M1E | M0E | تم تفعيل خاصية Sprite |
22 | D016 | — | — | RES | MCM | CSEL | إكس سلو | سجل التحكم 2 | ||
23 | D017 | M7YE | M6YE | M5YE | M4YE | M3YE | M2YE | M1YE | M0YE | توسعة Sprite Y |
24 | D018 | VM13 | VM12 | VM11 | VM10 | CB13 | CB12 | سي بي 11 | — | مؤشرات الذاكرة |
25 | D019 | IRQ | — | — | — | برنامج ILP | IMMC | IMBC | أولاً | سجل المقاطعة |
26 | D01A | — | — | — | — | ELP | EMMC | EMBC | إيرست | تم تفعيل المقاطعة |
27 | D01B | M7DP | M6DP | M5DP | M4DP | M3DP | M2DP | M1DP | M0DP | أولوية بيانات Sprite |
28 | D01C | M7MC | M6MC | M5MC | M4MC | M3MC | M2MC | M1MC | M0MC | سبرايت متعدد الألوان |
29 | D01D | M7XE | M6XE | M5XE | M4XE | M3XE | M2XE | M1XE | M0XE | توسعة Sprite X |
30 | D01E | M7M | M6M | M5M | رجل يبحث عن رجل | M3M | M2M | M1M | M0M | تصادم بين الكائنات الرسومية |
31 | D01F | M7D | M6D | M5D | M4D | M3D | M2D | M1D | M0D | تصادم بيانات Sprite |
32 | D020 | — | — | — | — | المفوضية الأوروبية | لون الحدود | |||
33 | D021 | — | — | — | — | B0C | لون الخلفية 0 | |||
34 | D022 | — | — | — | — | B1C | لون الخلفية 1 | |||
35 | D023 | — | — | — | — | B2C | لون الخلفية 2 | |||
36 | D024 | — | — | — | — | B3C | لون الخلفية 3 | |||
37 | D025 | — | — | — | — | MM0 | صورة متعددة الألوان 0 | |||
38 | D026 | — | — | — | — | MM1 | صورة متعددة الألوان 1 | |||
39 | D027 | — | — | — | — | M0C | صورة ملونة 0 | |||
40 | D028 | — | — | — | — | M1C | صورة ملونة 1 | |||
41 | D029 | — | — | — | — | M2C | صورة ملونة 2 | |||
42 | D02A | — | — | — | — | M3C | صورة ملونة 3 | |||
43 | D02B | — | — | — | — | M4C | صورة ملونة 4 | |||
44 | D02C | — | — | — | — | M5C | صورة ملونة 5 | |||
45 | D02D | — | — | — | — | M6C | صورة ملونة 6 | |||
46 | D02E | — | — | — | — | M7C | صورة ملونة 7 | |||
الألوان

في وضع الأحرف متعددة الألوان (160×200 بكسل، وهو الوضع المستخدم في معظم الألعاب)، تتكون الأحرف من 4×8 بكسل (تبقى الأحرف مربعة تقريبًا لأن عرض البكسلات مضاعف) وتستخدم 4 ألوان من أصل 16 لونًا. ثلاثة من هذه الألوان موحدة على كامل الشاشة (لون الخلفية، واللون المتعدد 1، واللون المتعدد 2)، بينما يمكن تحديد اللون المتبقي بشكل فردي لكل منطقة من مناطق 4×8 بكسل كما هو محدد في ذاكرة الألوان. أما في وضع الرسوم المتحركة متعددة الألوان (12×21 بكسل)، فتتكون الرسوم المتحركة من ثلاثة ألوان بالإضافة إلى الشفافية: لونان مشتركان بين جميع الرسوم المتحركة ولون واحد خاص بكل رسمة. يختار الفنانون الألوان المشتركة بحيث يؤدي دمجها مع الألوان الفردية إلى انطباع ملون. تقوم بعض الألعاب بإعادة تحميل الألوان المشتركة أثناء مقاطعة المسح الضوئي؛ على سبيل المثال، منطقة تحت الماء في لعبة Turrican II (التي كانت متميزة رأسيًا) لها ألوان مختلفة. أما ألعاب أخرى، مثل ألعاب Epyx الصيفية ولعبة كرة السلة Sam & Ed من COMPUTE! Gazette ، فتستخدم صورتين عاليتي الدقة لتتيح استخدام لونين للخلفية دون التضحية بالدقة الأفقية.بالطبع، هذه التقنية تقلل عدد الصور المتحركة المتاحة إلى النصف.
في أجهزة C64 بتقنية PAL ، يمكن استخدام خط تأخير PAL في الشاشة أو التلفزيون، الذي يُحسب متوسط درجة اللون (وليس سطوع) خطوط الشاشة المتتالية، لإنشاء سبعة ألوان غير قياسية عن طريق تبديل خطوط الشاشة التي تُظهر لونين متطابقين في السطوع. يوجد سبعة أزواج من هذه الألوان في شريحة VIC. [ 11 ]
لم يُخصّص فريق تطوير جهاز C64 وقتًا طويلًا لحساب لوحة الألوان الستة عشر رياضيًا. قال روبرت يانيس، الذي شارك في تطوير جهاز VIC-II:
أخشى أن اختيار الألوان لم يُبذل فيه جهدٌ يُذكر كما تظن. بما أننا كنا نتحكم تمامًا في درجة اللون والتشبع والإضاءة، فقد اخترنا ألوانًا تُناسبنا. ولكن لتوفير مساحة على الشريحة، كانت العديد من الألوان ببساطة على الجانب المقابل من عجلة الألوان للألوان التي اخترناها. هذا سمح لنا بإعادة استخدام قيم المقاومات الموجودة، بدلًا من وجود مجموعة فريدة تمامًا لكل لون. [ 12 ]
تتميز الإصدارات المبكرة من جهاز VIC-II المستخدمة في أجهزة PAL C64 بلوحة ألوان مختلفة عن الإصدارات اللاحقة. [ 13 ]
يتم توليد لوحة الألوان الكاملة المكونة من ستة عشر لونًا بناءً على اختلافات إشارات YPbPr كما هو موضح أدناه:
| الرقم — الاسم | Y | الرصاص (نسبياً) | Pr (rel.) |
|---|---|---|---|
| 0 — أسود | 0 | 0 | 0 |
| 1 - أبيض | 1 | 0 | 0 |
| 2 - أحمر | 0.3125 | -0.3826834 | 0.9238795 |
| 3 — سماوي | 0.625 | 0.3826834 | -0.9238795 |
| 4 — بنفسجي | 0.375 | 0.7071068 | 0.7071068 |
| 5 - أخضر | 0.5 | -0.7071068 | -0.7071068 |
| 6 — أزرق | 0.25 | 1 | 0 |
| 7 — أصفر | 0.75 | -1 | 0 |
| 8 — برتقالي | 0.375 | -0.7071068 | 0.7071068 |
| 9 — بني | 0.25 | -0.9238795 | 0.3826834 |
| 10 — أحمر فاتح | 0.5 | -0.3826834 | 0.9238795 |
| 11 — رمادي داكن | 0.3125 | 0 | 0 |
| 12 — رمادي متوسط | 0.46875 | 0 | 0 |
| 13 — أخضر فاتح | 0.75 | -0.7071068 | -0.7071068 |
| 14 — أزرق فاتح | 0.46875 | 1 | 0 |
| 15 — رمادي فاتح | 0.625 | 0 | 0 |
VIC-IIe

تستخدم وحدة VIC-IIe 8564/8566 في جهاز Commodore 128 ثمانية وأربعين طرفًا بدلًا من أربعين، نظرًا لقدرتها على توليد إشارات أكثر، من بينها إشارة الساعة لوحدة المعالجة المركزية Zilog Z80 الإضافية في ذلك الجهاز. كما تحتوي على سجلين إضافيين. يُستخدم أحد السجلين للوصول إلى لوحة المفاتيح الرقمية الإضافية والمفاتيح الإضافية الأخرى في ذلك الجهاز؛ وقد أُضيفت هذه الوظيفة إلى وحدة VIC لأنها كانت أسهل مكان في الجهاز لإضافة أطراف الإخراج الثلاثة الإضافية اللازمة. أما السجل الإضافي الآخر فيُستخدم للتبديل بين تردد ساعة النظام 1 ميجاهرتز و2 ميجاهرتز؛ عند السرعة الأعلى، يعرض خرج الفيديو في وحدة VIC-II كل بايت ثانٍ في الكود كنمط بتات أسود عالي الدقة على الشاشة، مما يشير إلى استخدام وضع 80 عمودًا في جهاز C128 عند تلك السرعة (عبر شريحة 8563 VDC RGB). بشكل غير رسمي، يتوفر السجلان الإضافيان أيضًا في وضع C64 الخاص بجهاز C128، مما يسمح باستخدام بعض المفاتيح الإضافية، بالإضافة إلى تنفيذ التعليمات البرمجية التي تعتمد على وحدة المعالجة المركزية (مثل العمليات الحسابية المكثفة) بسرعة مضاعفة وبدون فيديو في برامج C64 المصممة خصيصًا. [ 14 ] كما تُعد السجلات الإضافية أحد مصادر عدم التوافق الطفيف بين وضع C64 الخاص بجهاز C128 وجهاز C64 حقيقي - حيث قامت بعض برامج C64 القديمة بالكتابة عن غير قصد فيبت التبديل 2 ميجاهرتز ، والذي لن يفعل شيئًا على الإطلاق على جهاز C64 حقيقي، ولكنه سيؤدي إلى شاشة مشوهة على جهاز C128 في وضع C64.
يتمتع معالج VIC-IIe بقدرة غير معروفة على نطاق واسع، وهي إنشاء مجموعة ألوان إضافية عن طريق معالجة السجلات بطريقة محددة تجعل إشارة اللون خارج الطور عما تعتبره الأجزاء الأخرى من الشريحة. وقد تم عرض هذه القدرة في عرض "Risen from Oblivion" التوضيحي. [ 15 ] لسوء الحظ، لا تعمل هذه الميزة على جميع الشاشات - وقد تم التأكد من صحة الألوان على شاشات Commodore CRT وما يماثلها.
باستخدام السلوك المحدد لبت الاختبار في جهاز VIC-IIe، فإنه قادر أيضًا على إنتاج صورة متداخلة حقيقية بدقة 320×400 (وضع الدقة العالية) و160×400 (وضع الألوان المتعددة). [ 16 ]
قائمة إصدارات VIC-II
أجرت شركة كومودور العديد من التعديلات على جهاز VIC-II خلال فترة إنتاجه. وذكرت مجلة Compute!'s Gazette في عددها الأول، الصادر في يوليو 1983، أنه قد تم إجراء ثمانية تعديلات بالفعل منذ إصدار جهاز كومودور 64 في منتصف عام 1982. [ 17 ]
- نظام NTSC
- تقنية MOS 6566 - مصممة لخطوط عناوين SRAM / غير المدمجة (تستخدم في جهاز MAX )
- تقنية MOS 6567 - الإصدار الأصلي من NMOS
- تقنية MOS 8562 - إصدار HMOS-II
- تقنية MOS 8564 - إصدار VIC-II E C128
- بال
- MOS Technology 6569 – ( PAL-B ، المستخدم في معظم دول PAL)
- MOS Technology 6572 – ( PAL-N ، يستخدم في جنوب أمريكا الجنوبية فقط)
- MOS Technology 6573 – ( PAL-M ، يستخدم في البرازيل فقط)
- تقنية MOS 8565 - إصدار HMOS-II للوحات الأم "C64E"
- تقنية MOS 8566 – VIC-II E (PAL-B) إصدار C128
- MOS Technology 8569 – VIC-II E (PAL-N) C128 الإصدار
استُخدمت النسخة الأولى من شريحة VIC-II في الأجهزة المصنعة خلال عامي 1982 وأوائل 1983؛ وكانت مزودة بغلاف خزفي لأسباب حرارية، وتُنتج 64 إشارة لونية NTSC لكل خط. كما لم تُخرج هذه الشرائح إشارات منفصلة للون والسطوع. أما النسخ اللاحقة، فكانت مزودة بغلاف بلاستيكي أقل تكلفة، و65 إشارة لونية لكل خط (لنظام NTSC، و63 لنظام PAL)، بالإضافة إلى فصل إشارات اللون والسطوع، مما أتاح شكلاً مبكراً من تقنية S-video. أُجريت عدة تعديلات بهدف رئيسي هو تحسين جودة إخراج الفيديو، التي كانت رديئة في الوحدات الأولى، والقضاء على خلل برمجي كان يتسبب في ظهور وحدات بكسل عشوائية على الشاشة (استغلت بعض الألعاب المبكرة هذا الخلل عمداً لتأثيرات رسومية لم تعمل بالتالي على أجهزة C64 اللاحقة). كان الهدف من وجود 64 إشارة لونية في شريحة VIC-II الأولية هو السماح بظهور تشوهات لونية NTSC في وضع الصور النقطية عالية الدقة كما في أجهزة أتاري ذات 8 بت، ولكن تم التخلي عن هذه الفكرة سريعاً.
بسبب ضرورة التحول إلى غلاف بلاستيكي لأسباب تتعلق بالتكلفة، كان ارتفاع درجة الحرارة مشكلة شائعة في جهاز VIC-II. ويعود ذلك لعدة أسباب، منها الكثافة العالية للرقاقة مقارنةً بعملية التصنيع المستخدمة، وسرعتها الداخلية العالية (8 ميجاهرتز). حاولت شركة كومودور إيجاد حل مؤقت لهذه المشكلة باستخدام درع الترددات اللاسلكية المصنوع من الألومنيوم كمشتت حراري (في أجهزة NTSC؛ أما أجهزة PAL فكانت تُباع في دول ذات معايير أقل صرامة للتداخل اللاسلكي من الولايات المتحدة، ولذلك استخدمت فقط ورق مقوى مطلي بالألومنيوم)، إلا أن هذا الحل لم يكن فعالاً تماماً في منع ارتفاع درجة الحرارة وتلف الرقاقة.
صُنعت شريحة VIC-II من سلسلة 85xx المستخدمة في جهاز C64Cs بتقنية HMOS الحديثة بدقة 3.5 ميكرومتر ، وتتطلب خط طاقة واحد فقط بجهد 5 فولت بدلاً من خطي الطاقة المزدوجين 12 فولت و5 فولت الموجودين في شريحة VIC-II من سلسلة 65xx. تعمل هذه الشرائح بدرجة حرارة أقل بكثير ولا تعاني من مشاكل ارتفاع درجة الحرارة التي تؤثر على شريحة VIC-II من سلسلة 65xx.
توجد عدة إصدارات من 6569: 6569R1 (عادةً ما تكون مطلية بالذهب)، و6569R3، و6569R4، و6569R5. أما الإصدار الأكثر شيوعًا من 8565 فهو 8565R2.
انظر أيضاً
مراجع
- ↑ بيرسال، كيمبرلي (30 أكتوبر 2016). "اتضح أن قائد فريق هندسة كومودور 64 تقاعد في يوركتاون" . pilotonline.com . تاريخ الاسترجاع: 12 أكتوبر 2021 .
- ↑ باغنال، برايان (2005). "المشروع السري 1981". على الحافة: الصعود والسقوط المذهل لشركة كومودور ( الطبعة الأولى). وينيبيغ، مانيتوبا: دار فاريانت للنشر. الصفحات 224-225 . ISBN 0-9738649-0-7.
- 1 2 بيري، تيكلا س.؛ واليش، بول (مارس 1985). "دراسة حالة تصميمية: كومودور 64" (ملف PDF) . مجلة IEEE Spectrum . 22 (3). نيويورك، نيويورك: معهد مهندسي الكهرباء والإلكترونيات : 48-58 . Bibcode : 1985IEEES..22c..48P . doi : 10.1109/MSPEC.1985.6370590 . ISSN 0018-9235 . S2CID 11900865. مؤرشف من الأصل (ملف PDF) في 13 مايو 2012. تم الاسترجاع في 12 نوفمبر 2011 .
- ↑ باغنال، برايان (2005). "المشروع السري 1981". على الحافة: الصعود والسقوط المذهل لشركة كومودور ( الطبعة الأولى). وينيبيغ، مانيتوبا: دار فاريانت للنشر. ص 227. ISBN 0-9738649-0-7.
- ↑ باغنال، برايان (2005). "المشروع السري 1981". على الحافة: الصعود والسقوط المذهل لشركة كومودور ( الطبعة الأولى). وينيبيغ، مانيتوبا: دار فاريانت للنشر. ص 229. ISBN 0-9738649-0-7.
- ↑ باغنال، برايان (2005). "المشروع السري 1981". على الحافة: الصعود والسقوط المذهل لشركة كومودور ( الطبعة الأولى). وينيبيغ، مانيتوبا: دار فاريانت للنشر. ص 230. ISBN 0-9738649-0-7.
- ↑ باغنال، برايان (2005). "المشروع السري 1981". على الحافة: الصعود والسقوط المذهل لشركة كومودور ( الطبعة الأولى). وينيبيغ، مانيتوبا: دار فاريانت للنشر. ص 242. ISBN 0-9738649-0-7.
- ↑ ياكال، كاثي (يونيو 1986). "تطور رسومات كومودور" . مجلة كومبيوت! غازيت . الصفحات 34-42 . تاريخ الاسترجاع: 18 يونيو 2019 .
- 1 2 3 4 كوبر، أوتيس ر. (1986). رسم خرائط كومودور 128. غرينسبورو، كارولاينا الشمالية: كتب كومبيوت! ISBN 0-87455-060-2.
- ↑ "شريحة واجهة الفيديو 6567: ورقة المواصفات" (ملف PDF) . مجموعة كومودور لأشباه الموصلات. الصفحتان 2 و5.
- ↑ "الرسومات المدفوعة بالإضاءة على جهاز C64" .
- ↑ تيمرمان، فيليب. "تحليل ألوان كومودور VIC-II (معاينة)" . تم الاطلاع عليه بتاريخ 11 فبراير 2018 .
- ↑ سيوشتيدت، إيلكا (30 مارس 2016). "ألوان VIC-II القديمة ومزج الألوان" . مدونة ilesj . تم الاطلاع عليه بتاريخ 11 فبراير 2018 .
- ↑ كوبر، أوتيس ر.؛ فلورانس، ديفيد؛ هايمارك، تود د.؛ كراوس، جون؛ ميلر، جورج و.؛ ميكيتين، كيفن؛ نيلسون، فيليب إ.؛ فيكتور، تيم (أكتوبر 1985). "الفصل 7. بنية النظام". دليل المبرمج رقم 128 من مجلة COMPUTE!. غرينسبورو، كارولاينا الشمالية: منشورات COMPUTE!. الصفحات 348-349 . ISBN 0-87455-031-9.
- ↑ "نهض من النسيان - معلومات عامة" .
- ↑ "VIC-IIe Interlace" .
- ↑ هالفيل، توم ر. (يوليو 1983). "تحديث فيديو كومودور 64" . مجلة كومبيوت! غازيت . ص 40. تم الاطلاع عليه بتاريخ 6 فبراير 2016 .
- "الملحق ن: مواصفات شريحة 6566/6567 (VIC-II)". دليل مرجعي لمبرمج كومودور 64 (ملف PDF) (الطبعة الأولى ). كومودور للأجهزة المكتبية . 1982. الصفحات 436-456 . ISBN 0-672-22056-3.
روابط خارجية
- وحدة التحكم بالفيديو MOS 6567/6569 (VIC-II) وتطبيقها في جهاز Commodore 64 - وصف تفصيلي للأجهزة الخاصة بـ VIC-II.
- تحليل ألوان جهاز كومودور VIC-II (معاينة) - محاولة لتقديم معلومات دقيقة حول لوحة ألوان VIC-II، بقلم فيليب تيمرمان.
- وصف أوضاع رسومات C64 - شروحات بسيطة مع صور توضيحية للأوضاع الشائعة المستخدمة لرسومات C64، بما في ذلك الأوضاع المخترقة والأوضاع المدعومة بالبرامج.
- أوضاع الفيديو المتداخلة الحقيقية باستخدام VIC-IIe.
- معلومات برمجة VIC على Codebase64.
- لقطات قالب VIC-II
- إعادة إنتاج دقيقة لإخراج الفيديو لجهاز كومودور C64 - لوحة ألوان VIC-II كما تظهر على شاشات PAL وNTSC؛ حساب نسب أبعاد البكسل
- الدوائر المتكاملة بتقنية MOS
- رقائق الرسومات
- كومودور 64
- معايير عرض الكمبيوتر
