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
Поделитесь вашим мнением о статье