Выпуск технической, научно-популярной и специальной литературы,
изготовление рекламной полиграфической продукции
Издательский отдел фирмы
• принимает заказы на выполнение всех видов изда-тельско-полиграфических работ;
• производит подписку на книгу Н. Родионова
«Адаптация программ к системе 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
ОТКРЫТАЯ МНОГОКАТАЛОГОВАЯ ДИСКОВАЯ ОПЕРАЦИОННАЯ СИСТЕМА
isDOSi.o
Операционная система
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 Напомним, байтом называется восьмиразрядное двоичное число.
13
Сравнив числа 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
ABC
Символы с кодами 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)
количество свободных байтов на электронном диске.