Порты БК
Без подключенного дисковода, порты занимают адреса 177600-177776.
При подключенном блоке дисковода, его ПЗУ занимает адреса 160000-167776, при этом адреса 170000-177776 остаются под порты.
176560 -- 176567
Регистры ИРПС для школьного Бейсика.
177130
Регистр управления НГМД -- КНГМД и АльтПро.
По чтению: * бит 0: признак 0-ой дорожки * бит 1: готовность к работе * бит 2: защита от записи * бит 7: запрос на чтение/запись данных из регистра данных * бит 14: признак записи циклического контрольного кода на диск * бит 15: признак 0-го сектора (индексного отверстия)
По записи: * биты 0-3: выбор накопителя; бит 3: см. примечание (АльтПро) * бит 4: включение мотора * бит 5: выбор головки, "0" -- верхняя, "1" -- нижняя. * бит 6: направление перемещения головок * бит 7: шаг (40/80 дорожек?) * бит 8: признак "начало чтения" * бит 9: признак "запись маркера" * бит 10: включение схемы предкоррекции
(АльтПро) При установленном бите 010 при записи в регистр 0177130 для контроллеров с количеством ДОЗУ 64 или 128Кб подключается ПЗУ Бейсика. Для остальных контроллеров Бейсик подключается полным его копированием в одну из страниц. Однако бит 010 всё равно надо записать в 0177130 (иначе при чтении по адресам портов контроллера будет читаться не Бейсик, а содержимое портов).
177132
Регистр данных НГМД -- КНГМД и АльтПро. Доступен по чтению и записи.
177560 -- 0177567
Регистры ИРПС для школьного Фокала. Также, стандартные адреса терминала в PDP-11.
177560 * бит 6: "1" -- разрешение прерывания при приеме данных, адрес прерывания читается из регистра 177566 * бит 7: "1" -- во входном регистре 177562 готов новый байт
177562 -- Входной регистр данных. Доступен по чтению, по записи ничего не делает.
177564 * бит 6: "1" -- разрешение прерывания после завершения передачи байта данных, адрес прерывания читается из регистра 177566 плюс 4 * бит 7: "1" -- в выходном регистре 177566 готов новый байт для передачи
177566 * По записи -- выходной регистр данных. * По чтению -- адрес вектора прерывания, равен 060 для приемника и 064 для передатчика.
177660
Регистр состояния клавиатуры. * бит 6 -- маскирование прерывание от клавиатуры, "0" -- разрешено прерывание по вектору 060 либо 0274. Прерываение вызывается при появлении "1" в бите 7. Начальное состояние: "0". * бит 7 -- готовность: "1" -- в регистре данных клавиатуры (177662) готов код нажатой клавиши. Устанавливается при нажатии на клавишу, сбрасывается при чтении регистра данных клавиатуры. Начальное состояние: "1". Доступен только по чтению. * другие биты: "0".
См. также: порт 177716 бит 6 -- установлен в "0" если нажата клавиша клавиатуры, "1" если нет нажатых клавиш.
177662
Регистр данных клавиатуры. * биты 0-6: код клавиши. Доступ только по чтению. * биты 8-11: (БК-0011) палитра. Доступны только по записи * бит 14: разрешение прерывания по таймеру (50 Гц), "0" -- прерывание разрешено, "1" -- таймер отключен. Доступен только по записи. * бит 15: (БК-0011) текущий буфер экрана, "0" -- страница 5, "1" -- страница 6. Доступен только по записи.
177664
Регистр скроллинга. Доступен по записи и чтению. * биты 0-7: смещение скроллинга, строк. Начальное значение -- 0330. * бит 9: сокращенный режим экрана, "0" -- сокращенный (1/4 экрана, старшие адреса), "1" -- полный экран 256 строк.
177674, 177676
Сюда записывается PC и PSW при обработке прерывания HALT. Эта память на БК никуда не размаплена, при обращении вызывает прерывание по адресу 000004.
177700..177705
Регистры ВМ1 (наследие от 1801ВЕ1).
177700 -- Регистр режима (РР) ВМ1, читается значение 177740. ("Биты 0,1,2 регистра режима используются для синхронизации пуска подчиненных процессоров главным процессором в многопроцессорной системе, т.к. блок регистров каждого процессора доступен на шине любому другому процессору вне зависимости от состояния процессора-хозяина.")
177702 -- Регистр адреса прерывания (РАП) ВМ1, читается значение 177777. ("странное свойство регистра 0177702 - при записи в него любого значения, он пропадает из адресного пространства до перезапуска процессора")
177704 -- Регистр ошибки (РОШ) ВМ1, читается значение 177440.
177706, 177710, 177712
Программируемый таймер ВМ1.
177706 -- Регистр начального значения таймера. Доступен по чтению и записи.
177710 -- Реверсивный счетчик. Доступен по чтению, запись в регистр игнорируется.
177712 -- Программируемый таймер -- регистр управления. * бит 0: STOP: "1" - остановка * бит 1: WRAPAROUND: "1" - вслед за 0 всегда идет 177777, независимо от значения 177706 и режима одновибратора * бит 2: EXPENABLE: "1" - разрешение установки сигнала EXPIRY ("конец счета") * бит 3: ONESHOT: режим одновибратора * бит 4: RUN: запуск счетчика, запись "1" -- загружает счетчик из регистра 177706 и начинает отсчет * бит 5: делитель на 16, "1" -- включен * бит 6: делитель на 4, "1" -- включен * бит 7: EXPIRY: флаг окончания счета, устанавливается в "1" при достижении счетчиком нуля, сбрасывается только программно * биты 8-15 не используются, "1".
177714
Порт принтера -- два регистра, входной по чтению и выходной по записи.
Принтер: TODO
Covox (запись): * биты 0-7 -- данные для формирования высоты сигнала
Джойстик (чтение): * бит 0 -- кнопка 1 * бит 1 -- кнопка 2 * бит 2 -- кнопка 3 * бит 3 -- кнопка 4 * бит 4 -- вправо * бит 5 -- вниз * бит 9 -- влево * бит 10 -- вверх
AY-3-891x (запись): * запись слова: код 362..377 -- выбор регистра 13..0 * запись байта: помещение значения в текущий регистр
177716
Системный регистр. Внешний регистр 1 (ВР1, SEL1) процессора ВМ1, регистр начального пуска.
По чтению: * бит 2: признак записи в системный регистр. Устанавливаеся в "1" при любой записи в регистр, сбрасывается в "0" по окончании операции чтения из регистра. * бит 4: данные с ТЛГ-линии * бит 5: данные с магнитофона * бит 6: нажатие клавиши, установлен в "0" если нажата клавиша клавиатуры, "1" если нет нажатых клавиш. * бит 7: сигнал готовности с ТЛГ-линии * биты 8-15: адрес начального пуска, 100000 (БК-0010), 140000 (БК-0011). * биты 0,1, 3,4 не используются, "0".
По записи, бит 11 = "0": * бит 2: данные на магнитофон * бит 4: данные для передачи на ТЛГ-линию. Начальное состояние "1". * бит 5: данные на магнитофон либо сигнал готовности на ТЛГ-линию. Начальное состояние "0". * бит 6: данные на магнитофон и на пьезодинамик. Начальное состояние "0". * бит 7: включение двигателя магнитофона, "1" -- стоп, "0" -- пуск. Начальное состояние "1". * бит 11: "0" * бит 12: разрешение прерывания по клавише СТОП
По записи, бит 11 = "1" -- управление памятью БК-0011: * бит 0: (БК-0011) подключение страницы 0 ПЗУ на адреса 100000-140000, отключение ОЗУ * бит 1: (БК-0011) подключение страницы 1 ПЗУ на адреса 100000-140000, отключение ОЗУ * бит 3: (БК-0011) подключение страницы 2 ПЗУ на адреса 100000-140000, отключение ОЗУ * бит 4: (БК-0011) подключение страницы 3 ПЗУ на адреса 100000-140000, отключение ОЗУ * биты 8,9,10: (БК-0011) окно ОЗУ #1 -- номер страницы ОЗУ, подключаемой на адреса 100000-140000 * бит 11: "1" * биты 12,13,14: (БК-0011) окно ОЗУ #0 -- номер страницы ОЗУ, подключаемой на адреса 040000-100000
177740 -- 177756
(АльтПро) Регистры портов контроллера винчестера.
177740 -- по чтению: статус, по записи: команда
177741 -- по чтению: адрес накопителя, по записи не используется
177742 -- выбор НЖМД и головки
177743 -- по чтению: 2-й статус, по записи: сброс
177744 -- старший байт номера дорожки
177746 -- младший байт номера дорожки
177750 -- номер сектора
177754 -- по чтению: код ошибки, по записи не используется
177756 -- по чтению: данные чтения, по записи: данные записи
Ссылки
- http://rsc-team.ru/index.pl?rzd=1&descr=articles&id=2 -- описание контроллеров АльтПро
- http://groups.google.com/group/bk0010/web/hdc -- В. Е. Новак. Контроллер IDE винчестера для БК
- http://gazetakpss.narod.ru/kpss17.txt -- КПСС-17. Схема музыкальной приставки "COVOX" для БК
- Журнал БК №5 1994, стр.22-41 -- Описание прошивки ПЗУ КНГМД КР1801РЕ2-326.
- http://bk0010.narod.ru/docs/BK_Magazine/bk-1995.1.djvu -- журнал БК, №1 1995, есть описание Covox (стр.29) и описание подключения AY-3-891x к БК-0011М (стр.37-40)
- Журнал БК №5 1995, стр.57-63 -- Контроллер IDE-винчестера для БК