Инструменты пользователя

Инструменты сайта


msx:basic_dialogue_programming_language:files:diff_007

Глава VII

@@ -1,14 +1,11 @@
-c1E
+\/d
 ГЛАВА  VII.  ДОПОЛНИТЕЛЬНЫЕ  ВОЗМОЖНОСТИ  ЯЗЫКА  MSX-BASIC
-
-
+\/d-
 
                        VII.1.  РАБОТА С КЛАВИАТУРОЙ
 
-
   VII.1.1.   Н е с т а н д а р т н ы й   в в о д   с  к л а в и а т у р ы
 
-
    Как правило, ввод данных с клавиатуры пользователь осуществляет с помо-
 щью оператора INPUT. При этом нужно нажать как минимум две  клавиши: одну
 для ввода символа и вторую для помещения его в память. При этом  знак  во-
@@ -22,7 +19,6 @@
 в момент нажатия на какую-либо клавишу возвращает значение, равное  вводи-
 мому по ней символу. Если клавиша не нажата, то  значением функции INKEY$
 является пустая строка ("").
-
    П р и м е р  1.
    ──────────────
    10 W$=INKEY$:IF W$="" THEN 10 'Если клавиша не нажата, то компьютер пе-
@@ -40,7 +36,6 @@
    █     ◀── нажата клавиша "STOP"
    Break in 10  ◀──  нажаты клавиши "CTRL"+"STOP"
    Ok
-
    При выполнении программы клавиатура постоянно опрашивается  (сканирует-
 ся), и полученные коды записываются в область памяти, называемую  б у ф е-
 р о м   клавиатуры. Функция INKEY$, как Вы только что  увидели, извлекает
@@ -55,25 +50,23 @@
    С помощью функции INKEY$ можно "прочитать" нажатие только  тех  клавиш,
 которым соответствует код какого-либо символа. Это делается так:
                        IF INKEY$="с и м в о л" THEN ...
-   Далее, для обнаружения нажатия какой-либо из клавиш:
+   Для обнаружения нажатия какой-либо из клавиш:
     ┌──────────────────────────────────────────────────────────────┐
     │  "ESC", "TAB", "RETURN", "SELECT", "HOME/CLS", "INS","DEL",  │
     │          клавиши управления курсором, "CTRL+буква"           │
     └──────────────────────────────────────────────────────────────┘
 используйте оператор:
-                          IF INKEY$=CHR$(K) THEN ... 
+                         IF INKEY$=CHR$(K) THEN ...    ,
 где  К - код клавиши, нажатия которой ожидается.
    К сожалению, клавиши
          ┌─────────────────────────────────────────────────────┐
          │   "CAPS", "SHIFT", "GRAPH", "CTRL", "РУС", "STOP"   │
          └─────────────────────────────────────────────────────┘
-"нечитаемы" операторами INPUT$ или INKEY$. Тем не менее, для чтения  этих
+"нечитаемы" операторами INPUT$ или INKEY$. Тем не менее  для чтения  этих
 клавиш достаточно прочесть буфер NEWKEY (11 байтов) по адресу &HFBE5 (см.
 раздел X.9.1).
-
    П р и м е р  2. Пример  программы,  останавливаемой  нажатием  клавиши
    ──────────────  "SHIFT":       10 Z=PEEK(&HFBEB):IF Z<>254 THEN 10
-
    П р и м е р  3. Вспомним, что функция ASC(α), где α - строковое выраже-
    ──────────────  ние, возвращает десятичный код ASCII  первого  символа
 значения выражения α. Используя функцию INKEY$, можно получать десятичные
@@ -90,7 +83,6 @@
     32  ◀── нажата клавиша "пробел"    Break in 10◀── нажаты клавиши"CTRL"
    █    ◀── нажата клавиша "STOP"      Ok              +"STOP"
     49  ◀── нажата клавиша "SHIFT"+"1"
-
    Таким образом,  функциональные клавиши имеют ту особенность,  что нажа-
 тие любой из них вызывает вывод кодов  нескольких символов,  составляющих
 ее текст.
@@ -109,7 +101,6 @@
   │   Запомните, что только нажатие клавиш "CTRL"+"STOP" прерывает   │
   │                    действие данной функции!                      │
   └──────────────────────────────────────────────────────────────────┘
-
    П р и м е р  4.    10 W$=INPUT$(2):?W$:GOTO 10
    ──────────────     run
                       █
@@ -118,7 +109,6 @@
                       █
                       Break in 10  ◀── нажаты клавиши "CTRL"+"STOP"
                       Ok
-
    Этот оператор неудобно использовать  для ввода  д л и н н ы х  символь-
 ных строк с клавиатуры, ибо Вы можете потерять контроль над  вводом  (вве-
 денные символы не видны на экране до тех пор, пока не введен последний из
@@ -140,11 +130,9 @@
       t  │    серии MSX-1            █
          │                            97 ◀── нажата клавиша "а" 
       █    и так далее...            █       и так далее...
-
    Таким образом, функцию INPUT$() можно также использовать для получения
 десятичных кодов ASCII символов, а также десятичных кодов ASCII некоторых
 управляющих и функциональных клавиш.
-
    П р и м е р  6.   П а р о л ь !
    ──────────────
    40 CODE$="Секрет":COUNT=0:PRINT"Имя":INPUT N$
@@ -154,11 +142,10 @@
    130 COUNT=COUNT+1
    140 IF COUNT<3 THEN GOTO 70 ELSE PRINT"Проход закрыт":END
    150 PRINT:PRINT N$:PRINT"Проходи, приятель":END
-
    Результат работы программной строки
                        10 A$=INKEY$:IF A$="" THEN 10
 может показаться эквивалентным результату работы команды
-                               A$=INPUT$(1)                            !
+                               A$=INPUT$(1)    .
    Однако между ними есть  различиe: нажатие  клавиши  "STOP" задерживает
 программу в цикле с оператором INKEY$, тогда как во время  ожидания  нажа-
 тия клавиши, "организованного" оператором INPUT$, клавиша "STOP" временно
@@ -167,11 +154,8 @@
 │ Это единственный способ временно отключить клавишу "STOP" в MSX-BASIC!│
 └───────────────────────────────────────────────────────────────────────┘ 
 
-
-
          VII.1.2.    Ф у н к ц и о н а л ь н ы е  к л а в и ш и 
 
-
    При нажатии клавиши "F1" на дисплее компьютера серии  MSX-1 появляется
 слово "print" (как если бы оно набиралось на клавиатуре посимвольно). Ана-
 логичным образом действует любая из остальных  девяти  функциональных кла-
@@ -184,7 +168,7 @@
 что при нажатии соответствующей клавиши генерируется заранее заданная  це-
 почка символов. Этим средством является оператор
                            ┌──────────────────┐
-                           │      KEY n,T     │
+                           │      KEY n,T     │ ,
                            └──────────────────┘
 где:  KEY ("key"-"клавиша") - служебное слово;
       n - арифметическое выражение, целая часть значения которого  задает
@@ -211,11 +195,9 @@
       ···        │   MSX-1       4) 10 X$="for x=1 to 15'заголовок":KEY5,
       _comterm   │                  X$:KEY LIST
       Ok
-
    5) KEY 2,"LIST"+CHR$(13) 'При нажатии клавиши F2 в ы п о л н я е т с я
 команда LIST. Заметим, что символ CHR$(13) вызывает ввод команды (операто-
-ра) так же, как и нажатие клавиши "RETURN"!
-
+ра), так же как и нажатие клавиши "RETURN"!
    Отметим, что при включении компьютера серии MSX-1 значения функциональ-
 ных клавиш устанавливаются по умолчанию следующим образом:
    print          auto          goto          list            run
@@ -236,22 +218,17 @@
    Предположим, что Вы хотите ввести  большое  количество  двоичных чисел.
 Это часто бывает необходимо при  определении образа спрайта. Чтобы  облег-
 чить себе работу, определите одну из функциональных клавиш так:
-                       KEY1,"DATA 00000000"+CHR$(13)
+                       KEY1,"DATA 00000000"+CHR$(13)   ,
 а затем введите команду AUTO. Нажмите клавишу "F1" несколько раз для полу-
 чения начальных "шаблонов" операторов DATA  с последовательными  номерами
 строк. Вам остается только отредактировать те строки, в которых  необходи-
 мо заменить нули на единицы в нужных местах!
 
-
-
                          VII.1.3   Д ж о й с т и к 
 
-
-                   Человеческая изобретательность ни в чем не проявляется
-                   так, как в играх.
-                                         Из письма Г.В.Лейбница Б.Паскалю
-
-
+                               Человеческая изобретательность ни в чем не
+                               проявляется так, как в играх.
+                                           Из письма Г.Лейбница Б.Паскалю
    В комплекте MSX-компьютера имеется два периферийных устройства для вво-
 да информации,  которые называются  д ж о й с т и к а м и  ("joy  stick" -
 "палочка радости").
@@ -278,7 +255,6 @@
 где:  STICK ("рукоятка")- служебное слово;
       α - арифметическое выражение, целая часть значения которого  принад-
 лежит отрезку [0,2] и задает номер джойстика.
-
           1             Эта функция возвращает целое число, принадлежащее
       8   ▲   2     отрезку [0,8] и отмечающее направление перемещения ру-
         \ │ /       коятки джойстика, номер которого определяется значени-
@@ -286,7 +262,6 @@
         / │ \       значения функции  STICK() (когда джойстик находится в
       6   ▼   4     нейтральном положении, функция возвращает значение 0).
           5
-
    Говорят, что  функция  STICK(0) "читает" клавиши  управления  курсором,
 функция  STICK(1) "читает джойстик"  в первом  разъеме,  функция  STICK(2)
 "читает джойстик"во втором разъеме.
@@ -300,7 +275,6 @@
                                       ▲     ▼
 X=8, если нажаты одновременно клавиши │ и ◀──;
 X=0, если не нажата ни одна из этих клавиш.
-
    Например, если Вы запустите программу
                  10 D=STICK(0):LOCATE 18,11:PRINT D:GOTO 10
 и будете нажимать клавиши управления курсором, то  будете получать  значе-
@@ -313,7 +287,7 @@
    Функция STRIG() определяет, нажата или нет нужная Вам  к н о п к а .
    Формат функции STRIG() следующий:
                              ┌─────────────┐
-                             │   STRIG(β)  │
+                             │   STRIG(β)  │   ,
                              └─────────────┘
 где:  STRIG("Stick TRIGer"-"кнопка джойстика")- служебное слово:
       β - арифметическое выражение,  целая часть которого  принадлежит от-
@@ -328,19 +302,17 @@
    5) функция STRIG(4) читает состояние кнопки 2 джойстика в разъеме 2.
    Функция STRIG()  возвращает значение либо ноль, если  кнопка не нажата,
 либо -1 , если кнопка нажата.
-
    П р и м е р  1.           IF STRIG(0) THEN BEEP
    ──────────────  Оператор вызывает звуковой сигнал (BEEP),  если кнопка
 джойстика нажата (т.е. STRIG(0) имеет значение -1).
-   При использовании этой функции, например, в процессе компьютерной игры,
-когда требуется "вести стрельбу", функция STRIG(0) ежесекундно  задейству-
-ется много раз. Для этих частых проверок значений существует  специальный
-термин  "о п р о с".
+   При использовании функции STRIG(0), например, в процессе  компьютерной
+игры (скоростная стрельба по цели), она  ежесекундно  задействуется много
+раз. Для этих частых проверок значений существует  специальный термин "оп-
+рос".
    Метод опроса иллюстрируется примером 2. Программа начинается с вопроса
 пользователю о том, располагает ли он джойстиком или работает за клавиату-
 рой. Далее запрашиваются состояния пусковых кнопок,  и  в зависимости  от
 того, какая из них нажата, выбирается джойстик.
-
    П р и м е р  2 [76].
    ───────────────────
    40 CLS:WIDTH 40
@@ -355,15 +327,13 @@
    250 IF F=1 OR F=3 THEN PRINT "Джойстик А";
    260 IF F=2 OR F=4 THEN PRINT "Джойстик B";
    270 PRINT " в действии":END
-
     В ожидании нажатия клавиши "пробел" опрос будет выполняться постоянно,
 что делает возможной  н е м е д л е н н у ю  реакцию  программы. Напомним
 Вам, что нажатие клавиши "пробел" может также проверяться с помощью  функ-
 ции INKEY$, но в этом случае компьютер будет проверять текущее  состояние
 буфера клавиатуры.
-   З а м е ч а н и е. Функция STRIG(0) возвращает (-1) только,  если  кла-
-виша "пробел" нажата во время  в ы ч и с л е н и я  значения этой функции.
-
+   З а м е ч а н и е. Функция STRIG(0) возвращает  -1  только, если клави-
+ша "пробел" нажата во время  в ы ч и с л е н и я  значения этой функции.
    П р и м е р  3.   10 FOR I=0 TO 500:PRINT I:NEXT
    ──────────────    20 IF STRIG(0) THEN 10 ELSE 20
    Обратите внимание, что если клавиша "пробел" нажата во время вывода ин-
@@ -376,6 +346,8 @@
 INKEY$ реагирует на  в с е  предварительные нажатия. Сколько раз была  на-
 жата клавиша "пробел", столько раз и выполнится соответствующая команда.
 
+
+
    П р и м е р  4. Ввод рисунков с клавиатуры при помощи "рукоятки"  (кла-
    ──────────────  виши управления курсором) и "кнопки" (клавиша "пробел")
 встроенного "джойстика" с номером 0.
@@ -389,7 +361,6 @@
       90 IF Y<0 THEN Y=0 ELSE IF Y>20 THEN Y=20
       95 LOCATE X,Y
       100 IF STRIG(0) THEN PRINT "∗":GOTO 30 ELSE PRINT "+":GOTO 30
-
    А теперь исправьте "∗" на " ". Что изменилось в работе программы?
 
    β) 10 COLOR 1,15:SCREEN 2
@@ -404,6 +375,7 @@
       100 IF D=6 OR D=7 OR D=8 THEN X=X-1
       110 RETURN'──▶
 
+
    П р и м е р  5.  А теперь настала очередь "настоящего" джойстика! 
    ──────────────
    α) 10 CLS:X=16:Y=11
@@ -439,27 +411,22 @@
 а регистры 14 и 15 - за состояние джойстиков и индикатора "РУС".
    Для того, чтобы определить состояние джойстиков нужно в регистр с номе-
 ром 15 занести следующие значения:
-
      Д л я  д ж о й с т и к а  1        Д л я   д ж о й с т и к а  2
   ┌───┬───┬───┬───┬───┬───┬───┬───┐  ┌───┬───┬───┬───┬───┬───┬───┬───┐
   │ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 │  │ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 │
   ├───┼───┼───┼───┼───┼───┼───┼───┤  ├───┼───┼───┼───┼───┼───┼───┼───┤
   │ - │ 0 │ - │ 0 │ - │ - │ 1 │ 1 │  │ - │ 1 │ 0 │ - │ 1 │ 1 │ - │ - │
   └───┴───┴───┴───┴───┴───┴───┴───┘  └───┴───┴───┴───┴───┴───┴───┴───┘
-
   ...и прочитать регистр PSG с номером 14. Четыре его младших бита покажут
 состояние выбранного с помощью регистра 15 джойстика:
-
                   ┌───┬───┬───┬───┬────┬────┬───┬───┐
                   │ 7 │ 6 │ 5 │ 4 │  3 │  2 │ 1 │ 0 │
                   ├───┤───┼───┼───┼────┼────┼───┼───┤
                   │ - │ - │ - │ - │ ─▶ │ ◀─ │ │ │ ▲ │
                   │   │   │   │   │    │    │ ▼ │ │ │
                   └───┴───┴───┴───┴────┴────┴───┴───┘
-
    Если бит в данной позиции "сброшен",то джойстик направлен в показанном
 на таблице направлении.
-
    П р и м е р 6.  Автор программы: Г.Беленький. 26.05.90. 
    ─────────────
    10 DATA 3E,0F     :' LD   A,0Fh      ; В 15-й регистр PSG поместим
@@ -475,7 +442,6 @@
    90 DEFUSR=&HD000
    100 A=USR(0)                         ' Прочитаем состояние джойстика 1
    110 PRINT RIGHT$("0"+BIN$(NOT(PEEK(&HE000) AND 15)),4)
-
    П р и м е р 7.  Автор программы: Г.Беленький. 26.05.90. 
    ─────────────
    10 DATA 3E,0F      :' LD   A,0Fh        ; Подпрограмма, позволяющая
@@ -499,10 +465,9 @@
    200 IF A=6  OR A=7  OR A=5 THEN X=X+2
    210 GOTO 140
 
-   Для того, чтобы изменить состояние индикатора "РУС", нужно в  регистре
+   Для того  чтобы изменить состояние индикатора "РУС", нужно в  регистре
 PSG с номером 15 изменить старший бит.Если этот бит равен 0, то индикатор
 включается, а если 1, то выключается.
-
    П р и м е р 8.  Автор программы: Г.Беленький. 26.05.90. 
    ─────────────
    10 DATA 3E,0F     :' LD   A,0Fh
@@ -517,10 +482,9 @@
    100 FOR I=0 TO 50:NEXT I 
    110 POKE &HD003,0:GOTO 70
 
-   Кроме только что рассмотренных функций STICK и STRIG,для работы с джой-
+   Кроме только что рассмотренных функций STICK и STRIG для работы с джой-
 стиком можно использовать функции PDL и PAD.
-   Формат функции PDL следующий:
-                                  ┌────────┐
+   Формат функции PDL следующий:  ┌────────┐
                                   │ PDL(N) │  ,
                                   └────────┘
 где:  PDL - служебное слово;
@@ -542,30 +506,30 @@
 ки джойстика в разъеме 1, и  возвращает  255 ("истина"), если рукоятка не
 перемещалась, или 0 ("ложь") - в противном случае.
    Функция PDL(4) проверяет,происходило ли перемещение  н а з а д  рукоят-
-ки джойстика в разъеме 2 и возвращает 255 ("истина"), если рукоятка не пе-
+ки джойстика в разъеме 2,и возвращает 255 ("истина"), если рукоятка не пе-
 ремещалась, или 0 ("ложь") - в противном случае.
    Функция PDL(5) проверяет,происходило ли перемещение  в л е в о  рукоят-
-ки джойстика в разъеме 1 и возвращает 255 ("истина"), если рукоятка не пе-
+ки джойстика в разъеме 1,и возвращает 255 ("истина"), если рукоятка не пе-
 ремещалась, или 0 ("ложь") - в противном случае.
    Функция PDL(6) проверяет,происходило ли перемещение  в л е в о  рукоят-
-ки джойстика в разъеме 2 и возвращает 255 ("истина"), если рукоятка не пе-
+ки джойстика в разъеме 2,и возвращает 255 ("истина"), если рукоятка не пе-
 ремещалась, или 0 ("ложь") - в противном случае.
    Функция PDL(7) проверяет,происходило ли перемещение  в п р а в о  руко-
-ятки джойстика в разъеме 1 и возвращает 255 ("истина"),  если рукоятка не
+ятки джойстика в разъеме 1,и возвращает 255 ("истина"),  если рукоятка не
 перемещалась, или 0 ("ложь") - в противном случае.
    Функция PDL(8) проверяет,происходило ли перемещение  в п р а в о  руко-
-ятки джойстика в разъеме 2 и возвращает 255 ("истина"),  если рукоятка не
+ятки джойстика в разъеме 2,и возвращает 255 ("истина"),  если рукоятка не
 перемещалась, или 0 ("ложь") - в противном случае.
-   Функция PDL(9) проверяет, нажата ли кнопка 1  джойстика в разъеме 1  и
+   Функция PDL(9) проверяет, нажата ли кнопка 1  джойстика в разъеме 1, и
 возвращает 255 ("истина"), если кнопка не нажата, или 0 ("ложь") -  в про-
 тивном случае.
-   Функция PDL(10) проверяет, нажата ли кнопка 1 джойстика в разъеме 2  и
+   Функция PDL(10) проверяет, нажата ли кнопка 1 джойстика в разъеме 2, и
 возвращает 255 ("истина"), если кнопка не нажата, или 0 ("ложь") -  в про-
 тивном случае.
-   Функция PDL(11) проверяет, нажата ли кнопка 2 джойстика в разъеме 1  и
+   Функция PDL(11) проверяет, нажата ли кнопка 2 джойстика в разъеме 1, и
 возвращает 255 ("истина"), если кнопка не нажата, или 0 ("ложь") -  в про-
 тивном случае.
-   Функция PDL(12) проверяет, нажата ли кнопка 2 джойстика в разъеме 2  и
+   Функция PDL(12) проверяет, нажата ли кнопка 2 джойстика в разъеме 2, и
 возвращает 255 ("истина"), если кнопка не нажата, или 0 ("ложь") -  в про-
 тивном случае.
 
@@ -577,7 +541,7 @@
 где:  PAD ("pad"-"графический планшет") - служебное слово;
       N  - арифметическое выражение,  целая часть которого должна  принад-
 лежать отрезку [0,7] (в противном случае последует сообщение об ошибке
-                         "Illegal function call" .
+                         "Illegal function call").
    Функция PAD(N) считывает данные с графического планшета, подключенного
 к разъему для джойстика. Значение разъема 1 считываются при N, равном 1,2
 или 3 , а с разъема 2 при N, равном 4,5,6 или 7.
@@ -592,24 +556,21 @@
    Однако функцию PAD() можно применять и в том случае, если  у  Вас  нет
 графического планшета, но есть  д ж о й с т и к.
    Функция PAD(0) проверяет, происходило ли  перемещение  в п е р е д  ру-
-коятки джойстика в разъеме 1 и возвращает 0 ("ложь"), если рукоятка не пе-
+коятки джойстика в разъеме 1,и возвращает 0 ("ложь"), если рукоятка не пе-
 ремещалась, или -1 ("истина") - в противном случае.
    Функция PAD(3) проверяет, происходило ли  перемещение  в п р а в о  ру-
-коятки джойстика в разъеме 1 и возвращает 0 ("ложь"), если рукоятка не пе-
+коятки джойстика в разъеме 1,и возвращает 0 ("ложь"), если рукоятка не пе-
 ремещалась, или -1 ("истина") - в противном случае.
    Функция PAD(4) проверяет, происходило ли  перемещение  в п е р е д  ру-
-коятки джойстика в разъеме 2 и возвращает 0 ("ложь"), если рукоятка не пе-
+коятки джойстика в разъеме 2,и возвращает 0 ("ложь"), если рукоятка не пе-
 ремещалась, или -1 ("истина") - в противном случае.
    Функция PAD(7) проверяет, происходило ли  перемещение  в п р а в о  ру-
-коятки джойстика в разъеме 2 и возвращает 0 ("ложь"), если рукоятка не пе-
+коятки джойстика в разъеме 2,и возвращает 0 ("ложь"), если рукоятка не пе-
 ремещалась, или -1 ("истина") - в противном случае.
    Функции PAD(1), PAD(2), PAD(5) и PAD(6) всегда возвращают значение 255.
 
-
-
    VII.2.  П е р е х о д  к  п о д п р о г р а м м е  п о  с о б ы т и ю
 
-
    Переход к подпрограмме  по  событию  ( п р е р ы в а н и е  в  програм-
 ме пользователя) представляет собой особый тип условного перехода.
    Для выполнения "о б ы ч н о г о" условного перехода где-то в программе
@@ -671,25 +632,21 @@
 нию таких событий, как истечение определенного интервала времени, нажатие
 какой-либо клавиши F1÷F10, нажатие клавиш "CTRL"+"STOP" и т.п. Об этом  и
 пойдет речь в следующих разделах.
+
 ┌────────────────────────────────────────────────────────────────────────┐
-│   Перед тем, как выполнить программу, содержащую переход  к подпрограм-│
-│мам по событию,не забудьте (если работаете на компьютере MSX-2) набрать │
-│                             CALL NETEND                                │
+│  Перед тем как выполнить программу, содержащую переход к подпрограммам │
+│  по событию,не забудьте (если работаете на компьютере MSX-2) выполнить │
+│                         команду  CALL NETEND .                         │
 └────────────────────────────────────────────────────────────────────────┘
 
-
-
                 VII.2.1.   П е р е х о д  п о  к л ю ч у 
 
-
                                  Стоять я не могу... Мои колени слабеют...
                                  душно... Где ключи? Ключи, ключи мои...
-                                                              А.С. Пушкин
-
-
-   MSX-BASIC включает в себя средство, позволяющее  использовать  функцио-
-нальные клавиши не только для ввода некоторого слова, но и для прерывания
-выполнения программы и вызова определенной подпрограммы.
+                                                                 А.Пушкин
+   Интерпретатор MSX-BASIC включает в себя средство, позволяющее использо-
+вать функциональные клавиши не только для ввода некоторого слова,но и для
+прерывания выполнения программы и вызова определенной подпрограммы.
                      ┌────────────────────────────────┐
    Оператор          │    ON KEY GOSUB n1,n2,...,nk   │ ,
                      └────────────────────────────────┘
@@ -720,7 +677,7 @@
 циональной клавиши, для которой выполняется данный оператор.
    Иногда возникает необходимость временно оградить программу  от прерыва-
 ний, вызываемых функциональными клавишами, и в то же время запомнить  каж-
-дое нажатие такой клавиши с тем, чтобы впоследствии можно было  выполнить
+дое нажатие такой клавиши, с тем чтобы впоследствии можно было  выполнить
 все соответствующие вызовы подпрограммы. Это достигается с помощью  опера-
 тора                       ┌──────────────────┐
                            │    KEY(k)STOP    │ ,
@@ -731,7 +688,6 @@
 таки будут реализованы, но не сразу, а только после выполнения  оператора
                                KEY(k)ON   ,
 вновь "активизирующего" эту клавишу.
-
    П р и м е р ы.
    ─────────────
    α) 10 ON KEY GOSUB 100             β) 10 ON KEY GOSUB 100
@@ -744,28 +700,23 @@
       120 FOR I=10 TO 90 STEP 10         120 FOR I=10 TO 90 STEP 10
       130 CIRCLE(120,100),I:NEXT I       130 CIRCLE(120,100),I:NEXT I
       140 CLS:RETURN 30                  140 CLS:RETURN 30
-
    γ) Наберите пример β), вставив строку:
                     135 IF I=50 THEN KEY(1)STOP  .
-
    Оператор  ON KEY GOSUB позволяет легко организовывать "листание" закон-
-ченных  программных  фрагментов во время  выполнения  программы, например,
+ченных  программных  фрагментов во время  выполнения  программы; например,
 страницы   справочной  информации  1÷3  вызываются  нажатием  на  клавиши
 "F1"÷"F3", демонстрационный  пример выполняется при нажатии клавиши  "F4",
 выход из программы - при нажатии клавиши "F5" и т.д.
 
 
-
   VII.2.2.    П е р е х о д  п о  в р е м е н н о м у  и н т е р в а л у
 
-
                        ┌────────────────────────────┐
    Оператор            │    ON INTERVAL=α GOSUB n   │ ,
                        └────────────────────────────┘
 где:  ON , INTERVAL ("интервал"), GOSUB- служебные слова;
       α - арифметическое выражение, целая часть значения которого  принад-
-лежит отрезку [1,65535];
-      n - номер программной сроки,
+лежит отрезку [1,65535]; n - номер программной сроки,
 назначает интервалы времени, равные
                               INT(α)/60  секунд,
 через которые компьютер периодически передает управление подпрограмме,рас-
@@ -778,7 +729,7 @@
                           └─────────────────────┘
 "дезактивизируется" оператором
                           ┌─────────────────────┐
-                          │     INTERVAL OFF    │ ,
+                          │     INTERVAL OFF    │
                           └─────────────────────┘
 и временно "дезактивизируется" оператором
                           ┌─────────────────────┐
@@ -788,7 +739,6 @@
 убедитесь в том, что интервал  INT(α)/60  не короче, чем время выполнения
 подпрограммы обработки, иначе она будет бесконечно вызывать саму себя,ибо
 в конце ее неявно выполняется оператор INTERVAL ON.
-
    П р и м е р  1. Проследите за выполнением следующего фрагмента при K=1,
    ──────────────  2,6.
    10 INPUT K:ON INTERVAL=K*60 GOSUB 80
@@ -797,7 +747,6 @@
    70 END
    80 PRINT "Проверка":RETURN
    100 FOR K=1 TO 7000:NEXT:RETURN
-
    П р и м е р  2.  "Секундомер"!
    ──────────────
    5 INPUT "Сколько секунд отсчитать";K:ON INTERVAL=60 GOSUB 80:S=1:PRINТ
@@ -806,10 +755,8 @@
    80 PRINT M;TAB(4) "мин";S;TAB(11) "сек":LOCATE POS(0),CSRLIN -1:S=S+1:
    IF S MOD 60=0 THEN J=0:LOCATE POS(0),CSRLIN:M=M+1:S=0
    90 RETURN
-
    Обработка интервала оказывается очень удобной в игровых программах,где
 нужно повторять какое-либо действие через одинаковые интервалы времени. 
-
    П р и м е р  3[76]. Данная программа позволяет наряду с вводом  текста
    ──────────────────  организовать отсчет времени ("часы") в правом верх-
 нем углу экрана. Заметим,что "опрос" клавиатуры выполняется с помощью фун-
@@ -834,11 +781,10 @@
 
 
 
-  VII.2.3.   П е р е х о д  по  н а ж а т и ю  к л а в и ш  "CTRL"+"STOP"
-
+  VII.2.3.   П е р е х о д  по  н а ж а т и и  к л а в и ш  "CTRL"+"STOP"
 
-                          ┌──────────────────────┐
-   По оператору           │    ON STOP GOSUB n   │ ,
+   По оператору           ┌──────────────────────┐
+                          │    ON STOP GOSUB n   │ ,
                           └──────────────────────┘
 где:   ON , STOP, GOSUB - служебные слова;
        n - номер программной строки;
@@ -856,11 +802,9 @@
    80 PRINT"Вам уже ничего не поможет! Делайте, как подсказывают."
    90 RETURN
 
-   На закуску отметим интересный факт:
-
+   "На закуску" отметим интересный факт:
    10 STOP ON:ON STOP GOSUB 50:FOR I=1 TO 5000:NEXT:END
    50 POKE &HFBB0,1:RETURN '──▶
-
    Нажатие клавиш "CTRL"+"STOP" игнорируется. "Доступ" к тексту программы
 становится возможным, если одновременно нажать пять клавиш:
                       "CTRL"+"GRAPH"+"SHIFT"+"1"+"3"  или
@@ -875,10 +819,8 @@
 тельства в программу, выполняющуюся в Ваше отсутствие!
 
 
-
            VII.2.4.     П е р е х о д  п о  д ж о й с т и к у
 
-
    Поговорим теперь об операторе перехода к подпрограмме по нажатию  кноп-
 ки джойстика:┌────────────────────────────────────────────┐
              │    ON STRIG GOSUB n[,n1][,n2][,n3][,n4]    │ ,
@@ -895,7 +837,7 @@
       n4 - номер первой строки подпрограммы,  которой передается  управле-
 ние при нажатии кнопки 2 джойстика 2.
 
-   Для того, чтобы переход к подпрограмме по джойстику был  возможен, его
+   Для того  чтобы переход к подпрограмме по джойстику был  возможен, его
 можно подтвердить, отменить или приостановить  соответственно операторами
              ┌─────────────────────────────────────────────┐
              │   STRIG(k)ON , STRIG(k)OFF , STRIG(k)STOP   │ ,
@@ -908,7 +850,6 @@
 ответствующая кнопка джойстика. Переход к первому номеру строки из списка
 осуществляется в том случае, если нажата клавиша "пробел", ко второму- ес-
 ли нажата кнопка 1 джойстика 1 и т.д.
-
    П р и м е р  1.
    ──────────────
    5 STRIG(0) ON:STRIG(1) ON:STRIG(3) ON
@@ -933,7 +874,6 @@
    260 'Анализ прерывания от джойстика
    270 STRIG(0) OFF
    280 PRINT "Ваша реакция":PRINT"=";TIME/60;"секунд":END
-
    Пока выполняется подпрограмма,всякий новый сигнал от кнопки  джойстика
 откладывается до окончания текущей обработки.
    После возврата управления из подпрограммы интерпретатор определит нали-
@@ -950,7 +890,6 @@
                            └──────────────────┘
 приостанавливает разрешение обработки прерываний по нажатию  кнопки  джой-
 стика, но сохраняет информацию о нажатии.
-
    П р и м е р  3.  Использование "встроенного" джойстика ! 
    ──────────────
    10 STRIG (0) ON:ON STRIG GOSUB 130:DEFINT A-Z
@@ -992,11 +931,9 @@
    150 E=STRIG(1):IF B<10 THEN IF E=0 THEN RETURN ELSE 130 ELSE 140
 
 
-
        VII.2.5.  О д н о в р е м е н н а я   о б р а б о т к а 
                   с о б ы т и й  р а з л и ч н ы х  т и п о в
 
-
    Обрадуем Вас: в одной программе допустима обработка нескольких событий
 различных типов! Однако для того, чтобы структура программы оставалась яс-
 ной, необходимо учитывать следующее:
@@ -1006,7 +943,7 @@
 то подпрограмма по завершении будет сразу же  в ы з в а н а  снова. Чтобы
 избежать этого, помещайте в начале подпрограммы оператор
                            с о б ы т и е  STOP или 
-оператор                   с о б ы т и е  OFF                           .
+оператор                   с о б ы т и е  OFF  ;
    2) применение операторов
                с о б ы т и е  OFF    и   с о б ы т и е  STOP
 "очищает" от обработки прерываний определенные участки Вашей программы;
@@ -1014,21 +951,20 @@
 запоминается. 
     ┌────────────────────────────────────────────────────────────────┐
     │  Если же событие того же типа возникает еще раз, то компьютер  │
-    │         запоминает наступление только последнего события       │
+    │         запоминает наступление только последнего события       │ ;
     └────────────────────────────────────────────────────────────────┘
    4) приоритет (в порядке убывания) при одновременном возникновении собы-
-тий: α) обработка ошибок в программе пользователя
-     β) ON KEY GOSUB
-     γ) ON STOP GOSUB
-     δ) ON SPRITE GOSUB
-     σ) ON STRIG GOSUB
-     μ) ON INTERVAL GOSUB
-     Φ) прерывания в локальной сети
+тий: α) обработка ошибок в программе пользователя;
+     β) ON KEY GOSUB        ;
+     γ) ON STOP GOSUB       ;
+     δ) ON SPRITE GOSUB     ;
+     σ) ON STRIG GOSUB      ;
+     μ) ON INTERVAL GOSUB   ;
+     Φ) прерывания в локальной сети;
      Γ) другие прерывания.
    В заключение запомните, что использование в Вашей программе  полдюжины
 (≈шесть!) операторов перехода к подпрограммам по событию может  мгновенно
 завести в тупик любого, пытающегося разобраться в ней программиста!
-
    П р и м е р [76]. Предположим, что Вы управляете космическим  кораблем,
    ────────────────  который может  перемещаться  вверх и вниз. Вы можете
 обстреливать появившийся вражеский корабль, который также стреляет по  Ва-
@@ -1169,8 +1105,8 @@
 
 
 
-            VII.3.  И н и ц и а л и з а ц и я  в  MSX-BASIC
 
+            VII.3.  И н и ц и а л и з а ц и я  в  MSX-BASIC
 
    При включении компьютера он приводится автоматически в некоторое исход-
 ное состояние (происходит его  и н и ц и а л и з а ц и я) ; так, например,
@@ -1184,13 +1120,12 @@
  │                    отключенном основном питании)!                   │
  └─────────────────────────────────────────────────────────────────────┘
                             ┌──────────────────────┐
-   1.  Оператор             │    SET ADJUST(X,Y)   │
+   1.  Оператор             │    SET ADJUST(X,Y)   │ ,
                             └──────────────────────┘
 где:   SET ("установить"),  ADJUST ("корректировка") - служебное  слово;
        X и Y - арифметические выражения,  целые  части  значений  которых
 принадлежат отрезку [-7,8] (по умолчанию X=0,Y=0),
 регулирует положение используемой части экрана.
-
                    ┌──────────────────────────────────────────┐
    2.  Оператор    │  SET BEEP [з в у к][,г р о м к о с т ь]  │ ,
                    └──────────────────────────────────────────┘
@@ -1203,7 +1138,6 @@
    Любой из параметров может быть опущен (его значение совпадет со  значе-
 нием, установленным ранее), причем, если опущен первый параметр, то  запя-
 тая должна быть сохранена.
-
                  ┌─────────────────────────────────────────────┐
    3. Оператор   │   SET TITLE ["з а г о л о в о к"][,ц в е т] │ ,
                  └─────────────────────────────────────────────┘
@@ -1215,7 +1149,6 @@
 позволяет переопределять заголовок, возникающий на экране  при  включении
 компьютера. Если  з а г о л о в о к  имеет длину 6, то система будет "ожи-
 дать" нажатия любой клавиши после вывода заголовка на экран. 
-
                       ┌─────────────────────────────────┐
    4.  Оператор       │    SET PASSWORD "п а р о л ь"   │ ,
                       └─────────────────────────────────┘
@@ -1224,21 +1157,19 @@
 жна превышать 255 ;
 позволяет ввести пароль, проверяемый всякий раз при включении компьютера.
    Если Вы забыли пароль, нажмите клавиши "STOP" и "GRAPH" при включении.
-
                    ┌──────────────────────────────────────┐
    5.  Оператор    │    SET PROMPT "п о д с к а з к а"    │ ,
                    └──────────────────────────────────────┘
 где:  SET , PROMPT - служебные слова;
       п о д с к а з к а  -  значение строковой константы, длина  которого
 не более 6 символов;
-переопределяет подсказку Ok.
+позволяет переопределить стандартную системную подсказку Ok.
 П р и м е ч а н и е. Можно сохранить результат действия только одного  из
 операторов SET TITLE, SET PASSWORD или SET PROMPT:  использованный послед-
 ним "замещает" предыдущий.
    Пользуясь этой возможностью, можно отменить пароль, вернуться  к исход-
 ному заголовку, к подсказке "Ok". Достаточно ввести команду
                                SET PROMPT "Ok"
-
                            ┌──────────────────────┐
    6.  Оператор            │      SET SCREEN      │ ,
                            └──────────────────────┘
@@ -1248,7 +1179,6 @@
                        SCREEN, COLOR, KEY ON/OFF, WIDTH .
    Сохраняются только те параметры,  которые могут вводиться  в командном
 режиме:
-
    режим экрана (0 или 1);
    ширина экрана (от 1 до 80, если режим экрана =0;
                   от 1 до 32, если режим экрана =1);
@@ -1264,11 +1194,8 @@
    При включении компьютера неявно выполняются операторы  SCREEN,  COLOR,
 KEY ON/OFF и WIDTH, параметры которых были сохранены.
 
-
                                                        Мартобря 86 числа.
-                                        Н.В.Гоголь. Записки сумасшедшего
-
-
+                                           Н.Гоголь. Записки сумасшедшего
                         ┌─────────────────────────────┐
    7.  Оператор         │   SET DATE "ММ/ДД/ГГ",[A]   │ ,
                         └─────────────────────────────┘
@@ -1299,11 +1226,8 @@
 причем секунды игнорируются. Учтите, что используя  параметр А, всегда не-
 обходимо вводить вначале  в р е м я , а лишь затем  д а т у !
 
-
                                                        Все врут календари.
-                                               А.С.Грибоедов. Горе от ума
-
-
+                                                 А.Грибоедов. Горе от ума
    Для получения даты и времени MSX-BASIC предоставляет также еще два опе-
 ратора:                   ┌──────────────────────┐
     1)                    │    GET DATE Z$,[A]   │ ,
@@ -1324,12 +1248,11 @@
    Этот оператор присваивает значение времени переменной Z$ в формате
                                  "ЧЧ:ММ:СС". 
    Команда GET TIME Z$,A  возвращает значение,  определяющее время подачи
-подачи сигнала.
+сигнала.
   Отметим, что подача сигнала не является автоматической. Для ее осуществ-
 ления необходимо использовать подпрограмму, сравнивающую текущие  дату  и
-время с заданными параметром A,и в случае совпадения выдающую сигнал BEEP
+время с заданными параметром A и в случае совпадения выдающую сигнал BEEP
 или определенное сообщение.
-
    П р и м е р ы:
    ─────────────
    1) set date "01/17/89"   2) set date "01/17/89",a
@@ -1353,7 +1276,7 @@
      20:50:00
      Ok
   6) Ваш компьютер можно использовать и в бытовых целях.  Если  не хотите
-опаздывать на свидание, пользуйтесь возможностями компьютеров MSX-2 !!!
+опаздывать на свидания, пользуйтесь возможностями компьютеров MSX-2 !
    10 SET BEEP 3,4
    20 SET TIME "22:30:45":SET DATE "01/17/89"
    30 SET TIME "22:31:45",A:SET DATE "01/17/89",A
@@ -1370,8 +1293,8 @@
 именем A145333. Записанные ранее версии Вашей  программы остаются в непри-
 косновенности!
 
-              VII.4.   Р а б о т а   с   п р и н т е р о м
 
+              VII.4.   Р а б о т а   с   п р и н т е р о м
 
    Вначале напомним известные Вам факты. 
    С помощью оператора  PRINT  можно  "печатать" на  э к р а н е  дисплея
@@ -1383,7 +1306,6 @@
    Установка печатающей головки в заданное место строки производится с по-
 мощью так называемого  т а б у л я т о р а - команды TAB  (его использова-
 ние в "обычном" операторе PRINT, конечно же, Вам известно).
-
    П р и м е р  1.   10 FOR I=1 TO 50
    ──────────────    20    LPRINT TAB(25-20*SIN(I/3));"Принтер!"
                      30 NEXT I
@@ -1398,15 +1320,13 @@
                         └────────────────────────┘
 
 
-
-VII.4.1. К о м а н д ы  д л я  у п р а в л е н и я  т и п о м  п е ч а т и 
-
+           VII.4.1.   К о м а н д ы  д л я  у п р а в л е н и я
+                              т и п о м  п е ч а т и 
 
    Эти команды используются для управления  типом  шрифта, шагом печати и
 "создания" специальных эффектов.
 
-
-        7.4.1.1.   У п р а в л е н и е   т и п о м   ш р и ф т а
+      VII.4.1.1.   У п р а в л е н и е   т и п о м   ш р и ф т а
 
       Взгляните на следующую таблицу:
   ┌───────────────────────────────────────┬────────────────────────────┐
@@ -1421,7 +1341,6 @@
    По умолчанию (при  включении  питания)  осуществляется печать  с т а н-
 д а р т н ы м и  символами. Отметим, что первые два кода  о т м е н я ю т
 друг друга.
-
    П р и м е р  2.
    ──────────────
    10 LPRINT CHR$(27);"4":LPRINT "Данная строка напечатана италиком!"
@@ -1432,7 +1351,7 @@
 а строка 20 выключает его кодом  CHR$(27);"5" .
 ┌────────────────────────────────────────────────────────────────────────┐
 │ 4Буквы текста, напечатанного "и т а л и к о м", наклонены  в п р а в о !5│
-│ 4"Италик" может использоваться для выделения некоторых букв и слов5      │
+│ 4"Италик" может использоваться для выделения некоторых букв и слов.5     │
 └────────────────────────────────────────────────────────────────────────┘
 
    Заметим, что  к а ж д ы й  тип шрифта может комбинироваться с любым из
@@ -1440,6 +1359,7 @@
 речь пойдет ниже.
 
 
+
         VII.4.1.2.   У п р а в л е н и е   ш а г о м   ш р и ф т а
 
    Для печати используются три плотности шага:
@@ -1447,7 +1367,7 @@
                      э л и т е,
                      у п л о т н е н н а я .
    Каждая из них может быть изменена с помощью команды расширения  режима
-печати, при этом шаг увеличивается в два раза (см. VII.4.1.3.).
+печати, при этом шаг увеличивается в два раза (см. раздел VII.4.1.3.).
    Предлагаем Вашему вниманию таблицу:
         ┌─────────────────────┬────────────┬─────────────────┐
         │    Плотность шага   │ Знаки/дюйм │ Управляющий код │
@@ -1460,6 +1380,7 @@
         ├─────────────────────┼────────────┼─────────────────┤
         │У п л о т н е н н а я│     17     │   CHR$(27);"Q"  │
         └─────────────────────┴────────────┴─────────────────┘
+
    Поговорим о шаге "ц и ц е р о". Команда, его устанавливающая, определя-
 ет максимальное число печатаемых колонок до 80 в печатающем устройстве де-
 сятидюймового типа (например, "Gemini-10XR") и до 136 - в печатающем  уст-
@@ -1475,7 +1396,6 @@
 также устанавливает максимальное число печатаемых колонок на 136 в печата-
 ющем устройстве десятидюймового типа и на 233 в печатающем устройстве пят-
 надцатидюймового типа.
-
    П р и м е р  3.
    ──────────────
    10 LPRINT CHR$(27);"N":LPRINT "WHAT IS YOUR NAME?"
@@ -1485,17 +1405,16 @@
    70 LPRINT CHR$(27);"Р"
    80 LPRINT "PICA PITCH PRINTING IS PRINTER'S THIRD PITCH"
    run
-N
+\/e-
    WHAT IS YOUR NAME?
-E
+\/fe
    YOUR PRINTER PRINTS IN ELITE PITCH
-Q
+\/fc
    AS WELL AS CONDENSED, THE NARROOWEST PITCH
-P
+\/fn
    PICA PITCH PRINTING IS PRINTER'S THIRD PITCH
-E
+\/e
    Ok
-
    П р и м е р  4.
    ──────────────
    10 LPRINT CHR$(27);"P":GOSUB 100
@@ -1504,30 +1423,28 @@
    40 LPRINT CHR$(27);"N":GOSUB 100:END
    100 LPRINT "Я Вас любил...":RETURN
    run
-P
+\/e-
    Я Вас любил...
-E
+\/fe
    Я Вас любил...
-Q
+\/fc
    Я Вас любил...
-N
+\/fn
    Я Вас любил...
-E
+\/e
    Ok
-
    Различные типы плотности можно комбинировать с "италиком"  и  стандарт-
 ным шрифтом.
 
 
-      VII.4.1.3.   С п е ц и а л ь н ы е   р е ж и м ы   п е ч а т и
 
-
-                               "M∗∗∗ сказал молодому человеку, который не
+      VII.4.1.3.   С п е ц и а л ь н ы е   р е ж и м ы   п е ч а т и
+                                 ∗∗∗
+                                M    сказал молодому человеку, который не
                                 замечал,что его любит женщина:"Вы еще так
                                 юны, что, видно, разбираете  только  круп-
                                 ный шрифт".
-                                   Себастьян Шамфор. Характеры и анекдоты
-
+                                           С.Шамфор. Характеры и анекдоты
 
                   Коды для  р а с ш и р е н н о й  печати
         ┌─────────────────────────────────────┬─────────────────┐
@@ -1540,7 +1457,6 @@
    Режим расширенной печати можно комбинировать с различной плотностью ша-
 га. При этом каждый символ будет напечатан  в два раза шире,
 чем это предусмотрено выбором плотности шага.
-
    П р и м е р  5.
    ──────────────
    10 LPRINT CHR$(14);"EXPANDED PICA PITCH"
@@ -1549,15 +1465,15 @@
    60 LPRINT CHR$(27);"P";CHR$(15)
    70 LPRINT "NOW WE ARE BACK TO UNEXPANDED PICA PRINTING"
    run
-N
+\/x
    EXPANDED PICA PITCH
-E
+\/fe
    EXPANDED ELITE PITCH
-Q
+\/fc
    EXPANDED CONDENSED PITCH
-P
+\/fn/x-
    NOW WE ARE BACK TO UNEXPANDED PICA PRINTING
-E   Ok
+   Ok
 
                        Коды  в ы д е л е н и я  печати
            ┌────────────────────────────────┬──────────────────┐
@@ -1571,7 +1487,6 @@
            ├────────────────────────────────┼──────────────────┤
            │    Отмена выделенной печати    │ CHR$(27);CHR$(34)│
            └────────────────────────────────┴──────────────────┘
-
    Выделить текст  можно  д в у м я  способами:
    α)  используя двойную печать со смещением вниз (печать двойным ударом);
    β)  используя двойную печать со смещением вправо (выделенная печать).
@@ -1595,20 +1510,19 @@
    120 END
    1000 LPRINT "БУДЬТЕ СЧАСТЛИВЫ !!! Живите долго!":RETURN 
    run
-N
+\/x
    БУДЬТЕ СЧАСТЛИВЫ !!! Живите долго!
-4
+\/i
    БУДЬТЕ СЧАСТЛИВЫ !!! Живите долго!
-
+\/x-
    БУДЬТЕ СЧАСТЛИВЫ !!! Живите долго!
-5
+\/i-/fn
    БУДЬТЕ СЧАСТЛИВЫ !!! Живите долго!
-G
+\/d
    БУДЬТЕ СЧАСТЛИВЫ !!! Живите долго!
-H!
+\/d-/e
    БУДЬТЕ СЧАСТЛИВЫ !!! Живите долго!
-"E   Ok
-
+   Ok
    П р и м е р  7.
    ──────────────
    10 LPRINT CHR$(27);"Q";"Миша";CHR$(27);"P";" + ";CHR$(27);"4";"Ирочка "
@@ -1616,7 +1530,7 @@
    араул";CHR$(27);CHR$(34)
    run
    QМишаP + 4Ирочка 5= !ЛЮБОВЬ !!!Q Караул"
-c1E
+\/fn/e/i-/x-
    Ok
 
             Коды для  о д н о н а п р а в л е н н о й  печати
@@ -1631,7 +1545,6 @@
 печивает  с т р о г о  вертикальное расположение символов  и  выравнивает
 печать вертикальных столбцов. После включения принтера устанавливается ре-
 жим двунаправленной печати, которая несколько быстрее однонаправленной.
-
    П р и м е р  8. 
    ──────────────
    20 FOR I=1 TO 10:LPRINT "++++++++++++++++++++":NEXT I
@@ -1646,7 +1559,6 @@
                ├────────────────────────┼─────────────────┤
                │  Отмена подчеркивания  │   CHR$(27);"Y"  │
                └────────────────────────┴─────────────────┘
-
    П р и м е р  9.
    ──────────────
    10 LPRINT CHR$(27);"Q"               'Уплотненный шаг включен
@@ -1655,9 +1567,8 @@
    40 LPRINT CHR$(27);"X";" ПОДЧЕРКИВАНИЕМ";CHR$(27);"Y":END
    run
    QТекст можно выделитьX ПОДЧЕРКИВАНИЕМY
-c1E
+\/fn/e/i-/x-
    Ok
-
    Использование кода      ┌─────────────────┐
                            │   CHR$(27);"X"  │
                            └─────────────────┘
@@ -1690,7 +1601,6 @@
 печатью.
    Заметим, что команда  о т м е н ы  верхних и нижних индексов отключает
 и направленную печать, и двойной удар.
-
    П р и м е р  10.
    ───────────────
    10 LPRINT "очень";CHR$(27);"s1";"полезная";CHR$(27);"s0";"ВОЗМОЖНОСТЬ";
@@ -1703,7 +1613,6 @@
   VII.4.2.  У п р а в л е н и е  в е р т и к а л ь н о й  п о з и ц и е й
                      п е ч а т а ю щ е й   г о л о в к и
 
-
              1.  И з м е н е н и е  в ы с о т ы  с т р о к и
 ┌───────────────────────────────────────┬──────────────────────────────┐
 │             Ф у н к ц и я             │ У п р а в л я ю щ и й  к о д │
@@ -1722,7 +1631,7 @@
 равной 6 строкам в дюйме. Однако для данного печатающего устройства можно
 установить высоту строки на любое требуемое значение.
    Это делается командой:
-                        LPRINT CHR$(27);"T";"n1";"n2"
+                       LPRINT CHR$(27);"T";"n1";"n2"   ,
 где  n1 и n2 - цифры от 0 до 9, определяющие высоту строки в n/144 дюйма,
 величины n, n1 и n2 связаны при помощи формулы:
                                ┌────────────┐
@@ -1741,12 +1650,10 @@
 
    Приведем программу, "настраивающую" принтер  на  "очень мелкую" печать
 (она пригодится Вам для изготовления шпаргалок!)
-
    П р и м е р  12.┌────────────────────────────────────────────────────┐
    ─────────────── │ 10 LPRINT CHR$(27);"T07";CHR$(27);"s1";CHR$(27);"Q"│
                    └────────────────────────────────────────────────────┘
    Имеется и другой управляющий код для задания высоты строки.
-
    П р и м е р  13.
    ───────────────
    10 FOR I=1 TO 20
@@ -1757,6 +1664,7 @@
 высоты. Попробуйте!
 
            2.  У п р а в л е н и е  п е р е в о д о м  с т р о к
+
   ┌─────────────────────────────────────────┬─────────────────────────┐
   │             Ф у н к ц и я               │      Управляющий код    │
   ├─────────────────────────────────────────┼─────────────────────────┤
@@ -1769,11 +1677,12 @@
   │  Подача бумаги на n строк без возврата  │   CHR$(27);"a";CHR$(n)  │
   │                  каретки                │                         │
   └─────────────────────────────────────────┴─────────────────────────┘
+
    Эти коды применяются для перемещения бумаги относительно печатающей го-
 ловки.
    Возврат печатающей головки в исходную позицию (возврат каретки)  произ-
 водится командой         ┌───────────────────────┐
-                         │    LPRINT CHR$(13)    │
+                         │    LPRINT CHR$(13)    │ .
                          └───────────────────────┘
 При этом бумага не продвигается.
    "Получив" код CHR$(10), печатающее устройство продвигает бумагу  в п е-
@@ -1782,7 +1691,6 @@
 строки примените команду:┌──────────────────────────┐
                          │ LPRINT CHR$(13);CHR$(10) │.
                          └──────────────────────────┘
-
    П р и м е р  14.  Сравните результаты работы командных строк:
    ───────────────       LPRINT "PROGRAM";CHR$(10);"BASIC"
                          LPRINT "PROGRAM";CHR$(13);"BASIC"
@@ -1798,9 +1706,8 @@
 перемещает бумагу на  n  строк (используя высоту текущей строки) без пере-
 мещения печатающей головки. Однако это не изменяет текущее значение верти-
 кального положения табуляции. Отметим, что данную команду можно  записать
-и в таком виде:        LPRINT CHR$(27);CHR$(97);CHR$(n)
+и в таком виде:        LPRINT CHR$(27);CHR$(97);CHR$(n)   ,
 где 97 - код символа "a".
-
    П р и м е р  15.
    ───────────────
    10 LPRINT "LINE NUMBER 1.":LPRINT "LINE NUMBER 2.";
@@ -1810,7 +1717,6 @@
 печатающая головка при этом не перемещается. Следовательно, строка  40 пе-
 чатает сообщение начиная с колонки, в которой печатающая головка осталась
 в конце строки 20.
-
              3.   У п р а в л е н и е   с т р а н и ц а м и
 ┌───────────────────────────────────────┬──────────────────────────────┐
 │             Ф у н к ц и я             │ У п р а в л я ю щ и й  к о д │
@@ -1830,7 +1736,6 @@
 приводит к перемещению печатающей головки  в н и з  в  позицию  следующей
 в е р т и к а л ь н о й  метки табуляции или на  верхнюю часть  следующей
 страницы в порядке первоочередности нахождения.
-
    П р и м е р  16.  Перед тем как запустить программу, следует выключить
    ───────────────   печатающее устройство и отрегулировать бумагу  таким
 образом, чтобы лист был на одном уровне с верхом направляющей ленты на пе-
@@ -1846,7 +1751,6 @@
 
    Как Вам известно, любой текст имеет правую и левую границу, называемые
 п о л я м и.
-
    1.  Поговорим об  у с т а н о в к е  п о л е й
 ┌──────────────────────────────────┬────────────────────────────────────┐
 │          Ф у н к ц и я           │    У п р а в л я ю щ и й   к о д   │
@@ -1878,8 +1782,7 @@
 максимальная печатная позиция равна:
    α)  для шага "ц и ц е р о"               - 136,
    β)  для шага "э л и т е"                 - 163 и
-   γ)  для  у п л о т н я е м о г о  шага   - 233.
-
+   γ)  для  у п л о т н е н н о г о  шага   - 233.
    П р и м е р  17.  Установка полей.
    ───────────────
    10 GOSUB 40
@@ -1904,6 +1807,7 @@
    └─────────────────────────────────────────────────────────────────┘
 
      2.   У с т а н о в к а   г о р и з о н т а л ь н ы х   м е т о к
+
 ┌───────────────────────────────┬───────────────────────────────────────┐
 │        Ф у н к ц и я          │     У п р а в л я ю щ и й   к о д     │
 ├───────────────────────────────┼───────────────────────────────────────┤
@@ -1935,7 +1839,7 @@
    Для перемещения печатающей головки в позицию следующей  горизонтальной
 метки табуляции применяется команда
                           ┌──────────────────┐
-                          │  LPRINT CHR$(9); │
+                          │  LPRINT CHR$(9); │ .
                           └──────────────────┘
 
    П р и м е р  18.  Демонстрация использования горизонтальных меток.
@@ -1947,7 +1851,6 @@
              │       │       │
    8-я позиция  16-я позиция 24-я позиция
       Ok
-
    β) POKE &HF418,1
       Ok
       10 LPRINT "ONE";CHR$(9);"TWO";CHR$(9);"THREE";CHR$(9);"FOUR"
@@ -1957,14 +1860,13 @@
                │         │         │
        10-я позиция 20-я позиция 30-я позиция
       Ok
-
    γ) Установка позиции горизонтальной табуляции  (установка положений ме-
 ток) осуществляется следующей командой:
        ┌───────────────────────────────────────────────────────────┐
-       │  LPRINT CHR$(27);"(";"n11n12n13,n21n22n23,...nn1nn2nn3."  │
+       │  LPRINT CHR$(27);"(";"n11n12n13,n21n22n23,...nn1nn2nn3."  │ .
        └───────────────────────────────────────────────────────────┘
 При этом аннулируются все позиции текущей горизонтальной табуляции и уста-
-навливает новые, определенные трехзначными числами.
+навливаются новые, определенные трехзначными числами.
       POKE &HF418,1
       Ok
       10 LPRINT CHR$(27);"(";"008,016,024."
@@ -1978,11 +1880,10 @@
    Метки будут установлены в колонках 8, 16 и 24. Запятые в  10-Й  строке
 используются для разделения цепочки меток, точка - для окончания определе-
 ния.
-
-   δ) Для того, чтобы стереть часть горизонтальных меток из набора печата-
+   δ) Для того  чтобы стереть часть горизонтальных меток из набора печата-
 ющего устройства, существует следующая команда:
        ┌───────────────────────────────────────────────────────────┐
-       │  LPRINT CHR$(27);")";"n11n12n13,n21n22n23,...nn1nn2nn3."  │
+       │  LPRINT CHR$(27);")";"n11n12n13,n21n22n23,...nn1nn2nn3."  │ .
        └───────────────────────────────────────────────────────────┘
    По коду селективного  стирания  табуляции  стираются позиции табуляции,
 определенной трехзначными номерами.
@@ -2002,7 +1903,6 @@
                  └───────────────────────┘
 использовании меток из набора принтера команда LPRINT CHR$(9) будет игно-
 рироваться.
-
       3.  П р о ч и е  к о м а н д ы  д л я   у п р а в л е н и я
    г о р и з о н т а л ь н о й  п о з и ц и е й  п е ч а т а ю щ е й 
                               г о л о в к и
@@ -2026,7 +1926,7 @@
 чечных позиций  в п р а в о.  При этом величина n должна принадлежать  от-
 резку [0,479] и вычисляется по следующей формуле:
                    ┌──────────────────────────────┐
-                   │  n = 1000·n1+100·n2+10·n3+n4 │
+                   │  n = 1000·n1+100·n2+10·n3+n4 │ .
                    └──────────────────────────────┘
                          ┌─────────────────────┐
    Команда               │    LPRINT CHR$(8)   │
@@ -2035,7 +1935,6 @@
 ловка находится в исходной позиции, то команда игнорируется.  Эта команда
 используется для печати дополнительных знаков.
 
-
     VII.4.4.   К о м а н д ы   у п р а в л е н и я   г р а ф и к о й
 
    Принтер можно использовать в качестве  г р а ф о п о с т р о и т е л я,
@@ -2045,7 +1944,6 @@
 т р о в о й   г р а ф и к и , позволяющий непосредственно  управлять  уда-
 ром  к а ж д о г о  штырька.
    Взгляните на следующую таблицу:
-
  ┌───────────────────────────────┬─────────────────────────────────────┐
  │         Ф у н к ц и я         │    У п р а в л я ю щ и й   к о д    │
  ├───────────────────────────────┼─────────────────────────────────────┤
@@ -2065,13 +1963,9 @@
              │  LPRINT CHR$(Двоичный код положения штырька); │
              └───────────────────────────────────────────────┘
 с указанием того, какие штырьки печатающей головки должны печатать.
-
-
                    - Боюсь, что от объяснений все проигрывает,- сказал он.
                    - Одни только результаты впечатляют гораздо больше.
-                                          Конан Дойль. Приключения клерка
-
-   П р и м е р  19.
+   П р и м е р  19.                     А.Конан Дойль. Приключения клерка
    ─────────────── 
  К о д   ш т ы р ь к а
       &b00000001      ───▶  ·
@@ -2085,7 +1979,6 @@
                             ▲           ▲           ▲           ▲
                             │           │           │           │
                        &b11111111  &b01111110  &b00111100  &b00011000
-
    10   LPRINT CHR$(27);"S";"0008";
    20   FOR T=1 TO 2:LPRINT CHR$(&B11111111);:NEXT
    30   FOR T=1 TO 2:LPRINT CHR$(&B01111110);:NEXT
@@ -2101,7 +1994,6 @@
    ····
    ··
    Ok
-
    П р и м е р  20.    Программа печатает прямоугольник размерами
    ───────────────     200 точек╳ 16 точек .
    10 DATA &B00000001,&B10000000
@@ -2113,8 +2005,7 @@
 
 
                                 Сделаешь раз по сто - вот и будет просто.
-                                                             П.А. Федотов
-
+                                                                П.Федотов
 
                   ┌───────────────────────────────────────────┐
    Команда        │   LPRINT CHR$(27);"V";"n1n2n3n4";CHR$(m)  │,
@@ -2148,6 +2039,7 @@
  ├───────────────────────────────┼─────────────────────────────────────┤
  │    Выполнение макрокоманды    │             CHR$(27);"%"            │
  └───────────────────────────────┴─────────────────────────────────────┘
+
    Команда          ┌──────────────────────────────────┐ 
                     │  LPRINT CHR$(27);"+";...;CHR$(0) │
                     └──────────────────────────────────┘
@@ -2155,15 +2047,15 @@
 дой. Максимальное число символов в макрокоманде (не считая символов "+" и
 CHR$(0)) равно 16, в противном случае печатающее устройство будет реагиро-
 вать только на первые 16 символов макроопределения.
+
                          ┌──────────────────────────┐
    Команда               │    LPRINT CHR$(27);"%"   │
                          └──────────────────────────┘
 выполняет макрокоманду, которая предварительно была определена при помощи
 макроопределения.
-   После описания макроопределения, Вы можете использовать макрокоманду в
-любой требуемый момент времени и печатающее устройство будет "делать" все,
+   После описания макроопределения  Вы можете использовать макрокоманду в
+любой требуемый момент времени,и печатающее устройство будет "делать" все,
 что Вы включили в макроопределение.
-
    П р и м е р  22.   Макроопределение для установки  принтера в исходное
    ───────────────    положение всех стилей печати.
    10  LPRINT CHR$(27);"+";      ' Начало макроопределения
@@ -2176,11 +2068,9 @@
    90  LPRINT CHR$(27);"Y";      '   Отмена подчеркивания
    100 LPRINT CHR$(27);"A"       '   Высота строки =24/144 дюйма
    110 LPRINT CHR$(0)            ' Конец макроопределения
-
    Печатающее устройство будет "помнить" об этом макроопределении до  тех
 пор, пока не будет введено новое макроопределение!
    Теперь посмотрите, как можно использовать описанное макроопределение.
-
    П р и м е р  23.  Программа печатает всего  одну строку,  используя не-
    ───────────────   сколько различных стилей печати.  Затем  программная
 строка 50 позволяет вызвать макрокоманду, определенную в примере 21.
@@ -2191,15 +2081,11 @@
    50 LPRINT CHR$(27);"%";              ' Вызов макрокоманды
    60 LPRINT "TESTING FOUR, FIVE, SIX"
 
-
         VII.4.6.   Д р у г и е   п о л е з н ы е   к о м а н д ы
 
-
                    Все правила достойного поведения давным-давно известны,
                    остановка за малым - за умением ими пользоваться.
-                                                      Блез Паскаль. Мысли
-
-
+                                                         Б.Паскаль. Мысли
    Предлагаем Вашему вниманию следующую таблицу:
 ┌──────────────────────────────────┬────────────────────────────────────┐
 │           Ф у н к ц и я          │    У п р а в л я ю щ и й   к о д   │
@@ -2234,7 +2120,6 @@
                  └──────────────────────────────────────┘
 где  n1,n2,n3 - цифры от 0 до 9,
 приводит к повторению n раз (n=100·n1+10·n2+n3) символа с кодом  m.
-
    П р и м е р  24.  α)  LPRINT CHR$(27);"R120";"+"
    ───────────────   β)  LPRINT CHR$(27);"R120";"+";CHR$(24)
                            ┌────────────────────┐
msx/basic_dialogue_programming_language/files/diff_007.txt · Последние изменения: 2022-09-10 12:57 — GreyWolf