ZX Hard
#01
06 мая 1999 |
|
COM-port & timer - Последовательный порт для 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)
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября