كمبيوتر منزلي الصنع من لوحة AON

في الآونة الأخيرة ، ظهرت العديد من المقالات حول أجهزة الكمبيوتر محلية الصنع التي تم إنشاؤها من مكونات مختلفة غير قياسية على حبري. قررت أيضًا التحدث عن جهاز الكمبيوتر الخاص بي ، الذي تم إنشاؤه عام 1993. في أعقاب الحماس العام للصداقة ، كنت أرغب في الحصول على جهاز كمبيوتر أصلي 8 بت يعتمد على z80 ، بالإضافة إلى إنشاء برنامج له ، بدءًا من نظام التشغيل وانتهاءً بالألعاب. ما جاء منها ، قرأ تحت القطع.

كان السؤال الأول الذي نشأ عند إنشاء جهاز الكمبيوتر الخاص بك هو مسألة الهندسة المعمارية. قررت أنه سيكون مضغوطًا بما فيه الكفاية ، استنادًا إلى معالج z80 ، دون عرض صورة على جهاز تلفزيون ، ولكن مع شاشة نص LCD ، ولوحة مفاتيح كبيرة إلى حد ما ، وإخراج صوت على شكل مكبر صوت أحادي النغمة (قياسي في ذلك الوقت لمعظم أجهزة الكمبيوتر) ومنفذ RS232 للتوصيل لأجهزة الكمبيوتر الأخرى لأغراض البرمجة وتصحيح الأخطاء.

ومع ذلك ، نشأت مشكلة حيث يمكن الحصول على لوحة دوائر مطبوعة لدائرة أصلية تمامًا ، لأنه في عام 1993 لم يكن الصينيون قد أنتجوا لوحات للعالم بأسره ، وكان من المكلف جدًا طلب التطوير والإنتاج في المصنع. ثم وجهت انتباهي إلى اللوحات التي تم عمل معرفات المتصل منها - معرفات المتصل التلقائية. كانت معروضة للبيع في سوق Mitinsky ، وقد أتيحت لها الفرصة لتثبيت المكونات التي احتاجها ، لكنني بحاجة إلى التحسين. للبيع ، كانت هناك عدة أنواع من لوحات الدوائر المطبوعة ، إذا اخترت ذاكرتي ، اخترت لوحة تسمى "روس".

اسمحوا لي أن أذكركم بالقراء الشباب ما كان AON. كان هاتفًا به اتصال زر (بالمناسبة ، كان رائعًا في ذلك الوقت ، نظرًا لأن معظم الهواتف كانت تحتوي على قرص دوار) ، يتألف من 12 زرًا ومؤشرًا مضيئًا مكون من 9 بت من 7 أجزاء ، تم عرض رقم الهاتف عليه ، إذا كان من الممكن تحديد وبعض المعلومات الأخرى. احتوت لوحة AON على معالج z80 ، ومنفذ متوازي 558055 ، ودائرة فك التشفير ، وجهاز توقيت 580 ROM53 ، وذاكرة ROM سعة 32 كيلوبايت (مع محو الأشعة فوق البنفسجية) ، وذاكرة وصول عشوائي ثابتة بسعة 8 كيلوبايت ، والجزء التناظري متصل بخط الهاتف ، وربما شيء آخر ، ما نسيته على مدى السنوات الماضية.

لا تلائمني لوحة المفاتيح المكونة من 12 زرًا والمؤشر المتاح على معرف المتصل بشكل قاطع ، حيث لا يمكنهم عادةً إدخال المعلومات أو عرضها (في رسائل معينة). لذلك ، تقرر استخدام لوحة مفاتيح محلية الصنع ذات 40 زرًا وشاشة LCD نصية مكونة من 24 حرفًا من سطرين ، والتي ظهرت بعد ذلك للبيع. لتوصيل لوحة المفاتيح وشاشة LCD ، كان من الضروري تعديل مخطط AON. أول شيء فعلته هو التخلص من الجزء التناظري بأكمله المرتبط بخط الهاتف ، أو بالأحرى لم أغلقه. في الوقت نفسه ، تم تحرير أرجل الإخراج الموجودة على وحدة فك الترميز ، والتي حددت تفريغ المؤشر والساقين على المنفذ المتوازي 58055. تطلبت شاشة LCD 4 خطوط لنقل المعلومات ، ولكن بالنسبة للوحة المفاتيح كان من الضروري استخدام وحدة فك الترميز.نظرًا لترتيب 40 زرًا على لوحة المفاتيح في مصفوفة مكونة من 5 صفوف من 8 قطع ، فقد تقرر توصيل هذه الأزرار الـ 8 بمفكك الشفرة بحيث يمكن مسحها ضوئيًا عن طريق توفير مجموعات مختلفة من ثلاثة أسطر لإدخال وحدة فك الترميز وقراءة 5 قيم من صفوف الأزرار باستخدام KR580VB55. وبالتالي ، كان رمز مسح الزر المضغوط على لوحة المفاتيح بايتًا واحدًا في الحجم ، حيث حددت البتات الثلاثة الأولى العمود الذي تم الضغط على الزر فيه ، وأشارت البتات الخمس المتبقية في الصف الذي تم فيه الضغط على هذا الزر (أو عدة أزرار في وقت واحد) . بالإضافة إلى ذلك ، اعتبرت أن 8 كيلو بايت من ذاكرة الوصول العشوائي لن تكون كافية واستبدلت بـ 32 كيلو بايت. في الوقت نفسه ، اضطررت لإعادة لحام مقطعين على لوحة الدوائر المطبوعة ، لحسن الحظ ، كانت حالتا ذاكرة الوصول العشوائي 8 و 32 كيلوبايت متطابقة تقريبًا في pinout. في هذا الطريق،حصلت على 32 كيلوبايت من ROM و 32 كيلوبايت من ذاكرة الوصول العشوائي (أذكر أن z80 يمكنها معالجة 64 كيلوبايت كحد أقصى ، لذا استخدمت مساحة العنوان إلى أقصى حد). بالإضافة إلى ذلك ، انتقل خطان آخران من 58055 إلى المنفذ التسلسلي RS232 ، وهو ضروري للاتصال بجهاز كمبيوتر آخر. أضع كل هذا الاقتصاد في حالة من المختبر. والنتيجة هي هذا التصميم:

صورة

بعد الانتهاء من عمل الجهاز ، حان الوقت لإنشاء برنامج. هنا تجدر الإشارة إلى أن عملية إنشائها لم تنظر إلى ما تبدو عليه اليوم. أولاً ، تمت كتابة معظمه في المجمع z80 (على الرغم من أنه في ذلك الوقت تمت كتابة جميع البرامج الخاصة بهذه الأنظمة في المجمع ، جيدًا ، باستثناء BASIC). لتجميع من المجمع في المرحلة الأولى ، ساعدني صديقي ، الذي كان لديه جهاز كمبيوتر بروفي - استنساخ مخلص ، ولكن مع TR-DOS على متن الطائرة. ثم بدأت في استخدام جهاز كمبيوتر IBM الخاص بي ، والذي كان OS / 2 ، والذي قام بتشغيل MS-DOS في نافذة منفصلة ، والتي بدورها ، تم تشغيل محاكي TR-DOS ، حيث تم التجميع. يجب أن أقول أنه عندما نما البرنامج بشكل ملحوظ ، استغرقت عملية التجميع والتجميع عشر دقائق. كانت المشكلة الثانيةعدم وجود أدوات تصحيح ، وبالتالي ، كان من الضروري تنزيل كل شيء في كل مرة على جهاز الكمبيوتر الخاص بي محلي الصنع والتحقق من كيفية عملها (أول شيء يجب القيام به هو برنامج للعمل RS232 بسرعة 9600 بت في الثانية للتنزيل). وأخيرًا ، يجب أن يقال أنه بعد تصحيح صورة ROM ، كان من الضروري كتابتها إلى هذا ROM نفسه ، بعد محو ما تم كتابته بالفعل هناك. تم إجراء المسح باستخدام مصباح الأشعة فوق البنفسجية للدباغة من خلال نافذة خاصة في غلاف الدائرة المصغرة ، والتي تم تغطيتها بعد ذلك بورق لاصق أسود خاص ، يعمل على سد الثقب على جانب قرص مرن 5 بوصة لحمايته من الكتابة. بالإضافة إلى ذلك ، حيث لم يكن لدي مبرمج ، لكتابة نسخة جديدة من البرنامج في ROM ، في كل مرة كان علي الذهاب إلى صديقي إلى الطرف الآخر من موسكو ،الذي كان لديه هذا المبرمج. هنا من الضروري توضيح السؤال ، كيف كان من الممكن تصحيح صورة ROM دون تحميلها في هذا ROM؟ كان هناك عنوان أساسي لهذا ، والذي استخدمته جميع برامجي ، وهو تحويل العناوين بمقدار 32 كيلوبايت. أي أنه تم تحميل صورة ROM جديدة في ذاكرة الوصول العشوائي (RAM) وتصحيحها هناك ، وبعد التصحيح ، تم تعيين العنوان الأساسي على صفر ، وتم تجميع كل شيء مرة أخرى ، وذهبت إلى صديق لكتابة إصدار جديد في ROM.تم تجميع كل شيء مرة أخرى وذهبت إلى صديق لكتابة إصدار جديد في ROM.تم تجميع كل شيء مرة أخرى وذهبت إلى صديق لكتابة إصدار جديد في ROM.

عندما تم تصحيح عملية "الترميز" - "تصحيح" - "البرامج الثابتة" ، نشأ السؤال عن كتابة نظام تشغيل. كان على نظام التشغيل دعم إدخال لوحة المفاتيح ، وعرض المعلومات على شاشة LCD ، ودعم إخراج أصوات مختلفة والقيام بكل ذلك بالتوازي ، إذا أمكن ، أي أن يكون متعدد المهام. لكل هذا ، تم اختيار البنية التالية - كان هناك ثلاثة أنواع من المهام في نظام التشغيل: العديد من المهام في الوقت الفعلي بأولوية قصوى ، ومهمة مستخدم واحدة تتفاعل مع الشخص نفسه ومهام الخلفية التي كانت تعمل عندما كان المعالج خاملاً. قمت بإنهاء المهام بأعلى أولوية على المقاطعة ، التي تم إنشاؤها بواسطة جهاز ضبط الوقت KR580VI53 10 مرات في الثانية. يجب أن يقال أنه في معرف المتصل ، تم إنشاء المقاطعات 400 مرة في الثانية ، لأنه كان من الضروري تحديث المؤشر في كثير من الأحيان من أجلبحيث لا يلاحظ الشخص وميضًا. بالإضافة إلى تحديث المؤشر في المقاطعات ، تم استطلاع لوحة المفاتيح للبحث عن المفتاح المضغوط. أدى هذا الانقطاع المتكرر في AON إلى حقيقة أن معظم وقت المعالج تم إنفاقه فعليًا على المقاطعات ، وأردت أن يقوم جهاز الكمبيوتر الخاص بي بعمل شيء آخر مفيد. نظرًا لأنني قمت بتثبيت شاشة LCD كجهاز عرض معلومات ، والتي لها ذاكرة خاصة بها ولا تحتاج إلى تحديث ديناميكي ، فلم تعد هناك حاجة إلى مثل هذا التردد للمقاطعة. ثبت تجريبيا أن 10 مقاطعات في الثانية كافية لاستطلاع لوحة المفاتيح.أن معظم وقت المعالج تم إنفاقه فعليًا على المقاطعات ، وأردت أن يقوم جهاز الكمبيوتر الخاص بي بعمل شيء آخر مفيد. نظرًا لأنني قمت بتثبيت شاشة LCD كجهاز عرض معلومات ، والتي لها ذاكرة خاصة بها ولا تحتاج إلى تحديث ديناميكي ، فلم تعد هناك حاجة إلى مثل هذا التردد للمقاطعة. ثبت تجريبيا أن 10 مقاطعات في الثانية كافية لاستطلاع لوحة المفاتيح.أن معظم وقت المعالج تم إنفاقه فعليًا على المقاطعات ، وأردت أن يقوم جهاز الكمبيوتر الخاص بي بعمل شيء آخر مفيد. نظرًا لأنني قمت بتثبيت شاشة LCD كجهاز عرض معلومات ، والتي لها ذاكرة خاصة بها ولا تحتاج إلى تحديث ديناميكي ، فلم تعد هناك حاجة إلى مثل هذا التردد للمقاطعة. ثبت تجريبيا أن 10 مقاطعات في الثانية كافية لاستطلاع لوحة المفاتيح.

وهكذا ، تم إطلاق المهام في الوقت الفعلي عند كل مقاطعة ووضع معلومات جديدة في قائمة انتظار حدث خاص. كانت الأحداث من عدة أنواع وتحتوي على معلومات تتوافق مع نوع الحدث ، على سبيل المثال ، احتوى حدث "الزر المضغوط" على رمز مسح. في الواقع ، كانت إحدى المهام ذات الأولوية التي بدأت عند كل مقاطعة هي مهمة استطلاع لوحة المفاتيح وإزالة ارتداد الاتصال برمجيًا. بالإضافة إلى هذه المهمة ، كانت هناك أيضًا مهام ذات أولوية - المؤقتات التي يمكن أن تحددها مهمة المستخدم ، والتي ، بعد وقت محدد ، وضعت الحدث المناسب في قائمة الانتظار ، وكانت هناك إنذارات تعمل في وقت معين وساعة وتقويم ، وكانت هناك أيضًا مهمة تقوم بتشغيل الموسيقى مع برمجة KR580VI53 ، وتم إدخال المدخلات إليه في شكل بيانات. في هذا الطريق،يمكن لمهمة المستخدم ببساطة بدء تشغيل الموسيقى والقيام بأشياء أخرى.

تم تنفيذ العمل المفيد على جهاز الكمبيوتر الخاص بي من خلال مهمة مستخدم كانت مدفوعة بالحدث. تبدو النظرة النموذجية لمثل هذه المهمة كما يلي:

while(true) {
  Event e;

  GetEvent(e);

  /* process event */
}


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

كانت هناك مشكلة أخرى تتعلق بحقيقة أن شاشة LCD لم تكن قادرة على عرض الحروف الروسية. ويرجع ذلك إلى حقيقة أن هذه المؤشرات ظهرت للتو في سوقنا ولم يصرح بها أحد على وجه التحديد. بطبيعة الحال ، لم تكن هناك مكتبات للعمل معها ، ولكن لم يكن هناك سوى مواصفات ووصف للأوامر. لذلك ، كان لا بد من كتابة كل العمل على التهيئة والعمل معه من الصفر. لقد قمت بحل مشكلة الترويس على النحو التالي: تمت كتابة إجراء خاص ، كان إدخاله عبارة عن سلسلة تحتوي على نص روسي يجب عرضه. استبدل هذا الإجراء جميع الأحرف الروسية التي كانت مشابهة لللاتينية بالأحرف اللاتينية المقابلة ، وتم إنشاء تلك التي كان من المستحيل استبدالها على الطاير باستخدام صور مخصصة يمكن تنزيلها على شاشة LCD. يجب ملاحظة ذلكأن هناك ثماني صور من هذا القبيل للمستخدم ، وبالتالي ، في النص الروسي لا يمكن أن يكون هناك أكثر من ثمانية أحرف ، نظائرها لم تكن في الأبجدية اللاتينية. ولكن عادة ما يكون ذلك كافيا. فرصة أخرى ممتعة استخدمتها هي أنه إذا قمت بتغيير صور المستخدم لشخص واحد ، فستحصل على رسوم متحركة مضحكة. استغلت هذه الفرصة في اللعبة الأكثر صرامة ، والتي سأناقشها أدناه ، حيث رفع العلم فوق المنجم في الريح وانفجرت القنبلة.استغلت هذه الفرصة في اللعبة الأكثر صرامة ، والتي سأناقشها أدناه ، حيث رفع العلم فوق المنجم في الريح وانفجرت القنبلة.استغلت هذه الفرصة في اللعبة الأكثر صرامة ، والتي سأناقشها أدناه ، حيث رفع العلم فوق المنجم في الريح وانفجرت القنبلة.

سأخبرك الآن عن مهام المستخدم التي قمت بإنشائها لجهاز الكمبيوتر الخاص بي. عندما بدأت في إنشائها ، أدركت بسرعة أن كتابتها في مجمّع ، كما فعل الجميع في ذلك الوقت لأنظمة مثل sinclair ، أمر محزن للغاية. نظرًا لأنني قمت ببرمجة C على جهاز كمبيوتر IBM ، فكرت فيما إذا كان من الممكن البرمجة على C وعلى جهاز الكمبيوتر الخاص بي. بعد بعض البحث ، وجدت مترجمًا من لغة C لـ TR-DOS ، علاوة على ذلك ، في إصدار K&R الكلاسيكي. كان هذا المترجم بدائيًا ، على سبيل المثال ، لم يتحقق ما إذا كان عدد المعلمات التي تم تمريرها إلى الإجراء يتوافق مع عددها الفعلي ، ناهيك عن التحقق من أنواعها. ولكن إذا تمكنت من استخدام هذا المترجم لجهاز الكمبيوتر الخاص بي ، فسيكون هذا تقدمًا هائلاً. كانت المشكلة في كيفية تكييف الشفرة التي تلقاها هذا المترجم لجهاز الكمبيوتر الخاص بي.هنا ذهبت بالطريقة الكلاسيكية ، التي نسيناها بالفعل ، وفي عام 1993 ما زالوا يتذكرون. كانت هذه الطريقة لتجميع التعليمات البرمجية المصدر ليس مباشرة في ملف الكائن ، ولكن في التعليمات البرمجية المصدر المجمعة. وبالتالي ، كان من الضروري فقط كتابة وحدات الماكرو التي تسمح باستدعاء إجراءات المجمع المجمعة من الكود والعكس بالعكس ، مع النقل الصحيح للمعلمات ، والذي تم. باستخدام هذا المترجم ، بالإضافة إلى راحة العمل مع التعليمات البرمجية ، قدم ميزة رائعة أخرى - أصبح من الممكن العمل مع الضرب / التقسيم الصحيح (أذكر أن z80 لا يحتوي على أوامر الضرب والقسمة الصحيحة) ، وكذلك (lo and behold!) ، القدرة على العمل مع الأرقام النقطة العائمة. ومع ذلك ، لهذا كان علي التعامل مع المكتبة المرفقة بالمترجم ،نظرًا لأن جميع العمليات الرياضية بعد التجميع تم إجراؤها كمكالمة لهذه المكتبة. كانت المشكلة أن هذه المكتبة استخدمت متغيرات مؤقتة وضعها المحول البرمجي في نموذج الذاكرة الخاص بـ TR-DOS ، والتي بالطبع لا تتوافق تمامًا مع طراز الذاكرة في جهاز الكمبيوتر الخاص بي. كان علي أن أبحث عن جميع هذه المتغيرات المؤقتة وأعيدها إلى العناوين التي تناسب ذاكرة الوصول العشوائي الخاصة بي. ولكن كمكافأة ، حصلت على الكثير من الوظائف القياسية مثل الجيب وجيب التمام ، والتي استخدمتها في مهامي ، والتي سأناقشها أدناه.كان علي أن أبحث عن جميع هذه المتغيرات المؤقتة وأعيدها إلى العناوين التي تناسب ذاكرة الوصول العشوائي الخاصة بي. ولكن كمكافأة ، حصلت على الكثير من الوظائف القياسية مثل الجيب وجيب التمام ، والتي استخدمتها في مهامي ، والتي سأناقشها أدناه.كان علي أن أبحث عن جميع هذه المتغيرات المؤقتة وأعيدها إلى العناوين التي تناسب ذاكرة الوصول العشوائي الخاصة بي. ولكن كمكافأة ، حصلت على الكثير من الوظائف القياسية مثل الجيب وجيب التمام ، والتي استخدمتها في مهامي ، والتي سأناقشها أدناه.

كان أول برنامج تم إنشاؤه باستخدام برنامج التحويل البرمجي C هو برنامج للتحقق من التشغيل الصحيح لذاكرة الوصول العشوائي. مر هذا البرنامج بكامل ذاكرة الوصول العشوائي ، وكتب ، ثم قرأ أنماطًا مختلفة وقارن النتيجة. علاوة على ذلك ، تم عرض العملية بأكملها على شاشة LCD ، والتي أكدت أيضًا التشغيل الصحيح للإجراءات المرتبطة بها. من الواضح أن هذا كان مجرد اختبار للقلم قبل كتابة برامج أكثر إثارة للاهتمام. الشيء التالي الذي قمت به هو إنشاء محرر سداسي لتعديل محتويات ذاكرة الوصول العشوائي. يمتلك هذا المحرر بالفعل إمكانيات واسعة جدًا ، بما في ذلك ليس فقط عرض وتحرير خلايا الذاكرة ، ولكن أيضًا البحث عن وحدات بايت مثيرة للاهتمام في ذاكرة الوصول العشوائي. على وجه الخصوص ، أصبح من الممكن كتابة برامج صغيرة مباشرة في ذاكرة الوصول العشوائي في رموز الجهاز. لاختبار القدرات الصوتية لجهاز الكمبيوتر الخاص بك ،لقد أنشأت برنامجًا مثل "صندوق الموسيقى" الذي عزف ألحانًا مختلفة (أتذكر أنه تم تسجيل الألحان كملاحظات). علاوة على ذلك ، تم كتابة برنامج للعبة "الثيران والأبقار" ، حيث طُلب من الشخص تخمين رقم عشوائي مكون من أربعة أرقام صممه الكمبيوتر (نعم ، قمت أيضًا بإنشاء مولد رقم عشوائي). في هذا البرنامج ، كان عليّ إنشاء قائمة تمرير بسجل للأرقام التي تم إدخالها بالفعل ، حيث كان من المستحيل عرض قائمة طويلة بشكل خاص على سطرين. كان البرنامج التالي الذي تم إنشاؤه عبارة عن "مورد" كلاسيكي في حقل 16x16. نظرًا لأن لدي خطين فقط تحت تصرفي ، قمت بالتمرير ، وأضيف مرافقة موسيقية ورسوم متحركة لعلم يرفرف في مهب الريح وتفجير قنابل. علاوة على ذلك ، من أجل التأمل ، صنعت برنامجًا أظهر الديدان تزحف في اتجاه عشوائي ،باستخدام القدرة على تحميل صور مخصصة على الشاشة. حسنا ، وأين بدون تيك تاك تو الكلاسيكية؟ اختبرت فيها خوارزمية minimax ، أي أن الكمبيوتر يحسب (بسرعة إلى حد ما) جميع الخيارات ولم يفقدها أبدًا. نظرًا لأن نظام التشغيل الخاص بي يدعم الإنذارات والوقت والتقويم ، قمت بعمل برنامج مستخدم يقوم بتعيين الوقت والتاريخ والعديد من الإنذارات التي ، عندما وصلت إلى الوقت المحدد ، لعبت ألحانًا مختلفة. وأخيرًا ، فإن تاج الخلق في جهاز الكمبيوتر الخاص بي هو برنامج لحساب مسار الحركة في مشكلة جثتي الجاذبية. وهذا يعني ، بالنسبة لموضع وسرعة الجسم الأولي ، وكذلك كتلة المركز الجذاب ،تم حل مشكلة التكامل العددي لنظام من معادلتين تفاضليتين عاديتين غير خطيتين من الدرجة الثانية مع خطوة تكامل معينة. لهذا ، أضفت إجراء دمج هذه المعادلات رقميًا. كانت جميع المتغيرات تنسيق مزدوج للفاصلة العائمة. هنا أؤكد مرة أخرى أنه في معالج z80 لا يوجد فقط دعم الأجهزة للعمل مع النقطة العائمة ، ولكن أيضًا الضرب / تقسيم الأعداد الصحيحة المعتادة ، تم كل شيء برمجيًا. عمل هذا التكامل ببطء شديد ، حوالي خطوة واحدة في الثانية ، لكنه نجح!ولكن أيضًا الضرب / التقسيم المعتاد للأعداد الصحيحة ، تم كل شيء برمجيًا. عمل هذا التكامل ببطء شديد ، حوالي خطوة واحدة في الثانية ، لكنه نجح!ولكن أيضًا الضرب / التقسيم المعتاد للأعداد الصحيحة ، تم كل شيء برمجيًا. عمل هذا التكامل ببطء شديد ، حوالي خطوة واحدة في الثانية ، لكنه نجح!

ما زلت أرغب في تنفيذه ، ولكنه لم ينجح - أولاً ، التخصيص الديناميكي / تخصيص الذاكرة بحيث يمكن إدارة موارد كل مهمة بمرونة. أيضا ، لم يتم تنفيذ التسجيل / القراءة على الشريط ، كما حدث في سنكلير. لكن بشكل عام ، كنت سعيدًا بما تمكنت من القيام به. أؤكد أن كل ما سبق كان في ROM 32 كيلوبايت - الحجم الحالي لبريد إلكتروني واحد غير كبير.

يمكنك إلقاء نظرة على جهاز الكمبيوتر الخاص بي وهو يعمل هنا:




وقم بتنزيل برنامجه هنا

All Articles