MEGA - BASIC
ИНФОРКОМ выражает глубокую
признательность Пашорину В.И. из
города Балашова Саратовской обл.,
который выполнил перевод с ан-
глийского языка фирменной ин-
струкции. Техническое редактиро-
вание и вступительная статья -
наши.
ОСНОВНЫЕ ХАРАКТЕРИСТИКИ
1. Программ^.занимает порядка 20К и располагается в верхних об-
ластях ОЗУ.
2. Уникальной особенностью является то, что кроме основного
шрифта она поддерживает одновременно еще и два подзагружаемых. Обра-
щаем на этот факт внимание тех пользователей, которые пишут много-
язычные программы. Так, например для англо-русских программ Вы може-
те иметь на экране одновременно и русский и английский тексты и
транскрипцию.
3. Каждый из э.тих шрифтов может одновременно (!) в пределах од-
ного экрана изображаться четырьмя размерами от 16 до 64 знаков в
строке.
4. Дополнительно к этому Вы можете легко печатать символами
любого размера (хоть во весь экран), можете делать из них "бегу-
щую строку" .
5. Возможно создание и использование до 10 окон в пределах эк-
рана. произвольный, "скроллинг" изображения по горизонтали и вертика-
ли в окне. Уникальная возможность иметь на экране одновременно и
листинг программы в одном окне и результат ее работы в другом.
6. Широкие возможности структурного программирования благодаря
наличию понятия "Процедура". Большие программы сразу перестают быть
проклятьем БЕЙСИКа, появляется возможность коллективного написания
программ, более того, созданные Вами процедуры Вы можете переносить
из программы в программу без изменений, создав себе тем самым библи-
отеку и сократить тем самым время на разработку новых программ про-
центов на 80, а может быть и больше.
7. Новые операторы цикла.
8^Дополнительные отладочные операторы.
9. Улучшенные возможности управления звуком.
10. Встроенный монитор для легкого внедрения в машинный код с
целью проверки и внесения изменений.
Обращаем Ваше внимание и на то, что MEGABASIC поддерживает и
все команды и фунуции стандартного встроенного БЕЙСИКа и, поскольку
приступая к новому языку, Вы по крайней мере с ними должны быть зна-
комы, мы АБСОЛЮТНО не будем рассматривать стандартные команды, а
остановимся только на новых.
1. КЛАВИАТУРА
После запуска программы Вы увидите короткое сообщение и ми-
гающий квадрат в левом нижнем углу экрана, это новый курсор. Он
показывает, где будет помещат-ься вводимая информация. В МЕГАБЕЙСИКе
для ввода информации может использоваться весь экран, а не только
две нижние строки, как при работе со стандартным БЕЙСИКОМ, содержа-
щимся в ПЗУ компьютера.
Попытайтесь записать несколько символов с клавиатуры, и Вы за-
метите, что привычные Вам ключевые слова, соответствующие нажатой
клавише не появляются на экране, а появляются только одиночные сим-
волы. Теперь Вам придется записывать все операторы полностью - так,
как это делается на большинстве компьютеров.
Например, чтобы набрать слово PRINT, Вам уже недостаточно просто
нажать на клавишу "Р", а придется набрать ,P',,R,,,I,,,N,,,T' пол-
ностью. Впрочем, некоторые операторы, пришедшие из БЕЙСИКа, можно
записывать и в сокращенной форме, но она должна заканчиваться точ-
кой. Ниже мы |
привели |
список этих |
ключевых |
слов, указав, где должна |
стоять точка, |
|
|
|
|
|
A.TTR |
BE. ЕР |
В. IN |
BO.RDER |
BR.IGHT |
CH.R$ |
CI.RCLE |
CLE.AR |
CL.OSE# |
С. ODE |
CON.TINUE |
DA. ТА |
D.EF FN |
DR. AW |
ER.ASE |
E.XP |
FL.ASH |
F.ORMAT |
GO S.UB |
G.O TO |
I.NKEY$ |
INP.UT |
INV.ERSE |
L. EN |
LI .NE |
LL.1ST |
LP.PRINT |
LO.AD |
ME.RGE |
M.OVE |
NE.XT |
N.OT |
OP.EN# |
OV.ER |
PA.PER |
PAU.SE |
PE.EK |
PL. ОТ |
P.OINT |
PR.INT |
RA.NDOMIZE |
RE. AD |
RES.TORE |
RET.URN |
R.ND |
SA. VE |
S.CREEN$ |
ST. R$ |
T.AB |
TH.EN |
U.SR |
V. AL$ |
VE.RIFY |
|
При записи операторов типа GO ТО не забывайте делать пропуски.
Компьютер поймет GO ТО, но при записи GOTO выдаст сообщение об ошиб-
ке SYNTAX ERROR.
Нижняя строка показывает режим курсора:
'L' - литерный строчный (CAPS OFF);
'С' - литерный прописной (CAPS ON);
'G' - графический;
'Е' - расширенный EXTENDED.
РЕДАКТИРОВАНИЕ
В программе реализован довольно необычный режим редактирова-
ния, который имитирует полноэкранный редактор. Для этого в работе
участвуют два курсора. Первый - входной курсор, а второй - COPY-
курсор.
КЛАВИШИ УПРАВЛЕНИЯ РЕДАКТОРОМ:
КЛАВИШИ УПРАВЛЕНИЯ РЕДАКТОРОМ:
КЛАВИША |
НАЗНАЧЕНИЕ |
EDIT |
копирование очередного символа в'буфер редактора |
TRUE VIDEO |
удаление всей строки |
INV. VIDEO |
удаление символа справа от курсора |
CURS.LEFT |
перемещение курсора влево на один символ |
CURS.RIGHT |
вправо на один символ |
CURS.UP |
вверх на один символ |
CURS.DOWN |
вниз на один символ |
DELETE |
удаление символа слева от курсора |
<= |
перемещение курсора в начало строки |
<> |
удаление всех символов от курсора до начала строки |
>= |
перемещение курсора в конец строки |
SCREENS |
листинг программы |
OR |
перемещение указателя текущей строки вверх и листинг |
AND перемещение указателя текущей строки вниз и листинг
STOP перемещение COPY-курсора влево
NOT то же, но вниз
STEP то же, но вверх
ТО то же, но вправо
AT Копирование символа от COPY-курсора к выходному курсору
Эта команда может использоваться только при работе с
символами стандартного размера, но не в режимах 64 знака
в строке и не с символами двойной ширины и высоты
OVER перемещение COPY-курсора на следующе окно
INVERSE возвращение COPY-курсора в левый верхний угол окна.
В режиме редактирования на экране присутствуют три окна.
0 - окно индикации информации, поступающей от пользователя и
выдачи сообщений об ошибках.
1 - окно автоматического листинга программы.
2 - окно выходной информации.
Подробнее об окнах мы расскажем ниже. В первый момент, после
загрузки МЕГАБЕЙСИКа, Вам может показаться, что у Вас только одно
окно, но это не так, поскольку окна имеют право перекрывать друг
друга.
В отличие от встроенного редактора, в МЕГАБЕЙСИКе Вы можете на-
прямую вызывать нужную, а не только текущую строку на редактирова-
ние. Это делается подачей команды EDIT п. Здесь п-номер нужной Вам
строки.
КЛАВИШИ, ОПРЕДЕЛЯЕМЫЕ ПОЛЬЗОВАТЕЛЕМ (UDK)
В МЕГАБЕЙСИКе есть возможность запрограммировать верхний ряд кла-
виш для выполнения определенных функций. Для этого применяется ко-
манда KEY__, за которой должны быть записаны числовое и символьное
выражения. Числовое выражение определяет, какая из клавиш програм-
мируется, а символьное - задает значение этой клавиши. Записывая
ENTER (CHR$13) в конце символьного выражения, вы обеспечиваете тем
самым автоматическое выполненние назначенной команды после нажатия
заданной клавиши UDK. В МЕГАБЕЙСИКе уже встроены некоторые UDK:
VERIFY - здесь в символьном выражении уже записана последователь-
ность 'RUN + CHR$13'. При нажатии этой клавиши выполняется
очередная программа.
VAL$ - в символьном выражении здесь записано:
'LOAD "":RUN+CHR$13'
При нажатии этой клавиши включается загрузка и автоматичес-
кий запуск очередной записанной на кассете программы.
КЛАВИШИ УПРАВЛЕНИЯ
Во время выполнения программы клавиша "ПРОБЕЛ" может быть ис-
пользована как новая SHIFT-клавиша для выполнения следующих функций:
CONTROL F - вызов Фронт-панели.
CONTROL Е - останов выполнения программы, выдача на экран сообщения
и переход к режиму редактирования строк.
CONTROL R - останов программы, выставление начальных значений PAPER,
INK, BORDER и переход к редактору строк.
2. ВЫВОД НА ЭКРАН
ОКНА
Размер символов, их форма, а также способ их вывода на экран
значительно расширяют в МЕГАБЕЙСИКе возможности "СПЕКТРУМа". Напри-
мер, в МЕГАБЕЙСИКе возможно ограничить площадь экрана для выходной
информации. Эта площадь может быть любого размера. Отдельные участки
экрана определяются как "окна". Каждое окно имеет свой номер. Язык
позволяет Вам работать с 10 окнами, которые пронумерованы от 0 до 9,
и все могут быть использованы в программах. Правда, как мы уже от-
мечали выше, некоторые окна уже закреплены за определенными операци-
ями, например все операторы PRINT в программе используют для выдачи
информации окно 2, но у Вас есть возможность перейти на другое окно
с помощью команды CURRENT_. За этой командой должно идти числовое
выражение, которое определяет номер назначенного окна. Если резуль-
тат этого числового выражения оказывается более 9, то выдается сооб-
щение о том, что окно задано неправильно:
ILLEGAL WINDOW
Окна могут иметь любой размер и занимать произвольное положение
на экране. Для определения размера и положения окна используется ко-
манда WINDOW_y,x,d,w .
у-номер строки верхнего левого угла окна (0...23);
х-номер столбца верхнего левого угла окна (0...63);
d-высота окна в строках;
w-ширина окна в столбцах;
Таким образом, в МЕГАБЕЙСИКе весь экран разбивается на 24 строки
и 64 столбца. Функции ATTR и SCREENS используют старую координатную
систему, a PRINT AT - новую. Кроме того, координаты PRINT AT зада-
ются относительно левого верхнего угла окна, а функции SCREENS и
ATTR по-старому используют абсолютные координаты экрана. Если коор-
динаты окна превышают возможные размеры экрана, то Вы получите сооб-
щение о том, что окно слишком велико, т.е. если y+d>24 или если
x+w>64, то следует сообщение:
WINDOW ТОО LARGE
Если же значения d и w меньше нуля, то следует сообщение
WINDOW ТОО SMALL
После выполнения команды WINDOW_ очередной позицией для вывода
на экран становится верхний левый угол окна.
КОМАНДЫ CLS И СШ_
Команду CLS, используемую для чистки всего экрана, нельзя ис-
пользовать для чистки только одного окна. Для этого необходимо ис-
пользовать команду CLW_. За этой командой должны быть записаны одно
или два числа. При двух записанных числах первое определяет номер
окна, а второе - режим CLW_:
CLW_n,0 - затушевка окна цветом PAPER;
CLW_n,1 - затушевка окна цветом INK;
CLW_n,2 - инвертирование. Цвет PAPER меняется на цвет INK;
CLW_n,3 - очистка атрибутов без изменения содержимого окна.
Команда CLW_ всегда использует текущие атрибуты. Так, например,
если текущим является окно 3, то после выполнения команды CLW_0,0
окно 0 будет затушевано с использованием атрибутов окна 3.
КОМАНДЫ PAN И SCROLL.
В YSMB имеется возможность перемещать пиксел за пикселом оче-
редное окно экрана во всех направлениях. Команда PAN_ позволяет
перемещать окно по горизонтали, а команда SCROLL_ - по вертикали.
После этих команд должны быть за писаны два числа: Первое опреде-
ляет цвет кромки экрана (1-цвет INK, О-цвет PAPER), а второе показы-
вает, в каком направлении будет смещение и на какую величину. Для
команды PAN_: если второе число положительное, то перемещение выпол-
няется вправо, если отрицательное, то влево. Для команды SCROLL:
положительное число - перемещение вверх, отрицательное - вниз.
Вы можете также не только сдвигать содержимое экрана, но и ис-
полнять его прокрутку. Для этого используют команды PANW_ и
SCROLLW. Параметры этих команд точно такие же, как и для команд
PAN_ и SCROLL. Эти команды действуют только на дисплейный файл.
Задание окон для конкретных целей осуществляется по команде
FX_, за которой следует 2 числа: первое указывает, для каких целей
предназначено это окно, а второе определяет номер окна.
FXO,п - определяет окно п для входной информации и сообщений
об ошибках;
FX_l,n - определяет окно п для автоматического листинга;
FX2,п - определяет окно п для выходной информации;
FX_3,n - определяет окно п для фронт-панели.
К примеру, запись FX_0,5 определяет, что окно 5 будет использо-
ваться для входной информации и сообщений об ошибках. При желании
наберите и запустите следующую программу для демонстрации окон:
10 BORDER 0
2 0 CURRENT0: WINDOW_0,0,15,32
30 PAPER 2: INK 7: CLW_0
40 CURRENT1:WINDOW_0,32,22,32
5 0 PAPER 1: INK 7: CLW_0
6 0 CURRENT2: WINDOWl5,0,7,32
7 0 PAPER 7: INK 1: CLW_0
КОМАНДА MODE_.
Используя команду M0DE_, можно получить 4 различных размера
символов, выводимых на экран:
M0DE_n,l - каждый символ записан в матрицу 4x8 пикселов;
M0DE_n,2 - обычный размер символов, т.е. 8x8 пикселов;
M0DE_n,3 - символы двойной высоты 8x16 пикселов;
MODEn,4 - символы размером 16x16 пикселов.
Как Вы видите, за командой M0DE_ должно быть записано одно или
два числа. Первое число указывает номер окна, а второе - размер сим-
волов. Для каждого окна могут быть заданы свои размеры символов. При
использовании команДы M0DE_n,4 возможно получение символов с оттен-
ками, так как в этом случае каждый пиксел символа занимает 4 пиксела
экрана. Задание интенсивности тени осуществляется по команде
STIPPLE_, после которой записывают число (0...15) определяющее ин-
тенсивность тени.
КОМАНДА FONT_
МЕГАБЕЙСИК может оперировать с тремя наборами символов. Выбор
набора выполняется с помощью команды F0NT_, после которой записывают
число, указывающее на выбранный набор:
FONT_0 - обычные символы компьютера "ZX-SPECTRUM";
F0NT_1 - символы, подобные применяемым в компьютерах фирмы
"Би-Би-Си", например в "MICRO ELECTRON";
F0NT_2 - символы, подобные применяемым в компьютерах фирмы
"Амстрад", например в СРС 464.
Новые символьные наборы хранятся в ОЗУ:
1ый - с адреса 48000,
2ой - с адреса 45000.
Адрес произвольного символа (А$) по его коду может быть найден
по формуле S+8*(CODE А$-32), где S - начальный адрес символьного на-
бора. Поскольку адреса Вам известны, Вы можете сами загружать туда
какие Вам нужно наборы, предварительно приготовив их, например с по-
мощью программы ARTSTUDIO.
КОМАНДЫ CHR$,VJXJ,DCmi.
Символьный набор ZX SPECTRUM содержит как печатные, так и
управляющие символы. Несколько новых управляющих символов входит и в
МЕГАБЕЙСИК.
CHR$1...CHR$4 - выбор режима очередного окна;
CHR$7 - установка символа в позицию курсора;
CHR$24...CHR$31 - выбор окна для выходной информации. CHR$24 -
окно 0, CHR$31 - окно 7.
Новая команда VDU_ эквивалентна PRINT CHR$. При записи, напри-
мер, VDU_65,66 на экране появится "АВ" . Строка символов может быть
выведена в нижнюю часть экрана по команде DOWN_y,x,a$, где у и х
соответственно строка и столбец, на которые выводится строка симво-
лов, а$ - строка выводимых символов.
КОМАНДЫ SPRINT U PRINTER.
Командой SPRINT_x,y,a,b,a$ можно вывести на экран символы любо-
го размера. Здесь х,у - позиция первого символа на экране; а и b -
коэффициенты увеличения символа в направлении х и у соответственно;
а$ - строка выводимых символов. Если достигнут правый край экрана,
то запись появляется с левой стороны.
Команда PRINTER_ обеспечивает вывод на принтер. Если после этой
команды будет записан 0, то вывод будет выполняться только на экран,
любое другое число - на принтер. Адрес подпрограммы вывода на прин-
тер (она написана в машинных кодах) - 59934. Обратите внимание на
то, что в МЕГАБЕЙСИКЕ нет команд CLEAR#, OPEN#2 и CLOSE#2.