(c) Иван Рощин, г.Москва, 1997
WARNING! Описываемые здесь
программы предназначены для ис-
пользования только вместе с ас-
семблером ZX ASM 3.0!
Наверняка каждому кодеру из-
вестна такая ситуация: вы набра-
ли текст какой-либо программы на
ассемблере, откомпилировали ее,
запустили, а компьютер завис или
сбросился. Хорошо, если перед
этим вы сохранили исходный текст
на диске, а если нет? Тогда ос-
тается только... запустить прог-
рамму "FASTzasm" или "@-zasm"!
Дело в том, что так называе-
мый "сброс" компьютера - не что
иное, как передача управления по
нулевому адресу в ПЗУ-48. При
этом очищается только 48-я па-
мять, а ассемблер, отладчик и
текст вашей программы остают-
ся неповрежденными. "Зависание"
компьютера также в 99% случаев
не приводит к потере исходного
текста программы.
Итак, пусть после неудачного
запуска все закончилось очис-
ткой экрана и появлением знако-
мой надписи:
(C) 1982 Sinclair Research Ltd
Ваши дальнейшие действия дол-
жны быть такими:
- набрать RANDOMIZE USR 15616;
- выполнить команду TR-DOS: RUN
"FASTzasm" (можно запускать
эту программу и из любого
boot'а, который не портит
128-ю память);
- FASTzasm восстановит содержи-
мое памяти по адресам #5B00-
#6000 (резидентная часть ас-
семблера, стек) и перезапус-
тит ассемблер (который остал-
ся в 128-й памяти), после че-
го вы сможете продолжить ра-
боту. Если FASTzasm не обна-
ружит в памяти ничего похоже-
го на ассемблер, он просто
выдаст соответствующее сооб-
щение и выйдет в TR-DOS.
Если компьютер сбросился,
когда вы отлаживали свою прог-
рамму с помощью STS'а, может
быть так, что активным останет-
ся экран в 7-м банке памяти. В
этом случае для включения стан-
дартного экрана придется "всле-
пую" набрать команду:
OUT 32765,16
Имеет смысл использовать
FASTzasm при сбросе компьютера,
даже если вы сохранили исходный
текст своей программы. Во-пер-
вых, запуск пройдет быстрее, а
во-вторых, не придется заново
загружать текст и устанавливать
параметры в ассемблере и отлад-
чике.
Рассмотрим еще такую ситуа-
цию: вы отлаживаете большую про-
грамму, состоящую из нескольких
файлов, и изменяете то один, то
другой файл. И вот, при попытке
записать очередной файл с тек-
стом программы на диск, появ-
ляется сообщение "Disk full!".
Так происходит потому, что на
диске образовалось много удален-
ных файлов, и свободного места
не осталось. Надо бы уплотнить
диск, но как это сделать? При
попытке вызвать из ZX ASM'а TR-
DOS и выполнить команду MOVE вы
получите сообщение "Out of RAM".
А поднимать стек выше #6000
нельзя - разрушится резидентная
часть ассемблера! Можно, конеч-
но, временно записать файл на
другой диск, нажать RESET, уп-
лотнить исходный диск и перепи-
сать файл на него, затем запус-
тить ZX ASM и, наконец, продол-
жить работу. Но уж слишком это
долго...
Эта проблема легко решается с
помощью FASTzasm: вы просто вы-
ходите из ZX ASM в бейсик, не
сохраняя текстового файла, и
спокойно набираете RANDOMIZE USR
0. После этого уплотняете диск
(с помощью команды MOVE или фай-
ловой оболочки, не использующей
128-ю память) и запускаете FAST-
zasm, который восстановит рези-
дентную часть ZX ASM'а и запус-
тит его. После этого можно запи-
сать текстовый файл на диск.
Если ZX ASM, FASTzasm и файло-
вая оболочка находятся на том же
диске, где и рабочие файлы - вам
даже не придется менять диски в
дисководе!
Теперь поговорим о "зависа-
нии". Наилучшее средство в та-
кой ситуации - кнопка MAGIC.
После того, как содержимое памя-
ти запишется на диск, нажимайте
RESET и запускайте программу
"@-zasm".
┌──────────────────────────────────────┐
│ Кстати, если вас интересует, ПОЧЕМУ│
│зависла ваша программа, могу посовето-│
│вать загрузить полученный @-файл в от-│
│ладчик "STS5.1+@" (это обычный STS,│
│доработанный мной так, что при загруз-│
│ке @-файла он устанавливает содержимое│
│регистров процессора таким, каким оно│
│было в момент нажатия кнопки MAGIC). │
└──────────────────────────────────────┘
@-zasm попросит вас вставить
диск с записанными в результате
нажатия кнопки MAGIC файлами.
Нажмите любую клавишу, и начнет-
ся чтение этих файлов. Если на
диске нет @-файлов или эти фай-
лы не имеют отношения к ZX
ASM'у, программа выдаст сообще-
ние "ZX ASM NOT FOUND IN MEMO-
RY!" и выйдет в TR-DOS.
После успешного считывания
@-файлов программа задаст вам
последний вопрос - нужно ли уда-
лить эти файлы с диска. Если
нужно, нажимайте "Y". Потом нем-
ного подождите, и, наконец, за-
пустится ассемблер.
При работе программы @-zasm в
память считывается лишь содержи-
мое 1,3,4,6 и 7 банков памяти, а
в 48-й памяти восстанавливается
только резидентная часть ассем-
блера и стек.
* * *