Ako som si hry na microdrive prevádzal

Interface 1 меня завораживает. Простое устройство, которое расширяет Spectrum столькими интересными возможностями. А чтобы при изучении тайн этого интерфейса не скучать, я решил перенести свои игры на Microdrive. Все ведь знаем: учёба через игру — лучшая.

Первое, с чем сталкиваешься, — синтаксис команды LOAD. Вкратце:

LOAD *"m";<номер драйва>;"название файла"

Одна из неприятностей софта для Microdrive в том, что ожидается загрузка с первого microdrive. Этого, возможно, хватало в те времена, когда больше одного microdrive у человека не было. В наши дни vDrive и восьми виртуальных механик такой подход уже слегка мимо. К счастью, текущую механику можно прочитать из системных переменных так:

LET m = PEEK 23766

и команда LOAD превращается в:

LOAD *"m";m;"файл"

Voilà — загрузка работает с любой механики.

Я вырос с дисководом D40, и на заре старался впихнуть в память ассемблер Prometheus вместе с исходником, графикой и всем остальным, поэтому часто встречались лоадеры с RAMTOP, выставленным на 23999. Для D40 это не было проблемой. Поэтому в своих программах я ставлю RAMTOP минимум на 24575, чтобы работало везде.

Когда я переносил игру Blumps, форматирование чистой (виртуальной) кассеты для microdrive прошло гладко, и переделка с сохранением лоадера тоже. Проблема была с картинкой. Механика раскрутилась, но система зависла и ничего не сохранилось. Доброе время ушло, пока я понял, в чём дело. Если бы у Interface 1 не хватало свободной памяти, я ожидал бы сообщение об ошибке «RAMTOP no good» или подобное. Но Interface 1 этого не делает (всё‑таки у него всего 8 кБ ROM). Пришлось перекомпилировать Blumps на адрес 25000 — и всё чудесно заработало.

В своих экспериментах я пришёл к самой низкой рабочей величине RAMTOP 24599 при отсутствии BASIC (сразу после сброса).

А теперь — ура к играм, и надеюсь, когда‑нибудь в следующий раз вы узнаете что‑нибудь поинтереснее про Interface 1.

mike/zeroteam

Share your thoughts about the article