ميكروشا. الفصل الثاني ROM و BSVV


في الفصل السابق ، وصفت الجزء الحديدي من جهاز تحكم بطاقة SD Microsha PC. وقد خرج هذا الفصل ببرنامج فلسفي. من يهتم - مرحبا!


كتابة ROM

كما كتبت في الجزء السابق ، لدي مبرمج ROM قديم لـ LPT. لم أرغب في التواصل مع مضاهاة LPT ، بالإضافة إلى ذلك ، كان عليّ أن أفهم كيف يعمل المبرمج ، وكيف يتم التحكم فيه ، وجميع أوامره والتأخير الزمني.

ثم اتصلت بأخي الذي يعمل في خدمة المجتمع ويعمل. طلبت منه الاتصال بي في العمل والتقاط أول حاسوب محمول من نوع IBM ThinkPad 760ed هناك. وفي اليوم التالي كان لدي الزان.


ومع ذلك ، لم أكن مستعدًا بعد للوميض. كنت بحاجة إلى تغيير جميع العناوين من 6xxx إلى Fxxx ، حيث xxx هو 12 بت من عنوان البرنامج الثابت. كان هذا ضروريًا بسبب بنية معالج KP580VM80A ؛ لا يتضمن نظام الأمر الخاص به نقل التعليمات البرمجية من منطقة ذاكرة إلى أخرى ، مما يسبب بعض الصعوبات.
بالمناسبة ، وبسبب هذا ، استغرق الأمر مني الكثير من الوقت لتحرير البرامج الثابتة بشكل عام ، لأنه نتيجة لتحسين كود منخفض المستوى ، بدأت "الثقوب" في التكون بين البرامج الفرعية. وصل حجم هذه الأقسام غير المستخدمة في بعض الأحيان إلى 10 بايت ، ولم أستطع تحمل هذا التبذير. اضطررت إلى تحويل المفاصل والتأكد من أن الرمز "لم يتحرك" في المكالمات والتحويلات.

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

لقد ملأت كل المساحة الخالية بـ 0xFF بايت ، وهذا سيسمح لي "بإنهاء" كتل جديدة في ROM في المستقبل دون محو كل الذاكرة بالأشعة فوق البنفسجية. والحقيقة هي أن هذه "EPROMs" مرتبة بحيث يتألف البرنامج الثابت من تغيير 1 في القليل إلى 0. وبالتالي ، يمكن تحويل 0xFF إلى أي رمز. بالإضافة إلى ذلك ، بعد اثنين من التحولات الرئيسية "JMP" تركت 3 رموز 0xFF. سيسمح لك هذا بتحويل رموز JMP نفسها إلى 0x00 (NOP) وسيتم إلغاء الانتقال ، ولكن ضع انتقالًا آخر بعده ، مما يجعله من هذه الثلاثة 0xFF.

بعد ذلك ، كنت بحاجة إلى قوة 12 فولت. في البداية كنت أرغب في الاتصال بـ Mikrosh PSU ، ولكن بعد ذلك رأيت تطورًا في منتصف كابل الطاقة في ThinkPad. أتذكر كيف ظهر هذا الالتواء ، تم تشغيل هذا الزان من سيارة ، لضبط جميع أنواع "يناير" و "Bosh" ، عندما ظهرت الحقن الأولى "إزميل".
بعد أن قمت بلف الالتواء ، قمت بلف كبل بموصل DJK-11b هناك وأضاء ضوء LED الأحمر على المبرمج بمرح.

بعد تشغيل الكمبيوتر المحمول ، رأيت ما يلي:

في نفس الوقت ، تم سماع "dzzzzz-CLAT !!!" مرة واحدة في الثانية.
نعم! هذا يعني أن محرك الأقراص الصلبة في الكمبيوتر المحمول لم يكن يعمل. كنت حزينًا لمدة 10-15 دقيقة ، ثم أدركت أنه لم يتم فقدان كل شيء ، وأن جهاز ThinkPad هذا يحتوي على قرص مضغوط. أثناء البحث في البريد العشوائي ، عثرت على 3 أقراص DVD فارغة ، لكني بحاجة إلى قرص مضغوط!

ثم اتصلت بأخي مرة أخرى وطلبت شراء 3 أقراص CD-R في Auchan. لوصف إنشاء قرص مضغوط باستخدام MS-DOS 6.22 هنا ، أعتقد أنه لا معنى له ، سأضيف فقط أنه بالإضافة إلى MS-DOS ، قمت بوضع برنامج الخياطة "PGM02101" (إنه أقل من دوس) والبرامج الثابتة نفسها في شكل ملف "ROM_V1.BIN "And" Norton Commander الإصدار 5.0.

لذا خذ اثنين. بعد تشغيل الزان ، أضع الفراغ في القرص المضغوط ، واضغط على "F1". يضيء مؤشر LED أصفر على القرص المضغوط وأسمع "kva-kva-kva-kva-pyk!" ، ثم توقف مؤقتًا ثم "kva-kva-kva-kva-pyk!" يحدث هذا حوالي عشرين مرة ، ثم يظهر نقش غامض: على


الأرجح هذا يعني أن "sidyuk" منحني أيضًا.

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

ساعد ، محرك الأقراص يومض ، متجعد ، ورأيت موجه DOS على الشاشة. مرحى!
لم يبدأ "Norton" ، حدث خطأ "خطأ في قراءة القرص (أو الكتابة) في محرك الأقراص A:". اعتقدت أنه يسجل شيئًا لأغراضه الخاصة ، لكن لا يمكنه الكتابة إلى القرص المضغوط. حسنًا ، إلى الجحيم معه ، الآن لا أستطيع أن أفهم لماذا احتاجه.
بشكل عام ، "DIR" ، ثم "pgm02101.exe" والآن على الشاشة ، يعرض البرنامج الذي طال انتظاره PGM02 اختيار منفذ LPT. اختر LPT 1 (0x378).

تتطلب البرامج الثابتة K573RF5 مصدر طاقة إضافيًا + 25 فولت. كنت محظوظًا بما يكفي للعثور على وحدة بها هذا الجهد. لدي طابعة HP Deskjet 2050a ، لذا فهي مزودة بمصدر طاقة 30 فولت. لحسن الحظ ، كان لدي جهاز متعدد وكان من السهل معرفة القطبية على الموصل.

بعد عملية البرامج الثابتة ، اتضح أن البرنامج الثابت لا يعمل. أي أن العملية تنتهي ، ولكن في شريحة ROM 0xFF لا يزال يقرأ في جميع العناوين. أظهرت طريقة الحشو بمقياس متعدد في المقبس أنه لا يوجد جهد برمجة على دبوس PGM. اتضح أن الترانزستور VT17 (KT815G) "طار" في المبرمج ، واضطررت إلى تغييره.

لقد تم ذلك! واقرأ بشكل صحيح!

فشل القدم غير متوقع

عندما دخلت رقاقة ROM في وحدة التحكم ، أردت التحقق من إمكانية قراءتها. كنت أرغب في استخدام مراقب النظام وعرض المنطقة 0xF000-0xF7FF باستخدام التوجيه "D". ضغطت على "DF0" ... عندما ضغطت على "0" لم يحدث شيء ، لم يعمل المفتاح.
ثم قمت بكتابة "DEFFF ، F7FF" وبعد الضغط على "VK" رأيت ما أريده على الشاشة. ولكن لبدء التنزيل من بطاقة SD ، كان مطلوبًا إدخال "GF000" والضغط على "VK".

اعتقدت في البداية أن الأمر كان في جهات الاتصال ، ولكن عندما اتضح عدم عمل عدد من المفاتيح. كانت هذه المفاتيح "8" و "مسافة" و "Yu" و "X" و "P" و "b" والسهم لأعلى.
عند فتح الرسم البياني ، رأيت أن هذا هو أول عمود رأسي من المفاتيح. كان دبوس PB0 لشريحة D39 (KR580BB55) مسؤولًا عن هذا العمود. بالمناسبة ، يشار إلى الثنائيات في الدائرة لفصل الأعمدة ، ولكن في الواقع ، يتم تثبيت 300 مقاوم أوم.


ما هذا؟ اختراق الشركة المصنعة؟
عند الإصلاح ، استبدل هذه المقاومات بالثنائيات. ولكن كيف يمكنني اختبار وحدة التحكم؟

أمل جديد

كان علي نشر ثينك باد والمبرمج مع إمدادات الطاقة مرة أخرى. في العناوين 0xF7CE - 0xF7D0 I "أنهيت" الرموز 0xC3 ، 0x00 ، 0xF0 ؛ مما يعني JMP F000.

يمكن البدء الآن ليس فقط باستخدام الأمر "GF000" ، ولكن أيضًا باستخدام الأمر "GF7CE" ، حيث لا يتم تضمين المفاتيح غير العاملة. بعد البدء ، عمل كل شيء ، وبدلاً من نظام التشغيل ، تم تحميل برنامج جلب "MIKROSHA OS" إلى الشاشة.

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

نعم ، ليس لدي Mikrosh وحده ، والشيء الذي أحضره هو تقريبًا مثال متحف "في النفط". الشيء هو أنه عندما اشترى لي والدي ميكروشا ، طُلب منه شراء واحد آخر ، واشترى. ولكن حدث خطأ ، ورفض الرجل لسبب ما.
لذلك استلقيت لمدة 30 عامًا.


بالمناسبة ، في Mikrosha الثانية هناك أيضًا مقاومات بدلاً من الثنائيات ، وبما أن السيارتين من نفس الدفعة ، أفترض أن هذا هو الحال في الدفعة بأكملها.



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

القوائم والرموز


الرمز
:20000000CDD0F0FE00CA1AF021D5F4CD18F8C39DF821E9F4CD18F8C39DF821FAEF977723F4
:20002000772377237711F5EF123EE01B12CD2FF4FE00C208F03A00E0FEEBCA69F03AFFE1DB
:20004000FEAAC211F001C6E111FDEF0A12031B0A12031B0A12031B0A12CD2FF4FE00C2080E
:20006000F03A00E0FEEBC211F03AFFE1FEAAC211F001CEF411BBE1CDDBF7FE00C211F00174
:20008000FAEF1A0213031A0213031A0213031A02CD2FF4FE00C208F006063AF4EF3C3C324A
:2000A000F4EFCDB9F0C5CD2FF4C1FE00C208F005C29AF0C300E0FFFFFF21FDEF7E3C77FE8C
:2000C00000C2CBF02B7DFEF9C2BCF0C9000000001E20CD87F5FE01CAE1F01DC2D2F03EE0ED
:2000E000C9CDC8F51E60CD00F5FE00CAF5F01DC2E6F03EE1C91E20CD50F5FE00CA06F11DF7
:20010000C2F7F03EE2C97A32FEEF97C9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68
:20012000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
:20014000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
:20016000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
:20018000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
:2001A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
:2001C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
:2001E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
:20020000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
:20022000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
:20024000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
:20026000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
:20028000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
:2002A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
:2002C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
:2002E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
:20030000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
:20032000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
:20034000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
:20036000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
:20038000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
:2003A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
:2003C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
:2003E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
:20040000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC
:20042000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3AFEEFE640FE40C259F43E51CD00F63AFAAB
:20044000EFCD00F63AFBEFCD00F63AFCEFCD00F63AFDEFCD00F6C38BF43AFDEF373F17320B
:20046000F2EF3AFCEF1732F1EF3AFBEF1732F0EF3E51CD00F63AF0EFCD00F63AF1EFCD00EC
:20048000F63AF2EFCD00F697CD00F63E95CD00F616FFCD6CF6FE00CAA1F415C292F43EFD5F
:2004A000C9CD6CF6FEFECAB0F415C2A1F43EFCC921F4EF56235E2600CD6CF61213CD6CF6E7
:2004C000121325C2B8F4CD6CF6CD6CF697C94D6963724F53000D0A6F7B69626B612053442A
:2004E000206B617274790D0A000D0A6F7B69626B61207A616772757A6B69204F530D0A0092
:200500003E77CD00F697CD00F6CD00F6CD00F6CD00F63DCD00F616FFCD6CF6FE01CA27F597
:2005200015C218F53EE0C93E69CD00F63E40CD00F697CD00F6CD00F6CD00F63CCD00F61650
:20054000FFCD6CF6FEFFC24FF515C241F53EE1C93E7ACD00F697CD00F6CD00F6CD00F6CD4D
:2005600000F63CCD00F616FFCD6CF6FEFFC277F515C268F53EE2C94FCD6CF657CD6CF6CD29
:200580006CF6CD6CF679C93EB032FFEF164C3EF032FFEF3EB032EEEF15C28EF59732FFEFBC
:2005A0003E40CD00F697CD00F6CD00F6CD00F6CD00F63E95CD00F616FFCD6CF6FE01CAC7ED
:2005C000F515C2B9F53EFFC93E48CD00F697CD00F6CD00F63CCD00F63EAACD00F63E87CDF9
:2005E00000F616FFCD6CF6FEFFC2F0F515C2E4F5CD6CF6CD6CF6CD6CF6CD6CF6C9000000E8
:2006000047C5473AFFEFE60E4FE521FFEF78E68077F65077780747E68077F65077780747F0
:20062000E68077F65077780747E68077F65077780747E68077F65077780747E68077F65077
:2006400077780747E68077F65077780747E68077F650777932FFEFE1C178C90000000000E7
:20066000000000000000000000000000D5E521FFEF1190D073727EE601074773727EE6015E
:20068000B0074773727EE601B0074773727EE601B0074773727EE601B0074773727EE6013A
:2006A000B0074773727EE601B0074773727EE601B0E1D1C9FFFFFFFFFFFFFFFFFFFFFFFF8B
:2006C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A
:2006E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A
:20070000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9
:20072000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9
:20074000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9
:20076000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99
:20078000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79
:2007A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59
:2007C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFC300F032FFEFC300E032FFEFE90A03FE00CAD3
:2007E000EBF7671A13BCCADBF73EFFC9E521FFEF5E720A73E1C9E521FFEF5E720273E1C957
:00000001FF
إليك رمز البرنامج الثابت الكامل بتنسيق HEX (2048 بايت). للحصول على الثنائي ، يمكنك استخدام الأداة المساعدة HEX2BIN.

قائمة
F000: CALL F0D0
F003: CPI A,00
F005: JZ F01A
F008: LXI H,F4D5
F00B: CALL F818
F00E: JMP F89D
F011: LXI H,F4E9
F014: CALL F818
F017: JMP F89D
F01A: LXI H,EFFA
F01D: SUB A
F01E: MOV M,A
F01F: INX H
F020: MOV M,A
F021: INX H
F022: MOV M,A
F023: INX H
F024: MOV M,A
F025: LXI D,EFF5
F028: STAX D
F029: MVI A,E0
F02B: DCX D
F02C: STAX D
F02D: CALL F42F
F030: CPI A,00
F032: JNZ F008
F035: LDA E000
F038: CPI A,EB
F03A: JZ F069
F03D: LDA E1FF
F040: CPI A,AA
F042: JNZ F011
F045: LXI B,E1C6
F048: LXI D,EFFD
F04B: LDAX B
F04C: STAX D
F04D: INX B
F04E: DCX D
F04F: LDAX B
F050: STAX D
F051: INX B
F052: DCX D
F053: LDAX B
F054: STAX D
F055: INX B
F056: DCX D
F057: LDAX B
F058: STAX D
F059: CALL F42F
F05C: CPI A,00
F05E: JNZ F008
F061: LDA E000
F064: CPI A,EB
F066: JNZ F011
F069: LDA E1FF
F06C: CPI A,AA
F06E: JNZ F011
F071: LXI B,F4CE
F074: LXI D,E1BB
F077: CALL F7DB
F07A: CPI A,00
F07C: JNZ F011
F07F: LXI B,EFFA
F082: LDAX D
F083: STAX B
F084: INX D
F085: INX B
F086: LDAX D
F087: STAX B
F088: INX D
F089: INX B
F08A: LDAX D
F08B: STAX B
F08C: INX D
F08D: INX B
F08E: LDAX D
F08F: STAX B
F090: CALL F42F
F093: CPI A,00
F095: JNZ F008
F098: MVI B,06
F09A: LDA EFF4
F09D: INR A
F09E: INR A
F09F: STA EFF4
F0A2: CALL F0B9
F0A5: PUSH B
F0A6: CALL F42F
F0A9: POP B
F0AA: CPI A,00
F0AC: JNZ F008
F0AF: DCR B
F0B0: JNZ F09A
F0B3: JMP E000
F0B6: RST 7
F0B7: RST 7
F0B8: RST 7
F0B9: LXI H,EFFD
F0BC: MOV A,M
F0BD: INR A
F0BE: MOV M,A
F0BF: CPI A,00
F0C1: JNZ F0CB
F0C4: DCX H
F0C5: MOV A,L
F0C6: CPI A,F9
F0C8: JNZ F0BC
F0CB: RET
F0CC: NOP
F0CD: NOP
F0CE: NOP
F0CF: NOP
F0D0: MVI E,20
F0D2: CALL F587
F0D5: CPI A,01
F0D7: JZ F0E1
F0DA: DCR E
F0DB: JNZ F0D2
F0DE: MVI A,E0
F0E0: RET
F0E1: CALL F5C8
F0E4: MVI E,60
F0E6: CALL F500
F0E9: CPI A,00
F0EB: JZ F0F5
F0EE: DCR E
F0EF: JNZ F0E6
F0F2: MVI A,E1
F0F4: RET
F0F5: MVI E,20
F0F7: CALL F550
F0FA: CPI A,00
F0FC: JZ F106
F0FF: DCR E
F100: JNZ F0F7
F103: MVI A,E2
F105: RET
F106: MOV A,D
F107: STA EFFE
F10A: SUB A
F10B: RET
F10C: RST 7
-------------------
F42E: RST 7
F42F: LDA EFFE
F432: ANI40
F434: CPI A,40
F436: JNZ F459
F439: MVI A,51
F43B: CALL F600
F43E: LDA EFFA
F441: CALL F600
F444: LDA EFFB
F447: CALL F600
F44A: LDA EFFC
F44D: CALL F600
F450: LDA EFFD
F453: CALL F600
F456: JMP F48B
F459: LDA EFFD
F45C: STC
F45D: CMC
F45E: RAL
F45F: STA EFF2
F462: LDA EFFC
F465: RAL
F466: STA EFF1
F469: LDA EFFB
F46C: RAL
F46D: STA EFF0
F470: MVI A,51
F472: CALL F600
F475: LDA EFF0
F478: CALL F600
F47B: LDA EFF1
F47E: CALL F600
F481: LDA EFF2
F484: CALL F600
F487: SUB A
F488: CALL F600
F48B: MVI A,95
F48D: CALL F600
F490: MVI D,FF
F492: CALL F66C
F495: CPI A,00
F497: JZ F4A1
F49A: DCR D
F49B: JNZ F492
F49E: MVI A,FD
F4A0: RET
F4A1: CALL F66C
F4A4: CPI A,FE
F4A6: JZ F4B0
F4A9: DCR D
F4AA: JNZ F4A1
F4AD: MVI A,FC
F4AF: RET
F4B0: LXI H,EFF4
F4B3: MOV D,M
F4B4: INX H
F4B5: MOV E,M
F4B6: MVI H,00
F4B8: CALL F66C
F4BB: STAX D
F4BC: INX D
F4BD: CALL F66C
F4C0: STAX D
F4C1: INX D
F4C2: DCR H
F4C3: JNZ F4B8
F4C6: CALL F66C
F4C9: CALL F66C
F4CC: SUB A
F4CD: RET
F4CE: MOV C,L
F4CF: MOV L,C
F4D0: MOV H,E
F4D1: MOV M,D
F4D2: MOV C,A
F4D3: MOV D,E
F4D4: NOP
F4D5: DCR C
F4D6: LDAX B
F4D7: MOV L,A
F4D8: MOV A,E
F4D9: MOV L,C
F4DA: MOV H,D
F4DB: MOV L,E
F4DC: MOV H,C
F4DD: ENOP
F4DE: MOV D,E
F4DF: MOV B,H
F4E0: ENOP
F4E1: MOV L,E
F4E2: MOV H,C
F4E3: MOV M,D
F4E4: MOV M,H
F4E5: MOV A,C
F4E6: DCR C
F4E7: LDAX B
F4E8: NOP
F4E9: DCR C
F4EA: LDAX B
F4EB: MOV L,A
F4EC: MOV A,E
F4ED: MOV L,C
F4EE: MOV H,D
F4EF: MOV L,E
F4F0: MOV H,C
F4F1: ENOP
F4F2: MOV A,D
F4F3: MOV H,C
F4F4: MOV H,A
F4F5: MOV M,D
F4F6: MOV M,L
F4F7: MOV A,D
F4F8: MOV L,E
F4F9: MOV L,C
F4FA: ENOP
F4FB: MOV C,A
F4FC: MOV D,E
F4FD: DCR C
F4FE: LDAX B
F4FF: NOP
F500: MVI A,77
F502: CALL F600
F505: SUB A
F506: CALL F600
F509: CALL F600
F50C: CALL F600
F50F: CALL F600
F512: DCR A
F513: CALL F600
F516: MVI D,FF
F518: CALL F66C
F51B: CPI A,01
F51D: JZ F527
F520: DCR D
F521: JNZ F518
F524: MVI A,E0
F526: RET
F527: MVI A,69
F529: CALL F600
F52C: MVI A,40
F52E: CALL F600
F531: SUB A
F532: CALL F600
F535: CALL F600
F538: CALL F600
F53B: INR A
F53C: CALL F600
F53F: MVI D,FF
F541: CALL F66C
F544: CPI A,FF
F546: JNZ F54F
F549: DCR D
F54A: JNZ F541
F54D: MVI A,E1
F54F: RET
F550: MVI A,7A
F552: CALL F600
F555: SUB A
F556: CALL F600
F559: CALL F600
F55C: CALL F600
F55F: CALL F600
F562: INR A
F563: CALL F600
F566: MVI D,FF
F568: CALL F66C
F56B: CPI A,FF
F56D: JNZ F577
F570: DCR D
F571: JNZ F568
F574: MVI A,E2
F576: RET
F577: MOV C,A
F578: CALL F66C
F57B: MOV D,A
F57C: CALL F66C
F57F: CALL F66C
F582: CALL F66C
F585: MOV A,C
F586: RET
F587: MVI A,B0
F589: STA EFFF
F58C: MVI D,4C
F58E: MVI A,F0
F590: STA EFFF
F593: MVI A,B0
F595: STA EFEE
F598: DCR D
F599: JNZ F58E
F59C: SUB A
F59D: STA EFFF
F5A0: MVI A,40
F5A2: CALL F600
F5A5: SUB A
F5A6: CALL F600
F5A9: CALL F600
F5AC: CALL F600
F5AF: CALL F600
F5B2: MVI A,95
F5B4: CALL F600
F5B7: MVI D,FF
F5B9: CALL F66C
F5BC: CPI A,01
F5BE: JZ F5C7
F5C1: DCR D
F5C2: JNZ F5B9
F5C5: MVI A,FF
F5C7: RET
F5C8: MVI A,48
F5CA: CALL F600
F5CD: SUB A
F5CE: CALL F600
F5D1: CALL F600
F5D4: INR A
F5D5: CALL F600
F5D8: MVI A,AA
F5DA: CALL F600
F5DD: MVI A,87
F5DF: CALL F600
F5E2: MVI D,FF
F5E4: CALL F66C
F5E7: CPI A,FF
F5E9: JNZ F5F0
F5EC: DCR D
F5ED: JNZ F5E4
F5F0: CALL F66C
F5F3: CALL F66C
F5F6: CALL F66C
F5F9: CALL F66C
F5FC: RET
F5FD: NOP
F5FE: NOP
F5FF: NOP
F600: MOV B,A
F601: PUSH B
F602: MOV B,A
F603: LDA EFFF
F606: ANI0E
F608: MOV C,A
F609: PUSH H
F60A: LXI H,EFFF
F60D: MOV A,B
F60E: ANI80
F610: MOV M,A
F611: ORI50
F613: MOV M,A
F614: MOV A,B
F615: RLC
F616: MOV B,A
F617: ANI80
F619: MOV M,A
F61A: ORI50
F61C: MOV M,A
F61D: MOV A,B
F61E: RLC
F61F: MOV B,A
F620: ANI80
F622: MOV M,A
F623: ORI50
F625: MOV M,A
F626: MOV A,B
F627: RLC
F628: MOV B,A
F629: ANI80
F62B: MOV M,A
F62C: ORI50
F62E: MOV M,A
F62F: MOV A,B
F630: RLC
F631: MOV B,A
F632: ANI80
F634: MOV M,A
F635: ORI50
F637: MOV M,A
F638: MOV A,B
F639: RLC
F63A: MOV B,A
F63B: ANI80
F63D: MOV M,A
F63E: ORI50
F640: MOV M,A
F641: MOV A,B
F642: RLC
F643: MOV B,A
F644: ANI80
F646: MOV M,A
F647: ORI50
F649: MOV M,A
F64A: MOV A,B
F64B: RLC
F64C: MOV B,A
F64D: ANI80
F64F: MOV M,A
F650: ORI50
F652: MOV M,A
F653: MOV A,C
F654: STA EFFF
F657: POP H
F658: POP B
F659: MOV A,B
F65A: RET
F65B: NOP
F65C: NOP
F65D: NOP
F65E: NOP
F65F: NOP
F660: NOP
F661: NOP
F662: NOP
F663: NOP
F664: NOP
F665: NOP
F666: NOP
F667: NOP
F668: NOP
F669: NOP
F66A: NOP
F66B: NOP
F66C: PUSH D
F66D: PUSH H
F66E: LXI H,EFFF
F671: LXI D,D090
F674: MOV M,E
F675: MOV M,D
F676: MOV A,M
F677: ANI01
F679: RLC
F67A: MOV B,A
F67B: MOV M,E
F67C: MOV M,D
F67D: MOV A,M
F67E: ANI01
F680: ORA B
F681: RLC
F682: MOV B,A
F683: MOV M,E
F684: MOV M,D
F685: MOV A,M
F686: ANI01
F688: ORA B
F689: RLC
F68A: MOV B,A
F68B: MOV M,E
F68C: MOV M,D
F68D: MOV A,M
F68E: ANI01
F690: ORA B
F691: RLC
F692: MOV B,A
F693: MOV M,E
F694: MOV M,D
F695: MOV A,M
F696: ANI01
F698: ORA B
F699: RLC
F69A: MOV B,A
F69B: MOV M,E
F69C: MOV M,D
F69D: MOV A,M
F69E: ANI01
F6A0: ORA B
F6A1: RLC
F6A2: MOV B,A
F6A3: MOV M,E
F6A4: MOV M,D
F6A5: MOV A,M
F6A6: ANI01
F6A8: ORA B
F6A9: RLC
F6AA: MOV B,A
F6AB: MOV M,E
F6AC: MOV M,D
F6AD: MOV A,M
F6AE: ANI01
F6B0: ORA B
F6B1: POP H
F6B2: POP D
F6B3: RET
F6B4: RST 7
---------------------
F7CD: RST 7
F7CE: JMP F000
F7D1: STA EFFF
F7D4: JMP E000
F7D7: STA EFFF
F7DA: PCHL
F7DB: LDAX B
F7DC: INX B
F7DD: CPI A,00
F7DF: JZ F7EB
F7E2: MOV H,A
F7E3: LDAX D
F7E4: INX D
F7E5: CMP H
F7E6: JZ F7DB
F7E9: MVI A,FF
F7EB: RET
F7EC: PUSH H
F7ED: LXI H,EFFF
F7F0: MOV E,M
F7F1: MOV M,D
F7F2: LDAX B
F7F3: MOV M,E
F7F4: POP H
F7F5: RET
F7F6: PUSH H
F7F7: LXI H,EFFF
F7FA: MOV E,M
F7FB: MOV M,D
F7FC: STAX B
F7FD: MOV M,E
F7FE: POP H
F7FF: RET
هنا قائمة ، تمت إزالة الأماكن الفارغة منها للراحة.

توجد روتينات البايت لإرسال وقراءة بايت في العناوين 0xF600 و 0xF66C ، على التوالي ، وهي مكتوبة في شكل موسع بدون حلقات ، وهذا يعطي سرعة عالية للبرنامج.

سأذكر مرة أخرى أن هذه نسخة أولية خام ، والتي ستتغير بشكل ملحوظ وسيتم استكمالها. ولكني الآن لست بحاجة إلى التحميل الصوتي من خلال توجيه "أنا".

جهاز التمهيد

كما ذكرنا من قبل ، في قطاع التمهيد في العنوان 0x1BB هو توقيع "MicrOS" ، وبعده 4 بايت مع عنوان برنامج نظام التشغيل. تقوم BSVV بتحميل 7 قطاعات 512 بايت في المنطقة 0xE000 - 0xEDFF وتحويل التحكم إلى العنوان 0xE000. يتم التحميل في صفحة الصفر. سيتم ملء بقية الصفحات بالفعل بواسطة نظام التشغيل ، إذا لزم الأمر (ومتى أقوم ببناء الجسور). من أجل "التثبيت" الصحيح لنظام التشغيل على بطاقة SD ، بعد التنسيق ، اكتب الملف من نظام التشغيل. ثم ابحث عن رقم القطاع الأول من هذا الملف واكتب التوقيع والعنوان في قطاع التمهيد. يجب تحديد العنوان في القطاعات (وليس بالبايت). ترتيب البايتات ذات النهاية الكبيرة ، أي البايت المنخفض الأخير (مع العنوان العالي).

بالمناسبة ، سأقوم بأتمتة عملية تثبيت نظام التشغيل ، ربما حتى باستخدام أدوات Mikroshi ، ثم سيكون هناك روتين فرعي آخر في BSVV.

ماذا بعد؟

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

سيسمح لي مثل هذا البرنامج بلعب الألعاب على Mikrosh دون عناء العمل في وحدة تحكم DOS. سأسمي هذا البرنامج ، "مدير اللعبة". وحولها ، على الأرجح ، سيكون الفصل التالي.

وعلى بطاقة أخرى ، أخطط لجعل DOS عادية لبرامج مثل Basic و Editor و Assembler ، إلخ.

بعض كلمات وتعميم البرمجة

بطريقة ما جلسنا أنا وأخي ودخننا ، وسأل لماذا لدي نظرة متعمقة؟

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

لقد بدأت على هذا
النحو : تخيل ، أقول أن هناك 8 مخازن ، ولكل منها رئيس. هناك ساعي. المهمة هي ترتيب شحن البضائع من مستودع إلى مستودع ، ولكن هناك قيود. وصعوبة أخرى هي السرعة.
حاولت أن أقول أن رمز البريد السريع اتضح أنه كبير جدًا ، وأنه يتحول إلى الكثير من المكالمات إلى المكدس والكثير من العمليات مع السجلات. ثم ، من أجل الفهم الكامل ، سألني أخي أسئلة ، وأجبتها ، وعملت!

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

المجموع الفرعي

تم إطلاق My HelloWorld بنجاح على كلا الجهازين. لا يستغرق الوقت من الضغط على "VK" حتى ظهور النقش أكثر من ثانيتين بمقدار 3584 بايت. بالأحرى ، حوالي 1.5 ثانية. لا يوجد شيء لقياسه بدقة أكبر. أعتقد أن هذه نتيجة جيدة.

هذا كل شئ حتى الان. شكرا للانتباه! يتبع…

All Articles