Azure DevOps للكومودور 64؟



لقد كنت من أشد المعجبين بـ Azure DevOps منذ أيامه الأولى ، عندما كان لا يزال يطلق عليه Visual Studio Online. أستخدمه لأغراض مهنية وشخصية ،
وأوصي به لعملائي الاستشاريين.

ومع ذلك ، بغض النظر عن مدى الثناء على هذه المنصة ، فمن الصعب غالبًا إقناع مطوري Node أو Java بأن Azure DevOps ستفعل بشكل جيد في مشاريعهم ، ليس أسوأ من .NET. بغض النظر عن عدد المظاهرات والعروض التقديمية التي تدحض الأحكام المسبقة ، يوجد في أي مجموعة أشخاص يعتقدون اعتقادًا راسخًا أن ADO غير مناسب لهم ، لأنه "أداة من Microsoft".

وبغض النظر عن الجدل الفلسفي ، يمكنني أن أشرح معظم المقاومة من خلال الافتقار إلى فهم كيفية تطور Azure DevOps من سابقتها Team Foundation Services (TFS) ، وأصبحت أفضل مجموعة أدوات في فئتها قادرة على دعم المشاريع من أي حجم "بأي لغة وأي منصة ". السؤال هو ، كيف يمكنني إثبات ذلك بشكل نهائي؟

لقد لعبت حول هذه الفكرة قليلاً ، ثم فجر لي. يجب القيام بالإثبات دون إنشاء عرض CI / CD آخر للخدمات الصغيرة SpringBoot التي تم نشرها لـ Kubernetes على AWS - يجب أن يتم ذلك باستخدام نهج أكثر غرابة.

والآن شيء مختلف تمامًا


ماذا لو توقفنا عن التركيز على اللغات والمنصات الحديثة وانتقلنا إلى الأمام قبل 30 عامًا لمعرفة ما إذا كان يمكن استخدام الأدوات الحديثة و ADO لتطوير الوحدات وإنشائها وتقسيمها وتنفيذ برنامج مكتوب لمنصة كمبيوتر 8 بت؟

كما هو الحال في العروض التوضيحية الأخرى لـ ADO التي قمت بإنشائها في الماضي ، أردت عرض منتج نهائي تمامًا - بدءًا من تحرير الشفرة ، والتحقق منها ، وما إلى ذلك ، وصولًا إلى البيئة الحية حيث يمكنك مشاهدة التغييرات.

من الناحية النظرية ، بدا كل هذا جيدًا ، لكن السؤال الحقيقي كان - من أين نبدأ؟ من الواضح أن هذا لم يكن مثل هذا الموقف الذي يمكنك فيه تشغيل StackOverflow بحثًا عن أمثلة سابقة. ومع ذلك ، بعد أن ناقشت الفكرة مع الأصدقاء والزملاء (قرروا جميعًا أنني انتقلت) ، بدأت في صياغة فكرتي.

قررت أن البرنامج التجريبي يجب أن يكتب في كود الجهاز 8 بت لـ Commodore 64 باستخدام محرر VS Code. سيتم معالجة المصدر من قبل مستودع Git على ADO ، وسيكون خط الأنابيب CI / CD مسؤولاً عن الإنشاءات والوحدات والتنفيذ في Azure. لقد بدأت بالفعل في الشك في أن أصدقائي كانوا على حق ، وسقفي قد اختفى بالفعل ، ولكن لا تزال هذه الفكرة تبدو تحديًا مثيرًا للاهتمام.

اختيار المحرر


يعلم الجميع القول حول اختيار الأداة المناسبة لوظيفة معينة. ينطبق هذا على الأعمال المنزلية وإصلاح السيارات وكتابة التعليمات البرمجية.

بصفتي مطور .NET ، أقضي معظم وقتي في Visual Studio 2017. إذا كنت بحاجة إلى التبديل إلى مشروع Java أو كتابة برامج Android أصلية ، فأنا أبدأ IntelliJ أو Android Studio على التوالي. أي محرر يجب أن أستخدمه لكود جهاز C64؟

هل تريد - صدق أو لا تصدق - ولكن اليوم هناك العديد من المحررين الجيدين المناسبين لكتابة CBM. لقد لعبت مع بعضهم ، ولكن في الواقع أردت استخدام Visual Studio Code. لقد استخدمت VS Code لمشاريعي الأخرى ، وبدا لي مرنًا للغاية ومريحًا ، وكان وجود التكامل المدمج مع git إضافة لطيفة.

كان الجانب السلبي لهذا الحل هو أنني يجب أن أضحي بالتمييز في بناء الجملة في المجمع 6510 ، وسوف أحدق فقط في النص الأسود على خلفية بيضاء. هذا الموقف لا يتوافق مع بياني حول "الأداة الصحيحة".

فجأة ، قررت الذهاب إلى Visual Studio Marketplace ، ومعرفة ما إذا كان هناك بالفعل أي ملحق لـ VS Code مناسب لحل مشكلتي. لقد فوجئت بسرور عندما وجدت هناك العديد من الإضافات المصممة للعمل في المجمع. لسوء الحظ ، لم يتم سجن أي منهم بسبب مجمع ACME Cross الذي اخترته للمشروع.

هذا لم يمنعني ، وعدم رغبتي في استعادة الجوانب أحادية اللون من تطوير الثمانينيات ، دفنت نفسي في وثائق إنشاء ملحقات لـ VS Code. بعد بضعة أيام ، سررت بإصدار النسخة الأولى من الامتداد لـ Visual Studio Marketplace.

وتبين أن هذا التمرين مفيد أكثر مما بدا في البداية.

في وقت من الأوقات ، لم أركز على كتابة البرامج في المجمع. حاولت عدة مرات دراستها ، لكنني شعرت عادة بالملل أو الانزعاج ، وانتقلت إلى شيء آخر. بعد إنشاء المكون الإضافي ، لم أتعلم فقط حول آليات إنشاء امتدادات لـ VS Code ، بل اكتسبت أيضًا فهمًا جيدًا لبناء الجملة الغامض ورموز التشغيل.

مسلحًا بمحرر مناسب وبعض كتب البرمجة القديمة من الثمانينيات ، بدأت في كتابة التعليمات البرمجية. بسرعة كبيرة ، حصلت على برنامج عمل لاستيراد ملف موسيقى بتنسيق SID وتشغيل إصدار 8 بت من Beatles عندما أكون 64 أغنية (هذه نكتة قديمة لمستخدمي Commodore ، ولكن يبدو أنها مناسبة لهذا المشروع فقط).



حتى الآن ، قمت بتجميع البرنامج واختباره على جهاز كمبيوتر محمول. تم تخصيص شفرة المصدر لمستودع git ، لذا كانت الخطوة التالية هي الحاجة إلى إنشاء بنية للتكامل المستمر.

إحدى قدرات ADO المثيرة للإعجاب هي قدرتها على التعامل مع أي موقف CI / CD تقريبًا. توفر الخدمة العديد من المهام المحددة مسبقًا ، مما يتيح لك إنشاء سلاسل CI / CD بسرعة لمعظم المشاريع الحديثة بنقرات قليلة.

إذا لم تكن احتياجاتك جزءًا من الخدمة الأساسية ، فسيوفر لك Marketplace عادةً العديد من الأدوات المناسبة المختلفة. إذا لم يفلح ذلك ، يمكنك رسم برنامج نصي PowerShell يقوم بالعمل الذي تحتاجه.

كانت المشكلة الواضحة للمشروع أنه على الرغم من النطاق الواسع لميزات الخدمة ، إلا أن التصوير المجمع والتجميع لـ Commodore 64 لم يكن موجودًا ببساطة. بالطبع ، يمكنني إنشاء جهاز افتراضي خاص في Azure بالأدوات التي أحتاجها ، أو اتباع مسار PowerShell ، ولكن هل سيكون ذلك مثيرًا للاهتمام؟

أنا أيضًا لا أحب الأجهزة الافتراضية في السحابة ، وفي هذا التمرين أردت استخدام Hosted Agents ، لذلك كان لدي خيار واحد فقط. ولإثبات الغرض المقصود من التمرين بأكمله ، قررت أنه سيكون من الأفضل إنشاء الامتداد الخاص بي للتعامل مع جميع هذه المهام.

ملحق ACME Cross-Assembler


كان التمديد الأول المطلوب لسلسلة CI الخاصة بي هو تجميع كود المجمع الخاص بي في رمز آلة C64. للقيام بذلك ، كنت بحاجة إلى تثبيت المجمع المجمع على أحد وكلاء البناء المستضافين.

Assembler هو برنامج يقوم بتحويل لغة التجميع التي يمكن قراءتها من قبل الإنسان إلى رمز آلة حقيقي تم تصميمه لمعالج ثنائي محدد. عادة ، يتم إنشاء رمز الجهاز للمعالج المستخدم في الجهاز الذي يعمل عليه. يأخذ المجمع المجمع الخطوة التالية في تحويل الشفرة ، مما يسمح لك بإنشاء رمز آلة لمعالج آخر.

كما ذكرت ، في مشروعي ، اخترت ACME Cross-Assembler ، لأنه موصى به لتطوير Commodore. كما أنها تدعم مجموعة واسعة من المشاريع الأخرى ذات 8 بت ، مثل نظام Nintendo Entertainment أو عائلة Atari باستخدام معالجات 65xx.

استغرق مني معظم اليوم ، استنادًا إلى الوثائق والأمثلة المقدمة من Microsoft ومصادر أخرى ، لكتابة والتحقق والنشر في Marketplace نسخة عمل من الامتداد.

عند بدء التشغيل ، تقوم المهمة تلقائيًا بتنزيل أحدث إصدار من ACME Cross-Assembler وتقوم بتشغيله بخيارات تتيح لك إنشاء الملف النهائي للنظام الأساسي المستهدف. واحدة من المزايا المرتبطة باختيار ACME هي أن معظم المعلمات لبناء البرنامج مدمجة في شفرة المصدر ، مما قلل من كمية المدخلات التي تحتاج إلى تعريفها في الامتداد.

هل لديها قرص مرن على سبيل الاعارة؟


الخطوة التالية في السلسلة هي نقل البرنامج إلى تنسيق وسائط متوافق مع Commodore 64 ، أي وضعه على قرص مرن. لا يواجه المطورون أيضًا مثل هذه المشكلة في الحياة اليومية. لحسن الحظ ، توجد تطبيقات منفصلة لهذه المهمة.

VICE هو المحاكي الأكثر شعبية في Commodore. ليس لديها فقط العديد من المحاكيات لكل من نماذج Commodore المختلفة ، ولكن أيضًا العديد من الأدوات المفيدة ، بما في ذلك مدير القرص الظاهري c1541. يمكن استخدام صور القرص التي تم إنشاؤها باستخدامها مع المحاكي ، أو نسخها إلى الوسائط المادية (قرص مرن منخفض الكثافة مقاس 5 بوصات) ، أو تنزيلها على microSD واستخدامها مع محاكي محرك SD2IEC.

على عكس مهمة ACME ، التي تأخذ جميع الإعدادات من رأس الملف المصدر ، تعتمد الأداة المساعدة للقرص c1541 على CLI ، ولدى المستخدم العديد من الخيارات لإدارة القرص. بالنسبة لإضافتي ، قررت التركيز فقط على الخصائص اللازمة لمهمتي ، ولكن حتى ذلك الحين واجهت خيارًا يتعلق بمدى حاجتي إلى ذلك.

أصدر Commodore ثلاثة نماذج مختلفة لمحركات الأقراص ، تختلف في طريقة تعاملها مع وحدات تخزين القرص بناءً على التنسيق ونوع الوسائط. لا يمكن أن يعمل النموذج الأساسي ، المألوف لمعظم المستخدمين ، إلا مع محركات الأقراص أحادية الجانب بسعة 170 كيلوبايت (نعم ، كيلوبايت. اسأل والديك). يمكن أن يعمل النموذج الأحدث ، 1571 ، المستخدم في Commodore 128 ، مع محركات الأقراص ذات الوجهين ، والتي زاد حجمها إلى 340 كيلوبايت. قررت إضافة مرونة إلى الامتداد ، لذلك أضفت دعمًا لتنسيقات القرص المختلفة كإعداد ، والذي يمكن تحديده في الواجهة عبر القائمة المنسدلة.

نظرًا لأن لدي بالفعل مثال عملي ، فإن إنشاء هذا الامتداد كان أسرع كثيرًا. لقد تعلمت شيئًا جديدًا سمح لي بتحسين رمز ملحق ACME أيضًا.

كما في حالة المجمع المجمع ، يتم تنزيل البرنامج المطلوب من مستودع المشروع مفتوح المصدر وتثبيته في وكيل البناء. تقوم المهمة بإنشاء صورة قرص بالتنسيق المطلوب ، ثم يتم نسخ الملف من مهمة الإنشاء إليها. يتم نقل الملف الناتج إلى دليل Build Artifacts ، حيث يمكنك تنزيله.



ما الذي اتضح - الكثير من العمل ، ونتيجة لذلك تحتاج إلى تنزيل الملف؟ يجب أن تكون هذه المادة التدريبية CI / CD. إذا كنا بحاجة إلى إثبات موقفنا ، فنحن بحاجة إلى نشر البرنامج على الجهاز حتى يمكن استخدامه كعرض توضيحي.

تم تعطيل Floppinet


يعد تشغيل إصدارات كمبيوتر كومودور 64 ومحرك 1541 أمرًا نادرًا ، ناهيك عن كونه كبيرًا وثقيلًا. بالإضافة إلى ذلك ، لا يمكنهم عرض الصور على الشاشات الحديثة بدون محولات خاصة ، وهذا يحد بشكل كبير من فعالية العرض التوضيحي.



كان جهاز Commodore SX-64 (أول كمبيوتر ملون "محمول" يتم تصنيعه على دفعات كبيرة) مزودًا بشاشة مدمجة ، ولكن كان حجمه تقريبًا حجم حقيبتي المحمولة ويزن حوالي 10 كجم. تخيل كم سيكون من الصعب المرور عبر خدمة أمن المطار مع مثل هذا الوحش؟

جهاز C64 Mini الذي تم إصداره مؤخرًا صغير بما يكفي للسفر معه ، والقدرة على تنزيل البرامج من USB ومخرج HDMI. في بعض الحالات ، سيكون هذا خيارًا واحدًا. لكنه لا يزال لا يحقق الهدف المنشود.

المشكلة الحقيقية ليست قابلية الحديد ، ولكن عدم وجود الأتمتة. لا تكشف الحاجة إلى نقل البرنامج من كمبيوتر محمول إلى سيارة باستخدام محرك أقراص محمول بالكامل قدرات ADO في العرض التقديمي.

الخيار بدون خادم


كما ذكرت ، VICE هو المحاكي الأكثر شعبية لـ Commodore. تم نقله إلى Windows و Linux و Mac OS X و MS-DOS والعديد من أنظمة التشغيل الأخرى. ومع ذلك ، بالنسبة للتطوير السحابي ، سيتطلب هذا الخيار تكوين VM كمضيف ، وأردت أن أحصل على حل لا يتطلب خادمًا.

إلى جانب الإصدارات المذكورة ، يحتوي VICE على خيار لجافا سكريبت يعمل بشكل جيد في معظم المتصفحات. على الرغم من أن تطوير الواجهة الأمامية ليس عنصري ، فقد تمكنت من إفساد صفحة جيدة الاستجابة.



لتنظيم سلسلة الإصدار ، أقوم بتحميل ملف يحتوي على صورة قرص إلى دليل في نفس المستودع. لقد ربطت هذا بالاتصال بتطبيق Azure Function ، الذي يعرض قائمة بالصور المتوفرة على القرص. يؤدي تحديد أحدها من القائمة المنسدلة إلى تحميله وتشغيله تلقائيًا في محاكي JavaScript.

لا يعمل النظام مع برنامجي فقط ؛ لقد تمكنت من إنشاء سلسلة لنشر البرنامج وتشغيله على Commodore 64 BASIC.

10 PRINT "HELLO WORLD"
20 GOTO 10


ننتهي


DevOps للكومودور 64؟ إنه أمر لا يمكن تصوره!



لا يقتصر معنى هذا التمرين فقط على أنه عندما يقولون عن Azure DevOps أنه يدعم "أي لغة وأي نظام أساسي" ، فإنهم لا يعنيون فقط كل ما يتعلق بـ Microsoft (على الرغم من أن إصدار BASIC لـ Commodore تم شراؤه بموجب ترخيص من مايكروسوفت). إنه يصرف انتباهنا عن التركيز على الجوانب التكنولوجية ويجعل الناس يتجاوزون الإطار الاصطناعي الذي عينوه لأنفسهم.

بغض النظر عن الأعذار ، غالبًا ما تكون عبارات مثل "هذا لن يعمل هنا" بمثابة عبارات "كنا دائمًا نفعل ذلك بهذه الطريقة ، لماذا نغير شيئًا ما". تظهر كلتا العبارتين عدم الرغبة في النمو والتطور والتكيف مع المشهد التكنولوجي المتغير باستمرار والتغلب على التحديات التي تفرضها هذه التغييرات السريعة والعدوانية.

DevOps ليست أدوات. الأدوات في النهاية هي مجرد وسيلة لتحقيق الغاية ، بغض النظر عمن ينشرها.

من أجل أن تكون DevOps ناجحة للمؤسسة ، من الضروري تغيير طريقة التفكير وتطوير ثقافة شركتنا. نحن بحاجة إلى قبول الكثير من الأفكار الجديدة ، وإعادة التفكير فيما نعتقد أننا نعرفه ، والابتعاد عن أفكار مثل "هذا لن ينجح هنا" ، لأننا لم نجرب هذا من قبل.

إن إنشاء سلسلة CI / CD لجهاز كمبيوتر عمره 30 عامًا لا قيمة له بالنسبة للأعمال ، باستثناء توضيح وجهة النظر هذه بوضوح.

Source: https://habr.com/ru/post/ar430414/


All Articles