Программирование на языке BASIC 1990 г.

Глава 20,21 - внешняя память на магнитной ленте. Устройство печати.


Глава 20
                Внешняя память на магнитной ленте
Краткое содержание: LOAD, SAVE, VERIFY, MERGE
    Основные  команды работы с магнитофоном SAVE,  LOAD и  VERIFY
уже  рассматривались во вводном описании.  Вы могли  видеть,  что
LOAD  затирает старую программу в памяти компьютера при  загрузке
новой программы с ленты,  есть другая команда MERGE,  не делающая
этого.  Эта команда стирает лишь те строки программы или перемен-
ные,  которые  совпадают  с номерами строк  новой  программы  или
именами  новых  переменных.   Программу  "DICE"  ("игральная
кость")  из  главы 11 запишем на ленту под  именем  "DICE",  а
теперь введем и выполним следующую программу:
              1 PRINT 1
              2 PRINT 2
             10 PRINT 10
             20 LET X
    Осуществим ее проверку,  заменив команду VERIFY "DICE"
на команду MERGE "DICE",  вы увидите,  что строки 1 и 2 сохра-
няются, а строки 10 и 20 заменяются на строки с этими номерами их
программы "DICE", переменная X тоже сохраняется (проверте PRINT X).
    Теперь  вы  знаете  четыре оператора для работы  с  кассетным
магнитофоном:
     SAVE     - записывает программу и переменные на магнитофон;
     VERIFY   - проверяет программу и переменные в памяти
                компьютера по их копии на ленте;
     LOAD     - очищает  память  компьютера  от  всех  программ  и
                загружает в нее новые, считанные с магнитофона;
     MERGE    - подобна LOAD, только не очищает всю память, а лишь
                заменяет те строки программы или переменные, у
                которых совпадают номера или имена с такими же на
                магнитной ленте.
    За каждой из этих команд следует ключевое слово - имя програм-
мы, определенное первоначально в команде SAVE,  пока  компьютер
ищет  указанную программу,  он выводит имена всех  программ,  уже
прочитанные с ленты, имеется две возможности для снятия справки с
ленты.
    Вариант 1,  в операторах VERIFY,  LOAD и MERGE вместо  имени
можно указать пустую строку, тогда будет взят первый встретивший-
ся файл.
    Вариант 2, с использованием оператора SAVE:
             SAVE STRING LINE NUMBER
программа  запишется  на  ленту так,  что когда она  будет  вновь
считана по команде LOAD (но не MERGE),  она автоматически устано-
вится на строку с указанным номером и сама инициирует свое выпол-
нение.
    Кроме текстов программ на ленту можно записывать также масси-
вы или данные.
    Записать на ленту массив вы можете,  используя команду SAVE с
DATA таким образом:
            SAVE STRING DATA ARRAU NAME()
здесь  "STRING" - имя,  присваиваемое  файлу  данных,  которое
может  состоять  из букв или букв и символа "$"  (перечеркнутая
буква  "S").  Для строковых данных это  требование  здесь  не
важно. Загружаются такие данные по команде:
             LOAD STRING DATA ARRAY NAME()
Нельзя использовать оператор MERGE.
    Если  загружается строковый массив,  то после обнаружения его
на  ленте,  компьютер выдает:  "CHARAUTER ARRAY:" и  далее  имя
второго массива.
Существует  возможность  записи  на магнитную ленту  и  отдельных
байтов  информации,  так например,  это может быть  телевизионная
картинка или определенные ползователем графические символы и т.д.
    Для этого используется ключевое слово CODE, например:
        SAVE "PICTURE" CODE 16384,6912
здесь первое  число - адрес первого байта в  области  памяти  где
расположены данные,  а второе число - количество байтов,  которые
нужно записать на ленту (6912 -обьем в байтах одного экрана,
16384 - адрес экрана в памяти). Загружаются эти данные по команде:
        LOAD "PICTURE" CODE
после CODE можно указать числа:
            LOAD "PICTURE" CODE START, LENGTH
    LENGTH  (длина) - определяет сколько данных (байтах)  надо
загрузить с ленты,  если длина больше,  чем записано на ленту, то
выдается  сообщение "R TAPE LOADING ERROR" (ошибка загрузки  с
ленты).  Этот  параметр можно опустить и тогда компьютер  считает
все данные, которые записаны на ленте.
    START (начало) - указывает адрес,с которого должны загружаться
                     данные и может быть отличным от адреса,
                     указанного  в SAVE, вы можете опустить этот па-
                     раметр в команде LOAD.
выражение CODE 16364,6912 можно заменить на SKREEN$:
     SAVE "PICTURE" SCREEN$ и затем
     LOAD "PICTURE" SCREEN$
    Это тот случай когда VERIFY не работает,  в остальных случаях
VERIFY$ можно использовать везде где используется SAVE.
    В  заключение,  везде,  где указывается имя файла  на  ленте,
используются  только первые 10 символов,  существует четыре  типа
информации, которые могут быть записаны на ленту:
    - программы и переменные ( совместно);
    - числовые массивы;
    - строковые массивы;
    - непосредственно байты
    Когда команды VERIFY, LOAD, и MERGE осуществляют поиск данных
на ленте,  они выводят на экран все считанные ими с ленты имена с
укажанием типа в виде:
    " PROGRAM:",  " NAMBER ARRAY:",  " CHARACTER ARRAY:",
    " BYTES:"
    Если  имя - пустая строка,  эти команды берут первый встретив-
шийся файл с указанным типом.
    Команда SAVE служит для записи информации на ленту под задан-
ным  именем,  сообщение  об ошибке F выдается если  вместо  имени
указана пустая строка или число символов в имени 11 и более, SAVE
всегда выдает сообщение.
    " START  TAPE,  THEN PRESS ANY KEY"
  ( "запусти  магнитофон  инажми любую клавишу"),
  и ждет нажатия,  после всего  записывает данные на ленту.
    1. Программа и переменные,
               SAVE NAME LINE LINE NUMBER
Записывает  программу  на ленту таким  образом,  что  последующая
команда LOAD автоматически вставляет в программу
                GOTO LINE NUMBER выполнять .
     2. Байты.
                SAVE NAME CODE START, LENGHT
Записывает на ленту "LENGHT" байт, начиная с адреса START
                SAVE NAME SCREEN$
эквивалентно    SAVE NAME CODE 16384,6912
и записывает один телевизионный экран.
      3. Массивы
                SAVE NAME DATA LETTER () или
                SAVE NAME DATA LETTER()
записывают  числовой  или  строковый массив  (требование  $  не
относится к "NAME").
    Команда  VERIFY проверяет (сравнивает) информацию в памяти  и
на ленте, может выдавать сообщение
        "R TAPE LOADING ERROR",
    1. Программа и переменные,
          VERIFY NAME
    2. Байты,
          VERIFY NAME CODE START LENGTH
    Если  данных  в  файле  "NAME" более  чем  указано  в
"LENGHT" то выдается сообщение об ошибке "R"
           VERIFY NAME CODE START
Здесь  осуществляется сравнение данных на ленте с данными в памя-
ти,  начиная  с адреса,  с которого записывается на ленту  первым
байт данных.
                    VERIFY NAME SCREEN$
 эквивалентно       VERIFY NAME CODE 16384,6912
Однако это будет проверка уже проверенного файла.
     3. Массивы.
           VERIFY NAME DATA LETTER()
           VERIFY NAME DATA LETTER$()
    Команда  LOAD загружает новые данные с ленты,  стирая  старые
данные в памяти.
    1. Программа и переменные.
Команда -   LOAD NAME
может выдавать сообщение "4 OUT OF MEMORY", если нет места для
новой программы. В этом случае старая программа не уничтожается
     2. Байты.
Команда -     LOAD NAME CODE START, LENGTH
Если данных в файле "NAME" больше, чем указано в "LENGTH", то
выдается сообщение R.
Команда -     LOAD NAME CODE START
производит загрузку данных из "NAME" в память, начиная с адреса
"START"
Команда -     LOAD NAME CODE
загружает прграмму по адресу,  с которого записывались данные  на
ленту в файл "NAME".
     3. Массивы
Команда -     LOAD NAME DATE LETTER() или
              LOAD NAME DATE LETTER$()
уничтожает  в  памяти массив с именем "LETTER"  или "LETTER$",
формирует  новый  массив  и переписывает  туда  данные  из  файла
"NAME", может выдать сообщение "4 OUT OF MEMORY" при нехват-
ке памяти под массив, в этом случае старый массив не уничтожается.
Команда MERGE загружает новые данные с ленты, не уничтожая старые.
    1. Программа и переменные.
Команда -    MERGE NAME
дописывает программу "NAME" к некоторой программе, находящейся
в памяти, может выдать сообщение
             "4 OUT OF MEMORY"
     2. Байты.
не поддерживается.
     3. Массивы.
не поддерживается.
    Пример:  записать  на  ленту информайию о  21-м  определенном
пользователем символе.
       SAVE "CHESS" CODE USR "A", 21*8
    Обратная загрузка
       LOAD "CHESS" CODE
       LOAD "CHESS" CODE USR "A"
Глава 21
                У С Т Р О Й С Т В О   П Е Ч А Т И
Краткое содержание:  LPRINT, LLIST, COPY.
    Эта глава описывает операторы бейсика, необходимые для работы
с принтером ZX SPECTRUM.
    Два оператора LPRINT и LLIST подобны операторам PRINT и LIST
но с той разницей, что они работают не с телевизором, а с
принтером, попробуйте для примера выполнить следующую программу:
                 10 LPRINT ' " THIS PROGRAM." '
                 20 LLIST
                 30 LPRINT ' " PRINTS OUT THE CHARACTER SET." '
                 40 FOR N=32 TO 255
                 50 LPRINT CHR$ N
                 60 NEXT N
    Оператор COPY позволяет распечатать экран телевизора,
например по LIST текст программы будет выведен на экран, а затем
по COPY его можно распечатать на принтере.
    Вы всегда можете прекратить вывод на печать выдав BREAK (CAPS
SHIFT и SPASE).
    Если вы задали операторы управления принтером без подключения
реального устройства, то вывода просто не будет и выполнение
программы продолжится до следующего оператора.
    Теперь ппробуйте изменятить следующую программу:
                    10 FOR N=31 TO 0 STEP -1
                    20 PRINT AT 31-N,N; CHR$(CODE"0"+N);
                    30 NEXT N
Вы получите последовательность символов расположенных по
диагонали экрана, начиная с правого верхнего угла, теперь заменим
в строке 20 PRINT AT 31-N,N' на 'TAB N' программа будет работать
также как и прежде, теперь заменим в строке 20 PRINT на LPRINT.
заметим, что развертки по диагонали не получится, а заменив
теперь 'TAB N' на 'AT 31-N,N' и сохранив LPRINT получим по одному
символу на строку, что и требовалось получить.
    Вообще при печати перевод строки осцществляется в следующих
случаях:
    а) при заполнении буфера строки;
    б) после LPRINT, если это не конец оператора и в нем
       встретилась запятая или точка с запятой;
    в) если запятая, апостроф или TAB требуют новой строки;
    г) при окончании программы, если остались невыведенные данные.



СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Sorrow News - Итоги Doxycon'98 и FunTop'98.
Презентация - ZX-winword v2.01
Hackers - Что движет хакерами ?
Революция - " Время бежало быстро,как спринтер по беговой дорожке,который идет на рекорд.И вот,наконец наступило шесть часов. Все гости созваны,стол накрыт"...
Железо - Югославия - полигон?

В этот день...   24 ноября