لغة بيسك للأعداد الصحيحة
إنتغر بيسك هو مترجم لغة بيسك كتبه ستيف وزنياك لأجهزة كمبيوتر أبل 1 وأبل 2. كان متوفرًا في الأصل على شريط كاسيت لجهاز أبل 1 في عام 1976، ثم أُدرج في ذاكرة القراءة فقط (ROM) لجهاز أبل 2 منذ إصداره في عام 1977، وكان أول إصدار من لغة بيسك استخدمه العديد من مالكي أجهزة الكمبيوتر المنزلية الأوائل . [ 2 ]
كان نوع البيانات الرقمية الوحيد هو العدد الصحيح؛ ولم تكن الأعداد العشرية مدعومة. سمح استخدام الأعداد الصحيحة بتخزين الأرقام بتنسيق مضغوط 16 بت، مما أتاح قراءتها ومعالجتها بسرعة أكبر من تنسيقات الأعداد العشرية 32 أو 40 بت الموجودة في معظم لغات BASIC في ذلك الوقت. جعلها هذا سريعة للغاية لدرجة أن بيل غيتس اشتكى عندما تفوقت على لغة Microsoft BASIC في الاختبارات المعيارية. ومع ذلك ، حدّ هذا أيضًا من قابليتها للتطبيق كلغة برمجة للأغراض العامة .
يتمثل أحد الاختلافات الأخرى بين لغة Integer BASIC ولغة BASIC الأخرى في تلك الحقبة في أنها تعاملت مع السلاسل النصية كمصفوفات من الأحرف، على غرار النظام في لغتي C أو Fortran 77. وكان الوصول إلى السلاسل الفرعية يتم باستخدام تقطيع المصفوفات بدلاً من دوال السلاسل النصية. وقد طُبّق هذا الأسلوب في لغة HP Time-Shared BASIC ، ويمكن إيجاده أيضاً في لغات BASIC أخرى معاصرة مبنية على نموذج HP، مثل North Star BASIC و Atari BASIC . ويتناقض هذا الأسلوب مع الأسلوب الموجود في لغات BASIC المشتقة من DEC ، بما في ذلك Microsoft BASIC .
طُوِّرت اللغة في البداية تحت اسم GAME BASIC ، وأُشير إليها ببساطة باسم Apple BASIC عند طرحها على جهاز Apple I. ثم أصبحت تُعرف باسم Integer BASIC عند نقلها إلى جهاز Apple II، حيث تم شحنها جنبًا إلى جنب مع Applesoft BASIC ، وهي نسخة من Microsoft BASIC تتضمن دعمًا للأعداد العشرية. وتم التخلي تدريجيًا عن Integer BASIC لصالح Applesoft BASIC بدءًا من جهاز Apple II Plus عام 1979.
تاريخ
عندما كان ستيف وزنياك في السنة الأخيرة من المرحلة الثانوية ، رتب أستاذ الإلكترونيات للطلاب المتفوقين في صفه فرص تدريب في شركات إلكترونيات محلية. أُرسل وزنياك إلى سيلفانيا حيث برمج بلغة فورتران على جهاز IBM 1130. [ 4 ] في العام نفسه، وضعت شركة جنرال إلكتريك جهاز طرفي في المدرسة الثانوية متصلًا بأحد حواسيبها المركزية التي تُشغل خدمة BASIC الخاصة بها ، والتي كانت تُروج لها بكثافة آنذاك. بعد منح الطلاب ثلاثة أيام من الوصول، طُلب منهم كتابة رسائل يشرحون فيها أسباب استحقاق المدرسة لجهاز طرفي بشكل دائم، لكن جهودهم باءت بالفشل في نهاية المطاف. [ 1 ]
بعد سنوات، كان ووزنياك يعمل في شركة هيوليت-باكارد (HP) حيث كان يُجري محاكاة لتصميمات الرقائق وتخطيط الدوائر المنطقية للآلات الحاسبة. [ 1 ] حققت HP نجاحًا كبيرًا في سوق الحواسيب الصغيرة بفضل سلسلة أجهزة HP 2000 التي تعمل بنسخة مخصصة من لغة BASIC بتقنية المشاركة الزمنية . مقابل حوالي 100,000 دولار أمريكي ، كان بإمكان المستخدم بناء جهاز مُجهز بشكل معقول يدعم ما بين 16 و32 مستخدمًا لتشغيل برامج BASIC. [ 5 ] على الرغم من ارتفاع سعره، إلا أنه كان لا يزال جزءًا بسيطًا من تكلفة الحواسيب المركزية [ ب ] ، وبالنسبة للمستخدمين الذين يستخدمونها بكثافة، كان أقل من تكلفة خدمات المشاركة الزمنية. [ ج ] بعد ذلك، أطلقت HP جهاز HP 9830 ، وهو جهاز بحجم سطح المكتب بسعر 10,000 دولار أمريكي (ما يعادل 83,000 دولار أمريكي في عام 2025) والذي كان يعمل أيضًا بلغة BASIC، والتي كان ووزنياك قادرًا على الوصول إليها. [ 9 ]
استنشقت رائحة الريح وعرفت أن مفتاح جعل جهاز الكمبيوتر الخاص بي جيدًا (شائعًا) هو تضمين لغة عالية المستوى وأنه يجب أن تكون لغة BASIC.
في يناير 1975، أُعلن عن جهاز ألتاير 8800، مما أشعل شرارة ثورة الحواسيب الصغيرة . وفي مارس، حضر ووزنياك الاجتماع الأول لنادي هواة الحواسيب المنزلية، وبدأ في وضع تصميم حاسوبه الخاص. كان برنامج ألتاير بيسك ، الذي طورته شركة مايكروسوفت حديثة التأسيس ، من أهم البرامج لجهاز ألتاير، وأحد أكثرها تعرضًا للقرصنة . [ 10 ] استنتج ووزنياك أن جهازه سيحتاج إلى لغة بيسك خاصة به، والتي كان يأمل أن تكون الأولى من نوعها لمعالج MOS Technology 6502. ولأن اللغة كانت تتطلب 4 كيلوبايت من ذاكرة الوصول العشوائي (RAM)، فقد جعلها الحد الأدنى للذاكرة المطلوبة في التصميم. [ 1 ]
كانت مراجع ووزنياك للغة BASIC نسخة من كتاب "101 لعبة حاسوبية بلغة BASIC" ودليل HP BASIC. [ 1 ] لم يكن يعلم أن لغة BASIC الخاصة بشركة HP تختلف اختلافًا كبيرًا عن لغة DEC BASIC المستخدمة في كتاب "101 لعبة" ، والتي كانت أيضًا أساس لغة Microsoft BASIC لجهاز Altair. بناءً على هذه المصادر، بدأ ووزنياك في وضع مخطط لبنية اللغة. تضمن التصميم في البداية دعمًا للأعداد العشرية، لكنه، على أمل أن ينشر أول إصدار من BASIC على جهاز 6502 ويصبح "نجمًا"، قرر التخلي عن دعم الأعداد العشرية وكتابة نظام رياضي منفصل للأعداد الصحيحة لتوفير بضعة أسابيع من وقت البرمجة. [ 1 ]
وصف ووزنياك لغته لاحقًا بأنها "مخصصة بالدرجة الأولى للألعاب والاستخدامات التعليمية". [ 11 ] وخلال عملية التطوير، أطلق عليها اسم "GAME BASIC"، وكتب ووزنياك الشفرة يدويًا، مترجمًا تعليمات لغة التجميع إلى ما يقابلها من لغة الآلة ، ثم رفع النتيجة إلى حاسوبه. [ 12 ] وبدون أي تدريب على كتابة لغات البرمجة، استخدم خبرته في استخدام آلات حاسبة HP لتنفيذ آلة مكدس لتفسير التعابير. وبمجرد تشغيل الروتينات الأساسية، عمل على الأوامر الأخرى واحدًا تلو الآخر بطريقة معيارية. وفي كل زيارة لنادي Homebrew، كان يعرض بعض الميزات الإضافية التي أُضيفت خلال الشهر الماضي. [ 1 ]
كان ذلك اليوم الأكثر إرضاءً في حياتي ... لقد عرضت لعبة Breakout [في Homebrew] - مكتوبة بالكامل بلغة BASIC ... بعد تصميم ألعاب أركيد للأجهزة، كنت أعرف أن القدرة على برمجتها بلغة BASIC ستغير العالم.

في إعلانات أوائل عام 1976 لجهاز الكمبيوتر Apple I ، زعمت شركة Apple Inc أن "فلسفتنا هي توفير برامج لأجهزتنا مجانًا أو بتكلفة رمزية" [ 13 ] و"نعم يا سادة، لغة Apple BASIC مجانية". [ 14 ] وقد نُشر هذا بعد فترة وجيزة من رسالة بيل غيتس الشهيرة المفتوحة إلى الهواة، والتي أشار فيها إلى أن الناس يسرقونه بنسخ نسخ من لغة Altair BASIC . [ 15 ]
ساعد وزنياك ستيف جوبز ، الذي كان يعمل لدى أتاري ، في إعادة تصميم لعبة بريك آوت . [ 16 ] وفي وقت لاحق، قرر اختبار إمكانية كتابة اللعبة بلغة بيسك. فأضاف أوامر لقراءة وحدات التحكم ، ومن خلال سلسلة من التعديلات السريعة، تمكن من تشغيل نسخة من اللعبة. ولتحسين تجربة اللعب، أضاف مكبر صوت لإصدار نقرات عند اصطدام الكرة بالأشياء. وأثناء عرضه اللعبة على جوبز، أوضح وزنياك أنه يستطيع تغيير ألوان اللعبة بسرعة، بمجرد تعديل شفرة المصدر . وكتب وزنياك لاحقًا أنه أثبت أن "البرمجيات أكثر مرونة من الأجهزة"، وأنه وجوبز أدركا أنه "الآن، يمكن لأي شخص إنشاء ألعاب أركيد دون الحاجة إلى تصميمها باستخدام الأجهزة". [ 1 ]
أنجز ووزنياك مكتبةً لحسابات الفاصلة العائمة لجهاز 6502 ونشرها في عدد أغسطس 1976 من مجلة دكتور دوبز . [ 17 ] أُدرجت هذه المكتبة لاحقًا ضمن ذاكرة القراءة فقط (ROM) لجهاز أبل 2. [ 18 ] بدأ ووزنياك العمل على نقل كود حسابات الفاصلة العائمة إلى لغة أبل بيسك، لكنه انشغل بتصميم وحدة تحكم للأقراص المرنة لما أصبح لاحقًا جهاز ديسك 2. قال مايك ماركولا إن الشركة ستشارك في معرض الإلكترونيات الاستهلاكية في لاس فيغاس إذا كان نظام الأقراص جاهزًا في الوقت المحدد، لذا عمل ووزنياك وراندي ويغينتون عليه بلا توقف طوال عطلة عام 1977. [ 19 ]
عندما عاد ستيف جوبز إلى موضوع الأعداد العشرية في لغة BASIC، اشتكى من طول المدة. ودون علم ووزنياك، كانت الشركة قد أبرمت اتفاقية ترخيص مع مايكروسوفت للحصول على نسخة 6502 من كود Altair التي أنجزتها مايكروسوفت مؤخرًا. بعد فحص كود مايكروسوفت، قرر ووزنياك أن إضافة دعم الرسومات إلى كودهم أسهل من إضافة الأعداد العشرية إلى لغة BASIC الخاصة به، لأن الأخيرة كانت ستتطلب تعديلًا يدويًا للكود الأصلي. كان كود مايكروسوفت مكتوبًا بلغة التجميع، وبالتالي كان التعامل معه أسهل. انتهى تطوير لغة BASIC الخاصة بشركة آبل لصالح ما أصبح يُعرف باسم Applesoft BASIC . وقد علّق ووزنياك لاحقًا قائلًا: "كانت خيبة أملي الكبرى هي اللجوء إلى دوال السلاسل النصية المعقدة مثل ` and` بدلًا من دوالي الخاصة بي". [ 19 ] [ d ]LEFT$(VAR,5)MID$(VAR2,5,3)
عندما طُرح جهاز Apple II في صيف عام 1977، كان برنامج Integer BASIC مُثبّتًا في ذاكرة ROM، بينما كان برنامج Applesoft BASIC مُثبّتًا على شريط كاسيت. تغيّر هذا الوضع مع طرح جهاز Apple II Plus في عام 1979، حيث تم تثبيت برنامج Applesoft في ذاكرة ROM. [ 20 ]
وصف
تحرير البرامج
كما هو الحال في معظم تطبيقات لغة BASIC في ذلك الوقت، عملت Integer BASIC كمفسر للغة وبيئة لتحرير الأسطر. عند تشغيل BASIC، كانت تظهر >موجه الأوامر حيث يمكن للمستخدم إدخال التعليمات. [ 21 ] [ هـ ] على عكس منصات الحواسيب المنزلية اللاحقة ، لم تكن BASIC هي البيئة الافتراضية عند بدء تشغيل Apple II، بل كانت تبدأ عادةً على الشاشة . وكان يتم تشغيل BASIC بالضغط على زر Ctrl+ . [ 22 ]BReturn
تُخزَّن العبارات التي تبدأ بأرقام في ذاكرة البرنامج لتنفيذها لاحقًا، [ 23 ] إما كأسطر جديدة أو كبديل لأي عبارات سبق أن حملت نفس الرقم. [ 24 ] أما العبارات التي تُدخل بدون رقم سطر فتُسمى أوامر، وتُنفَّذ فورًا. [ و ] يمكن أن تتراوح أرقام الأسطر من 0 إلى 32767، [ 25 ] [ ز ] ويمكن أن تحتوي الأسطر على ما يصل إلى 128 حرفًا. [ 27 ]
تضمنت لغة Integer BASIC أيضًا AUTOأمرًا لإدخال أرقام الأسطر تلقائيًا بدءًا من رقم معين AUTO 100، مثل 300، مع إضافة 10 إلى الرقم الأخير مع كل سطر جديد. AUTO 300,5سيبدأ الترقيم من السطر 300 بمقدار خمسة؛ 300، 305، وهكذا. يمكن إيقاف الترقيم التلقائي بإدخال MAN. [ 28 ]
من الميزات المثيرة للاهتمام في المحرر إمكانية تخصيص جزء من الشاشة كـ"نافذة" لعرض التحديثات المباشرة. عادةً ما تكون هذه النافذة هي الشاشة بأكملها، ولكن يمكن تقليصها إلى مساحة أصغر عن طريق POKEتخزين القيم في مواقع الذاكرة من 32 إلى 35. [ 29 ] يمكن استخدام هذه الميزة لإنشاء منطقة نص قابلة للتحرير بينما تكون بقية الشاشة في وضع الرسومات. [ 30 ]
تصحيح الأخطاء
كما هو الحال في معظم لغات BASIC، كانت البرامج تُشغَّل باستخدام RUNالأمر، وكما هو شائع، كان من الممكن توجيهها إلى رقم سطر معين مثل RUN 300. [ 31 ] وكان من الممكن إيقاف التنفيذ في أي وقت باستخدام + [ 32 ] ثم إعادة تشغيله باستخدام tinue، على عكس الأمر الأكثر شيوعًا . [ 33 ]CtrlCCONCONT
لتنفيذ التعليمات خطوة بخطوة، TRACEيمكن استخدامها في موجه الأوامر أو وضعها داخل البرنامج نفسه. عند تفعيلها، تُطبع أرقام الأسطر لكل سطر يزوره البرنامج. ويمكن إيقاف تشغيل هذه الميزة مرة أخرى باستخدام [ 34 ]NOTRACE .
كانت إحدى الميزات غير المألوفة نوعًا ما هي الأمر DSP(الذي يرمز إلى "عرض"). عند مصادفته في برنامج، كان يتم عرض أي تغييرات تطرأ على قيمة متغير ما. على سبيل المثال، DSP Xكان يعرض قيمة X في كل مرة تتغير فيها، بالإضافة إلى رقم السطر الذي حدث فيه التغيير. [ 35 ] وكما هو الحال مع TRACE، كان يتم إيقاف تشغيل DSP باستخدام NODSP. [ 26 ]
أسماء المتغيرات
بينما اقتصرت لغتا Dartmouth BASIC وHP-BASIC على اسم متغير لا يتجاوز حرفين (إما حرف واحد أو حرف متبوع برقم واحد)، وسمحت لغة MS-BASIC بحرف متبوع بحرف أو رقم اختياري (مع تجاهل الأحرف اللاحقة)، تميزت لغة Integer BASIC بدعمها لأسماء متغيرات بأي طول (مثل SUM وGAMEPOINTS وPLAYER2). وكان الشرط الوحيد هو عدم احتواء أسماء المتغيرات على كلمات محجوزة؛ فعلى سبيل المثال، كان اسما THISCOLOR وCOLORFUL غير صالحين لاحتوائهما على الكلمة المفتاحية `<` COLOR، وهي أمر نظام. [ 36 ] إضافةً إلى ذلك، اقتصر طول السطر على 128 حرفًا، لذا لم يكن من الممكن أن يتجاوز اسم المتغير هذا الطول. [ 27 ]
الرياضيات
تستخدم لغة Integer BASIC، كما يوحي اسمها، الأعداد الصحيحة كأساس لحزمة العمليات الحسابية الخاصة بها. تُخزَّن هذه الأعداد داخليًا كرقم مكون من 16 بت، بنظام الترتيب الصغير (كما هو الحال في معالج 6502). يسمح هذا النظام بقيمة قصوى لأي عملية حسابية بين -32767 و32767؛ على الرغم من أن التنسيق كان بإمكانه أيضًا تخزين القيمة -32768، إلا أن BASIC لم تكن قادرة على عرض هذا الرقم. العمليات الحسابية التي ينتج عنها قيم خارج هذا النطاق تُنتج خطأً >32767 ERR. [ 37 ]
تضمنت عوامل التشغيل الوسطية الجمع +والطرح -والضرب *والقسمة /وباقي القسمة والأس باستخدام ^الحرف. أما عوامل التشغيل الثنائية فتضمنت و و AND. ORوشملت المقارنات الثنائية NOTالمجموعة القياسية= من و ...><>=<=<>#
كانت المصفوفات أحادية البعد فقط هي المسموحة، وكان حجمها محدودًا فقط بالذاكرة المتاحة. [ 39 ] كانت الدوال الرياضية متفرقة؛ حيث لم تُدعم سوى ABS(القيمة المطلقة) و SGN(الإشارة) و (العدد العشوائي). [ 40 ] على عكس الإصدارات المشتقة من MS، حيث كان يتم تجاهل المعامل وتُرجع دائمًا قيمة من 0 إلى أقل من 1، استخدمت لغة Integer BASIC المعامل؛ وأرجعت عددًا صحيحًا من 0 إلى 5. [ 41 ]RNDRNDRND(6)
الأوتار
استندت معالجة السلاسل النصية في لغة Integer BASIC إلى النظام المستخدم في لغة HP BASIC. حيث تعاملت هذه اللغة مع متغيرات السلاسل النصية كمصفوفات من الأحرف التي يجب DIMتهيئتها قبل استخدامها. يشبه هذا النموذج المستخدم في لغة C [ 42 ] أو Fortran 77 [ 43 ] . ويختلف هذا عن لغات BASIC الشبيهة بلغة MS، حيث تُعتبر السلاسل النصية نوعًا متغير الطول بطبيعته [ 44 ] . قبل أن تصبح لغات BASIC المشتقة من MS هي المعيار الفعلي ، لم يكن هذا الأسلوب نادرًا؛ فقد استخدمت لغات North Star BASIC [ 45 ] و Atari BASIC [ 46 ] المفهوم نفسه، وكذلك لغات أخرى.
كانت السلاسل النصية في لغة Integer Basic تستخدم مقدارًا ثابتًا من الذاكرة بغض النظر عن عدد الأحرف المستخدمة فيها، بحد أقصى 255 حرفًا. [ 47 ] وقد كان لهذا ميزة تجنب الحاجة إلى عملية جمع البيانات المهملة من الكومة ، والتي كانت بطيئة بشكل ملحوظ في لغة MS BASIC [ h ]، ولكن هذا يعني أن السلاسل النصية الأقصر من الطول المُعلن عنه كانت تؤدي إلى هدر الذاكرة.
تم توفير الوصول إلى السلاسل الفرعية من خلال صيغة تقطيع المصفوفات . على سبيل المثال، طُبعت الأحرف الستة الأولى من السلسلة ، من الحرف 0 إلى الحرف 5. [ 49 ] [ 49 ] [ i ] وتم توفير عملية دمج السلاسل باستخدام النظام نفسه، حيث استُبدلت أي أحرف تبدأ من الموضع 5 بالسلسلة "ABC". [ 50 ] يختلف هذا عن أسلوب معالجة السلاسل في DEC/MS الذي يستخدم دوال السلاسل للوصول إلى السلاسل الفرعية و لعمليات الدمج. [ 51 ] [ j ]PRINTA$(0,5)A$A$(5)="ABC"MID$+
بما أن العديد من الميزات التي توفرها دوال السلاسل النصية أصبحت تُقدم عبر تقطيع المصفوفات، فقد انخفض عدد دوال السلاسل النصية المتاحة. كانت إحدى هذه الدوال LENتُرجع طول السلسلة النصية [ 47 ] ، بينما ASCكانت الأخرى تُرجع رمز ASCII الرقمي للحرف الأول في السلسلة النصية [ 52 ] . إلا أنها كانت تفتقر إلى دالة مكافئة للدالة CHR$التي تُرجع حرف ASCII ذي رمز رقمي مُحدد [ 53 ] .
الرسومات والصوت
عند إطلاق جهاز Apple، كان جهاز التحكم الوحيد المتاح هو وحدة التحكم الجانبية (paddle controller )، التي كانت تحتوي على وحدتي تحكم متصلتين بموصل واحد. وكان بالإمكان قراءة موضع وحدة التحكم باستخدام الدالة PDL، وذلك بتمرير رقم وحدة التحكم، أو 0 أو 1، كما في المثال التالي ، حيث تُرجع الدالة قيمة بين 0 و255. [ 54 ] [ k ]A=PDL(0):PRINTA
لم تتضمن أجهزة آبل مكونات صوتية مخصصة، بل مجرد جهاز تنبيه بسيط. وكان إصدار الأصوات يتم عن طريق إدخال قيمةPEEK في موقع مكبر الصوت المُخزّن في الذاكرة، وهي -16336. [ ] وكان تكرار إدخال هذه القيمة يُنتج نغمات، واقترح الدليل استخدام تعبير رياضي للقيام بذلك، مثل . [ 56 ]S=PEEK(-16336)-PEEK(-16336)-PEEK(-16336)-PEEK(-16336)-PEEK(-16336)
كان دعم الرسومات أكثر تفصيلاً. يتم تشغيل وضع الرسومات باستخدام الأمر `graphics mode` GRوإيقافه باستخدام الأمر ` graphics mode` TEXT. [ 57 ] كان الرسم مشروطًا، ويبدأ عادةً بإصدار أمر لتغيير اللون، والذي يتم عن طريق تعيين متغير وهمي؛ على سبيل المثال، COLOR=12سيُعيّن الأمر `graphics mode` لون الرسم إلى 12، أي الأخضر الفاتح. يمكن للمستخدم بعد ذلك PLOT 10,10إنشاء بقعة واحدة بهذا اللون، [ 58 ]HLIN 0,39 AT 20 أو رسم خط أفقي في الصف 20 يمتد على كامل الشاشة، أو VLIN 5,15 AT 7رسم خط رأسي أقصر في العمود 7. [ 59 ]A=SCRN X,Y يُعيد الأمر `graphics mode` لون الشاشة عند الإحداثيات X وY. [ 52 ] [ m ]
المدخلات/المخرجات
كانت لغة Integer BASIC تفتقر إلى أي أوامر إدخال/إخراج مخصصة، كما كانت تفتقر إلى DATAعبارة `get` و `get` المرتبطة بها READ. ولإدخال البيانات إلى البرنامج وإخراجها منه، كانت وظيفة الإدخال/الإخراج تُعاد توجيهها إلى فتحة بطاقة محددة باستخدام `get` PR#xو ` IN#xget`، اللذين يُعيدان توجيه الإخراج أو الإدخال (على التوالي) إلى الفتحة المرقمة. ومنذ ذلك الحين، أصبح بالإمكان إرسال البيانات إلى البطاقة باستخدام PRINTالأوامر التقليدية وقراءتها منها باستخدام `get` INPUT. [ 52 ]
ملاحظات أخرى
تضمنت لغة Integer BASIC TABميزةً تُتيح وضع المؤشر على عمود مُحدد من 0 إلى 39. وقد اختلفت هذه الميزة عن تلك الموجودة في معظم لغات BASIC الأخرى في كونها أمرًا يتبعه رقم، بدلًا من دالة تُوضع قيمتها بين قوسين؛ فعلى سبيل المثال، يُمكن نقل المؤشر إلى العمود 10 باستخدام الأمر `npm` TAB 10في Integer BASIC [ 60 ]، بينما في MS يتم ذلك باستخدام الأمر `npm` PRINT TAB(10). بالإضافة إلى ذلك، VTABكان الأمر يعمل بشكل مشابه للأمر `npm` TAB، ولكنه يُضيف مسافات رأسية بدلًا من المسافات الأفقية. ولأسباب غير معروفة، كانت الإحداثيات في هذه الحالة من 1 إلى 24 بدلًا من 0 إلى 23. [ 61 ]
تضمنت لغة Integer BASIC POPأمرًا للخروج من الحلقات. [ 52 ] كان هذا الأمر يُزيل العنصر العلوي من مكدس FOR. كما دعمت لغة Atari BASIC الأمر نفسه، [ 62 ] بينما استخدمت لغة North Star BASICEXIT أمرًا آخر . [ 63 ]
تضمنت ذاكرة القراءة فقط (ROM) الخاصة بلغة Integer BASIC أيضًا برنامجًا لمراقبة لغة الآلة ، و" مُجمِّعًا مصغرًا "، وبرنامجًا لتفكيك التعليمات البرمجية لإنشاء برامج لغة التجميع وتصحيح أخطائها . قام ووزنياك بتجميع برنامج المراقبة يدويًا كأول برنامج لجهاز Apple II، ثم استخدمه لكتابة لغة Integer BASIC. [ 64 ] [ 65 ] [ 2 ]
الكلمات المحجوزة
أبل بيسك
كانت لغة Apple BASIC تحتوي على الأوامر التالية: [ 66 ]
AUTO val1 , val2 CLR [ مسح ] DEL val1 , val2 LIST val1 , val2 RUN val1 SCR [ حذف / جديد ] HIMEM = expr LOMEM = expr ( LET ) var = expr INPUT ( prompt ,) var1 , var2 ... PRINT item ( s ) TAB expr FOR var = expr1 TO expr2 STEP expr3 NEXT var IF expr THEN statement IF expr THEN line number GOTO expr GOSUB expr RETURN DIM var1 ( expr1 ), var2 ( expr2 ) ... REM text END POKE expr1 , expr2 CALL expr Functions: ABS (), SGN (), PEEK (), RND (), LEN ()لغة بيسك للأعداد الصحيحة
أضافت لغة Integer BASIC ما يلي: [ 67 ] [ 68 ]
COLOR = expr CON [ متابعة ] DSP GR HLIN expr1 , expr2 AT expr3 MAN NEW [ استبدال SCR ] NOTRACE PLOT expr1 , expr2 POP TEXT TRACE VLIN expr1 , expr2 AT expr3 الدالة: ASC (), PDL (), SCRN ( X , Y )تطبيق
يقرأ برنامج Integer BASIC الأسطر التي يُدخلها المستخدم من مخزن مؤقت، ثم يُمررها عبر محلل يُخرج سلسلة من الرموز . وكجزء من هذه العملية، يتم اكتشاف أخطاء بناء الجملة البسيطة وعرضها. إذا نجح التحليل، يتم تحويل رقم السطر (إن وُجد) من تنسيق ASCII العشري إلى عدد صحيح 16 بت، وأي كلمات مفتاحية إلى رمز عدد صحيح 7 بت. [ 64 ]
تم تمثيل بعض الكلمات الرئيسية برموز متعددة؛ على سبيل المثال، بينما كان لدى Microsoft BASIC رمز واحد للكلمة الرئيسية PRINT، كان لدى Integer BASIC ثلاثة رموز: رمز واحد إذا لم يتبع الكلمة الرئيسية أي وسيط، ورمز واحد إذا تبعها تعبير حسابي، ورمز واحد إذا تبعها سلسلة نصية حرفية. [ 69 ]
تم تحويل القيم العددية، مثل القيمة 500، إلى تمثيلها الثنائي ذي 16 بت (بايتين)، وفي هذه الحالة، $01F4 بالنظام الست عشري . وللإشارة إلى أن هذه قيمة وليست كلمة مفتاحية، أُضيف بايت واحد بين $B0 و $B9 قبل القيمة المكونة من بايتين. [ n ] أما السلاسل النصية، مثل "HELLO WORLD"، فقد تم تحويلها بتعيين البت الأعلى لكل حرف بحيث يُخزن كـ $C1 . وتم تحويل أسماء المتغيرات بنفس الطريقة، حيث تم تحويل الأحرف لتفعيل بتها الأعلى، وتمثيل أي أرقام في الاسم بالبايتات المقابلة من $B0 إلى $B9 ، بحيث يتم تجزئة المتغير إلى $C1B5 . [ 64 ]AA5
إذا تم إدخال السطر بدون رقم سطر، فسيتم تنفيذ الكود مباشرةً من المخزن المؤقت. أما إذا كان يحتوي على رقم سطر، فسيتم نسخه من المخزن المؤقت إلى منطقة تخزين البرنامج. [ 64 ]
استخدم مُفسِّر وقت التشغيل مكدسين للتنفيذ: أحدهما لكلمات العبارات الرئيسية، والآخر لتقييم المعاملات. مُنحت كل عبارة أولويتين: الأولى تُحدد موضعها في عملية متعددة الخطوات، مثل سلسلة من العمليات الحسابية لتحديد ترتيب العمليات ، والثانية تُشير إلى وقت التقييم، على سبيل المثال، حساب القيم الداخلية لصيغة الأقواس. عند مصادفة متغيرات، يُحلل اسمها ثم يُبحث عنها في منطقة تخزين المتغيرات. إذا لم يُعثر عليها، تُضاف إلى نهاية القائمة. ثم يُوضع عنوان تخزين المتغير، الذي ربما أُنشئ حديثًا، على مكدس التقييم. [ 64 ]
تفاصيل ROM
سويت 16
بالإضافة إلى لغة Integer BASIC، احتوت ذاكرة القراءة فقط (ROM) الخاصة بأجهزة Apple على لغة تجميع مخصصة تُعرف باسم SWEET16 . تعتمد SWEET16 على رموز بايت تعمل ضمن آلة افتراضية بسيطة ذات 16 بت . استُخدم هذا النموذج لتمكين الوصول إلى الذاكرة عبر مؤشرات غير مباشرة ذات 16 بت، وحساب الدوال الرياضية ذات 16 بت دون الحاجة إلى ترجمتها إلى كود 6502 الأساسي متعدد التعليمات ذي 8 بت. كُتبت الآلة الافتراضية بأكملها في 300 بايت فقط. يمكن للبرنامج استدعاء SWEET16 عن طريق استدعاء روتين فرعي ، ثم العودة إلى كود 6502 العادي عند اكتمال عمليات 16 بت. [ 70 ]
لم يُستخدم معالج SWEET16 في كود BASIC الأساسي، ولكنه استُخدم لاحقًا لتنفيذ العديد من الأدوات المساعدة. ومن أبرزها روتين إعادة ترقيم الأسطر، الذي تم تضمينه في ذاكرة القراءة فقط (ROM) الخاصة بدليل المبرمج رقم 1، وأُضيف إلى طرازات Apple II اللاحقة، وكان متاحًا للتثبيت من قِبل المستخدم في النماذج السابقة. [ 71 ]
الفاصلة العائمة
على الرغم من احتواء لغة Integer BASIC على إجراءات حسابية خاصة بها، فقد تضمنت ذاكرة القراءة فقط (ROM) الخاصة بجهاز Apple II مكتبة كاملة للحسابات العشرية موجودة في ذاكرة القراءة فقط بين 0 $F425-$F4FBو $F63D-$F65D1. وقد تم تضمين الشفرة المصدرية في دليل Apple II. ويمكن لبرامج BASIC التي تتطلب حسابات عشرية CALLأن تدمج هذه الإجراءات. [ 72 ]
أداء
نظرًا لأن لغة Integer BASIC كانت تعالج جزءًا أكبر من شفرة المصدر الأصلية إلى رموز، فقد كان وقت التشغيل أسرع من الإصدارات التي تتطلب تحليلًا إضافيًا أثناء التشغيل. على سبيل المثال، كانت لغة Tiny BASIC تحوّل رقم السطر فقط إلى رموز، [ 73 ] بينما كانت لغة MS BASIC تحوّل الكلمات المفتاحية فقط. فعلى سبيل المثال، بينما كانت لغة Integer BASIC تحوّل السطر 100 GOTO 200بالكامل إلى رموز يمكن قراءتها وتنفيذها فورًا، كانت لغة MS BASIC تحوّل رقم السطر وعبارة GOTO فقط إلى رموز، بينما بقي الرقم "200" بتنسيقه الأصلي ASCII، وكان لا بد من إعادة تحليله إلى عدد صحيح 16 بت في كل مرة يُصادف فيها السطر. [ 74 ]
بالإضافة إلى ذلك، يوفر العمل حصريًا مع العمليات الحسابية للأعداد الصحيحة دفعةً كبيرةً أخرى في السرعة. ويعود ذلك إلى أن تنسيق 16 بت الأصغر حجمًا يتطلب عمليات وصول أقل إلى الذاكرة، فضلًا عن إلغاء الحاجة إلى تحريك الفاصلة العشرية بعد العمليات الحسابية. ولأن العديد من معايير أداء الحواسيب في ذلك الوقت كانت صغيرة الحجم، وغالبًا ما كانت تُجري عمليات حسابية بسيطة لا تتطلب استخدام الفاصلة العشرية، فقد تفوقت لغة Integer BASIC على معظم لغات BASIC الأخرى .
في أحد أقدم اختبارات الأداء المعروفة للحواسيب الصغيرة، وهي اختبارات Rugg/Feldman ، كان أداء لغة Integer BASIC أسرع بأكثر من الضعف من لغة Applesoft BASIC على نفس الجهاز. [ 76 ] في اختبار Byte Sieve ، حيث كانت العمليات الحسابية أقل أهمية، بينما كان أداء الوصول إلى المصفوفات والحلقات هو السائد، استغرقت Integer BASIC 166 ثانية، بينما استغرقت Applesoft 200 ثانية. [ 77 ] أظهرت مراجعة لمترجم Integer BASIC من Galfo Systems أنه ينتج شفرة أسرع من 1.5 إلى 8 مرات من شفرة Applesoft BASIC المُجمّعة، وأسرع بعشر مرات من شفرة Integer BASIC المُفسّرة، وأسرع بـ 15 مرة من شفرة Applesoft المُفسّرة. [ 78 ] لم تظهر لغة Integer BASIC في اختبار Creative Computing Benchmark ، الذي نُشر لأول مرة عام 1983، حيث لم تكن اللغة مُضمنة في حواسيب Apple في ذلك الوقت. [ 79 ]
تُظهر سلسلة الاختبارات التالية، المأخوذة من مقالتي Rugg/Feldman الأصليتين، [ 76 ] [ 75 ] أداء Integer بالنسبة إلى BASIC المشتق من MS على نفس المنصة.
| نظام | وحدة المعالجة المركزية | أساسي | الاختبار 1 | الاختبار الثاني | الاختبار 3 | الاختبار 4 | الاختبار 5 | الاختبار السادس | الاختبار 7 |
|---|---|---|---|---|---|---|---|---|---|
| أبل 2 | 6502 @ 1 ميجاهرتز | لغة بيسك للأعداد الصحيحة | 1.3 | 3.1 | 7.2 | 7.2 | 8.8 | 18.5 | 28.0 |
| أبل 2 | 6502 @ 1 ميجاهرتز | لغة أبل سوفت بيسك | 1.3 | 8.5 | 16.0 | 17.8 | 19.1 | 28.6 | 44.8 |
فيما يلي ملخص لما قام به كل اختبار:
- الاختبار 1: حلقة for/next حتى 1000.
- الاختبار الثاني: حلقة if/then مع مقارنة بـ 1000.
- الاختبار 3: نفس الاختبار 2 مع إضافة الضرب والقسمة والجمع والطرح بنفس المتغير.
- الاختبار 4: نفس الاختبار 3 مع إضافة الضرب والقسمة والجمع والطرح بواسطة الثوابت.
- الاختبار 5: نفس الاختبار 4 مع إضافة استدعاء روتيني فرعي.
- الاختبار 6؛ هو نفسه الاختبار 5 مع إضافة حلقة داخلية.
- الاختبار 7: نفس الاختبار 6 مع إضافة عدد سكان الجدول.
نموذج التعليمات البرمجية
فيما يلي نسخة من برنامج Breakout مكتوبة بلغة Integer BASIC لعام 1977 لجهاز Apple II، والمذكورة في دليل Apple II Mini Manual. [ 80 ] تحتوي هذه النسخة على عدد من الأخطاء المعروفة. [ 81 ]
يبدأ البرنامج بضبط الشاشة TEXTثم CALL -936مسحها. الأسطر من 20 إلى 27، والإجراءات الفرعية المرتبطة بها في السطرين 100 و200، هي شيفرة اختيار الألوان التي عرضها ووزنياك لجوبز. يُهيئ السطر 30 نافذة النص باستخدام POKE 32,20[ p ] ، ثم يستخدم سلسلة من عبارات COLORو VLINلرسم ساحة اللعب وعرض النتيجة في نافذة النص. تعمل الحلقة الرئيسية بالكامل من السطر 40 إلى 90 مع الإجراءات الفرعية المرتبطة بها. هناك جزء كبير آخر من الشيفرة قرب نهاية البرنامج مخصص لطباعة النتيجة النهائية. من الملاحظات الأخرى المهمة: #مقارنات (عدم التساوي) في السطر 20، وإنتاج صوت حاد باستخدام سلسلة من الأحرف PEEKs في السطر 65 مقارنةً بنغمة منخفضة باستخدام حلقة في السطر 70، ومزج الرسومات والنصوص على شاشة واحدة. [ q ]
5 نص : استدعاء -936 : علامة تبويب عمودية 4 : علامة تبويب 10 : طباعة "*** لعبة كسر الطوب ***" : طباعة 7 طباعة "الهدف هو تدمير جميع الطوب بـ 5 كرات" : من أجل N = 1 إلى 7000 : التالي N 10 تعريف A$ ( 20 )، B$ ( 20 ) : GR : طباعة : إدخال "مرحباً، ما اسمك؟" ، A$ : A = 1 : B = 13 : C = 9 : D = 6 : E = 15 : طباعة "الألوان القياسية،" ؛ A$ ؛ 20 أدخل "؟" ، B$ : إذا كان B$ لا يساوي "N" و B$ لا يساوي "NO" ، فإن 30 : من أجل I = 0 إلى 39 : اللون = I / 2 * ( I < 32 ) : VLIN 0 ، 39 عند I 25 التالي I : POKE 34 ، 20 : PRINT : PRINT : PRINT : من أجل I = 0 إلى 15 : VTAB 21 + I MOD 2 : TAB I + I + 1 : PRINT I ؛: التالي I : POKE 34 ، 22 : VTAB 24 : PRINT : PRINT "الخلفية" ؛ 27 GOSUB 100 : A = E : PRINT "الطوبة الزوجية" ؛: GOSUB 100 : B = E : PRINT "الطوبة الفردية "; : GOSUB 100 : C = E : PRINT "PADLE" ; : GOSUB 100 : D = E : PRINT "BALL" ; : GOSUB 100 30 POKE34 , 20 : COLOR = A : FOR I = 0 TO 39 : VLIN0 , 39 ATI : NEXT I : FOR I = 20 TO 34 STEP 2 : TAB I +1 : PRINT I / 2-9 ; : اللون = B : VLIN 0 , 39 AT I : اللون = C : FOR J = I MOD 4 TO 39 STEP 4 35 VLIN J , J +1 AT I : NEXT J , I : TAB 5 : PRINT "SCORE = 0" : PRINT : PRINT : POKE 34 , 21 : S = 0 : P = S : L = S : X = 19 : Y = 19 : X = 19 40 اللون = A : PLOT X , Y / 3 : X = 19 : Y = RND ( 120 ) : V = -1 : W = RND ( 5 ) -2 : L = L +1 : IF L > 5 THEN 140 : TAB 6 : PRINT "BALL #" ; L :اطبع : من أجل I = 1 إلى 100 : استبدل 200 : التالي I : M = 1 : N = 0 50 J = Y + W : إذا كان J >= 0 و J < 120 ، فإن 60 : W = -W : J = Y : من أجل I = 1 إلى 6 : K = PEEK ( -16336 ) : التالي I 55 إذا كان PEEK ( -16287 ) > 127 ، فإن SW = 1 - SW 60 I = X + V : إذا كان I < 0، فإن 400 : استبدل 200 : COLOR = A : K = J / 3 : إذا كان I > 39، فإن 70 : إذا كان SCRN ( I , K ) = A، فإن 90 : إذا كان I، فإن 120 : N = N + 1 : V = ( N > 9 ) + 1 : W = ( K - P ) * 2 - 5 : M = 1 65 Z = PEEK ( -16336 )- PEEK ( -16336 ) - PEEK ( -16336 ) - PEEK ( -16336 ) - PEEK ( -16336 ) - PEEK ( -16336 ) : GOTO 90 70 FOR I = 1 TO 6 : M = PEEK ( -16336 ) :NEXT I : I = X : M = 0 80 V =- V 90 PLOT X , Y / 3 : COLOR = E : PLOT I , K : X = I : Y = J : GOTO 50 99 PRINT "INVALID. REENTER" ; 100 أدخل "اللون (من 0 إلى 15)" ، E : إذا كان E < 0 أو E > 15، فقم بما يلي : 99 : أرجع 120 إذا كان M، فإن V = القيمة المطلقة ( V ) : VLIN K / 2 * 2 ، K / 2 * 2+1 عند I : S = S + I / 2-9 : VTAB 21 : TAB 13 : اطبع S 123 Q = PEEK ( -16336 ) - PEEK ( -16336 )- PEEK ( -16336 )- PEEK ( -16336 )- PEEK ( -16336 )- PEEK ( -16336 ) - PEEK ( -16336 ) - PEEK ( -16336 )- PEEK ( -16336 ) 124 إذا كان S < 720 ثم 80 130 اطبع "تهانينا، لقد فزت." : انتقل إلى 150 140 اطبع "نتيجتك هي " ؛ S ؛ " هي " ؛ : انتقل إلى 141 + S / 100 141 اطبع "فظيع!" : انتقل إلى 150 142 اطبع "سيئ." : انتقل إلى 150 143 اطبع "ضعيف.": انتقل إلى 150 144 اطبع "مقبول". : انتقل إلى 150 145 اطبع "جيد". : انتقل إلى 150 146 اطبع "جيد جدًا". : انتقل إلى 150 147 اطبع "ممتاز". : انتقل إلى 150 148 اطبع "شبه مثالي". 150 اطبع "نفس الألوان" ؛ : انتقل إلى 20 200 إذا كان SW ثم 220 : Q = ( PDL ( 0 ) - 5 ) / 6 : إذا كان Q < 0 فإن Q = 0 205 إذا كان Q >= 34 فإن Q = 34 : COLOR = D : VLIN Q , Q + 5 عند 0 : COLOR = A : إذا كان P > Q ثم 210 : إذا كان Q ثم VLIN 0 , Q - 1 عند 0 : P = Q : أرجع 210 إذا كان P = Q ثم أرجع : إذا كان Q ≠ 34 ثم VLIN Q + 6 , 39 عند 0 : P = Q : أرجع 220 Q = ( Y - 5 ) / 3 + RND ( 3 ) * SGN ( W ) * ( X < 10 AND V < 0 ) : إذا كان Q < 0 فإن Q = 0 : انتقل إلى 205 400 FOR I = 1 TO 80 : Q = PEEK ( -16336 ) : NEXT I : GOTO 40ملحوظات
- ↑ أو كماقال بيل غيتس ، "لغة BASIC أكثر قوة... باستخدام الفاصلة العائمة". [ 3 ]
- ↑ بلغت تكلفة جهاز IBM 370/155 أكثر من مليوني دولار في عام 1970 (ما يعادل 17 مليون دولارفي عام 2025). [ 6 ]
- ↑ كانت شركة Tymshare تتقاضى حوالي 10 دولارات في الساعة (ما يعادل 83 دولارًافي عام 2025) للوصول إلى أنظمتها، [ 7 ] بينما يمكن العثور على خدمات أصغر مقابل حوالي 5 دولارات . [ 8 ]
- ↑ لم تكن معالجة السلاسل "خاصة به"، بل كانت نفس النظام المستخدم بواسطة HP BASIC.
- ↑ لتوضيح أي لغة BASIC كانت قيد التشغيل، استخدمت شركة Applesoft
]موجه الأوامر. - ↑ فيما أشارت إليه مايكروسوفت بشكل أكثر وصفًا باسم " الوضع الفوري ".
- ↑ يقول هيلمرز أن أدنى رقم سطر هو 1. [ 26 ]
- ↑ ومعطلة تمامًا في بعض الإصدارات. [ 48 ]
- ↑ كما سمحت HP باستخدام [ و ] بدلاً من ( و ).
- ↑ كما أنها تتناقض مع لغة دارتموث بيسك التي استخدمت
CONVERTالأمر لتحويل سلسلة نصية إلى مصفوفة من قيم ASCII والتي قام المستخدم بعد ذلك بمعالجتها وتحويلها مرة أخرى إلى تنسيق سلسلة نصية باستخدام أمر ثانٍCONVERT. - ↑ يشير الدليل، ولكنه لا يصرح بذلك صراحة، إلى أن النطاق الفعلي للقيم أقل من 0 إلى 255. [ 54 ]
- ↑ يُعد الرقم السالب أثرًا جانبيًا لتخزين الأعداد الصحيحة بتنسيق مُوقّع، لذا فإن أي موقع ذاكرة يزيد عن 32767 يظهر كقيمة سالبة في لغة BASIC. [ 55 ]
- ↑ لاحظ الصيغة الغريبة لـ SCRN، والتي هي من الناحية الفنية دالة لأنها تُرجع قيمة، ولكنها لا تستخدم صيغة تشبه الدالة والتي ستكون
A=SCRN(X,Y). - ↑ تم استخدام الرقم الأول من القيمة الأصلية لاختيار قيمة من 0 إلى 9، لذلك في هذا المثال، سيكون الرمز المميز $B5 للرقم الأول من 500.
- ↑ اشتكى بيل غيتس من هذا الأمر، مصرحاً بأنه من غير العدل مقارنة لغة Integer BASIC بلغة BASIC "حقيقية" مثل MS. [ 75 ]
- ↑ بمعنى أن النص يبدأ من السطر 20 من أصل 24 سطرًا على الشاشة، تاركًا أربعة أسطر من النص في الأسفل.
- ↑ للاطلاع على قائمة بمختلف عمليات CALL و PEEK و POKE التي نفذت عمليات شائعة على Apple II، انظر Peeks, Pokes, Calls And Programming Notes ، تشارلز تورلي، 15 ديسمبر 1996.
مراجع
الاقتباسات
- 1 2 3 4 5 6 7 8 9 Wozniak 2014 .
- 1 2 Weyhrich 2001 .
- ↑ روج، توم؛ فيلدمان، فيل (أكتوبر 1977). "مقارنات التوقيت الأساسية... منقحة ومحدثة" . كيلوبود . ص 20-25 .
- ↑ باوم، آلان (18 يوليو 2016). "التاريخ الشفوي لألين باوم" (مقابلة). أجراها ديفيد بروك. ص 12.
- ↑ "تجاوز العشر سنوات" . مجلة MEASURE . هيوليت باكارد. أكتوبر 1976.
- ↑ كوني، مايكل. "التاريخ (الرائع في معظمه) للحاسوب المركزي من شركة IBM" . ARN . مؤرشف من الأصل بتاريخ 23 فبراير 2020. تم الاطلاع عليه بتاريخ 23 فبراير 2020 .
- ↑ بورن، تشارلز؛ هان، ترودي بيلاردو (أغسطس 2003). تاريخ خدمات المعلومات عبر الإنترنت، 1963-1976 . مطبعة معهد ماساتشوستس للتكنولوجيا. ص 387. ISBN 9780262261753.
- ↑ باري، تيم (27 أبريل 1981). "العودة إلى لغة بيسك" . إنفوورلد . ص 7.
- 1 2 ويليامز ومور 1984 ، ص. A71.
- ↑ فيسك، ناثان (2009). فهم القرصنة الإلكترونية . ABC-CLIO. ص 14. ISBN 9780313354748.
- ↑ ووزنياك 1977 .
- ↑ ويريتش 2001 ، لغة [Integer] BASIC، التي شحناها مع أول أجهزة Apple II، لم يتم تجميعها مطلقًا . كانت هناك نسخة واحدة مكتوبة بخط اليد، جميعها مكتوبة بخط اليد، وجميعها مجمعة يدويًا.
- ↑ "مشروع أبل 1" .
- ↑ "إعلان كمبيوتر أبل 1" . 30 نوفمبر 2009.
- ↑ بونيل، ديفيد (سبتمبر 1975). "عبر مكتب المحرر" . ملاحظات الحاسوب . 1 (4). ألبوكيرك، نيو مكسيكو: MITS: 2. مؤرشف من الأصل في 23 مارس 2012.
- ↑ "الألعاب الكلاسيكية: تاريخ كامل للعبة بريك آوت" . جيم سباي. مؤرشف من الأصل في 13 أغسطس 2013. تم الاطلاع عليه في 19 أبريل 2010 .
- ↑ راسكين، روي؛ ووزنياك، ستيفن (أغسطس 1976). "روتينات الفاصلة العائمة للمعالج 6502" . دكتور دوبز . الصفحات 17-19 .
- ↑ دليل مرجعي لجهاز Apple II . شركة Apple Computer. يناير 1978. الصفحات 94-95 .
- 1 2 ووزنياك 2018 .
- ↑ هيرتزفيلد 1985 .
- ↑ راسكين 1978 ، ص 11.
- ↑ راسكين 1978 ، ص 12.
- ↑ راسكين 1978 ، ص 46.
- ↑ راسكين 1978 ، ص 49-55.
- ↑ راسكين 1978 ، ص 48.
- 1 2 هيلمرز 1978 ، ص. 24.
- 1 2 راسكين 1978 ، ص. 118.
- ↑ راسكين 1978 ، ص 65-67.
- ↑ راسكين 1978 ، ص 124.
- ↑ Wozniak 1977 ، "يوفر هذا الوضع المختلط شبكة رسومات ملونة 40 × 40 بالإضافة إلى أربعة أسطر من النص المتحرك في أسفل الشاشة."
- ↑ راسكين 1978 ، ص 100.
- ↑ راسكين 1978 ، ص 15.
- ↑ راسكين 1978 ، ص 52.
- ↑ راسكين 1978 ، ص 107.
- ↑ راسكين 1978 ، ص 100، 101.
- ↑ راسكين 1978 ، ص 38.
- ↑ راسكين 1978 ، ص 27.
- ↑ راسكين 1978 ، ص 61.
- ↑ راسكين 1978 ، ص 94.
- ↑ راسكين 1978 ، ص 40،120.
- ↑ راسكين 1978 ، ص 40.
- ↑ "السلاسل" . learn-c.org .
- ↑ بروكس، ستيف. "الأحرف والسلاسل في لغة فورتران" (ملف PDF) . جامعة هاواي .
- ↑ "المتغيرات الصحيحة، والمتغيرات العشرية، ومتغيرات السلاسل النصية". دليل مبرمج C64 . كومودور.
- ↑ برنامج نورث ستار بيسك الإصدار 6 (ملف PDF) . شركة نورث ستار. 1977. مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 5 مارس 2020. تم الاطلاع عليه بتاريخ 3 مارس 2020 .
- ↑ دليل مرجعي للغة أتاري بيسك . شركة أتاري، 1980. مؤرشف من الأصل بتاريخ 1 مايو 2005. تم الاطلاع عليه بتاريخ 14 أبريل 2020 .
- 1 2 راسكين 1978 ، ص 89.
- ↑ "أنشئ نسختك الخاصة من لغة مايكروسوفت بيسك" .
- 1 2 راسكين 1978 ، ص 88.
- ↑ راسكين 1978 ، ص 92.
- ↑ دليل المستخدم الأساسي لجهاز ألتاير 8080 (ملف PDF) . ميتس. أبريل 1977. صفحة 30.
- 1 2 3 4 راسكين 1978 ، ص 120.
- ↑ ميني 1977 ، ص 17.
- 1 2 راسكين 1978 ، ص. 36.
- ↑ ميني 1977 ، ص 18.
- ↑ راسكين 1978 ، ص 84.
- ↑ راسكين 1978 ، ص 31.
- ↑ راسكين 1978 ، ص 32.
- ↑ راسكين 1978 ، ص 33.
- ↑ راسكين 1978 ، ص 73.
- ↑ راسكين 1978 ، ص 74.
- ↑ دليل مرجعي للغة BASIC من أتاري (ملف PDF) . أتاري. 1983. ص 25.
- ↑ برنامج نورث ستار بيسك الإصدار 6 (ملف PDF) . شركة نورث ستار. 1977. صفحة 8. مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 5 مارس 2020. تم الاطلاع عليه بتاريخ 3 مارس 2020 .
- 1 2 3 4 5 Wozniak 1977 ، ص 42.
- ↑ هيلمرز 1978 ، ص 18.
- ↑ "دليل المستخدم التمهيدي لنظام أبل الأساسي" . أكتوبر 1976.
- ↑ "دليل برمجة أبل 2 بيسك" . 1978.
- ↑ "دليل مرجعي لجهاز أبل 2" (ملف PDF) .
- ↑ بول ر. سانتا ماريا. "فك شفرة لغة Integer Basic لجهاز Apple II" (ملف PDF) . تم الاطلاع عليه بتاريخ 14-09-2020 .
- ↑ ووزنياك 1977 ، ص 43.
- ↑ دليل مبرمجي أبل (ملف PDF) . أبل. 1978.
- ↑ دليل مرجعي لجهاز Apple II (ملف PDF) . يناير 1978. الصفحات 94-95 .
- ↑ أليسون، دينيس (1976). "ابنِ لغة BASIC الخاصة بك" . مجلة دكتور دوب . المجلد 1، العدد 1. ص 11.
- ↑ هارديمان، روجر. "Altair BASIC 3.2 (4K) - تفكيك مشروح" . ص 1.11. مؤرشف من الأصل في 5 نوفمبر 2001.
- 1 2 روج، توم؛ فيلدمان، فيل (أكتوبر 1977). "مقارنات التوقيت الأساسية... منقحة ومحدثة" . كيلوبود . ص 20-25 .
- 1 2 روج، توم؛ فيلدمان، فيل (يونيو 1977). "مقارنات التوقيت الأساسية... معلومات لعشاق السرعة" . كيلوبود . ص 66-70 .
- ↑ جيلبريث، جيم (سبتمبر 1981). "معيار لغة عالية المستوى" . بايت . ص 192.
- ↑ تايلور، جوزيف هـ.؛ تايلور، جيفري س. (سبتمبر 1982). " مقارنة بين خمسة مترجمات للغة Applesoft BASIC" . بايت . الصفحات 440-464 . تاريخ الاسترجاع: 30 ديسمبر 2024 .
- ↑ أهل، ديفيد (نوفمبر 1983). "اختبار مقارنة المعايير" . الحوسبة الإبداعية . ص 260.
- ↑ ميني 1977 ، الصفحات 65-67.
- ↑ "Breakout, Annotated" . GitHub . 16 أغسطس 2021.
فهرس
- دليل استخدام جهاز Apple II Mini . شركة Apple. 1977.
- هيرتزفيلد، آندي (يونيو 1985). "القصة المحزنة لماك بيسيك" . الفولكلور .
- هيلمرز، كارل (مارس 1978). "تفاحة لبايت" . بايت . الصفحات 18-24 ، 30-32 ، 35، 40-46 .
- راسكين، جيف (1978). دليل برمجة لغة بيسك لأجهزة أبل 2 (ملف PDF) . شركة أبل للكمبيوتر.
- ويريش، ستيفن (12 ديسمبر 2001). "التاريخ الجزء 3: أبل 2" . تم الاسترجاع في 16 سبتمبر 2007 .
- ووزنياك، ستيفن (مايو 1977). "وصف النظام / أبل-2" . بايت . ص 34-43 .
- ويليامز، جريج؛ مور، روب (ديسمبر 1984). "قصة أبل / الجزء 1: التاريخ المبكر" . بايت . الصفحات A67– A71 . تاريخ الاسترجاع : 23 أكتوبر 2013 .
- ووزنياك، ستيفن (1 مايو 2014). "كيف كتب ستيف ووزنياك لغة BASIC لجهاز أبل الأصلي من الصفر" . جيزمودو .
- ووزنياك، ستيفن (3 يناير 2018). "Apple BASIC" . Woz.org .
روابط خارجية
- تفكيك لغة البرمجة الأساسية للأعداد الصحيحة في جهاز Apple II ، نسخة مُفككة يدويًا بواسطة بول سانتا ماريا
- مرجع لغة INTEGER BASIC – من موقع Landsnail.com الإلكتروني "مرجع مبرمجي Apple II"
- بطاقة البرامج الثابتة Apple-1 BASIC من تصميم جون كالاند، مع مخطط توضيحي مرفق.
- برنامج Apple II
- مترجمو لغة BASIC
- برنامج مبرمج بلغة التجميع
- عائلة لغات البرمجة الأساسية
