خط A20

لا تتوفر منطقة الذاكرة العالية إلا في الوضع الحقيقي على معالجات 80286 إذا تم تمكين بوابة A20.

يُعدّ خط العنوان A20 ، أو خط العنوان 20 ، أحد الخطوط الكهربائية التي تُشكّل ناقل النظام في نظام حاسوب قائم على معالج x86 . ويُستخدم خط A20 تحديدًا لنقل البت الحادي والعشرين على ناقل العنوان .

يحتوي المعالج الدقيق عادةً على عدد من خطوط العناوين يساوي اللوغاريتم الثنائي لعدد الكلمات في مساحة عناوينه الفيزيائية . على سبيل المثال، يحتاج معالج بسعة 4  جيجابايت من المساحة الفيزيائية القابلة للعنونة بالبايت إلى 32 خطًا ( log₂ (4  جيجابايت)  = log₂ ( 2³² بايت ) = 32)، وتُسمى هذه الخطوط من A0 إلى A31. تُسمى الخطوط نسبةً إلى رقم البت في العنوان الذي تُرسله، بدءًا من الصفر. البت الأقل أهمية هو الأول، ولذلك يُرقم بالبت 0 ويُشار إليه على الخط A0. يُرسل الخط A20 البت 20 (البت الحادي والعشرين) ويُصبح نشطًا عندما تصل العناوين إلى 1  ميجابايت، أو 2²⁰ .

ملخص

كانت معالجات إنتل 8086 ، وإنتل 8088 ، وإنتل 80186 تحتوي على 20 خط عنوان، مرقمة من A0 إلى A19؛ وباستخدامها، يستطيع المعالج الوصول إلى 2^ 20 بايت، أو 1  ميجابايت. كانت سجلات العناوين الداخلية لهذه المعالجات تحتوي على 16 بت فقط. للوصول إلى مساحة عنوان 20 بت، كان يتم تكوين مرجع ذاكرة خارجي من عنوان إزاحة 16 بت مضافًا إليه رقم مقطع 16 بت ، مع إزاحة 4 بتات إلى اليسار لإنتاج عنوان فعلي 20 بت. العنوان الناتج يساوي المقطع  × 16  + الإزاحة . [ 1 ] توجد العديد من تركيبات المقطع والإزاحة التي تُنتج نفس العنوان الفعلي 20 بت. لذلك، كانت هناك طرق مختلفة لعنونة نفس البايت في الذاكرة. [ 2 ] على سبيل المثال، إليك أربعة من أصل 4096 تركيبة مختلفة من المقطع:الإزاحة، وكلها تشير إلى البايت الذي عنوانه الفعلي هو 0x000FFFFF (آخر بايت في  مساحة ذاكرة 1 ميجابايت):

F000:FFFF
FFFF:000F
F555:AAAF
F800:7FFF

بالرجوع إلى الطريقة الأخيرة، تؤدي زيادة الإزاحة بمقدار واحد إلى F800:8000 ، وهو عنوان صحيح للمعالج، ولكن بما أنه يُترجم إلى العنوان الفيزيائي 0x00100000 (أول بايت يزيد عن 1 ميجابايت)، سيحتاج المعالج إلى خط عنوان آخر للوصول الفعلي إلى هذا البايت. ولأن هذا الخط غير موجود في معالجات 8086، فإن البت 21 أعلاه، رغم كونه مُفعّلاً، يُحذف، مما يتسبب في التفاف العنوان F800:8000 [ 1 ] ليشير فعليًا إلى العنوان الفيزيائي 0x00000000 . 

عندما صممت شركة IBM جهاز IBM PC AT (1984)، قررت استخدام معالج Intel 80286 الجديد عالي الأداء . كان بإمكان معالج 80286 الوصول إلى ما يصل إلى 16  ميجابايت من ذاكرة النظام في الوضع المحمي . مع ذلك، كان من المفترض أن يحاكي المعالج سلوك معالج 8086 في الوضع الحقيقي ، أي وضع بدء التشغيل، لكي يتمكن من تشغيل أنظمة التشغيل والبرامج غير المصممة للوضع المحمي. لكن معالج 80286 لم يُجبر خط A20 على الصفر في الوضع الحقيقي. لذلك، لم يعد التركيب F800:8000 يشير إلى العنوان الفعلي 0x00000000 ، بل إلى العنوان 0x00100000 . ونتيجة لذلك، توقفت البرامج التي تعتمد على التفاف العنوان عن العمل. ولضمان التوافق مع هذه البرامج، قررت IBM معالجة المشكلة على اللوحة الأم .

تم تحقيق ذلك بإضافة بوابة منطقية على خط A20 بين المعالج وناقل النظام، والتي سُميت بوابة A20 . يمكن تفعيل أو تعطيل بوابة A20 برمجياً للسماح لناقل العناوين باستقبال إشارة من A20 أو منعه. يتم ضبطها على وضع عدم المرور لتنفيذ البرامج القديمة التي تعتمد على الالتفاف. عند بدء التشغيل، يقوم نظام الإدخال والإخراج الأساسي (BIOS) أولاً بتفعيل بوابة A20 عند عدّ واختبار جميع ذاكرة النظام، ثم يعطلها قبل نقل التحكم إلى نظام التشغيل.

في الأصل، كانت البوابة المنطقية عبارة عن بوابة متصلة بوحدة تحكم لوحة المفاتيح Intel 8042. [ 1 ] وكانت عملية التحكم بها بطيئة نسبيًا. ومنذ ذلك الحين، أُضيفت طرق أخرى لتحسين كفاءة تعدد المهام للبرامج التي تتطلب هذا الالتفاف مع البرامج التي تصل إلى ذاكرة النظام بأكملها. توجد طرق متعددة للتحكم في سلسلة A20. [ 3 ]

لن يؤدي فصل A20 إلى حجب جميع عمليات الوصول إلى الذاكرة التي تتجاوز 1  ميجابايت، بل فقط تلك التي تقع ضمن نطاقات 1-2  ميجابايت، 3-4  ميجابايت، 5-6  ميجابايت، وهكذا. يهتم برنامج الوضع الحقيقي فقط بالمساحة التي تزيد قليلاً عن 1  ميجابايت، لذا كان خط Gate-A20 كافيًا.

يُعد تمكين خط Gate-A20 أحد الخطوات الأولى التي يقوم بها نظام التشغيل x86 في الوضع المحمي في عملية بدء التشغيل، وغالبًا قبل أن يتم نقل التحكم إلى النواة من التمهيد (في حالة Linux ، على سبيل المثال).

يُتيح وضع 8086 الافتراضي ، الذي طُرح مع معالج Intel 80386 ، محاكاة التفاف A20 باستخدام إمكانيات الذاكرة الافتراضية للمعالج؛ حيث يُمكن ربط الذاكرة الفعلية بعناوين افتراضية متعددة. وبالتالي، يُمكن ربط الذاكرة المُخصصة في أول ميغابايت من الذاكرة الافتراضية مرة أخرى في الميغابايت الثاني منها. يُمكن لنظام التشغيل اعتراض التغييرات التي تطرأ على البوابة A20 وإجراء تغييرات مُقابلة على مساحة عناوين الذاكرة الافتراضية، مما يُلغي أهمية كفاءة تبديل خط البوابة A20.

بوابة A20

كان التحكم في خط A20 ميزة مهمة في مرحلة ما من نمو بنية IBM PC، حيث أضاف إمكانية الوصول إلى 65520 بايت إضافية (64  كيلوبايت - 16  بايت) من الذاكرة في الوضع الحقيقي ، دون تغييرات برمجية كبيرة.

فيما يمكن اعتباره "اختراقاً"، كانت بوابة A20 في الأصل جزءاً من وحدة تحكم لوحة المفاتيح على اللوحة الأم، والتي يمكنها فتحها أو إغلاقها حسب السلوك المطلوب. [ 4 ]

للحفاظ على التوافق التام مع معالج Intel 8086 ، ظلّت بوابة A20 موجودة في معالجات Intel حتى عام 2008. [ 5 ] ولأن هذه البوابة كانت تُغلق مباشرةً بعد بدء التشغيل، كانت أنظمة التشغيل في الوضع المحمي تفتح بوابة A20 في وقت مبكر من عملية بدء التشغيل حتى لا تُغلقها مرة أخرى. لم يكن لدى هذه الأنظمة أي أسباب تتعلق بالتوافق لإبقائها مغلقة، وقد مكّنها فتحها من الوصول إلى كامل نطاق العناوين الفيزيائية المتاحة.

أضاف معالجا إنتل 80486 وبنتيوم دبوسًا خاصًا يُسمى A20M# ، والذي عند تفعيله بمستوى منخفض، يُجبر البت رقم 20 من العنوان الفيزيائي على أن يكون صفرًا لجميع عمليات الوصول إلى ذاكرة التخزين المؤقت المدمجة أو الذاكرة الخارجية. كان ذلك ضروريًا، لأن معالج 80486 قدّم ذاكرة تخزين مؤقت مدمجة، وبالتالي لم يعد من الممكن إخفاء هذا البت في الدوائر المنطقية الخارجية. لا يزال البرنامج بحاجة إلى معالجة البوابة، ولا يزال عليه التعامل مع الأجهزة الطرفية الخارجية ( مجموعة الشرائح ) للقيام بذلك. [ 6 ]

يزيل دليل تصميم نظام الكمبيوتر الشخصي PC 2001 التوافق مع خط A20: "إذا كانت منطق توليد A20M# لا تزال موجودة في النظام، فيجب إنهاء هذا المنطق بحيث لا تؤدي عمليات الكتابة البرمجية إلى منفذ الإدخال/الإخراج 92، البت 1، إلى تأكيد A20M# للمعالج." [ 7 ]

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

لم تعد شركة إنتل تدعم بوابة A20، بدءًا من معالجات Haswell . تنص الصفحة 271 من دليل مبرمجي أنظمة إنتل، المجلد 3A، الصادر في يونيو 2013، على ما يلي: "تُستخدم وظيفة A20M# بشكل أساسي في أنظمة التشغيل القديمة، ولا تُستخدم في أنظمة التشغيل الحديثة. قد لا تكون A20M# موجودة في معالجات إنتل 64 الأحدث ." [ 8 ]

معالج A20

معالج A20 هو برنامج لإدارة ذاكرة أجهزة IBM PC، يتحكم في الوصول إلى منطقة الذاكرة العالية (HMA). عادةً ما توفر برامج إدارة الذاكرة الموسعة هذه الوظيفة. سُمّي معالج A20 بهذا الاسم نسبةً إلى سطر العنوان الحادي والعشرين للمعالج الدقيق، وهو سطر A20.

في نظام التشغيل DOS ، تتولى برامج إدارة الذاكرة المخصصة (HMA) مثل HIMEM.SYS مهمة إضافية تتمثل في إدارة A20. يوفر HIMEM.SYS واجهة برمجة تطبيقات (API) لفتح وإغلاق A20. يمكن لنظام DOS نفسه استخدام هذه المساحة لتلبية بعض احتياجاته التخزينية، مما يتيح مساحة أكبر من الذاكرة التقليدية للبرامج. وقد تم تفعيل هذه الوظيفة من خلال DOS=HIGHتوجيهات HIDOS=ONفي ملف التكوين CONFIG.SYS .

البرامج المتأثرة

منذ عام 1980، استُخدم التفاف العنوان داخليًا في نظامي 86-DOS و MS-DOS لتنفيذ  نقطة دخول DOS CALL 5 عند الإزاحة من +5 إلى +9 (والتي تحاكي نقطة دخول واجهة برمجة تطبيقات BDOS CALL 5 بنمط CP/M-80 عند الإزاحة من +5 إلى +7) في بادئة مقطع البرنامج (PSP) (والتي تشبه جزئيًا الصفحة الصفرية لنظام CP/M-80 ). [ 9 ] [ 10 ] وقد استُخدم هذا الأسلوب تحديدًا في البرامج المترجمة آليًا من CP/M-80 عبر مترجمات لغة التجميع [ 9 ] مثل برنامج TRANS86 من شركة Seattle Computer Products . [ 11 ] يقع معالج الاستدعاء 5 الذي تشير إليه نقطة الدخول هذه في العنوان الفيزيائي للجهاز 0x000000C0 (وبذلك يتداخل مع البايتات الأربعة لنقطة دخول روتين خدمة المقاطعة المحجوزة للمقاطعة INT 30h والبايت الأول من المقاطعة INT 31h في جدول متجه المقاطعة للوضع الحقيقي x86 ). [ 12 ] [ 13 ] [ 14 ] ومع ذلك، وفقًا لتصميم CP/M-80، الذي كان يُحمّل نظام التشغيل مباشرةً فوق الذاكرة المتاحة لتشغيل برنامج التطبيق، يمكن أيضًا تفسير عنوان الهدف 8080 / Z80 ذي 16 بت المخزن عند الإزاحة من +6 إلى +7 في الصفحة الصفرية على أنه حجم مقطع الذاكرة الأول. [ 9 ] لمحاكاة ذلك في نظام DOS باستخدام نظام عنونة المقطع:الإزاحة الخاص بمعالج 8086، كان لا بد من أن تتطابق إزاحة نقطة دخول الاستدعاء البعيدة (16 بت) مع حجم هذا المقطع (أي 0xFEF0 )، المخزن عند الإزاحة من +6 إلى +7 في PSP، متداخلةً مع أجزاء من CALL 5. [ 13 ] [ 14 ] الطريقة الوحيدة للتوفيق بين هذه المتطلبات هي اختيار قيمة مقطع، عند إضافتها إلى 0xFEF0 ، ينتج عنها عنوان 0x001000C0 ، والذي، على معالج 8086، يلتف إلى 0x000000C0 . [ 15 ] [ 12 ] [ 14 ]     

كان لا بد من تعطيل A20 لكي يحدث الالتفاف وتعمل برامج DOS التي تستخدم هذه الواجهة. عادةً ما تقوم إصدارات DOS الأحدث، التي يمكنها نقل أجزاء منها إلى HMA، بإنشاء نسخة من نقطة الدخول عند FFFF:00D0 في HMA (والتي تُحل بدورها إلى العنوان الفعلي 0x001000C0 )، بحيث يمكن للواجهة أن تعمل بغض النظر عن حالة A20. [ 14 ] [ 16 ]

من البرامج المعروفة باستخدامها  لواجهة CALL 5 نسخة DOS من مُصرّف Small-C . [ 17 ] كما أن أداة SPELL في برنامج Microsoft Word 3.0 (1987) تعتمد على واجهة CALL  5 للإعداد. [ 18 ] ويتطلب نظام التشغيل PC-NFS من Sun Microsystems (1993) أيضًا تثبيت واجهة CALL 5. [ 16 ] 

أيضًا، لتوفير مساحة البرنامج، [ 1 ] تم استخدام حيلة من قبل بعض مبرمجي BIOS وDOS، على سبيل المثال، أن يكون هناك مقطع واحد يمكنه الوصول إلى بيانات البرنامج (مثل من F800:0000 إلى F800:7FFF ، يشير إلى العناوين الفعلية 0x000F8000–0x000FFFFF )، بالإضافة إلى بيانات الإدخال/الإخراج (مثل مخزن لوحة المفاتيح المؤقت) الموجودة في مقطع الذاكرة الأول (مع العناوين من F800:8000 إلى F800:FFFF التي تشير إلى العناوين الفعلية من 0x00000000 إلى 0x00007FFF ).

تنجح هذه الحيلة طالما لم يتم تنفيذ الكود في الذاكرة المنخفضة ، أي أول 64  كيلوبايت من ذاكرة الوصول العشوائي، وهو شرط كان صحيحًا دائمًا في إصدارات DOS القديمة التي لا تحتوي على إمكانيات تحميل عالية.

مع نقل نواة نظام التشغيل DOS إلى مناطق ذاكرة أعلى، أصبحت الذاكرة المنخفضة متاحة بشكل متزايد للبرامج، مما تسبب في فشل البرامج التي تعتمد على آلية الالتفاف. [ 19 ] تحاول مُحمِّلات الملفات التنفيذية في الإصدارات الأحدث من DOS اكتشاف بعض أنواع البرامج المتأثرة الشائعة، إما بتصحيحها أثناء التشغيل لتعمل أيضًا في الذاكرة المنخفضة [ 20 ] أو بتحميلها فوق أول 64  كيلوبايت قبل بدء تنفيذها. [ 20 ] بالنسبة للبرامج التي لا يتم اكتشافها تلقائيًا، يمكن استخدام LOADFIX [ 21 ] أو MEMMAX  -L [ 21 ] لإجبار البرامج على التحميل فوق أول 64  كيلوبايت.

استُخدمت هذه الحيلة من قِبل IBM/Microsoft Pascal نفسها، وكذلك من قِبل البرامج المُجمّعة بها، [ 22 ] [ 23 ] [ 10 ] [ 17 ] بما في ذلك MASM من Microsoft . [ 17 ] ومن بين أدوات التطوير الأخرى الشائعة الاستخدام التي تستخدم هذه الحيلة، برامج ضغط الملفات التنفيذية مثل Spacemaker من Realia [ 20 ] (الذي كتبه روبرت بي كي ديوار عام 1982 واستُخدم لضغط الإصدارات الأولى من Norton Utilities [ 24 ] [ 25 ] [ 26 ] [ 27 ] ) و EXEPACK من Microsoft [ 19 ] [ 20 ] [ 1 ] [ 28 ] [ 17 ] (الذي كتبه روبن بورمان عام 1985)، بالإضافة إلى الخيار /E[XEPACK] المكافئ في LINK 3.02 من Microsoft والإصدارات الأحدث. [ 19 ] [ 1 ] [ 28 ] [ 26 ] ستعرض البرامج التي تتم معالجتها باستخدام EXEPACK رسالة خطأ "الملف المضغوط تالف". [ 1 ] [ 20 ] [ 28 ]

توجد العديد من الأدوات المساعدة التابعة لجهات خارجية لتعديل الملفات التنفيذية المضغوطة إما عن طريق استبدال روتين (روتينات) فك الضغط الإشكالي من خلال إعادة التشكيل، أو محاولة توسيع الملف الأصلي واستعادته.

تستخدم برامج الإقلاع الحديثة لأنظمة BIOS القديمة (مثل GNU GRUB ) خط A20. [ 3 ] بينما تستخدم برامج الإقلاع لأنظمة UEFI الوضع المحمي 32 بت أو الوضع الطويل 64 بت .

انظر أيضاً

مراجع

  1. ١ ٢ ٣ ٤ ٥ ٦ ٧ بول، ماتياس ر. (٢٠٠٢-٠٢-٠٢). "تحميل برامج التشغيل ديناميكيًا (إعادة توجيه الإزاحة داخل القطاع لتحميل سجلات المعاملات في ذاكرة الوصول العشوائي ) " ( بالألمانية). مجموعة الأخبار : de.comp.os.msdos . تم الاسترجاع في ٢٠١٧-٠٧-٠٢ . {{cite newsgroup}}: CS1 maint: deprecated archiveal service ( link ) (ملاحظة: يقدم هذا القسم نظرة شاملة على تاريخ وطبيعة ذاكرة الوصول العشوائي للأجهزة (HMA) وقيود التصميم غير الواضحة التي يجب مراعاتها عند تطوير ملحقات النظام المقيمة ليتم تحميلها في ذاكرة الوصول العشوائي للأجهزة، والتي يعود بعضها إلى بوابة A20. كما يصف كيفية معالجة هذه المشكلات باستخدام الدوال البديلة (stubs ) والأبواب الخلفية (backdoors) وإعادة التموضع داخل القطاع (intra-segment offset relocation )، وهي طريقة تستخدمها برامج تشغيل DR-DOS القادرة على الانتقال إلى ذاكرة الوصول العشوائي للأجهزة، وتشبه طريقة (أكثر تطورًا) تُستخدم كأساس لإزالة التعليمات البرمجية الميتة ديناميكيًا في برنامج تشغيل FreeKEYB الخاص بالمؤلف.)
  2. بول، ماتياس ر. (11 أبريل 2002). "ردًا على: [ fd-dev ] إعلان: CuteMouse 2.0 alpha 1" . freedos-dev . مؤرشف من الأصل بتاريخ 21 فبراير 2020. تم الاطلاع عليه بتاريخ 21 فبراير 2020 .
  3. 1 2 "خط A20" . ويكي مطوري أنظمة التشغيل . 19 يوليو 2021. مؤرشف من الأصل في 30 نوفمبر 2021. تم الاطلاع عليه في 19 يوليو 2021 .
  4. شانلي، توم؛ أندرسون، دون (1995). سوينديل، جون (محرر). هندسة نظام ISA ( الطبعة الثالثة). شركة مايندشير / شركة أديسون-ويسلي للنشر . الصفحات 79-80 . ISBN   0-201-40996-8رقم الكتاب المعياري الدولي ( ISBN) 978-0-201-40996-3.
  5. "تصور بنية إنتل مبسطة للمستقبل" . intel.com . إنتل . تم الاطلاع عليه بتاريخ 22-05-2023 .
  6. شانلي، توم (1996). بنية البرمجيات في الوضع المحمي . تايلور وفرانسيس . ص 60. ISBN  0-201-55447-X.
  7. "الفصل 3: نظام الحاسوب الشخصي". دليل تصميم نظام الحاسوب الشخصي 2001 (ملف PDF) . شركة إنتل وشركة مايكروسوفت. صفحة 52. تاريخ الاسترجاع: 2023-06-03 . SYS–0047. يتم دائمًا إلغاء تأكيد الإشارة A20M# (رفعها إلى مستوى عالٍ) في المعالج. 
  8. دليل مبرمجي أنظمة إنتل، المجلد 3أ، من يونيو 2013 .
  9. 1 2 3 86-DOS - نظام تشغيل القرص لمعالج 8086 - دليل المبرمج (PDF) . الإصدار 0.3 ( طبعة أولية). سياتل، واشنطن، الولايات المتحدة الأمريكية: شركة سياتل لمنتجات الكمبيوتر، 1980. الصفحات 7، 17. مؤرشف من الأصل (PDF) بتاريخ 23-06-2019 . تم الاطلاع عليه بتاريخ 13-09-2011 . [...] تم توفير هذا النموذج لتبسيط ترجمة برامج 8080/Z80 إلى كود 8086 ، ولا يُنصح باستخدامه للبرامج الجديدة. [...] حجم الذاكرة. هذا هو عدد البايتات المتاحة في مقطع البرنامج. [...]  (41 صفحة)
  10. ١ ٢ ليتوين، جيمس (١٠ أبريل ١٩٨٥). "طريقة ونظام تشغيل لتنفيذ البرامج في معالج دقيق متعدد الأوضاع" . مايكروسوفت . US06722052، US4779187A . تم الاطلاع عليه بتاريخ ٢٣ سبتمبر ٢٠١٨. [...] تعتمد بعض البرامج المكتوبة للمعالج 8086 على [التفاف العناوين] لتعمل بشكل صحيح. لسوء الحظ، تمتد مواقع الذاكرة إلى ما يزيد عن ١ ميجابايت في الوضع الحقيقي للمعالج 80286، ولا يتم التفافها إلى مواقع الذاكرة المنخفضة. ونتيجة لذلك، ستفشل البرامج، بما في ذلك تلك المكتوبة بلغة مايكروسوفت باسكال والبرامج التي تستخدم ميزة "استدعاء ٥" في نظام MS-DOS، على نظام 80286 القياسي. [...] على سبيل المثال، لا يتم تحميل أي برامج باسكال في الذاكرة التي تقل عن ٦٤ كيلوبايت ، ويتم وضع تعليمة خاصة في مواقع الذاكرة المنخفضة التي تزيد عن ١ ميجابايت - على سبيل المثال، العنوان ١٠٠٠٠٠h أو ١٠٠٠١٠h. [...]{{cite web}}: CS1 maint: deprecated archiveal service ( link )
  11. تايلور، روجر؛ ليمونز، فيل (يونيو 1982). "الهجرة التصاعدية - الجزء 1: المترجمون - استخدام برامج الترجمة لنقل برامج CP/M-86 إلى CP/M وMS-DOS" [ استخدام برامج الترجمة لنقل برامج CP/M إلى CP/M-86 وMS-DOS ] (ملف PDF) . بايت . المجلد 7، العدد 6. منشورات بايت. الصفحات 321-322 ، 324، 326، 328، 330، 332، 334، 336، 338، 340، 342، 344 [342، 344]. الرقم الدولي الموحد للدوريات 0360-5280 . رمز الكود BYTEDJ . مؤرشف (ملف PDF) من الأصل بتاريخ 16 يناير 2020 . تم الاسترجاع بتاريخ 15 يناير 2020. [...] الوصول إلى CP/M-86 [...] يتطلب الوصول إلى CP/M-86 وضع رمز الوظيفة في سجل CL، ووضع مُعامل البايت في سجل DL أو وضع مُعامل الكلمة في سجل DX، ووضع مقطع البيانات في سجل DS (عادةً لا يتم تغيير مقطع البيانات في البرنامج المُحوّل)، وتنفيذ مقاطعة برمجية، INT #224 . تُعاد النتيجة في سجل AL إذا كانت قيمة بايت؛ أما إذا كانت قيمة كلمة، فتُعاد في كلٍ من سجلي AX وBX. تُعاد قيم الكلمات المزدوجة مع الإزاحة في سجلي BX ومقطع البيانات في سجل ES. بالتالي، يتطلب تحويل البرامج من CP/M-80 إلى CP/M-86 استبدال استدعاء الموقع 5 بالمقاطعة البرمجية INT #224. يتضمن التغيير الضروري الآخر إعادة التشغيل الدافئ . في نظام CP/M-80، يمكن الوصول إلى إعادة التشغيل السريع عبر استدعاء نظام برمز وظيفة 0 للانتقال إلى الموقع 0. أما في نظام CP/M-86، فلا يُدعم الانتقال إلى الموقع 0. لذا، يجب تعديل مخرج البرنامج هذا في البرنامج المُترجم لضمان تشغيله بشكل صحيح. شريطة استبدال استدعاء الموقع 5 بالمقاطعة رقم 224، وإجراء تعديل إعادة التشغيل السريع، وتعيين السجلات بشكل صحيح، لن تكون هناك مشكلة تُذكر في تمكين البرنامج المُترجم من الوصول إلى وظائف نظام CP/M-86. [...] الوصول إلى MS-DOS [...] على الرغم من أن MS-DOS يمتلك آلية "مُفضلة" للوصول إلى النظام عبر مقاطعة برمجية، المقاطعة رقم 33 ، إلا أنه يوفر آلية إضافية للبرامج "الموجودة مسبقًا" متوافقة مع اصطلاحات استدعاء CP/M-80، على الأقل للوظائف في النطاق من 0 إلى 36. فيما يتعلق باستدعاءات النظام ضمن نطاق الوظائف المسموح به، لا يحتاج المبرمج إلى إجراء أي تعديلات على البرامج المترجمة لتشغيلها على نظام MS-DOS سوى تعيين السجلات بشكل صحيح. يدعم نظام MS-DOS أيضًا وظيفة إعادة التشغيل السريع لنظام CP/M-80. يؤدي الانتقال إلى الموقع 0 في نظام MS-DOS إلى تنفيذ مقاطعة برمجية، وهي المقاطعة رقم 32.     ، وهو عملياً نهاية البرنامج والطريقة المعتادة للخروج منه. [...](13 صفحة)
  12. 1 2 شابرز، أرني (1991). "Kapitel 5: تفاصيل EXEC - بادئة مقطع البرنامج (PSP)". DOS 5 für Programmierer: Die endgültige Referenz (باللغة الألمانية) (1 ed.). أديسون ويسلي (ألمانيا) GmbH . ص 148 – 151، 971 – 972 [149، 971 – 972]. رقم ISBN   3-89319-350-2.(1123+ صفحة، قابلة للطي، قرص مرن 5.25 بوصة)
  13. 1 2 "تنسيق بادئة مقطع البرنامج (PSP)" . INTER61 . 2000. مؤرشف من الأصل بتاريخ 17-02-2020 . تم الاطلاع عليه بتاريخ 19-12-2019 .
  14. 1 2 3 4 نيكاسيك، ميخال (13-09-2011). "من يحتاج إلى التفاف العنوان على أي حال؟" . متحف نظام التشغيل OS/2 . مؤرشف من الأصل في 19-02-2020 . تم الاسترجاع في 19-02-2020 . [...] استخدم نظام 86-DOS ، وبالتالي نظامي PC DOS و MS-DOS ، حيلة ذكية. احتوى البايت عند الإزاحة 5 من PSP على رمز عملية استدعاء بعيد (9Ah)؛ واحتوت الكلمة عند الإزاحة 6 من PSP على القيمة المناسبة للإشارة إلى حجم مقطع البرنامج، وكذلك جزء الإزاحة من الاستدعاء البعيد. صُممت الكلمة عند الإزاحة 8، والتي كانت بمثابة جزء المقطع من الاستدعاء البعيد، بحيث عند دمجها مع الإزاحة، فإنها ستلتف (وهي ميزة معروفة جيدًا لوحدة المعالجة المركزية 8086 ) وتشير إلى العنوان 0:C0h، الذي يحتوي على متجه المقاطعة 30h. [...] تحدث مشكلة في واجهة التوافق عندما يكون حجم البرنامج المُحمّل أقل من 64 كيلوبايت. في هذه الحالة، قد لا تحتوي الكلمة عند الإزاحة 6 في وحدة معالجة البرنامج (PSP) على القيمة الصحيحة، لكن واجهة استدعاء 5 (CALL 5) ستظل تعمل؛ ستكون التعليمة عند الإزاحة 5 هي CALL 0:C0h، مما يجعل حجم مقطع البرنامج المُبلغ عنه هو C0h. من غير الواضح سبب قيام نظام DOS بذلك؛ يبدو أنه خطأ برمجي في الإصدار 5.0 من DOS والإصدارات الأحدث، حيث يقوم الإصدار 4.0 والإصدارات الأقدم ببساطة بتعديل جزء المقطع بحيث يلتف إلى 0:C0h. يعمل هذا طالما أن حجم مقطع البرنامج مُحاذى مع الفقرة، وهو ما سيحدث. [...] 
  15. نورتون، بيتر (1985). دليل بيتر نورتون للمبرمجين على جهاز IBM PC ( طبعة مصورة). شركة مايكروسوفت . ISBN  0-91484546-2رقم الكتاب المعياري الدولي ( ISBN) 978-0-91484546-1ص  ٢٦٣: [...] من خلال عملية غريبة ومعقدة يصعب شرحها، يتم ضبط العنوان المُجزأ بحيث يخدم غرضين. فهو لا يشير فقط إلى مُوزِّع وظائف نظام التشغيل DOS، بل يُشير جزء الإزاحة أيضًا إلى مقدار جزء التعليمات البرمجية الذي يُمكننا استخدامه (حتى FFF0 بالنظام الست عشري، أي أقل بـ ١٦ بايت من ٦٤ كيلوبايت). يقع جزء الإزاحة من العنوان، وهو الجزء الذي يهمنا، عند الإزاحة ٦ داخل PSP، بعد رمز العملية للتعليمات عند الإزاحة ٥. والنتيجة هي أنه إذا كان لدى نظام التشغيل DOS أقل من ٦٤ كيلوبايت لتخصيصها لبرامجنا، فيُمكننا استخدام هذا الحقل لمعرفة عدد البايتات المُتاحة - وهي تقنية يُفترض أن تعمل مع مُعظم أو جميع أنظمة النوافذ وأنظمة تعدد المهام. [...](426 صفحة)
  16. 1 2 "مجموعة أدوات المصدر القابلة للقراءة آليًا لنظام OpenDOS من كالدرا (MRS) 7.01" . شركة كالدرا، 1997-05-01 [1997-04-16]. مؤرشف من الأصل في 2021-08-07 . تم الاسترجاع في 2022-01-02 . [...] BIOSINIT.A86 1.40 93/11/11 12:25:29 [...] تغييرات في رأس VDISK [...] BIOSINIT.A86 1.39 93/11/08 23:19:22 [...] يقوم SetupHMA بتهيئة CALL5 [...] الآن يتم إصلاح JMPF في الذاكرة العالية لرابط CALL5 لـ PC-NFS [...](ملاحظة: OpenDOS 7.01 MRS: IBMBIO\BIOSINIT.A86 SetupHMA)
  17. 1 2 3 4 نيكاسيك، ميخال (16 مارس 2018). "فضيحة A20: لم تكن WordStar" . متحف OS/2 . تاريخ الاسترجاع: 23 سبتمبر 2018 .{{cite web}}: CS1 maint: deprecated archiveal service ( link )
  18. بارسونز، جيف (27 مايو 2018) [1 ديسمبر 1987، 2 أغسطس 1987]. "أحدهم سحرني" . PCjs . مؤرشف من الأصل في 29 يناير 2019. تم الاطلاع عليه في 21 أبريل 2019 .
  19. 1 2 3 شولمان، أندرو؛ براون، رالف د .؛ ماكسي، ديفيد؛ ميشيلز، ريموند ج.؛ كايل، جيم (1994) [نوفمبر 1993]. ويليامز، أندرو (محرر). نظام التشغيل DOS غير الموثق: دليل المبرمج لوظائف MS-DOS المحجوزة وهياكل البيانات - موسع ليشمل MS-DOS 6 وNovell DOS وWindows 3.1 . سلسلة أندرو شولمان للبرمجة (الطبعة الأولى، الطبعة الثانية). ريدينغ، ماساتشوستس، الولايات المتحدة الأمريكية: شركة أديسون ويسلي للنشر . الصفحات 349-350 . ISBN   0-201-63287-Xرقم الكتاب المعياري الدولي ( ISBN) 978-0-201-63287-3[ ...] يؤدي تفعيل خط A20 إلى مشاكل في البرامج التي تعتمد على التفاف القطاعات [...] أحد هذه البرامج هو روتين فك الضغط الذي كان رابط مايكروسوفت يرفقه مع أي ملف تم ضغطه باستخدام EXEPACK لتقليل حجمه! وفقًا لفيليب غاردنر، مؤلف برنامج DOSMAX UMB المجاني للصيانة، والخبير في مجال تفكيك DOS، فإن رسالة الخطأ الشهيرة "ملف مضغوط تالف" التي بدأت بالظهور بكثرة بعد فترة وجيزة من إطلاق DOS 5.0، تعود مباشرةً إلى تفعيل خط A20، حيث كان روتين فك الضغط الأصلي يعتمد على التفاف القطاعات لفك ضغط الملفات بشكل صحيح. [...](18+856+6 صفحات، قرص مرن 3.5 بوصة)) تصحيحات:(ملاحظة: يحتوي الكتاب في الصفحة 350 على وصف تفصيلي للعمليات الداخلية لروتين فك الضغط الإشكالي في برنامج EXEPACK.)
  20. 1 2 3 4 5 بول، ماتياس ر. (2002-10-07) [2000]. "رد: مشكلة متعلقة بـ masm.com (PSP)" . مجموعة الأخبار : alt.lang.asm . تم الاسترجاع في 2017-09-03 . [...] يقوم نظام DR Concurrent DOS 386 (منذ 1988-07-08) بتحميل البرامج المضغوطة بصيغة EXEPACK التي تتجاوز علامة 64 كيلوبايت، أي خارج " أقل مساحة ذاكرة "، وذلك عن طريق توسيع كتلة الذاكرة التي تحتوي على بيئة البرنامج. [...] يقوم نظام DR DOS 5.0 والإصدارات الأحدث دائمًا بتحميل البرامج بصيغة EXE بدون أي تعديلات، و(منذ 1990-05-25) أيضًا البرامج بصيغة COM المضغوطة باستخدام SpaceMaker - وبالتالي بدءًا من 9Ch 55h (PUSHF/PUSH BP) - التي تتجاوز علامة 64 كيلوبايت لتجنب خطأ التفاف EXEPACK. يتم ذلك عن طريق توسيع كتلة الذاكرة التي تحتوي على بيئة البرنامج، ومنذ 14 ديسمبر 1989، يقوم النظام بتخصيص مساحات إضافية عند الضرورة. يتم تعطيل رمز توسيع البيئة هذا إذا كان اسم البرنامج الرئيسي، كما هو مخزن في MCB، هو "WIN" لتحسين الأداء عند بدء تشغيل WIN.COM لـ KERNEL.EXE (بدون عناصر نقل). [...] يقوم نظام MS-DOS / PC DOS 5.0 + [...] بفحص مجموعة متنوعة من تسلسلات التعليمات البرمجية في الملفات التنفيذية بصيغة .EXE، ويطبق تصحيحات على إصدارات مختلفة من الملفات المضغوطة (EXEPACKed) لتمكينها من العمل بأقل قدر من الذاكرة (عندما يكون نظام DOS في HMA )، أي في مقطع تحميل أقل من 64 كيلوبايت. وإلا، ستظهر رسالة "الملف المضغوط تالف". يتحقق الكود من أن نقطة دخول الكود [...] ليست < 0002h [...] ثم يقرأ الكلمة التي تسبق نقطة الدخول مباشرةً [...] إذا كانت هذه الكلمة 5242h ("RB")، يُفترض أن الملف مُضغوط. بعد ذلك، يبحث الكود عن أحد تسلسلات التعليمات البرمجية المتعددة عند إزاحات من توقيع "RB". [...] تقوم نواة MS-DOS 5.0+ [...] بفحص فئة غير معروفة من ملفات .COM التنفيذية. إذا تم العثور على توقيعاتها في الملف، فسيتم تعيين متغير العد التنازلي A20 عند الإزاحة 18h في جدول معلومات مخزن القرص المؤقت (انظر جدول "معلومات مخزن القرص المؤقت DOS 5.0-6.0") إلى 10، مما سيؤدي إلى تعطيل A20 بعد استدعاءات INT 21h لهذا العدد من استدعاءات INT 21h اللاحقة. من المفترض أن هذه الفئة من البرامج تتطلب تعطيل A20 لبعض الوقت بعد بدء تنفيذها. (تحدث إجراءات مماثلة عند الدخول إلى INT 21h/AH=25h و AH=49h.) [...] {{cite newsgroup}}: CS1 maint: deprecated archiveal service ( link )
  21. 1 2 بول ماتياس ر. (1997/07/30) [1996/06/18، 1994/05/01]. "V.4. Bessere Speicherausnutzung mit selbsthochladenden Programmen". NWDOS-TIPs نصائح وحيل لتشغيل Novell DOS 7، مع النقر على تفاصيل التفاصيل والأخطاء والحلول البديلة . الإصدار 157 (باللغة الألمانية) (3 ed.). أرشفة من النسخة الأصلية بتاريخ 2016-11-04 . تم الاسترجاع 2014/08/06 . {{cite book}}تم تجاهله |work=( مساعدة ) (ملاحظة: الرابط المقدم يشير إلى نسخة مُحولة إلى HTML من ، وهي جزء من المجموعة.)NWDOSTIP.TXTMPDOSTIP.ZIP
  22. مُترجم لغة باسكال (ملف PDF) . سلسلة لغات الحاسوب الشخصي ( الطبعة الأولى). شركة آي بي إم . أغسطس 1981. مؤرشف (ملف PDF) من الأصل بتاريخ 29 مايو 2020. تم الاطلاع عليه بتاريخ 23 سبتمبر 2018 . 
  23. "NAME ENTX - Microsoft MS-DOS Computer Pascal runtime system control" . الإصدار 1.00. شركة مايكروسوفت، 1981. مؤرشف من الأصل بتاريخ 23 فبراير 2020. تم الاسترجاع بتاريخ 23 فبراير 2020. [...] DX هي قيمة DS النهائية (قد تكون سالبة) [...] قيمة DS النهائية (قد تكون سالبة) [...]
  24. «تقرير الخبير روبرت بي كي ديوار ردًا على تقرير كينيث دي كروز». مطبعة جامعة كامبريدج وآخرون ضد باتون وآخرون، الملف رقم 124، الإفصاحات الأولية التكميلية من مطبعة جامعة كامبريدج، ومطبعة جامعة أكسفورد، ودار نشر سيج - مطبعة جامعة كامبريدج، ومطبعة جامعة أكسفورد، ودار نشر سيج ضد مارك بي بيكر، رئيس جامعة ولاية جورجيا، وآخرون، الدعوى المدنية رقم 1:08-CV-1425-ODE (وثيقة محكمة). محكمة الولايات المتحدة الجزئية للمنطقة الشمالية من جورجيا، قسم أتلانتا. صفحة 18. الملحق أ. مؤرشف من الأصل في 1 مايو 2018. تم الاطلاع عليه في 23 أبريل 2019 . [...] برنامجا SPACEMAKER وTERMULATOR، وهما برنامجان تجاريان لأجهزة الكمبيوتر الشخصية من IBM ( أداة ضغط ملفات DOS ومحاكي VT-100 )، يتم تسويقهما من قبل شركة Realia, Inc.، من تصميم RBK Dewar (1982-1983)، مكتوبان بلغة التجميع 8088، ويتكونان من 8000 سطر [...] 
  25. شركة رياليا (يناير 1983). "إذا كنت تستخدم نظام DOS، فأنت بحاجة إلى هذا البرنامج" . مجلة الكمبيوتر الشخصي (إعلان). 2 (9). دار نشر زيف-ديفيس : 417. تاريخ الاسترجاع : 22 أبريل 2019 .{{cite journal}}: CS1 maint: deprecated archiveal service ( link )
  26. 1 2 ديوار، روبرت بيريديل كيث (13 مارس 1984). "DOS 3.1 ASMB (خطأ آخر سخيف من مايكروسوفت)" . info-ibmpc@USC-ISIB.ARPA . مؤرشف من الأصل في 1 مايو 2018. تم الاسترجاع في 23 أبريل 2019. [...] يجب أن يُنشئ الخيار /E الخاص بالرابط ملف EXE مكافئًا منطقيًا لملف EXE غير المضغوط. الإصدار الحالي [...] يؤدي إلى استبدال AX. لـ AX عند الدخول إلى ملف EXE معنى محدد (يشير إلى صلاحية محرك الأقراص للمعلمات)، وبالتالي يجب تمريره إلى الصورة غير المضغوطة. نظرًا لهذا الانتهاك الواضح جدًا لقواعد الواجهة، قد تكون هناك انتهاكات أخرى، لم أكلف نفسي عناء التحقيق أكثر [...] لقد كتبت برنامج Realia SpaceMaker الذي يقوم بشيء مشابه لخيار EXEPACK (ولكن من البديهي أنه لا يحتوي على هذا [...]
  27. نيكاسيك، ميخال (30 أبريل 2018). "صانع الفضاء الواقعي" . متحف نظام التشغيل OS/2 . مؤرشف من الأصل في 27 يناير 2019. تم الاطلاع عليه في 22 فبراير 2019 .
  28. 1 2 3 نيكاسيك، ميخال (23 مارس 2018). "إكسيباك وبوابة A20" . متحف OS/2 . مؤرشف من الأصل بتاريخ 13 نوفمبر 2018. تم الاطلاع عليه بتاريخ 20 أبريل 2019 .

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