ZX-Ревю 1991 №4-5 1990 г.

Профессиональный подход - мы продолжаем публиковать заметки знаменитого английского программиста Стива Тернера, автора не менее знаменитой игры OUAZATRON.


Сегодня мы продолжаем публиковать заметки знаменитого английского программиста Стива Тернера, автора не менее знаменитой игры OUAZATRON с полезными советами для тех, кто делает первые шаги в освоении "Спектрума".

Итак, следующая глава:

Орудия производства.

Для того, чтобы взять максимум возможного от микрокомпьютера, совершенно необходимо начинать программировать в машинном коде. "Спектрум" в состоянии выполнять в среднем порядка трехсот тысяч команд машинного кода в секунду. Когда же Вы программируете на Бейсике, то строки Вашей программы на самом деле ведь не исполняются компьютером. Вместо этого исполняется большая программа, называемая интерпретатором Бейсика, которая спрятана в ПЗУ. Эта программа преобразует Вашу строку в машинный код и исполняет его, поэтому для исполнения одной небольшой Бейсик-строки компьютер вынужден делать много тысяч разных операций.

Многие любители находят, что переход от программирования на Бейсике к машинным кодам представляет совершенно невообразимую по сложности и очень скучную задачу. Я называю это явление "Барьером машинного кода". В жизни существует много барьеров и они преодолимы. Как и звуковой барьер, барьер машинного кода преодолим с помощью правильной технологии и грамотной проработки проекта.

1. Редактор/Ассемблер.

Многие начинают освоение машинного кода с применения Бейсика для того, чтобы включить в свою программу машинно-кодовую процедуру путем применения операторов POKE и списков DATA.

Да, конечно, это самый простой способ, чтобы вставить в готовую Бейсик-программу готовую и отлаженную процедуру, но этот путь никак не годится для проработки, написания и отладки этой процедуры. Вы ведь работаете с числами, беря их из DATA и засылая их в нужные адреса POKE. Это очень неудобно, поскольку смысл этих чисел неочевиден. Гораздо удобнее применить программу Ассемблер, тогда создаваемый машинный код становится наглядным, его легче проследить и, конечно, отладить.

Более того, хорошая практика применения меток в Ассемблере сделает программу даже более читаемой, чем при программировании на Бейсике.

Сами посудите, оператор Ассемблера CALL SOUND больше говорит о своем назначении, чем строка Бейсика GO TO 9700.

Когда выбираете для себя программу Ассемблер, обратите внимание на его систему редактирования. К сожалению немногие программисты знают о хороших стандартах.

Ввод и редактирование программ должны быть такими же простыми, как печать писем в текстовом редакторе. Желательно, чтобы редактор Ассемблера позволял делать следующие операции:

- перемещение блоков;

- удаление блоков;

- копирование блоков.

Без этих функций программирование будет не только утомительным, но самое главное, подверженным многочисленным ошибкам. Я рекомендую работать с полноэкранным редактором, в котором Вы можете использовать весь экран, а редактор сам оформит подготовленный Вами текст в удобочитаемые колонки.

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

Следующей чертой, на которую надо обратить внимание - это требование, чтобы

Ассемблер после ассемблирования кода мог выполнить распечатку объектного кода в установленном формате. Стандартов в общем-то нет, но примером того, как она может выглядеть, служит процедура, приведенная в конце данной главы. (В следующем номере ZX-РЕВЮ - "ИНФОРКОМ").

Некоторые Ассемблеры распечатывают листинг до того, как рассчитаны адреса меток. Это не очень хорошо. И, что еще важно здесь учесть, это те ограничения, которые накладывает Ваше аппаратное обеспечение. Так, если Вы используете какую-то дисковую систему, то Ассемблер должен ее поддерживать.

2. Монитор.

Под "монитором" здесь понимается не дисплей, а дисассемблирующая программа. Их часто называют "мониторами", т.к. под их "управлением" производятся отладочные запуски разрабатываемой Вами программы. Я знаю некоторых программистов, работающих над игровыми программами, которые не пользуются мониторами. Очень не советую так поступать. Раз уж Вы работаете с компьютером, так используйте его возможности до конца. Пусть он поможет Вам в выполнении отладки Вашей программы.

Лучше всего выбирать такой Ассемблер, который имеет родственный ему монитор, тогда Вы сможете совместно их использовать. Конечно, монитор должен иметь возможность загружаться и без Ассемблера, поскольку в паре они занимают так много места в памяти, что вам остается пространство только на некрупные процедуры. Лично я предпочитаю использовать монитор минимальных размеров.

Необходимыми функциями монитора являются:

- просмотр содержимого ячеек памяти (адресов);

- просмотр содержимого регистров процессора;

- возможность изменения содержимого ячеек памяти;

- установка точек прерывания (Breakpoint).

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

Точка прерывания выполняет функции, похожие на действие оператора Бейсика

STOP.

Если же у Вас нет принтера, чтобы после ассемблирования распечатать объектный код, то Монитор становится для Вас абсолютно необходимым инструментом.

3. Внешняя память.

Если Вы собираетесь разрабатывать большие программы, то быстро работающее устройство для записи программы себя обязательно окупит. Когда я работал над программой QUAZATRON, то выгружал версии его десяти основных модулей более шестисот раз. А уж сколько раз я выполнял пробные запуски, об этом я и говорить не смею. Но дело не только в этом. Когда программа зависает или сбрасывается, Вам надо успеть войти в работу как можно быстрее, иначе нить рассуждений может быть потеряна и затраты времени станут еще больше. Лично у меня в среднем два раза в день компьютер "вылетает" только в связи с проблемами "питания".

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

4. Принтер

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

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

5. Книги по Z-80.

О машинном коде процессора Z-80 написано уже немало книг. Наилучшим справочным руководством общепризнанно считается монография Л. Левенталя "ASSEMBLER LANGUAGE PROGRAMMING". В этой книге каждой команде процессора отведена отдельная страница, приведены подробнейшие данные об условиях работы каждой команды (состояния флагов, время исполнения и т.п.). Кроме этого, книга изобилует мно-2 освоение машинного кода, то Вам необходимо что-нибудь попроще. Вы можете обратиться в ближайшую библиотеку и подобрать себе необходимые книги. Вы можете также обнаружить, что фирменное руководство к "Спектруму" в своих приложениях содержит очень много полезной информации.

Изучение машинного кода рано или поздно приведет Вас к необходимости понимания организации работы самого компьютера. Вам потребуется литература по ПЗУ компьютера. Наилучшим справочником по этому вопросу может служить книга доктора Яна Логана и доктора Фрэнка О'Хары "Полный дисассемблер ПЗУ" ("THE COMPLETE SPECTRUM ROM DISASSEMBLY").

* * *

Комментарий ИНФОРКОМа

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

Конечно же в ближайшей библиотеке Вы почти ничего, а скорее всего вообще ничего не найдете. Если Вы живете в Москве, то еще сможете получить в читальном зале ГПНТБ на Кузнецком Мосту русский перевод книги Виккерса, являющейся официальным фирменным руководством к "Спектруму", а может быть даже заказать его ксерокопию, но что делать если Вы живете в другом городе?

Здесь Вам поможет "ИНФОРКОМ". Мы уже писали о нашем трехтомнике для изучающих программирование в машинных кодах. Более подробную информацию можете найти в рекламном приложении на стр. 104.

Уверены, что с его помощью Вы сможете решить основные проблемы.

По вопросам, касающимся ПЗУ компьютера, мы можем Вас отослать к постоянному разделу "Секреты ПЗУ", в котором пусть не столь полно, как в книге Я.Логана и Ф.О'Хары, но зато более популярно мы рассказываем о программах, входящих в ПЗУ.

Кроме того, по индивидуальным заказам мы подготовили и уже разослали желающим копию английского издания этой книги. У нас еще осталось около 40 экземпляров и, если Вам она необходима, то можете успеть ее заказать. Поставку не гарантируем, Вам может не хватить, т.к. сроки приема заказов уже кончились, и потому это единственное, что мы высылаем наложенным платежом. Пожалуйста, не надо высылать предоплату, а только запрос. Цена - 112 руб.

Теперь относительно работ Лэнса Левенталя. Кроме упомянутой выше книги "Z-80 ASSEMBLY LANGUAGE PROGRAMMING" (600 стр.) у него есть еще логическое продолжение, написанное в соавторстве с Уинтропом Сэвиллем - "Z-80 ASSEMBLY LANGUAGE SUBROUTINES" (500 с.)

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

Мы в принципе могли бы рассмотреть вопрос о том, чтобы сделать несколько копий и той и другой книги и разослать их наложенным платежом, аналогично тому, как мы это сделали с книгой Логана и О'Хары. Правда, надо иметь в виду, что при нынешних ценах на копирование и их внушительном объеме стоить это будет очень дорого, о чем мы объявим в случае наличия пожеланий.

С книгой же Виккерса все гораздо проще. На сегодняшний день она распространена очень широко и ее русский перевод можно купить на всех рынках страны. Ее распространяют многие кооперативы. Мы ее не распространяем, поскольку на русском языке мы предлагаем только то, что сделали сами или то, что сделано по нашему заказу, а к данной книге это не относится.

(Продолжение следует)




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



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

Похожие статьи:
Разное - о компьютерных проблемах: ПРОФИ и СКОРПИОН, IBM...
Машинные языки - Языки программирования.
Поэзия - Стихи от Broom'а.
Короткой строкой - ldir.
Письмо - Алекс Никифоров о газете "LPRINT".

В этот день...   21 ноября