أعمالي لـ Outline 2020

في الفترة من 22 إلى 24 مايو ، يتم إجراء تصويت عبر الإنترنت لديموباتي 2020. تم التخطيط للحدث في مايو من هذا العام ، ولكن تم تأجيله إلى أكتوبر لجميع الأسباب المعروفة.
سأتحدث عن عملي


لا أتذكر عندما وجهت الانتباه إلى المسابقة التمهيدية الصغيرة 128 بايت ، لكني أحاول المشاركة كل عام. يتم التحضير للمنافسة مقدمًا ، بالنسبة لعام 2020 ، كانت الخطط تعمل على ZX Spectrum و Atari XE ، ولكن في وقت لاحق تغيرت الخطط. سأبدأ مع Apple II:

هيريس ووك




يعجبني هذا الكمبيوتر ، إنه جذاب لأنه سيستغرق الكثير من الجهد لحل المشكلات البسيطة. كانت المهام: استنساخ الصوت ، عمليات القرص ، الرسومات ، مترجم SWEET-16.
رسومات Apple II هي وضعان - LoRes بدقة 40 × 48 و 16 لونًا واستئجارًا بدقة 280 × 192 6 ألوان.

ستبدو دراسة هيكل الشاشة غريبة ، ربما يرجع هذا التنسيق إلى حقيقة أن Wozniak ، عند تصميم جهاز كمبيوتر ، محفوظة على جميع الرقائق المتاحة. كان التعامل مع وضع النص و LoRes سهلًا بالنسبة لي ، ولكن كان وضع HiRes مسدودًا. ستتطلب أي عمليات على الشاشة أقسامًا من التعليمات البرمجية لن تسمح للمقدمة بالتناسب مع حجم 128 بايت. لذلك قررت الغش باستخدام الإجراءات المتاحةوجرب يدك. كانت الفكرة بسيطة: ارسم خطًا يترك علامة.

أي شخص كتب شيئًا مشابهًا للعبة pong يعرف الخوارزمية. بالنسبة للمقدمة ، تحتاج إلى البيانات X1 و dx1 و dxe / Y1 و dy1 و dye. X1 ، Y1 - الإحداثيات الحالية ، dx1 ، dy1 تحدد اتجاه الحركة ، dxe ، صبغ - ضبط حد الإحداثيات. باستخدام مجموعة البيانات هذه ، يمكنك استخدام إجراء واحد للإحداثيات (X1 ، Y1) ، (X2 ، Y2) ، أو للخط الأبيض الأول.

يبقى لجعل أثر. جاءت الفكرة من تلقاء نفسها: لقد كتبت برنامجًا ، وقمت بتشغيله 16 مرة مع المصحح وأخذت البيانات الجاهزة - زوج (X3 ، Y3) و (X4 ، Y4) سيعملان على رسم خط أسود. اتضح أن النقاط (X1 ، Y1) ، (X2 ، Y2) تتحرك على طول مسار معين ، و (X3 ، Y3) ، (X4 ، Y4) تتبعها ، ولكن مع بعض التأخير. العمل النهائي - نقل البيانات اللازمة للعنوان 0 ، وبالتالي يتم حفظ حجم الكود بسبب عنونة الصفحة الصفرية.

سوف يتذمر أصحاب الكمال أن الخط لا يلمس الزاوية اليمنى ، لكنني سأحصل على العذر المُعد. تبلغ دقة الشاشة 280 نقطة ، لذلك تم تغيير الرمز لمعالجة بيانات 16 بت ونمت المقدمة من 128 بايت إلى 256 بايت.

هالتون




هذه نسخة جديدة من العمل السابق ، قررت تغيير مدخلات السمات حسب الملمس. زادت 47 بايت إلى 128 ، وكان الباقي مشغولًا بتوليد الملمس وعرضه. هناك عيب واحد - المقدمة بطيئة ، ولكن لا يمكنك القفز وراء 128 بايت.

سباركس




جاءت فكرة مقدمة من تلقاء نفسها ، وقررت كتابة التعليمات البرمجية ومعرفة ما يحدث. أصبحت المقدمة بسيطة - يتم استخدام وضع نص قياسي مع إعدادات إضافية. Atari لديه وضع رسومات GTIA ، ويسمى GRAPHICS 9. بالمناسبة ، في BASIC يمكنك استخدام نفس الوضع. يتم تشغيله عن طريق تعيين بت 6 في موقع ذاكرة GRIOR (العنوان 623). في هذا الوضع ، يتم تفسير وحدات البايت العالية والمنخفضة على أنها قيمة سطوع اللون (0-15).
ومن الأمثلة على ذلك البرنامج (Turbo BASIC).
صورة

نتيجة العمل
صورة

وفي وضع النص ، بعد كتابة POKE 623.64 ، تبدو الشاشة كما يلي
صورة

بالنسبة لوضع النص ، الأحرف التي تبدو مستطيلات السطوع 0-15.

بالنسبة لـ Atari ، يوجد ترميز أحرف ATASCII ، الترتيب على الجدول
صورة

ولكن ، بالإضافة إلى الترميز ، هناك أيضًا رمز أحرف داخلي:
صورة

اكتب في TurboBasic
POKE DPEEK(88),1
في الزاوية اليسرى العليا يظهر "!"

يُستخدم هذا الترقيم لوصف الخط - 8 بايت للمساحة ، ثم 8 بايت لـ "!". في BASIC ، يتم تخزين عنوان الخط في الخلية 756 (CHBAS) ، تحتاج إلى ضرب القيمة في 256. بالإضافة إلى ذلك ، العنوان 756 هو قيمة الظل لـ D409 دولارًا.

تم تشكيل الخطوط للوضع المحدد: 8 قيم $ 00 ، 7 قيم $ 11..8 قيم $ FF. حصلنا على أحرف برموز 0-15 وبسطوع 0-15.

تبين أن خوارزمية الإجراء بسيطة: النسخ سطريًا وخفض القيمة بمقدار 1 إذا تم العثور على رمز آخر غير 0.

سماليفي 4




العمل مزحة. لقد قرأت مقالة الدوائر Serepindipitous في مجلة BYTE ، أغسطس 1977 ، المجلد 2 N8 ، وقررت تجربة الشفرة. ومرة أخرى ، ظهرت مقدمة صغيرة من 48 بايت. لم أكن أرغب في إظهار العمل النهائي ، لذلك قمت بتغيير الرمز وخيارات الرسم بحيث يتم رسم شكل مشابه بمربع في المنتصف. إجمالي 128 بايت.

Ufff. إذا كان تقديم مبادئ المقدمة يستغرق الكثير من الوقت مثل العمل على المقدمة؟ يعد الحصول على التأثيرات أمرًا ممتعًا للغاية ، كما أن تحسين الشفرة حسب الحجم أمر ممتع أيضًا. جرب يدك ، ماذا لو نجحت؟

All Articles