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

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


msx:basic_dialogue_programming_language:files:diff_009

Глава IX

@@ -1,7 +1,6 @@
-c1E
-ГЛАВА 9.   ФАЙЛОВЫЕ  СРЕДСТВА  MSX-BASIC
-
-
+\/d
+ГЛАВА IX.   ФАЙЛОВЫЕ  СРЕДСТВА  MSX-BASIC
+\/d-
 
                Ф а й л (от англ. file - досье, картотека), набор данных,-
                1) совокупность упорядоченных  и  взаимосвязанных записей,
@@ -10,8 +9,6 @@
                минающих устройствах (внешней памяти) и рассматриваемая  в
                процессе пересылки и обработки как единое целое.
                                  Математический Энциклопедический Словарь
-
-
    В персональном компьютере "YAMAHA" предусмотрена работа с двумя версия-
 ми языка BASIC: MSX-BASIC и MSX-Disk-BASIC. Версия языка  MSX-BASIC преду-
 сматривает работу только с накопителем на магнитной ленте, а в версии MSX-
@@ -37,7 +34,7 @@
 варианте при включении запускается MSX-Disk BASIC,  а приоритетным устрой-
 ством внешней памяти является дисковод А:.
    Работая на компьютере без дисковода,  Вы запускаете при включении  MSX-
-BASIC, а приориритетным устройством является кассетный магнитофон (CAS:),
+BASIC, а приоритетным  устройством  является  кассетный магнитофон (CAS:),
 имя которого может опускаться.
 З а м е ч а н и е.  В СССР распространены две версии языка MSX-BASIC:
   α) версия 1.0 (на компьютерах серии MSX-1);
@@ -52,8 +49,6 @@
                    │     2.1       │         1          │
                    └───────────────┴────────────────────┘
 
-
-
       IX.1.   Р а б о т а  с  ф а й л а м и  на  д и с к е т а х
 
    Под словом "д а н н ы е" мы будем подразумевать содержимое памяти  ком-
@@ -63,7 +58,6 @@
 емых на внешних носителях информации - кассете магнитной ленты или гибком
 магнитном диске (д и с к е т е).
 
-
            IX.1.1.  Ф о р м а т и р о в а н и е  д и с к е т ы
 
    Дискеты бывают следующих типов:
@@ -92,8 +86,8 @@
     └────────────────────────────────────────────────────────────────┘
    Приведем некоторые характеристики дискеты MF2-DD :
    1)  емкость при записи:
-       a) всего                        -  730 Кбайт;
-       b) для файлов пользователя      -  713 Кбайт;
+       a) всего                        -  730 Кбайтов;
+       b) для файлов пользователя      -  713 Кбайтов;
    2)  плотность при записи            -  8717 бит/дюйм;
    3)  среднее время доступа           -  95 MS ;
    4)  максимальное количество файлов  -  112.
@@ -107,7 +101,7 @@
    Для подготовки диска к работе с командами  и функциями  MSX-Disk BASIC
 необходимо осуществить специальную разметку  его  поверхности, называемую
 ф о р м а т и р о в а н и е м. Для этого дискета вставляется в карман дис-
-ковода и выполняется команда
+ковода, и выполняется команда
                           ┌─────────────────────┐
                           │     CALL FORMAT     │,
                           └─────────────────────┘
@@ -122,7 +116,7 @@
 пользователь  обязан  отреагировать  вводом  1,  если диск - двусторонний,
 или 2, если диск - односторонний.
 
-   Далее, по указанию
+   Далее по указанию
                          Strike a key when ready █
 нажмите любую клавишу. После этого начинается процесс форматирования,  то
 есть размещение на диске управляющих меток. При этом ранее имевшаяся  там
@@ -143,7 +137,7 @@
    Особую осторожность надо соблюдать при нанесении надписей  на наклейке,
 прикрепленной к дискете,так как даже давление карандаша или шариковой руч-
 ки может оказаться достаточным,чтобы через защитный конверт повредить маг-
-нитный слой дискеты. Во избежании порчи информации,записанной на дискетах,
+нитный слой дискеты. Во избежание порчи информации,записанной на дискетах,
 последние следует хранить подальше  от телевизоров, видеомониторов, звоня-
 щих телефонов и других источников магнитных полей;
    2. Для защиты файлов, сохраненных на дискете, позаботьтесь  о создании
@@ -182,7 +176,7 @@
 
    Кроме того, десятичной  точкой  имя  можно разделить на две зоны: к о -
 р е н ь  (до точки) и  р а с ш и р е н и е (после  точки). Расширение  со-
-стоит не более, чем из трех символов. Номер начальной позиции корня - 1,а
+стоит не более чем из трех символов. Номер начальной позиции корня - 1, а
 расширения - 10.
    Если пользователь фиксирует имя без расширения с  количеством символов,
 большим 8, то компьютер  автоматически разбивает его на корень  и расшире-
@@ -190,9 +184,8 @@
    Сообщение об ошибке        "Bad file name"
                ("Н е д о п у с т и м о е  и м я  ф а й л а")
 появляется в том случае, когда имя файла содержит более  в о с ь м и  сим-
-волов перед явно указанным расширением; если же расширение состоит  более,
+волов перед явно указанным расширением; если же расширение состоит  более
 чем из  т р е х  символов, то интерпретатор игнорирует лишние символы.
-
    П р и м е р ы.    ┌──────────────┬────────────────────┐
    ─────────────     │ Имя, заданное│ Представление имени│
                      │ пользователем│    в компьютере    │
@@ -203,7 +196,6 @@
                      │ВАЛ.процент   │  ВАЛ     .про      │
                      │ ПРОТИВОГАЗ   │  ПРОТИВОГ.АЗ       │
                      └──────────────┴────────────────────┘
-
    Общепринято, что расширение имени файла  должно  обозначать  его  тип.
 Обычно применяются следующие стандартные расширения имен:
    ┌────────────┬───────────────────────────────────────────────────────┐
@@ -227,9 +219,8 @@
    │    .TMP    │                    Временный файл                     │
    │    .TXT    │                    Текстовый файл                     │
    └────────────┴───────────────────────────────────────────────────────┘
-
    М а л е н ь к а я  х и т р о с т ь.  Оградить  Ваш файл от посторонних
-взглядов можно, дав ему секретное имя AAAAAAAA.AAA,например. Секрет здесь
+взглядов можно, дав ему секретное имя, AAAAAAAA.AAA например.Секрет здесь
 в том, что в этом имени часть букв A из русского, а часть - из латинского
 алфавита, и об этом знает только хозяин файла.
    В большинстве случаев желательно, чтобы присвоенные файлам  имена были
@@ -251,16 +242,12 @@
    Отметим, что *.* - родовое имя файлов с любыми именами.
 
 
-
     IX.1.3.  С п р а в о ч н а я  и н ф о р м а ц и я  о  ф а й л а х
 
-
                         Старейшим из дошедших до нас каталогов признается
                         список литературных произведений на шумерской гли-
                         няной плитке, относящейся к 2000 г. до н.э. .
-                                                             А.И.Михайлов
-
-
+                                                               А.Михайлов
    Сейчас мы расскажем Вам о довольно простых средствах для получения спи-
 ска имен файлов, размещенных на дискете (FILES), размера ее свободной час-
 ти (DSKF) и некоторой другой справочной информации.
@@ -281,11 +268,9 @@
    Если параметр I указан и на диске имеется файл с этим именем,то данный
 факт подтверждается выводом единственного имени I (в противном случае  Вы
 прочтете неприятное сообщение: "File not found").
-
    П р и м е р ы.      FILES                   100 FILES
    ─────────────       FILES "Игры"            LFILES
 
-
                               ┌───────────────┐
    Функция                    │     DSKF(n)   │ ,
                               └───────────────┘
@@ -300,7 +285,6 @@
 скете, находящейся в дисководе A;
    если значение n = 2, то Вы получите информацию о свободном месте на ди-
 скете, находящейся в дисководе B.
-
    П р и м е р ы.   α) PRINT DSKF(0):PRINT DSKF(1):PRINT DSKF(2)
    ─────────────    β)  X=1:PRINT DSKF(X)
                     γ)  IF DSKF(0)>200 THEN 1000
@@ -311,7 +295,6 @@
   │   OPEN "И м я  ф а й л а" FOR INPUT AS#1:PRINT LOF(1):CLOSE #1   │
   └──────────────────────────────────────────────────────────────────┘
 
-
             IX.1.4    О п е р а т о р ы  NAME, COPY  и  KILL
 
    Изменение имени программного файла или файла данных производится по ко-
@@ -331,19 +314,17 @@
    При задании имени J разрешено использование символов "?". Но при реаль-
 ном формировании имени J на дискете каждый такой символ будет заменен  на
 элемент из соответствующей позиции имени I.
-
    П р и м е р ы.         α) NAME "алфавит" AS "АЛФ"
    ─────────────          β) name X$ as "X.1"
                           γ) 200 NAME "PQR.XYZ" AS "?.?11"
    В последнем случае новое имя будет выглядеть так:
-
                                 Р   ▲   .Х11
                                     │
                                7 пробелов
 
    Для дублирования на дисках программных файлов и файлов данных  применя-
 ется команда (оператор) ┌─────────────────────┐
-                        │     COPY i TO j     │
+                        │     COPY i TO j     │ ,
                         └─────────────────────┘
 где: 1) COPY ("копировать"),ТО("в") - служебные слова;
      2)   i - строковое выражение, значение которого определяет имя исход-
@@ -356,7 +337,6 @@
 файла с именем j заменяется на содержимое файла с именем i и, естественно,
 "старое" содержимое файла с именем j пропадает!
    Если  i или j - файлы данных, то они не должны быть открыты!
-
    П р и м е р ы.   α)  COPY "AL" TO "LA"
    ─────────────    β)  COPY "X" TO "X.1"
                     γ)  10  SAVE "U.1"
@@ -385,12 +365,12 @@
 нию (стиранию) подвергается лишь справочная информация о файле.
    Если I - имя файла данных, то при выполнении команды KILL он не должен
 быть открыт.
-
    П р и м е р ы.   α) KILL"Бочка":KILL"R.T"
    ─────────────    β) X$="ЮюЮ":KILL X$
                     γ) 100 FOR K=1 TO 25:KILL"ЦЕХ."+MID$(STR$(K),2):NEXT
 
 
+
         IX.1.5.  О п е р а т о р ы  LOAD, SAVE, RUN  и  MERGE
 
                              ┌──────────────────┐
@@ -407,19 +387,17 @@
    α) в кодах ASCII:
                                  10 X=1
    β) во внутреннем представлении (по кодам):
-
             FF   09   80   0A   00   58   EF   12   00   00   00        .
             ──   ───▲───   ───▲───   ──   ▲    ──   ─▲   ───▲───
     Начало  ▲       │         │       ▲   │    ▲     │      └  Конец
   программы ┘ Адрес следу-  Номер     └ X =  1 ┘    Конец     программы
               ющей строки  строки (10)              строки
-
 ┌───────────────────────────────────────────────────────────────────────┐
 │ Если данная программа впоследствии будет погружаться в память для сли-│
 │ яния с другими программными модулями,  то ее необходимо записывать  в │
 │                               коде ASCII.                             │
 └───────────────────────────────────────────────────────────────────────┘
-   Заметим что формат ASCII приводит к увеличению в несколько раз времени
+   Заметим,что формат ASCII приводит к увеличению в несколько раз времени
 записи программ из оперативной памяти на дискету, а также их чтения с дис-
 кеты в память. К тому же для их размещения на дискете требуется  приблизи-
 тельно на 30% больше места, чем для соответствующих программ,  написанных
@@ -428,14 +406,12 @@
 записи на него новой программы под тем же именем, старый файл пропадает и
 происходит изменение размера свободной  части диска в соответствии с новы-
 ми размерами файла с именем I.
-
    П р и м е р ы.  α)  SAVE"PROTOOL.SYS"
    ─────────────   β)  X$="Z80.ABC":SAVE X$:SAVE"PRIMER.BAS",A
                    γ)  10 FOR M=1 TO 30:SAVE"палата"+MID$(STR$(М),2):NEXT
 
    Для считывания программ с дискеты  в оперативную  память  используются
 команды (операторы) LOAD и RUN.
-
     1. По команде             ┌───────────────┐
                               │   LOAD I[,R]  │ ,
                               └───────────────┘
@@ -443,11 +419,10 @@
        I - строковое выражение,  значение  которого определяет  имя файла;
        R - необязательный параметр;
 прежде всего  закрываются  все файлы и оперативная  память  очищается  от
-программ и данных. Далее, программа, записанная на дискете в машинных  ко-
+программ и данных. Далее  программа, записанная на дискете в машинных  ко-
 дах или формате ASCII под именем I, загружается в оперативную память.
    При наличии параметра R после загрузки производится  запуск  программы
 на счет.
-
    П р и м е р ы.    α)  LOAD"X.Y"
    ─────────────     β)  Z$=MID$(A$,5,3):LOAD Z$,R
     ┌──────────────────────────────────────────────────────────────┐
@@ -462,10 +437,9 @@
 в оперативную память загружается и запускается на счет программа, записан-
 ная на диске под именем I в машинных кодах или в формате ASCII.
    При отсутствии параметра R перед загрузкой файла с именем I  закрывают-
-ся все открытые файлы и память очищается от программ и данных.
+ся все открытые файлы, и память очищается от программ и данных.
    При наличии параметра R из памяти удаляются программы и значения  пере-
 менных. Однако файлы данных  н е  з а к р ы в а ю т с я !
-
    П р и м е р [5].
    ─────────────── 
    1 'Меню многомодульного файла "MMF"
@@ -479,7 +453,7 @@
    15 RUN"прог.В",R
    16 RUN"прог.С",R
    17 RUN"прог.Д",R
-   Приведем вид отдельного модуля, например, модуля с именем "прог.А":
+   Приведем вид отдельного модуля, например модуля с именем "прог.А":
    10 PRINT"Выполняется программа А"
    20 RUN"ММF",R
 
@@ -496,24 +470,22 @@
    └────────────────────────────────────────────────────────────────┘
    Далее производится слияние программы  А, находящейся  в  памяти, с про-
 граммным файлом, записанным на диске в формате ASCII под именем I.
-
    П р и м е р ы.     α)  MERGE "TTT"
    ─────────────      β)  L$="техника":MERGE L$
                       γ) 100 MERGE "LIST.3"
    Обратите внимание на тот факт,что программы, вызываемые командой MERGE,
-имеют более высокий приоритет, по сравнению с программами, находящимися в
+имеют более высокий приоритет  по сравнению с программами, находящимися в
 памяти компьютера. Поэтому  если в объединяемых программах имеются строки
 с одинаковыми номерами, то строки программы в памяти компьютера будут  за-
 менены соответствующими строками "добавляемой" программы с именем I.
    Наиболее целесообразно использовать этот оператор при работе  с библио-
 теками подпрограмм на магнитной ленте или на дискете. Покажем, как это де-
 лается.
-
    П р и м е р.  Предположим, что программа,находящаяся в памяти,занимает
    ────────────  строки с 10 по 1290. Для добавления подпрограммы, назван-
 ной при записи на дискету "ROUT1" и занимающей строки с 10 по 190,сначала
 Вы должны сохранить программу, находящуюся в памяти.
-   После этого, Вы вызываете подпрограмму "ROUT1", используя команды LOAD
+   После этого  Вы вызываете подпрограмму "ROUT1", используя команды LOAD
 или CLOAD.
    Теперь используйте команду RENUM для перенумерации строк  подпрограммы,
 начиная, например, со строки 10000.
@@ -524,14 +496,13 @@
 приведет к тому, что в  конце  текста  основной  программы будет добавлен
 текст подпрограммы с номерами строк, начинающимися с 10000.
 
-      IX.2.   Ф а й л ы  д а н н ы х  п р я м о г о  д о с т у п а
 
+      IX.2.   Ф а й л ы  д а н н ы х  п р я м о г о  д о с т у п а
 
                                Я  знаю, что положил это  в надежное место,
                                но теперь не могу вспомнить,в какое именно!
                                              Из диалога на приеме у врача
 
-
    Как мы уже отмечали (см. главу V), файл данных  п р я м о г о  доступа
 представляет собой последовательность нумерованных групп значений, называ-
 емых  з а п и с я м и.
@@ -548,6 +519,9 @@
 которому во внутреннем справочнике находится ее фактическое положение  на
 дискете, что позволяет немедленно произвести чтение или запись.  Таким об-
 разом осуществляется прямой  доступ к записям, требующий  примерно одного
+
+
+
 и того же  небольшого  (зависящего от скорости вращения дискеты)  времени
 для всех записей.┌──────────────────────────────┐   ┌──────────────────┐
                  │                              ◀───▶ Запись с данными │
@@ -584,7 +558,6 @@
 
 
           IX.2.1.  К о н т р о л ь н ы е  б у ф е р ы  ф а й л о в
-
                              ┌───────────────┐
    Оператор                  │   MAXFILES=A  │ ,
                              └───────────────┘
@@ -632,7 +605,6 @@
        265  265
       Ok
    Взгляните на схему расположения информации в FCBn :
-
              Управляющая информация ────┐      Д а н н ы е           
                               ┌───┬───┬─▼─┬───┬───┬───┬───┐
                               │▧▧▧│▧▧▧│···│▧▧▧│███│···│███│
@@ -642,7 +614,6 @@
                                 │
               Байт, адрес которого возвращает функция VARPTR(#n)
 
-
             К о н т р о л ь н ы й  б у ф е р  ф а й л а  (FCB)
           ┌─────┬────────┬──────────────────────────────────────┐
           │Номер│  И м я │         С о д е р ж и м о е          │
@@ -654,8 +625,8 @@
           │     │        │ 2 - OPEN FOR APPEND (для диска)      │
           │     │        │ 4 - файл прямого доступа (для диска) │
           │     │        │ 4 - файл последовательного доступа,  │
-          │     │        │ открытый и для чтения, и для записи, │
-          │     │        │ например, OPEN "COM:" AS#1           │
+          │     │        │ открытый  для чтения  и для записи,  │
+          │     │        │ например  OPEN "COM:" AS#1           │
           │     │        │ 8 - OPEN FOR APPEND                  │
           │     │        │     (для устройства MEM:)            │
           ├─────┼────────┼──────────────────────────────────────┤
@@ -694,7 +665,7 @@
   │                     С п е ц и ф и к а ц и я  ф а й л а
   │   ┌─────┬────────────────────────────────────────────────┬──────────┐
   │   │Номер│              С о д е р ж и м о е               │Количество│
-  │   │байта│                  б а й т о в                   │  байтов  │
+  │   │байта│                   б а й т а                    │  байтов  │
   │   ├─────┼────────────────────────────────────────────────┼──────────┤
   └──▶│ +00 │ Н о м е р  дисковода (0 - по умолчанию, 1 - A:)│    1     │
       │ +01 │                                                │          │
@@ -846,7 +817,6 @@
    │  Заметим, что этот оператор будет выполнен только в том случае, │
    │                если файл был предварительно открыт.             │
    └─────────────────────────────────────────────────────────────────┘
-
    П р и м е р 1. В качестве примера рассмотрим файл с прямым доступом,со-
    ─────────────  держащий информацию о личной библиотеке.  Каждая запись
 содержит следующую информацию:
@@ -864,7 +834,6 @@
    Отметим, что разрешается использовать несколько команд FIELD с разными
 форматами для одного и того же буфера n. Всегда  действует  то  разбиение
 FCBn на поля, которое предложено последней выполненной командой  FIELD.
-
    П р и м е р 2.
    ─────────────  
    10 MAXFILES=3:OPEN"Student" AS#2 LEN=40
@@ -902,7 +871,6 @@
 │      T       │ Лучший результат       │         4        │ Вещ. число │
 └──────────────┴────────────────────────┴──────────────────┴────────────┘
                                           Итого: 64
-
    Длина и тип каждого поля указаны вместе с переменными, которые в Вашей
 программе будут хранить данные, извлеченные из записей. Совершенно  необя-
 зательно использовать одни и те же переменные во всех программах, обращаю-
@@ -946,7 +914,6 @@
 байты заполняются пробелами. Таким образом, операторы LSET и RSET гаранти-
 руют, что длина значения переменной будет приведена в соответствие  с дли-
 ной, указанной в операторе FIELD.
-
    П р и м е р 1.  10  OPEN "EF" AS#1 LEN=9
    ─────────────   20  FIELD #1,5 AS M$,14 AS L$
                    30  INPUT R$:LSET M$=R$
@@ -959,7 +926,6 @@
                          НЕБОСВОД   └───┴───┴───┴───┴───┴
                    Ok                      5 байтов
 
-
    П р и м е р 2. Приведем фрагмент программы,  в котором  формируется за-
    ─────────────  пись файла, содержащего информацию о личной  библиотеке.
 В буфер заносится информация о романе Л.Н.Толстого "Война и мир". Структу-
@@ -975,10 +941,10 @@
    80 LSET DATE$="10.5.1988"
 
    Команды LSET и RSET можно использовать не только при работе с файлами.
-
    П р и м е р 3.    10 L$=SPACE$(20):Z$="Волк"
    ─────────────     20 RSET L$=Z$:PRINT L$
 
+
    IX.2.5.  Ф у н к ц и и  MKI$(), MKS$(), MKD$(), CVI(), CVS(), CVD()
 
    Вам, конечно, известно, что буферные  переменные  являются  строковыми.
@@ -986,21 +952,21 @@
 ной  m  байтов. Если требуется "упаковать" в γ числовое  значение,то поль-
 зуются функциями:
         ┌────────────────────────────────────────────────────────────┐
-    α)  │                          MKI$(L)                           │
+    α)  │                          MKI$(L)  ,                        │
         │ где:  MKI("MaKe Integer"-"преобразовать целое значение")   │
         │          - служебное слово;                                │ 
         │       L - арифметическое выражение целого типа;            │
         │       m=2                                                  │;
         └────────────────────────────────────────────────────────────┘
         ┌────────────────────────────────────────────────────────────┐
-    β)  │                          MKS$(L)                           │
+    β)  │                          MKS$(L)  ,                        │
         │ где:  MKS("MaKe Single"-"преобразовать значение одинарной  │
         │         точности") - служебное слово;                      │
         │       L - арифметическое выражение одинарной точности;     │
         │       m=4                                                  │;
         └────────────────────────────────────────────────────────────┘
         ┌────────────────────────────────────────────────────────────┐
-    γ)  │                          MKD$(L)                           │
+    γ)  │                          MKD$(L)  ,                        │
         │ где:  MKD ("MaKe Double"-"преобразовать значение двойной   │
         │         точности") - служебное слово;                      │
         │       L - арифметическое выражение двойной точности;       │
@@ -1017,24 +983,19 @@
 оперативной памяти. Именно поэтому с помощью оператора PRINT  невозможно
 выдать на печать или экран  дисплея  результаты  работы  функций  MKI$(),
 MKS$() и MKD$() !
-
    П р и м е р  1.
    ────────────── 
    α) функция MKI$(17217) возвращает строку "AC".  Рассмотрим, как это по-
 лучается:
-
    17217=&B0100001101000001=&H4341=&H43·256+&H41=67·256+65
            └──────┘└──────┘                      ▲      ▲
                C       A                         │      └─ Код символа "A"
                                                  └──────── Код символа "C"
-
    β) MKS$(4.14141) возвращает строку "AAAA"
-
    П р и м е р  2.   A$=MKI$(&HE276):PRINT HEX$(ASC(MID$(A$,1,1)));" ";
    ──────────────    HEX$(ASC(MID$(A$,2,1)))
                      76 E2
                      Ok
-
    П р и м е р  3.   10 MAXFILES=5:OPEN "LU" AS#4
    ──────────────    20 FIELD #4, 2 AS A$, 4 AS B$, 8 AS E$
                      30 INPUT X%:LSET A$=MKI$(X%)
@@ -1050,31 +1011,30 @@
                      H A5 a4
                      H A5 a4
                      Ok
-
    Функции MKI$(),MKS() и MKD() выполняют обратное преобразование по отно-
 шению к функциям CVI(), CVS() и CVD(),  к рассмотрению которых  мы сейчас
 приступаем.
-   Пусть в буфер с дискеты считана запись и в некотором ее поле,определен-
+   Пусть в буфер с дискеты считана запись,и в некотором ее поле,определен-
 ном по команде FIELD элементом
                                   m AS γ
-"упаковано" числовое значение. "Распаковка" его или, выборка из  γ  этого
+"упаковано" числовое значение. "Распаковка" его, или выборка из  γ  этого
 значения, реализуется одной из следующих функций:
       ┌────────────────────────────────────────────────────────────┐
-   α) │                           CVI(γ)                           │
+   α) │                           CVI(γ)    ,                      │
       │где:  CVI("ConVert to Integer"-"преобразовать к  целому")-  │
       │        служебное слово;                                    │
       │       γ -  имя буферной переменной;                        │
       │       m=2                                                  │;
       └────────────────────────────────────────────────────────────┘
       ┌────────────────────────────────────────────────────────────┐
-   β) │                           CVS(γ)                           │
+   β) │                           CVS(γ)    ,                      │
       │где:  CVS("ConVert to Single"-"преобразовать к значению оди-│
       │        нарной точности") - служебное слово;                │
       │      γ -  имя буферной переменной;                         │
       │      m=4                                                   │;
       └────────────────────────────────────────────────────────────┘
       ┌────────────────────────────────────────────────────────────┐
-   γ) │                           CVD(γ)                           │
+   γ) │                           CVD(γ)    ,                      │
       │где:  CVD("ConVert to Double"- "преобразовать  к  значению  │
       │        двойной точности") - служебное слово;               │
       │      γ -  имя буферной переменной;                         │
@@ -1082,7 +1042,7 @@
       └────────────────────────────────────────────────────────────┘
    Эти функции преобразуют строки символов в числа. Аргумент состоит из 2,
 4 или 8 байтов и преобразуется в целое число, либо число  с одинарной или
-двойной точностью, в зависимости от вида используемой функции  (CVI,  CVS
+двойной точностью  в зависимости от вида  используемой функции  (CVI, CVS
 или CVD).
 
    П р и м е р  4. 
@@ -1094,17 +1054,14 @@
         5759460            ,так как      GWYF
        Ok                                Ok
    Посмотрите на схему...
-
                   "G"         "W"        "Y"        "F"
                0100 0111   0101 0111  0101 1001  0100 0110
                ▲───▲────    5    7     5    9     4    6
                │   │
                │ Порядок числа = &B1000111-&B1000000 = &B111 = 7
            Знак числа
-
    Сравните эти результаты с представлением чисел в памяти компьютера (см.
-далее главу 10).
-
+далее главу X).
    П р и м е р  5.
    ────────────── 
    10 OPEN "SL" AS#1 LEN=8:FIELD #1,8 AS R$
@@ -1115,8 +1072,6 @@
    C0          123
    Ok
 
-
-
                IX.2.6.  О п е р а т о р ы   PUT  и  GET
 
    Для пересылки ("сброса") сформированной в оперативной памяти записи на
@@ -1137,22 +1092,21 @@
 новая или  о б н о в л е н а  старая запись Р файла В.
    При открытии файла значение Р равно 0. Т е к у щ и м  значением Р  счи-
 тается номер той записи, с которой работал последний выполненный оператор
-PUT или GET. Далее, если в операторе PUT параметр Р не указан, то берется
+PUT или GET. Далее  если в операторе PUT параметр Р не указан, то берется
 его текущее значение, увеличенное на 1.
    Например, в операторе         PUT #1,3        
 второе число (3) определяет номер записи в файле. Если этот  номер  будет
-пропущен, то будет использовано число, на единицу большее,чем в последнем
+пропущен, то будет использовано число на единицу большее  чем в последнем
 выполненном операторе PUT или GET.
    Номер записи может находиться в диапазоне от 1 до 4294967295, в чем Вы
 можете убедиться самостоятельно.
-
    П р и м е р  1.  10 REM формирование файла
    ──────────────   20 MAXFILES=2:OPEN"массив" AS#2 LEN=8:FIELD #2,8 AS M 
+
                     50 FOR I=1 TO 30
                     60    INPUT"Введите число";А:LSET M=MKD$(A):PUT #2
                     90 NEXT
                     100 CLOSE #2
-
    П р и м е р  2.  10 'Объявление FCB0, FCB1, FCB2 и FCB3
    ──────────────   20 'Открытие файла "рыба" с буфером #2
                     30 MAXFILES=3:OPEN "Рыба" AS#2 LEN=13
@@ -1163,7 +1117,6 @@
                     80    INPUT"X$-8";X$:INPUT"Y$-5";Y$
                     90    LSET L$=X$:RSET M$=Y$:PUT #2,K
                     99 NEXT:END
-
    Пусть открыт некоторый файл данных, связанный с буфером FCBn. Полезную
 информацию о файле можно извлечь с помощью функций LOF и LOC.
                               ┌──────────────┐
@@ -1201,13 +1154,13 @@
 файла #1 в буфер полей.
    Если в записи оператора параметр Р отсутствует, то берется текущее зна-
 чение этого параметра, увеличенное на единицу (как и в операторе PUT).
-
    П р и м е р  3.   10 REM Считывание из файла "Массив"
    ──────────────    20 MAXFILES=2:OPEN"Массив" AS#2 LEN=8:FIELD 2,8 AS M
                      50 FOR I=30 TO 1 STEP-1
                      60     GET 2,I:PRINT CVD(M);
                      80 NEXT
 
+
    П р и м е р  4.
    ──────────────
    1 OPEN"числа" AS#1 LEN=10
@@ -1220,7 +1173,6 @@
    13 FOR I=1 TO 5:A(I)=CVI(B$(I)):NEXT I
    18 P=1:FOR T=1 TO 5:P=P+A(T):NEXT T
    19 PRINT P:CLOSE #1:END
-
    П р и м е р  5.
    ──────────────
    10 CLOSE:OPEN"числа" AS#1 LEN=25
@@ -1234,7 +1186,6 @@
    110 GET#1,1:U$=""
    120 FOR T=1 TO 5:U$=U$+B$(T):NEXT T
    150 PRINT"Сумма:";U$
-
    П р и м е р  6.
    ──────────────
    10 CLOSE:OPEN"числа" AS#1 LEN=25
@@ -1253,6 +1204,9 @@
    150     U$=U$+STR$(CVS(B$(T)))+B$(T+1):NEXT
    160 PRINT"Сумма:";U$
 
+
+
+
    Отметим  ключевой  момент при работе с файлами  п р я м о г о  доступа:
 отслеживание "невидимых" указателей. Их два: для дискеты и для буфера.
    Первый указатель содержит ссылку на текущую запись и задается  номером
@@ -1278,7 +1232,6 @@
   │        присваиванием ей некоторого номера (оператором PUT)         │
   │ F.  Файл F  з а к р ы в а е т с я  (оператором CLOSE)              │
   └────────────────────────────────────────────────────────────────────┘
-
    П р и м е р  7.  Запись слова в файл прямого доступа.
    ──────────────
    10 MAXFILES=2:OPEN "EASY" AS#2:FIELD #2,18 AS N$,110 AS D$
@@ -1302,7 +1255,6 @@
   │      └────────────────────────────────────────────────────────────┘│
   │ F.  Файл F  з а к р ы в а е т с я  (оператором CLOSE)              │
   └────────────────────────────────────────────────────────────────────┘
-
    П р и м е р  8.  Чтение слова из файла прямого доступа.
    ──────────────
    10 MAXFILES=2:OPEN "EASY" AS#2:FIELD #2,18 AS N$,110 AS D$
@@ -1310,11 +1262,9 @@
    run
    Психокомпьютерапия
    Ok
-
    В заключении  этого  пункта  приведем примеры, иллюстрирующие действие
 изученных Вами операторов и функций при работе с дисковыми файлами данных
 прямого доступа.
-
    П р и м е р  9.
    ──────────────
    5 CLS
@@ -1326,8 +1276,7 @@
    65 NEXT:CLS
    66 FOR I=1 TO N
    70    GET #1,I:IF O$="5" OR O$="4" THEN PRINT G$,F$;O$
-   80 NEXT
-   90 CLOSE #1
+   80 NEXT:CLOSE #1
 
    П р и м е р  10.  Дана таблица:
    ───────────────
@@ -1381,10 +1330,12 @@
    195 PRINT"Ф.И. успевающих"
    200 FOR I=1 TO B:GET#3,I:PRINT F1$:NEXT I:END     'Вывод на экран
 
+
    П р и м е р  11.
    ───────────────
    10 MAXFILES=3:OPEN"A3" AS#2 LEN=2:FIELD #2,2 AS K$
    20 POKE VARPTR(#2)+9,66:POKE VARPTR(#2)+10,65  'Вместо LSET K$="ba"
+
    30 PUT #2,2:CLOSE#2
    40 OPEN"a3"AS#2 LEN=2:FIELD #2,2 AS K$:GET #2,2:CLOSE #2
    run
@@ -1443,7 +1394,6 @@
 или только для записи, но не для одновременного выполнения этих операций.
    Для работы с файлами данных  п о с л е д о в а т е л ь н о г о доступа
 в MSX-Disk BASIC предусмотрен ряд операторов и функций.
-
          IX.3.1.  О п е р а т о р ы   MAXFILES= , OPEN  и  CLOSE
 
    Перемещение логических строк последовательных файлов из оперативной па-
@@ -1476,6 +1426,10 @@
    Учтите,что при использовании оператора MAXFILES= автоматически выполня-
 ется оператор CLEAR, но если Вы используете в программе оба оператора, то
 располагайте оператор MAXFILES=  вслед за оператором CLEAR.
+
+
+
+
    Вам, конечно же, ясно, что перед использованием файла  Вы  должны объя-
 вить его  о т к р ы т ы м . Открытие файла осуществляется оператором OPEN,
 в котором задается:
@@ -1493,6 +1447,11 @@
 ("присоединение") - служебные слова;
       В - строковое выражение, значение  которого задает имя устройства и
 имя файла.
+
+
+
+
+
  ┌──────────────────────────────────────────────────────────────────────┐
  │   Сейчас мы познакомим Вас с именами  у с т р о й с т в:             │
  │   α) устройство CRT: отвечает за вывод информации на  т е к с т о -  │
@@ -1538,7 +1497,6 @@
     │         б у ф е р         │──OUTPUT──▶     Д и с к е т а     │
     │         ф а й л а         │──APPEND──▶                       │
     └───────────────────────────┘          └───────────────────────┘
-
    Оператор OPEN с параметром FOR OUTPUT создает новый дисковый файл с за-
 данным именем. Если файл с таким именем уже есть,то он автоматически  уни-
 чтожается и создается новый файл с тем же именем.
@@ -1549,6 +1507,9 @@
    Модификация оператора с параметром FOR INPUT реализует поиск данных  с
 конкретным именем, отсутствие которого означает ошибку.
 
+
+
+
    П р и м е р ы:
    ─────────────
    α) OPEN"CAS:ADDRESS" FOR INPUT AS #1
@@ -1567,7 +1528,7 @@
        Направление: APPEND (добавление к уже существующему файлу)
        Номер файла: 2
    Можно открыть файл с последовательным доступом в режиме записи, исполь-
-зуя один номер файла, и в режиме чтения, используя  другой. Однако, каждо-
+зуя один номер файла, и в режиме чтения, используя  другой. Однако  каждо-
 му номеру файла будет при этом соответствовать  с в о й  б у ф е р, никак
 не связанный с другими.
    Если же Вы используете только один буфер, то для изменения  режима  до-
@@ -1598,16 +1559,15 @@
           IX.3.2.  О п е р а т о р ы   PRINT# , PRINT#n,USING .
                        Ф у н к ц и и  LOF() и LOC() 
 
-
                              Да,- повторял он себе,- если бы на борту "Пи-
                              лигрима" я знал все, что должен знать настоя-
                              щий моряк, сколько  несчастий  можно было бы
                              избежать!
-                                          Жюль Верн. Дети капитана Гранта
-
+                                             Ж.Верн. Дети капитана Гранта
 
    Для формирования строк файла с последовательным доступом  используются
 операторы  PRINT#  и  PRINT#USING.
+
    Оператор PRINT# записывается в таком виде:
                           ┌────────────────────────┐
                           │               {└─┘}    │
@@ -1638,10 +1598,8 @@
 ся буфер или закрывается файл.
    Для экономного размещения данных на диске и избежания  ошибок  при  их
 считывании целесообразно список S в операторе PRINT# записывать в виде:
-
                    γ1;",";γ2;","; ...;",";γк{└─┘}
                                             { ; }
-
    В этом случае значения в создаваемой строке располагаются  в  п л о т -
 н о м  формате и отделяются друг от друга запятыми. 
    Будем считать, что информация в одном операторе  PRINT# составляет  от-
@@ -1649,17 +1607,14 @@
 логической строки соответствует переменная из списка S.
    Так логическая строка, состоящая из трех полей - фасон одежды S$, цвет  
 одежды C$, цена одежды P - будет выведена в файл оператором
-
                    PRINT #1,S$;",";C$;",";P
                             ▲      ▲      ▲
                             │      │      │
           Переменные, определяющие поля данной логической строки
-
    Если значение какого-либо строкового выражения γi содержит символы ","
 и (или) ";", то в качестве разделителей можно использовать символ ";", за-
 даваемый строковой функцией CHR$(34):
                            CHR$(34) γs CHR$(34)
-
    П р и м е р  1 [7].  Запись данных в файл последовательного доступа.
    ─────────────────
    10 OPEN "GAMES" FOR OUTPUT AS #1
@@ -1667,6 +1622,10 @@
    30    INPUT"Введите название игры";F$:PRINT #1,F$
    50 NEXT X
    60 CLOSE #1
+
+
+
+
    run
    Введите название игры? Футбол
    Введите название игры? Гольф
@@ -1674,7 +1633,6 @@
    Введите название игры? Хоккей
    Введите название игры? Регби
    Ok
-
    Если файл с именем "GAMES" уже существовал, то данная программа сотрет
 его старое содержимое и будет писать туда заново.
    Оператор PRINT# , не оканчивающийся символом "," или ";" автоматически
@@ -1725,6 +1683,7 @@
    50 PRINT #1,R;",";I$;K$;I$
    60 CLOSE #1
 
+
    Оператор PRINT#,USING записывается в таком виде:
                         ┌─────────────────────────┐
                         │    PRINT #n,USING T,S   │ ,
@@ -1748,12 +1707,11 @@
    40 FOR K=1 TO S:X=INT(RND(1)*3000)/99:PRINT #4,USING "###.##";X:NEXT K
    50 CLOSE #4
 
-   Однако, следует весьма осторожно употреблять префиксы, обозначающие де-
+   Однако  следует весьма осторожно употреблять префиксы, обозначающие де-
 нежные единицы ("$$","**" и "**$"), так как  они  вызывают форматирование
 числовых величин как нечисловых. По этой причине числовые  величины, снаб-
 женные в дисковом файле такими префиксами, не могут быть считаны оттуда в
 их исходном виде.
-
    П р и м е р  8.
    ──────────────
    10 OPEN "SAMPLE.DAT" FOR OUTPUT AS #1
@@ -1782,6 +1740,9 @@
 информации, считанных в буфер или записанных на дискету.
 
 
+
+
+
            IX.3.3.   О п е р а т о р ы  INPUT, LINE INPUT #n .
                         Ф у н к ц и и  INPUT$ и EOF
 
@@ -1800,7 +1761,6 @@
 
    Оператор LINEINPUT# , считывающий одиночное строковое  значение, позво-
 ляет решить "проблему запятой".
-
    П р и м е р  1.
    ──────────────
    10 OPEN "TEST.DAT" FOR OUTPUT AS #1
@@ -1852,7 +1812,6 @@
    Хоккей
    Регби
    Ok
-
    П р и м е р  4.
    ──────────────
    10 OPEN "SAMPLE.DAT" FOR OUTPUT AS #1
@@ -1862,7 +1821,6 @@
    run
    Второе значение в файле: 567
    Ok
-
    П р и м е р  5.
    ──────────────
    10 OPEN "TEST.DAT" FOR OUTPUT AS #1
@@ -1874,7 +1832,6 @@
    Значение номер 1: Кремний 14 28.0855
    Input past end in 50
    Ok
-
    При выполнении оператора PRINT# (строка 20) в  файл  записываются  три
 различных значения, но поскольку в операторе  они  разделяются  символами
 ";", в файл они будут заноситься без разделителей. Когда оператор  INPUT#
@@ -1889,7 +1846,6 @@
 разделителей между отдельными значениями. Один из самых простых состоит в
 том, чтобы присвоить значение "," строковой переменной и записывать ее по-
 сле каждого значения в операторе PRINT# .
-
    П р и м е р  6.
    ──────────────
    10 OPEN "TEST.DAT" FOR OUTPUT AS #1
@@ -1906,7 +1862,6 @@
    Отметим, что строковая величина в дисковом файле, могущая содержать за-
 пятую, должна быть  записана  в  кавычках; оператор  INPUT#  обеспечивает
 устранение этих кавычек при считывании.
-
    П р и м е р  7.
    ──────────────
    10 OPEN "TEST.DAT" FOR OUTPUT AS #1
@@ -1916,7 +1871,6 @@
    run
    Первое значение в файле: Манагуа, Никарагуа
    Ok
-
    П р и м е р  8[7]. О б н о в л е н и е файла последовательного доступа.
    ─────────────────
    10 OPEN "GAMES" FOR INPUT AS #1   'Открывается "старый" файл
@@ -1929,7 +1883,6 @@
    80 CLOSE 1,2                      'Оба файла закрываются
    90 KILL"GAMES"                    'Удаление исходного файла
    100 NAME "GAMES2" AS "GAMES"      'Переименование "нового" файла
-
    П р и м е р  9. 
    ──────────────
    10 CLEAR 1000:MAXFILES=5:DIM M(200)
@@ -1962,6 +1915,8 @@
                          ┌─────────────────────┐
                          │   INPUT$(m[,[#]n])  │ ,
                          └─────────────────────┘
+
+
 где:  INPUT$ - служебное слово;
       m  - арифметическое выражение, целая часть значения которого должна
 принадлежать отрезку [1,255];
@@ -1976,13 +1931,12 @@
    │  Все символы, включая разделители, передаются  в программу, за  │
    │  исключением специального символа с кодом ASCII &H1A , который  │
    │  воспринимается как признак конца файла и "прекращает  выполне- │
-   │                          ние" функции                           │
+   │                          ние" функции.                          │
    └─────────────────────────────────────────────────────────────────┘
    Функция INPUT$ предоставляет возможность последовательно выбирать сим-
 волы из файла независимо от разделителей строк!
    Для полного уяснения семантики функции  INPUT$ рекомендуется "прогнать"
 следующий пример при различных значениях параметров S и X.
-
    П р и м е р  10[5]. 
    ──────────────────
    10 CLEAR 1000:MAXFILES=5:DIM M(200)
@@ -1999,7 +1953,6 @@
    120 IF Z=0 THEN 140
    130 PRINT INPUT$(Z,#4)
    140 CLOSE #4
-
    Заметим, что "длину" файла не всегда можно определить заранее: предста-
 вьте себе файл адресов, который все время приходится открывать  в  режиме
 добавления данных (FOR APPEND). Функция EOF позволяет Вам решить эту проб-
@@ -2015,13 +1968,13 @@
 сравнивает код очередного символа с кодом &h1А и возвращает:
    -1 ("true"), если найден код конца файла, и
     0 ("false") в противном случае.
-
    П р и м е р  11.  Продемонстрируем способ использования функции EOF().
    ───────────────
    10 OPEN "TESTF" FOR INPUT AS #1
    20 IF EOF(1) THEN 60    
    30 INPUT #1,A:PRINT A:GOTO 20
    60 CLOSE #1
+
    Ниже приведены 3 схемы, определяющие последовательность операций, кото-
 рые должны быть выполнены при перемещениях строк файлов п о с л е д о в а-
 т е л ь н о г о  д о с т у п а  из оперативной памяти на дискету  и  в об-
@@ -2036,7 +1989,6 @@
 │       тически.                                                        │
 │    D. Файл В закрывается.                                             │
 └───────────────────────────────────────────────────────────────────────┘
-
 П р и м е р  12 [7]. 
 ───────────────────
    10 OPEN "DRESS" FOR OUTPUT AS #1
@@ -2053,7 +2005,6 @@
    Отдельные сегменты программных файлов - это специфические файлы данных
 последовательного доступа. Поэтому программы или их фрагменты можно загру-
 жать в память как данные. Ограничимся здесь лишь двумя примерами.
-
    П р и м е р  13. Выполнение этой программы приводит к считыванию и  вы-
    ───────────────  воду на экран всех строк программы "Симпсон".
    10 'Чтение программного файла
@@ -2061,8 +2012,6 @@
    30 LINE INPUT #1,R$:PRINT R$
    50 IF NOT EOF(1) THEN 30
    60 CLOSE #1
-
-
    П р и м е р  14. Выполнение программы дает возможность "просмотреть" в
    ───────────────  той же самой программе "Симпсон" строки с номерами от
 30 и до 70.
@@ -2074,7 +2023,6 @@
    60 PRINT R$
    80 IF NOT EOF(1) THEN 30
    90 CLOSE #1
-
 ┌───────────────────────────────────────────────────────────────────────┐
 │ 2. Общая схема пополнения файла В строками с его  к о н ц а:          │
 │    А. В оперативной памяти резервируется буфер (оператором MAXFILES=).│
@@ -2085,7 +2033,6 @@
 │       тически.                                                        │
 │    D. Файл В закрывается.                                             │
 └───────────────────────────────────────────────────────────────────────┘
-
    П р и м е р  15 [7].  Добавление в файл спортивной информации названия
    ────────────────────  двух новых видов спорта.
    10 OPEN "GAMES" FOR APPEND AS#1
@@ -2099,7 +2046,6 @@
 │        или LINEINPUT$, или INPUT$)                                    │
 │    D. Файл В закрывается                                              │
 └───────────────────────────────────────────────────────────────────────┘
-
    П р и м е р  16 [7].
    ───────────────────
    10 OPEN "DRESS" FOR INPUT AS#2
@@ -2115,10 +2061,8 @@
    Ok
 
 
-
                        IX.3.4.   П р и м е р ы
 
-
    1. Гидрометцентр ведет статистику выпадения снега по регионам, для каж-
 дого из которых заведен файл последовательного доступа.Во всех файлах име-
 ется по три элемента данных: имя метеоролога, название  региона, количест-
@@ -2203,6 +2147,9 @@
     α) создайте файл последовательного доступа и  заполните  его  именами
 студентов, названиями академических курсов и оценками;при этом воспользуй-
 тесь следующими данными:
+
+
+
             ┌──────────────┬────────────────────┬─────────┐
             │ Имя студента │ Академический курс │ Отметка │
             ├──────────────┼────────────────────┼─────────┤
@@ -2238,11 +2185,9 @@
    300 IF INPUT$(1)="Д" THEN END ELSE GOTO 220
 
 
-
           IX.3.5.  В ы в о д   ф а й л о в   д а н н ы х
                       на  э к р а н  и  п р и н т е р
 
-
    Текстовые экраны 0 и 1, графические экраны, а также принтер могут быть
 объявлены устройствами вывода файлов последовательного доступа.
    О т к р ы т и е  таких файлов осуществляется оператором
@@ -2280,11 +2225,9 @@
    1)  10 COLOR 1,11,7:SCREEN 2:OPEN "GRP:" FOR OUTPUT AS#1
        30 PSET (69,80):PRINT #1,"Текст на графическом экране SCREEN 2"
        50 GOTO 50
-
    2)  10 COLOR 1,11,7:SCREEN 3:OPEN "GRP:" FOR OUTPUT AS#1
        30 PSET (50,80):PRINT #1,"Текст на графическом экране SCREEN 3"
        50 GOTO 50
-
    3) Программа "777", записанная на диске в формате  ASCII, выводится на
 графический экран:
        10 COLOR 1,15,8:SCREEN 3:PSET(0,10),15:MAXFILES=2
@@ -2292,14 +2235,12 @@
        50 LINE INPUT #2,R$:PRINT #1,R$
        80 IF NOT EOF(2) THEN 50
        90 CLOSE:GOTO 90
-
    4) Файл данных последовательного доступа,записанный на дискете под име-
 нем "КАРП", выводится на принтер.
        15 MAXFILES=2
        18 OPEN "Карп" FOR OUTPUT AS#1:OPEN "LPT:" FOR OUTPUT AS#2
        30 INPUT #1,M:PRINT #2,M;
        35 IF NOT EOF(1) THEN 30
-
    П р и м е р 5 [76].  Простейший  г р а ф и ч е с к и й  редактор.
    ──────────────────   При формировании изображения Вам могут понадобить-
 ся такие команды:
@@ -2324,6 +2265,7 @@
    40 '           (подпрограмма)
    60 PUT SPRITE 0,(16,P),1,H
    70 PUT SPRITE 1,(22,P),1,T
+
    80 PUT SPRITE 2,(28,P),1,U
    90 PUT SPRITE 3,(16,P+8),1,H1
    100 PUT SPRITE 4,(22,P+8),1,T1
@@ -2495,10 +2437,12 @@
 
 
 
+
+
+
             IX.4.  И с п о л ь з о в а н и е  RAM - д и с к а
             (т о л ь к о  д л я  к о м п ь ю т е р о в  MSX-2)
 
-
                              RAMdisk (псевдодиск) - логическое устройство,
                              обеспечивающее хранение файлов  в специально
                              выделенной области оперативной памяти.Исполь-
@@ -2506,7 +2450,6 @@
                                          Англо-русский словарь по програм-
                                          мированию и информатике
 
-
    Свободное пространство памяти, размер которого можно определить при по-
 мощи функций FRE(0) и FRE(""),  автоматически распределяется интерпретато-
 ром MSX-BASIC.  Когда программа слишком длинна или использует слишком мно-
@@ -2593,17 +2536,15 @@
         │   Помните, однако, что имя устройства МЕМ: обязано    │
         │ присутствовать всякий раз при упоминании имени файла! │
         └───────────────────────────────────────────────────────┘
-
 Приведем несколько примеров записи операторов для работы с RAM-диском:
    MERGE"MEM:файл"
    OPEN "MEM:файл" FOR INPUT  AS#1               SAVE"MEM:файл"
    OPEN "MEM:файл" FOR OUTPUT AS#6               LOAD"MEM:файл"
    OPEN "MEM:файл" FOR APPEND AS#15              RUN"MEM:файл" 
-
    П р и м е р.
    ───────────
    CALL MEMINI
- Ok
+   Ok
    10 OPEN "MEM:GAMES" FOR OUTPUT AS#1
    20 FOR X=1 TO 3
    30    INPUT"Введите название игры";F$:PRINT #1,F$
@@ -2636,7 +2577,7 @@
                       └──────────────────────────────┘
 возвращает позицию в файле, начиная с номера файла. Например, LOC вовраща-
 ет 0 сразу после того, как файл открыт для ввода и вывода (OPEN FOR INPUT/
-OUTPUT) и возвращает длину файла cразу после того, как файл открыт для до-
+OUTPUT),и возвращает длину файла cразу после того, как файл открыт для до-
 бавления (OPEN FOR APPEND).   
                       ┌────────────────────────────────┐
    Функция            │    LOF(Н о м е р  ф а й л а)   │
@@ -2650,10 +2591,8 @@
 логично соответствующим конструкциям,используемым в версии MSX-Disk BASIC.
 
 
-
            IX.5.  Ф а й л ы  на  м а г н и т н о й  л е н т е
 
-
    Вывод программных файлов и файлов данных из оперативной памяти  на маг-
 нитную ленту и обратное считывание  с  ленты  в  память реализуется через
 устройство, называемое  м а г н и т о ф о н о м. Для идентификации файлам
@@ -2674,6 +2613,7 @@
 ративной памяти на ленту.
    6. CLOAD - команда  чтения в оперативную память (или верификации)  про-
 грамм, записанных на ленте во внутреннем представлении.
+
    7. BSAVE - команда  записи во внутреннем представлении программных фай-
 лов или файлов данных из конкретного участка оперативной памяти на ленту.
    8. BLOAD - команда  считывания в определенную область оперативной памя-
@@ -2691,6 +2631,7 @@
    Приступим к краткому описанию синтаксиса и семантики  упомянутых  выше
 средств организации файлов на магнитной ленте и работы с ними.
 
+
    IX.5.1.  Р а б о т а   с   п р о г р а м м н ы м и   ф а й л а м и
 
    В этом пункте описаны команды  SAVE, LOAD, MERGE, RUN.
@@ -2742,11 +2683,10 @@
                        └───────────────────────┘
    Эта команда, если в ней указаны имя устройства и имя программы,загружа-
 ет и запускает на выполнение программу, сохраненную в формате  ASCII. Она
-похожа на команду LOAD (с параметром R), за тем исключением,что она загру-
+похожа на команду LOAD (с параметром R)  за тем исключением,что она загру-
 жает программы только в формате ASCII и закрывает все открытые файлы.  
    В обоих случаях перед загрузкой программы автоматически выполняется ко-
 манда NEW.
-
    П р и м е р.  Команда  RUN"CAS:PROG1" загружает и запускает  программу
    ───────────   с именем "PROG1",сохраненную на магнитной ленте командой
                               SAVE"CAS:PROG1"
@@ -2769,7 +2709,7 @@
                              └───────────────┘
 подгружает в память первую встреченную на ленте в формате ASCII программу.
    Обратите внимание на тот факт,что программы, вызываемые командой MERGE,
-имеют более высокий приоритет, по сравнению с программами, находящимися в
+имеют более высокий приоритет  по сравнению с программами, находящимися в
 памяти компьютера. Поэтому если в объединяемых программах имеются  строки
 с одинаковыми номерами, то строки программы в памяти компьютера будут  за-
 менены соответствующими строками "добавляемой" программы.                                
@@ -2795,7 +2735,6 @@
 │  Команда CSAVE "сохраняет" программу во  в н у т р е н н е м  формате,│
 │        т.е. в том виде, в каком она хранится в памяти компьютера.     │
 └───────────────────────────────────────────────────────────────────────┘
-
    П р и м е р ы:     
    ─────────────
    α) команда  CSAVE"PROG1" сохраняет файл, имя которого "PROG1", во внут-
@@ -2813,7 +2752,7 @@
 рости, на которой программа была сохранена. Таким образом, Вам  не  нужно
 повторно указывать скорость.
    Если имя программы не указано в операторе,то будет загружена первая же
-программа, сохраненная во внутренем формате.
+программа, сохраненная во внутреннем формате.
    Если Вы указываете имя программы,то следите за правильностью ввода име-
 ни (т.е.,например, если Вы использовали прописные буквы при написании име-
 ни, Вы должны ввести имя программы также прописными буквами).
@@ -2859,7 +2798,6 @@
 чало данных, будет автоматически рассматриваться как адрес выполнения при
 загрузке этих данных (эта часть информации полезна только в том случае,ес-
 ли сохраняются подпрограммы на машинном языке).
-
    П р и м е р ы.    1) BSAVE "CAS:ГОСТ",&HF000,&HF0EE
    ─────────────     2) BSAVE "CAS:" A,B,C
    Команда BSAVE позволяет  сохранить  часть  оперативной памяти на ленте
@@ -2886,7 +2824,6 @@
 в оперативную память загружается файл, записанный на ленте во  внутреннем
 представлении под именем, равным значению выражения α.При наличии парамет-
 ра R прочитанная программа автоматически запускается на счет.
-
    П р и м е р ы.  1)  BLOAD "CAS:DD"
    ─────────────   2)  BLOAD "CAS:LEN", &H1500
                    3)  BLOAD "CAS:TEST", R
@@ -2913,7 +2850,6 @@
    Обратите внимание, что BLOAD может использоваться в программе, не вызы-
 вая выполнения команды NEW или возврата в командный режим.  Этот оператор
 может использоваться также для загрузки частей программы на MSX-BASIC.
-
    П р и м е р 1. Приведем программу, которая позволяет указать начальный
    ─────────────  и конечный адреса загрузки двоичного файла.
    1 INPUT"Имя файла";A$
@@ -2938,7 +2874,6 @@
    91 IF Y$="д" OR Y$="Д" THEN LPRINT"Адрес запуска:";HEX$(A3);" или";A3
    З а м е ч а н и е. Команды BSAVE и BLOAD можно применять и для  работы
 с произвольными дисковыми файлами (устройства A: и B:).
-
    П р и м е р 2.  Запись компьютерных игр с дискеты на магнитную ленту.
    ─────────────
   1) Загрузите программу с дискеты в оперативную память командой
@@ -2959,20 +2894,17 @@
   4. ...И "игрушка" запустится!
 
 
-
            IX.5.2.  Р а б о т а  с  ф а й л а м и  д а н н ы х
 
-
    Команда OPEN для устройства CAS: имеет следующий вид:
                    ┌─────────────────────────────────┐
                    │    OPEN β FOR {INPUT } AS #n    │
-                   │               {OUTPUT}          │ ,
+                   │               {OUTPUT}          │ .
                    └─────────────────────────────────┘
    Здесь β должно начинаться с символов "CAS:" и, кроме того, отсутствует
 возможность, предоставляемая параметром  APPEND  для "наращивания" файлов.
 Все остальное полностью аналогично работе с дисковыми файлами (устройства
 A:, B: и MEM:).
-
    П р и м е р. Строки 10÷30 создают файл данных на магнитной ленте.  Для
    ───────────  его считывания в память требуется запустить этот фрагмент
 со строки 50.
@@ -2986,11 +2918,8 @@
    80 IF NOT EOF(1) THEN 70
    90 END
 
-
-
-   9.6. Д о п о л н е н и е.  Три очень  п о л е з н ы х  программы
-
-
+    IX.6. Д о п о л н е н и е.
+Три очень  п о л е з н ы х  программы:
    1. Программа, осуществляющая посекторное копирование диска на кассету.
    6 CLS:PRINT:PRINT"<<Посекторное копирование диска на кассету>>":PRINT:
    PRINT
@@ -3074,3 +3003,4 @@
    15 KEYON:POKE&H80CA,58'
    16 END
+
msx/basic_dialogue_programming_language/files/diff_009.txt · Последние изменения: 2022-09-10 13:00 — GreyWolf