Программа 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: