Выпуск технической, научно-популярной и специальной литературы,
изготовление рекламной полиграфической продукции
Издательский отдел фирмы
• принимает заказы на выполнение всех видов изда-тельско-полиграфических работ;
• производит подписку на книгу Н. Родионова
«Адаптация программ к системе TR-DOS. (Советы начинающему хакеру)» (7 частей)
Книга адресована тем, кто хочет проникнуть в тайны построения защищенных загрузчиков программ- Она может быть также полезна в качестве практического пособия для начинающих программировать на ассемблере. Объем - 48 стр. Тираж 10 ООО экз. Цена подписки — 50 руб. Срой выхода книги - IV кв. 1992 г.
• готовит к изданию книгу А. Ларченко
«Дисковые операционные системы для ZX Spectrum»
Книга содержит обзор дисковых операционных систем для ZX Spectrum (CP/Mf Микро ДОС, +3DOS, isDOS и др.) и подробное описание системы TR-DOS: от начальных сведений до профессиональных тонкостей.
Объем - 160 стр. Срок выхода книги - 1 кв. 1993 г.
• осуществляет оптовую и мелкооптовую продажу книги «Диалекты Бейсика для ZX Spectrum» и других изданий фирмы;
• размещает рекламу в изданиях фирмы;
• приобретает фирменные руководства, книги и журналы, посвященные ZX Spectrum;
• принимает для публикации оригинальные статьи о ZX Spectrum;
• приглашает на работу журналистов и редакционных работников, знакомых с ZX Spectrum.

Для оформления заказа на книги и программы
необходимо перевести по почте (для частных лиц) или через банк (для организаций) на расчетный счет фирмы «Питер» соответствующую сумму. Копия платежного документа с указанием перечня заказываемых товаров отправляется в адрес фирмы. Не забудьте сообщить Ваш обратный адрес.
Цены приведены без стоимости доставки. Почтовые расходы оплачиваются заказчиком при получении бандероли. В случае изменения цен доплата производится также при получении бандероли.
Расчетный счет для иногородних платежей:
к/с 41000161499 р/с 49100609294 в банке ЦРКУ ГУ ЦБ России МФО 161002
Расчетный счет для платежей из С.-Петербурга:
р/с 49100609294 в Парнасском отд. АО «Банк Санкт-Петербург» С.-Петербурга, МФО 171337
Адрес: 196244, С.-Петербург, а/я 21
Телефон/факс: (812)-235-3749 E-mail 2:5030/25 @ fidonet.org
По вопросам приобретения литературы можно также обращаться к нашим региональным диллерам:
г. Томск, 634045, ул. 19-й Гвардейской дивизии, 13, Фирма «Старт Ltd.», тел. 44-44-93, 44-80-78
г. Смоленск, 214018, Киевский пер. 16,
Коммерческий центр «Апекс», тел. 6-25-19
Украина, г. Херсон, 325000, ул. Суворова, 3,
Учебно-научное объединение «Дисплей», тел. 4-01-52
Украина, г. Луцк, 263026, а/я 94, Фирма «Скиф», тел. 5-99-12
Беларусь, г. Минск, 220005, а/я 95,
НПК «Протон-Запад», тел. 63-52-72, 33-13-11

ОТКРЫТАЯ МНОГОКАТАЛОГОВАЯ ДИСКОВАЯ ОПЕРАЦИОННАЯ СИСТЕМА

ISKRfl
SOFT
Sonfcl - Peters bUTQ
Операционная система isDOS устанавливается на все типы компьютеров, совместимых с ZX Spectrum и согласуется с внешними устройствами такими, как электронный диск, дисководы 5.25 и 3.5 дюйма, винчестер, модем и локальная сеть.
Оконный интерфейс, контекстно-зависимый встроенный HELP, работа с командными файлами, системная дата, маска, собственное меню в каждом каталоге и многое другое — понравятся самому требовательному пользователю.
Многооконный текстовый редактор, встроенный в ОС isDOS, работает с файлами в формате Multi-Edit и Lexicon, в нескольких режимах отображения с длиной строки в 252 символа. Размер обрабатываемого текста ограничен только емкостью дискет. Печать текстов возможна различными шрифтами, с разбивкой на страницы и колонки, с автоматической нумерацией. Возможна раздельная печать четных и нечетных страниц, печать графических полутоновых изображений в произвольном месте листа.
ОС isDOS предоставляет возможность создания динамических рекламных текстовых заставок.
Под isDOS созданы различные АРМы со структурой данных в формате DBASE.
ОС isDOS значительно расширяет возможности использования компьютеров типа ZX Spectrum в научной деятельности, в сфере бизнеса и управления, для создания прикладных и коммерческих программных продуктов.
ОС isDOS ориентирована на пользователя, не обладающего навыками программирования, однако не оставит равнодушным и профессионального программиста.
Фирма «IskraSOFT» при разработке isDOS ориентировалась на стиль и идеологию операционной системы MS-DOS, устанавливаемой на компьютерах типа IBM PC. Такой подход имеет неоспоримое преимущество — пользователь, работающий с isDOS на ZX Spectrum при переходе на IBM PC попадает в знакомую, привычную ему среду.
ОС isDOS — новая жизнь ZX Spectrum!
IskraSOFT Publicity Division 1992 194100, Санкт-Петербург, а/я 34 (8121-245-18-97
разработка и производство ZX Spectrum-coMecTHMbix компьютеров и программного обеспечения
Фирма предлагает частным лицам и организациям сотрудничество по распространению и обслуживанию
учебных компьютерных комплексов на базе ZX Spectrum
Компьютерный комплекс включает:
• рабочее место преподавателя с двумя встроенными дисководами, цветным монитором, принтером, кассетным магнитофоном и джойстиком;
• места учеников (до 16) с цветными мониторами и джойстиками;
• дискеты с программами и техническую документацию.
Компьютеры объединены в многофункциональную локальную сеть (программная поддержка Н. Родионова).
Помимо системного и игрового программного обеспечения с комплексами поставляются оригинальные учебные программы по информатике, физике, математике, астрономии, ботанике и другим школьным предметам.
Особый интерес представляет программный пакет, позволяющий создать на базе комплекса систему для обучения и приема экзаменов по правилам дорожного движения.
Фирма «Питер» доставит комплексы в любой регион СНГ, сдаст заказчику «под ключ», обучит персонал, обеспечит гарантийное и послегарантийное обслуживание.
• реализует ZX Spectrum-совместимые компьютеры:
русифицированная клавиатура (QWERTY, ЙЦУКЕН), цветной (монохромный) монитор, один или два дисковода, принтер, набор системных и игровых программ на дискетах.
• продает учебные программы для ZX Spectrum
Сборник I Для младших школьников (1-5 класс): арифметика (3 программы, в том числе «Таблица умножения»), геометрия (5 программ), русский язык (4 программы, в том числе «Азбука», «Приставки и суффиксы»), английский алфавит, ботаника («Строение цветка»), обучающие игры («Правила дорожного движения», «Клавиатура ZX Spectrum») и др.
Сборник 2. Для старших школьников (6-11 класс): «Знакомство с ZX Spectrum», работа с клавиатурой (5 программ), «Операторы Бейсика», астрономия (2 программы), физика (13 программ, в том числе «Кинематика», «Динамика», «Свободное падение тел», «Движение тел под углом к горизонту», «Тепловые явления», «Цепи переменного тока», «Транзистор») и др.
Цена кассеты с учебными программами — 690 руб., дискеты — 630 руб.
Программы выполнены на высоком профессиональном уровне с использованием всех возможностей ZX Spectrum: цветной графики, мультипликации, звуковых эффектов.
• предлагает системные программы, описанные в книге «Диалекты Бейсика для ZX Spectrum».
Цена кассеты с программами — 300 руб., дискеты — 200 руб.
• распространяет дискеты с программами, разработанными или адаптированными Н. Родионовым и А. Ларченко (DCU 2.31f Disk-Doctor, Pcopier Plus, MOA-Service, TLW2M и др.).
Цена дискеты с комплектом описаний — 350 руб.
• продает монохромные мониторы «Электроника МС6105».
КАКОЕ ВПЕЧАТЛЕНИЕ ОСТАВИЛА У ВАС КНИГА
«Диалекты Бейсика для ZX Spectrum»
|
f Точность изложенных сведений |
(1...5) |
□ |
|
Новизна информации |
(1...5) |
□ |
|
Стиль изложения |
(1...5) |
□ |
|
Удобство в пользовании |
(1...5) |
□ |
|
Оформление |
(1...5) |
□ |
|
Общая оценка V |
(I...5) |
□ |
|
Как бы Вы оценили каждую главу в |
отдельности |
|
|
Spectrum-Бейсик |
(1-.5) |
1 1 n |
|
Компиляторы Spectrum-Бейсика |
(1...5) |
|
|
PRO-DOS |
(1-5) |
LJ |
|
Laser Basic |
(1...5I |
1 1 |
|
MegaBasic |
(1-5) |
1 1 |
|
Beta Basic |
(1-5) |
1 1 |
|
Бейсик 128 V ........................-........ |
(1-5) |
1 1 |
(отрежьте и приклейте на конверт
196244, Санкт-Петербург, _а/я 21_
Фирма «Питер»
Какими диалектами Бейсика Вы пользуетесь чаще всего
Описание каких программ и аппаратных средств для ZX Spectrum Вы посоветуете включить в наши следующие издания_
Хотите ли Вы стать нашим региональным распространителем литературы по ZX Spectrum_
Ваш возраст, профессия_
Сколько лет работаете с ZX Spectrum_
Ваше имя, адрес, телефон_
Если у Вас есть предложения и пожелания, можете изложить их_
Большое спасибо всем, кто прислал свои отзывы на книгу «ZX Spectrum для пользователей и программистов»
1 Цифры 0:1 означают первый в нулевой строке
2 Управление курсором, вызов на редактирование строки программы и т. д.
3 SQR, EXP, LNf SIN, COS, TAN, ASN, ACS, ATN
Функция в программировании — это специальная программа, преобразующая по заданному правилу некое исходное значение, называемое аргументом, в другое значение, называемое результатом. Принято говорить: «Функция возвращает результат».
Наиболее привычными и понятными функциями являются математические. Бейсик ZX Spectrum предоставляет в наше пользование набор самых необходимых из них:
SQR - квадратный корень,
ЕХР - экспонента,
LN — натуральный логарифм,
SIN - синус,
COS — косинус,
TAN — тангенс,
ASN - арксинус,
ACS - арккосинус,
ATN - арктангенс.
После каждого из перечисленных ключевых слов должен стоять аргумент функции — число либо выражение, которое может включать в себя в том числе и функции. Выражения необходимо заклю-
4 Это не совсем точно: строка может содержать символы, которые не выводятся на экран.
5 Операторам, занимающимся графическими построениями, недоступны две строки служебного экрана.
6 Если Вы решили отрабатывать все примеры на компьютере и хотите сохранить их
7 на магнитной ленте, то загляните в раздел «Работа с магнитофоном».
8 В примерах программ, приведенных в этой книге, используется текст на русском языке. Делается это для наглядности, хотя не на всех компьютерах есть возможность его набрать. При вводе программ русские слова можно заменить английскими, а комментарии просто опустить.
9 15 7Л2
Первый попавшийся по тексту оператор READ заносит в переменные порцию данных из первого встреченного в программе оператора DATA. Следующие операторы READ продолжают последовательное считывание. То есть, повторив предыдущую строку, мы получим уже другой результат:
READ Т, Н: PRINT Т;" Н 1.15 8.84
Следует особо следить за тем, чтобы количество считываний не превышало количество перечисленных за операторами DATA данных. Иначе на экране появится сообщение об ошибке: End of data.
10 SAVE...SCREEN$, LOAD...SCREEN$, VERIFY...SCREEN$
Сохранить на магнитной ленте можно и картинку, изображенную на экране, записав ее на ленту с помощью оператора
SAVE "PICTURE" SCREENS
11 Что такое адрес в памяти, см. на стр. 60.
12 Напомним, байтом называется восьмиразрядное двоичное число.
Сравнив числа 3 и 6, компьютер сделал заключение, что выражение в скобках ложно и подставил вместо него ноль.
14 Функция USR используется также для вызова подпрограмм в машинных кодах
(см. «Справочник»)
15 С ним мы более подробно познакомимся позже.
16 Символы с кодами от 0 до 31 (см. табл. 2), вообще говоря, символами не являются: у них нет собственного, отображаемого на экране начертания. Это так называемые управляющие символы.
Управляют они, например, выводом на экран компьютера. Так, попытка вывести на экран управляющий символ с кодом 6 приведет к результату, аналогичному действию запятой, поставленной между данными после PRINT:
PRINT "KU"; CHR$ 6; "KU" KU KU
Управляющий символ с кодом 13 действует аналогично апострофу: указывает, что вывод нужно продолжить с начала следующей строки.
Символы CHR$ 22 и CHR$ 23 в операторе PRINT выполняют те же функции, что и AT и TAB. После этих управляющих символов указывается по два параметра (второй параметр для CHR$ 23 игнорируется). Оператор
PRINT CHR$ 22+CHR$ 1+CHR$ 10; 5; CHR$ 23+CHR$ 11+ CHR$ 0; 5 аналогичен оператору
PRINT AT 1, 10; 5; TAB 11; 5
Управляющий символ CHR$ 8 называется «забой» (backspace). Он переводит текущую позицию вывода на одно знакоместо назад. То есть символ, следующий за «забоем», оператор PRINT выводит на место последнего, напечатанного до него:
10 PRINT "ABA"; CHR$ 8; "С"
RUN
Символы с кодами 16...21 управляют атрибутами экрана и могут использоваться в операторе PRINT вместо соответствующих ключевых слов:
INK - CHR$ 16 PAPER - CHR$ 17 FLASH - CHR$ 18 BRIGHT - CHR$ 19 INVERSE - CHR$ 20 OVER - CHR$ 21
17 Системный счетчик — внутренние часы ZX Spectrum. Под него в памяти компьютера отведено три ячейки памяти с адресами
18 В таком виде мы будем приводить адреса системных переменных, занимающих
более одной ячейки. В данном случае это адреса 23672, 23673, 23674.
19 Это относится и к другим операторам, приостанавливающим выполнение программы (LOAD, SAVE, PAUSE).
20 Под каждый символ отводится 8 ячеек памяти.
21 Более подробно о подключении альтернативных шрифтов см. (1].
22 При этом, правда, затирается область символов, определяемых пользователем. 3 За к. № 192 65
23 Не используется в операторе BORDER.
24 Только в операторах INK и PAPER.
25 По сути, ATTR возвращает байт, в котором три младших разряда (0...2) определяют код цвета тона, следующие три (3...5) — цвета фона, два остальных (б и 7), соответственно, — BRIGHT и FLASH. Число (0...255), возвращаемое функцией, получается при переводе значения байта из двоичного представления в десятичное: 2°*<|NK> + 23* < PAPER > + 26 * < BRIGHT > + 2 * < FLASH > .
26 Фирма Thrclfall & Hodgson, 1982 г. Файлы: COMPILER (тип BASIC, длина 875 байт)
и COMPILER (тип CODE, длина 3600 байт, адрес загрузки 59990).
27 Так ведут себя после загрузки многие компиляторы Spectrum-Бейсика.
28 Это происходит потому, что старший бит двухбайтового числа трактуется не как значащий разряд, а хак знак: 0 — плюс, 1 — минус.
29 Фирма ThrelfaU & Hodgson, 1983 г. Файлы: MCODER2 (тип BASIC, длина 870 байт)
и MCODER2 (тип CODE, длина 5375 байт, адрес загрузки 59990).
30 Может использоваться только в качестве условия в операторе IF...THEN.
31 Автор Martin Lewis, фирма Softek, 1983 г. Файлы: SOFTEK IS (тип BASIC, длина 620 байт) и COMET (CODE, длина 6000 байт, адрес загрузки 59300).
32 Автор Martin Lewis, фирма Softek, 1983 г. Файлы версии 1.1: COMPILER (тип BASIC, длина 707 байт), MACHINE CODE (тип CODE, длина 6050 байт, адрес загрузки 59300). Файлы версии 1.7: FP48k v.1.7 (тип BASIC, длина 36 байт), < пустое имя > (тип CODE, длина 1000 байт, адрес загрузки 23500), m/CODE (тип CODE, длина 6100 байт, адрес загрузки 59300).
33 Авторы Jerzy Borkowski и Wojciech Skaba, 1986 г. Файлы первого варианта: TOBOS FP (тип BASIC, длина 258 байт), FLOATING POINT (тип CODE, длина 12268 байт, адрес загрузки 53100). Файлы второго варианта (заставка с бегущей строкой). TOBOS FP (тип BASIC, длина 2648 байт), файл без заголовка (тип CODE, длина 12268 байт, адрес загрузки 53100).
34 В скобках приведены адреса системных переменных, в которых записаны значения адресов соответствующих границ областей памяти.
35 Автор Hans-Joachim Berndt, 1985 г. Файлы: PRODOSDEMO (тип BASIC, длина 7811 байт), PRO-DOS1.1 (тип CODE, длина 3787 байт, адрес загрузки 60000).
36 Обратите внимание, что демонстрационная программа производит
модификацию некоторых символов, определяемых пользователем (UDG).
37 Подробно о потоках и каналах смотрите в [1].
38 Наличие пробелов улучшает читаемость текстов программ, а отсутствие — экономит память.
39 FBOX х 1, у1, х2, у2
Формат этого оператора совпадает с форматом оператора *ВОХ. Фигуры могут быть залиты не только сплошным фоном, но и неким периодически повторяющимся рисунком — текстурой. При работе с *FBOX текстура задается оператором *GPAT, рассмотренным в предыдущем разделе. Для примера выполним программу:
30 +GPAT BIN 10000000: REM Шаблон линии 40 *FBOX 30, 30, 130, 100: REM Прямоугольник 50 PAUSE 0
Текстура для закраски прямоугольника формируется из вплотную прилегающих друг к другу горизонтальных линий. Линии составляются из отрезков длиной в 8 пикселей (период трансляции равен 8), структура которых задается оператором *GPAT. Если в пределах ширины прямоугольника помещается дробное число таких отрезков, то следующая линия будет начинаться с того места отрезка, где закончилась предыдущая. Это приводит к тому, что при неизменном параметре оператора *GPAT (то есть при одинаковом виде линий) будут получаться различные текстуры для прямоугольников с различными остатками от деления их ширины на
40 Автор этих строк ввел в PRO-DOS новый оператор ♦CHFNT, который позволяет переключать все шрифты (стандартный, узкий и графические) с латинского набора на русский и обратно.
41 В скобках приведены адреса системных переменных, в которых записаны значения адресов соответствующих границ областей памяти.
42 PRO-DOS располагает еще одним оператором — *WPOKE. Он меняет содержимое внутренних системных переменных PRO-DOS, описывающих текущие параметры окон. Выполнение
♦WPOKE n, m
эквивалентно действию оператора
РОКЕ 60321 +ABS(n), ABS(m) — где пит — целые числа в диапазоне -255...255.
43 Автор Kevin Hambleton, фирма Oasis Software, версия 1.3, спецификация файлов приведена в Приложении 5.
44 Впрочем, этот недостаток легко устраняется изменением системной переменной UDG (23675/76), см. стр. 64.
45 Из этого правила выпадают только несколько операторов.
46 Микродрайв — накопитель на кольцевой магнитной ленте.
47 Подробнее см. в подразделе «Изменение размеров области спрайт-файла» и разделе «Создание спрайтов».
48 Во всех примерах данного описания предполагается, что загружен именно этот спрайт-файл.
49 После ознакомления с принципами наложения изображения можно рассмотреть и способы перемещения спрайтов с сохранением фона.
Например, можно предложить следующую последовательность действий:
1. поместить спрайт на экран оператором .PTXR. Фон при этом сохранится, но сам спрайт немного пострадает: в точках пересечения фона и спрайта образуются «прорехи» (во многих случаях это допустимо);
2. через требуемое время стереть спрайт, вторично выполнив оператор .PTXR с теми же значениями графических переменных. Фон полностью восстановится;
3. изменить переменные .ROW и .COL и поместить спрайт в новое место опять же оператором .PTXR. И так далее.
Можно, конечно, проверить работу приведенного алгоритма, но, вообще-то, в этом нет необходимости, так как он реализован в специально предназначенном для перемещения спрайтов операторе .MOVE.
.MOVE работает следующим образом: накладывает по принципу XOR спрайт с номером, заданным графической переменной .SP2, на экран, соответственно, переменным .ROW и .COL. Потом, изменив значения переменных .ROW и .COL на величины смещения, заданные соответственно переменными .HGT и .LEN, накладывает по тому же принципу XOR на новое место спрайт с номе-
50 Операторы преобразования спрайтов по своему действию аналогичны инструкциям преобразования окна экрана (см. стр. 160), но производят изменения не на экране, а в памяти. Для того чтобы увидеть действие этих операторов, нужно после их выполнения поместить измененный спрайт на экран, например, оператором .PTBL.
Операторы этой группы можно распознать по букве М на конце ключевого слова (от англ. Memory— память).
Не извлекая спрайт из памяти, его можно инвертировать (.INVM), зеркально отображать относительно вертикальной оси симметрии (.MIRM), а также зеркально отображать атрибуты спрайта (.MARM). Предварительно необходимо задать номер преобразуемого спрайта — присвоить соответствующее значение переменной .SPN
Во всех знакоместах спрайта можно установить текущие атрибуты (.SETM). А можно и полностью очистить спрайт оператором .CLSM.
Операторы, производящие скроллинг спрайтов в памяти, аналогичны операторам скроллинга окон экрана. Например, .WR1M производит циклический скроллинг спрайта в памяти вправо на 1 пиксель Нужно только задать номер спрайта в переменной .SPN. ( жераторы скроллинга спрайтов можно найти в Приложении 1.
51 В данном случае изображение перемещается из спрайта .SP1 в спрайт .SP2. Но не для всех групп операторов это так. Чтобы предупредить возможную путаницу при использовании переменных .SP1 и .SP2, в Приложении 2 дана поясняющая таблица (табл. 13).
52 Есть одна особенность в работе оператора .PMXR, происходящая, видимо, из-за ошибки в Laser Basic. После его использования в программе оператор .PTOR первый раз интерпретируется как .PTXR. Обойти эту ошибку можно, например, дважды выполнив .PTOR.
53 Правда, пример дает лишь принципиальное представление о данном способе, поскольку у выбранного спрайта, как и у всех других в спрайт-файле SPRITE2B, отсутствует ободок.
54 Для того чтобы было понятно дальнейшее изложение, скажем несколько слов о структуре спрайт-файла и его расположении в памяти (см. также распределение памяти интерпретатора Laser Basic: табл. 10 на стр. 178). Интерпретатор Laser Basic определяет, в каком месте находится спрайт-файл, по содержимому специальных ячеек памяти. Ячейки 62464/65 содержат адрес нижней границы спрайт-файла (в дальнейшем мы будем называть его START), а 62466/67 — адрес верхней (END). Следовательно, адреса границ спрайт-файла цожно определить так:
LET START=PEEK 62464+256*РЕЕК 62465: PRINT START
LET END=PEEK 62466-4-256*PEEK 62467: PRINT END
Верхняя граница (END) обычно выбирается равной 56575 (и лучше всего ее не менять). В ячейке с адресом END всегда должен быть записан ноль — метка конца спрайт-файла. В противном случае могут возникнуть неприятные сюрпризы. Нижняя граница (START) — плавающая, она зависит от размера спрайт-файла.
Объем памяти (в байтах), занимаемый одним спрайтом, рассчитывается по формуле:
9X.HGTX.LEN+5
- где .HGT и .LEN — высота и ширина спрайта в знакоместах.
Формат хранения спрайта в спрайт-файле приведен в табл Ь (адреса увеличиваются снизу вверх!
55 Как видно, формат .РОКЕ не стандартен для Laser Basic — его параметры передаются не через графические переменные, а непосредственно вслед за ключевым словом.
56 Пошаговый режим означает, что после выполнения каждого оператора ожидается нажатие любой клавиши для продолжения трассировки.
57 Отметим, что выполнение процедур, как и функций, заданных пользователем, происходит тем быстрее, чем ближе к началу программы расположено их определение.
58 Программы, написанные в интерпретаторе Laser Basic, могут быть загружены и записаны как в непосредственном режиме, так и из программы. Причем, если запись производилась из программы, то и загрузка должна происходить из программы. И, наоборот, программы, записанные в непосредственном режиме, могут быть загружены только с клавиатуры.
Запись программ без автостарта осуществляется операторами:
SAVE "NAME" (для ленты),
RANDOMIZE USR 15619: REM: SAVE "NAME" (для диска).
Запись программы с автостартом со строки N осуществляется операторами:
SAVE "NAME" LINE N (для ленты),
RANDOMIZE USR 15619: REM: SAVE "NAME" LINE N (для диска).
59 Программа Spriter написана на языке Laser Basic, и сама по себе может служить примером использования некоторых его возможностей.
60 Текст программы припелен в Приложении Г
61 Оба рассмотренных выше генератора спрайтов накладывают ограничения на максимальный размер создаваемого спрайта. Для программы Spriter этот предел — 32x22 знакоместа, для SPTGEN и того меньше — 15x15. Однако спрайт любых размеров, в том числе и спрайт длиной в несколько экранов, можно легко добавить в готовый спрайт-файл, не пользуясь генератором спрайтов. Для этого необходимо всего лишь выполнить несколько операторов Laser Basic.
Сначала рассмотрим алгоритм включения в готовый спрайт-файл нового спрайта с размером, меньшим или равным экрану:
1. создать изображение спрайта в виде экранного файла (в графическом редакторе) и сохранить его на диске или ленте. Для удобства изображение лучше размещать в левом верхнем углу экрана (чтобы не запоминать его положения);
2. загрузить интерпретатор Laser Basic;
3. выполнить CLEAR 25000;
4. загрузить готовый спрайт-файл с адреса, равного его нижней границе (назовем ее STARTOLD);
5. записать в ячейки 62464 и 62465 адрес нижней границы STARTOLD;
62 Адрес RAMTOP лучше выбрать на 1 меньше нижней границы спрайт-файла (START).
После запуска откомпилированной программы ее невозможно остановить нажатием клавиш CS/Space (Break). Если же происходит сбой в работе программы, то она прерывается с выдачей одного из стандартных сообщений об ошибке, но, к сожалению, без указания места возникновения ошибки.
63 Внимание' Недопустимо изменять нумерацию строк
64 Предлагаем jtot p.i i u i л чиг;псмсй. ш;»кош с npoi р.тмиров.шием w.i .ic-семГ) чсрс
65 * * В П ОМ при ЧО/КСИММ <1ДрССИ ЯЧССК II Л МЯТ >1 при кед СИ 1.1 И III I 1ЫДЦ.1 г ерич ном ни до
66 I.с и» ис но 1» }устся it кутим и,loop, то его номер мо.кно ь smi1. и /чеики (>п2
67 Приводи I ся спецификация фирменно! о iukci а И ,ipyi и вере ия moi у i oi чичать-ся имена и л чины беи си к-файлов
68 О прерываниях читайте в [1].
69 Неработоспособными окажутся только те программы, внутри которых (скажем, под оператором REM) расположены подпрограммы в машинных кодах с абсолютной адресацией, так как начало бейсик-программ MegaBasic устанавливает на 11 байт выше, чем это делает стандартный интерпретатор. Кроме того, в бейсик-программе не должно быть обращений к подпрограммам в кодах, расположенным выше адреса 45000 (исключая область UDG).
70 Это связано с возможностью MegaBasic выводить символы размером 4x8 точек. 203
71 Система построения числовых значений атрибутов в MegaBasic не отличается от принятой в Spectrum-Бейсике (см. crpt 55 ).
72 Рекомендуем задавать значения атрибутов в двоичной форме — это более наглядно.
73 При необходимости нетрудно написать и специальную программу для формирования спрайтов, аналогичную программе Spriter, приведенной для Laser Basic.
74 В программе использован оператор MegaBasic DOKE — двухбайтовый аналог РОКЕ (см стр 2 26}
75 Как ни странно, но в операторе SOUND не задается начальная частота звука, что, впрочем, компенсируется очень быстрым развитием звукового эффекта.
76 @ — ASCII-символх кодом 64.
77 Попытка вызова процедурыв. виде прямой команды чревата неприятностями.
78 Монитором называется программа, предоставляющая возможность просмотреть содержание ячеек памяти и регистров процессора, записать в них новые значения, отладить программу в машинных кодах и пр.
Адреса
и содержимое ячеек
Более подробно разобраться с монитором-отладчиком поможет книга [1], где описан монитор MONS4.
79 Есть, правда» еще одна версия — 4.0 (1988 г.), предназначенная для ZX Spectrum 128.
80 Файлы: Beta 3.1 (тип BASIC, длина 945 байт) и cBeta 3.1 (тип CODE, длина 18577 байт, адрес загрузки 46960).
81 Соответствие клавиш ZX Spectrum операторам Beta Basic приведено в Приложении 1.
82 Если, находясь в Beta Basic, выполнить оператор LIST 0, то можно увидеть, что строка с номером 0 состоит из операторов DEF FN — в ней и определяются все новые функции Beta Basic.
83 Полный список встроенных функций Beta Basic приведен в Приложении 2.
84 Для экономии места мы все же будем приводить листинги программ в привычном
виде — разделяя операторы двоеточиями.
85 При этом в текст строки помещается управляющий символ CHR$ 15, который Beta Basic трактует как пробел (CHR$ 32) плюс возврат каретки (CHR$ 13).
86 Для большей наглядности мы будем указывать в формате операторов и функций Beta Basic «словесное» название параметров. Однако вполне естественно, что, например, параметром < начальный номер > может быть любое целочисленное значение (переменная, выражение), которое попадает в разрешенный диапазон (в данном случае — 0...9999); под <строкой символов> подразумевается символьное значение (символьная константа, переменная, выражение); под <числом > — числовое значение и т. д.
87 Напомним, что в Beta Basic двоеточия не высвечиваются.
88 Beta Basic позволяет при перенумерации присваивать строкам номера в интервале 1...16383. При этом все переходы на строки с номерами, превышающими 9999, осуществляются корректно. Вызов на редактирование таких строк возможен всеми доступными в Beta Basic способами.
89 При открытии очередного окна RAMTOP опускается на 15 байтов. В освободившемся пространстве создается область системных переменных, в которой хранятся параметры окна.
90 Нулевое окно отличается еще и тем» что не претендует на участок памяти над RAMTOP.
91 Фактически команда WINDOW 0 равносильна установке CSIZE 0, включающей стандартный драйвер быстрого вывода на экран, который игнорирует все оконные установки. Этот режим остался в наследство от предыдущих версий интерпретатора (3.0 и ниже): он устанавливался в них при старте Beta Basic.
92 Окна, в которых осуществляется скроллинг экранного изображения, не следует путать с текстовыми окнами, в которые направляется вывод символьной информации.
93 Стоящий следом за ON список операторов может содержать также обращения к процедурам, вызываемым по именам (их мы рассмотрим несколько позже) В этом случае он будет выступать уже в следующей «весовой категории» операторов управления программой после GO SUB ON.
94 В нашем примере это оператор NEXT К.
95 Конструкция READ LINE AS и функция 1ТЕМ() работают и с обычными DATA-списками. К сожалению, при этом 1ТЕМ() не в состоянии определить тип первого элемента очередного DATA-списка. Следовательно, и после выполнения оператора RESTORE она тоже вернет нулевое значение. Впрочем, этот недостаток в работе функции несложно обойти. Достаточно поместить в самое начало каждого DATA-списка элемент одного и того же типа.
96 См. таблицу символов на стр 100.
97 На уровне двоичного представления чисел это означает, что в любом коде с номером больше 127 сбрасывается старший бит.
98 Функция SHIFT$ в режиме 7 очень «не любит* управляющие символы с параметрами, выходящими за пределы допустимых значений — их наличие в строке может привести к сбросу компьютера.
99 Для направления печати в переменную Z$ при старте Beta Basic в дополнение к уже существующим каналам ("К", MS "R" и "Р") инициализируется еще один — "Z". К нему по умолчанию подключается поток #14 (см. [1]).
100 Надо отметить, что в LENGTH допустимо подставлять имя массива как в форме "G0", так и в виде имени любого из его элементов: "G(k)" или "G( < число >)" На работе функции эти различия в записи имени не отражаются
101 Тип процессора — AY-3-8912.
102 Musical Instrument Digital Interface — цифровой интерфейс для музыкальных инструментов.
103 Заметим, что самые низкие ноты в'О-й и 1-й октавах без MIDI-интерфейса воспроизводиться будут неправильно.
104 Подробнее см. в описании MIDI-интерфейсэ [8].
105 Символьный массив перед загрузкой с электронного диска должен быть определен оператором DIM Иначе он будет загружен как простая строка символов Эго замечание справедливо и для загрузки с магнитофона символьного массива в режиме 128 BASIC.
Это сообщение, очевидно, аналогично сообщению с кодом д, однако ссылки на него в ПЗУ наити не удалось.
В ZX Spectrum 128 расширена область системных переменных. Сделано это за счет использования части оперативной памяти, отведенной в ZX Spectrum 48 под буфер принтера. Ниже приводятся название, адрес и краткое описание некоторых системных переменных, значения которых могут быть использованы из Бейсика.
23389___(BANKM)
копия внутреннего системного регистра, определяющего текущую архитектуру компьютера (из Бейсика изменять не рекомендуется).
23391_(BAUD)
скорость обмена по последовательному интерфейсу. Хранится в «обратном» виде, то есть сначала записан старший байт, затем младший.
23395__(COL)
позиция (номер столбца) вывода на принтер.
23396__(WIDTH)
количество печатных позиций на принтере. При достижении этого числа программа печати автоматически переводит строку.
23429/38/31_(SFSPACE)
количество свободных байтов на электронном диске.