...Подключение к Profi различной периферии...
$% Stingrey
Одним из старейших отечественных клонов Spectrum-совместимых
компьютеров является Profi. Несмотря на свою распространенность
(по некоторым данным Profi является вторым по количеству среди
серийно выпускавшихся "больших" Spectrum'ов) и качеству
технического исполнения (многие из идей и разработок фирмы
CONDOR впоследствии копировались другими производителями), по
ряду причин оказался обделен вниманием в спектрумовских СМИ.
В то же время, как показывает практика, сейчас еще
достаточно большое количество Profi находится в рабочем
состоянии (в отличии от некоторых других клонов), и пользуется
заслуженной популярностью среди реальных спектрумистов.
Есть и не мало пользователей, купивших Profi с рук, и без
какой либо документации, и по этой причине испытывающих
определенные затруднения не только по полноценному использованию
этого компьютера, но и при подключении всякой периферии. Поэтому
эта статья, в первую очередь, предназначена для них.
Моему Profi уже 7 лет (он у меня с ноября 1993 года), и он
ни разу не дал мне повода разочароваться в нем. Его
конфигурация:
- Profi+ ver.4.15, Concurrent BIOS, 512KB RAM, 7 MHz,
standart pallete, 3 slots ZX-BUS/NEMO-BUS, General Sound-512KB,
5'25"/3'5" FDD'S, YM-2149F, PC-keyboard и так далее... (тип
принтера, аудиосистемы, и марка телевизора наверное не так
интересны).
Как вы, должно быть заметили, в моей конфигурации,
присутствует такое замечательное устройство как - General Sound,
которое находится в моем компьютере с 1998 года. Да, в то время
как народ дисскутировал о возможности подключении GS к Profi,
данный девайс уже присутствовал в конфигурации моего компьютера.
Сначала GS был подключен к системному разъему просто проводами,
а впоследствии я собрал и установил шинный формирователь со
слотами по схеме из журнала "Spectrum EXPERT".
Что можно сказать по поводу подключения к Profi различной
периферии вообще и GS в частности?..
Во-первых, вряд ли стоит рассчитывать на появление новых
устройств предназначенных исключительно для Profi, и поэтому
нужно ориентироваться на питерский стандарт шины ZX-BUS, - это и
рационально (если учитывать то количество уже выпущенных
устройств, а сколько еще разрабатывается...), и оптимально
технически (после некоторых усилий, подключение любых новых
устройств, будет сводиться к простому втыканию их в слот).
Теперь о возможных конфликтах с фирменной периферией
Profi... Как ни парадоксально, но в лучшем положении находятся
владельцы старших версий компьютера (3-й, 4-й), так как у них,
как правило, отсутствует какая-либо "лишняя" периферия
(COM-порт, часы...). И так как на Profi весьма грамотно сделана
дешифрация портов (стоя аплодируем фирме CONDOR :), то (при
условии исправности как самого компьютера, так и периферийных
устройств) подключение General Sound, либо какого-нибудь другого
устройства не должно вызвать никаких проблем.
В простейшем случае (если ограничиться подключением,
например, только GS) все сигналы беруться с системного разъема
(распайку системных разъемов см. в конце материала) с помощью
проводов (на Profi хоть и отсутствуют буфера, но большинство
сигналов, выведенных на системный разъем, подтянуты через
резисторы к +5В), при этом ничего не надо мудрить с сигналом
IORGE, вместо него подается сигнал OUTIORQ, - и все будет
работать! И в TR-DOS, и в CP/M - проверено на собственном
компьютере.
Более тонкого подхода требуют компьютеры 5-х версий, из-за
кучи дополнительных портов (закидываем CONDOR тухлыми яйцами,
все можно было сделать изящней и логичнее). Но и на 5-ых версиях
конфликты возможны только при работе в CP/M, так как все
дополнительные порты (за исключением часов) доступны только при
комбинации сигналов CP/M=1 (5-й бит порта #DFFD) и ROM14=1 (4-й
бит порта #7FFD), то при работе в режиме Sinclair никаких
конфликтов с GS быть не должно (в данном режиме сигнал CP/M по
умолчанию сброшен в ноль). Но, тем не менее, возможна работа с
GS и из CP/M.
Для этого, как мне кажется, не нужно вносить изменений в
аппаратуру компьютера, а достаточно изменить драйвера
конфликтующих устройств. Вот вам и еще одно преимущество
полноценной операционной системы. Конкретные примеры драйверов я
пока приводить не буду, так как не было возможности проверить их
на практике (у меня Profi 4-й версии).
Исходя из вышенаписанного очевидно, что в имевших место
случаях неудачного подключения General Sound'ов, была какая-то
неисправность самого GS. Это весьма вероятно, так как увы, но
продукция X-Trade на первых порах была очень низкого качества
изготовления. Хотя, может быть это и не их вина, по крайней мере
сейчас GS выпускает уже другая фирма - CPG Compex.
Конечно, если вы в дальнейшем планируете подключать и другую
периферию, то лучше все-таки поставить буфера по схеме из SE #2
и вывести на слоты все сигналы, которые предусмотрены стандартом
ZX-BUS/NEMO-BUS, хотя и далеко не все сигналы используются в
настоящее время, но с прицелом на будущее...
!ВНИМАНИЕ! Касается всех версий Profi!
Если в Вашем компьютере стоит процессор типа: Z-80A,
Z-80B, либо отечественный КР1858ВМ1, то в случае
подключения новых устройств, при включении TURBO, в
режиме Sinclair, возможны сбои и зависания
компьютера. Это связано с малой нагрузочной
способностью вышеперечисленных процессоров.
Выход: либо не включать TURBO в Sinclair-режиме (в CP/M и
программах не использующих ПЗУ - глюков не наблюдалось), либо
поставить процессор типа - Z84008PEC, Z840010PEC. Как показал
опыт использования новых процессоров на компьютере Profi -
данная замена никак не сказывается на работоспособности
программ. И неработоспособность ряда старых программ на
компьютерах KAY с аналогичными процессорами, по-видимому,
связана со схемотехникой KAY'ев, а не процессоров. Хотя,
справедливости ради, должен заметить, что последовательность
байт - #ED #71, интерпретируется новыми процессорами не как OUT
(C),#00, а - OUT (C),#FF ;)
<...>
Системный разъем компьютеров Profi
- нумерация контактов сверху вниз, сторона А с краю платы;
- L.SOUND и R. SOUND левый и правый каналы AY/YM (соответсвенно:
канал - A и канал - B, канал C подается на GND);
- звездчкой (*) помечены сигналы, которые разведены только на
платах ver. 5.xx;
[ контакты * сигналы * контакты * сигналы ]
. 1B . TURBO- . 1A . .
. 2B .R. SOUND . 2A .L. SOUND .
. 3B . A15 . 3A . A14 .
. 4B . A13 . 4A . A12 .
. 5B . D7 . 5A . +5V .
. 6B . . 6A . .
. 7B . . 7A . .
. 8B . D0 . 8A . GND .
. 9B . D1 . 9A . GND .
. 10B . D2 . 10A . CLC_AY .
. 11B . D6 . 11A . A0 .
. 12B . D5 . 12A . A1 .
. 13B . D3 . 13A . A2 .
. 14B . D4 . 14A . A3 .
. 15B . INT- . 15A .OUTIORQ- .
. 16B . NMI- . 16A . GND .
. 17B . HALT- . 17A . *-5V .
. 18B . MREQ- . 18A . .
. 19B . IORQ- . 19A . .
. 20B . RD- . 20A . .
. 21B . WR- . 21A . BUSRQ- .
. 22B . *12MHz . 22A . RESET- .
. 23B . READY- . 23A . A7 .
. 24B . +12V . 24A . A6 .
. 25B . *TIMER . 25A . A5 .
. 26B . M1- . 26A . A4 .
. 27B . REF . 27A . ROMCS- .
. 28B . A8 . 28A . BUSAK- .
. 29B . A10 . 29A . A9 .
. 30B . CP/M . 30A . A11 .
. 31B . TR-DOS- . 31A . ROM14 .
. 32B . BLK- . 32A .SND_BEEP .
* * *
ПОЛНАЯ СПЕЦИФИКАЦИЯ ПОРТОВ КОМПЬЮТЕРОВ
PROFI (ver 3.xx), PROFI+ (ver 4.xx), PROFI2+ (ver 5.xx)
Основная периферия в длинной (логической) адресации
для Profi, Profi+, Profi2+.
- логическая адресация действительна во всех режимах работы
компьютеров;
- /w - означает, что порт доступен только по записи;
- /r - означает, что порт доступен только по чтению;
[ CP/M=0/1 & ROM14=0/1 ]
часы "AS" (номер регистра) /w........................#FFFF
порт CMR1 (описание см. ниже) /w.....................#DFFD
ИМС AY-3-8910/12, YM-2149F (данные)..................#BFFD
ИМС AY-3-8910/12, YM-2149F (номер регистра)..........#FFFD
часы "DS" (данные)...................................#FFEF
свободные адреса A8-A12..............................*****
порт CMR0 (описание см. ниже) /w.....................#7FFD
Основная периферия в короткой (физической) адресации
для Profi, Profi+, Profi2+.
(основная адресация для режима Sinclair)
[ CP/M=0 & ROM14=0 ]
порт "FF" /r; часы "AS" /w.............................#FF
клавиатура D0-D4(D5) /r; бордюр D0-D2 /w;
чтение магн. D6 /r; запись магн. D3 /w; beeper D4 /w...#FE
порты AY/YM; CMR0....................................#xxFD
свободно...............................................#FB
свободно...............................................#F7
часы "DS"..............................................#DF
ВГ93 (TR-DOS=1); ВВ55 (TR-DOS=0)-рус...................#7F
ВГ93 (TR-DOS=1); ВВ55 (TR-DOS=0)-порт C................#5F
ВГ93 (TR-DOS=1); ВВ55 (TR-DOS=0)-порт B................#3F
ВГ93 (TR-DOS=1); ВВ55 (TR-DOS=0)-порт A /w; Kempst./r..#1F
RQ ВГ93 (TR-DOS=1); см. порт "FF" (TR-DOS=0) /w........#FF
!при CP/M=1 системный регистр RQ ВГ93 доступен по адресу #BF!
- назначение регистров ВГ93 см. в нижеследующей таблице;
- назначение регистра RQ ВГ93 дано в отдельной таблице;
- описание регистров AY-3-8910/12, YM-2149F см. в документации
на данную ИМС;
<..............................................................>
Расширенная периферия в короткой адресации
только для Profi2+.
- все порты, выбирающиеся по длинным адресам, работают и при
включенной короткой адресации (например порты CMR0, CMR1
могут в этом режиме выбираться и по коротким, и по длинным
адресам);
- COM1 означает, что данный адрес относится к COM-порту;
[ CP/M=1 & ROM14=1 ]
часы "AS" - номер регистра /w..........................#FF
клавиатура D0-D4(D5) /r; бордюр D0-D2 /w;
чтение магн. D6 /r; запись магн. D3 /w; beeper D4 /w...#FE
регистры AY-3-8910/12, YM-2149F......................#xxFD
модем "CONDOR" (внешний адрес).........................#FB
таймер ВИ53/2 (внешний адрес)..........................#F7
регистр управления ВВ51 (COM1).........................#F3
регистр управления ВИ53/1 (COM1).......................#EF
порт IDE /w............................................#EB
порт рус ВВ55..........................................#E7
регистр данных ВГ93 [#7F]..............................#E3
часы "AS" (неосновной адрес) /w........................#DF
модем "CONDOR" (внешний адрес).........................#DB
таймер ВИ53/2 (внешний адрес)..........................#D7
регистр данных ВВ51 (COM1).............................#D3
регистр канала 2 ВИ53/2 (COM1).........................#CF
порт IDE /r............................................#CB
порт ВВ55 (порт C).....................................#C7
регистр сектора ВГ93 [#5F].............................#C3
часы "DS"..............................................#BF
модем "CONDOR" (внешний адрес).........................#BB
таймер ВИ53/2 (внешний адрес)..........................#B7
регистр управления контроллером прерываний (см. ниже)..#B3
регистр канала 1 ВИ53/1 (COM1).........................#AF
порт IDE /w............................................#AB
порт ВВ55 (порт B).....................................#A7
регистр дорожки ВГ93 [#3F].............................#A3
часы "DS" (неосновной адрес)...........................#9F
модем "CONDOR" (внешний адрес).........................#9B
таймер ВИ53/2 (внешний адрес)..........................#97
аналогично #B3 (COM1)..................................#93
регистр канала 0 ВИ53/1 (COM1).........................#8F
порт IDE...............................................#8B
порт ВВ55 (порт A).....................................#87
регистр команд ВГ93 [#1F] /w; регистр состояния ВГ93/r.#83
свободно...............................................#7F
свободно...............................................#7B
свободно...............................................#77
свободно...............................................#6F
свободно...............................................#5F
системный регистр ВГ93 [#FF]...........................#3F
- описание портов IDE см. ниже;
<..............................................................>
CONTROL MEMORY REGISTERS
Значение разрядов порта CMR1
(#DFFD - CP/M register)
[D0 segA3]
[D1 segA4] Номер проецируемой страницы памяти (строка)
[D2 segA5]
[ ] Выбор положения окна проецирования сегментов:
[D3 SCO ] 0 - окно номер 1 (#C000-#FFFF)
[ ] 1 - окно номер 2 (#4000-#7FFF)
[D4 WOROM] 1 - отключает блокировку порта CMR0 и выключает
[ ] ПЗУ, помещая на его место ОЗУ из seg 00
[ ] 1 - блокирует работу контроллера из ПЗУ TR-DOS
[D5 CP/M ] и включает порты на доступ из ОЗУ (ROM14=0);
[ ] При ROM14=1 - мод. доступ к расширен. периферии
[D6 SCR ] памяти CPU на место seg 02, при этом бит D3 CMR0
[ ] должен быть в 1 (#8000-#BFFF)
[D7 80DS ] 0 - Spectrum растр (seg 05)
[ ] 1 - Profi растр (seg 06 & seg 3A;seg 04 & seg 38
<..............................................................>
Значение разрядов порта CMR0
(#7FFD - Sinclair 128 register)
[D0 segA0]
[D1 segA1] Номер проецируемого сегмента памяти (столбец)
[D2 segA2]
[ ] Выбор положения растра экрана Spectrum:
[ ] 0 - seg 05; 1 - seg 07 (80DS=0)
[D3 POLEK]
[ ] Выбор положения экрана Profi (80DS=1):
[ ] 0 - экран точек seg 04, аттрибуты seg 38;
[ ] 1 - экран точек seg 06, аттрибуты seg 3A.
[ ] Переключает страницы ПЗУ Spectrum (CP/M=0):
[D4 ROM14] 0 - Spectrum 128; 1 - Spectrum 48.
[ ]
[ ] Модификатор внешних устройств (CP/M=1)
[D5 BLOCK] Блокирует работу порта CMR0 (WOROM=0)
[D6 ]
[D7 ]
Системный регистр контроллера дисководов
(#FF при CP/M=0 (из ПЗУ); #BF при CP/M=1 (из ОЗУ))
[D0 ] Выбор дисковода A-D /w
[D1 ]
[D2 ] 0 - сброс ВГ93 /w
[D3 ] 1 - HRDY; 0 - эмуляция сигнала IP /w
[D4 SIDE ] Выбор стороны диска: 0 - верхняя, 1 - нижняя /w
[D5 ]
[ ] Плотность записи: 0 - MFM/DD; 1 - FM/SD /w
[D6 ]
[ ] Чтение сигнала DRQ /r
[D7 ] Чтение сигнала INTRQ /r
Регистр управления контроллером прерываний и компортом
(#B3 при CP/M=1 & ROM14=1)
[ INT ] Прерывания: 1 - разрешены; 0 - запрешены /w
[D0 ]
[ RI ] Чтение линии RING компорта /r
[D1 ]
[D2 ]
[D3 ]
[D4 ]
[D5 ]
[D6 ]
[D7 DCD ] Чтение сигнала DCD компорта /r
Порты внешней периферии
Порты контроллера IDE
(доступны только при CP/M=1)
#06AB - системный регистр контроллера /w
#07EB - регистр команд /w
#07CB - регистр состояния /r
#06EB - регистр номера головки на запись
#06CB - регистр номера головки на чтение
#05EB - ст. байт номера дорожки на запись
#05CB - ст. байт номера дорожки на чтение
#04EB - мл. байт номера головки на запись
#04CB - мл. байт номера головки на чтение
#03EB - регистр номера сектора на запись
#03CB - регистр номера головки на чтение
#02EB - счетчик секторов на запись
#02CB - счетчик секторов на чтение
#01EB - регистр стартового цилиндра предкомпенсации /w
#01CB - регистр ошибок /r
Порты General Sound
(!при CP/M=1 & ROM14=1 возможны конфликты с компортом!)
#BB - регистр команд /w; регистр состояния /r
#B3 - регистр данных /w; регистр вывода /r
Подробнее о портах GS см. в руководстве по программированию.
Порты Kempston Mouse
#FBDF - X-координаты /r
#FFDF - Y-координаты /r
#FADF - состояние кнопок /r