Spectrum Land #02
31 октября 1996 |
|
Программа MONOBLOCK CREAtOR предоставлена для публикации в нашем журнале кемеровской компа- нией PLAYGEAR. Автор программы - Даниил Баянов - прислал вместе с ней и небольшой HELP, который Вы сможете прочитать чуть ниже. Мы немного изменили текст HELP'а (в смысле орфографии и стилистики), но суть дела от этого, естест- венно, не пострадала. Надеемся, что уважаемый DANIIL не будет в претензии. Поскольку, как явствует из на- звания программы, речь пойдет о моноблоках, после HELP'а мы да- дим полезную (как мы надеемся) информацию для начинающих - что нужно сделать, чтобы самому на- писать простой загрузчик для мо- ноблока (монолоадер). Баянов Даниил г.Кемерово Copyright PLAYGEAR COMPANY ©1996 ------------------------------------------ Попытки найти среди большого количества системных программ, преднaзнaчaющиxся для работы с дисками, программу, аналогичную MBC по функциональным возможнос- тям, не увенчались успехом. Поэ- тому я сел и написал сию прог- pammky... В принципе, как таковой, HELP не нужен, но все же я решил его написать, чтобы в дальнейшем из- бежать всяческих проблем. Утилита MBC v1.00 преднaзнaче- на для объединения обычных фай- лов в один или несколько (если суммарная длина объединяемыx файлов превышает 255 секторов) моноблочных файлов. Ранее для выполнения данной задачи необходимо было вручную рассчитывать и исправлять все параметры файлов с помощью диск- доктора. MBC работает только с каталогом, поэтому если Вы сом- hebaetecb в своих действиях, то предварительно сохраните нулевой трек (например, с помощью JC v4.0т), т.к. восстановить преж- ний вид каталога будет практи- чески невозможно. Программа ра- ботает с каталогом абсолютно корректно (т.е. байты количества файлов на диске, количества уда- ленных файлов и т.п. рaссчитывa- ются правильно). Управление в программе элемен- taphoe: <GRAPH> - отметить или снять метку с файла(ов). Отметить можно только находя- щиеся "рядом" друг с другом фай- лы (иначе отметка просто не про- исходит). Аналогично осуществля- ется и снятие метки. таким обра- зом, за один раз можно создать только 1 моноблок. <ENtER> - создать моноблок. Если было отмечено более одного файла, то появится предваритель- ный запрос: "ARE YOU SURE Y/N ?" ("Вы уверены?"). Нажатие клавишиприводит к созданию монобло- ка. <SPACE> - перечитать каталог диска (например, при его смене). Все отметки при этом теряются. <D> - выход в tR-DOS, попытка запустить "boot". Пример использования программы MBC v1.00. Пусть были отмечены следующие файлы: FILE: TYPE: LENGTH: ───── ───── ─────── CRUSHER B 1 loader C 4 INTRO C 46 GAMEDATA C 112 LEVEL1 C З7 LEVEL2 C З9 EPILOGUE C 48 В правом верхнем окне отобра- жаются файлы, которые получатся в результате создания моноблока. Должно получиться следующее: FILE: TYPE: LENGTH: ───── ───── ─────── CRUSHER B 255 CRUSHER 1 З2 Имена всех моноблочных файлов одинаковы, тип первого файла не меняется. тип последующих файлов - от "1" до "9" (по возраста- нию), их длина (в байтах) равна нулю. Если Вы не знаете, что такое моноблок или монолоадер, то пе- ред тем, как использовать прог- рамму MBC v1.00, сначала изучите соответствующую литературу. Напоследок хочется сказать, что хорошо бы реализовать данную функцию в каком-нибудь "комман- дере", например, JEMMINY или MONStER COMMANDER (KSA, отзо- вись!...)... ────────────────────────────────────────── Небольшое примечание: JC v4.0т - это JEMMINY COMMANDER, версия 4.0т. Определение того, что такое "моноблок", Вы только что прочи- тали в HELP'е. Но зачем нужны моноблоки? Моноблоки удобнее копировать; они быстрее загружаются; меньше изнашиваются магнитные головки дисководов и рабочая поверхность дискет. Полагаем, этих доводов для Вас достаточно. Программа MBC освобождает соз- дающего моноблок от рутинной ра- боты, связанной с необходимостью исправлять ряд данных о файлах вручную, удалять файлы и т.д. Но с ее помощью нельзя просто так взять и превратить в моноблок обычную дисковую версию програм- мы. Надо проделать небольшую ра- боту и написать хотя бы простой машиннокодовый загрузчик. Как это сделать, мы покажем Вам на условном примере. Программа (игра) называется GAME и состоит из 3-х файлов: │1-й ф.│2-й ф.│З-й ф. ────────────────────────────────────────── Название │ GAME │game$ │game1 ────────────────────────────────────────── Тип файла │BASIC │ CODE │ CODE ────────────────────────────────────────── Длина в │ │ │ байтах │ 200 │ 6912 │ З5000 ────────────────────────────────────────── Длина в │ │ │ секторах │ 1 │ 27 │ 1З7 ────────────────────────────────────────── Файл "game$" загружается с ад- реса 16384 (заставка к игре), после грузится файл "game1" с адреса 25000. Затем игра стартует: RANDOMIZE USR 25000. C помощью какого-нибудь ассем- блера наберите программку: ORG 30000 DI LD ВС,#1В05 ;заставка (#1В= ;27 секторов) LD DE,(23796) ;трек, сектор LD HL,16384 ;куда CALL 15635 ;вызов TR-DOS LD ВС,#8905 ;осн.блок (#89= ;137 секторов) LD DE,(23796) LD HL,25000 CALL 15635 EI JP 25000 ;старт игры Загрузка всех блоков игры про- изводится при помощи 5-й функции tR-DOS (чтение группы секторов). Номер функции задается в ре- гистре C. В регистр В нужно за- нести количество секторов. В ре- гистровую пару HL мы засылаем адрес в памяти, с которого будет грузиться блок. В регистровую пару DE заносятся номера началь- ных трека и сектора нужного бло- ка на диске. Поскольку файлы на- шей игры расположены на диске подряд, удобно воспользоваться системными переменными tR-DOS (23796 и 23797). В этих перемен- ных хранятся данные о секторе и треке, следующих непосредственно за только что загруженными. Cкомпилировав программу, запи- шите полученный объектный код на диск (31 байт). теперь надо об- ратиться к услугам старого доб- рого BASIC'а 48K. В строке 10 наберите данные установок цвета, оператора CLEAR и пр., как в прежнем файле GAME. В конце строки напишите: RANDO- MIZE USR 23872. В строке 1 наберите REM, после поставьте столько же пробелов, сколько получилось байт в за- грузчике. Загрузите коды загруз- чика в строку 1 прямой командой RANDOMIZE USR 15619: REM: LOAD <имя файла> CODE (23872+257). Запишите полученный BASIC-файл на другой диск (под тем же име- нем - GAME), скопируйте туда же файлы "game$" и "game1". Вот сейчас можете запускать MBC и насладиться результатом своего "каторжного" труда. Несколько слов скажем о неко- торых "мелочах". Экранные файлы (заставки) за- частую бывают компрессированными и запускаются из BASIC'а стан- дартной командой RANDOMIZE USR <адрес>. В монолоадере (сразу же после команд загрузки такого файла) надо написать CALL <ад- рес>. A если запуск игры произ- водился двумя командами, напри- мер, DRAW USR <адрес1>,<адрес2>, то в конце загрузчика пишется CALL <адрес1>, JP <адрес2>. Написание простых загрузчиков для моноблоков в целом не намно- го сложнее адаптации кассетных программ для работы в tR-DOS, и особо "страшного" в этом ничего нет. Хотя было бы неплохо уви- деть программу, которая, помимо наличия функций, выполняемых MBC v1.00, имела бы возможность соз- давать и простые монолоадеры. Вполне возможно, что в нашем журнале будут опубликованы и другие, не менее интересные ра- боты творческого коллектива из г.КЕМЕРОВО. Если Вы захотите на- писать автору программы MBC (Да- ниилу Баянову) или другому со- труднику компании PLAYGEAR, то адрес Вы найдете в разделе "РЕК- ЛАМА". ─════════════─
Other articles:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Similar articles:
В этот день... 23 November