اللون الأساسي

لغة Color BASIC هي تطبيق للغة Microsoft BASIC، وهي مُضمنة في ذاكرة القراءة فقط (ROM) لأجهزة الكمبيوتر الملونة Tandy/Radio Shack TRS-80 المصنعة بين عامي 1980 و1991. لغة BASIC (اختصار لـ "رمز التعليمات الرمزية متعدد الأغراض للمبتدئين") هي لغة برمجة عالية المستوى ذات بنية بسيطة، مما يُسهل كتابة البرامج البسيطة. يتم تفسير لغة Color BASIC ، أي فك تشفيرها أثناء تشغيلها.

خلفية

قرص ألوان ممتد BASIC 2.1 على جهاز كمبيوتر Tandy Color 3

كانت لغة مايكروسوفت بيسك-69 هي النواة الأساسية للغة كولور بيسك، والتي حصلت تاندي على ترخيصها من مايكروسوفت. صدرت كولور بيسك 1.0 مع جهاز الكمبيوتر الملون TRS-80 الأصلي ذي سعة 4 كيلوبايت عام 1980. تُخزَّن هذه اللغة على ذاكرة قراءة فقط (ROM) سعتها 8 كيلوبايت، وهي مسؤولة عن جميع مهام إدارة النظام، بما في ذلك تهيئة الأجهزة، وإدارة الذاكرة ، ومعالجة المقاطعات ، وغيرها. وكما هو الحال في معظم تطبيقات لغة بيسك، يبدأ كل سطر من التعليمات البرمجية برقم سطر، ويتكون من عبارة واحدة أو أكثر تحتوي على متغيرات ومعاملات. يتطلب المستوى التالي من لغة بيسك، وهو بيسك الملون الموسع (ECB)، ذاكرة سعتها 16 كيلوبايت. يُعد بيسك الموسع ضروريًا لوحدة تحكم القرص المرن ، والتي بدورها تُنتج بيسك الملون الموسع للقرص (DECB). تتوفر برامج محاكاة لأجهزة الكمبيوتر الملونة التي تُشغِّل هذا المفسر وغيره لأجهزة الكمبيوتر الحديثة، ويتطلب بعضها ملف "لقطة" للجهاز الفعلي. [ 2 ]

المتغيرات

يدعم Color BASIC نوعين من المتغيرات: المتغيرات الرقمية والمتغيرات النصية . في Color BASIC، يكون أول حرفين من اسم المتغير مهمين. يجب أن يكون الحرف الأول حرفًا، بينما يمكن أن يكون الثاني حرفًا أو رقمًا. يُشار إلى المتغيرات النصية بإضافة علامة الدولار ($) بعد اسم المتغير.

أمثلة

A = 5 A$ = "هذا خيط" K7 = 10 BB$ = "مرحباً!" ZZ = 1.54

المتغيرات العددية لها نوع واحد فقط، وهو نظام الفاصلة العائمة الثنائي. يستخدم كل متغير عددي 5 بايتات من الذاكرة، ويمكن أن تتراوح قيمته بين -1E+38 و1E+37.

بخلاف معظم تطبيقات Microsoft BASIC، يتطلب Color BASIC من المستخدم حجز مساحة لمتغيرات السلسلة عبر عبارة CLEAR.

يدعم النظام المصفوفات متعددة الأبعاد مع كل من المتغيرات الرقمية والنصية. في حالة المصفوفة، يُحاط عنوان العنصر بقوسين.

A ( 1 ) = 1 A$ ( 1 ) = "BOOKS"

يتم فصل الأبعاد المتعددة بفواصل

A ( 1 , 3 ) = 4 A$ ( 2 , 2 ) = "XYZ123"

المعاملات والرموز

توفر لغة Color BASIC العديد من العوامل لكل من العمليات الرياضية، وإلى حد أقل، العمليات على السلاسل النصية.

يمكن استخدام علامة الجمع (+) لربط السلاسل النصية أو لإجراء عمليات الجمع الرياضية
- تُستخدم للطرح
تُستخدم علامة * للضرب
يُستخدم الرمز / للقسمة

تُستخدم الأقواس ( ) لتجاوز ترتيب العمليات الحسابية

تُستخدم AND في عمليات "و" المنطقية
تُستخدم OR في عمليات "أو" المنطقية
تُستخدم علامة النفي (NOT) في عمليات النفي المنطقية.

لأغراض الاختبار، يتم استخدام العوامل التالية:

يساوي =
> أكبر من
< أصغر من
>= تعني أكبر من أو يساوي (كما أن => مقبولة أيضاً)
<= تعني أصغر من أو يساوي (كما أن =< مقبولة أيضاً)
<> لا يساوي (كما أن >< مقبول أيضًا)

رموز أخرى مستخدمة في لغة BASIC:

تشير علامة " " إلى أن بيانات السلسلة ثابتة (static).
: يفصل بين عدة أوامر في سطر برنامج واحد
عند مصادفة الفاصلة المنقوطة في دالة الطباعة، سيبقى الناتج على نفس السطر
عند مصادفة الفاصلة في دالة الطباعة، سيتم الانتقال إلى العمود التالي باستخدام علامة الجدولة

مفتاح

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

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

يشير رقم الجهاز إلى الجهاز. افتراضيًا، يُفترض أن يكون الجهاز هو 0 (الشاشة ولوحة المفاتيح). في لغة Color BASIC، يكون الجهازان #-1 (شريط الكاسيت) و#-2 (الطابعة) متاحين للمبرمج.

وضع التحرير

إذا أخطأت في كتابة سطر، يمكنك إما إعادة كتابته من البداية (أو حذفه) أو تعديله. في وضع التعديل، ستظهر لك نسخة من السطر، ونسخة ثانية يمكنك الانتقال بينها باستخدام مفتاح المسافة. لا يمكنك استخدام مفاتيح الأسهم. مفتاح الحذف ينقلك إلى اليسار، لكنه لا يمسح السطر من الذاكرة. مفتاح "i" يدخلك في وضع الإدخال، والضغط على مفتاح الإدخال يخرجك منه. مفتاح "c" يغير حرفًا واحدًا، ومفتاح "d" يحذف حرفًا واحدًا. مفتاح "x" ينقلك إلى نهاية السطر، مما يسمح لك بتمديده. مفتاح "l" يعيد رسم السطر. مفتاح "s" يبحث عن الموضع التالي للحرف. بالنسبة للأوامر "s" و"c" و"d"، يمكنك أيضًا إدخال رقم (#) قبل الضغط على أي منها، مما سيؤدي إلى: "s" - البحث عن الموضع # للحرف، "c" - تغيير عدد الأحرف #، "d" - حذف عدد الأحرف #.

الوظائف

ABS(num)
تُعيد القيمة المطلقة للعدد
ASC(str)
يُعيد رمز ASCII للحرف الأول في str
CHR$(num)
تُرجع سلسلة نصية واحدة تحتوي على رمز ASCII رقمي
EOF(device number)
تُرجع الدالة القيمة 0 إذا كان الملف يحتوي على بيانات، أو القيمة -1 إذا كان الملف في نهايته.
INKEY$
تُرجع الدالة حرفًا إذا تم الضغط على مفتاح في لوحة المفاتيح، أو قيمة فارغة (null) إذا لم يتم الضغط على أي مفتاح.
INT(num)
تُعيد الجزء الصحيح من العدد num
INSTR(startpos,search str,target str)
يبحث عن السلسلة الأولى في السلسلة المستهدفة. موضع البداية اختياري.
JOYSTK(num)
تُعيد هذه الدالة موضع محور عصا التحكم (0-3) بقيمة تتراوح من 0 إلى 63
LEFT$(str,num)
تُعيد الدالة أول عدد من الأحرف ("الأيسر") من السلسلة النصية str
LEN(str)
تُعيد طول السلسلة النصية str (بالأحرف) .
MEM
يُعيد الذاكرة الحرة المتاحة بالبايت
MID$(str,start num,length num)
تُعيد هذه الدالة سلسلة فرعية من السلسلة النصية str تبدأ من الموضع start num ويبلغ طولها num حرفًا long. ويمكن أيضًا إعادة تعيينها بإضافة ="newvalue"
PEEK(num)
تُرجع قيمة موقع الذاكرة num (0-65535)
POINT(x num,y num)
تُعيد لون نقطة شبه الرسوم البيانية عند الموضع x nummm (0-63) و y num (0-31).
RIGHT$(str,position num)
تُعيد هذه الدالة الجزء الأخير ("الأيمن") من السلسلة النصية str بدءًا من موضع الحرف num
RND(number)
يُرجع رقمًا عشوائيًا (عددًا صحيحًا) بين 1 و num
SGN(num)
تُعيد هذه الدالة إشارة العدد num ، 1 إذا كان موجبًا، -1 إذا كان سالبًا، و0 إذا كان صفرًا.
SIN(num)
تُعيد هذه الدالة جيب الزاوية num بالراديان.
STR$(num)
تُرجع سلسلة نصية تحتوي على الرقم num
USR(num)
يستدعي هذا الإجراء روتينًا فرعيًا بلغة الآلة، ويتم تخزين عنوانه في موقعي الذاكرة 275 و276. يتم تمرير قيمة num إلى هذا الروتين، ويتم تعيين قيمة إرجاع عند انتهاء تنفيذه.

الأوامر

AUDIO [ON|OFF]
يقوم بتوصيل أو فصل صوت الكاسيت عن صوت التلفزيون
CLEAR variable space[,highest memory location]
يحجز الذاكرة لمتغيرات السلسلة النصية، واختيارياً، لبرنامج لغة الآلة
CLOAD ["name"]
يقوم بتحميل برنامج BASIC من شريط الكاسيت. إذا لم يتم تحديد اسم، فسيتم تحميل البرنامج التالي.
CLOADM ["name"]
يقوم بتحميل برنامج لغة الآلة من الشريط. إذا لم يتم تحديد اسم، فسيتم تحميل البرنامج التالي.
CLOSE [device number]
يغلق الجهاز (في لغة Color BASIC، لا يمكن أن يكون هذا إلا #-1، أي شريط الكاسيت)
CLS(num)
يمسح الشاشة. يمكن تحديد رقم لون اختياري (من 0 إلى 8).
CONT
يستمر البرنامج بعد الضغط على زر الإيقاف أو عبارة الإيقاف
CSAVE ["name"]
يحفظ برنامج BASIC على شريط كاسيت مع اسم اختياري
DATA var,var,var...
يخزن البيانات في برنامج BASIC لاسترجاعها باستخدام أمر القراءة (READ).
DIM variable(dimension[,dimension 2,...]
يُحدد أبعاد المصفوفة ويحجز مساحة ذاكرة لها.
END
يشير إلى نهاية برنامج BASIC
EXEC
[ عنوان الذاكرة ] يُنفذ برنامج لغة الآلة الموجود في عنوان الذاكرة . إذا لم يتم تحديد عنوان، فسيتم استخدام عنوان تنفيذ البرنامج المُحمّل من الشريط.
INPUT [device number] [{prompt text};] variable [,variable 2, variable n]
ينتظر إدخالًا من الجهاز رقم . إذا لم يُحدد، يُفترض استخدام الجهاز 0 (لوحة المفاتيح). يمكن عرض رسالة اختيارية على الشاشة لإدخال العبارة
LIST [starting line] - [ending line]
يعرض هذا الأمر سطرًا أو أسطرًا من برنامجك. يمكنك حذف سطر البداية أو النهاية، أو إذا حذفت كليهما، فسيتم عرض البرنامج بالكامل.
LLIST [starting line] - [ending line]
يعمل مثل قائمة LIST، لكنه يُخرج البيانات إلى الطابعة
MOTOR [ON|OFF]
يقوم بتشغيل أو إيقاف محرك الكاسيت
NEW
يمسح محتويات الذاكرة (البرنامج والمتغيرات)
ON {num} GOSUB line 1, line 2, ... line n
يقوم بتقييم التعبير num ويستدعي الروتين الفرعي رقم num المدرج
ON (num) GOTO line 1, line 2, ... line n
يقوم بتقييم التعبير num وينتقل إلى السطر رقم num المدرج
OPEN "[I|O]",device number[,"filename"]
يفتح جهازًا للاتصال
POKEmemory address, data
يكتب البيانات (0-255) في عنوان الذاكرة (0-65535)
PRINT device number,expression
يطبع البيانات على الجهاز المحدد. في حال عدم تحديده، يُفترض استخدام الشاشة (#0).
PRINT @{screen position} expression
يعمل مثل أمر الطباعة، ولكنه يطبع في الموقع المحدد (0-511)
READ variable[,variable,...]
يقرأ المتغير (المتغيرات) التالي من برنامج BASIC المضمن بعبارات DATA
RENUM NewStart num, OldStart num, Increment num
يُعيد ترقيم كل سطر (مع خيار Oldstart) (مع خيار NewStart) من البرنامج  : بمضاعفات ( الرقم الاختياري). : إذا تم حذف جميع الخيارات، فستستخدم القائمة 10 للزيادة.  : مع برنامج مكون من 10 أسطر، بفاصل 10. 10، 20، 30، 40، 50، 60، 70، 80، 90، 100: renum 100، 40، 2. سيُعيد هذا الترقيم، بدءًا من السطر رقم 40. سيُغير جميع أرقام الأسطر التي تلي 40 بما في ذلك 40 بمقدار 2. الأسطر الآن هي 10، 20، 30، 100، 102، 104، 106، 108، 110، 112
RESET(x,y)
يضبط بكسل شبه الرسومات في الموقع x (0-63) و y (0-31) إلى اللون الأسود
RESTORE
يعيد مؤشر القراءة إلى عبارة البيانات الأولى
RETURN
العودة من روتين فرعي
RUN num
يقوم بتشغيل برنامج BASIC، اختيارياً، عند رقم السطر المحدد
SET(x,y,color)
يقوم بتعيين بكسل شبه الرسومات في الموقع x (0-63) y (0-31) إلى اللون (0-8).
SKIPF ["filename"]
يتخطى برامج BASIC الموجودة على الشريط حتى يتم العثور على اسم البرنامج المحدد
SOUND tone,duration
يصدر نغمة بتردد (1-255) ومدة (1-255)
STOP
يؤدي ذلك إلى توقف البرنامج عن التنفيذ
TAB(column)
الانتقال إلى العمود المحدد (يستخدم مع أمر الطباعة)
VAL(str)
تُعيد القيمة العددية لسلسلة نصية تحتوي على رقم بصيغة نصية.

تدفق التحكم

GOSUB{line number}
يستدعي الروتين الفرعي في رقم السطر المحدد
GOTO{line number}
ينتقل إلى رقم سطر البرنامج المحدد
IF {test} THEN {command(s)} [ELSE {command(s)}]
يُجري اختبارًا شرطيًا. إذا كان الاختبار صحيحًا، تُنفَّذ الأوامر، وإلا تُنفَّذ أوامر أخرى. إذا لم يُحدَّد شرط "وإلا" وكان الاختبار خاطئًا، فسيتم تنفيذ السطر التالي من البرنامج.
FOR {num} = {number} TO {number} [STEP {number} ] ... التالي (رقم)
يُنشئ هذا الأمر حلقةً حيث ينتقل المتغير العددي (num) من رقم البداية إلى رقم النهاية بزيادات قدرها (STEP). إذا تم حذف الخطوة، فسيتم افتراض القيمة 1.

رسائل الخطأ

/0
القسمة على صفر
AO
الملف المحدد مفتوح بالفعل
BS
خطأ في كتابة الرمز السفلي. الرمز السفلي خارج نطاق الأبعاد.
CN
لا يمكن المتابعة (انظر أمر CONT)
DD
محاولة إعادة تحديد أبعاد مصفوفة
DN
رقم جهاز غير صالح
DS
خطأ في العبارة المباشرة (البرنامج لا يحتوي على أرقام أسطر)
FC
استدعاء دالة غير قانوني: تحتوي الدالة على قيمة خارج النطاق
FD
بيانات ملف تالفة: محاولة قراءة رقم في قيمة نصية، إلخ.
FM
وضع ملف غير صالح، محاولة إدخال بيانات إلى ملف مفتوح للإخراج، إلخ.
ID
التوجيه غير القانوني: لا يمكن تشغيل الأمر المحدد إلا في برنامج
IE
تم إدخال البيانات بعد نهاية الملف. راجع EOF
IO
خطأ في الإدخال/الإخراج
LS
السلسلة الطويلة: لا يمكن أن تحتوي السلاسل إلا على 255 حرفًا
NF
التالي بدون لـ
NO
الملف غير مفتوح
OD
نفاد البيانات: محاولة قراءة بيانات تتجاوز آخر بيانات في البرنامج
OM
خارج الذاكرة
OS
نفاد مساحة السلسلة: راجع CLEAR
OV
تجاوز الحد: الرقم خارج النطاق
RG
العودة بدون GOSUB
SN
خطأ في بناء الجملة
ST
عمليات معالجة السلاسل النصية معقدة للغاية
TM
عدم تطابق النوع (A$=3، A="CAT")
UL
محاولة الانتقال إلى سطر غير موجود باستخدام الأمر GOTO أو GOSUB

إجراءات ROM الفرعية الموثقة

توجد بعض الإجراءات الفرعية المتاحة لبرامج لغة الآلة في ذاكرة القراءة فقط Color BASIC ROM والتي يمكن استخدامها للبرمجة العامة.

POLCAT
العنوان [$A000]: يستعلم عن وجود حرف في لوحة المفاتيح
CHROUT
العنوان [$A002]: يُخرج حرفًا إلى الشاشة أو الجهاز
CSRDON
العنوان [$A004]: يبدأ تشغيل الشريط ويستعد للقراءة
BLKIN
العنوان [$A006]: يقرأ كتلة من شريط الكاسيت
BLKOUT
العنوان [$A008]: يكتب كتلة إلى شريط كاسيت
JOYIN
العنوان [$A00A]: يقرأ قيم عصا التحكم

مراجع

  1. 80-US. مقابلة مع بيل غيتس من مايكروسوفت ، 80-US - المجلد الرابع، العدد 3 (مايو 1981) (دار نشر نورث ويست 80) (الولايات المتحدة)، الصفحة 8. أنهى مؤخرًا العمل على حاسوب راديو شاك الملون. وهو متحمس للغاية لحزمة Extended Color Basic التي كتبها.
  2. فوضى
ملحوظات