Команда FONT_
МЕГАБЕЙСИК может оперировать с тремя наборами символов. Выбор набора выполняется с помощью команды FONT_ после которой записывают число, указывающее на выбранный набор:
FONT_0 - обычные символы компьютера ZX SPECTRUM;
FONT_1 - символы, подобные применяемым в компьютерах фирмы BBC, например в "MICRO ELECTRON";
FONT_2 - символы, подобные применяемым в компьютерах фирмы AMSTRAD, например в CFC 464.
Новые символьные наборы хранятся в ОЗУ: 1ый - с адреса 46000, а 2ой - с адреса 45000. Адрес произвольного символа из набора может быть найден по формуле S+8*(CODE А$-32), где S - начальный адрес символьного набора. Поскольку адреса Вам известны, Вы можете сами загружать туда какие Вам нужно наборы, предварительно приготовив их, например с помощью программы ARTSTUDIO.
Команды CHR$, VDU, DOWN.
Символьный набор ZX SPECTRUM содержит печатаемые и управляющие символы. Несколько новых управляющих символов входит в МЕГАБЕЙСИК.
CHR$1...CHR$4 - выбор режима очередного окна;
CHR$7 - установка символа в позицию курсора;
CHR$24...CHR$31 - выбор окна для выходной информации. CHR$24 - окно 0, CHR$31 -окно 7.
Новая команда VDU_ эквивалентна PRINT CHR$. При записи VDU_65,56 на экране появится "АВ". Строка символов может быть выведена в нижнюю часть экрана по команде DOWN_y^^$, где y и x - соответственно строка и столбец, на которые выводится строка символов, а$ - строка выводимых символов.
Команды SPRINT и PRINTER.
Командой SPRINT_x^,a,b,a$ можно вывести на экран символы любого размера. Здесь x,y - позиция первого символа на экране; a и b - коэффициенты увеличения символа в направлении x и y соответственно; a$ - строка выводимых символов. Если достигнут правый край экрана, то запись появляется с левой стороны.
Команда PRINTER, обеспечивает вывод на принтер. Если после этой команды будет записан 0, то вывод будет выполняться только на экран, любое другое число - на принтер. Адрес подпрограммы вывода на принтер, написанной в машинных кодах - 59934. Обратите внимание, что в МЕГАБЕЙСИКЕ нет команд CLEAR#, OPEN#2 и CLOSE#2.
ГРАФИКА.
Команды CHANGE и SWAP.
В МЕГАБЕЙСИК включены некоторые команды, которые позволяют пользователю непосредственно манипулировать с файлом атрибутов. Команда CHANGE_ позволяет изменить определенную часть байтов атрибутов. После этой команды записывают 2 числа, представляющие собой маску и данные. Маска определяет какой из битов каждого байта файла атрибутов должен быть изменен. Данные указывают в чем должно состоять это изменение:
CHANGE_1 - логическое NOT. Все 1 в каждом байте становятся 0, а 0 становятся 1;
CHANGE_2 - логическое AND между всеми байтами файла атрибутов и значением маски;
CHANGE_3 - логическое OR между байтом атрибутов и байтом данных.
Команда SWAP_ - позволяет поменять одни атрибуты на другие. После команды записываются два числа: первое число определяет значение новых атрибутов, а второе -значение тех атрибутов, которые должны измениться.
Команда FADE_
С помощью этой команды можно получить особые эффекты. Введите и запустите следующую короткую программу:
10 FOR A=0 TO 703 20 POKE 22528+A,PEEK A 30 NEXT A 40 FADE_0
Первые три строки этой программы обеспечивают заполнение файла атрибутов случайными числами, в 40-й строке по команде FADE_0 выполняется сравнение значения каждого байта файла атрибутов с числом, записанным после этой команды. Если эти значения равны, то байт остается неизменным, если же нет, то значение байта в файле атрибутов изменяется, пока не станет равным записанному числу.
Команда INVERT.
Это простая команда, по которой инвертируется весь экран, цвет INK изменяется на цвет PAPER, а цвет PAPER - на цвет INK.
Команда DEFG_.
Способ, позволяющий создавать в стандартном БЕЙСИКе новые символы графики пользователя (UDG) довольно громоздок. В МЕГАБЕЙСИКЕ же эта задача решается с помощью одной команды DEFG_, после которой записывается символ (любая из литер от a до u) a затем 8 чисел, разделенных запятыми. Символ определяет местонахождение UDG, а числа - его форму.
Команды GET_ и PUT_.
В МЕГАБЕЙСИКЕ можно запомнить часть изображения экрана в ОЗУ, и при необходимости вернуть это изображение на экран в любую позицию. Для передачи части экрана в ОЗУ используют команду
GET_0,a,y,x,d,w.
Здесь: a - адрес, начиная с которого хранится в ОЗУ изображение экрана, у,х -соответственно номер строки и номер столбца верхнего левого угла сохраняемого участка экрана, d,w - длина и ширина этого участка. Команды GET_ и PUT_ применяют такую же координатную систему, что и команды АТТR и SCREEN$. Их координаты абсолютны и не зависят от положения верхнего левого угла окна на экране. Число байтов, занимаемых изображением экрана в ОЗУ, определяется по формуле 64*w*d.
Команда PUT_ прямо противоположна по действию команде GET_. Записывается она в следующей форме: PUT_f,a,y,x,d,w. Здесь f определяет способ восстановления изображения экрана:
f=0 - изображение из ОЗУ переписывается в дисплейный файл без изменений;
f=1 - восстановление изображения осуществляется через логическое OR значений дисплейного файла и сохраняемого в 03V изображения;
f=2 - восстановление через логическое XOR;
f=4 - тоже, что и f=0, но вместо хранимых в памяти используются значения текущих атрибутов;
f=5 - тоже, что и f=1, но используются текущие атрибуты;
f=6 - тоже, что и f=2, но используются текущие атрибуты.
Переменные a,x,y,d,w аналогичны определяемым в команде GET.
Команда SPUT_.
Это вариация команды PUT_, позволяющая не только восстановить изображение экрана, но и увеличить его:
SPUT_a,x,y,b,c,w,d
Здесь: a - начальный адрес блока в ОЗУ; x,y - координаты верхнего левого угла экрана при восстановлении изображения: b,c - коэффициента увеличения по оси x и y соответственно. При этой команде всегда используются текущие атрибуты, а координатная система точно такая же, как и для команды SPRINT.
Продолжение в следующем выпуске.