سيلبال

لغة SCELBAL ، اختصارًا لـ SCientific ELementary BAsic Language (لغة البرمجة الأساسية العلمية)، هي نسخة من لغة البرمجة BASIC صدرت عام 1976 لجهاز SCELBI وأجهزة حاسوب صغيرة أخرى من طراز Intel 8008 و 8080 ، مثل Mark-8 . تضمنت الإضافات اللاحقة للغة حزمة رياضية موسعة ومعالجة النصوص . تطلبت النسخة الأصلية 8 كيلوبايت من ذاكرة الوصول العشوائي (RAM) ، بينما تطلبت الإضافات اللاحقة 12 كيلوبايت على الأقل.  

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

تاريخ

المؤلف الرئيسي لبرنامج SCELBAL هو مارك أرنولد، الذي كان طالبًا في المرحلة الثانوية عام 1974 عندما أُعلن عن جهاز SCELBI. كان أرنولد صديقًا لأساتذة في جامعة وايومنغ ، ومن خلالهم رتب للحصول على حساب على حاسوبهم المركزي Sigma 7. كُتبت النسخة الأولى مما أصبح لاحقًا برنامج SCELBAL لهذا الجهاز. وفي وقت لاحق من ذلك العام، كتب مُترجمًا متقاطعًا للغة 8008 على نفس المنصة.

التحق أرنولد بجامعة واشنطن عام ١٩٧٥، وتواصل مع نات وادزورث، أحد مؤسسي شركة SCELBI، عارضًا عليه فكرة تطوير نسخة مُجمّعة من لغة BASIC لمنصتهم الجديدة. كان من المفترض أن يكون هذا نظامًا متعدد المراحل، يحفظ النسخ الوسيطة على شريط كاسيت . كان هذا النظام شاقًا للغاية، ولكنه كان سيُنتج برامج تعمل على  طرازات 8H ذات سعة ٤ كيلوبايت من النظام. فضّل وادزورث استخدام مُفسّر ، الأمر الذي كان سيتطلب ٨  كيلوبايت، وهي سعة متوفرة في طرازات 8B الجديدة من النظام. استخدمت اللغة إجراءات الفاصلة العائمة التي نشرها وادزورث عام ١٩٧٥ في كتابه " برمجة لغة الآلة للمعالج ٨٠٠٨" .

استغرق الأمر من وادزورث عدة أشهر لإبرام عقد نهائي، تضمن إرسال نظام تطوير 8B إلى أرنولد. وقد أدى ذلك إلى تأخير كبير في إصدار اللغة حتى عام 1976. وتكهن أرنولد بأنه لولا هذه التأخيرات، لكان من الممكن إصدار لغة SCELBAL في نفس وقت إصدار لغة Altair BASIC تقريبًا في أواخر عام 1975. وقد عُرضت لأول مرة في مقال مطول في العدد الثاني من مجلة دكتور دوبز في فبراير 1976. [ 1 ]

أُعلن عن إصدار لغة SCLEBAL في إعلانٍ نُشر في عدد يونيو 1976 من مجلة Byte . لم يربط الإعلان اللغة بمنصة SCELBI تحديدًا، بل عرضها ببساطة في كتابٍ كدليلٍ كاملٍ لإنشاء نسخةٍ من لغة BASIC على أي نظام 8008 أو 8080 مزودٍ بذاكرة وصول عشوائي (  RAM) بسعة 8 كيلوبايت. كان سعر الكتاب 49 دولارًا، أي ما يعادل حوالي 277 دولارًا في عام 2025. [ 2 ]

وصف

استخدمت لغة SCELBAL تنسيق الفاصلة العائمة 32 بت (أربعة بايتات) لإجراء العمليات الحسابية، حيث يتكون الجزء الكسري من 23 بتًا ، وإشارة الجزء الكسري من بت واحد، والأس من 7 بتات، وإشارة الأس من بت واحد. وكانت هذه العناصر مُرتبة بترتيب عكسي، حيث كان البايت الأقل أهمية من الجزء الكسري في البايت الأول، يليه البايت الأوسط، ثم البايت الأكثر أهمية مع الإشارة في البت الأعلى. وجاء الأس أخيرًا، مع الإشارة أيضًا في البت الأعلى. [ 3 ] يُوفر الدليل شفرة تجميع موثقة جيدًا لحزمة العمليات الحسابية بأكملها، بما في ذلك نقاط الدخول وملاحظات الاستخدام. [ 4 ] كانت تنسيقات 32 بت شائعة في ذلك الوقت، بينما اعتمدت الإصدارات اللاحقة من لغة BASIC، بدءًا من Microsoft BASIC لجهاز MOS 6502 ، تنسيق 40 بت (خمسة بايتات) بشكل عام لزيادة الدقة. [ 5 ]

كانت لغة SCELBAL مشابهةً إلى حد كبير للغات BASIC الأخرى، بما في ذلك إصدارات MS المبكرة مثل Altair BASIC ، حيث افتقرت إلى متغيرات السلاسل النصية والمعاملات وعدد من الدوال الرياضية. أما الاختلافات الأخرى فكانت أقل وضوحًا. IFاحتوت العبارة على صيغة اختيارية IF...GOTOتُغني عن استخدام الفاصلة المنقوطة THEN(, ). [ 6 ] كما احتفظت بالصيغة المختصرة لنمط MS لنفس المفهوم، وهي . كما سمحت بالتنفيذ المشروط لعبارات أخرى، مثل . [ 7 ]IFX<YGOTO100IFX<YTHEN100IFX<YTHENPRINTX

لم تدعم اللغة الأساسية معالجة السلاسل النصية، على الرغم من إمكانية استخدام السلاسل النصية الثابتة PRINT، وكانت تتضمن وظائف داعمة CHRلطباعة الأحرف غير القابلة للطباعة، TABوتوفير التنسيق. ومن الغريب أن النظام كان يتطلب ضبط البت الأعلى في رموز ASCII ، لذا لتحويل رموز ASCII العادية إلى رموز SCELBI، كان لا بد من إضافة أو طرح 128. على سبيل المثال،

اطبع "HELLO" ؛ CHR ( 172 CHR ( 160 "WORLD"

لإنتاج السلسلة "HELLO, WORLD" في المخرجات. [ 8 ]

INPUTيقرأ النظام عادةً النص الذي يُدخله المستخدم كرقم، ولكنه يسمح باستخدام علامة الدولار للإشارة إلى أن القيمة يجب قراءتها كرمز SCELBI. على سبيل المثال، INPUT Aسيقرأ النظام إدخال المستخدم "1" في A كقيمة عشرية 1، بينما INPUT A$سيؤدي استخدام علامة الدولار إلى تعيين A إلى 177، 49 (ASCII للرقم "1") + 128. بالإضافة إلى ذلك، عند استخدام علامة الدولار، لا تتم طباعة موجه "؟" التقليدي، ويعود الأمر إلى اللغة بمجرد إدخال حرف واحد، بدلاً من انتظار إرجاع السطر كما في الحالة العادية. [ 8 ]

من بين الاختلافات القليلة الأخرى، أن NEWالأمر الموجود في مايكروسوفت، والذي يمسح شيفرة البرنامج والبيانات الموجودة، يُسمى SCR"سكراكت" [ 9 ] ، بينما USRالدالة التي تستدعي روتين لغة الآلةUDF تُسمى "دالة معرفة من قبل المستخدم" [ 10 ]UDF . وقد سمح هذا بتمرير مُعامل واحد من نوع الفاصلة العائمة إلى الدالة المعرفة من قبل المستخدم، والتي يجب أن تكون شيفرة لغة الآلة الخاصة بها قد تم تحميلها في الذاكرة في موقع ثابت قبل وقت التشغيل [ 11 ] .

تم اختصار رموز الأخطاء إلى حرفين، ووُفرت التعليمات البرمجية لـ LOADو SAVEبشكل نمطي، وكان من المتوقع تنفيذها عند نقلها إلى منصات مختلفة. [ 12 ] يمكن أن تتراوح أرقام الأسطر بين 1 و999999، [ 10 ] بينما استخدمت معظم لغات BASIC عددًا صحيحًا من 16 بت، وبالتالي دعمت أسطرًا من 1 إلى 32767 أو من 1 إلى 65535.

خصائص اللغة

مأخوذ من دليل عام 1976 ما لم يُذكر خلاف ذلك. [ 13 ]

الأوامر

الوضع الفوري فقط

يُشار إليه في الوثائق باسم "الوضع التنفيذي".

SCR
سكراتش، ما يعادل مايكروسوفتNEW
LIST
RUN
LOAD
SAVE

الوضع الفوري أو وضع البرنامج

PRINT
INPUT
مثل MS، يمكن أن يقبل متغيرات متعددة، ولم يتضمن سلسلة نصية للمطالبة.INPUTA,B,C
LET
مثل MS، LETكان الخيار اختياريًا، لذا فإن و متكافئان.15LETX=1015X=10
IF...THEN
IF...GOTO
صيغة بديلة لـ IF...THEN.
GOTO
يبدو أن "النسخة المتباعدة" GO TOلم تكن مدعومة.
GOSUB...RETURN
FOR...TO...STEP...NEXT
كما هو الحال في MS، STEPفإن هذا الخيار اختياري ويفترض أن قيمته 1. NEXTيتطلب متغيرًا، على عكس إصدارات MS اللاحقة.
REM
END
DIM
كانت المصفوفات تعمل كما في مايكروسوفت، ولكنها كانت اختيارية ويمكن تعطيلها لتوفير الذاكرة. كانت المصفوفات أحادية البعد فقط مدعومة، وكان إجمالي عدد العناصر لجميع المصفوفات مجتمعة 64 رقمًا.

الوظائف

INT
SGN
ABS
SQR
RND
كما هو الحال في MS، يأخذ متغيرًا وهميًا ويعيد قيمة بين 0 و 1.
CHR
لاحظ عدم وجود علامة الدولار ($) الموجودة في MS، والتي تستخدم CHR$.
TAB
UDF

الإضافات

نشرت SCELBI امتدادين للنظام، وهما ملحق الدوال الرياضية وملحق السلاسل.

ملحق الدوال الرياضية

أضاف الملحق الخاص بالدوال الرياضية خمس دوال متسامية جديدة هي: SIN، ، COS، EXP، LOG، و ATN. [ 14 ]

ملحق السلسلة

كان ملحق السلاسل أكبر قليلاً من الدوال الرياضية، ويتضمن عددًا من الميزات الجديدة.

يمكن أن يصل طول السلاسل النصية إلى 80 حرفًا، ويمكن للنظام استيعاب 64 متغيرًا نصيًا. يمكن أن يكون أيٌّ من هذه المتغيرات الـ 64، أو جميعها، مصفوفات أحادية البُعد، ولكن يجب أن يظل العدد الإجمالي 64 سلسلة نصية. ومن الغريب أن مصفوفات السلاسل النصية لا تتطلب DIMعبارة برمجية. [ 15 ]

على عكس لغة MS BASIC، ولغة Dartmouth BASIC التي استوحت منها أسلوب معالجة السلاسل النصية، استخدمت SCELBI أسلوب "التقطيع" في معالجة السلاسل النصية الموجود في لغات BASIC المعاصرة مثل SDS BASIC و HP Time-Shared BASIC و Northstar BASIC ، أو لغة Atari BASIC اللاحقة . فبدلاً من استخدام دوال مثل LEFT$`f` RIGHT$و`f` و` MID$f` للوصول إلى السلاسل الفرعية، استُخدمت صيغة الوصول إلى المصفوفات مع نقطتين رأسيتين قبل نقطة البداية، وفاصلة منقوطة اختيارية قبل الطول. ولأن SCELBAL تدعم أيضًا مصفوفات السلاسل النصية، كان الرقم الأول في دوال الوصول إلى المصفوفة هو فهرس المصفوفة، وكان اختياريًا إذا لم يكن المتغير مصفوفة. على سبيل المثال، الكود: [ 15 ]

10 LET A$ = "HELLO" 20 PRINT A$ ( : 2 ; 3 )

سيؤدي ذلك إلى طباعة "ELL" في المخرجات. إذا تم استخدام مصفوفة، فإن الصيغة تتطلب فهرس المصفوفة في المعامل الأول: [ 15 ]

100 LET A$ ( 1 ) = "HELLO" 150 LET A$ ( 2 ) = "WORLD" 200 PRINT A$ ( 2 : 2 ; 3 )

سيؤدي ذلك إلى طباعة "ORL" في المخرجات. كما يسمح SCELBAL بحذف الفاصلة المنقوطة، التي تحدد الأحرف من نقطة البداية إلى نهاية السلسلة. على سبيل المثال، الكود:

210 اطبع A$ ( 2 : 2 )

سيؤدي ذلك إلى طباعة كلمة "ORLD" في المخرجات.

على الرغم من تشابهها مع لغة SDS BASIC، إلا أن هناك اختلافًا جوهريًا في طريقة عملها مقارنةً بلغات BASIC الأخرى التي تستخدم صيغة التقطيع، حيث أن المعامل الأخير يمثل الطول وليس الموضع. على سبيل المثال، في لغة Atari BASIC، الكود المشابه ظاهريًا هو: [ 16 ]

20 اطبع A$ ( 2 , 3 )

بدلاً من ذلك، سيُخرج الأمر "EL"، حيث تُترجم التعليمات إلى "طباعة جميع الأحرف بين الموضعين 2 و3". وبهذه الطريقة، يعمل SCELBAL بطريقة أقرب إلى MS BASIC، حيث تكون المكافئات كما يلي: [ 17 ]

20 اطبع MID$ ( A$ , 2 , 3 )

و

210 PRINT RIGHT$ ( A$ ( 2 ), 2 )

لإضافة دعم كامل للسلاسل النصية، استبدل الملحق النسخة الأصلية CHRبنسخة أخرى CHR$مطابقة لصيغة نظيرتها في MS. [ 15 ] وبالمثل، INPUTتم تعديل الدالة بحيث تعمل متغيرات السلاسل النصية كمتغيرات رقمية، حيث تنتظر حرف الإرجاع ثم تُسند مُدخلات المستخدم بالكامل إلى متغير السلسلة النصية المرتبط. [ 18 ] كما أضافت الدالة وظائف الدعم LENو و ASC، [ 15 ] و VAL$لتحويل سلسلة نصية تحتوي على قيمة رقمية إلى تمثيل نصي لتلك القيمة. وكما هو الحال في MS، استخدم عامل الربط+ . [ 18 ]

مراجع

الاقتباسات

  1. أرنولد، مارك؛ وادزورث، نات (فبراير 1976). "SCELBAL - لغة برمجة عالية المستوى لأنظمة 8008/8080" . مجلة دكتور دوبز . الصفحات 30-53 . 
  2. "مُذهل!" . بايت . يونيو 1976. ص 47. 
  3. أرنولد ووادزورث 1976 ، ص. 10.1.
  4. أرنولد ووادزورث 1976 ، ص 10.
  5. ستيل، مايكل (20 أكتوبر 2008). "أنشئ نسختك الخاصة من Microsoft BASIC لـ 6502" .
  6. أرنولد ووادزورث 1976 ، ص. 14.10.
  7. أرنولد ووادزورث 1976 ، ص. 2.3.
  8. 1 2 أرنولد ووادزورث 1976 ، ص. 14.16.
  9. أرنولد ووادزورث 1976 ، ص. 14.1.
  10. 1 2 أرنولد ووادزورث 1976 ، ص. 14.17.
  11. أرنولد ووادزورث 1976 ، ص. 14.3.
  12. أرنولد ووادزورث 1976 ، ص. 14.18.
  13. أرنولد ووادزورث 1976 .
  14. الرياضيات 1977 ، ص. 1.
  15. 1 2 3 4 5 Strings 1977 ، ص. 1.
  16. سمول، ديفيد، محرر. (1983). "سلاسل أتاري ومعالجة النصوص" . أتاري الإبداعية . الحوسبة الإبداعية.
  17. Strings 1977 ، ص. 3.
  18. 1 2 Strings 1977 ، ص. 2.

فهرس

  • أرنولد، مارك؛ وادزورث، نات (1976). SCELBAL: لغة برمجة عالية المستوى لأنظمة 8008/8080 (ملف PDF) . شركة SCELBI للاستشارات الحاسوبية.
  • أرنولد، مارك (1977). ملحق الدوال الرياضية لبرنامج SCELBAL . شركة SCELBI للاستشارات الحاسوبية.
  • أرنولد، مارك (1977). ملحق سلاسل SCELBAL . شركة SCELBI للاستشارات الحاسوبية.