(c) nikphe/any vs alone coder/i8/any
┌── -── ──-─-- ─-───- ─┐
│ Creater of Turbo Mono Loader
└┬──- ───-── - - ─── - -─┬-┘
┌ Nikphe
│
┼ Завалялся тут у меня кое-какой исходни-
чек, дай,думаю,в гайд кину... Программа-то
полезная,может кому и пригодится...
Сама прогза лежит в приложении к журна-
лу,называется creater.H
Каждый, наверное,сталкивался с ситуаци-
ей,когда требовалось создать загрузчик.Со-
бственно,цель прогзы - создание бейсик-за-
грузчика с mono лоадером (или ещё чем).
Как делается это стандартным способом:
берётся бейсик загрузчик, туда через sts
запихивается кодовый блок mono загрузчика,
фиксится длина бейсик-строки,добавляются в
конце текста определённые байты для авто-
матического старта программы при команде
LOAD,тыры-пыры... Долго и муторно!!!
Чтобы не терять время и силы на такие
мало интересные вещи, я и слепил эту прог-
зу.Она сама создаст подходящий бейсик-файл
и впихнёт туда загрузчик,от вас же требуе-
тся подправить кое-какие параметры в исхо-
днике (собственно, в исходняк можно пихать
всё, что угодно) и запустить прогзу. После
её запуска на диске появится бейсик-файл,к
которому вы приклеите всё, что хотели заг-
рузить. Клеить файл к файлу можно в любом
нормальном коммандере. (Ред.: только вот
Perfect Commander после склеивания длину
неправильно ставит ;( ) Естественно, файлы
нужно располагать на диске в той последо-
вательности, в какой они должны загружать-
ся.
Ну вроде и всё, если вам это надо, то с
остальным вы разберётесь сами.
P.S. В исходнике использовался turbo-
loader, написанный Faster'ом.
──────────────────────────────────────────
#3d13 mono-load-n-runner ;)
__,,,,...-.=-^-^^^^"""~~~
┌ Alone Coder
│
┼ Наверняка каждому после написания хоро-
шей проги хотелось её побыстрее зарели-
зить,но писать загрузчик обычно бывает со-
всем ЛЕНИВО ;) Это понятно:пока писал про-
грамму - устал,отдохнуть охота... Но отзы-
вов по программе тоже охота,и побыстрее ;)
Тут два решения:либо распространять не-
посредственно исходник, либо использовать
готовый лоадер.
Так вот, специально для быстрых релизов
маааленьких программ я написал один из та-
ких лоадеров.
Мой лоадер занимает 1 сектор.
Что делает этот лоадер:
1. Грузит один упакованный Hrust'ом v1.3
блок без распаковщика.
2. Распаковывает его.
3. OUT (254),0.
4. LD SP,stack.
5. Запускает программу.
Основную часть загрузчика занимает рас-
паковщик Hrust, поэтому не обессудьте, что
он умеет так мало. Зато в большинстве слу-
чаев удаётся сократить собранную программу
на один сектор :D
Перекидывалку данных из распаковщика
пришлось убрать,поэтому блок нужно грузить
в высокие адреса,а распаковывать в низкие.
Как пользоваться:
- Откомпилируйте свою программу в один
кодовый блок "prog.C".
- Скопируйте на этот диск сам загрузчик:
"DEHR.B".
- Упакуйте свою кодовый блок Хрустом, без
распаковщика: "prog *.C". Нужно,чтобы он
располагался на диске сразу после DEHR.B.
Запомните полученную после упаковки длину
в секторах.
- Загрузите исходник (DEHR1SEC.H) и вни-
мательно осмотрите его.
Далее варианты:
- Вариант a): исправьте переменные (адрес
загрузки,длину упакованного блока в секто-
рах,адрес распаковки,адрес стека,адрес за-
пуска) в исходнике, откомпилируйте его и
запишите с помощью STS получившийся сектор
с адреса #5d3b на диск поверх файла DEHR.B
(команда SS/S в STS'е.По умолчанию в пара-
метрах этой команды указан следующий после
загруженного файла сектор - вычтите из не-
го единицу).
- Вариант b): загрузите в STS "DEHR.B",
исправьте переменные в самом коде загруз-
чика и запишите опять-таки сектор поверх
старого.
Не пользуйтесь в STS командой сохране-
ния файла применительно к бейсикам. STS не
умеет правильно сохранять бейсик-файлы!
- Выходите в коммандер и склейте "DEHR.B"
с файлом "prog *.C". Потом переименуйте.
Можно релизить ;)
Интересно, что заголовок упакованного
хруст-файла (первые 8 байт) не использует-
ся!
Такой загрузчик имеют программы PT UTIL
и 8col-0.5 в приложении. Причём PT UTIL
во время работы использует этот же распа-
ковщик для разворачивания хелпа :)
Hint: а вы знаете,что в Hrust 1.3 можно
сменить систему счисления кнопкой Edit?
Сайт управляется системой
uCoz