الرمز الأساسي

ادعاء شركة BASICODE " الإسبرانتو لأجهزة الكمبيوتر"، من المنشور الألماني الشرقي radio fernsehen elektronik .

كان مشروع BASICODE مشروعًا حاسوبيًا يهدف إلى إنشاء معيار موحد للغة البرمجة BASIC . كانت لغة BASIC متوفرة على العديد من أجهزة الكمبيوتر المنزلية الشائعة ، ولكن كان هناك عدد لا يحصى من الإصدارات التي كانت في الغالب غير متوافقة مع بعضها البعض. بدأ المشروع في عام 1980 بواسطة برنامج Hobbyscoop الإذاعي التابع لمؤسسة Nederlandse Omroep Stichting (NOS) الهولندية .

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

الرمز الأساسي

الوضع في بداية ثمانينيات القرن العشرين

كومودور 64
أتاري 800 إكس إل

من أواخر السبعينيات إلى أواخر الثمانينيات، شاعت الحواسيب المنزلية التي تعتمد على معالجات 8 بت. ومن أشهرها في الولايات المتحدة الأمريكية: TRS-80 ، و PET 2001 ، و VIC-20 ، و Commodore 64 ، وحواسيب Atari 8 بت . أما في أوروبا، فكانت هناك أيضًا ZX80 ، وZX81 ، و ZX Spectrum ، وحواسيب Acorn/BBC الصغيرة، والعديد من أنظمة Amstrad، و Dragon 32/64 من Dragon Data، وعائلة KC85 التي لاقت رواجًا في ألمانيا الشرقية . معظم هذه الحواسيب كانت مزودة بمعالج MOS Technology 6502 أو Zilog Z80 ، أو أحد مشتقاتهما. وكانت معظمها مزودة بذاكرة وصول عشوائي (RAM ) لا تقل عن 16 كيلوبايت (أو قابلة للترقية إليها)، مع أن العديد منها كان مزودًا بذاكرة أكبر بكثير. كما احتوت معظمها على منافذ لتوصيل مشغل أشرطة الكاسيت، أو على منفذ مدمج لتخزين البيانات، ومترجم لغة BASIC يُخزن عادةً في ذاكرة القراءة فقط (ROM) . إن منحنى التعلم السهل للغة BASIC، التي تم تصميمها مع وضع الوافدين الجدد إلى البرمجة في الاعتبار، والتوافر الفوري للغة على جميع هذه الحواسيب، أدى إلى قيام العديد من المستخدمين بكتابة ومشاركة برامجهم الخاصة.

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

المعيار الأول

سينكلير زد إكس سبكتروم

في عام ١٩٧٩، بدأت هيئة الإذاعة الهولندية NOS بث برامج الحاسوب عبر الراديو. ولأن البرامج والبيانات كانت تُخزن صوتيًا على أشرطة كاسيت، كان من الممكن تسجيل البث على شريط وتحميله إلى الحاسوب لاحقًا. مع ذلك، وبسبب المشاكل المذكورة سابقًا، كان لا بد من تكييف البرنامج ليتوافق مع مجموعة متنوعة من الحواسيب الشائعة وبثه عدة مرات. ولأن كثافة البيانات في شريط الكاسيت منخفضة جدًا مقارنةً بوسائط التخزين الحالية، استغرق تسجيل البرامج وقتًا طويلًا، ولم يكن بالإمكان بث سوى عدد محدود من البرامج في كل حلقة. لذا، كان بث نسخ مختلفة من البرامج نفسها أمرًا مزعجًا للغاية. [ ١ ]

في عام ١٩٨٢، قرر المسؤولون التنفيذيون في شركة NOS تطوير تنسيق بيانات موحد. وقد تم تطوير تطبيق خاص بكل طراز حاسوب، يُسمى Bascoder ، لإدارة استرجاع وتخزين البرامج والبيانات بهذا التنسيق الموحد من أشرطة التسجيل. كانت NOS تبث برامج Bascoder، كما كان بالإمكان شراؤها من الشركة على أشرطة كاسيت ومشاركتها مع الأصدقاء والمعارف. كان هذا التنسيق، المحمي بشكل ممتاز ضد التداخل، قابلاً للقراءة والكتابة بواسطة العديد من أنظمة الحواسيب المنزلية الشائعة. كما أتاحت متانة هذا التنسيق إمكانية البث عبر موجات الراديو المتوسطة ، مما زاد من نطاق التغطية وبالتالي عدد المستخدمين المحتملين. فعلى سبيل المثال، كان بالإمكان استقبال البيانات التي تبثها محطة إذاعة هيلفرسوم الهولندية في أجزاء واسعة من جمهورية ألمانيا الديمقراطية .

الرمز الأساسي 2

ZX81
أبل 2

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

لتحقيق ذلك، تم حجز جميع أسطر البرنامج التي تقل عن 1000 لبرنامج Bascoder، ولم يكن بإمكان برامج BASICODE البدء إلا من السطر رقم 1000. وكانت الإجراءات الفرعية لبرنامج Bascoder في الأسطر التي تقل عن 1000 تُستدعى باستخدام الأمر GOSUB . [ 1 ] وتم تمرير الوسائط اللازمة إلى برنامج Bascoder باستخدام متغيرات خاصة مُعرَّفة مسبقًا ومحجوزة لاستخدامه. واحتوى المعيار على عدد من القواعد الإضافية التي فرضتها قيود بعض طرازات الحواسيب. على سبيل المثال، في حاسوب من سلسلة KC، لا يمكن أن يتجاوز طول سطر التعليمات البرمجية 60 حرفًا. وكان لا بد من تطبيق هذه القيود على جميع برامج BASICODE لضمان استقلالية النظام الأساسي، لأن برنامج Bascoder كان يُفسَّر بواسطة نفس مُفسِّر لغة BASIC الخاص بالحاسوب الذي يُفسِّر برنامج BASICODE نفسه.

وهكذا، تم تحميل برامج Bascoder على مختلف الحواسيب كبرامج عادية، وعند تشغيلها، وفرت إجراءات إضافية للإدخال والإخراج القياسي والكاسيت. لم تكن البرامج المكتوبة بلغة BASICODE قابلة للاستخدام إلا بعد تحميل برنامج Bascoder وتشغيله. مع ذلك، في بعض الحواسيب، كان من الممكن دمج برامج BASICODE مع إجراءات Bascoder وحفظها بتنسيق البيانات الأصلي. لم يعد البرنامج الناتج مستقلاً عن النظام الأساسي، ولكن نظرًا لكثافة البيانات العالية لمعظم التنسيقات الأصلية، كان من الممكن تحميله أسرع بكثير من البرنامج نفسه بتنسيق BASICODE. أيضًا، نظرًا لعدم ضرورة تحميل برنامج Bascoder بالكامل لتشغيل البرنامج، ظلت مساحة أكبر من ذاكرة الوصول العشوائي (RAM) متاحة أثناء التشغيل.

كانت هناك برامج ترميز BASICODE 2 لأجهزة Exidy Sorcerer و Colour Genie و PET و VIC-20 و Commodore 64 و Amiga و ZX81 و ZX Spectrum و Sinclair QL و Acorn Atom و BBC Micro و Electron و TRS-80 و MSX و Oric Atmos و P2000T و Grundy NewBrain و Amstrad CPC و IBM PC و Apple II و TI-99/4A و Aquarius وغيرها. بالإضافة إلى ذلك، تمكن المستخدمون المتقدمون من كتابة برامج ترميز خاصة بهم لأنظمتهم المفضلة، نظرًا لأن معيار اللغة وتنسيق البيانات كانا مفتوحين وموثقين بشكل جيد. وقد أتاح معيار BASICODE 2 تطوير برامج مستقلة عن المنصات ذات إمكانيات متقدمة (بالنسبة لتلك الفترة). علاوة على ذلك، استُخدمت لغة BASICODE لنقل ومشاركة المعلومات، مثل أخبار عالم الحاسوب، عبر الراديو، في شكل ما يُسمى "المجلات". وبالمثل، يمكن أيضًا نقل دروس برمجة BASICODE وغيرها من الوثائق بهذه الطريقة.

BASICODE 3 / 3C

في عام 1986، طُوِّر معيار BASICODE 3 الجديد. [ 1 ] تمثلت أهم الإضافات في إجراءات للرسومات أحادية اللون البسيطة ، وقراءة البيانات وكتابتها من داخل البرامج، وإخراج الصوت. نُشر كتيبٌ عن اللغة، مرفقٌ بشريط كاسيت يحتوي على برامج Bascoder لمختلف الحواسيب الصغيرة. [ 3 ] ساهم BASICODE 3 في انتشار لغة BASICODE في أوساط الحواسيب في ألمانيا الشرقية، ومنذ عام 1989، بُثَّت برامج BASICODE عبر الراديو في جميع أنحاء البلاد. كما نُشر كتابٌ يتضمن أسطوانة فينيل تحتوي على برامج Bascoder لجميع الحواسيب الشائعة في ألمانيا الشرقية. [ 4 ] صدرت آخر نسخة من BASICODE، والتي تضمنت رسومات ملونة، تحت اسم BASICODE 3C في عام 1991.

نهاية برنامج BASICODE

ابتداءً من عام 1990 تقريبًا، تراجعت شعبية لغة BASICODE بسرعة بسبب ظهور الحواسيب ذات 16 و32 بت، مثل أتاري ST، وسي بي إم أميغا، وأكورن أرخميدس، بالإضافة إلى وفرة أجهزة الكمبيوتر المتوافقة مع IBM-PC. ورغم وجود برامج Bascoder لهذه الأجهزة، إلا أن BASICODE كانت محدودة للغاية بحيث لا تستغل الموارد التي وفرها الجيل الجديد من الحواسيب. ومع ازدياد تعقيد مكونات الحواسيب الجديدة، من حيث الأجهزة وأنظمة التشغيل والبرمجيات، أصبح العديد من المستخدمين غير قادرين أو أقل رغبة في كتابة برامجهم الخاصة. كما ساهم ظهور العديد من واجهات المستخدم الرسومية المتطورة ولكن غير المتوافقة ، وتراجع شعبية الحواسيب ذات 8 بت، في تقليل فائدة BASICODE، مما أدى إلى زوالها.

استمرت إذاعة دويتشلاندسيندر كولتور، خليفة إذاعة ألمانيا الشرقية (والتي أصبحت لاحقًا جزءًا من إذاعة دويتشلاندراديو الجديدة )، في بث برامج بلغة BASICODE حتى عام 1992 تقريبًا. ولم يُكتب النجاح لمعيار BASICODE 4 المُخطط له، إذ توقفت شركة NOS عن دعم المشروع بعد فترة وجيزة من إصدار BASICODE 3C. ولا يزال هواة BASICODE، وخاصةً مُحبي أجهزة الكمبيوتر ذات 8 بت، يستخدمونها لأسبابٍ تتعلق بالحنين إلى الماضي، ولكنها غير ذات جدوى عملية.

الأهمية التاريخية

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

تجدر الإشارة إلى أن لغة BASICODE، بحكم تصميمها، لم تكن قادرة على استغلال إمكانيات الحواسيب المضيفة بالكامل. فقد كان معيار اللغة الذي حددته BASICODE هو القاسم المشترك الأدنى بين جميع أنظمة الحاسوب ذات الصلة. تم التخلي جزئيًا عن هذا المفهوم مع إصداري BASICODE 3/3C فقط، حيث لم تكن بعض الحواسيب، أو بعض إصداراتها مثل ZX80 / ZX81 و KC87، قادرة على معالجة الرسومات والألوان، وبالتالي لم تكن الأجزاء الجديدة من BASICODE التي تستخدم هذه الإمكانيات قابلة للاستخدام عليها. وبالنسبة للتطبيقات التي تعتمد على التوقيت والرسومات أو الصوت، مثل ألعاب الفيديو ، كانت BASICODE أدنى بشكل واضح من البرامج المكتوبة بلغة BASIC الأصلية أو لغة الآلة . تمثلت نقاط قوة BASICODE في مجالات تصميم التطبيقات، وبرامج التعليم، ومشاركة البيانات. كما استُخدم تنسيق BASICODE لبرامج Pascal . كانت Pascal لغة أكثر اتساقًا بين الأنظمة، ولكن لم تكن المترجمات متاحة إلا لأنواع قليلة جدًا من الحواسيب المنزلية.

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

تنسيق بيانات BASICODE

شريط كاسيت صوتي صغير الحجم من نوع BASICODE، وهو وسيط تخزين البيانات النموذجي من نوع BASICODE .

في صيغة BASICODE، يُشابه تسجيل البرامج تسجيل البيانات. لذا، عند تسجيل البرامج، لا تُقرأ الأوامر وتُكتب على شكل وحدات بايت مفردة ( رموز )، بل حرفًا حرفًا.

تبدأ كتلة البيانات بالحرف 02 (بداية النص STX)، وتنتهي بالحرف 03 (نهاية النص ETX). بعد ETX، يُرسل بايت تحقق مُكوّن من البايتات السابقة، بما فيها STX وETX، باستخدام عملية الجمع الثنائي (XOR). يُشير الحرف 0D (العدد العشري 13) إلى نهاية السطر أثناء الإرسال. يمكن لملفات البيانات التي تُنشئها البرامج استخدام جميع الأحرف كبيانات، ويجب ألا تحتوي على أي أحرف تحكم.

تُرسل كل بايت بالتسلسل التالي: "بتة بدء واحدة - 8 بتات بيانات - بتان إيقاف". تُرسل بتات البيانات بدءًا من البت الأقل أهمية. أما البت الأكثر أهمية فيُرسل معكوسًا، ويكون دائمًا صفرًا (يُرسل كـ 1) لأن لغة BASICODE تستخدم أحرف ASCII فقط. لذا، يمكن وصف تسلسل الإرسال أيضًا بأنه: "بتة بدء واحدة - 7 بتات بيانات - 3 بتات إيقاف". يهدف هذا التكرار إلى تحقيق أقصى قدر من التوافق مع مختلف أجهزة الكمبيوتر.

بالنسبة للإشارات الصوتية، تُستخدم موجات مربعة على شكل موجة بتردد 1200 هرتز للبت "0"، وموجتين  بتردد 2400 هرتز للبت "1"، مما ينتج عنه زمن قدره 1/1200 ثانية لكل بت. يشير فاصل زمني أطول من 1/1800 ثانية بين الموجات إلى بداية بايت، مما يجعل الموجة التالية هي بت البداية. بعد بت البداية وقبل بتات البيانات الثمانية، يوجد فاصل زمني آخر لا يقل عن 1/1800 ثانية.  تشير إشارة بتردد 2400 هرتز لمدة خمس ثوانٍ إلى بداية الإرسال، وتُستخدم لمزامنة برنامج القراءة. في نهاية الإرسال،  تُرسل إشارة بتردد 2400 هرتز لمدة ثانية واحدة.

يبلغ معدل نقل البيانات النظري لهذا التنسيق 1200 بت في الثانية. مع الأخذ في الاعتبار إرسال ثلاثة بتات إضافية لكل بايت من البيانات وفترات التوقف قبل وبعد بت البدء، ينتج عن ذلك معدل نقل بيانات قابل للاستخدام يبلغ 102 بايت في الثانية، وحوالي 6 كيلوبايت في الدقيقة.

فك تشفير أشرطة الكاسيت الصوتية

على جهاز كمبيوتر حديث، يمكن فك تشفير أشرطة الصوت Basicode باستخدام برنامج minimodem ، وهو برنامج مودم مجاني. على سبيل المثال، يمكن فك تشفير شريط كاسيت تم تحويله إلى ملف WAV باسم basicode.wav إلى بايتات البيانات المقابلة له باستخدام الأمر التالي:

minimodem --rx 1200 -S 1200 -M 2400 --startbits 1 -7 --stopbits 3 -f basicode.wav >basicode.txt

انظر أيضاً

مراجع

  1. 1 2 3 4 5 وييت إيك! أكتوبر 1991، "رمز الأساس-3" لبوب مونيكسما
  2. ^ Aarde & Kosmos العدد 7، 1986، 'BASICODE-3، uitgebreid esperanto voor komputers' بقلم رين فان دونجن
  3. ^ Basiccode-3 بقلم هيرمين باكر، 1986، ISBN 90-201-1949-4
  4. ^ BASICODE Mit Programmen auf Schallplatte für Heimcomputer بقلم هورست فولز، 1990، ISBN 3-341-00895-0

للمزيد من القراءة

  • (بالألمانية) مايكل ويجاند، مانفريد فيلينجر: الرمز الأساسي. ميت برمجة كاسيت. رافنسبرجر بوخفيرلاج ، رافنسبورج 1986، ISBN 3-473-44010-8
  • (بالهولندية) هيرمين باكر، جاك هاوبريش (مؤلفون)، Stichting BASICODE (الناشر): كتاب Het BASICODE-3. 3. أوفلاج. Kluwer Technische Boeken BV، ديفينتر/ أنتويرب 1988، ISBN 90-201-2111-1
  • (بالألمانية) Horst Völz: Basiccode mit Programmen auf Schallplatte für Heimcomputer. فيرلاج تكنيك، برلين 1990، ISBN 3-341-00895-0