لماذا؟
إذا كنت من عشاق أجهزة الكمبيوتر العتيقة ، فيمكنك تخطي الكلام التحفيزي بأمان والانتقال إلى القسم التالي.
طوال شهر آب (أغسطس) 2018 ، قضيت أنا وابني البالغ من العمر 13 عامًا كتابة تجريبي لـ
Good Apple . في مهرجان
تشاوس للإنشاءات ، احتل عملنا المركز الثاني ، حيث حصلنا على جائزة نقدية بقيمة 35 ألف روبل ، والتي قسمناها بصدق بالتساوي. بالنسبة للطفل ، يعد هذا دخلًا جيدًا ، على الرغم من أنه بإنشاء مواقع حصل على نفس المبلغ في وقت أقل. من الواضح ، يمكن أن أقضي وقتي مع فائدة اقتصادية أكبر ... ولكن ليس أغسطس! يجب علينا أن نستريح من العمل. البرمجة للمتعة الخاصة بك هي رفاهية لا يمكنك تحملها إلا في إجازة.

المكافأة المادية ، بالطبع ، لا تخدم الحافز ، لكنها تعزز المشاعر الإيجابية. من المثير للدهشة أن العرض التوضيحي لجهاز كمبيوتر سوفيتي منسي جمع
آلاف المشاهدات على يوتيوب وانتهى به الأمر في
قائمة تشغيل مع ما يقرب من مائة ألف مشاهدة. لكن الأمر الأكثر إثارة للدهشة أنه في عام 2018 ، تم منحها جائزة نقدية! ربما يؤدي عدم الاحتمال الشديد لما يحدث إلى حدوث طفرة عاطفية.
ومع ذلك ، هناك شيء أكثر أهمية.
عند إنشاء "Good Apple" ، اضطررنا إلى العمل مع أجهزة حقيقية ، نظرًا لأننا استخدمنا إمكانات الكمبيوتر ، والتي لا تتكاثر فيها المحاكيات بشكل صحيح. بادئ ذي بدء ، أردت تحقيق عمل مستقر بنفس القدر مع الأقراص الصلبة IDE ومع بدائلها الحديثة في شكل Compact Flash.
في هذا المشروع اكتسب ابني البالغ من العمر 13 عامًا خبرة لا تقدر بثمن في التنمية الصناعية. الحديد المعيب. الأجهزة الجيدة التي لا تتصرف كما هو موضح في الوثائق. الوثائق التي صيغت مع الأخطاء. نقص الوثائق في عدد من القضايا. كتابة الاختبارات الخاصة بك لتحديد مشاكل الحديد. المواعيد النهائية اختبار على الأجهزة المختلفة وتكوينات. كتابة أداة التجميع الخاصة بك (عندما أصبح من الواضح أن الحلول الحالية تعيق عملية التطوير). وأخيراً ، بعد احتفال قصير بالنجاح - الإصدار الإلزامي للنسخة النهائية ، وتصحيح عدد من الأخطاء.
للوهلة الأولى ، يبدو أنه يمكن الحصول على تجربة مماثلة مع بعض Arduino الحديثة. في الواقع ، كان علينا أن نغرق في غابة الدوائر. حسبنا عدد التدابير التي يتم تنفيذ التعليمات من أجلها. في أنواع مختلفة من الذاكرة ، هذه المرة مختلفة. تعمل وحدة التحكم والمعالج في الذاكرة على ترددات مختلفة ، لذلك يمكن تنفيذ نفس الأوامر في أوقات مختلفة ، حتى في نفس نوع الذاكرة. مدة تنفيذ البرنامج الفرعي لا تساوي مجموع فترات التعليمات الواردة في هذا البرنامج الفرعي. كان علينا أن نكتب أدواتنا الخاصة لاختبار الشفرة وتحسينها على الأجهزة الحقيقية.

انتهى الأمر إلى أن ابني كان يدرس دوائر BK 0011 (التي تأتي حواف الإشارة إليها عند تشغيل RPLY ، وما إلى ذلك - لم أفهم شيئًا عن ذلك بعد الآن). لذا ابتكر فكرة إنشاء محاكي BK الخاص به ، متوافق مع أجهزة حقيقية دقيقة للفوز ، وحتى كتب النواة ... ومع ذلك ، هذه قصة أخرى.
بشكل إجمالي ، خلال شهر واحد - من دراسة أداة التجميع إلى إنشاء أدوات التطوير الخاصة بك ، من الاختبارات الصعبة إلى العمل النهائي للوسائط المتعددة. كل هذا سيكون مستحيلاً بدون الشيء الرئيسي: التخطيط. ربما الدرس الأكثر قيمة المستفادة. كنت تأخذ مهمة مستحيلة. أنت تدرك أنك ستواجه صعوبات لا يمكن التغلب عليها. تخطط أنت تفعل. والنتيجة تذهل الجميع لدرجة تجعل حتى الخبراء يلومون الغش ("لقد رفعت المعالج!").
لماذا لا طيف ZX؟

مرة أخرى ، سأبدأ بشيء غريب: التمويل. استنادا إلى الإعلانات على Avito ، في المتوسط ، يكلف BC 0010 عدة مرات أكثر من ZX Spectrum. من الواضح أنه في حالة نادرة من الطيف الأصلي في حالة ممتازة سيطلبون مبلغًا مستديرًا. لكن BC 0011m المحملة بالكامل ستظل أكثر تكلفة. إذا كان على الإطلاق قادرة على العثور عليها. الأسعار تتحدث عن نفسها: قيمة جمع BC 0010 أعلى. و BK 0011m - وأكثر من ذلك. أن يكون مثل هذا الكمبيوتر في المنزل لطيف للغاية.
الوسيطة الثانية هي 16 بت. لا يوجد شيء 8 بت في 0010 قبل الميلاد. لا يعرف المعالج حتى كيفية إضافة أرقام من 8 بت ، وليس لديه أمر ADDB. 16 بت في كل شيء. السبب في ذلك هو بنية DEC PDP-11. يصف الكثيرون نظام قيادة المعالج PDP-11 بأنه الأكثر نجاحًا والأكثر ملائمة على الإطلاق. بالطبع ، هناك من يريد المجادلة بهذا البيان. ولكن هذه حقيقة واحدة: في مهرجان ياندكس
لإزالة التشكيل ، تم
تخصيص ثلاث حلقات لهندسة المعالجات ، واثنتان منها كانت حول PDP-11. هذا ، في الواقع ، أسطورة ، علامة فارقة في تاريخ تكنولوجيا الكمبيوتر ، والتي لا تزال مستمرة في إثارة عقول المتحمسين. BK 0010 يجعل من الممكن لمس هذه الأسطورة. لا تلمسها فحسب ، بل تكتشفها بأدق التفاصيل ، وتشعر بجمال ونعمة مجمع DEC: سجلات متساوية تمامًا ، ثماني طرق معالجة ، والذاكرة الخطية - الجمال!
الوسيطة الثالثة: تمت كتابة العديد من العروض التجريبية من أجل ZX Spectrum. ل BC 0010 -
أقل من خمسين ، عد صغير 256 بايت و 4 كيلوبايت. المكان على demoscene مجاني تقريبًا ، حيث يمكن للمبتدئين إظهار نفسه!
والنظر الأخير ، ذاتية بحتة. لقد كنت أشاهد الديموزين الروسي منذ عام 1994. يبدو حزب spektrumistov بالنسبة لي ، للأسف ، أكثر سمية وعدائية. بالطبع ، هناك أناس ودودون! لدي احترام كبير لهم وعملهم. ولكن بشكل عام - ربما بسبب طابعها الجماعي - كان المشهد الطيفي مليئًا بالصراعات وتوضيح العلاقات وحتى المؤامرات مثل التصويت على الأسماء (عندما يصوتون فقط من أجل "ملكهم" في المسابقات). أثناء تواجدهم في مرحلة BC-shnoy الصغيرة ، لا يطرحون أسئلة مثل "من هو الأكثر برودة" ويسعدهم كل مشارك جديد. أكرر: هذا هو انطباعي الشخصي البحت ، والذي يمكنك تجاهله.
الحديد الحقيقي
مرت 20 عامًا قبل أن أعود إلى كتابة البرامج في كولومبيا البريطانية. على مدار العشرين عامًا ، تغير الكثير. بالنسبة لي شخصيا ، حدث تحول كبير في العقل: "فكر بطريقة مختلفة". يتم وضع هذا الشعار في الائتمانات النهائية من عرضنا "Good Apple".
اعتدنا على تحميل الألعاب من مسجل الشريط لمدة 5 دقائق. ثم جاء التحكم بالسيارة. وراءهم هي محركات الأقراص الصلبة. ثم
النسخ المتماثلة المكتشفة حديثا من وحدات التحكم مع فلاش مدمج على متن الطائرة. من المعتاد الآن محاكاة محركات أقراص الفلاش على الساحة القديمة ... ولكن مهلاً ، في عام 2019 لدينا مصدر صوت محمول عالي الجودة - iPhone. لذلك دعونا نأخذ سلك الصوت القياسي DIN-5 - مقبس صغير (لن تحتاج حتى إلى إعادة لحام) وتحميل BK من iPhone بسرعة عالية.
لقد مررت بتتبع ROM ،
وكشفت كيف يمكنني التغلب قليلاً على خوارزمية التمهيد من مسجل الشريط وجعل BC تقرأ البيانات 4 مرات بشكل أسرع.
كانت الخطوة التالية هي كتابة أداة تحميل ملفات صغيرة تقرأ البيانات
بتنسيق تيربو مصمم خصيصًا. تم وضع كل من المحمل والبيانات واحدة تلو الأخرى في ملف WAV واحد (
المحول كتبه
Lenar Zakirov ). يقرأ BK 0010 جهاز microloader ويبدأ تشغيله تلقائيًا ، والذي بدوره يقرأ بقية البيانات من الملف. تصل الترددات بتنسيق turbo إلى 22 كيلو هرتز ، وبالتالي فإن متطلبات جودة مصدر الصوت مرتفعة. اي فون هو التعامل. مشغل موسيقى جيد. بطاقة صوت الكمبيوتر أيضا.
ثم جاء دور
المجمع الجامع . وأضاف خيارات لحفظ البرنامج في WAV (سواء في شكل قياسي وتوربو). علاوة على ذلك ، يمكن للتجميع المتقاطع تشغيل WAV على الفور من خلال بطاقة صوت. فقط تخيل كيف تسارع التنمية! لا حاجة إلى عناء مع كتابة صورة القرص إلى بطاقة CF بعد كل تجميع. فقط قم بإجراء تغييرات على الكود ، انقر فوق "إنشاء" ، يتدفق الصوت في القرص المضغوط وبعد بضع ثوانٍ ، يعمل البرنامج بالفعل على أجهزة حقيقية. لتلقي الصوت بتنسيق قياسي ، فقط اضغط على مفتاحي L (تحميل) وأدخل المفتاح على 0011 قبل الميلاد (قم بتحميل البرنامج الأول الذي صادفته). لنقل الصوت بتنسيق تيربو ، يجب عليك أولاً تشغيل أداة تحميل الأقراص الصغيرة (بالنسبة لي ، يتم تشغيلها تلقائيًا من محرك الأقراص الصلبة عند تشغيل محرك BC ، وفي أي وقت يمكنك تسجيل الدخول إلى النظام عن طريق الضغط على مفتاح STOP).

من الأسهل توصيل BK بالتلفزيون في وضع أحادي اللون ، في مدخل AV مركب عادي. من الضروري لحام الكابل مع "الزنبق" في نهاية واحدة و DIN-5 في الطرف الآخر. تأتي الإشارة أحادية اللون من الدبوس الرابع في DIN-5 للموصل BK ، المعنون "TV". ترتبط الأرض تقليديًا بالدبوس الثاني من DIN-5.
أنا شخصياً من محبي شاشات CRT أحادية اللون - فهي توفر وضوح الصورة لا يمكن الوصول إليها على الشاشات الملونة مع شبكة الفتحة الخاصة بهم. ولكن معظم الألعاب وجميع العروض التوضيحية هي الأفضل لمشاهدة في اللون. للقيام بذلك ، استخدم خرج "TVC" BK واتصل بالتلفزيون عبر RGB SCART. جهات الاتصال 3 و 4 و 5 على DIN-5 - الأحمر والأزرق والأخضر على التوالي. دبوس 1 - مزامنة. دبوس 2 هو الأرض. عند الاتصال بجهاز تلفزيون بشاشة LCD ، من المفيد تطبيق +5 فولت على السلك السادس عشر من SCART (عبر 200 أوم مقاوم أو نحو ذلك). عادة ما تؤخذ 5 فولت من موصل "TV" المجاور (دبوس 1).
يمكنك استخدام محول SCART-HDMI. سأحذرك على الفور من أن BC تعرض صورة بتردد لا يتجاوز 48 إطارًا في الثانية ، ولكن 48.83 ، لذلك بدلاً من التمرير السلس على شاشات LCD ، سيكون هناك نشوء دوري. لقد قمت بحل هذه المشكلة عن طريق
استبدال مرنان كريستال الكوارتز بقوة 12 ميجاهرتز عند 12.288 ميجاهرتز. ومع ذلك ، كان الوخز ملحوظا فقط في بعض العروض. لا تستخدم معظم برامج BC مزامنة معدل الإطارات.
لماذا لا تكون راضيًا عن المضاهاة ، والتي قد تكون هناك حاجة إلى كمبيوتر حقيقي على الإطلاق؟ لقد وجدت أربعة أشياء سيئة المحاكاة:
- سلوك المتكلم على ترددات عالية.
- تزامن الصورة واللوحات مع الشعاع.
- الوقت الدقيق لتنفيذ الأوامر (مهم للموسيقى من خلال Covox).
- العمل مع محركات الأقراص الصلبة IDE بسرعات عالية.
إذا كنت لا تخطط للقيام بأي مما سبق ، فإن المضاهاة كافية لك.
محاكاة
على نظام MacOS ،
أستخدم محاكي
BK2010 . انها ليست دقيقة جدا ، ولكنها مناسبة لمعظم المهام.
يعمل محاكي
GID الأكثر تقدمًا حاليًا على نظام Windows. إنه يعمل أيضًا على CrossOver لنظام MacOS و Wine لنظام التشغيل Linux. المحاكي لديه مصحح أخطاء جيد ، عارض صفحة الذاكرة وما شابه ذلك.
لكتابة صور القرص على Compact Flash ، أستخدم الأداة المساعدة متعددة المنصات
Etcher . ولكن في كثير من الأحيان أحيل البيانات من خلال قناة الصوت.
أدوات التطوير

دفعت مجموعة من التجريبي
فريق Excess Team التجميع عبر Alexei Morozov. في البداية استخدمناه ، ولكن سرعان ما كتب إيفان برنامجه الخاص - متعدد المنصات ، في بيثون. إنه يعمل بشكل أبطأ ، ولكنه أكثر ثراءً في الوظائف. يتضمن ذلك دعمًا لمشاريع متعددة الملفات ، وتعبيرات حسابية معقدة ، وأنواع بيانات مزدوجة الكلمات ، والتكامل مع Sublime Text ودعم موسع لأخطاء التجميع ، وتوفير النتيجة في تنسيق ملف صوت ، وتجميع ليس فقط ل BC ، ولكن أيضًا لـ UKSC ، وأكثر من ذلك بكثير. يمكنك أن تقرأ عن كل هذا في الوثائق الرسمية.
يسمى
التجميع المتقاطع PDPy11 .
يشكو بعض قدامى المحاربين من أن PDPy11 يفتقر إلى وحدات الماكرو من مجمّع الماكرو DEC الكلاسيكي (ماكرو -11). المجمع الكلي هو ، إلى حد ما ، لغة مختلفة. من المحتمل أن يكون هذا مفيدًا لبرامج نظام الكتابة ، ولكن تمت كتابة ألعاب وعروض توضيحية خطيرة لـ BC ، حسب علمي ، في مجمِّع كلاسيكي عادي. ومن المفارقات: بالنسبة للكود المصدري لبرامج BK ، من المعتاد استخدام ملحق ملف .mac (من "الماكرو") حتى في أدوات التجميع التي لا تدعم وحدات الماكرو. في أي حال ، فإن قدرات PDPy11 كافية لكتابة برامج بأي مستوى من التعقيد.
تم تضمين مصحح الأخطاء في محاكي
GID . يسمح لك بتعيين عناوين نقاط التوقف أو مقاطعة أو متابعة تنفيذ البرنامج في أي وقت ، والنظر في محتويات السجلات والذاكرة ، وتنفيذ البرنامج خطوة بخطوة ، وتغيير محتويات الذاكرة ، إلخ.
لتحويل الرسومات إلى تنسيق BC ، قمنا بكتابة
محول عبر الإنترنت . الدقة BK - 256 × 256 بكسل في وضع الألوان أو 512 × 256 في أحادية اللون. من الأفضل عدم إدخال الصور الأكبر على المحول.
الوثائق
كتب تعليميًا كبيرًا عن برمجة لغة التجميع يوري زالتسمان. تتم كتابة الاختلافات بين BC 0011m و BC 0010
هنا . كان هناك أيضًا طراز BK 0011 (بدون "m") ، لكن تمت إزالته بسرعة من الإنتاج ، واعترفت به على أنه غير ناجح.
على الرغم من أن BC 0011m لديها إمكانات كبيرة (لوحات الألوان ، صفحات الذاكرة الإضافية) ، في البداية أنصحك بالبرنامج من أجل BC 0010 - هذا النموذج أبسط وأكثر قابلية للفهم. سيتم تشغيل أي برنامج تمت كتابته بشكل صحيح لـ BC 0010 أيضًا على BC 0011m.
يتم وصف جهاز المعالج ومجموعة التعليمات بشكل جيد على
ويكيبيديا .
لأكثر شجاعة -
البرمجة في الرموز .
مرحبا العالم!
تبدأ مساحة ذاكرة الشاشة في BC 0010 بالعنوان 40000 (الركن الأيمن العلوي) وتنتهي بعنوان 77777 (الركن الأيمن السفلي من الشاشة). كما تعتقد ، تستخدم بنية PDP-11 نظام أرقام من 8 أرقام عشرية. لكن أداة تجميع PDPy11 ، بالطبع ، تسمح لك بكتابة الأرقام أيضًا في الأنظمة الثنائية ، العشرية ، والسداسية عشرية - كما تريد.
لوضع
نقطة على الشاشة ، تحتاج إلى كتابة بعض الأرقام في مجال ذاكرة الشاشة. تتم كتابة الوسائط في مجمع DEC من اليسار إلى اليمين: المصدر ، ثم المتلقي على سبيل المثال:
MOV #100000,@#60040 ;
علامة # تعني أن الوسيطة مجرد رقم (وليس عنوان). علامة @ # تعني أن الوسيطة هي عنوان مطلق (أي ، لن تتغير عندما يتم نقل البرنامج إلى موقع ذاكرة آخر).
تنظيف الشاشة يشبه هذا:
MOV #40000,R1 ; MOV #20000,R0 ; 1: CLR (R1)+ ; , R1 SOB R0,1 ;
عنونة غير مباشرة (R1) يستخدم تسجيل R1 كمؤشر عنوان. يتم معالجة الذاكرة في BC بواسطة البايت ، لكن تعليمات CLR تُمسح على الفور وحدتي بايت متجاورتين: الأولى 40000 و 40001 ، في الخطوة التالية من دورة 40002 و 40003 ، وهكذا. تدوين (R1) + يعني أنه بعد استخدام الوسيطة ، تحتاج إلى زيادتها. في هذه الحالة ، بحلول 2 ، لأن الأمر يعالج 2 بايت. يمكن أن يكون العداد حلقة أي سجل. تقوم شركة SOB بطرح وحدة من السجل وتذهب إلى الملصق 1. يشار إلى الملصقات المحلية بالأرقام والقولون ، ونطاقها بين علامتين عالميتين. يجب أن تبدأ التسميات العالمية بحرف وأن تنتهي أيضًا بنقطتين.
يمكن إجراء تعليمة CLR للعمل مع وحدات البايت عن طريق إلحاق الحرف "B". ثم CLRB (R1) + سيزيد السجل R1 ليس بمقدار 2 ، ولكن بمقدار 1.
MOV #40000,R1 MOV R1,R0 ; 1: CLRB (R1)+ SOB R0,1
يمكنك أن تفعل الشيء نفسه أقصر. نقوم بمسح الشاشة من الأسفل إلى الأعلى باستخدام طريقة فهرس معالجة:
MOV #40000,R0 1: CLRB 37777(R0) ; (37777+R0) SOB R0,1
إذا كانت هناك حاجة إلى سرعة عالية ، فمن الأفضل مسح الذاكرة ليس بالبايت ، ولكن على الفور بالكلمات. سيكون أسرع مرتين. لكن يمكنك التعجيل بما يتجاوز ذلك: لسبب ما ، يكون أمر CLR أبطأ من MOV. لذلك:
CLR R2 ; R2 MOV #40000,R1 ; MOV #20000,R0 ; 1: MOV R2,(R1)+ ; , R1 SOB R0,1 ;
الآن ، باختيار إحدى الطرق الأربع لمسح الشاشة ، يمكنك بالفعل تعيين نقاط. في وضع اللون ، تقابل كل نقطة جزئين. في أحادية اللون ، بت واحد. لا يحتوي BC على برنامج تبديل أوضاع الشاشة. إلى أي ناتج قمت بتوصيل الشاشة ، تلقيت هذه الصورة.
للتوضيح ، نكتب ألوان النقاط في نظام الأرقام الثنائية:
MOVB #0b00001100,@#50010 MOVB #0b00110000,@#50112 MOVB #0b11000000,@#50313
يتم تشفير
الألوان في كل زوج من وحدات البت كما يلي: إذا تم تعيين بتات فقط - نقطة خضراء ، فقط بت غريبة - أزرق ، تم تعيين كلتا البتات - أحمر ، تم إعادة ضبط كلتا البتات - أسود. حسنًا ، تُظهر الشاشة أحادية اللون كل قطعة كنقطة منفصلة.
يكتب أمر MOVB 4 نقاط إلى الذاكرة التي تظهر على الشاشة في وقت واحد ، ويكتب أمر MOVB 8 نقاط. إذا كنت لا تريد التأثير على النقاط المجاورة ، استخدم الأمرين BIC (Bit Clear) و BIS (Bit Bit) ، على سبيل المثال:
BICB #0b00001100,@#50112 ; BISB #0b00000100,@#50112 ;
نقطة مثيرة للاهتمام: في النص نكتب أقل البتات أهمية على يمين الأكثر أهمية. وعلى الشاشة ، على العكس: تظهر النقاط المقابلة لأقل البتات أهمية على اليسار.
هذا ، في الواقع ، هو كل شيء عن جهاز الذاكرة على الشاشة BK 0010.
ولكن ماذا عن
إخراج النص ؟
MOV #Text,R1 ; EMT 20 ; HALT ; Text: .ASCII “Hello, World!” .BYTE 0 ;
اظهار المصدر!

سيكون من الأسهل البدء من خلال النظر في الكود المصدري للعروض التوضيحية النهائية:
In Your Space - demo لـ Covox ، مصادر في الأرشيف.
جيد أبل - مصادر على GitLab (مشروع متعدد الملفات المعقدة).
EIS هو محاكي لتعليمات الحساب الموسعة مع أكواد المصدر.
مصادر ثلاثة 256 بايت تجريبية.
في العدد الثامن والعشرين من مجلة
Downgrade ، مقال كبير عن تطور خوارزميات الموسيقى الخاصة بالتتبع في BC 0010 ، مع أجزاء البرنامج والشروحات التفصيلية. حكاية الحنين من demoscene المبكر للإقلاع.
متى تبدأ؟
الآن بعد 4 أسابيع في كازان ستعقد demopati
CAFe 2019 . يحتوي برنامج المهرجان على مسابقة
BK 0010 - 512 بايت . يناسب هذا الحجم 85 إلى 256 تعليمات - مثالية للمبتدئين. أسبوعين يكفي بالنسبة لك للتعامل مع الأدوات وكتابة أول عرض بسيط. بعد ذلك ، سيظل هناك أسبوع ونصف لكتابة عمل ثاني أكثر جدية.
المضي قدما ، يمكنك!
دردشة برقية ، منتدى
zx-pk - سيساعدك كل مكان. إرسال العمل إلى المسابقة ، والأفضل من ذلك تأتي نفسك.
المشهد حي !