كومودور دوس
نظام التشغيل Commodore DOS ، المعروف أيضًا باسم CBM DOS ، هو نظام تشغيل الأقراص المستخدم مع حواسيب Commodore ذات 8 بت . على عكس معظم أنظمة DOS الأخرى، التي تُحمّل من القرص إلى ذاكرة الوصول العشوائي (RAM) الخاصة بالكمبيوتر وتُنفّذ هناك، يُنفّذ CBM DOS داخليًا في محرك الأقراص: حيث يوجد نظام التشغيل في رقائق ذاكرة القراءة فقط (ROM) داخل محرك الأقراص، ويُشغّل هناك بواسطة معالج واحد أو أكثر من معالجات MOS 6502 المخصصة . وبالتالي، فإن نقل البيانات بين حواسيب Commodore ذات 8 بت ومحركات الأقراص الخاصة بها يُشبه إلى حد كبير اتصال الشبكة المحلية أكثر من عمليات نقل البيانات التقليدية بين القرص والجهاز المضيف.
إصدارات CBM DOS
توجد سبع نسخ على الأقل من نظام التشغيل Commodore DOS بأرقام مميزة؛ فيما يلي قائمة بأرقام النسخ ومحركات الأقراص المرتبطة بها. ما لم يُذكر خلاف ذلك، فإن محركات الأقراص من نوع 5¼ بوصة. يشير الرمز "lp" إلى محركات الأقراص "منخفضة الارتفاع". تتصل محركات الأقراص التي يبدأ رقم طرازها بالرقم 15 عبر بروتوكولات ناقل IEEE-488 التسلسلي (ناقل IEC) الخاصة بشركة Commodore (التحدث/الاستماع)؛ بينما تستخدم جميع المحركات الأخرى ناقل IEEE-488 المتوازي .
- 1.0 – موجود في محركات الأقراص المرنة 2040 و 3040
- 2.0 – موجود في محركات الأقراص المرنة 4040 و 3040
- 2.5 - موجود في محركات الأقراص المرنة 8050
- 2.6 – موجود في محركات الأقراص المرنة 1540 و 1541، بما في ذلك المحرك المدمج في SX-64 ، و 1551 و 2031 (+"lp") و 4031
- 2.7 – موجود في محركات الأقراص المرنة 8050 و 8250 (+"lp") و SFD-1001
- 3.0 – موجودة في محركات الأقراص المرنة 1570 ، و 1571 الخارجية ، و 8280 (8280: 8 بوصة)، بالإضافة إلى محركات الأقراص الصلبة 9060 و 9090.
- 3.1 - موجود في محرك الأقراص المدمج 1571 لأجهزة الكمبيوتر C128DCR
- 10.0 – موجود في محرك الأقراص المرنة 1581 ( 3 + 1/2 بوصة )
كان الإصدار 2.6 هو الإصدار الأكثر استخدامًا والأكثر شهرة على نطاق واسع من إصدارات DOS، وذلك بسبب استخدامه في 1541 كجزء من أنظمة C64 .
ملاحظة: تم تحديد البرنامج الثابت المُعدَّل لجهاز 1571 ، والذي أصلح خطأ الملف النسبي، على أنه الإصدار V3.0. وبالتالي، لا يمكن التمييز بين الإصدارين باستخدام رقم الإصدار وحده.
نظرة عامة فنية
1541 نوع من أنواع الدلائل والملفات
يمكن لقرص كومودور المرن 1541 أن يحتوي على ما يصل إلى 144 ملفًا في مساحة اسم مسطحة (بدون مجلدات فرعية )؛ ويُخزَّن الدليل على المسار 18 المحجوز، والذي يقع في منتصف المسافة بين مركز القرص وحافة قرص أحادي الجانب ذي 35 مسارًا. قد يصل طول اسم الملف إلى 16 بايت ، وهو فريد نظريًا؛ وباستخدام طرق الوصول المباشر إلى بنية الدليل، يُمكن إعادة تسمية ملف باسم ملف آخر - على الرغم من أن الوصول إلى هذه الملفات قد يكون صعبًا أو مستحيلاً. عادةً لا تخدم الملفات ذات الأسماء المتطابقة أي غرض سوى إعلام الملفات أو إدارتها بصريًا. إحدى الحيل الشائعة، المستخدمة، على سبيل المثال، في لعبة The Final Cartridge III ، هي إضافة ملفات تحمل اسمًا "----------------"من نوع معين إلى الدليل، ومن ثم يُمكن إعادة ترتيب الملفات حول هذه الأسطر لتشكيل مجموعات. كما استخدم العديد من مطوري الألعاب وأعضاء مجموعات البرامج المقرصنة ومبرمجي عروض الديمو بعض إدخالات الدليل المخصصة الأكثر ذكاءً.DEL<
قد تحتوي أسماء الملفات على مسافة مُزاحة ( $A0)، وإذا تم عرض قائمة الدليل من خلال لغة BASIC، $A0فسيظهر الجزء من اسم الملف الذي يلي هذه المسافة وكأنه مفصول عن الجزء الأول من اسم الملف بعلامة اقتباس، مما يجعل BASIC لا يعتبره جزءًا من اسم الملف الكامل. يمكن استخدام هذه الخاصية لإنشاء إدخالات دليل مثل ، والتي ستظهر بعد ذلك في قائمة الدليل على النحو التالي، على سبيل المثال،SAVE "PROGRAM⇧ Shift–space Commodore–DUDE",8,132 "برنامج"، 8،1 PRG[ 1 ] عندما يُحرّك المستخدم المؤشر إلى بداية السطر، ويكتب الكلمة فوق حجم الملف، ثم يضغط على مفتاح الإدخال ، فإن لغة BASIC تُفسّر ذلك على أنه أمر تحميل، مما يؤدي إلى تحميل البرنامج في الذاكرة. لن يتم تنفيذ أي شيء بعد النقطتين أو العنوان الثانوي، لأن الحاسوب يتجاهل أي أمر بعد أمر التحميل. [ 2 ] بدلاً من ذلك، يمكن للمستخدم الضغط على مفتاح الإيقاف لتشغيل البرنامج تلقائيًا. [ 3 ]LOADRETURNLOAD"PROGRAM",8,1...⇧ ShiftRUN/STOPLOADRUN
سيؤدي تضمين بايت فارغ في اسم ملف إلى مقاطعة عملية عرض الملفات بعد تحميلها بواسطة لغة BASIC. وإذا وُجدت ثلاثة بايتات فارغة، فسيصعب عرض الملفات باستخدام BASIC. وقد جرب العديد من مبرمجي لغات الآلة استخدام البايتات الفارغة في محاولة لجعل الوصول إلى التعليمات البرمجية والتلاعب بها أكثر صعوبة على مبرمجي BASIC.
في لغة BASIC، يمكن الوصول إلى الدليل كبرنامج شبه BASIC غير قابل للتنفيذ باستخدام (أو في حالة وجود قرصين) متبوعًا بـ . يحتوي السطر الأول على رقم سطر 0 أو 1 (يشير إلى رقم القرص)، ويعرض بشكل معكوس اسم القرص ومعرّفه، بالإضافة إلى رمز مختصر لإصدار DOS الذي تم إنشاؤه به (تختلف الرموز فقط بقدر استخدام إصدارات DOS لتنسيقات أقراص غير متوافقة: "2A" مستخدم في معظم إصدارات DOS مقاس 5.25 بوصة، و"3D" في إصدار 1581 مقاس 3.5 بوصة). تحتوي الأسطر التالية على حجم الملف (بوحدات كتل القرص) كرقم سطر شبه، متبوعًا باسم الملف بين علامتي اقتباس ورمز النوع المكون من ثلاثة أحرف. يعرض السطر الأخير عدد الكتل غير المخصصة على القرص (أيضًا كرقم سطر شبه)، متبوعًا بعبارة "BLOCKS FREE".LOAD"$0",8LOAD"$1",8LIST
في جهاز كومودور 64 ، سيؤدي إدخال الأمر إلى ملء الشاشة ببيانات غير مفهومة بدلاً من تحميل الدليل إلى ذاكرة الوصول العشوائي (RAM) الخاصة بلغة BASIC. والسبب في ذلك هو أن محرك الأقراص يُخصص للدليل عنوان تحميل $ 0401 (1025)، وهو ما يُعادل بداية لغة BASIC في جهاز كومودور PET ، ولكنه يُطابق ذاكرة الشاشة الافتراضية في جهاز C64 (بدءًا من الحرف الثاني في السطر الأول من الشاشة).LOAD"$",8,1
يؤدي عرض الدليل باستخدام أمر معين إلى استبدال برنامج BASIC الموجود في الذاكرة. يسمح برنامج DOS Wedge والعديد من الخراطيش والملحقات الخارجية، مثل Epyx Fast Load و Action Replay و The Final Cartridge III، بعرض دليل القرص باستخدام أوامر خاصة تقوم بتحميل الدليل إلى ذاكرة الشاشة دون إتلاف برنامج BASIC الحالي. تتضمن بعض إصدارات Commodore BASIC أمرًا يؤدي الوظيفة نفسها.LOAD"$",8DIRECTORYCATALOG
أنواع الملفات التالية مدعومة:
SEQ- الملف التسلسلي هو ملف بيانات يُمكن قراءته بشكل خطي من البداية إلى النهاية.
SEQتُستخدم هذه الملفات عادةً لتخزين المستندات أو الملفات النصية التي يتم إنشاؤها بواسطة معالج نصوص أو محرر نصوص مشابه. يُشابه الملف التسلسلي الملف المسطح في أنظمة لينكس أو يونكس ، حيث لا يمتلك بنية داخلية مُتخصصة. لا يُمكن الانتقال إلى أي موقع عشوائي في الملف التسلسلي، لعدم وجود ما يُماثلlseekاستدعاء النواة الموجود في أنظمة التشغيل الشبيهة بيونكس . PRGPRGتحتوي الملفات عادةً على شفرة برمجية قابلة للتنفيذ، على الرغم من إمكانية استخدامها أيضًا لملفات البيانات.PRGيقرأ روتين "تحميل الملف" في النواة أول بايتين من الملف ويستخدمهما لتحديد عنوان التحميل (يتم تخزينهما بتنسيق little endian ).REL- الملف النسبي هو نوع من أنواع الملفات التسلسلية، حيث توجد آلية فهرسة تُعرف بالقطاعات الجانبية، مما يسمح بالوصول إلى السجلات بشكل مباشر. قد يصل حجم السجلات إلى 254 بايت كحد أقصى، ويتم الوصول إليها باستخدام رقم أساسي يبدأ من 1، مما يتيح الوصول العشوائي إلى أي جزء من الملف.
USR- يحتوي الملف الذي يحدده المستخدم على بنية داخلية مطابقة لبنية الملف التسلسلي. كان الغرض الأصلي لشركة كومودور من هذا النوع من الملفات هو تسهيل تطوير نظام التشغيل DOS، حيث يمكن نسخ محتوى الملف إلى مخزن مؤقت على القرص لتنفيذه بواسطة المعالج الدقيق للقرص. لم تستخدم سوى برامج قليلة هذا النوع من الملفات. بعض التطبيقات التي تستخدم هياكل أقراص منخفضة المستوى غير قياسية تحفظ البيانات بتنسيق USR، والذي أصبح يُعتبر بمثابة إشارة للمستخدم "اتركني وشأني، لا تحاول النسخ أو الحذف". ومن أبرز الأمثلة على ذلك، أن ملفات "VLIR" الخاصة بنظام GEOS تظهر
USRكملفات عادية. DEL- نوع ملف غير موثق يُستخدم داخليًا، يشبه في بنيته الملف التسلسلي. يجب إنشاء هذا النوع من الملفات عن طريق التعديل المباشر لدليل القرص.
يشير وجود علامة النجمة ( **) قبل نوع الملف في قائمة الدليل (على سبيل المثال، *SEQ) إلى أن الملف لم يُغلق بشكل صحيح بعد الكتابة. عند إصدار أمر بإغلاق ملف مفتوح للكتابة، يتم تفريغ المخزن المؤقت المرتبط به إلى القرص، ويتم تحديث خريطة توفر الكتل (BAM) لتعكس بدقة الكتل المستخدمة. في حال تعطل برنامج أو حدوث مشكلة أخرى (مثل قيام المستخدم بإزالة القرص أثناء فتح ملف) مما ينتج عنه "ملف يتيم"، يُشار إليه أيضًا باسم "ملف تالف"، فلن يتم تفريغ المخازن المؤقتة ، ولن تعكس خريطة توفر الكتل (BAM) استخدام القرص بدقة، مما يعرض القرص لخطر التلف. لا يمكن الوصول إلى الملف التالف عمومًا (ولكن يمكن فتحه في وضع "التعديل")، وقد تؤدي محاولة استخدام scratchأمر DOS لحذف الملف إلى تلف نظام الملفات ، مثل الربط المتبادل. الطريقة العملية الوحيدة لإزالة أحد هذه الملفات هي فتح الملف في وضع "التعديل" (وإصلاحه)، أو التحقق من صحة القرص (انظر validateأمر DOS أدناه)، حيث تُعيد هذه الطريقة بناء ملف BAM وتزيل مراجع الملفات التالفة من الدليل. قد يؤدي خطأ الحفظ مع الاستبدال سيئ السمعة إلى إنشاء ملفات مُلغّمة.
*DELهو نوع خاص يُكتب في مدخل الدليل على القرص للملفات المحذوفة. لا تظهر هذه الملفات في قائمة الدليل العادية، وتُعاد استخدام كتل بياناتها ومدخلات دليلها بواسطة الملفات التي تُنشأ لاحقًا. تسمح بعض البرامج المساعدة باستعادة هذه الملفات المحذوفة إذا لم تُستبدل كتل بياناتها ومدخلات دليلها بملفات أخرى. DEL filesتُستخدم هذه الملفات عادةً لإدراج لافتات أو أقسام تعليقات في قائمة الدليل.
أنواع الملفات التي <تنتهي بـ (على سبيل المثال، ) تُعتبر "مُقفلة"، ولا يمكن حذفها ، ولكن يمكن فتحها للقراءة. لا يوجد أمر في نظام التشغيل Commodore DOS يسمح بتعيين هذه الحالة أو إزالتها بشكل صريح، ولكن تم تطوير العديد من الأدوات المساعدة الخارجية لتمكين ذلك. تقرأ هذه الأدوات عادةً الدليل باستخدام أوامر الوصول المباشر، وتُجري التعديلات اللازمة على البيانات الأولية، ثم تُعيد كتابة التغييرات إلى القرص.PRG<
الوصول إلى الملفات
يُعدّ الوصول إلى الملفات في المقام الأول مسألة تخص الحاسوب المضيف. تحتوي ذاكرة القراءة فقط (ROM) الخاصة بنواة النظام على الإجراءات الأساسية اللازمة للوصول إلى الملفات، بينما تحتوي ذاكرة القراءة فقط (ROM) الخاصة بلغة BASIC على مستوى أعلى من التجريد للوصول إلى الملفات باستخدام صيغة BASIC. أما المكونات التي تخص نظام DOS نفسه فهي تحليل أسماء الملفات والعنوان الثانوي. سيقدم هذا القسم نظرة عامة على أوامر BASIC الضرورية من أجل الإلمام الكامل بالموضوع.
يتطلب فتح ملف على وحدة تخزين كومودور معالجة عدد من المعاملات التي تُشابه إلى حدٍ ما إجراءات فتح الملفات في بيئات أخرى. وبما أن نظام التشغيل DOS يعمل فعليًا في وحدة تحكم القرص، يجب أن تُمرر عملية فتح الملف معلومات كافية إلى القرص لضمان تفسير واضح لا لبس فيه. فيما يلي مثال على عبارة نموذجية في لغة BASIC لكتابة ملف تسلسلي:
OPEN3,8,4,"0:ADDRESSBOOK,S,W"
المعايير التي تلي OPENالفعل هي كما يلي:
- 3
- يُحدد هذا المُعامل، وهو رقم الملف ، الملف المفتوح منطقيًا داخل نظام تشغيل الحاسوب ، ويُشابه مُعرّف الملف في أنظمة التشغيل الشبيهة بنظام يونكس . لا يُرسل هذا الرقم إلى القرص، وبالتالي لا يعرفه نظام تشغيل القرص ولا يستخدمه. يتراوح رقم الملف بين 1 و254 (شاملًا)، ويُعيّنه المُبرمج، ويجب أن يكون فريدًا في حال فتح أكثر من ملف في الوقت نفسه. بمجرد فتح الملف، تستخدم جميع إجراءات الإدخال والإخراج في البرنامج رقم الملف. في برامج لغة التجميع ، يُشار إلى هذه القيمة غالبًا باسم LA (العنوان المنطقي)، وهو اختصار مُشتق من الرمز الذي يُشير إلى موقع الذاكرة حيث يُخزّن رقم الملف. تتسبب أرقام الملفات الأكبر من 127 في كتابة النظام لسطر جديد بعد كل سطر إرجاع (مفيد، على سبيل المثال، لترك مسافة مزدوجة بين الأسطر في المستند).
- 8
- يُحدد هذا المُعامل، وهو رقم الجهاز ، جهازًا طرفيًا مُعينًا مُتصلًا بالكمبيوتر. تُعنون الأجهزة من 0 إلى 3 لوحة المفاتيح، وشريط الكاسيت، وواجهة RS-232 ، وشاشة العرض، على التوالي، وكلها تُتحكم بها مباشرةً ذاكرة القراءة فقط (ROM) الخاصة بنظام التشغيل. أما الأجهزة ذات الأرقام 4 وما فوق، فتُعنون الأجهزة المُتصلة بناقل الأجهزة الطرفية، مثل الطابعات أو محركات الأقراص. في حالة محرك الأقراص، يُشير رقم الجهاز إلى وحدة التحكم الخاصة بالوحدة، وليس إلى آلية (آليات) محرك الأقراص داخلها. اصطلاحًا، يكون رقم الجهاز لمحرك الأقراص الأول في النظام 8، وللمحرك الثاني، إن وُجد، 9، وهكذا، حتى يصل العدد الأقصى إلى 15 (عند توصيل ثمانية محركات أقراص). استُمدّ نظام أرقام الأجهزة من ناقل IEEE-488 (أو واجهة الأغراض العامة GPIB ) المُستخدم مع طرازات Commodore PET/CBM. في برامج لغة التجميع، يُشار إلى هذه القيمة غالبًا بالرمز FA أو PA (العنوان الفيزيائي)، وهو اختصار لموقع الذاكرة الذي يُخزن فيه رقم الجهاز.
- 4
- يشير هذا المعامل، وهو العنوان الثانوي ، الذي يتراوح بين 0 و15، إلى قناة اتصال محددة مُنشأة مع وحدة تحكم الجهاز، ويتم تمريره إلى الجهاز عند إصدار أمر "التواصل" أو "الاستماع" له على ناقل البيانات الطرفي. وكما هو الحال مع رقم الملف، يُحدد المبرمج العنوان الثانوي، ويجب أن يكون فريدًا للجهاز المعني. يُستخدم النطاق من 0 إلى 14 لنقل البيانات من وإلى الجهاز، بينما يُستخدم الرقم 15، المعروف باسم "قناة الأوامر"، لإصدار أوامر إلى وحدة تحكم الجهاز (مثل إعادة تسمية ملف على القرص)، إذا كان الجهاز يدعم هذه العملية. في محركات الأقراص، تُربط العناوين الثانوية من 0 إلى 14 بمخازن مؤقتة داخل وحدة التحكم، مما يُنشئ اتصالًا مع ملف محدد على قرص محدد؛ ولأن محرك الأقراص، كما ذُكر سابقًا، لا يعرف رقم الملف ، فإنه يستخدم العنوان الثانوي فقط للتمييز بين عدة ملفات مفتوحة في الوقت نفسه. من ناحية أخرى، لا يتأثر نظام التشغيل المضيف بالعنوان الثانوي. يتم إرسال هذا العنوان إلى القرص عند كل عملية وصول إلى الملف، ولكنه لا يُستخدم من قِبل المضيف في أي وقت آخر. في برامج لغة التجميع، يُشار إلى هذه القيمة غالبًا باسم SA (العنوان الثانوي).
- سلسلة الأوامر
"0:ADDRESSBOOK,S,W"يُشار إلى هذا المعامل رسميًا في وثائق كومودور باسم سلسلة الأوامر ، ويتم تفسيره بواسطة وحدة تحكم الجهاز المراد الوصول إليه. في حالة وحدة محرك الأقراص، يتكون هيكل سلسلة الأوامر الرسمي من رقم آلية محرك الأقراص (0:يُرجى عدم الخلط بينه وبين رقم الجهاز)، واسم الملفADDRESSBOOK، ونوع الملف (Sمتسلسل في هذا المثال)، ووضع الوصول (Wمفتوح للكتابة في هذا المثال). عمليًا، قد يتم حذف بعض هذه المعاملات. على الأقل، يُطلب اسم الملف فقط إذا كان الملف سيُفتح للقراءة.
- يُحدد رقم محرك الأقراص آلية محرك الأقراص المتصلة بوحدة تحكم القرص، وهو يُشابه رقم الوحدة المنطقية في وحدة تحكم SCSI القادرة على التحكم في آليات متعددة (مثل وحدات تحكم OMTI SASI التي طُوّرت للعمل مع محركات الأقراص الصلبة ST-412 / ST-506 في ثمانينيات القرن الماضي). في وحدات الأقراص المرنة، تكون الآلية الأولى هي محرك الأقراص 0: والثانية هي 1:. من الشائع حذف رقم محرك الأقراص عند التواصل مع وحدة قرص مرن أحادية المحرك، حيث أن 0: هو القيمة الافتراضية في هذه الوحدات، ولكن نظرًا لأن حذف الرقم قد يُسبب بعض الأخطاء غير المعروفة في نظام DOS، فإن هذه الممارسة غير مُستحسنة (يُعادل استخدام النقطتين الرأسيتين 0: ويكفي لتجنب هذه الأخطاء). ويُعد نظام القرص الصلب الفرعي Lt. Kernel استثناءً لهذه الاتفاقية ، حيث يشير رقم محرك الأقراص إلى "الوحدات المنطقية" ( محركات الأقراص الافتراضية التي تم إنشاؤها على محرك أقراص فعلي واحد)، مما جعل استخدام صيغة مثل 4: أو 10: ضروريًا إذا لم يكن الملف المراد فتحه موجودًا على الوحدة المنطقية صفر (المكافئ لآلية محرك الأقراص صفر في وحدة القرص المرن المزدوج).
يمكن أيضًا تحميل الملفات وحفظها باستخدام أوامر ` LOADbashrc` و`bashrc` SAVE. كما يمكن استخدام مُحدِّدات أسماء الملفات هنا، على سبيل المثال، يحفظ الأمر `bashrc` برنامج BASIC في ملف `(program)`، بينما يحفظ الأمر `bashrc` برنامج BASIC في ملف تسلسلي. إذا لم يتم تحديد العنوان الثانوي أو تم تحديده بالقيمة 0 (مثل `0` )، فسيتم حفظ/تحميل الملف من منطقة ذاكرة BASIC (التي تبدأ افتراضيًا في C64 من 0801 $ ). أما إذا تم تحديد العنوان الثانوي بقيمة غير صفرية (مثل `0` )، فسيتم تحميل البرنامج بدءًا من العنوان المحدد في الملف نفسه (رأس PRG، وهو أول بايتين من الملف) - وهذا النوع من الأوامر أكثر شيوعًا عند تحميل برامج لغة الآلة.SAVE"FILE",8PRGSAVE"0:FILE,SEQ,WRITE",8,1LOAD"FILE",8LOAD"FILE",8,1
تم تقديم خاصية إعادة توجيه التحميل لأول مرة في جهاز VIC-20، حيث كان بإمكان هذا الجهاز بدء تشغيل ذاكرة الوصول العشوائي (RAM) الخاصة بلغة BASIC من مواقع متعددة، وذلك بحسب توسعة الذاكرة المُثبّتة. لم تدعم سلسلة Commodore PET الأقدم خاصية إعادة التوجيه، لذا كان من الممكن أن يكون لها نفس التأثير: تحميل الملف في نفس منطقة الذاكرة التي تم حفظه منها. تحدث عملية إعادة توجيه التحميل في الجهاز المضيف، وهو استثناء لما ذُكر سابقًا حول استخدام العنوان الثانوي داخليًا فقط. نظرًا لأن جهاز PET لا يدعم إعادة توجيه الملفات، يجب تعديل برامج BASIC المكتوبة على أجهزة Commodore الأحدث باستخدام محرر قطاعات لتغيير بايتات الترويسة. كما يُمكن استخدام مُراقب لغة الآلة المُدمج في جهاز PET لتغيير عنوان الربط لبرنامج BASIC بعد تحميله.LOAD"FILE",8LOAD"FILE",8,1
سيقوم هذا الأمر بتحميل البرنامج الأول على القرص بدءًا من موقع الذاكرة المحدد في الملف. يُعد هذا الأمر من أكثر أوامر التحميل شيوعًا على هذه المنصات، وهو الطريقة المُستخدمة لتشغيل معظم البرامج التجارية، على سبيل المثال. تجدر الإشارة إلى أن استخدام الأحرف البديلة سيختار اسم الملف الأول فقط عندما لا يكون أي ملف آخر على هذا القرص قد تم الوصول إليه من قبل؛ حيث يتم الاحتفاظ باسم الملف الأخير المستخدم في الذاكرة، وستقوم الأوامر اللاحقة بتحميل هذا الملف بدلاً من الملف الأول. (مع ذلك، سيقوم الأمر `or` دائمًا بتحميل الملف الأول على القرص).LOAD"*",8,1LOAD"*",8,1LOAD"0:*",8,1LOAD":*",8,1
يتم الوصول إلى مجلدات الأقراص في وحدات الأقراص الثنائية باستخدام `<div>` و`<div>` . ولا يصل هذان الخياران إلى المجلد نفسه، بل إلى الملفات الفعلية الموجودة على أحد القرصين والتي تحمل نفس الاسم . ويمكن تحميل المجلدات الجزئية بإضافة نقطتين رأسيتين وقالب: على سبيل المثال، سيؤدي `<div>` إلى تحميل مجلد جزئي يعرض فقط الملفات التي تبدأ أسماؤها بالحرف K والتي هي من نوع PRG؛ مع العلم أن جميع هذه المجلدات الجزئية لا تزال تحتوي على سطر اسم القرص الأول وسطر "BLOCKS FREE" الأخير.LOAD"$0",8LOAD"$1",8"0:$""1:$""$"LOAD"$0:K*=P",8
خطأ الحفظ مع الاستبدال
يُوفر نظام التشغيل Commodore DOS أيضًا أمر "الحفظ مع الاستبدال"، الذي يسمح بحفظ ملف فوق ملف موجود دون الحاجة إلى استبدال SCRATCHالملف الموجود أولًا. كان ذلك يتم بإضافة @رمز إلى اسم الملف أثناء عملية OPENالحفظ SAVE- على سبيل المثال، . لسنوات، انتشرت شائعات، بدءًا من محرك الأقراص 4040، عن وجود خلل في تنفيذ الأمر. في البداية، أنكر بعض المعلقين ذلك. وعُرضت جوائز لإثبات وجود هذا الخلل. [ 4 ] بحلول أوائل عام 1985 ، نصحت مجلة Compute! قرائها بتجنب استخدام الأمر. [ 5 ] في ذلك العام، نشر العديد من المؤلفين بشكل مستقل مقالات [ 4 ] [ 6 ] [ 7 ] [ 8 ] تُثبت أن خلل "الحفظ مع الاستبدال" حقيقي، وتضمنت طرقًا لتفعيله.SAVE"@MY PROGRAM",8
شملت الأجهزة المتأثرة محرك الأقراص 1541 أحادي القرص ومحرك الأقراص 4040 ثنائي القرص؛ بينما لم يُظهر محركا الأقراص 8050 و8250 هذه المشكلة. [ 4 ] اقترح بعض المعلقين إمكانية تجنب هذا الخلل بتحديد 0:رقم محرك الأقراص بشكل صريح عند الحفظ، [ 6 ] على الرغم من أنه تبين لاحقًا أن أي عملية على القرص دون تحديد رقم محرك الأقراص كافية للتسبب في هذا الخلل. [ 9 ] نشأ الخلل من كون تطبيقات نظام التشغيل DOS المتأثرة عبارة عن نسخ معدلة من نظام التشغيل DOS الموجود في محركات الأقراص المزدوجة السابقة من كومودور PET، مثل محرك الأقراص 8050. وقد أدى ذلك إلى إنشاء "محرك أقراص وهمي 1:" في أنظمة محركات الأقراص أحادية القرص، مما نتج عنه تخصيص مخزن مؤقت غير ضروري في بعض الحالات. ولأن أمر "الحفظ مع الاستبدال" استخدم جميع مخازن الأقراص الخمسة، ولأن طريقة تخصيص المخزن المؤقت "الوهمي" لم تكن مطابقة للمواصفات، فقد يؤدي ذلك إلى كتابة بيانات مشوشة على القرص.
في سبتمبر 1986، نشر فيليب أ. سلايميكر مقالًا [ 10 ] يصف فيه بالتفصيل سبب الخلل ويقدم تصحيحات لذاكرة القراءة فقط (ROM) الخاصة بمحرك الأقراص 1541؛ حيث يمكن للمستخدمين الذين يمتلكون جهاز نسخ ذاكرة القراءة فقط القابلة للمسح والبرمجة (EPROM) إنتاج ذاكرة قراءة فقط مُصححة خاصة بهم، والتي يمكن استبدالها في محرك الأقراص. أُبلغت شركة كومودور بنتائج سلايميكر، ورغم أنها لم تُصدر تحديثًا رسميًا لذاكرة القراءة فقط الأصلية لمحرك الأقراص 1541، إلا أنها أصلحت الخلل في المراجعة الخامسة من ذاكرة القراءة فقط لمحرك الأقراص 1571، وكذلك في ذاكرة القراءة فقط لمحركي الأقراص 1541-c و1541-II. على الرغم من عدم دعم كومودور، فمن المعروف أنه يمكن أيضًا استخدام برنامج التشغيل الثابت لمحرك الأقراص 1541-II (وليس لمحرك الأقراص 1541-c) في محرك الأقراص 1541 الأصلي باستخدام ذاكرة القراءة فقط القابلة للمسح والبرمجة (EPROM)، مما سيؤدي إلى إصلاح الخلل في ذلك المحرك أيضًا.
قناة القيادة
كما ذُكر سابقاً، يتم الوصول إلى نظام التشغيل Commodore DOS عبر "قناة الأوامر"، باستخدام صيغة مشابهة لتلك المستخدمة للوصول إلى الملفات. ويتم إصدار الأوامر إلى نظام التشغيل DOS واسترجاع رسائل الحالة والخطأ الناتجة عن الأوامر عن طريق فتح ملف على الجهاز باستخدام 15 كعنوان ثانوي، على سبيل المثال:
OPEN1,8,15
لاسترداد حالة الجهاز وعرضها، يمكن كتابة الكود التالي:
OPEN1,8,15:INPUT#1,E,E$,T,S:PRINTE,E$,T,S:CLOSE1
في المثال أعلاه، Eسيحتوي على رقم الخطأ (إن وجد؛ سيكون صفرًا إذا لم يكن هناك خطأ)، E$وسيكون وصفًا نصيًا موجزًا للخطأ، Tوسيمثل مسار القرص الذي حدث فيه الخطأ، وسيكون Sالقطاع على المسار Tالذي يشير إليه الخطأ. إذا لم يكن هناك خطأ، فسيكون ما يعادل00,OK,00,00ستُعاد القيمة في المتغيرات الأربعة. لاحظ أن INPUT#هذا الفعل خاص بوضع التشغيل فقط. كذلك، في البرامج التي تُصدر العديد من أوامر القرص، من المعتاد فتح ملف لقناة أوامر الجهاز عند بدء تشغيل البرنامج وعدم إغلاقه حتى انتهاء البرنامج.
توفر إصدارات Commodore BASIC 4.0 والإصدارات الأحدث متغيرًا وهميًا يُشار إليه بـ DS$يمكن استخدامه لاسترجاع حالة محرك الأقراص بدلاً من الكود المذكور أعلاه. هذا المتغير المحجوز غير متوفر في الإصدارات الأقدم من BASIC، لذا يجب قراءة قناة الأوامر يدويًا كما هو موضح أعلاه. لاحظ أنه مباشرةً بعد التشغيل أو إعادة التشغيل، سيتم إرجاع إصدار DOS. على سبيل المثال، سيعيد الإصدار 1541 القيمة .73، سي بي إم دوس الإصدار 2.6 1541،00،00. رمز الخطأ 73 شائع في جميع طرازات محركات الأقراص ويمكن استخدامه لتحديد ما إذا تمت إعادة ضبط محرك الأقراص إلى حالة التشغيل الخاصة به.
أوامر نظام التشغيل DOS
| يأمر | وصف | تنفيذ BASIC 1.x و 2.x | تنفيذ إسفين DOS | تطبيق BASIC 3.0+ |
|---|---|---|---|---|
| جديد | قم بتهيئة القرص، وتجهيزه للاستخدام، وحذف أي بيانات موجودة عليه. سيؤدي حذف مُعرّف القرص المكون من حرفين إلى حذف جميع الملفات الموجودة على القرص المُهيأ مسبقًا بسرعة. | OPEN 15,8,15,"N0:disk name,identifier":CLOSE 15 | @N0:disk name,identifier | HEADER "disk name",identifier |
| يخدش | حذف ملف من القرص (أو عدة ملفات، باستخدام مطابقة الأحرف البديلة) | OPEN 15,8,15,"S0:file name":CLOSE 15 | @S0:file name | SCRATCH "file name" |
| إعادة تسمية | أعد تسمية ملف على القرص. لاحظ أن الاسم الجديد يأتي أولاً (باستثناء كود BASIC 3.0+)! | OPEN 15,8,15,"R0:new name=old name":CLOSE 15 | @R0:new name=old name | RENAME "old name" TO "new name" |
| تهيئة | أعد ضبط محرك الأقراص واقرأ ملف BAM الخاص بالقرص في ذاكرته الداخلية. نادرًا ما تكون هناك حاجة لذلك، حيث يقوم محرك الأقراص عادةً بذلك تلقائيًا، إلا إذا تم استبدال قرص بآخر يحمل نفس المعرّف. | OPEN15,8,15,"I0:":CLOSE15 | @I0: | DCLEAR(يدعم الإصدار 7.0 وما فوق من لغة BASIC فقط) |
| التحقق من الصحة | يُجري هذا البرنامج عملية مطابقة بين ملف BAM ودليل القرص، ويُخصّص جميع الكتل المُستخدمة ويُحرّر جميع الكتل غير المُستخدمة من قِبل الملفات، ويحذف جميع الملفات غير المُغلقة من الدليل. وهو يُشابه أدوات CHKDSK / ScanDisk في أنظمة تشغيل مايكروسوفت. | OPEN15,8,15,"V0:":CLOSE15 | @V0: | COLLECT |
| ينسخ | نسخ ملف على نفس القرص (أو قرص آخر في نفس وحدة الأقراص المزدوجة) باسم ملف مختلف. لاحظ أن الاسم الجديد يأتي أولاً (باستثناء كود BASIC 3.0 والإصدارات الأحدث)! يتطلب النسخ إلى قرص آخر بدون وحدة أقراص مزدوجة استخدام برنامج مساعد. | OPEN 15,8,15,"C0:new name=0:existing name":CLOSE 15 | @C0:new name=0:existing name | COPY"existing name"TO"new name" |
| ينسخ | نسخ قرص كامل. هذه الخاصية متاحة فقط في وحدات القرصين، وإلا يجب استخدام برنامج مساعد. يُكتب رقم القرص الهدف أولاً، ثم رقم القرص المصدر (باستثناء كود BASIC 3.0 والإصدارات الأحدث). | OPEN15,8,15,"D1=0":CLOSE15 | @D1=0 | BACKUP D0 TO D1 |
يوجد أيضًا أمر للبحث في الملفات من النوع RELative ، والعديد من RECORD#أوامر الوصول المباشر على مستوى الكتل BLOCK-READ، وإدارة الكتل، ومعالجة ذاكرة القرص وتنفيذ التعليمات البرمجية على معالج القرص، ووظائف قابلة للتخصيص من قِبل المستخدم . وقد أُعيد تخصيص بعض الوظائف التي كان BLOCK-WRITEمن المفترض أن تكون قابلة للتخصيص من قِبل المستخدم للوصول إلى وظائف جديدة في إصدارات DOS اللاحقة للإصدار 1.0.BUFFER-POINTERBLOCK-ALLOCATEBLOCK-FREEMEMORY-WRITEMEMORY-READMEMORY-EXECUTEBLOCK-EXECUTEUSER&
مراجع
- ↑ ستورديفانت، جيري أ. (فبراير-مارس 1985). "التحميل السريع" . كومودور باور/بلاي . المجلد 4، العدد 1. ص 54. تاريخ الاسترجاع 2018-10-07 .
- ↑ برانون، تشارلز (ديسمبر 1983). "آفاق: 64" . مجلة كومبيوت!. العدد 6. ص 178. تاريخ الاسترجاع 2018-10-07 .
- ↑ غريس، بول (1986). "رجل غريب الأطوار" . عدد خاص من مجلة RUN لعام 1987. بيتربورو، نيو هامبشاير: CW Communications/Peterborough, Inc. تم الاطلاع عليه بتاريخ 7 أكتوبر 2018 .
- 1 2 3 ويترن، تشارلز هـ. (يوليو 1985). "حفظ مع استبدال مكشوف!!" . ذا ترانزاكتور . 6 (1): 20.
- ↑ "النقاش الكبير حول حفظ/استبدال البيانات في كومودور" . مجلة كومبيوت!، فبراير 1985، صفحة 10. تاريخ الاطلاع: 6 أكتوبر 2013 .
- 1 2 سلايميكر، بنسلفانيا (أكتوبر 1985). "الحفظ مع الاستبدال: تم تصحيح الأخطاء أخيرًا / الجزء 1" . مجلة الحوسبة!، صفحة 79. تم الاطلاع عليه بتاريخ 16 أكتوبر 2013 .
- ↑ سلايميكر، بنسلفانيا (نوفمبر 1985). "الحفظ مع الاستبدال: تم تصحيحه أخيرًا / الجزء 2" . مجلة الحوسبة!، صفحة 111. تاريخ الاسترجاع: 30 أكتوبر 2013 .
- ↑ المحررون. "حفظ@: نظرية جيري نيوفيلد حول حشرة قديمة". معلومات رقم 9، ديسمبر 1985/يناير 1986.
- ↑ مقتطف من بريد إلكتروني من فيليب أ. سلايميكر، مؤرشف أيضًا في Groups.Google
- ↑ فيليب أ. سلايميكر. "القضاء على خطأ SAVE@ وأخطاء 1541 الأخرى". مجلة The Transactor ، المجلد 7، العدد O2، سبتمبر 1986، الصفحات 33-35.
- ملحوظات
- إيمرز، ريتشارد؛ نيوفيلد، جيرالد ج. (1984). داخل نظام التشغيل كومودور دوس. الدليل الكامل لنظام تشغيل القرص 1541. داتاموست، وشركة ريستون للنشر (برنتيس هول). ISBN 0-8359-3091-2.
- إنجليش، لوثار؛ شتشيبانوفسكي، نوربرت (1984). تشريح محرك الأقراص 1541. غراند رابيدز، ميشيغان: أباكوس سوفتوير (مترجم من الطبعة الألمانية الأصلية لعام 1983، دوسلدورف: داتا بيكر جي إم بي إتش). ISBN 0-916439-01-1.
- (بالفنلندية) لوندال، ريجو (1986). 1541-ليفياسما . أمرسوفت. رقم ISBN 951-35-3206-2
- برامج كومودور 64
- أنظمة تشغيل الأقراص
- برنامج VIC-20
- برنامج كومودور
