Системные программы для «ZX-Spectrum» 1993 г.

MEGA-BASIC - вступление. Клавиатура. Редактирование. Вывод окна. Команды. Управление выполнением программы.


MEGA-BASIC

 

ВСТУПЛЕНИЕ

 

MEGA-BASIC (M-B) представляет собой расширение стан­дартного Бейсика для графического программирования. M-B раз­мещается на ленте вместе с программой SPRITE-DESIGNER (S-D), который позволяет создавать свои собственные элементы изображения (спрайты) для дальнейшего использования.

Фирменный SPECTRUM имеет разделенные устройства ин­терфейса-1 с двумя различными ПЗУ. Если вы собираетесь ис­пользовать M-B с микродрайвами, то вы должны выключить ПЗУ интерфейса-1, например:

CLOSE #0: PRINT PEEK 23729

Если на экране 0, то старое ПЗУ не выключилось, но нет необходимости останавливать загрузку.

При получении мигающего числа 80 на экране — включилось новое ПЗУ. Для полного взаимодействия с M-B надо набрать после загрузки программы:

POKE 47006, 183

После этого M-B будет легко разгружать все остальные прог­раммы.

 

КЛАВИАТУРА.

 

После загрузки MEGA BASIC'a вы увидите фирменное сооб­щение. Для копирования MEGA BASIC'a на MICRODRIVE не­обходимо нажать клавишу "М", если же в этом нет необхо­димости — достаточно нажать любую другую клавишу.

В M-B для ввода данных используется весь экран — он не делится на две части.

Все команды в M-B набираются побуквенно, причем сущест­вует множество сокращений:

A.TTR            ER.ASE       ME.RGE     RES.TORE

 ВЕ.ЕР            Е.ХР            M.OVE      RET.URN

 В. IN              FL.ASH       NEXT        R. ND

 BO.RDER     F.ORMAT   N.ОТ         SA.VE

 BR.IGHT      GO   S.UB   OP.EN#     S.CREEN$

 CH.R$          G.O  TO       OV.ER       ST.R$

CI.RCLE       I.NKEY$      PA.PER     T.AB

CLE.AR          INP.UT         PAU.SE     TH.EN

CLOSED        INV.ERSE  PEEK         U.SR

C.ODE            L.EN           PL. ОТ      V.AL$

CON.TINUE  LI .NE          P.OINT    VE.RlFY

DA.ТА           LI.ST            RA.NDOMIZE

D.EFINE        LP.RINT      PR.INT      DR.AW

 LO.AD   RE.AD

Пробелы обязательны. Сокращения, отличные от приведен­ных не допускаются.

Пример сокращения: С.; DR.

Нижняя строка дисплея показывает текущий вид курсора. Смена курсора — обычным способом. Соответствие:

ZX-SPECTRUM BASIC              MEGA-BASIC

 L                                             CAPS OFF

 С                                             CAPS ON

 E                                             CAPS OFF EXTENDED

 G                                             CAPS OFF GRAPHICS

 

РЕДАКТИРОВАНИЕ

 

M-B представляет новые возможности при редактировании программ, поэтому назначение многих клавиш изменено.

EDIT — копирует текущую строку программы в строку вво-1 да при редактировании;

TRUE VIDEO стирает строку ввода;

INVERSE VIDEO стирает символ справа от курсора;

DELETE стирает символ слева от курсора;

О — стирает от курсора до конца строки;

<= — курсор в начало строки ввода;

>= — курсор в конец строки ввода;

CURSOR LEFT курсор влево;

CURSOR DOWN —курсор вниз;

CURSOR UP курсор вверх;

CURSOR RIGHT курсор вправо;

SCREEN$ автоматический листинг в окно 1, верхняя строка — текущая;

OR на одну строку вниз и прокрутка экрана;

AND на одну строку вверх и прокрутка экрана;

STOP курсор копера влево;

NOT курсор копера вниз;

STEP курсор копера вверх;

ТО — курсор копера вправо;

AT копирует символ курсора копера в строку ввода. Дей­ствует только с символами стандартного размера;

OVER сдвиг курсора копера в следующее окно;

INVERSE сдвиг курсора копера в левый верхний угол текущего окна.

Экран разделен на четыре окна, каждое из которых исполь­зуется в специальных целях:

Окно 0 — для ввода информации пользователем и для со­общений об ошибках;

Окно 1 — для автоматического листинга, управляемого оператором;

Окно 2 — для вывода информации бейсик-командами;

Окно 3 — используется передней панелью.

После загрузки кажется, что на экране одно окно, но это четыре окна, атрибуты которых совпадают. Для копирования текстов используется курсор копера, который может двигаться по текущему окну посредством нажатия клавиш, описанных ранее. Курсор копера функционирует только в окнах 0, 1,2. Вызов на редактирование одновременно нажать "CAPS SHIFT" и " 1", или "EDIT", затем ввести номер строки. Если данный номер отсутствует в программе, то вызывается строка с ближайшим номером, больше указанного. Если нет таковой, выводится сооб­щение об ошибке: "LINE NOT FOUND".

 

КЛАВИШИ, ОПРЕДЕЛЯЕМЫЕ ПОЛЬЗОВАТЕЛЕМ

 

M-B дает возможность программирования 10 функциональ­ных клавиш верхнего ряда для извлечения строк длиной до 255 символов. Для программирования этих клавиш вводится коман­да: KEY <числовое выражение>,<строка символов>

Числовое выражение обозначает, какая клавиша программи­руется, строка определяет новую функцию. Прибавление CHR$ 13 в конце строки позволит осуществить автоввод. Существуют

две встроенных функции с автовводом: "RUN"' и "LOAD:RUN" — вызываются нажатием VERIFY и VAL$ соответственно. Пример: KEY 4, "PRINT "+CHR$ 34

 

КЛАВИШИ КОНТРОЛЯ

 

Во время выполнения программы клавиатура приобретает до­полнительные функции: нажатие одновременно пробела и "F" вызывает переднюю панель; пробела и "Е" — останавливает программу, на экране появляется "ESCAPE"; пробела и "R" — перезапускает BASIC (BASIC-программа не стирается). При не­обходимости ввести пробел нажатием одновременно SYMBOL SHIFT и пробел.

 

ВЫВОД НА ЭКРАН ОКНА

 

М-В дает большие возможности по использованию символов различной формы и размеров. Есть, например, возможность ор­ганизовать вывод на определенную часть экрана, которая может иметь любые размеры, или даже занимать весь экран. Эти части называются окнами. М-В позволяет вам организовать до 10 окон на экране, они нумеруются: 0...9. Все они могут быть определены в программе (использование окон 0...9 описано ранее). При вы­полнении программы оператор РRINТ автоматически использу­ет окно 2. Однако возможно переключение ввода/ вывода в дру­гое окно командой CURRENT М. Если N больше 9, то выдается ошибка: "MEDICAL WINDOW". Используя команду CURRENT, можно одновременно управлять тремя окнами, переключая их. Команда WINDOW Y,X ,D,W определяет размер и позицию окна на экране. Y,X — координаты левого верхнего угла окна; D — глубина, W — ширина окна. Все размеры даны в знакоместах.

Ограничения на X, Y, D, W:

X,Y = 0-63; D,W >= 0; Y+D <= 24; X+W <= 64

Назначение функции ATTR и SCREEN при работе с окнами прежнее и они используют прежний центр координат (левый нижний угол). Заметим, что команда "PRINT AT .." использует в качестве центра координат левый верхний угол текущего окна. После выполнения переназначения окна текущая позиция пе­чати устанавливается в верхний левый угол этого окна.

КОМАНДЫ CLS И CLW

Стандартная команда CLS используется для стирания всего экрана. Для стирания окон существует команда CLW , за кото­рой следует одно или два числа. Если их два, то первое — это номер окна, второе — тип стирания. Если одно число, то очища­ется текущее окно.

Тип стирания:

0 — окно стирается, не изменяя значений цвета и тона;

1 — окно стирается цветом тона, тон и фон не изменяются;

2 — окно инвертируется;

3 — стираются только атрибуты — позволяет изменить цве­та, не меняя изображения.

Во всех этих командах текущая позиция печати устанавлива­ется в левый верхний угол экрана. В качестве атрибутов команда CLW использует атрибуты текущего окна ("CLW 0,0" при теку­щем третьем окне заполнит окно 0 атрибутами окна 3).

 

КОМАНДЫ PAN И SCROLL.

Во все окна можно выводить информацию, причем изобра­жение может быть сдвинуто в любую сторону на произвольное расстояние. Это осуществляется командами "PAN " и "SCROLL ", которые имеют два аргумента: первый определяет цвет освободившейся части окна (1 — INK, 0 — PAPER). Второй аргумент определяет, в каком направлении и насколько проис­ходит сдвиг. Для "PAN ": если оно больше нуля — сдвиг вправо, меньше нуля — сдвиг влево. Для "SCROLL ": аргумент больше нуля — сдвиг вверх, меньше нуля — сдвиг вниз.

Также может осуществляться циклический сдвиг: "PANW " направление и шаг сдвига, "SCROLL "направление и шаг сдвига. Сдвиг может быть остановлен в любой момент нажатием кла­виши "М".

 

КОМАНДА FX.

Функцию выполняемую окном, определяет команда "FX”.

При запуске системы М-В функции распределяются следу­ющим образом:

Окно 0 — для ввода пользователя и сообщений об ошиб­ках;

Окно 1 —для листинга;

Окно 2 — для вывода информации BASIC-командами;

Окно 3 — для передней панели (редактор ассемблера).

Формат команды "FX": "FX функция окна согласно выше­оговоренному, номер определяемого окна". Например: FX 3,7 — отводит окно 7 передней панели.

Пример программы:

10   BORDER   0

20 CURRENT 0: WINDOW 0,0,15.32

30 PAPER 2: INK 7: CLW 0

40 CURRENT I: WINDOW 0,32,22,32

50   PAPER   I:    INK   7:    CLW   0

60 CURRENT 2: WINDOW 15.0.7,32

70   PAPER   7:    INK   I:    CLW   0

 

КОМАНДЫ MODE И STRIPLE.

М-В позволяет установить четыре размера символов: "MODE номер окна, размер символа".

Размер:

если 1, ТО 4*8 точек (64 символа в строке);

если 2, ТО 8*8 точек (стандарт);

если 3, ТО 8*16 точек;

если 4; ТО 16*16 точек.

Каждое окно может иметь собственный размер символов, в каждом окне могут быть совмещены символы различных разме­ров. Для четвертого режима (MODE номер окна,4") возможно регулировать заполнение командой "STRIPLE " заполнение (число от 0 до 15), 0 дает прозрачные символы, 15 — полностью заполненные.

 

КОМАНДА FONT.

С помощью команды "FONT" можно менять символьный на­бор:

"FONT 0" — стандартный набор;

"FONT 1" — набор типа ВВС MICRO, ACORN ELECT­RON;

"FONT 2" — набор типа AMSTRAD CPC 464.

 Эта команда устанавливает символьный набор для всех видов печати во всех окнах. Новые символьные наборы размещаются в ОЗУ и соответственно могут быть замещены при необходи­мости. Каждый символ определяется 8 байтами (аналогично сим­волам псевдографики пользователя). Новые наборы определяют символы от CHR$ 32 до CHR$ 127. Набор типа ВВС располага­ется с адреса 45000. Для определения символа с кодом А$ надо изменить 8 байт. Первый из них расположен по адресу (45000 или 48000)+8*(CODE A$-32).

 

КОМАНДЫ CHR$, VDU И DOWN.

М-В имеет также расширенный стандартный набор символов. В него включено несколько новых значений:

CHR$ 1-4 — эквивалент "MODE N" (установка режима текущего окна);

СНR$ 7 — инверсия символа, находящегося под курсором;

CHR$ 24-31 —устанавливает окно, используемое для вывода: CHR$ 24 — окно 0, CHR$ 25 — окно 1 и т.д.

Введена также новая команда "VDU число" — эквивалент "PRINT CHR$..." Например: VDU 2 — установка стандартного символьного набора; VDU 65,66 — печать символов "АВ". Стро­ки символов могут быть выведены на экран по вертикали сверху •низ. Команда "DOWN Y,X,A$" выводит строку А$, начиная с Точки с координатами (X,Y). Если окна не хватает, то оно сти­рается и новый символ выводится вверх окна.

 

КОМАНДЫ SPRINT и PRINTER

Команда "SPRINT X,Y,A,B,A$" позволяет выводить на экран символы любого размера. Она выводит строку А$, начиная с точ-ки с координатами (X,Y), увеличивая строку символов в А^В раз.

Команда "PRINTER N" выводит содержимое экрана на пе­риферийное устройство, например принтер. Команда заканчива­ется числовым выражением. Если результат его равен 0, то вывод происходит на экран. Если не 0, то при печати каждого символа вызывается подпрограмма в машинных кодах, адрес которой со­держится в ячейках 59934, 59935. Код символа располагается в аккумуляторе. Возврат в основную программу — по команде ас­семблера RET.

ВНИМАНИЕ! Надо помнить, что при работе в М-В нельзя набирать команды: CLEAR#, OPEN# 2, CLOSE# во избежание сброса системы.

 

ГРАФИКА КОМАНДЫ CHANGE И SWAP

М-В обладает командами для работы с областью атрибутов:

"CHANGE маска, данные" — позволяет изменять отдельные би­ты каждого байта атрибутов, не затрагивая другие части. Маска записывается в двоичной форме, если ее бит равен единице, то соответствующий бит атрибутов инвертируется. Затем данные логически складываются с байтом атрибутов. "SWAP НОВЫЙ АТРИБУТ, СТАРЫЙ АТРИБУТ" — позволяет обменивать бай­ты атрибутов. При выполнении этой команды область атрибутов просматривается, если встречается "старый" байт, то он заменя­ется на "новый".

 

• КОМАНДА FADE

Команда "FADE БАЙТ" производит некоторые интересные эффекты.

Если в области атрибутов встречается байт, равный данному байту, то он не изменяется. В противном случае байт декрементируется.

Для примера наберите следующую программу:

10   FOR   А=0   TO   703

20 POKE 22528+A. PEEK A

30   NEXT   A

40   FADE 0

Три первых строки заполняют область атрибутов произволь­ными значениями. Четвертая вызывает команду FADE .

• КОМАНДА INVERT

"INVERT" — инвертирование экрана: тон становится фоном, а фон — тоном.

 

• КОМАНДА DEFG Специальная команда DEFG "БУКВА", число,....число

Определяет графические символы пользователя. Буква — от "А" до "U". 8 байт в двоичной форме определяют форму символа. Первое число — верхний ряд, последнее — нижний.

 

• КОМАНДЫ GET и PUT

М-В представляет возможность сохранения какой-либо части экрана в ОЗУ, а также возврат обратно с различных позиций и в различных масштабах. "GET 0, адрес хранения, X,Y,D,W" — для записи части экрана размером D*W знакомест в буфере ОЗУ. (X,Y) — позиция верхнего левого угла сохраняемого блока.

PUT и GET используют единую систему координат с ко­мандами ATTR и SCREEN$. Эти координаты абсолютны, т.е. не зависят от положения окна на экране (как например для PRINT AT). GET размещает экранную информацию в ОЗУ, а следом за ней располагаются байты атрибутов. Для резервирования спе­циальной области для хранения экрана используется команда CLEAR. Вычисление объема буфера может быть произведено по формуле: 9*W*D.

"PUT F, АДPEC,Y,X,D,W" — воссоздание экрана. X,Y,D,W — аналогично "GET ". F изменяет способ восстановления ин­формации на экране:

F=0 экран замещается данными из буфера;

F=1 наложение буфера на экран;

F=2 исключающее "или" буфера и экрана;

F=4 аналогично F=0, но атрибуты не изменяются;

F=5 — аналогично F=l, но атрибуты не изменяются;

F=6 аналогично Р=2, но атрибуты не изменяются.

 

• КОМАНДА SPUT

"SPUT АДРЕС, X,Y,B,C,W,D" — модификация команды "PUT ", позволяющая увеличивать изображение, выводимое из буфера (В,С — увеличение по X,Y соответственно).

Примечание: глубина блока D выражается в точках, т.е. для "SPUT " глубина в 8 раз больше, чем для "PUT ".

"SPUT " не меняет атрибутов.

 

УПРАВЛЕНИЕ ВЫПОЛНЕНИЕМ ПРОГРАММЫ

 

ПРОЦЕДУРЫ

М-В позволяет использовать процедуры, т.е. вызвать подп­рограммы по их имени — будто бы новая команда. Имя проце­дуры может сопровождаться несколькими выражениями — пара­метрами процедуры. Значения этих выражений будут присвоены соответствующим переменным при запуске процедуры.

Недостаток программы М-В — это то, что не могут быть ис­пользованы локальные переменные. Используя процедуры, мож­но свести программу к нескольким подзадачам. Каждой задаче соответствует своя процедура. Отладка каждой из них может проводиться отдельно. На завершающем этапе процедуры объе­диняются в единую программу. Выбрав осмысленные имена этим процедурам, очень легко проследить за выполнением программы.

Начало процедуры отмечается символом "", за которым сле­дует имя процедуры. Определение процедуры должно быть пер­вым утверждением в строке. Если эта процедура имеет парамет­ры, за именем следует символ подчеркивания "_" и параметры, отделенные друг от друга запятыми. Заканчивается она выра­жением "ENDPROC имя процедуры". После выполнения этой команды процесс выполнения основной программы возобновля­ется.

Вызов процедуры:

"Имя параметр, параметр,...".

М-В накладывает одно ограничение: имена не могут быть оди­наковыми в процедуре и в программе, так как они не являются локальными.

Пример процедуры:

90  DISPLAY A. А$

91   PAPER   A    :     INK   9

92   MODE  4    :    STIPPLE  6

93   PRINT   A$

94   ENDPROC  DISPLAY

Этот простой фрагмент, начинающийся со строки 90, опре­деляет процедуру с именем DISPLAY и параметрами — числовой переменной А и строковой — А$. Устанавливается желаемый цвет, выбирается размер букв и А$ выводится на экран.

Пример вызова процедуры:

DISPLAY 2, "MEGABASIC".

Процедуры могут быть вызваны только из программы и не используются в режиме непосредственного исполнения.

 

ЦИКЛЫ ТИПА REPEAT-UNTIL

Также вы можете создать цикл типа "REPEAT-UNTIL". "RE­PEAT" начинает цикл, "UNTIL N" заканчивает. Цикл продол­жается только при М!=О, иначе — выход из цикла. Глубина вло­жения циклов REPEAT-UNTIL — до 10.

 

СТЕК ПРОЦЕДУР И ЦИКЛОВ REPEAT-UNTIL

Эти циклы и процедуры используют специальный стек для хранения номера строки возврата и номера утверждения в стро­ке, т.е. адреса возврата. При входе в процедуру или выполнении команды REPEAT адрес возврата заносится в стек, что позволяет вернуться в головную программу из процедуры или в начало цикла при необходимости. При выходе из процедуры и при за­вершении цикла этот адрес удаляется из стека. Если стек пуст, но встречается еще один возврат из процедуры или цикла, на экран выдается сообщение об ошибке: "PROC STACK UNDER­FLOW". Объем стека — 10 значений, т.е. любая попытка занести туда 11-й адрес приведет к появлению сообщения об ошибке "PROC STACK OVERFLOW.

 

КОМАНДЫ POP, PUSH И PCLEAR

Для работы со стеком предназначены команды: "POP" — уда­ление значения из стека; "PUSH номер утверждения, номер строки возврата" — занесение в стек; "PCLEAR" — очистка стека. В случае использования процедур и циклов REPEAT-UNTIL в начале программы должна производиться очистка стека.  •КОМАНДА BRANCH

"BRANCH номер строки" — команда, заставляющая компь­ютер выполнять подпрограмму по указанному адресу по окон­чании каждой строки программы. Конец подпрограммы обозна­чается командой ENDPROC .

Если номер строки равен 0, то обращения к подпрограмме не Происходит.

 

КОМАНДА MTASK

М-В позволяет осуществлять простейший двухзадачный ре­жим. Команда "MTASK " позволяет выполнять одновременно два параллельных процесса. Для распределения в начале прог­раммы записываем два раза "MTASK номер строки". Эти два Номера определяют две точки входа в параллельные процессы.Соответствующий процесс запрещается, если один из номеров равен 0. В этом режиме необходимо сопровождать каждую ко­манду обращения к INTERFACE 1 двойным двоеточием в конце:

 




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Железо - обзор марок дискет.
Быстеренько! - самый быстрый алгоритм/процедура рисования линии.
Книга - Тайники ZX-Spectrum: Редактор.
Четыре килобайта - Смена главного редактора газеты.
Ликбез - ПОЛHОЕ ОПИСАHИЕ + ПОЛHЫЙ ДИЗАССЕМБЛЕP ПЗУ TR-DOS 5.04 (5.03)

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