تكييف برامج ZX Spectrum مع TR-DOS بالوسائل الحديثة. الجزء 2

في الجزء الأول من المقالة ، قمنا بفرز أداة تحميل الإقلاع من الإصدار الأصلي واكتشف أين يتم تحميل رمز اللعبة وكيف يبدأ. أنت الآن بحاجة إلى نقل الملفات إلى القرص.


مرن 5.25 "


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


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


$ head -c 6912 headless.bin > screen.bin $ tail -c +6913 headless.bin > data.bin 

سيقوم ملف بيانات اللعبة بترجمة تنسيق hobeta على الفور. في وقت لاحق سنحتاجه للتسجيل في الصورة النهائية. لتحويل التنسيقات ، سنستخدم zxspectrum-utils و trd2hob :


 $ binto0 data.bin 3 $ 0tohob data.000 #   data.$C 

تحميل الشاشة


بالنسبة إلى شاشة التمهيد ، قم بإنفاق 6.75 كيلو بايت على هذه الصورة البسيطة - مضيعة. يمكن ضغطه بشكل صحيح باستخدام ضاغط شاشة ، على سبيل المثال ، Laser Compact 5.2 . للقيام بذلك ، تحتاج أولاً إلى كتابة ملف الصورة على صورة قرص مرن مؤقت:


 $ binto0 screen.bin 3 $ 0tohob screen.000 $ createtrd tmp.trd $ hobeta2trd screen.\$C tmp.trd 

بعد ذلك ، قم بتشغيل Laser Compact في المحاكي وحفظ الصورة المضغوطة على نفس القرص المرن (حزمة الشاشة ← حفظ باستخدام depacker). عند الحفظ ، حدد screenz.C ملف screenz.C . بعد ذلك ، تحتاج إلى نسخ الصورة المضغوطة من صورة القرص المرن مرة أخرى إلى القرص. لسوء الحظ ، لم أتمكن من العثور على مصدر trd2hob أي مكان ، لذلك يجب علي تشغيل dos ثنائي من تحت DosBox:


 $ dosbox -c "mount C $PWD" -c "C:" -c "trd2hob.exe screen.trd" -c exit 

نتيجة لذلك ، حصلنا على ملف hobeta من screenz.$ مع صورة مضغوطة.


بالإضافة إلى الأدوات المساعدة Spectrum الأصلية لضغط الشاشة ، هناك أدوات مساعدة لأجهزة الكمبيوتر ، على سبيل المثال ، zx7b و zxsc . على الرغم من أنه من الأسهل أتمتة العمل معهم ، فإن كلاهما لهما عيوب قبل Laser Compact:


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

أخيرًا ، اكتشفنا حجم الملف المضغوط. سنحتاجها لاحقًا لكتابة أداة تحميل التشغيل.


 $ lstrd tmp.trd 80 Tracks, Double Side, capacity 640kB Number of files/deleted: 2/0 Free sectors/bytes: 2509/642304 First free sector/track: 3/3 FILENAME TYPE SECTORS ADDRESS LENGTH TRACK SECTOR -------------------------------------------------------------- screen <C> CODE (BYTES) 27 16384 6912 1 0 screenz <C> CODE (BYTES) 8 40000 1812 2 11 

كما ترون ، تم ضغط الملف أكثر من ثلاثة أضعاف ويشغل 8 قطاعات على القرص.


في الجزء التالي ، سنذهب مباشرةً إلى أداة تحميل التشغيل.


روابط ذات صلة:


  1. "تكييف البرامج مع نظام TR-DOS" بقلم نيكولاي روديونوف.

Source: https://habr.com/ru/post/ar452542/


All Articles