Acid Paper #02

C кассеты на диск - перенос и адаптация программ с кассеты на диск.

                  С кассеты на диск.

Эта тема поднималась неоднократно во многих электронных
изданиях для Спекки, но я ни разу не встретил разумного
изложения. Попробую поделиться своими методами.

Итак, имеется примерно такой вариант:
basic-файл.
заставка headerless
блок1    headerless длина 20000 байт
блок2    headerless длина 20536 байт
блок3    headerless длина 1536 байт (или около того).

  Грузим все файлы в память и начинаем гонять от точки старта
STS'ом или чем-то подобным. Так как игра явно сброшена
мультифейсом или похожим извратом, то попадаем на процедуру
восстановления регистров, режима прерываний и стека.
  Проходим ее и попадаем куда-то в середину опроса клавиатуры
или вывода на экран. Далее для ускорения поиска я переношу PC
в #0052 и гоняю по шагам несколько раз. Рано или поздно STS
приводит меня к старту.(STS делает, а думаю я;).
  Затем неплохо просмотреть старый, как правило фирменный
basic, который сидит в памяти. Оттуда можно извлечь и стартовый
адрес, и (иногда!) параметры нормального кодового блока.
  Длину кодов можно определить еще и так: от usr"A" двигаться
вниз по памяти. Как правило, в конце памяти есть 2-3 свободных
килобайта.
  Следующий шаг - упаковка и написание загрузчика. Обычно я
пакую картинку с помощью Screen Crasher'а, который в среднем
неплохо сжимает картинку. Затем в распаковщике изменяется
три(!) байта, что позволяет распаковать заставку в память по
адресу #8000 или #С000, а затем красиво вывести ее на экран.
  Кодовый блок пакуется по вкусу. Крайне редко приходится
резать его на два, и на моей памяти только одна(!) игра не
позволила так надругаться над собой. Это Fairlight I для 48Кб.
Мне так и не удалось сделать полный дисковый аналог кассетной
версии из-за нехватки памяти.
  Теперь остался один момент. Почти все игрушки фирмы ULTiMaTe
не работают в 128-м и 48-м с открытым портом. Поэтому обычно
я использую корректный переход в 48-й режим и устанавливаю
защелку 48 Кб(бит 5 порта #7FFD).
  Кстати, раньше был такой непризнанный стандарт: если вторая
буква имени файла была маленькой, то boot переходил в 48-й
режим перед запуском такого файла. Это важнее, чем сортировка
каталога;).
  В российских программах я, как правило, исправляю два
момента:
- некорректный turboloader - мне и с #3d13 неплохо.
- некорректный опрос kempston joystick - ставлю
  автоопределение.

  Именно благодаря второму пункту в нашем городе получили
признание ViRuS 2, Hexxagon и другие. А в Hexxagon'е я добавил
еще управление AY-mouse, но эта версия не распространялась.

  Все вышесказанное относится к стандартной игре. В особых
случаях программа имеет уровни, сохраняет/загружает состояние
игры или просто глючит. Про это разговор особый.

  И в заключение одна из последних адаптаций. Это I of Mask 1.
Игрушка 1984 года, довольно крутая для того времени. Я нашел ее
на компакт-диске, который продает UNBEL!EVER. Итак, файл
формата tzx, поддерживающего многие нестандартные способы
записи на кассету(читай: защиту от копирования). А прикол
вот в чем: после basic'a идет длинный(около 50 Кб) файл,
в котором хранится все. Причем картинка идет по увеличению
адресов, а атрибуты - по уменьшению и т.д. 
  В загрузчике 8 или 9 вызовов процедуры загрузки - примерно
200 килобайт. Но! Четвертый по порядку блок перекрывает
загрузчик и модифицирует его.
  Самое смешное в том, что загрузка оказалась невинным
цветочком. А ягодкой стал подсчет контрольной суммы кусков
памяти, которая стала ключом для ксорки. В итоге я дождался
окончания загрузки и выгрузил всю память, которую благополучно
порезал на куски и разбил на нормальные блоки.
  Кстати, в basic'е была такая строчка:"Hi, Bill! Another
hacker?"
  И это все фигня. На том же диске, в том же формате есть
очень похожая на фирменную RanaRama. Там тоже один здоровый
блок, который выводит заставку и потом крутит счетчик и
по ходу загрузки печатает инструкцию. Умели делать, а?

                                    GoBLiN/BeerManZ

p.s. "Mortal Kombat Hackers Group выпустил все пристойное, что
было на Спектруме. Остался один KAL".
                                      KAN0/RPSG.
Отвечаем: Андрей, ты не прав!



Другие статьи номера:

intro - на первый номер ACiDpaper мы получили несколько откликов.

Мысль дня - В 1953 году я понял, что прямая линия ведет человечество к упадку.

Хотите Party? - наши комментарии к Music COMpO на СС999.

Урок английского - Александр КАМНЕВ, Борис ФАЙФЕЛЬ: Урок английского.

Реклама в товарах не нуждается - убийственная пародия на рекламу, этакое поппури.

Мерхаба братан! - День без вредных привычек!

Сплюнул и грязно выругался! - словарь компьютерного сленга.

Не надо Ля-Ля! - некоторые малоцензурные творения "Николая Николаевича".

FAQ YOU! - Продолжаем знакомить вас с творчеством буржуазных исполнителей.

FAQ YOU! - 10 оригинальных способов самоубийства.

Кубизм mustdie ФАРЭВЫР - формулы построения додэкаэдра, икосаэдра, тетрадра.

C кассеты на диск - перенос и адаптация программ с кассеты на диск.

Хаккеры - Сага о хакерах: часть первая. кто такие эти хакеры? Откуда они пошли?

Хаккеры - Сага о хакерах: часть вторая. Кто такие эти хакеры? Откуда они пошли?

"Лаокоон" Веллера - Михаил ВЕЛЛЕР "ЛАОКООН" (часть 1).

"Лаокоон" Веллера - Михаил ВЕЛЛЕР "ЛАОКООН" (часть 2).

Чернокнижник - Бессонные ночи. Да или нет ? Будет или нет ?

Миры "Если" - свой вариант вероятностных "Миров".

Stuff - авторы газеты.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
FOUNTAIN PUBLIC DOMAIN SOFTWARE
Zoom - freedom: "Вы уже слышали, что на Сектpумовской сцене объявилось новое объединение? Да-да, pечь идет о Freedom..."
Реклама - реклама и обьявления.

В этот день...   25 июня