Export to GitHub

bkbtl - Ports.wiki


Порты БК

Без подключенного дисковода, порты занимают адреса 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 -- по чтению: данные чтения, по записи: данные записи

Ссылки