ГЛАВА 20
ВНЕШНЯЯ ПАМЯТЬ НА МАГНИТНОЙ ЛЕНТЕ
Краткое содержание: LOAD, SAVE, VERIFY, MERGE
Основные команды работы с магнитофоном LOAD, SAVE и VERIFY уже
рассматривались во вводном описании. Вы могли видеть, что LOAD затирает
старую программу в памяти компьютера при загрузке новой программы с
ленты. Есть другая команда MERGE, не делающая этого. Эта команда стирает
лишь те строки старой программы или переменные, которые совпадают с но-
мерами строк новой программы или именами новых переменных.
Программу "DICE" ("Игральная кость") из главы 11 запишем на ленту
под именем "DICE". А теперь введём и выполним следующую программу:
1 PRINT 1
2 PRINT 2
10 PRINT 10
20 LET X=20
А затем осуществим её проверку, заменив команду VERIFY "DICE" на
команду MERGE "DICE". Вы увидите, что строки 1и 2 сохраняются, а строки
10 и 20 заменяются на строки с этими номерами из программы "DICE",
переменная X тоже сохраняется (проверьте - PRINT X).
Теперь Вы знаете четыре оператора для работы с кассетным магнитофо-
ном:
SAVE - записывает программу и переменные на магнитофон;
VERIFY - проверяет программу и переменные в памяти компьютера по
их копии на ленте;
LOAD - очищает память компьютера от всех программ и загружает в неё
новые, считанные с магнитофона;
MERGE - подобна LOAD, только не очищает всю память, а лишь заменя-
ет те строки программы или переменные, у которых совпадают номера или
имена с такими же на магнитной ленте.
За каждой из этих команд следует ключевое слово - имя программы,
определённое первоначально в команде SAVE. Пока компьютер ищет указан-
ную программу, он выводит имена всех программ, уже прочитанных с ленты.
Имеются две возможности для загрузки и запуска программ с ленты;
• Вариант 1. В операторах LOAD, VERIFY и MERGE вместо имени
можно указать пустую строку. Тогда будет взят первый
встретившийся файл и затем выполнить команду RUN.
• Вариант 2. С использованием оператора SAVE
SAVE "string" LINE number
Программа запишется на ленту так, что когда она будет вновь считана
по команде LOAD (но не MERGE), она автоматически установится на строку
с указанным номером и сама инициирует своё выполнение.
Кроме текстов программ на ленту можно записывать также массивы или
данные.
Записать на ленту массив Вы можете, используя команду SAVE с DATA
таким образом:
SAVE "string" DATA array name О
Здесь "string" - т/1мя, присваиваемое файлу данных, которое может
состоять из букв или букв и символа "$" (перечёркнутая буква S). Для строко-
вых данных^это требование здесь не важно.
Загружаются такие данные по команде:
LOAD "string" DATA array nameO
нельзя использовать оператор MERGE.
Если загружается строковый массив, то после обнаружения его ма лен-
те, компьютер выдаёт: "Character array:" и далее имя этого массива.
Существует возможность записи на магнитную ленту и отдельных бай-
тов информации. Так, например, это может быть телевизионная картинка или
определяемые пользователем графические символы и т д. Для этого исполь-
зуется ключевое слово CODE.
Например:
SAVE "Picture" CODE 16384,6912
LOAD "Picture" CODE
после CODE можно указать числа:
LOAD "Picture" CODE start, lenght
lenght - (длина) определяет сколько данных (в байтах) надо загрузить с
ленты. Если длина больше, чем записано на ленту, то выдаётся сообщение "R
Таре loading error ..." (ошибка загрузки с ленты). Этот параметр можно
опустить, и тогда компьютер считает все данные, которые записаны на ленте.
start - (начало) указывает адрес, с которого должны загружаться данные
и может быть отличным от адреса, указанного в SAVE Вы можете опускать
этот параметр в команде LOAD.
Выражение CODE 16384,6912 можно заменить на SCREENS :
SAVE "Picture"SCREEN$ и затем
LOAD "Picture"SCREEN$
Это тот случай, когда VERIFY не работает. В остальных случаях VERIFY
можно использовать везде, где используется SAVE.
В ЗАКЛЮЧЕНИЕ.
Везде, где указывается имя файла на ленте, используются только пер-
вые десять символов. Существуют четыре типа информации, которые могут
быть записаны на ленту:
• - программы и переменные (совместно);
• -числовые массивы;
• - строковые массивы;
• - непосредственно байту.
Когда команды VERIFY, LOAD и MERfcE осуществляют поиск данных на
ленте, они выводят на экран все считанные ими с ленты имена с указанием
типа данных в виде:
"Program:"
"Number array:"
"Character array:"
"Bytes:"
Если имя - пустая строка, эти команды берут первый встретившийся
файл с указанным типом.
Команда SAVE служит для записи информации на ленту под заданным
именем. Сообщение оо ошибке "F..." выдаётся, если вместо имени указана
пустая строка или число символов в имени 11 и более.
SAVE всегда выдаёт сообщение:
"Start tape, then press any key" (запусти магнитофон и нажми любую
клавишу)
и ждёт нажатия, после чего записывает данные на ленту.
1. Программа и переменные.
SAVE "name" LINE number
записывает программу на ленту таким образом, что последующая коман-
да LOAD автоматически вставляет в программу
GO ТО LINE number
и начинает её выполнять.
2. Байты.
SAVE "name" CODE start, lenght
записывает на ленту lenght байт, начиная с адреса start.
SAVE "name"SCREEN$
эквивалентно
SAVE "name" CODE 16384,6912
и записывает один телевизионный экран.
3. Массивы.
SAVE "name" DATA letterO или
SAVE "name" DATA letter$()
записывают числовой или строковый массив (требование S не относится
к "name").
Команда VERIFY проверяет (сравнивает) информацию в памяти и на лен-
те. Может выдавать сообщение "R Таре loading error...".
1. Программа и переменные.
VERIFY "name-
2. Байты.
VERIFY "name" CODE start,lenght
Если данных в файле "name" более, чем указано в lenght, то выдаётся
сообщение об ошибке "R...".
VERIFY "name" CODE start
Здесь осуществляется сравнение байтов в файле "name" с данными в
памяти, начиная с адреса start.
VERIFY "name" CODE
этот оператор осуществляет сравнение данных на ленте с данными в
памяти, начиная с адреса, с которого записывался на ленту первый байт дан-
ных.
VERIFY "name"SCREEN$
или эквивалентно
VERIFY "name" CODE 16384,6912
однако, это будет проверка уже проверенного файла.
3. Массивы.
VERIFY "name" DATA letterO
VERIFY "name" DATA letter$()
Команда LOAD загружает новые данные с ленты, стирая старые данные
в памяти.
1. Программа и переменные.
LOAD "name"
Может выдавать сообщение "4 Out of memory ...", если нет места для
новой программы. В этом случае старая программа не уничтожается.
2. Байты.
LOAD "name" CODE start,lenght
Если данных в файле "name" больше, чем указанно в lenght, то выдаётся
сообщение "R ...".
LOAD "name" CODE start
Производит загрузку данных из "name" в память, начиная с адреса start.
LOAD "name" CODE
Загружает данные по адресу, с которого записывались данные на ленту
в файл "name".
3. Массивы.
LOAD "name" DATA letterO
или
LOAD "name" DATA letter$()
Уничтожает в памяти массив с именем letter или letterS, формирует но-
вый массив и переписывает туда данные из файла "name". Может выдать со-
общение "4 Out of memory ..." при нехватке памяти под массив. В этом
случае старый массив не уничтожается.
Команда MERGE загружает новые данные с ленты, не уничтожая старые.
1. Программа и переменные.
MERGE "name"
Дописывает программу "name" к некоторой программе, находящейся в
памяти. Может выдать сообщение "4 Out of memory
2. Байты.
Не поддерживается.
3. Массивы.
Не поддерживается.
Пример: Записать на ленту информацию о 21-м определённом пользо-
вателем символе и затем сравнить файл на ленте с файлом в памяти.
SAVE "ChessXODE USR "А",2И8
VERIFY "ChessXODE
Обратная загрузка (с ленты в компьютер)
LOAD "ChessXODE
или
LOAD "ChessXODEUSR "A" .