Turbo-BASIC XL

Turbo-BASIC XL هي نسخة محسّنة من لغة برمجة BASIC [ 1 ] لأجهزة أتاري ذات 8 بت . وهي نسخة متوافقة مع لغة أتاري BASIC التي كانت تُباع مع هذه الأجهزة. طُوّرت Turbo-BASIC XL بواسطة فرانك أوستروفسكي [ 1 ] ونُشرت في عدد ديسمبر 1985 من مجلة الكمبيوتر الألمانية Happy Computer . بعد ذلك بوقت قصير، صدرت نسخة لأجهزة 400/800 باسم Frost Basic 1.4 . وقد أصدر مطورون آخرون عدة نسخ معدّلة تعمل مع أنظمة DOS مختلفة.

يُحسّن Turbo-Basic XL سرعة التنفيذ بشكل كبير مقارنةً بـ Atari BASIC. فبرنامج Atari BASIC المُحمّل في Turbo-BASIC، دون أي تعديلات، يعمل عادةً بسرعة تتراوح بين ثلاثة إلى أربعة أضعاف. [ 1 ] كما يُنشئ مُصرّف Turbo-Basic XL ملفات تنفيذية ثنائية ، مما يُسرّع أداء البرنامج إلى حوالي عشرة أضعاف سرعة Atari BASIC. يتضمن Turbo-Basic XL أيضًا مُحرّرًا مُوسّعًا، ودعمًا للإجراءات المُسمّاة، وبنى كتلية مُشابهة، بالإضافة إلى إمكانية الوصول إلى المكونات المادية الأساسية، مما يسمح، من بين أمور أخرى، بتشغيل محركات الأقراص المرنةWHILE...ENDWHILE المُتصلة دون الحاجة إلى الخروج إلى نظام DOS .

سرعان ما حصل أوستروفسكي على وظيفة في شركة GFA Systemtechnik GmbH (المعروفة آنذاك باسم Integral Hydraulik ) حيث قام بتكييف Turbo-Basic XL إلى GFA BASIC لجهاز Atari ST ، والذي أصبح أحد أكثر لغات BASIC شيوعًا على تلك المنصة.

خلفية

أدى ضعف سرعة تنفيذ لغة أتاري بيسك [ 2 ] ، التي كانت تُشحن مع جميع طرازات أتاري ذات 8 بت ، إلى ظهور سوق لمترجمات ومُجمّعات لغة بيسك من جهات خارجية ، تتميز بأداء أفضل أو أوامر أكثر. من بينها نسخة رسمية من مايكروسوفت بيسك باعتها شركة أتاري، والعديد من النسخ المُحسّنة التي أصدرتها شركة أوبتيميزد سيستمز سوفتوير ، التي كانت قد طورت لغة أتاري بيسك الأصلية بموجب عقد. كما توفرت مُجمّعات لغة أتاري بيسك من عدة شركات.

كانت لغة Turbo-Basic XL إضافة متأخرة إلى هذه القائمة، حيث نُشرت لأول مرة في ديسمبر 1985 كبرنامج كتابة في مجلة Happy Computer . وقد صدرت بنسختين: مترجمة ومُجمِّعة. تستفيد Turbo-Basic XL من الذاكرة الإضافية لأجهزة سلسلة XL (وسلسلة XE اللاحقة)، مما حال دون تشغيلها على أجهزة 400 و800 الأصلية. وقد صدرت لاحقًا نسخة تدعم هذه الأنظمة باسم Frost BASIC (اختصارًا لـ "فرانك أوستروفسكي").

ترتبط الأوامر الداخلية المتعلقة بالقرص بإصدارات محددة من نظام التشغيل DOS. وقد توفرت عدة نسخ متوافقة مع إصدارات مختلفة من نظام التشغيل DOS.

أداء

كانت أبرز سمات لغة Turbo-Basic سرعتها المحسّنة بشكل ملحوظ؛ إذ كان برنامج Atari BASIC غير المعدّل الذي يتم تحميله في Turbo-Basic يعمل عادةً أسرع بثلاث إلى خمس مرات، [ 1 ] وتزداد هذه السرعة مع ازدياد حجم البرنامج. كما احتوت على مُصرّف يزيد من سرعة تنفيذ التعليمات البرمجية بمقدار 15 إلى 20 ضعفًا. [ 1 ] ويعود ذلك في معظمه إلى سلسلة من التحسينات التي أُدخلت على مشاكل معروفة في كود Atari BASIC الأصلي.

في معظم لغات BASIC، كان يتم التعامل مع أمر GOTO بقراءة رقم السطر المرتبط به ثم البحث عنه في البرنامج. أما في لغات BASIC المشتقة من MS، فكانت أرقام الأسطر تُخزن كأعداد صحيحة 16 بت وثوابت عددية في الكود بصيغة ASCII الأصلية . عند مصادفة سطر مثل " GOTO 10001000"، كان المفسر يستخدم شيفرة خاصة لتحويل الأحرف الأربعة "1000" من ASCII إلى عدد صحيح 16 بت، ثم يبحث عنه. لكن لغة Atari BASIC كانت تعمل بشكل مختلف، حيث كانت تحول جميع الثوابت العددية إلى صيغة الفاصلة العائمة 6 بايت عند إدخال السطر. هذا يعني أن "1000" لم يعد بصيغة ASCII، وكان لا بد من تحويله من صيغة الفاصلة العائمة إلى صيغة العدد الصحيح. لم تكن الشيفرة المستخدمة في هذه العملية مُحسَّنة بشكل جيد، وقد تستغرق أكثر من 2  مللي ثانية (بمعدل 1-1.5  مللي ثانية).

تُعدّ حلقات FOR...NEXT من البنى الشائعة في برامج BASIC. في معظم برامج BASIC، عند مصادفة جزء FOR أثناء التشغيل، يُضاف موقعه في الذاكرة ضمن الكود المصدري إلى مكدس الاستدعاءات ليسهل العودة إليه عند مصادفة NEXT المرتبط به. ولأسباب غير معروفة، كان برنامج Atari BASIC يُضيف رقم سطر FOR إلى المكدس، ثم يبحث في الكود بأكمله عن ذلك السطر عند مصادفة NEXT. بالنسبة للبرامج التي تستخدم حلقات تكرارية كثيرة، وهو ما يحدث غالبًا في BASIC، قد يُؤدي ذلك إلى انخفاض حاد في الأداء.

نفّذت لغة Turbo-Basic حلقات FOR باستخدام العنوان، كما هو الحال في MS BASIC، وبالتالي نفّذت الحلقات بأداء مماثل تقريبًا لأداء MS. ثمّ طوّرت أداء أوامر GOTO بشكل كبير أيضًا. كانت أرقام الأسطر تُرسل إلى دالة تجزئة تُقسّمها إلى أجزاء من 256 سطرًا. عند بدء تشغيل البرنامج، كان يُخزّن عنوان أول سطر من كل جزء في جدول من 128 قيمة. أثناء التشغيل، عند الحاجة إلى البحث عن رقم سطر، كانت اللغة تختار أولًا أقرب قيمة (أقل قيمة) في الجدول، ثم تسترجع العنوان، وتبدأ البحث عن السطر من تلك النقطة. كان هذا التحسّن ملحوظًا بشكل خاص في البرامج الكبيرة حيث كان وقت البحث مكلفًا بشكل متزايد، ولهذا السبب استطاعت Turbo-Basic تحقيق زيادة تصل إلى 5 أضعاف في البرامج الكبيرة.

كان السبب الرئيسي الآخر لضعف أداء لغة أتاري بيسك هو بطء نظامها الحسابي العشري المشفر ثنائيًا (BCD) الخاص بالنقاط العائمة . فقد كُتبت المكتبة ، الموجودة في ذاكرة قراءة فقط (ROM) منفصلة سعتها 2 كيلوبايت، والتي تُعتبر جزءًا من نظام التشغيل وليس جزءًا من لغة بيسك نفسها، على عجل ولم تُحسّن أبدًا. وكانت بعض الإجراءات، ولا سيما دوال الضرب والأسس، أبطأ بكثير مما ينبغي.

عالجت لغة Turbo-Basic هذه المشكلة بتضمين مكتبة كاملة خاصة بها للحسابات العشرية، مما لم يقتصر على حل العديد من هذه المشكلات فحسب، بل ساهم أيضًا في تحسين أداء البرنامج بشكل أكبر من خلال فكّ الحلقات الصغيرة. بالنسبة للبرامج التي تستخدم الرياضيات بكثافة، أدت المكتبة الجديدة إلى تحسينات هائلة في الأداء، حيث انتقلت أجهزة أتاري من أسفل قوائم معايير Creative Computing إلى أعلى القوائم، متفوقةً على عدد من الأجهزة التي كانت أسرع منها بكثير من حيث المواصفات التقنية.

ميزات جديدة

من بين الميزات الإضافية لبرنامج Turbo-Basic XL، الذي تمت إضافته إلى Atari BASIC، ما يلي:

انظر أيضاً

مراجع

  1. 1 2 3 4 5 ليندينو، جيمي (17 أغسطس 2023). الاختراق:  كيف حددت حواسيب أتاري ذات 8 بت جيلاً . دار ستيل جير للنشر. ISBN 978-1-957932-04-0.
  2. أهل، ديفيد (نوفمبر 1983). "اختبار مقارنة المعايير" . الحوسبة الإبداعية . ص 260.