ВВЕДЕНИЕ
Монитор Spectrum, объемом 16K, представляет собой сложную программу в машинных кодах Z80. Еe можно разделить на три основные части:
а. Программы ввода/вывода.
б. Интерпретатор BASIC.
в. Вычислительные процедуры.
Однако, для подробного описания эти блоки слишком громоздки, и поэтому монитор разделен еще на 10 частей. Каждая часть будет представлять собой элемент монитора.
Программы инициализации и таблицы
При старте монитора работают все программы-рестарты, которые выдаются однобайтовыми командами "RST". Используются все "рестарты". Например, "рестарт 000B" используется для сообщения об ошибках синтаксиса или <ошибках> исполняющей системы.
Таблицы а этой части монитора содержат расширенные формы лексем <токенов> и коды клавиш.
Программа работы с клавиатурой.
Обращение к клавиатуре происходит 50 раз в секунду (U.K. модель) с последующим возвратом требуемого символьного кода. При постоянном нажатии - клавиши "повторяются", что учитывается программой работы с клавиатурой.
Программы загрузки динамика.
В Spectrum встроен один динамик, звук которого создается с помощью повторяемых соответствующих команд "OUT". В контроллерной программе большое значение уделяется обеспечению звучания на заданной ноте при соответствующей длительности.
Программы обработки информации с кассетных лент.
Для ZX81 было неудачным то, что только небольшая часть монитора была предназначена для работы с кассетами. Однако, в Spectrum’е для этого есть большой блок программ, с помощью которого достигается высокий уровень работы с кассетами, что является одним из наиболее удачных свойств машины. С помощью блока «ЗАГОЛОВОК» (17 байт), который записывается < SAVE > первым, обрабатываются программы < BASIC > или блоки данных. Этот "заголовок" описывает "блок данных", записанный после него. Недостатком данной системы является невозможность создания программ с «защитой».
Программы загрузки экрана и принтера.
Все оставшиеся программы ввода/вывода Spectrum проходят через "информационные каналы".
В стандартном Spectrum-е "ввод" возможен только через клавиатуру, но "вывод" можно осуществить через принтер, или на верхнюю или нижнюю часть экрана телевизора.
Основной программой "ввода" в этой части монитора является EDITOR, который дает возможность пользователю вводить символы в нижнюю часть зкрана телевизора. Программа < PRINT-OUT > является довольно медленной, т.к. это - программа на "все случаи жизни". Например, добавление одного байта в "область дисплея" предполагает в каждом случае просмотр текущего состояния OVER и INVERSE.
Программы выполнения команд.
В этой части монитора находится процедура INITIALISATION и "основной цикл выполнения" интерпретатора BASIC.
В Spectrum-е строка BASIC, возвращаемая EDITOR -ом проверяется на правильность синтаксиса и затем записывается в программную область, если строка начинается номером строки, или в противном случае •выполняется*.
Это выполнение может в свою очередь привести к проверке следующего оператора. (Это ясно видно на примере RUN).
Интерпретатор строк и команд БЕЙСИК-а.
Эта часть монитора рассматривает BASIC -строку как набор операторов и в свою очередь каждый оператор как начало конкретной команды.
Для каждой команды существует “командная процедура” и выполнение машинного кода в соответствующей "командной процедуре" воздействует на “интерпретацию”.
Обработка выражений.
В Spectrum-е имеется большой блок вычислений, позволяющий работать с широким диапазоном типов переменных, функций и операций. Опять же это довольно медленная часть монитора, т.к. рассматриваются все возможные альтернативы.
Обработка строк частично управляема. Все простые строки управляются "динамически" и старые записи исправляются после того, как они были зарезервированы. Это означает, что не происходит "сбор ненужной информации".
Арифметические процедуры.
Spectrum имеет две формы представления чисел. Целые числа в диапазоне от -65535 до +65535 представляются в "целостной" или "короткой" формах, в то время как все остальные числа в форме с плавающей точкой размером в пять байт.
Представленная версия монитора обладает двумя ошибками в данной части.
1. Ошибка деления, при которой вo время деления теряется 34-й разряд.
2. Величина -65536 иногда берется в "короткой" форме, а иногда с "плавающей точкой", что приводит к некоторым неудобствам.
Вычислитель.
CALCULATOR обрабатывает числа и строки, а также команды,
называемые «литералами». Поэтому можно считать, что в CALCULATOR e имеется внутренний "стековый операционный" язык.
Вычисления SIN X, EXP X, LN X & ATN X осуществляются с помошью полиномов Чебышева. Подробности приведены в приложении.
В целом 16К байтный монитор предлагает широкий диапазон различных команд и функций BASIC. Поскольку программистам всегда не хватает «места», то программы написаны с точки зрения компактности, а не быстродействия.
От издателя:
1) Необходимо отметить, что в СНГ существует множество реализаций знаменитого ZX-Spectrum (как промышленных, так и самодельных).
Все они отличаются друг от друга не только конструктивными особенностями, но и ПЗУ. Поэтому у Вас могут возникнуть некоторые недоразумения при освоении этой книги. По этой же причине не работают и некоторые фирменные программы. Однако эти отличия ПЗУ от фирменного обычно незначительны и степень совместимости таких ПК довольна высока. В основном изменения в ПЗУ вносятся при попытках адаптации под различные национальные шрифты.
2) Вы наверняка заметили, что в книгах, содержащих примеры небольших программ, обязательно находятся ошибки в их текстах (обычно это выясняется, когда программа введена в компьютер). Естественно,
в книге, полностью состоящей из текстов программ, не сделать ошибок было практически невозможно. Надеемся, что Вы будете благосклонны к нам и простите нас за допущенные в тексте и программах опечатки. Мы будем особо благодарны читателем, приславшим свои отзывы и замеченные в тексте книги неточности. Английское фирменное издание также содержит ошибки и поэтому ориентироваться на него нельзя (там ведь тоже люди работают). Практика - критерий истины. Для нас это очень важно, т.к. сейчас мы готовим эту книгу к более массовому изданию (Вы держите в руках книгу из пробного тиража) и хотим избежать данного недостатка. Помогите своим коллегам.
Наш адрес: 310085 Харьков-85 а/я 9207 НПФ «Программ-Асс»
Обратившись с письмом по этому же адресу Вы можете приобрести также и другую литературу как оптом, так и в розницу. Ждем также предложений от книго-торговых организаций на oптовую закупку литературы. У нас Вы можете приобрести уникальную литературу по ZX-Speсtrum!