┌────────────────────────────────────────┐
│ 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)