Электроника МС 0515: различия между версиями
Nzeemin (обсуждение | вклад) Нет описания правки |
Nzeemin (обсуждение | вклад) |
||
Строка 13: | Строка 13: | ||
* Контроллер дисковода: на основе [[КР1818ВГ93]] (аналог [[WD1793]]), драйвер <code>DZ</code>: 80 дорожек по 10 секторов, 512 байт в секторе | * Контроллер дисковода: на основе [[КР1818ВГ93]] (аналог [[WD1793]]), драйвер <code>DZ</code>: 80 дорожек по 10 секторов, 512 байт в секторе | ||
* Клавиатура: Электроника МС7004 (отдельный блок) либо Электроника МС7007 (встроенная) | * Клавиатура: Электроника МС7004 (отдельный блок) либо Электроника МС7007 (встроенная) | ||
* Программируемый таймер на [[КР580ВИ53]] (аналог [[i8253]]): каналы 0 и 1 тактируют клавиатуру и порт принтера, канал 2 доступен пользователю | |||
* Параллельный порт | * Параллельный порт | ||
Версия от 20:36, 20 июля 2017
Этот документ создан для Emuverse и распространяется на условиях лицензии CC-BY-SA-3.0. |
Электроника МС0515 — советский компьютер.
Разработан в Воронеже в 1990 году (в процессе разработки назывался Электроника УБПК), выпускался на воронежском заводе «Процессор».
Технические характеристики
- Процессор: КР1807ВМ1 (аналог процессора T11), по системе команд совместим с PDP-11, Электроника-60, ДВК
- Оперативная память: 128 КБ
- ПЗУ: 16 КБ
- Видео
- видеорежим «среднего разрешения» 320×200, 8 цветов; на каждый горизонтальный октет из 8 точек можно используется 2 цвета из палитры 8 цветов, признаки яркости и мерцания; набор цветов повторяет палитру компьютера ZX Spectrum, имеется также «бордюр» (неиспользуемая область экрана), цвет которого выбирается из той же палитры
- видеорежим «высокого разрешения» 640×200, 2 цвета
- Контроллер дисковода: на основе КР1818ВГ93 (аналог WD1793), драйвер
DZ
: 80 дорожек по 10 секторов, 512 байт в секторе - Клавиатура: Электроника МС7004 (отдельный блок) либо Электроника МС7007 (встроенная)
- Программируемый таймер на КР580ВИ53 (аналог i8253): каналы 0 и 1 тактируют клавиатуру и порт принтера, канал 2 доступен пользователю
- Параллельный порт
Процессор
КР1807ВМ1
Регистр режима в битах 13-15 имеет 1 1 1, что задаёт адрес старта — 172000 и адрес рестарта 172004.
Прерывания
IRQ CPx Pri Vec Device ───────────────────────────────── 11 LHLL 6 100 timer 9 LHHL 6 110 serial RX 8 LHHH 6 114 serial TX 5 HLHL 5 130 7004 keyboard 3 HHLL 4 060 7007 keyboard 2 HHLH 4 064 vblank
Кроме того, есть ряд зарезервированных векторов прерываний:
Vec Описание ───────────────────────────────── 000 Устройство вызвало прерывание, но не установило адрес вектора 004 Недопустимый режим для команд JMP / JSR 010 Недопустимая/зарезервированная инструкция 014 Инструкция BPT или установлен бит T 020 Инструкция IOT 024 Сбой питания 030 Инструкция EMT 034 Инструкция TRAP
Регистры
177400 Регистр диспетчера памяти ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐ │15│14 13 12│11 10 9│ 8│ 7 6│ 5 4 3│ 2 1 0│ └──┴──┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┘ │ │ │ │ │ │ │ └──┴──┴──┴──┴──┴──┴─ Выбор ОЗУ: 1 - осн., 0 - доп. ИРПР-М ─┴──┘ │ │ │ └───── Прерывание от монитора │ │ └──────── Прерывание от таймера ├──┤--------└─ Включение ВОЗУ в основную память: 1 - включено 0 0 - 000000-037777 0 1 - 040000-077777 1 x - 100000-137777
177600 Системный регистр A ┌--┬--┬--┬--┬--┬--┬--┬--┌──┬──┬──┬──┬──┬──┬──┬──┐ │15 8│ 7 6│ 5 4 3│ 2 1 0│ └--┴--┴--┴--┴--┴--┴--┴--└─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┘ Выбор ПЗУ ──┘ │ │ │ └──│──┴──┴─ Выбор привода НГМД Запись на НМЛ ──┘ │ │ └─────── Двигатель НГМД вкл/выкл Светодиоды 2 и 1 ─┴──┘
177602 Системный регистр B ┌--┬--┬--┬--┬--┬--┬--┬--┌──┬──┬──┬──┬──┬──┬──┬──┐ │15 8│ 7 6│ 5 4 3│ 2 1 0│ └--┴--┴--┴--┴--┴--┴--┴--└─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┘ Чтение НМЛ ──┘ │ │ │ │ │ │ └─ INTR НГМД ИРПР-М ─┴──┘ │ │ │ └──── DRQ НГМД ├──┤ └─────── Готовность НГМД: 0 - готов Кадровая частота 0 0 - 50 Гц 0 1 - 72 Гц 1 x - 60 Гц
177604 Системный регистр C ┌--┬--┬--┬--┬--┬--┬--┬--┌──┬──┬──┬──┬──┬──┬──┬──┐ │15 8│ 7 6│ 5 4 3│ 2 1 0│ └--┴--┴--┴--┴--┴--┴--┴--└─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┘ Таймер звука ──┘ │ │ │ │ └──┴──┴─ Цвет бордюра Звук вкл/выкл ────┘ │ │ │ Тон звука ───────────┘ │ └─ Разрешение экрана 0 - среднее, 1 - высокое Светодиод 3 ──┘
Контроллер НГМД
Системные регистры имеют ряд флагов, отвечающих за работу НГМД:
177600 Системный регистр A ┌--┬--┬--┬--┬--┬--┬--┬--┌──┬──┬──┬──┬──┬──┬──┬──┐ │15 8│ 7 6│ 5 4 3│ 2 1 0│ Номер Название └--┴--┴--┴--┴--┴--┴--┴--└──┴──┴──┴──┴─┬┴─┬┴─┬┴─┬┘ привода устройства │ │ └──┴─ физич. логическое Поверхность НГМД ────┘ │ 0 0 0 DZ0 (низ), DZ2 (верх) 0 - низ 1 - верх │ 0 1 1 DZ1 (низ), DZ3 (верх) Двигатель НГМД включен ─┘ 1 0 2 0 - вкл. 1 - выкл. 1 1 3 177602 Системный регистр B ┌--┬--┬--┬--┬--┬--┬--┬--┌──┬──┬──┬──┬──┬──┬──┬──┐ │15 8│ 7 6│ 5 4 3│ 2 1 0│ └--┴--┴--┴--┴--┴--┴--┴--└──┴──┴──┴──┴──┴─┬┴─┬┴─┬┘ │ │ └─ INTR НГМД │ └──── DRQ НГМД └─────── Готовность НГМД: 0 - готов
Сам контроллер построен на КР1818ВГ93 (аналог WD1793).
Регистры контроллера НГМД (8-разрядные):
- 177640 (чтение) — регистр состояния
- 177640 (запись) — регистр команд
- 177642 — регистр дорожки
- 177644 — регистр сектора
- 177646 — регистр данных
177640 (чтение) Регистр состояния ┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┐ │ 7 6 │ 5 4 3 │ 2 1 0 │ Команда └───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┘ Тип I │ Not Write Head Seek CRC Track 0 Index Busy │ │ ready protect loaded error error │ Read Address │ Not 0 0 RNF CRC Lost DRQ Busy │ │ ready error data │ Read Sector │ Not 0 Record RNF CRC Lost DRQ Busy │ │ ready type error data │ Read Track │ Not 0 0 0 0 Lost DRQ Busy │ │ ready data │ Write Sector │ Not Write Write RNF CRC Lost DRQ Busy │ │ ready protect fault error data │ Write Track │ Not Write Write 0 0 Lost DRQ Busy │ │ ready protect fault data │
177640 (запись) Регистр команды ┌--┬--┬--┬--┬--┬--┬--┬--┌──┬──┬──┬──┬──┬──┬──┬──┐ │15 8│ 7 6│ 5 4 3│ 2 1 0│ └--┴--┴--┴--┴--┴--┴--┴--└─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┘ Тип Команда │ │ │ │ │ │ │ │ I Restore 0 0 0 0 h V r1 r0 r1 r0 — Stepping Motor Rate (6/12/20/30 ms) I Seek 0 0 0 1 h V r1 r0 V — Track Number Verify Flag (0: no verify, 1: verify on dest track) I Step 0 0 1 T h V r1 r0 h — Head Load Flag (1: load head at beginning, 0: unload head) I Step-In 0 1 0 T h V r1 r0 T — Track Update Flag (0: no update, 1: update Track Register) I Step-Out 0 1 1 T h V r1 r0 II Read Sector 1 0 0 m S E C 0 C — Side Compare Flag (0: disable side compare, 1: enable side comp) II Write Sector 1 0 1 m S E C a0 a0 — Data Address Mark (0: FB, 1: F8 (deleted DAM)) III Read Address 1 1 0 0 0 E 0 0 E — 15 ms delay (0: no 15ms delay, 1: 15 ms delay) III Read Track 1 1 1 0 0 E 0 0 S — Side Compare Flag (0: compare for side 0, 1: compare for side 1) III Write Track 1 1 1 1 0 E 0 0 m — Multiple Record Flag (0: single record, 1: multiple records) IV Force Interrupt 1 1 0 1 i3 i2 i1 i0 i3 i2 i1 i0 — Interrupt Condition Flags
В основном, в работе используются следующие команды:
- C0 — чтение адреса (Read Address) — контроллер находит следующую метку заголовка сектора, читает 6 байт заголовка сектора; важно, что по завершению команды в регистре сектора 177644 находится номер текущей дорожки.
- 1D — поиск (Seek) — в регистре дорожки 177642 находится номер текущей дорожки, в регистре сектора 177644 — номер дорожки на которую нужно перейти; контроллер перемещает головку на нужную дорожку и обновляет регистр дорожки.
- 43 — шаг вперёд (Step In), скорость шага 30 мс.
- 63 — шаг назад (Step Out), скорость шага 30 мс.
- 80 — запись сектора (Write Sector).
- F4 — запись дорожки (Write Track) — используется при форматировании диска.
Формат дискет: 1 сторона (0), 80 цилиндров (0-79), по 10 секторов (1-10) на трек, 512 байт в секторе.
Структура дорожки
Структура дорожки восстановлена по коду FORML.SAV с дискеты 059.dsk.
Отсчёт идёт от индексного отверстия. Количество байт указано десятичное, байты — шестнадцатеричные значения, в скобках указано что реально записывается на диск, в особых случаях.
Кол-во байт Записываемые байты ───────────────────────────────────────────────── │ 54 4E │ 12 00 105-┤ 4 F6 (записывается C2) │ 35 4E ──── Начало сектора 1..10 ────────────────────┐ │ 8 00 │ │ 3 F5 (записывается A1) │ │ 1 FE — маркер заголовка сектора │ │ 1 tt — номер дорожки 0..79 │ │ 1 00 — сторона: 0 - низ │ │ 1 0s — номер сектора 1..10 │ │ 1 02 — 512 байт на сектор │ │ 1(2) F7 (записывается 2 байта CRC) │ │ 22 4E │ │ 12 00 │ │ 3 F5 (записывается A1) │ │ 1 FB — маркер данных │ 612-┤ 512 xx — данные сектора │ (614)│ 1(2) F7 (записывается 2 байта CRC) │ │ 44 4E │ ──── Конец сектора ───────────────────────────┘ │ 352 4E — до конца дорожки ───────────────────────────────────────────────── Всего 6575(6577)
Процесс загрузки
- Тесты процессора, памяти
- Тест клавиатуры
- Тест НГМД:
- команда C0, команда 1D (переход на track 1)
- 5 команд 43 (переход на track 6), команда C0, проверка того что в регистре сектора появился номер дорожки 6
- 5 команд 63 (возврат на track 1), команда C0
- Чтение track 1 sector 1: команда C0, команда 80 — читаются 512 байт начиная с адреса 000000
- Запуск с адреса 000000
Ссылки
- Электроника МС 0515 в Википедии
- Тема «МС-0515» на zx-pk.ru
- [1] — описание процессора T11, оригинала КР1807ВМ1
- WD1793 на MSX Info Pages
- Электроника МС0585, МС0515 — Документация