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

Глава 22,23,24 - другое периферийное оборудование. Ввод и вывод. Память.


Глава 22
                Другое периферийное оборудование
Имеется  ряд  других устройств,  которые могут быть подключены  к
компьютеру ZX SPESTRUM.
    ZX   MICRODRIVE - высокоскоростное устройство  памяти,  может
быть  использовано вместо кассетного магнитофона,  однако оно  не
может управляться командами SAVE,  VERIFY,  LOAD и MERGE,  а лишь
командами PRINT, LIST, INPUT и INKEY$.
    При помощи этого устройства можно организовать сеть из неколь-
ких компьютеров ZX SPEKTRUM.
    Стандартным  интерфейсом  для ZX  SPECTRUM  является  RS-232,
посредством  которого подключаются:  клавиатура,  принтер и любые
другие  устройства отвечающие стандартам  этого  интерфейса.  При
работе  с  такими устройствами могут использоваться имеющиеся  на
клавиатуре дополнительные ключевые слова:  OPEN#,  CLOSE#,  MOVE,
ERASE, CAT и FORMAT.
Глава 23
                     В В О Д   и   В Ы В О Д
Краткое содержание: OUT, IN.
    Компьютер  может считывать некоторую информацию и  записывать
ее в свою оперативную память по командам PEEK и POKE,  вся память
компьютера,  (ПЗУ и ОЗУ) представляется совокупностью адресов от
0 до 65536, каждый из которых адресует один байт.
    Таким же образом можно адресовать и еще 65536 адресов,  назы-
ваемых  портами ввода-вывода,  они используются  процессором  для
связи  с клавиатурой и принтером и могут управляться  операторами
бейсика, IN и OUT.
    IN аналогичен оператору PEEK: IN ADDRESS
он  использует  один аргумент - адрес порта,  и позволяет  считать
один байт из указанного порта.
    OUT подобен оператору POKE: OUT ADDRESS, VALUE
и записывает указанные данные в заданный порт вывода.
    ZX SPECTRUM оперирует шестнадцатиразрядными адресами, которые
мы будем обозначать буквой A:
           A15, A14, A13 .... A1, A0.
    Биты адреса A0,A1,A2,A3 и A4 очень важны, как правило, они в 1,
но если хотя бы один из них в 0,  это предписывает компьютеру
некоторые  действия,  не более чем один из этих пяти битов  может
быть в 0.
    Биты A6 и A7 игнорируются, так что если вы знакомы с электро-
никой, то можете использовать их по своему усмотрению.
    Биты  A8,A9 используются иногда для получения  дополнительной
информации.
    Информационный байт мы будем обозначать буквой D:
            D7, D6, D5, .... D1, D0.
    Теперь предоставим список адресов портов,  имеется целый  ряд
входных адресов для чтения с клавиатуры, а также входного разьема
'EAR', сама клавиатура на 8 полуразрядов по 5 клавиш в ряду.
            IN 65278 считывает ряд от CAPS SHIFT до V,
            IN 65022 считывает ряд от          A до G,
            IN 64510 считывает ряд от          Q до T,
            IN 63486 считывает ряд от          1 до 5,
            IN 61438 считывает ряд от          0 до 6,
            IN 57342 считывает ряд от          P до 7,
            IN 49150 считывает ряд от      ENTER до H,
            IN 32766 считывает ряд от      SPASE до B,
    Эти адреса могут быть вычислены из выражения:
            254+256*(255-2**н) при N пробегающим от 0 до 7.
    В байте,  считанном с клавиатуры, биты от D0 до D4 служат для
обозначения пяти клавиш в данном полуряду, D0 для крайней клавиши,
а D4 для той,  что ближе к центру, состояние одного их этих битов
указывает,  что соответствующая ему клавиша нажата,  D6 принимает
свое значение при чтении с разьема 'EAR'.
    Выходной  порт 254 обеспечивает громкоговоритель( D4) и разьем
'MIC' (D3), а так же установку цвета (D2, D1, D0).
    Порт 251 обеспечивает связь с принтером, как чтение так и за-
пись, чтение для проверки готовности принтера к работе.
    Порты 254, 247 и 239 используются для связи с  дополнительными
устройствами, описанными в главе 22.
    Запустите следующую программу:
             10 FOR N=0 TO 7:REM HELP=ROM NUMBER(номер полуряда)
             20 LET A=254+256*(256-2**N)
             30 PRINT AT=0,0;IN A: GO TO 30
и  понажимайте по одной клавише в каждом полуряду,  после нажатия
очередной клавиши введите BREAK, а затем NEXT N.
Глава 24
                           П А М Я Т Ь
Краткое содержание: CLEAR
    Вся  память компьютера разбита на байты,  каждый  из  которых
представим  числом от 0 до 255.  Каждый байт может быть записан в
памяти  по определенному адресу OT 0 DO FFFFH (H - здесь и  далее
означает шестнадцатиричное предсталление числа).  Сам адрес может
быть  записан в память как два байта.  На диаграмме показано рас-
предение памяти компьютера ZX SPECTRUM:
0    3FFFH  4000H           7FFFH    8000H              FFFFH
Г----------Е-----------------------Е---------------------------?
?   ROM    ?        RAM (ОЗУ)      ?    доступно для программ  ?
?  (ПЗУ)   ?    (системная память) ?                           ?
Г----------Е-----------------------Е---------------------------?
0     16383  16384          32767    32768              65536
    Для получения содержимого области  любой из памятей использу-
ется  функция PEEK с адресом в качестве аргумента,  функция  воз
вращает значение байта по этому адресу.
    Рассматриваемая  ниже программа выводит содержимое первых  21
байтов и ROM с их адресами:
             10 PRINT "ADDRESS"; TAB 8; "BYTE"
             20 FOR A=0 TO 20
             30 PRINT A ;TAB 8; PEEK A
             40 NEXT A
    Для  изменения  содержимого памяти (только для  RAM  (ОЗУ)),
используется оператор POKE в форме:
             POKE ADDRESS, NEW CONTENTS
 где  "ADDRESS"  и  "NEW  CONTENTS"- числовые  выражения,
например:    POKE 31000,57
"NEW ADDRESS" можно принимать значения от -255 до +255
    Вся  память подразделяется на  области,  предназначенные  для
хранения  информации различного назначения,  что показано на диа-
грамме:
Г---------Е---------Е---------Е-------------Е---------------Е- - -
? область ?         ? буфер   ?  системные  ?     план      ?
?экрана TV? атрибуты? принтера? переменные  ? доплнительной ?
?         ?         ?         ?             ?    памяти ?   ?
Г---------Е---------Е---------Е-------------Е---------------Е- - -
  16384      22528      23296       23562         23734        CHANS
Е-----------Е----Е------------Е-----------Е----Е--------------Е--Е
? канальная ?80H ?программа   ?переменные ?80H ?редактируемые ?NL?
?информация ?    ? на бейсике ?программы  ?    ?   строки     ?  ?
?           ?    ?            ?           ?    ?  программы   ?  ?
Е-----------Е----Е------------Е-----------Е----Е--------------Е--Е
  CHANS             PROG           VARS             E  LINE  WO
Е---------Е--Е-------Е---------Е-------Е--------Е-----------Е- - -
?считанные?NL?рабоч. ?  стек   ?       ?аппарат-?  стек     ?
? данные  ?  ?область?калькуля-? резерв?  ный   ?переходов  ?
?         ?  ?       ?  тора   ?       ?  стек  ?к подпрогр.?
Е---------Е--Е-------Е---------Е-------Е--------Е-----------Е- - -
 WORKSP               STKBOT     STKEND   SP
Е---Е---------Е--------------Е
? 7 ?   3EH   ? определяемые ?
?   ?         ?пользователем ?
?   ?         ?   символы    ?
Е---Е---------Е--------------Е
     RAM  TOP   UDG  P RAMT
    Область  телевизионного экрана содержит образ текущего кадра,
она доступна для операторов PEEK и POKE, каждая позиициия экрана
представима матрицей 8х8 точек (один байт на каждый ряд из  8
точек) однако эти восемь байт хранятся в памяти не вместе.
    Полный экран представляет собой 24 строки по 32 символа. Каж-
дая строка экрана прописывается 8-мью строками развертки  телеви-
зионного экрана,  итого для записи одного экрана выполняется ска-
нирование  и  в  памяти рядом хранятся  байты  одноименных  рядов
матриц соседних позиций экрана.
    Область  атрибутов содержит данные о цвете и других парамет-
рах каждой позиции экрана. Используется в формате ATTR.
    Буфер принтера содержит символы, передаваемые на печать.
    Область  системных  переменных  содержит  данные  управления
вычислениями, они полностью описаны в следующей  главе,  некоторые
из них (CHANS, PROG, VARS,  E LINE и тд.) содержат адреса  границ
между системными областями памяти,  но это не переменные бейсика,
и их имена не распознаются компьютером.
     Область планов дополнительной памяти используется только в
MICRODRIVE.
     B области канальной информации содержатся данные об устройст-
вах ввода-вывода,  а именно: клавиатуре (с нижней половиной экра-
на), верхней половине экрана в принтере.
     Каждая строка в области бейсик программ имеет формат:
    старший байт             младший байт
Ъ--------В---------В----------В------------В--------------В----ї
?        ?         ?          ?            ?              ?    ?
?     2 байта      ?     2  байта          ?    текст     ? 00 ?
?        ?         ?          ?            ?              ?    ?
Г--------Б---------Е----------Б------------Е--------------Е----?
   номер   строки          длина                            END
                     текста + ENTER
    Числовые константы в программе представлены в двоичной  форме
используя CHR$14  и следующие за ним 8 байт самого числа.
     Переменные имеют различные форматы представления в памяти.
Ниже  представлен  формат записи числа,  имя которого состоит  из
одной буквы.
                 Ъ-------В---------В--------В----------ї
                 ?       ? 1  байт ?  бит   ? 4 байта  ?
                 ? 60H   ? порядка ? знака  ? мантиссы ?
                 ?       ?         ?        ?          ?
                 А-------Б---------Б--------Б----------Щ
    Формат  размещения  числа,  если имя имеет  более  чем  одну
букву:
      Ъ---------В----------В----------В----------В---------ї
      ?         ?          ?          ?          ? 5 байт  ?
      ?  60H    ?   ннн    ?   . . .  ?    ннн   ?значения ?
      ?         ?          ?          ?          ? числа   ?
      Г---------Е----------Е----------Е----------Е---------?
       1 буква    2 буква               последняя
                                          буква
     формат размещения числового массива:
Ъ-------В------В------В-------В------В-------В------В-----В----ї
?       ?      ?      ?       ?      ?       ?      ?     ?    ?
? ннн   ?  2 байта    ? 1 байт?  2  байта    ?      ? 2 байта  ?
?       ?      ?      ?       ?      ?       ?      ?     ?    ?
Г-------Е------Б------Е-------Е------Б-------Е------Е-----Б----Щ
 буква   общая длина   номера     первая              последняя
         элементов     размер-    размер-            размерность
          + 1  на      ностей     ность
          каждое
         измерение
Ъ-----------------------ї
? по 5 байтов на каждый ?
?      элемент          ?
?                       ?
А-----------------------Щ
    Порядок элементов следующий:
     1. Элементы, для которых первая размерность равна 1.
     2. Элементы, для которых первая размерность равна 2.
     3. Элементы, для которых первая размерность равна 3 и т.д.
    Затем в том же порядке по , следующей размерности и т. д.
Например,  элементы массива с размерностью  ( 3,6 ) располжатся в
памяти стробирования в порядке:
     в(1,1),  в(1,2),  в(1,3),  в(1,4), в(1,5), в(1,6), в(2,1)...
     в(3,6)
    Формат размещения управляющих переменных для FOR-NEXT опера-
торов:
Ъ-----В-------В--------В---------В-------В-------В----------ї
?     ?       ?        ?         ?       ?       ?          ?
?     ?5 байт ?5 байт  ? 5 байт  ?    2    байта ? 1 байт   ?
?     ?       ?        ?         ?       ?       ?          ?
Г-----Е-------Е--------Е---------Е-------Б-------Е----------?
 буква значение ограни-  прираще-   строка цикла     номер
                 чение     ние                    оператора
                Формат размещения строки символов:
Ъ------В--------В--------В-----------------------------------ї
?      ?        ?        ?                                   ?
?      ?  2     байта    ? текст( может быть пустая строка)  ?
?      ?        ?        ?                                   ?
А------Б--------Б--------Б-----------------------------------Щ
буква    количество
              Формат размещения строкового массива:
Ъ------В------------В--------В-------------В---------В---------ї
?      ?            ?        ?             ?         ?         ?
?      ?     2        байта  ?  1   байт   ?  2    байта       ?
?      ?            ?        ?             ?         ?         ?
А------Б------------Б--------Б-------------Б---------Б---------Щ
буква  общее число элементов  номера раз-    1-я размерность
       плюс 1 на каждую разм. мерности
-----В--------------------В---------------------------ї
     ?                    ?                           ?
     ?   2      байта     ? по одному байту на каждый ?
     ?                    ?         элемент           ?
-----Е--------------------Е---------------------------?
           последняя                 элементы
         размерность
    Программируемый  стек  есть  часть  интерпретатора  бейсика,
аппаратный стек используется микропроцессором Z80 для запоминания
адресов возврата.
    Резерв в данной версии не используется.
    Назначение стека переходов к подпрограммам описано в главе 5.
    Байт,   адресуемый   по   RAMTOP  содержит   верхний   адрес,
используемый бейсиком.
    Даже оператор NEW,  который очищает ОЗУ, не изменяет содержи-
мого области, определяемых пользователем символов.
    Вы можете изменить адрес RAMTOR в операторе CLEAR:
            CLEAR NEW RAMTOR
по которому:
     а) очищаются все области переменных;
     б) очищается область экрана (подобно CLS);
     в) переустанавливается позиция PLOT в левый нижний угол
        экрана;
     г) выполняется функция RESTORE;
     д) очищается стек переходов и устанавливается новое значение
        RAMTOP.
    Используя функцию CLEAR,  вы можете смещать RAMTOP, увеличи-
вая область для бейсика,  уменьшая тем самым область определяемых
пользователем символов. Можно несколько увеличить доступную часть
RAM (ОЗУ),  используя функцию NEW, например, выполнение NEW затем
CLEAR 23800 помогает компьютеру при переполнении ОЗУ.
    Все указанные действия могут приводить к двум  сообщениям об
ошибке и выдаче звукового сигнала:
        "4 MEMORU FULL" (переполнение памяти);
        "G NO ROOM FOR LINE "(нет места для строки программы)
    Можно изменить длительность подачи звукового сигнала, изменяя
число по адресу 23608. По умолчанию предполагается 64.
    Числа  (за исключением 0) могут записываться в показательной
форме как:  +M*2**E
где M - мантиса в интервале 0.5,...1 (не может быть 1);
    E - экспонента, положительное или отрицательное число.
    Допустим, вы записали "N" в двоичной системе счисления.
"M"  - дробное  и  имеет двоичную точку  (  подобно  десятичной
точке), то тогда будет.
          1/2       -->     .1
          1/4       -->     .01
          3/4       -->     .11  и т.д.
    Наше число "N" меньше, чем 1, значит у него нет битов перед
двоичной точкой, а поскольку оно больше 0.5 то левый следующий за
точкой - это 1.
    Для записи числа в память мы изпользуем 5 байтов в  следующем
порядке:
    а)  записываем  первые  8 битов мантисы во второй байт  (  мы
видим,  что первый бит это 1), вторые 8 битов в третий байт и так
до пятого байта.
    б) заменяем первый бит второго байта,  в котором записана  1,
на знаковый бит (0 для +, и 1 для -1);
    в) записываем в первый байт экспоненту + 128,  например ,  мы
хотим записать число 1/10.
            1/10=4/5*2.
     мантиса будет    .11001100110011001100110011001100B
(поскольку 33-й бит равен 1,  мы должны округлить 32-й бит, запи-
сав 1 вместо 0), а экспонента равна -3.
    Теперь применив наши  три правила, запишем 5 байт;
              -- знак числа
Ъ----------В---В----------В-----------В-----------В-----------ї
?          ?   ?          ?           ?           ?           ?
?0111 11 01? 0 ? 100 1100 ? 1100 1100 ? 1100 1100 ? 1100 1100 ?
?          ?   ?          ?           ?           ?           ?
А----------Е---Е----------Б-----------Б-----------Б-----------Щ
 -3+128        мантиса  4/5, исключая левый знаковый бит
    Имеется альтернативный способ записи целого числа в интервале
-65535...+65535:
    а) первый байт равен 0;
    б) второй байт равен 0 для положительного числа и  FFH  для
       отрицательного;
    в) 3 и 4 байты содержат младшие и старшие значащие биты числа
       ( или число +131072, если оно отрицательное);
    г) 5 байт равен 0.



СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Письма в газету - Nefedov Sergey, Spider.
Премьера - радиолюбителям: программа для пакетной радио связи RTTY.
Почта - письма в газету от: Vlаdimir Kаrреnkо, Nikоlаj Аmоsоv, Вlаck Cаt, C-Jеff, Vlаdimir Оstаlcеv, Nickоlау Аbdrаfikоv, Sеrgеу Мurаshоv, Vlаdimir Ivаnnikоv.
Почта - Шедевр. Еще одно любопытное письмо - "большая часть прикладных и системных программ - полная чушь и лабуда!"
К размышлению - Кто победит в компьютерной войне.

В этот день...   25 апреля