ZX Hard #01
06 мая 1999
  Железо  

COM-port & timer - Последовательный порт для Spectruma!!!

<b>COM-port & timer</b> - Последовательный порт для Spectruma!!!
┌────────────────────────────────────────┐
│           COM-port & timer             │
└────────────────────────────────────────┘
 
(C) VIC, 1997, Kharkov, Ukraina

  Последовательный порт для Spectruma!!!

   Описание  доработки,  которая  позволит
подключить к Вашему компьютеру любое внеш-
нее устройство, рассчитанное на последова-
тельный  порт.  Например - мышь, модем или
принтер.

         ┌──┬──┬──┐                  ┌──┬──┬────┐
  A12>──1┤A0│DC│Q0╞15─────────┐   <─8┤D0│ПТ│    │   ┌──<+5V
  A13>──2┤A1│  │Q1╞14───┐     │   <─7┤D1│  │    │   │
  A14>──3┤A2│  │Q2╞13   │     │   <─6┤D2│  │    │   │
         │  │  │Q3╞12   │     │   <─5┤D3│  │CLK0├9──┼─┐
         │  │  │Q4╞11   │     │   <─4┤D4│  │G0  ├11─╡ │
   A3>──4╡E1│  │Q5╞10   │     │   <─3┤D5│  │OUT0├10─┼─┼──>FR1
 OIRQ>──5╡E2│  │Q6╞9    │     │   <─2┤D6│  ├────┤   │ │
  A15>──6┤E3│D1│Q7╞7    │     │   <─1┤D7│  │CLK1├15─┼─╡
         └──┴──┴──┘     │     │      ├──┤  │G1  ├14─╡ │
                        │     └────21╡CS│  │OUT1├13─┼─┼──>FR2
   D1 - 1533ИД7         │     A8>──19┤A0│  ├────┤   │ │
   D2 - 580ВИ53         │     A9>──20┤A1│  │CLK2├18─┼─╡
   D3 - 580ВВ51(ИК51)   │        ┌─22╡RD│  │G2  ├16─╡ │
   D4 - К170УП2         │     WR>┼─23╡WR│D2│OUT2├17─┼─┼──>FR3
   D5,D6 - К170АП2      │        │   └──┴──┴────┘   │ │
                        │        └──────────────────╡ │
 1.75Mhz >──────────────┼───╥───────────────────────┼─┘
      ┌─────────────────┘   │       ┌───────────────┘
      │   ┌───┬─────┬───┐   │  ╔════╪══════════════════╗
 D0>──┼─27┤D0 │УСАПП│   │   │  ║    │  ┌───┬──┬──┐     ║
 D1>──┼─28┤D1 │COM2 │   │   │  ║ ╓1─┼─4┤X1 │  │Y1╞13──4╢
 D2>──┼──1┤D2 │     │   │   │  ║ ║  ╞─3┤УП1│  ├──┤     ║
 D3>──┼──2┤D3 │     │   │   │  ║ ║  │  ├───┤  │Y2╞12──5╢
 D4>──┼──5┤D4 │     │   │   │  ║ ╟2─┼─5┤X2 │  ├──┤     ║
 D5>──┼──6┤D5 │     │   │   │  ║ ║  ╞─2┤УП2│  │Y3╞11──6╜
 D6>──┼──7┤D6 │     │   │   │  ║ ║  │  ├───┤  ├──┤
 D7>──┼──8┤D7 │     │   │   │  ║ ╟3─┼─6┤X3 │  │  ├15───<+5V
      │   ├───┤     │   │   │  ║ ║  ╞─1┤УП3│D4│  ├8──┐
      └─11╡CS │     │RxR├14 │  ║ ║  │  └───┴──┴──┘   ┴
 WR>────10╡WR │     │TxR├15 │  ║ ╚══╪═══════════════╗   TXD
 RD>────13╡RD │     ├───┤   │  ║  R1║             ┌─╫──────>2
 A8>────12┤C/D│     │TxD├19─┼─1╢  1K║  ┌──┬──┬──┐ │ ║   RXD
          ├───┤     │RTS╞23─┼─3╫1───┼─2┤X1│  │  │ │ ╟1─────<3
 FR1 ┌──25┤RxC│     │DTR╞24─┼─2╢    │  ├──┤  │Y1╞7┘ ║   RTS
>────╨───9┤TxC│     ├───┤   │  ║    ╞─1┤C │D5│  │ ┌─╫──────<4
          ├───┤     │RxD├3──┼─4╢    │  └──┴──┴──┘ │ ║   CTS
    ┌───21┤RES│     │CTS╞17─┼─6╢    │  ┌──┬──┬──┐ │ ╟3─────<5
    │ ┌─20┤CLK│ DD3 │DSR╞22─┼─5╫2───┼─2┤X1│  │Y1╞7┘ ║   DCD
    │ │   └───┴─────┴───┘   │  ║    │  ├──┤  │  │   ╙2─────<8
    │ └─────────────────────┘  ║    └─1┤C │  ├──┤        SG
    ┴                          ║       ├──┤  │Y2╞6─┐ ┌─────>7
                               ╙3─────3┤X2│D6│  │  │ ┴  DTR
                                       └──┴──┴──┘  └───────>20
 выв.4  D5 и D6 соединить с GND
 Выв.5  D5 и D6 соединить с -12В
 Выв.8  D5 и D6 соединить с +12В

   Адреса портов контроллера:

     #80F7, #81F7, #82F7, #83F7 - порты таймера
     #90F7, #91F7 - порты интерфейса COM1


   При  работе с портом вначале необходимо
запрограммировать  таймер на режим деления
частоты  (режим  3).  При  этом необходимо
следить,  чтобы  результирующая частота не
выходила  за  пределы  допустимых значений
(максимальная  частота  на  входах RxC/TxC
УСАПП по паспорту составляет 615 KHz).

   Тип   примененного   разъема  -  DB-25P
(стандартный  разъем внешнего модема). Для
тех,  кто не знает, DB-25P означает разъем
типа "вилка" или "папа".

   Для  подключения  COM2  необходимо  ис-
пользовать  3 микросхемы (ВВ51, УП2, АП2).
На  входы  9  и 25 УСАПП необходимо подать
вместо сигнала FR1 сигнал FR2 с таймера, а
на  вход  11  сигнал  с 13 вывода ИД7. Для
сигнала  TxD  необходимо использовать сво-
бодную половинку D5.

──────────────────────────────────────────

(С) Mr.Brain

    Вашему вниманию предлагается небольшая
доработка  схемы Com-porta от VIC. Немного
истории:   еще   при   появлении   первого
Спектрума в него была заложена возможность
отсчитывать  интервалы  времени  с помощью
инициируемых  50 раз в секунду прерываний.
В конце прорисовки каждого кадра ULA выра-
батывала  сигнал  прерывания  и процессор,
получив  его,  выполнял небольшую подпрог-
раммку,  расположенную в ПЗУ BASICа по ад-
ресу #0038 (56). Эта подпрограммка, помимо
опроса клавиатуры, увеличивала на 1 содер-
жимое  системной переменной FRAMES. Благо-
даря  этому появилась возможность отсчиты-
вать  интервалы  времени  с  дискретностью
1/50  секунды. С рождения Спектрума прошли
годы, а этот процесс остался без изменения
(если  не считать используемых в последнее
время  микросхем часов реального времени).
Однако речь пойдет не о часах.
    Кроме прерываний, временные процессы в
Спеке  измеряются  с помощью тактов самого
процессора - это и чтение с магнитофона, и
пересылка данных с помощьюмодема и многое,
многое  другое. При этом возникают опреде-
ленные  трудности  - в некотых компьютерах
неправильно  считается время, в некоторых,
работающих в турборежиме, при работе с мо-
демом  надо переходить в обычный режим или
использовать  модем, который приостанавли-
вает процессор сигналом WAIT на время при-
ема/передачи данных и т.д. Я уже не говорю
о  программах, где вместе с выводом на эк-
ран  происходит  вывод оцифрованного звука
(например  OVER_THE_TOP).  И вот появилась
идея: сделать в Сектруме еще одно прерыва-
ние,  частоту  которого можно будет менять
программно.  Что и было осуществлено с по-
мощью  небольшой навески к схеме COM-порта
от VIC (см.Рис.1).



                Рис.1

    КАК  ПОЛЬЗОВАТЬСЯ  НОВЫМ ПРЕРЫВАНИЕМ ?
Очень  просто.  Теперь при построении таб-
лицы достаточно поделить ее пополам - одну
половину  займут адреса обработчика преры-
ваний от таймера, а другую, старшую, адре-
са обработчика прерываний от кадровой раз-
вертки.  Разумеется, все вышесказанное от-
носится  ко  второму  режиму прерываний (в
первом любое прерывание приведет к обраще-
нию  по адресу #0038, а в нулевом - совер-
шенно  ни к чему, т.к. с шины данных в мо-
мент  обработки  прерывания  будет  считан
байт  #7F  (LD  A,A),  разве  только к не-
большому  замедлению  основной программы).
После  создания в памяти таблицы, обработ-
чиков и проведения всех сопутствующих опе-
раций, можно задать режим работы таймера и
коэффициенты   пересчета.  После  загрузки
последнего  значения  на  выходе 17 м/с D2
появятся  импульсы  с  заданной частотой и
начнут  генериться прерывания. Вот в прин-
ципе  и все.Остается добавить, что область
применения таймера можно расширить. Напри-
мер, использовать его не только для высчи-
тывания   интервалов  времени,  но  и  для
воспроизведения  DIGITAL-музыки  через  AY
или  COVOX  или через что угодно, во время
выполнения  какой-нибудь программы. Конеч-
но,  при  проигрывании мелодии, скажем, на
три канала, свободного времени у процессо-
ра  может остаться совсем немного, но зато
оно  не  пропадет  и будет использовано. К
томуже, в данное время существует довольно
большой  парк  машин,  с тактовой частотой
процессора  большей,чем  3.5  МГц  - у них
свободного времени останется больше. С по-
мощью  таймера  можно  даже выполнять нес-
колько  программ одновременно. Или, напри-
мер, писать музыку для AY с частотой кван-
тования  не 50 Гц, как сейчас, а например,
100 или 200 Гц. Да и мало ли что еще прий-
дет  в  голову  нашим  талантливым  сооте-
чественникам.
    Чуть не забыл о главном: у таймера нет
входа  сигнала  RESET и поэтому при выходе
из вашей програмы, где использовались пре-
рывания от таймера, не забудьте остановить
счетчик, иначе зависание в SOS вам обеспе-
чено (не будет реакции на нажатие клавиш).
Если же при работы программы, использующей
прерывания от таймера, был нажат RESET, то
тут   поможет  только  выключение  питания
компьютера.
    Хотя  есть способ и попроще (предложен
моим хорошим другом Д.Курячим) - достаточ-
но  установить  еще  один триггер, который
при нажатии RESET будет останавливать наше
новое  прерывание и разрешать его только в
случае обращения ктаймеру D2. Схема данно-
го  усовершенствования приведена на рис 2.
Однако и здесь необходимо при самом первом
обращении  к таймеру давать команду на ос-
тановку счета в канале 2.


 


         Рис.2

    Устройство  просто в сборе и собранное
из  исправных элементов не требует налажи-
вания :)
    Ну  вот и все на сегодня. Шлите письма
и  поздравительные  открытки  на мой адрес
:-).  Гнилые  фрукты  и  овощи принимаются
только  плотно  закатанными в трехлитровые
банки;  камни,  кирпичи  и  прочие тяжелые
предметы  лучше не посылать - ваш семейный
бюджет  может  не выдержать, "..ну, а если
вы  на  него бочку катите, то это уже кон-
тейнерные перевозки получаются, этим тран-
сагенство занимается." :-)

                   662620 Черногорск
                          ул.Рабочая 28
                          Павлухину Д.А.
                          (Mr.Brain)



Другие статьи номера:

Вступление - о первом номере железячной газеты.

Мешо почты - письма от: Mongol/Delta Corporation, SANDER/MskZXNet, Mr.Brain, Чирцов Игорь.

Переписка - Nemo & VTS.

COM-port & timer - Последовательный порт для Spectruma!!!

"Железная"... логика! - ликбез о логических микросхемах.

Fast Memory Access (FMA) - схема ускорения работы с памятью.

C-bus - шина основаная на Centronics interface.

OSP v.0.1 - новая звуковая карта для Спектрума на замену General Sound.


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

Похожие статьи:
Почётные и Вечные - Список Заслуженных Пользователей AC Edit.
От автора - Получил диплом...
Шарман - Pro tracker v3.4
Пробы пера - "Last Warrior".
Железо - паралельный Порт RS-232 к ZX-SPECTRUM.

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