|
Spectrum Land
#02
31 октября 1996 |
|
System - описание программы МОNОВLОCK CREATОR для создания моноблоков TR-DOS файлов.

Программа 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, то адрес Вы найдете в разделе "РЕК- ЛАМА". ─════════════─
Другие статьи номера:
Похожие статьи:
В этот день... 1 января
SibNews #08,
Woot! #01,
Spectrum Magazine #01,
ACNews #25,
Psychoz #14,
ACNews #14,
Last 128 #08,
Last 128 #06,
Last 128 #05,
Last 128 #04,
Last 128 #03,
Last 128 #02,
Last 128 #09,
Last 128 #3.5,
Last 128 #8.025,
Sinclair Club #05,
Last 128 #M!R 01,
Fantadrom #01,
Buzz #20,
Last 128 #01,
DonNews #13,
Nicron #120,
Promised Land #01,
Inferno #01,
Marazm #25,
Ultimathum #01,
Marazm #21,
Hooy Mag #02,
KrNews #11,
Marazm #22,
Marazm #23,
ZX Football 2000 #01,
Codemania #01,
Always #03,
Bugs #02,
IzhNews #08,
Virtual Worlds #01,
Listok #04,
Scenergy #02,
Flash Info #18,
Marazm #16,
Marazm #17,
Zed #01,
Balagan #02,
ZX Format #08,
ZX Power #03,
Shock #01,
Impulse #02,
Deja Vu #03,
ZX Club #08,
ZX Club #06,
Numberology #01,
Marazm #13,
Marazm #12,
Marazm #14,
Gorodok #02,
Zodiac #01,
Marazm #15,
Deja Vu #07,
Marazm #11,
Deja Vu #07,
Playboy #03,
Crazy News #2,
Crazy News #4,
ZX Light #01,
Crazy News #5,
Playboy #02,
ZX News #03,
ZX Review #1-2,
Read Me #02,
Crazy News #3,
Nicron #13,
Read Me #01,
Public Spirit #01,
Faultless #06,
Faultless #05,
ZX Software #01,
Stump #04,
Speccy #07,
Возраждение #0,
Speccy #03,
On-Line #17,
Scene+ #01,
Welcome Press #01,
ZX Konig #04,
Adventurer #01,
Faultless #05,
Faultless #04,
Di Halt #01,
Faultless #01,
Playboy #01,
Crazy News #1,
Faultless #03,
Pioneer #03,
Sinclair Town #02,
ZX Magazine #01,
Eldorado #01,
ZX Magazine #02,
Spectron #01,
ZX News #01,
ZX Konig #02,
200 #W,
Welcome Press #00,
Dune #07,
Subliminal Extacy #01,
Subliminal Extacy #02,
ZX Konig #01,
Subliminal Extacy #00,
Muchomor #01,
Spectrofon #01,
ZX Revija #02,
Outlet #01,
Outlet #1-3