1.3 КОМАНДЫ БЕЙСИКА, СВЯЗАННЫЕ С ГРАФИКОЙ.
1.3.1 Команды управления цветом и режимами печати.
CLS (CLEAR SCREEN).
~~~~~~~~~~~~~~~~~~~~~
Эта команда служит для очистки экрана. Она обнуляет содер-
жимое ячеек той области памяти, в которой хранится экранное
изображение (с 16384 по 22527). Таким образом, в результате ее
работы с экрана стирается пиксельное изображение. Несколько
по-другому она обходится с цветовыми атрибутами. В результате
этой команды цвет может не только остаться, но и даже изменить-
ся. Дело в том, что информацию о цвете включенных (INK) и
выключенных (PAPER) пикселов компьютер черпает из системной
переменной ATTR_P (23693 = 5C8DH), в которой установлены
"постоянные" значения этих атрибутов. (Бывают еще "временные"
значения, о которых мы скажем чуть ниже). Формат, в котором ат-
рибуты INK, PAPER, BRIGHT и FLASH хранятся в системной перемен-
ной ATTR_P соответствует Рис 8.
Очень часто команду CLS используют не для того, чтобы очис-
тить экран, а для того, чтобы установить на экране постоянные
цветовые атрибуты. Именно для этой цели команда CLS широко
применяется в первых строках БЕЙСИК-программы, например:
10 INK 6: PAPER 1:
20 CLS
..................
INK n
~~~~~
Этот оператор служит для задания цвета, которым на экране
изображаются символы или графические элементы - одним словом,
он определяет цвет включенных пикселов. После оператора INK
должен стоять параметр n, который может быть как целым числом,
так и выражением. Этот параметр задает цвет и может принимать
значения от 0 до 9. Для INK от 0 до 7 кодовые значения цветов
показаны в табл. 1 на стр.17. Но возможны еще INK 8 и INK 9.
Цвет INK 8 называют "транспарантным". В этом случае символ
на экране печатается с тем цветом, который существовал в данном
знакоместе до этой печати. Очень удобно, когда надо что-то
напечатать по готовому цветному изображению. Не надо для
каждого знакоместа перезадавать новый цвет.
Цвет INK 9 называют "контрастным". В этом случае символ на
экране печатается с таким цветом, который наилучшим образом
контрастирует с тем цветом PAPER, который имеется в данном
знакоместе в данный момент. Это тоже очень удобно при печати по
готовому изображению.
Если посмотреть на рис. 8, то видно, что для задания цвета
INK используются три младших бита, с помощью которых можно
задать цвета от 0 до 7. Остается вопросом как можно хранить
цвета INK 8 и INK 9.
Для хранения постоянных "транспарантных" атрибутов, служит
системная переменная MASK_P (23694 = 5C8EH). В ней должны быть
включены те биты, которые соответствуют "транспарантным"
атрибутам. Так, для INK 8 должны включиться биты 0...2 (три
младших бита).
Для того, чтобы компьютер знал о том, что Вы избрали
постоянный цвет INK "контрастным", служит другая системная
переменная - P_FLAG (23697 = 5C91H). В ней для этого выделен
5-ый бит, который включается при подаче команды INK 9.
Оператор INK может применяться двумя способами. Во-первых,
он может быть самостоятельной командой и в этом случае оказыва-
ет длительное действие - не только на ближайшую команду печати
или рисования, но и на все последующие, пока не будет изменен.
По такой команде изменяется содержимое упомянутой выше систем-
ной переменной ATTR_P (23693 = 5C8DH), определяющей установку
"постоянных" цветовых атрибутов.
Во-вторых, оператор INK может быть не самостоятельной
командой, а частью команды PRINT. В этом случае INK называют не
командой, а "квалификатором оператора PRINT". Здесь он задает
не "постоянные" значения цветового атрибута, а только
"временные", которые действуют только для данного оператора
PRINT и все. "Временные" значения хранятся в другой системной
переменной - ATTR_T (23695 = 5C8FH), но формат имеют тот же
(см. рис. 8). INK n в качестве квалификатора PRINT требует,
чтобы после него обязательно стояла точка с запятой.
Сравните:
10 INK 7: PRINT "ZX-Spectrum"
и
10 PRINT INK 7; "ZX-Spectrum"
Определять "временные" атрибуты можно не только с парамет-
ром n от 0 до 7. Здесь также возможно задание цвета "транспа-
рантным" (INK 8) и "контрастным" (INK 9).
Для хранения временных "транспарантных" атрибутов, служит
системная переменная MASK_T (23696 = 5C90H). В ней должны быть
включены те биты, которые соответствуют "транспарантным" атри-
бутам. Так, для INK 8 должны включиться биты 0...2.
Для того, чтобы компьютер знал о том, что Вы избрали
временный цвет INK "контрастным", в системной переменной
P_FLAG (23697 = 5C91H) выделен 4-ый бит, который включается,
когда в операторе PRINT встречен квалификатор INK 9; .
PAPER n
~~~~~~~
Оператор PAPER определяет цвет выключенных пикселов экра-
на. За ним также идет параметр n (0...9). Почти все сказанное
выше об операторе INK относится и к оператору PAPER. Он тоже
может быть самостоятельной командой и задавать "постоянные"
значения, действующие до тех пор, пока не будут изменены, а
может быть и квалификатором оператора PRINT и задавать времен-
ные значения, действующие только на этот оператор PRINT.
10 PAPER 2: CLS - самостоятельная команда.
20 PRINT INK 6; PAPER 1; "ZX-SPECTRUM" - квалификатор.
Один оператор PRINT может иметь сколько угодно квалифика-
торов - они должны отделяться друг от друга точкой с запятой.
Естественные отличия PAPER от INK выражаются в том, что
информация об их установках хранится в системных переменных в
разных битах. Так, для цвета PAPER они таковы:
а) постоянные значения:
- параметр цвета от 0 до 7 - в битах 3...5 системной
переменной ATTR_P (23693 = 5C8DH);
- для "транспарантного" цвета PAPER 8 должны быть
включены биты 3...5 системной переменной
MASK_P (23694 = 5C8EH);
- для цвета PAPER, контрастного к тому цвету INK,
который уже имеется в данном знакоместе, т. е. для
команды PAPER 9 включается бит 7 флаговой системной
переменной P_FLAG (23697 = 5C91H).
б) временные значения:
- параметр цвета от 0 до 7 - в битах 3...5 системной
переменной ATTR_T (23695 = 5C8FH);
- для PAPER 8 должны быть включены биты 3...5 системной
переменной MASK_T (23696 = 5C90H);
- значению PAPER 9 соответствует включенный бит 6
системной переменной P-FLAG (23697 = 5C91H).
BRIGHT n
~~~~~~~~
Этот оператор задает яркость при печати в знакоместе.
Параметр n может принимать значения 0,1 и 8.
BRIGHT 0 - яркость выключена.
BRIGHT 1 - яркость включена.
BRIGHT 8 - атрибут яркости при печати или рисовании в
данном знакоместе устанавливается таким же,
каким он был до этого.
Он также, как и PAPER и INK может быть самостоятельной
командой, задающей постоянное значение атрибуту яркости, а
может быть и квалификатором оператора PRINT и задавать
временное значение.
а) постоянное значение:
- параметр яркости 0 или 1 - устанавливается в 6-ом
бите системной переменной ATTR_P (23693 = 5C8DH);
- для "транспарантного" значения BRIGHT 8 должен быть
включен биты 6 системной переменной
MASK_P (23694 = 5C8EH);
б) временные значения:
- параметр яркости 0 или 1 - хранится в 6-ом бите
системной переменной ATTR_T (23695 = 5C8FH);
- для "транспарантного" значения BRIGHT 8 должен быть
включен бит 6 системной переменной
MASK_T (23696 = 5C90H);
FLASH n
~~~~~~~
Этот оператор задает режим мигания пикселов в знакоместе.
Включенные пикселы выключаются (принимают цвет PAPER), а выклю-
ченные включаются (принимают цвет INK) и так далее. Параметр
n, как и для оператора BRIGHT может принимать значения 0,1 и 8.
FLASH 0 - режим мигания отключен.
FLASH 1 - режим мигания включен.
FLASH 8 - режим мигания при печати или рисовании в
данном знакоместе устанавливается таким же,
каким он был до этого.
Оператор FLASH n может образовывать самостоятельную
команду или квалификатор оператора PRINT:
а) постоянное значение:
- режим мигания 0 или 1 - устанавливается в 7-ом
бите системной переменной ATTR_P (23693 = 5C8DH);
- для "транспарантного" значения FLASH 8 должен быть
включен бит 7 системной переменной
MASK_P (23694 = 5C8EH);
б) временные значения:
- режим мигания 0 или 1 - хранится в 7-ом бите
системной переменной ATTR_T (23695 = 5C8FH);
- для "транспарантного" значения FLASH 8 должен быть
включен бит 7 системной переменной
MASK_T (23696 = 5C90H);
INVERSE n
~~~~~~~~~~
Оператор INVERSE задает режим печати на экране "с инвер-
сией" символов или без нее. В отличие от INK, PAPER, BRIGHT и
FLASH этот оператор не имеет соответствующего цветового атрибу-
та. То есть, в памяти компьютера не запоминается, какому знако-
месту какой режим INVERSE соответствует. Одним словом, это
только режим печати и не более того.
INVERSE 0 - режим выключен.
INVERSE 1 - режим включен.
При печати "с инверсией" включенные пикселы изображаются
выключенными, т.е. имеют цвет PAPER и наоборот - выключенные
изображаются включенными и имеют цвет INK.
Также, как и прочие рассмотренные команды управления
цветом, INVERSE может иметь постоянное действие (команда
INVERSE n) или временное действие (квалификатор INVERSE n;
оператора PRINT).
Информация об установленном режиме INVERSE хранится во
флаговой системной переменной P_FLAG (23697 = 5C91H). Бит 2
этой переменной определяет временную установку режима (0 или
1), а бит 3 - постоянную установку.
OVER n
~~~~~~
Оператор OVER задает режим печати на экране "с наложением"
или без него.
OVER 0 - режим выключен.
OVER 1 - режим включен.
Таблица 2
--------------T---------------------T--------------------¬
¦ ¦ OR ¦ XOR ¦
+-------------+-----T---T-----T-----+----T-----T----T----+
¦ Бит 1 ¦ 0 ¦ 1 ¦ 0 ¦ 1 ¦ 0 ¦ 1 ¦ 0 ¦ 1 ¦
¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
¦ Бит 2 ¦ 0 ¦ 0 ¦ 1 ¦ 1 ¦ 0 ¦ 0 ¦ 1 ¦ 1 ¦
¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
¦ Результат ¦ 0 ¦ 1 ¦ 1 ¦ 1 ¦ 0 ¦ 1 ¦ 1 ¦ 0 ¦
L-------------+-----+---+-----+-----+----+-----+----+-----
Наложение осуществляется по логическому принципу "ИСКЛЮЧА-
ЮЩЕГО ИЛИ" - обозначется XOR. Если оба соответствующих пиксела
были выключены, то результирующий пиксел - выключен. если один
из составляющих пикселов был включен, то результирующий тоже
включен, но если оба пиксела были включены, то результирующий
выключен. В этом заключается отличие действия логической
команды XOR от команды OR. Сравните их действие по таблице 2.
Таким образом, если Вы в режиме OVER 1 напечатаете некий
символ поверх самого же себя, то получите пробел. В этом,
кстати, заключается довольно эффективный прием стирания. Можно,
конечно, стереть изображение в знакоместе напечатав пробел, но
это не всегда возможно. Например, Вам надо перемещать на экране
Вашего героя по какому-то фону. Перемещение состоит в последо-
вательности следующих действий:
- печать в текущей координате;
- стирание в текущей координате;
- печать в соседней координате;
- и так далее.
Первую печать Вашего героя поверх фона Вы сделаете без
проблем, включив режим OVER 1, а вот стирание с помощью пробела
здесь не пройдет, т.к. "погибнет" и нижележащее (фоновое)
изображение. На помощь приходит повторная печать того же
изображения в том же месте в режиме OVER 1. Теперь наложенное
изображение исчезнет, а фоновое (исходное) останется без
изменений.
Как и INVERSE, этот оператор не имеет соответствующего
цветового атрибута. То есть, в памяти компьютера не запоминает-
ся, какому знакоместу какой режим OVER соответствует. Это тоже
только режим печати. Как и INVERSE, оператор OVER n может быть
самостоятельной командой, а может использоваться как квалифи-
катор оператора PRINT.
Информация об установленном режиме OVER хранится тоже во
флаговой системной переменной P-FLAG (23697 = 5C91H). В таблице
3 приведена побитовая карта этой системной переменной:
Раскладка системной переменной P-FLAG.
Таблица 3.
---------T--------------- ----------T-----------------¬
¦ Бит ¦ Назначение ¦ Характер ¦
+--------+--------------------------+-----------------+
¦ 0 ¦ Указатель режима OVER ¦ Временный ¦
¦ 1 ¦ Указатель режима OVER ¦ Постоянный ¦
¦ 2 ¦ Указатель режима INVERSE ¦ Временный ¦
¦ 3 ¦ Указатель режима INVERSE ¦ Постоянный ¦
¦ 4 ¦ Указатель режима INK 9 ¦ Временный ¦
¦ 5 ¦ Указатель режима INK 9 ¦ Постоянный ¦
¦ 6 ¦ Указатель режима PAPER 9 ¦ Временный ¦
¦ 7 ¦ Указатель режима PAPER 9 ¦ Постоянный ¦
L--------+--------------------------+------------------
BORDER n
~~~~~~~~~
Команда BORDER n определяет цвет, в который окрашивается
внешняя рамка (бордюр) экрана. Этих цветов может быть 8. У этой
команды есть две характерных особенности, о которых необходимо
помнить.
Во-первых, как ни странно, к бордюру относятся и нижние 2
строки экрана ("системное окно", о котором мы говорили выше в
разделе 1.2.1), поэтому плохо рассчитанная команда BORDER может
подпортить то, как выглядят эти 2 строки.
Во-вторых, окрашивание бордюра экрана производится не так,
как окрашивание самого экрана. Если для экрана параметры цвета
по каждому знакоместу хранятся в соответствующих ячейках памяти
и процедуры ПЗУ, обслуживающие экран, черпают информацию отту-
да, то бордюр исполняется не процедурами ПЗУ, а аппаратными
средствами. С точки зрения архитектуры компьютера экран явля-
ется одним внешним устройством, а бордюр - как бы совсем дру-
гим, которое подключено через внешний порт 254 (FE). Попод-
робнее мы расскажем об этом в главе 3.
Поэтому окрасить бордюр из БЕЙСИКа можно не только коман-
дой BORDER, но и выдав байт на внешний порт с помощью команды
OUT, например:
OUT 254,1
С другой сторны, между командами BORDER n и OUT 254,n есть
и существенная разница. Цвет бордюра может иметь как постоян-
ный, так и кратковременный характер. Команда BORDER задает цвет
"постоянным". Он запоминается в системной переменной BORDCR
(23624 = 5C48H). Команда же OUT 254,n имеет очень кратковремен-
ный характер. Фактически она срабатывает только по фронту сиг-
нала, пошедшего на внешний порт, после чего цвет опять восста-
новится в соответствии с BORDCR. Так что изменить цвет бордюра
командой OUT, не изменив системную переменную BORDCR не удаст-
ся. О том, как используется способность бордюра менять свой
цвет по фронту сигнала, Вы можете судить по тем цветным поло-
сам, которые Вы видите на экране в момент загрузки-выгрузки
программ. Разбору управления цветными полосами на бордюре мы
посвятили раздел в нашей более ранней книге "Практикум по
программированию в машинных кодах".
TAB n
~~~~~~
Оператор TAB n (n=0...31) в качестве самостоятельной ко-
манды не применяется. Он служит в качестве квалификатора опера-
тора PRINT и определяет, с какой позиции в текущей строке надо
выполнить печать.
Попробуйте дать прямую команду:
PRINT TAB 10; "ZX-Spectrum".
Можете заменить параметр 10 например на 20.
AT y,x
~~~~~~
Как и квалификатор TAB, AT y,x самостоятельно без опера-
тора PRINT не применяется, но является более мощным и исполь-
зуется значительно чаще. Он задает координату позиции печати
(знакоместа) на экране. Параметр y задает координату по верти-
кали (номер экранного ряда, в котором надо выполнить печать) от
0 до 21. Параметр x задает координату по горизонтали (номер
экран- ного столбца) от 0 до 31.
Пример: PRINT INK 6; PAPER 1; AT 10,12; "ZX-Spectrum" .
В качестве параметров y и x могут стоять не обязательно
числа, но и арифметические, логические или алгебраические
выражения, если они дают целочисленный результат, не выходящий
за допустимые пределы по x и y.
Иногда в программах бывает нужно установить позицию печати
в какую-то точку, но саму печать при этом пока делать не требу-
ется. Это можно сделать с помощью оператора AT, дав команду на-
печатать пустую строку, например:
PRINT AT (10,12); ""
Прочие квалификаторы оператора PRINT.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Рассматривая команды и квалификаторы, управляющие цветом и
координатами того, что воспроизводится на экране, мы должны
также сказать еще о трех квалификаторах. Это "," (запятая), ";"
(точка с запятой) и "'" (апостроф).
В отличие от прочих ранее рассмотренных квалификаторов
типа INK, PAPER, AT... и др. эти квалификаторы не надо отделять
друг от друга, поскольку они сами являются разделителями.
Рассмотрим их по-порядку.
"Точка с запятой".
~~~~~~~~~~~~~~~~~~
Когда в операторе PRINT встречается этот символ-раздели-
тель, это означает указание компьютеру выполнить печать в
ближайшем справа знакоместе от предыдущей позиции печати, то
есть печатать в сплошную строку. Только если текущая строка
закончилась, компьютер перейдет к печати на следующей строке.
Этот квалификатор встречается наиболее часто. Попробуйте:
PRINT AT 10,14; "1"; "2"; "3"; "4"
"Запятая"
~~~~~~~~~
Мысленно разделите экран по вертикали на две равные части.
Представьте себе, что каждый ряд на экране состоит из двух
половин - левой и правой (по шестнадцать знакомест в каждой).
Если в операторе PRINT компьютер встретит этот квалифика-
тор, то очередную печать он начнет от начала правой половины
экранного ряда, если предшествующая печать была на левой поло-
вине. Если же печать уже была на правой половине, то он перей-
дет на новую строку и начнет печать с ее начала. Таким образом,
действие этого квалификатора эквивалентно TAB 16. Попробуйте:
PRINT AT 10,14; "1", "2", "3", "4"
"Апостроф"
~~~~~~~~~~
Это самый простой из всех квалификаторов - он дает коман-
ду начать печать с новой строки.
PRINT AT 10,14; "1" ' "2" ' "3" ' "4"
1.3.2 Команды печати графических примитивов.
Из стандартного БЕЙСИКа компьютера "ZX-Spectrum" Вам до-
ступны четыре типа графических примитивов: точка, линия, дуга,
окружность.
PLOT x,y
~~~~~~~~~
Команда служит для печати точки на экране в координатах y
(по вертикали) и x (по горизонтали). 0 < x < 255 ; 0 < y < 175.
Мы уже говорили о том, что когда координаты заданы не в знако-
местах, а в пикселах, то отсчет по вертикали идет снизу вверх,
причем нижние 2 ряда, являющиеся "системным окном" из системы
координат выпадают.
С оператором PLOT могут быть использованы и квалификаторы
оператора PRINT, такие как INK, PAPER, OVER и т.п. Интересно
отметить, что печать точки по точке при включенном режиме
OVER 1 приводит к ее стиранию. Например:
10 PLOT 120, 120
15 PAUSE 10
20 PLOT OVER 1; 120,120
30 PAUSE 10
40 GO TO 10
Команда PLOT имеет одно побочное действие. После ее испол-
нения в системную переменную COORDS (23677=5C7DH) заносятся
координаты последней напечатанной точки.
DRAW x,y или DRAW x,y,z
~~~~~~~~~~~~~~~~~~~~~~~~
Команда служит для рисования на экране отрезков прямых или
дуг окружностей и имеет два формата. DRAW x, y - служит для ри-
сования отрезков прямых. DRAW x,y,z - для рисования дуг окруж-
ностей. И та и другая команды проводят линию от той точки,
которая была напечатана последней и координаты которой хранятся
в системной переменной COORDS (23677=5C7DH) к новой точке,
которая отстоит от исходной на x пикселов по горизонтали и на y
пикселов по вертикали. Таким образом, параметры x и y определя-
ют не координаты конца отрезка (дуги) на экране, а "смещение"
конца отрезка (дуги) от его начала и могут быть отрицательными.
Параметр z в команде для рисования дуг окружностей задает
фактор кривизны дуги, а точнее говоря угол дуги, измеренный в
радианах. Чем больше этот угол, тем больше кривизна дуги. Если
он равен нулю, то фактически дуга имеет нулевую кривизну и
превращается в прямую линию.
Не очень удобно задавать угол дуги в радианах. В градусах
работать все-таки привычнее, поэтому обычно пользуются тем, что
"Спектрум" понимает, что такое число "пи" и вместо параметра z
подставляют выражение a*PI/180. Получается:
DRAW x,y,a*PI/180
Здесь параметр "a" можно задавать в градусах.
Обратите также внимание на ряд следующих обстоятельств:
1. Параметры x и y могут быть выражены как числом, так и
числовыми или алгебраическими выражениями. Важно только, чтобы
после расчета этих выражений результат получался бы целочислен-
ным и чтобы при рисовании отрезка (дуги) не происходил бы выход
за пределы экранной плоскости.
2. Для работы команды DRAW совершенно неважно в результате
какого действия была получена последняя ранее напечатанная точ-
ка - то ли в результате команды PLOT, то ли в результате другой
команды DRAW, то ли в результате команды CIRCLE, которую рас-
смотрим чуть ниже. Для работы DRAW важно только то, что содер-
жится в системной переменной COORDS. Можете даже и сами устано-
вить в ней то, что Вам нужно, с помощью команды POKE.
3. Команда DRAW, рисуя линию (дугу), не включает в нее
исходную точку, взятую из COORDS. Предполагается, что она уже
и так нарисована. При рисовании это действительно не очень
важно, но при стирании на это нужно обратить внимание.
4. Закончив работу, команда DRAW оставляет в системной
переменной COORDS координаты последней точки. Новая команда
DRAW будет работать от той точки, в которой закончила работать
предыдущая.
5. Команда DRAW, как и команда PLOT, допускает использова-
ние внутри себя квалификаторов оператора PRINT - INK, PAPER,
FLASH, BRIGHT, OVER, INVERSE.
CIRCLE x,y,r
~~~~~~~~~~~~
По этой команде на экране изображается окружность с коор-
динатами центра x,y, имеющая радиус r. Если радиус равен нулю,
то окружность вырождается в обыкновенную точку. Все замечания,
сделанные к команде DRAW, могут быть отнесены и к этой команде.
1.3.3 Команды для сканирования экрана.
При работе с графикой иногда необходимо не только что-то
напечатать, но и из программы определить что же напечатано в
том или ином знакоместе или в той или иной координате. Факти-
чески это задача о сканировании экрана. В БЕЙСИКе Вы имеете ряд
возможностей, с помощью которых можно кое-что сделать, хотя
надо заметить, что они достаточно редко применяются на практи-
ке. Обычно, когда речь идет о необходимости сканирования экра-
на, мы имеем дело с развитой системой или с достаточно серьезно
подготовленной программой. В этих случаях редко используют
БЕЙСИК, а применяют вместо него машинный код. Тем не менее,
такие возможности в БЕЙСИКе есть и наш обзор был бы неполным,
если бы мы на них не указали.
Итак, для сканирования экрана из БЕЙСИКа в Вашем распоря-
жении есть три функции - POINT, ATTR и SCREEN$. Все они требуют
при вызове указания координат и по окончании работы выдают
результат, который может быть проанализирован.
POINT x,y
~~~~~~~~~~
Эта очень простая функция проверяет включен или нет пик-
сел с координатами x,y (06 THEN GO TO 20
40 PRINT AT 0,0; A$
50 FOR s=0 TO LEN A$*8
60 FOR t=175 TO 168 STEP -1
70 IF POINT (s,t)=1 THEN GO SUB 200
80 LET y=y+e
90 NEXT t
100 LET y=0: LET x=x+e:
110 NEXT s
120 LET f=90: LET e=2: LET x=0: GO TO 50
200 PLOT x,f -(y+e): DRAW 0,e
210 PLOT x,f-y: DRAW e,0
220 PLOT x+e,f-y: DRAW 0,e
230 PLOT x+e,f-(y+e): DRAW -e,0
240 LET e=e+0.5
250 RETURN
По запросу впечатайте слово длиной до 10 символов.
10 LET y=0
20 BORDER 0
30 PAPER 0
40 INK 7
50 CLS
60 PRINT "WORD?"
70 INPUT A$
80 CLS
90 IF LEN A$ > 10 THEN GO TO 60
100 PRINT INK 0; AT 0,0; A$
110 PLOT 0,75
120 DRAW 255,0
130 LET d=LEN A$*8
140 LET x= 127-(d*3/2)
150 FOR s=0 TO d*8
160 FOR t= 168 TO 175
170 IF POINT (s,t)=1 THEN GO SUB 300
180 LET y=y+5
190 NEXT t
200 LET y=0
210 LET x=x+3
220 NEXT s
230 STOP
300 FOR m=1 TO 1 STEP -1
310 CIRCLE x,75+y,m
320 CIRCLE x, 75-y,m
330 NEXT m
340 RETURN
ATTR (Y,X)
~~~~~~~~~~~
Эта функция позволит Вам определить, какие цветовые атри-
буты установлены в интересующем Вас знакоместе с координатами
Y,X (0