# حاسوب توجيه أبولو

كان حاسوب توجيه أبولو (بالإنجليزية: Apollo Guidance Computer)‏ كمبيوتر رقمي تم إنتاجه لبرنامج Apollo والذي تم تثبيته على متن كل وحدة الخدمة Apollo (CM) ووحدة Apollo Lunar (LM). قدم الحاسوب الحسابات والواجهات الإلكترونية للتوجيه والملاحة والتحكم في المركبة الفضائية. كان حاسوب توجيه أبولو أول كمبيوتر يعتمد على دوائر السيليكون المتكاملة . كان أداء الكمبيوتر مشابهًا للجيل الأول من أجهزة الكمبيوتر المنزلية من أواخر السبعينيات ، مثل Apple II وTRS-80 و Commodore PET .
يبلغ طول الكلمة الحاسوب 16 بت ، مع 15 بتة بيانات وبت تماثل واحد. ويتم تخزين معظم البرامج الموجودة على الحاسوب AGC في ذاكرة خاصة للقراءة فقط تُعرف باسم ذاكرة الحبل الأساسي ، والتي تم تشكيلها عن طريق نسج الأسلاك عبر النوى الحديدية المغناطيسية وحولها ، على الرغم من توفر كمية صغيرة من ذاكرة القراءة / الكتابة الأساسية .
تواصل رواد الفضاء مع الحاسوب AGC باستخدام شاشة رقمية ولوحة مفاتيح تسمى DSKY (بالنسبة إلى "الشاشة ولوحة المفاتيح" ، وتُنطق "DIS-kee"). تم تطوير AGC وواجهة مستخدم DSKY الخاصة به في أوائل الستينيات من القرن الماضي لبرنامج Apollo بواسطة مختبر MIT Instrumentation ، وقد طار لأول مرة في عام 1966.

## التشغيل

طار رواد الفضاء يدويًا خلال مشروع جيميني باستخدام عصي التحكم ، لكن أجهزة الكمبيوتر AGC وجهت معظم مشروع أبولو باستثناء فترة وجيزة أثناء الهبوط على سطح القمر. حملت كل رحلة قمرية اثنين من الكمبيوتر AGC ، واحدة في وحدة القيادة ووحدة أبولو القمرية ، باستثناء أبولو 8 التي لم تكن بحاجة إلى وحدة قمرية لمهمتها في مدار القمر. كان الحاسوب AGC في وحدة القيادة هو مركز نظام التوجيه والملاحة والتحكم (GNC). أدار حاسوب توجيه أبولو في الوحدة القمرية Apollo PGNCS (نظام التوجيه والملاحة والتحكم الأساسي) ، مع نطق الاختصار pings .
كان لكل مهمة قمرية جهازي كمبيوتر إضافيين:
* الكمبيوتر الرقمي لمركبة الإطلاق (LVDC) على حلقة أجهزة التعزيز Saturn V.
* نظام توجيه الإنقطاع (AGS ، ags الواضح) للوحدة القمرية ، ليتم استخدامه في حالة فشل LM PGNCS. يمكن استخدام حاسوب AGS للإقلاع من القمر ، والالتقاء بوحدة القيادة ، ولكن ليس للهبوط..

## التصميم

تم تصميم AGC في مختبر MIT للأجهزة تحت إشراف Charles Stark Draper ، مع تصميم الأجهزة تحت إشراف إلدون سي هول . جاءت الأعمال البنائية ة المبكرة من جيه إتش لانينج جونيور وألبرت هوبكنز وريتشارد باتين ورامون ألونسو وهيو بلير سميث. تم تصنيع معدات الطيران بواسطة شركة Raytheon ، والتي كان Herb Thaler أيضًا عضوًا في فريق البنية.

### أجهزة حساب المنطق

بعد استخدام شرائح الدوائر المتكاملة في منصة المراقبة بين الكواكب في عام 1963 ، تم اعتماد تقنية IC لاحقًا لـلكمبيتر AGC. كان كمبيوتر رحلة أبولو هو أول كمبيوتر يستخدم رقائق السيليكون .
بينما استخدمت نسخة Block I عدد 4100 وحدة IC متكاملة ، تحتوي كل منها على بوابة NOR واحدة ثلاثية المدخلات ، استخدم الإصدار الأخير من Block II (المستخدم في الرحلات المأهولة) حوالي 2800 وحدة متكاملة ، معظمها بوابات NOR مزدوجة ثلاثية المدخلات وأعداد أصغر من الموسعات والاستشعار والمكبرات الإلكترونية. $^{:27,266}$تم تنفيذ الدوائر المتكاملة ، من Fairchild Semiconductor ، باستخدام منطق الترانزستور المقاوم (RTL) في حزمة مسطحة . تم توصيلهم عن طريق لف الأسلاك ، ثم تم دمج الأسلاك في بلاستيك الايبوكسي المصبوب. $^{:129}$
أدى استخدام نوع واحد من IC (NOR3 المزدوج) في جميع أنحاء AGC إلى تجنب المشكلات التي ابتليت بتصميم كمبيوتر IC آخر مبكرًا ، وهو كمبيوتر التوجيه Minuteman II ، والذي استخدم مزيجًا من منطق الصمام الثنائي والترانزستور والبوابات المنطقية للديود . بوابات NOR هي بوابات منطقية عالمية يمكن من خلالها إنشاء أي بوابة أخرى ، وإن كان ذلك على حساب استخدام المزيد من البوابات.

### الذاكرة

كان الكمبيوتر يحتوي على 2048 كلمة من ذاكرة النواة المغناطيسية القابلة للمسح و 36864 كلمة من ذاكرة الحبل الأساسية للقراءة فقط . $^{:27,90–93}$كلاهما كان له وقت دورة 11.72 ميكروثانية. $^{:27}$كان طول كلمة الذاكرة 16 بت: 15 بت من البيانات وبت واحدًا متماثلًا. كان تنسيق كلمة وحدة المعالجة المركزية الداخلية 16 بت 14 بتًا من البيانات ، وبت تجاوز واحد ، وبت تسجيل واحد (تمثيل مكمل واحد ). $^{:35–37}$

### واجهة DSKY

كانت واجهة المستخدم الخاصة بـ AGC هي DSKY ، وهي تعني الشاشة ولوحة المفاتيح وعادة ما تُنطق "DIS-kee". يحتوي على مجموعة من أضواء المؤشرات ، وشاشات رقمية ، ولوحة مفاتيح بنمط الآلة الحاسبة . تم إدخال الأوامر عدديًا ، كأرقام مكونة من رقمين: فعل ، وإسم . وصف الفعل نوع الإجراء الذي يتعين القيام به وحدد الاسم البيانات التي تأثرت بالإجراء المحدد بواسطة أمر الفعل (التفعيل).
تم عرض كل رقم عبر اللون الأخضر (المحدد كـ 530 نانومتر ) عرض سبعة أجزاء ذات توهج كهربائي عالي الجهد ؛ هذه كانت مدفوعة بالمرحلات الكهروميكانيكية ، مما يحد من معدل التحديث. يمكن أيضًا عرض ثلاثة أرقام موقعة من خمسة أرقام في نظامي ثماني أو عشري ، وعادة ما تستخدم لعرض متجهات مثل ارتفاع المركبة الفضائية أو تغيير السرعة المطلوب ( صاروخ دلتا- V ). على الرغم من تخزين البيانات داخليًا في هيئة وحدات مترية ، فقد تم عرضها كوحدات مألوفة للولايات المتحدة . كانت هذه الواجهة التي تشبه الآلة الحاسبة هي الأولى من نوعها.
تحتوي وحدة القيادة على اثنين من DSKYs متصلان بـ AGC: أحدهما موجود على لوحة العدادات الرئيسية والثاني يقع في حجرة المعدات السفلية بالقرب من آلة السدس المستخدمة لمحاذاة منصة التوجيه بالقصور الذاتي . تحتوي الوحدة القمرية على DSKY واحد من أجل AGC الخاص بها. تم وضع مؤشر موقف مدير الرحلة (FDAI) ، الذي يتحكم فيه AGC ، فوق DSKY على وحدة تحكم القائد وعلى LM.

### التوقيت

جاء مرجع توقيت الحاسوب AGC من 2.048 MHz (ميغاهرتز) لساعة كريستال . تم تقسيم الساعة على اثنين لإنتاج 1.024 من أربع مراحل للساعة التي يستخدمها AGC لأداء العمليات الداخلية. 1.024 ميغاهرتز تم تقسيم ساعة بالميغاهرتز أيضًا على اثنين لإنتاج إشارة 512 كيلوهرتز kHz تسمى التردد الرئيسي ؛ وتم استخدام هذه الإشارة لمزامنة أنظمة مركبة الفضاء الخارجية أبولو.
كما تم تقسيم التردد الرئيسي من خلال مقاسات رتبية ، أولاً بخمسة باستخدام عداد حلقي لإنتاج إشارة 102.4 كيلو هرتز. ثم تم تقسيم هذا على مرحلتين إلى 17 مرحلة متتالية تسمى F1 (51.2 كيلو هرتز) حتى F17 (0.78125 هرتز). مرحلة F10 ( 100 هرتز) إلى AGC لزيادة ساعة الوقت الحقيقي والعدادات اللاإرادية الأخرى باستخدام نظام Pinc (تمت مناقشته أدناه). وتم استخدام المرحلة F17 لتشغيل AGC بشكل متقطع عندما كان يعمل في وضع الاستعداد.

### السجلات المركزية

كان لدى AGC أربعة سجلات 16 بت للاستخدام الحسابي العام ، تسمى السجلات المركزية :
* ج : المجمع للحساب العام
* Z : عداد البرنامج - عنوان التعليمات التالية التي سيتم تنفيذها
* Q : المتبقي من تعليمات DV وعنوان المرسل بعد تعليمات TC
* LP : المنتج السفلي بعد تعليمات MP
كانت هناك أيضًا أربعة مواقع في الذاكرة الأساسية ، في العناوين من 20 إلى 23 ، مواقع التحرير المُدبلجة لأن كل ما تم تخزينه هناك سيظهر مقلوبًا أو يتم تدويره بواسطة موضع بت واحد ، باستثناء واحد قام بتغيير مواضع بتات السبعة اليمنى ، لاستخراج واحد من السبعة - بت المرجع التفسيري . الرموز التي تم تجميعها من اثنين اختصرت في كلمة واحدة. كان هذا شائعًا في الحزمة الأولى( البلوك الأول) والبلوك الثاني في الحاسوبين AGC.

### سجلات أخرى

كان لدى حاسوب AGC سجلات إضافية تم استخدامها داخليًا أثناء التشغيل:
* S : سجل عنوان ذاكرة 12 بت ، الجزء السفلي من عنوان الذاكرة
* Bank / Fbank : سجل مصرفي ذو ذاكرة قراءة فقط 4 بت ، لتحديد 1 بنك ROM بالألف كلمة (كيلوورد) عند العنونة في الوضع الثابت القابل للتحويل
* Ebank : سجل بنك ذاكرة الوصول العشوائي 3 بت ، لتحديد بنك ذاكرة الوصول العشوائي المكون من 256 كلمة عند العنونة في الوضع القابل للمسح القابل للتحويل
* Sbank (سوبر بانك): تمديد 1 بت إلى Fbank ، مطلوب لأن آخر 4 لم يكن بالإمكان الوصول إلى كيلوغرامات من ذاكرة القراءة فقط التي تبلغ 36 كيلو كلمة (أي 36 ألف كلمة) باستخدام Fbank وحده
* SQ : سجل تسلسل 4 بت ؛ التعليمات الحالية
* G : سجل ذاكرة تخزين مؤقت 16 بت ، للاحتفاظ بكلمات البيانات التي تنتقل من الذاكرة وإليها
* X : إدخال 'x' إلى adder (تم استخدام adder لإجراء العمليات الحسابية التكميلية ) أو الزيادة في عداد البرنامج ( Z Register)
* Y : الإدخال الآخر ("y") إلى adder
* U : ليس سجلاً حقًا ، ولكن ناتج adder (المجموع التكميلي للفرد لمحتويات التسجيلات X و Y )
* B : سجل المخزن المؤقت للأغراض العامة ، يُستخدم أيضًا في الجلب المسبق للتعليمات التالية. في بداية التعليمات التالية ، تم نسخ البتات العلوية من B (التي تحتوي على كود المرجع التالي) إلى SQ ، وتم نسخ البتات السفلية (العنوان) إلى S.
* C : ليس سجلاً منفصلاً ، ولكنه مكمل للسجل B
* IN : أربعة سجلات إدخال 16 بت
* OUT : خمسة سجلات إخراج 16 بت

### مجموعة التعليمات

استخدم تنسيق التعليمات 3 بتات لرمز التشغيل و 12 بتًا للعنوان. يحتوي Block I على 11 تعليمات: TC و CCS و INDEX و XCH و CS و TS و AD و MASK (أساسي) و SU و MP و DV (إضافي). أول ثمانية ، تسمى التعليمات الأساسية ، تم الوصول إليها مباشرة من المرجع 3 بت. الشفرة. وتم الإشارة إلى الثلاثة الأخيرة على أنها إرشادات extracode لأنه تم الوصول إليها عن طريق تنفيذ نوع خاص من تعليمات TC مباشرة .
تتكون تعليمات Block I AGC مما يلي:

#### TC (التحكم في النقل)

    فرع غير مشروط على العنوان المحدد بالتعليمات. تم تخزين عنوان المرسل تلقائيًا في سجل Q ، لذلك يمكن استخدام تعليمات TC لإجراء مكالمات روتين فرعي.

#### CCS (العد والمقارنة والتخطي)

    تعليمات فرع شرطي معقد. تم تحميل السجل A بالبيانات المسترجعة من العنوان المحدد بواسطة التعليمات. (نظرًا لأن AGC يستخدم تدوينًا مكملًا للآحاد ، فهناك تمثيلان للصفر. عندما يتم ضبط جميع البتات على الصفر ، يسمى هذا زائد صفر . إذا تم ضبط كل البتات على واحد ، فإن هذا يسمى ناقص صفر . ) تم بعد ذلك حساب القيمة المطلقة المتناقصة (DABS) للبيانات وتخزينها في السجل A. إذا كان الرقم أكبر من الصفر ، فإن DABS يقلل القيمة بمقدار 1 ؛ إذا كان الرقم سالبًا ، يتم استكماله قبل تطبيق الإنقاص - هذه هي القيمة المطلقة. ناقص يعني " تناقص ولكن ليس تحت الصفر". لذلك ، عندما يؤدي AGC وظيفة DABS ، فإن الأرقام الموجبة ستتجه نحو زائد الصفر ، وكذلك الأرقام السالبة ولكنها تكشف أولاً عن سلبيتها من خلال التخطي رباعي الاتجاهات أدناه. الخطوة الأخيرة في CCS هي تخطي رباعي ، اعتمادًا على البيانات الموجودة في السجل A قبل DABS. إذا كان السجل A أكبر من 0 ، فإن CCS يتخطى التعليمات الأولى مباشرة بعد CCS . إذا احتوى السجل A على صفر ، فإن CCS يتخطى التعليمات الثانية بعد CCS . يؤدي أقل من صفر إلى التخطي إلى التعليمات الثالثة بعد CCS ، وينتقل سالب صفر إلى التعليمة الرابعة بعد CCS . كان الغرض الأساسي من العد هو السماح لحلقة عادية ، يتحكم فيها عداد موجب ، بأن تنتهي في CCS و TC إلى بداية الحلقة ، وهو ما يعادل BCT الخاص بـ IBM 360 . اعتبرت دالة القيمة المطلقة مهمة بدرجة كافية ليتم تضمينها في هذه التعليمات ؛ عند استخدامه لهذا الغرض فقط ، كان التسلسل بعد CCS هو TC * + 2 ، TC * + 2 ، AD ONE. كان التأثير الجانبي الغريب هو إنشاء واستخدام ثقوب CCS عندما كان من المعروف أن القيمة التي يتم اختبارها لم تكن إيجابية أبدًا ، والتي حدثت في كثير من الأحيان أكثر مما قد يفترضه المرء. ترك هذا كلمتين كاملتين غير مشغولتين ، وكانت لجنة خاصة مسؤولة عن تعيين ثوابت البيانات لهذه الثغرات.

#### INDEX

    يضيف البيانات المسترجعة على العنوان المحدد في التعليمات إلى التعليمات التالية. يمكن استخدام INDEX لإضافة أو طرح قيمة فهرس إلى العنوان الأساسي المحدد بواسطة معامل التعليمات التي تلي INDEX . تُستخدم هذه الطريقة لتنفيذ عمليات البحث عن المصفوفات والجداول ؛ نظرًا لأن الإضافة تم إجراؤها على كلتا الكلمتين بالكامل ، فقد تم استخدامها أيضًا لتعديل المرجع. التعليمات البرمجية في التعليمات التالية (extracode) ، وفي حالات نادرة تعمل كلتا الوظيفتين في وقت واحد.

#### RESUME

    معناها ( تابع أو إستمر) مثيل خاص لـ INDEX ( INDEX 25). هذه هي التعليمات المستخدمة للعودة من المقاطعات. يتسبب في استئناف التنفيذ في الموقع المنقطع.

#### XCH (صرف)

    تبادل محتويات الذاكرة مع محتويات السجل A. إذا كان عنوان الذاكرة المحدد موجودًا في ذاكرة ثابتة ROM (للقراءة فقط) ، فلن تتأثر محتويات الذاكرة ، وتقوم هذه التعليمات ببساطة بتحميل السجل A. إذا كان في ذاكرة قابلة للمسح RAM (ذاكرة الوصول العشوائي) ، يتم تحقيق "تصحيح" تجاوز السعة من خلال تخزين أقصى اليسار من 16 بتات في A باعتبارها بتة الإشارة في الذاكرة ، لكن لا يوجد سلوك استثنائي مثل سلوك TS .

#### CS (مسح وطرح)

    تحميل السجل A مع تكملة المتمم أحادي one's complement للبيانات المشار إليها بواسطة عنوان الذاكرة المحدد.

#### TS (نقل إلى التخزين)

    قم بتخزين السجل A على عنوان الذاكرة المحدد. يكتشف TS أيضًا ، ويصحح ، الفائض بطريقة لنشر حمل للجمع / الطرح متعدد الدقة. إذا لم يكن للنتيجة تجاوز (أقصى اليسار 2 بت من A متماثل) ، فلن يحدث شيء مميز ؛ إذا كان هناك تجاوز (تختلف هاتان البتتان) ، فإن الجزء الموجود في أقصى اليسار يذهب إلى الذاكرة باعتباره بت الإشارة ، ويتم تغيير السجل A إلى +1 أو 1 وفقًا لذلك ، ويتخطى التحكم إلى التعليمات الثانية التي تلي TS . عندما يكون الفائض حدثًا ممكنًا ولكنه غير طبيعي ، فإن TS يتبعه TC إلى منطق no-overflow ؛ عندما يكون الاحتمال الطبيعي (كما هو الحال في الجمع / الطرح متعدد الدقة) ، يتبع TS بـ CAF ZERO ( CAF = XCH إلى الذاكرة الثابتة) لإكمال تشكيل الحمل (+1 ، 0 ، أو 1) في الكلمة التالية عالية الدقة. تم الاحتفاظ بالزوايا بدقة واحدة ، والمسافات والسرعات بدقة مزدوجة ، والوقت المنقضي بدقة ثلاثية.

#### AD (إضافة)

    أضف محتويات الذاكرة لتسجيل A وقم بتخزين النتيجة في A. قد تختلف البتتان الموجودتان في أقصى اليسار من A (حالة الفائض) قبل AD و / أو بعده. حقيقة أن الفائض هو حالة وليست حدثًا يغفر نطاقات محدودة من الفائض عند إضافة أكثر من رقمين ، طالما لم يتجاوز أي من المجاميع المتوسطة ضعف سعة الكلمة.

#### MASK

    قم بإجراء القليل (منطقي) والذاكرة مع السجل A وقم بتخزين النتيجة في السجل A.

#### MP (مضاعفة)

    قم بضرب محتويات السجل A بالبيانات الموجودة على عنوان الذاكرة المشار إليه وقم بتخزين المنتج عالي الجودة في السجل A والمنتج ذي الترتيب المنخفض في السجل LP. توافق أجزاء المنتج في التوقيع.

#### DV (قسمة)

    قسّم محتويات السجل أ على البيانات الموجودة على عنوان الذاكرة المشار إليه. قم بتخزين حاصل القسمة في السجل A والقيمة المطلقة للباقي في السجل Q. على عكس الآلات الحديثة ، تم التعامل مع الأرقام ذات النقاط الثابتة ككسور (فاصلة عشرية افتراضية على يمين بت الإشارة فقط) ، لذلك يمكنك إنتاج القمامة إذا كان المقسوم عليه لم يكن أكبر من العائد. لم تكن هناك حماية ضد هذا الوضع. في Block II AGC ، بدأ توزيع مزدوج الدقة في A و L (Block II LP) ، وتم تسليم الباقي الموقّع بشكل صحيح في L. مما أدى إلى تبسيط الإجراء الفرعي لتقسيم الدقة المزدوجة إلى حد كبير.

#### SU (طرح)

    اطرح (تكملة الشخص) البيانات الموجودة في عنوان الذاكرة المشار إليه من محتويات السجل A وقم بتخزين النتيجة في A.
تم تنفيذ التعليمات في مجموعات من 12 خطوة ، تسمى نبضات التوقيت . وتم تسمية نبضات التوقيت من TP1 إلى TP12. تم استدعاء كل مجموعة من 12 نبضة توقيت التعليمات اللاحقة . تعليمات بسيطة ، مثل TC ، يتم تنفيذها في تتابع واحد من 12 نبضة. تتطلب التعليمات الأكثر تعقيدًا العديد من التكرارات اللاحقة. استخدمت تعليمات المضاعفة ( MP ) 8 تكرارات: أولية تسمى MP0 ، متبوعة بـ MP1 تالية والتي تكررت 6 مرات ، ثم تنتهي بـ MP3 . تم تقليل هذا إلى 3 تتابعات لاحقة في Block II.
يمكن أن تؤدي كل نبضة توقيت في تالية لاحقة إلى ما يصل إلى 5 نبضات تحكم . كانت نبضات التحكم هي الإشارات التي أدت العمل الفعلي للتعليمات ، مثل قراءة محتويات السجل على الحافلة ، أو كتابة البيانات من الحافلة في السجل.

### الذاكرة

تم تنظيم ذاكرة Block I AGC في بنوك سعة 1100 كلمة. أدنى بنك (بنك 0) كان ذاكرة قابلة للمسح (RAM). جميع البنوك فوق البنك 0 كانت ذاكرة ثابتة (ROM). تحتوي كل تعليمات الحاسوب AGC على حقل عنوان 12 بت. تناولت البتات السفلية (1-10) الذاكرة داخل كل بنك. حدد البتتان 11 و 12 البنك: 00 حدد بنك الذاكرة القابل للمسح ؛ 01 اختار أدنى بنك (بنك 1) من الذاكرة الثابتة ؛ 10 تم اختيار التالي (البنك 2) ؛ وقام 11 باختيار السجل المصرفي الذي يمكن استخدامه لتحديد أي بنك أعلاه 2. كان يطلق على البنوك 1 و 2 اسم الذاكرة الثابتة ، لأنها كانت متوفرة دائمًا ، بغض النظر عن محتويات سجل البنك. كانت البنوك 3 وما فوق تسمى ثابتة للتحويل لأن البنك المحدد تم تحديده من خلال السجل المصرفي.
كان لدى Block I AGC في البداية 12 ألف كلمة في الذاكرة الثابتة ، ولكن تم زيادتها لاحقًا إلى 24 ألف. يحتوي Block II على 36 ألف كلمة من الذاكرة الثابتة و 2000 كلمة في الذاكرة القابلة للمسح.
قام AGC بنقل البيانات من وإلى الذاكرة من خلال سجل G في عملية تسمى دورة الذاكرة . أخذت دورة الذاكرة 12 نبضة توقيت (11.72 μs). بدأت الدورة عند توقيت النبض 1 (TP1) عندما قام AGC بتحميل عنوان الذاكرة ليتم جلبه في سجل S. استردت أجهزة الذاكرة كلمة البيانات من الذاكرة على العنوان المحدد بواسطة سجل S. تم إيداع الكلمات من الذاكرة القابلة للمسح في السجل G عن طريق توقيت النبض 6 (TP6) ؛ كانت الكلمات من الذاكرة الثابتة متاحة عن طريق توقيت النبض 7. كانت كلمة الذاكرة المسترجعة متاحة بعد ذلك في سجل G للوصول إلى AGC أثناء نبضات التوقيت من 7 إلى 10. بعد توقيت النبض 10 ، تمت إعادة كتابة البيانات الموجودة في سجل G إلى الذاكرة.
حدثت دورة ذاكرة AGC بشكل مستمر أثناء عملية AGC. كان على التعليمات التي تحتاج إلى بيانات الذاكرة الوصول إليها أثناء نبضات التوقيت 7-10. إذا قام AGC بتغيير كلمة الذاكرة في سجل G ، تتم إعادة كتابة الكلمة التي تم تغييرها إلى الذاكرة بعد توقيت النبض 10. بهذه الطريقة ، يتم تدوير كلمات البيانات بشكل مستمر من الذاكرة إلى السجل G ثم العودة مرة أخرى إلى الذاكرة.
تحتوي الأجزاء الخمسة عشر السفلية من كل كلمة ذاكرة على تعليمات أو بيانات AGC ، مع حماية كل كلمة بواسطة بتة تكافؤ فردية 16. تم ضبط هذا البت على 1 أو 0 بواسطة دارة مولد التكافؤ ، لذا فإن عدد 1s في كل كلمة ذاكرة سينتج دائمًا رقمًا فرديًا. قامت دائرة فحص التكافؤ باختبار بت التكافؤ خلال كل دورة ذاكرة ؛ إذا لم يتطابق البت مع القيمة المتوقعة ، يُفترض أن كلمة الذاكرة تالفة وأن ضوء لوحة إنذار التكافؤ مضاء.

### التقاطعات والعدادات اللاإرادية

كان لدى الحاسوب AGC خمس مقاطعات متجهة :
* تم تشغيل Dsrupt على فترات منتظمة لتحديث عرض المستخدم (DSKY).
* تم إنشاء Erupt من خلال العديد من أعطال الأجهزة أو الإنذارات.
* أشار Keyrupt إلى الضغط على مفتاح من لوحة مفاتيح المستخدم.
* تم إنشاء T3Rrupt على فترات منتظمة من جهاز توقيت لتحديث ساعة AGC في الوقت الحقيقي .
* تم إنشاء Uprupt في كل مرة تم تحميل كلمة 16 بت من بيانات الارتباط الصاعد في AGC.
استجاب الحاسوب AGC لكل مقاطعة من خلال تعليق البرنامج الساري مؤقتًا ، وتنفيذ روتين خدمة مقاطعة قصيرة ثم استئناف البرنامج الذي حدث فيه قطع.
كان لدى AGC أيضًا 20 عدادًا لا إراديًا . كانت هذه مواقع الذاكرة التي تعمل كعدادات لأعلى / لأسفل ، أو سجلات التحول. ستزداد العدادات أو تنقص أو تتحول استجابةً للمدخلات الداخلية. تم التعامل مع الزيادة ( Pinc ) ، أو التناقص ( Minc ) ، أو التحول ( Shinc ) من خلال أحد التعليمات الدقيقة التي تم إدخالها بين أي تعليمتين عاديتين.
يمكن تشغيل المقاطعات عندما تفيض العدادات. وتم إنتاج المقاطعات T3rupt و Dsrupt عندما كانت عداداتهم مدفوعة بـ 100 هرتز لكل ساعة جهاز ، فاضت بعد تنفيذ العديد من عمليات Pinc اللاحقة. تم تشغيل مقاطعة Uprupt بعد أن تحول عدادها الذي ينفذ Shinc اللاحقة 16 بت من بيانات الإرسال في AGC.

### وضعيه الإستعداد

كان لدى AGC وضع توفير الطاقة يتم التحكم فيه بواسطة مفتاح الاستعداد المسموح به . قام هذا الوضع بإيقاف تشغيل طاقة AGC ، باستثناء 2.048 MHz ومدرج التقسيم scaler . أعادت إشارة F17 من scaler تغيير طاقة AGC و AGC مرة أخرى في فواصل زمنية مقدارها 1.28 ثانية. في هذا الوضع ، يقوم AGC بأداء الوظائف الأساسية ، وفحص مفتاح الاستعداد المسموح به ، وإذا كان لا يزال ممكّنًا ، فيقوم بإيقاف تشغيل الطاقة وإعادته إلى وضع السكون حتى إشارة F17 التالية.
في وضع الاستعداد يظل AGC ساكنا معظم الوقت ؛ لذلك لم يكن نشطا لتنفيذ تعليمات Pinc اللازمة لتحديث ساعة الوقت الحقيقي لـ AGC في الساعة على فترات 10 مللي ثانية. للتعويض ، كانت إحدى الوظائف التي يؤديها AGC في كل مرة ينشط فيها في وضع الاستعداد هي تحديث ساعة الوقت الحقيقي بمقدار 1.28 ثانية.
تم تصميم وضع الاستعداد لتقليل الطاقة بمقدار 5 إلى 10 W (من 70 W) أثناء رحلة منتصف المسار عندما لا تكون هناك حاجة إلى الحاسوب AGC. ومع ذلك ، فمن الناحية العملية ، تم ترك AGC قيد التشغيل خلال جميع مراحل المهمة ولم يتم استخدام هذه الميزة مطلقًا.

### حافلات البيانات

كان لدى AGC ناقل قراءة 16 بت وناقل كتابة 16 بت. البيانات من السجلات المركزية (A ، Q ، Z ، أو LP) ، أو غيرها من السجلات الداخلية يمكن وضعها في بوابة القراءة مع إشارة تحكم. ناقل القراءة متصل بناقل الكتابة من خلال مخزن مؤقت غير مقلوب ، لذا فإن أي بيانات تظهر على ناقل القراءة تظهر أيضًا في ناقل الكتابة. يمكن لإشارات التحكم الأخرى نسخ بيانات ناقل الكتابة إلى السجلات.
يحتوي Block II AGC أيضًا على تعليمات EDRUPT (الاسم هو تقلص Ed's Interrupt ، بعد Ed Smally ، المبرمج الذي طلب ذلك). لا تؤدي هذه التعليمات إلى حدوث مقاطعة ، ولكنها تؤدي إجراءين شائعين لمقاطعة المعالجة. الإجراء الأول ، يمنع المزيد من المقاطعات (ويتطلب تعليمات RESUME لتمكينها مرة أخرى). في الإجراء الثاني ، يتم تحميل سجل ZRUPT بالقيمة الحالية لعداد البرنامج (Z). تم استخدامه مرة واحدة فقط في برنامج Apollo ، لإعداد تسلسل إنهاء دورة DAP في الطيار الآلي الرقمي للوحدة القمرية . يُعتقد أنه مسؤول عن مشاكل محاكاة برنامج LEM AGC Luminary .

## 1201 و 1202 برنامج تحذير

أصدرت PGNCS تحذيرات غير متوقعة أثناء هبوط أبولو 11 على سطح القمر ، حيث أظهر AGC إنذار 1202 ("تجاوز تنفيذي - لا توجد مجموعات أساسية") ، ثم إنذار 1201 ("تجاوز تنفيذي - لا توجد مناطق هبوط VAC"). كانت استجابة AGC لأي من الإنذارين هي إعادة تشغيل بسيطة. كان السبب هو التدفق السريع والمستمر لدورات استقبال زائفة من رادار الالتقاء (تتبع وحدة القيادة الموجودة في المدار) ، وقد تركت عمدًا في وضع الاستعداد أثناء الهبوط في حالة الحاجة إليها لوقف عملية الهبوط.
خلال هذا الجزء من النهج ، يتم تحميل المعالج بنسبة 85٪ تقريبًا. تسببت الدورة الإضافية البالغة 6400 من دورات التقييم في أضاعات في ثانية ما يعادل 13٪ من الحمل ، مما يترك وقتًا كافيًا لتشغيل جميع المهام المجدولة حتى الاكتمال. بعد خمس دقائق من الهبوط ، أعطى Buzz Aldrin للكمبيوتر الأمر 1668 ، والذي أمره بحساب الفرق DELTAH بشكل دوري (الفرق بين الارتفاع الذي يشعر به الرادار والارتفاع المحسوب). أضاف الأمر 1668 10٪ أخرى إلى عبء عمل المعالج ، مما تسبب في تجاوز تنفيذي وانطلاق الإنذار 1202 . وبعد حصوله على "GO" من هيوستن لمتابعة الهبوط ، أدخل ألدرين الأمر 1668 مرة أخرى فحدث إنذار آخر 1202 . وعند الإبلاغ عن الإنذار الثاني ، أضاف ألدرين التعليق "يبدو أنه يظهر عندما يكون لدينا ارتفاعا في أداء الحاسوب" بسبب الأمر الإضافي 1668 الذي أضاف 10% من عبء الحاسوب. تم تصميم برنامج AGC مع جدولة الأولوية ، واستعادته تلقائيًا ، وحذف المهام ذات الأولوية المنخفضة بما في ذلك مهمة العرض 1668 لإكمال مهام التوجيه والتحكم الحرجة. أصدر مراقب التوجيه ستيف باليس من هيوستن وفريق الدعم الذي يضم "جاك جارمان" عدة مكالمات "GO" وكان الهبوط ناجحًا. لدوره ، حصل "باليس "على وسام الحرية الرئاسي الأمريكي نيابة عن فريق مركز التحكم بأكمله ورواد فضاء أبولو الثلاثة.
لم تكن المشكلة خطأ برمجي في AGC ، ولم تكن خطأ تجريبيًا. لقد كان خطأ في تصميم الأجهزة الطرفية كان معروفًا بالفعل ووثق من قبل مهندسي Apollo 5. ومع ذلك ، نظرًا لأن المشكلة حدثت مرة واحدة فقط أثناء الاختبار ، فقد خلصوا إلى أنه كان من الآمن الطيران باستخدام الأجهزة الموجودة التي اختبروها بالفعل ، بدلاً من الطيران باستخدام نظام رادار أحدث ولكن لم يتم اختباره إلى حد كبير. في الأجهزة الفعلية ، تم ترميز موضع رادار الالتقاء مع التزامن المتحمس بواسطة مصدر مختلف يبلغ 800 هرتز AC من الذي يستخدمه الكمبيوتر كمرجع توقيت. الاثنان بتردد 800 هرتز كانت مصادر مغلقة التردد ولكن لم يتم قفل الطور ، وجعلت اختلافات الطور العشوائية الصغيرة تبدو كما لو أن الهوائي "يتردد" بسرعة في موضعه ، على الرغم من أنه كان ثابتًا تمامًا. ولـّدت هذه الحركات الوهمية سلسلة سريعة من سرقات الدورة.
أنقذ البرنامج الذي ألفه Halcombe Laning وتصميم الكمبيوتر مهمة هبوط أبولو 11. لولا تصميم "لانينج" ، لكان الهبوط قد أُجهض لعدم وجود جهاز كمبيوتر توجيه مستقر.

## تطبيقات خارج أبولو

شكg الحاسوب AGC أساس نظام تجريبي للطيران بالسلك (FBW) ؛ ثبت في الطائرة F-8 Crusader لإثبات التطبيق العملي للطيران بالسلك المدفوع بالكمبيوتر. وتم استبدالحاسوب AGC المستخدم في المرحلة الأولى من البرنامج بآلة أخرى في المرحلة الثانية ، وأدى البحث الذي تم إجراؤه على البرنامج إلى تطوير أنظمة الطيران بالسلك لمكوك الفضاء . كما أدى AGC - وإن كان بشكل غير مباشر - إلى تطوير أنظمة fly-by-wire لجيل المقاتلين التي تم تطويرها في ذلك الوقت.
تم استخدام الحاسوب AGC أيضًا لمركبة الإنقاذ الغاطسة العميقة التابعة للبحرية الأمريكية .

## إصدار كود المصدر

في عام 2003 ، بدأ Ron Burkey جهدًا لاستعادة الكود المصدري الذي يعمل على تشغيل حاسوب AGC وبناء محاكيا قادرا على تشغيله ، وهو VirtualAGC. تم تحميل جزء من الكمية الكبيرة من التعليمات البرمجية المصدر التي تم إنقاذها نتيجة لهذا الجهد بواسطة متدرب سابق في وكالة ناسا إلى GitHub في 7 يوليو 2016 ، مما جذب انتباه وسائل الإعلام بشكل كبير. تم توفير كود مصدر Apollo 11 Guidance Computer الأصلي في الأصل في عام 2003 من خلال مشروع Virtual AGC ومتحف MIT . تم نسخها ورقمتها من قوائم التعليمات البرمجية الأصلية ذات النسخ المطبوعة التي تم إجراؤها في الستينيات. في منتصف عام 2016 ، قام المتدرب السابق في وكالة ناسا ، كريس جاري ، بتحميل كود مصدر AGC على GitHub .

## أنظر أيضا

* Apollo PGNCS - نظام التوجيه والملاحة الأساسي لأبولو
* أجهزة كمبيوتر AP-101 (مشتقة من IBM S / 360) المستخدمة في مكوك الفضاء
* كمبيوتر توجيه جيمني
* تاريخ أجهزة الكمبيوتر
* سرقة دورة

## ملحوظات

* ↑ More specifically, verb 16 instructs the AGC to print the noun (in this case, 68, DELTAH) approximately twice per second. Had Aldrin known this, a simple 0668 (calculate and display DELTAH, once) would have only added approximately 5% load to the system, and would have only done so once, when ENTER was pressed.