PDA

Просмотр полной версии : Контроллер дисковода на одной микросхеме ATMega8



vinxru
06.03.2012, 15:21
Точнее контроллер IDE, FDD, SDCard на котором будут работать существующие ОС.

Насколько я понял, процессор компьютера БК0010 при обращении к любому устройству (в том числе памяти), ждет от этого устройства сигнал RPLY. И пока не придет RPLY, выполнение программы не продолжится. (Или не произойдет прерывание-ошибка, если устройство не успеет ответить за 64 такта).

Величина тайм-аута зависания шины составляет 64 такта процессора. В случае отсутствия сигнала SYNC в течение указанного промежутка времени после установки сигналов DIN или DOUT, произойдет прерывание по 4 ячейке. (с) http://emuverse.ru

Это очень хорошая новость. Это значит, что можно абсолютно весь эмулятор реализовать на единственном "медленном" микроконтроллере?

Меня изначально пугала идея подключать стандартное ПЗУ (27512) в БК0010. Помимо того, что потребуется ставить две ПЗУ, нужно еще ставить 8 не маленьких микросхем (хранение и дешифрация адреса).

Схема БК0010. Сигнал RPLY/СИП/B20 выведен на системную шину. (http://photo.qip.ru/users/gryphon1/96444495/117948683/full_image/)

Схема блока расширения памяти. Там есть блок формирования СИП. (http://www.utilb.ru/images/stories/8.gif)

Вообще, ПЗУ от БК0010 очень похожи на микросхемы GROM компьютера TI99/4. Там так же шина данных и адреса совмещены, так же внутренняя дешифрация адреса, так же есть сигнал RPLY. И я уже написал эмулятор этих GROM на МК ATMega. Так что проблем в написании эмулятора контроллера дисковода не должно возникнуть.

Прав ли я?
И кто нибудь уже делал подобный эмулятор ПЗУ и FDD на единственном МК?

Такой контроллер может изготовить любой электронщик, так как не нужно будет множества редких элементов. Нужен будет только:

1) Разъем
2) Контроллера ATMega
3) Разъем для SD-карты
4) SD-карта

И цена подобного контроллера будет от 100 рублей.

P.S. У меня сейчас проблемы только с разъемом.

Woland
07.03.2012, 01:25
Очень оптимистично про 100 руб..
Мне под заказ разработчик реплицирует SMK512 на ПЛИС, выйдет себестоимости минимум 700 руб (без учета оплаты интеллектуального труда).

vinxru
07.03.2012, 11:49
ПЛИС дороже стоит. И вы делаете реплику сложного устройства.

Я же планирую сделать работу с SD-картой в микроконтроллере. БК0010 будет записывать в специальный порт команду (1-чтение сектора, 2-запись сектора, 3-форматирование дорожки...) и читать/записывать из этого порта 512 байт данных.

Хотя можно сделать полноценную эмуляцию контроллера FDD, но я думаю, что это не нужно.

CodeMaster
07.03.2012, 12:07
1) Разъем
И цена подобного контроллера будет от 100 рублей.
P.S. У меня сейчас проблемы только с разъемом.

Один разъём 100-150 руб.


БК0010 будет записывать в специальный порт команду

БК0010 то ничего записывать не будет, это софт делает. Вопрос в том, что это будет? Это типа ROM диска с загрузчиком с него как ты к Апогею делал или как стандартный софт будет с этим работать?

vinxru
07.03.2012, 13:24
БК0010 то ничего записывать не будет, это софт делает. Вопрос в том, что это будет? Это типа ROM диска с загрузчиком с него как ты к Апогею делал или как стандартный софт будет с этим работать?

Все стандартные программы должны с ним работать, как с обычным дисководом.

Насколько я понял, почти все программы для БК обращаются к диску
через драйвер находящийся в ПЗУ контроллера дисковода.

По адресам находятся подпрограммы:
@#160000 - Загрузка и запуск boot-секторов с главного флопа.
@#160002 - Загрузка и запуск boot-секторов с любого флопа.
@#160004, 6 - Чтение/запись секторов
@#160010 - Иницилиазция
@#160012 - Форматирование дорожки

Я напишу свои варианты этих функций, простейшие функции в несколько команд,
которые будут просто копировать данные между БК0010 и микроконтроллером.

---------- Post added at 11:55 ---------- Previous post was at 11:49 ----------


@#160004 — подпрограмма чтения/записи секторов (ЕМТ54). Подпрограмме передаются параметры:

R0 — номер первого сектора из группы читаемых или записываемых.
R1 — длина массива информации (файла). Задается в двухбайтных машинных словах. Если длина больше нуля, это означает чтение, если меньше нуля (NEG R1), — запись.
R2 — начальный адрес массива информации в ОЗУ.
R3 — адрес размещения в ОЗУ рабочей области контроллера. (создается @#160010)

Подпрограмма читает или записывает указанное количество двухбайтных слов, начиная с заданных адреса в ОЗУ и сектора на диске. Количество читаемых или записываемых секторов зависит от длины файла (каждый сектор занимает 0.5 Кб или в БКшечном восьмеричном представлении 1000). По результатам чтения устанавливается состояние бита С слова состояния процессора. Если чтение произведено без ошибок, С=0. Если возникла ошибка чтения/записи, С=1 и в ячейке ОЗУ по адресу @#52 находится байт — номер ошибки.

Выглядит всё подозрительно просто.

---------- Post added at 12:24 ---------- Previous post was at 11:59 ----------


Один разъём 100-150 руб.

В крайнем случае можно попробовать пару IDE/FDD/LPT/SCSI-шлейфов засунуть в разъем. (После доработки ножовкой.) Лично я нашел разъем бесплатно (в комплекте с Орион-128).

svofski
08.03.2012, 17:52
Попробовать стоит.

vinxru
11.03.2012, 01:52
Жду, пока придут по почте детали.

CD-Inc
11.03.2012, 18:46
Если Мегу8 использовать в кач. ПЗУ объём получиться 8к-дрова, так?
ног хватает (20шт. надо в кач. ПЗУ), скорости хватит (мин. цикл ВМ1>1.5мкс), только памяти побольше и будет заменитель РЕ2. + ЕЕПРОМ есть.

vinxru
11.03.2012, 19:00
Под дрова хватит и 512 Байт. Помимо ПЗУ в ATMega надо будет еще зашить программу чтения/изменения FAT32, так что под ПЗУ места не много остается. А образы дискет будут хранится на SD-карте. Больше 1000 дискет на 1 Гб флешку.

Кстати в МК можно еще всякой периферии для БК засунуть не усложняя схему. Часы, порт PS/2 мыши, RS232, ЦАП, АЦП и т.п.

Titus
11.03.2012, 19:42
Кстати в МК можно еще всякой периферии для БК засунуть не усложняя схему. Часы, порт PS/2 мыши, RS232, ЦАП, АЦП и т.п.
А нельзя ли сделать все же девайс совместимым с обычным флопповодом, а не 'свой собственный'?

vinxru
11.03.2012, 20:01
SD-карту проще подключить (там внутри контроллер, который выполняет всю работу), она надежнее, доступнее, компактнее, практичнее.

Вторым этапом можно попробовать дисковод подключить. Это сложнее, так как придется работать с дисководом напрямую, без контроллера. Но вроде бы в Радио86РК, Apple II, Агат это сделали без проблем. Почитаю и сделаю так же. Возможно уже решения для микроконтроллера есть.

CodeMaster
11.03.2012, 20:04
А нельзя ли сделать все же девайс совместимым с обычным флопповодом

Зачем? Девайсы совместимые с обычным флопповодом уже есть в разных вариантах (хотя найти или сделать их непросто).

Titus
11.03.2012, 20:06
Зачем? Девайсы совместимые с обычным флопповодом уже есть в разных вариантах (хотя найти или сделать их непросто).
Они дороговатые)
Кроме того, я не говорил, что нужно делать контроллер дисковода. Достаточно иметь образы на флешке, а программа в БК будет воспринимать это, как настоящий дисковод.

vinxru
11.03.2012, 20:11
Они дороговатые)
Кроме того, я не говорил, что нужно делать контроллер дисковода. Достаточно иметь образы на флешке, а программа в БК будет воспринимать это, как настоящий дисковод.

Совместимость на уровне портов ввода-вывода... можно подумать.

---------- Post added at 19:11 ---------- Previous post was at 19:10 ----------


а программа в БК будет воспринимать это, как настоящий дисковод.

Программа в БК и так должна воспринимать этот контроллер, как обычный дисковод. Программа должна вызывать функции в ПЗУ, которые будут на 100% совместимы с дисководом.

Titus
11.03.2012, 20:32
Программа в БК и так должна воспринимать этот контроллер, как обычный дисковод. Программа должна вызывать функции в ПЗУ, которые будут на 100% совместимы с дисководом.
Это если программа обращается к дисководу через систему. А если нет? (Я не БК-шник, но подозреваю, что такие программы вполне могут быть).

vinxru
11.03.2012, 20:38
Я читал, что различные контроллеры между собой не совместимы. Существуют даже контроллеры на основе 1818ВГ93 (привет Спекки). Так что этот будет не первым.

vinxru
18.03.2012, 23:04
Жду, пока придут по почте детали.

Пришел разъем, но не тот. Так что проект заморожен пока.

dk_spb
18.03.2012, 23:13
А есть у кого-нибудь описание контроллера БК, точнее описание ВП1-128. А еще лучше схемы?
Или, хотя бы, схемы и описания для вп1-097?

---------- Post added at 23:13 ---------- Previous post was at 23:13 ----------

vinxru, Какой разъем-то нужен? МПИ?

vinxru
18.03.2012, 23:14
vinxru, Какой разъем-то нужен? МПИ?

Ага.

CodeMaster
04.09.2012, 17:04
Так что проект заморожен пока.

Ыыы?

vinxru
04.09.2012, 17:22
Так что проект заморожен пока.

Сегодня разморожен. :) Буду сразу делать две версии, для БК0010, БК0011, РК-86, Апогей и десятков клонов РК-86. Они будут несущественно отличаться прошивками. И само собой будут различные разъемы и протоколы обмена.

Atari1974
08.12.2012, 12:13
Буду ждать

perestoronin
08.12.2012, 15:30
Точнее контроллер IDE, FDD, SDCard на котором будут работать существующие ОС.

Меня изначально пугала идея подключать стандартное ПЗУ (27512) в БК0010. Помимо того, что потребуется ставить две ПЗУ, нужно еще ставить 8 не маленьких микросхем (хранение и дешифрация адреса).

Прав ли я?
И кто нибудь уже делал подобный эмулятор ПЗУ и FDD на единственном МК?

И цена подобного контроллера будет от 100 рублей.

P.S. У меня сейчас проблемы только с разъемом.

Даже сама оптимистичная цена вряд ли будет ниже 1тр по себестоимости (включая оплату интеллектуального труда).

Все ПЗУ, все ОЗУ, контроллер памяти и видеоконтроллер надо менять одним махом на дешевые доступные ПЛИС, флеш и DRAM память.

Контроллер флоппи, сам флоппи, надо сделать как бы новый, не эмулируя 1801ВП1-128, документации на нее все равно нет и описание ее работы пока все еще в проработке в рамках проекта СМК-512.

Потребуется научить прошивки БК и софт имеющийся на БК работать с таким контроллером на ATMega.

Может имеется возможность использовать идеи из ZX-Evo? и адаптировать готовые наработки для новой smd платы БК ? После успешного запуска такого проекта, затем еще и процессор заменить (потребуются правки всего ПО, начиная от прошивок ПЗУ и заканчивая почти всем софтом) на 1806ВМ2 (процессор этот дешевле 200рублей не видел, но очень уж у него корпус хороший для smd варианта платы и широко доступен в продаже сейчас и на сайте производителя значится что еще выпускается :)

Вместо ATMega8 наверное лучше использовать ATMega128 - как в ZX-Evo.

Patron
08.12.2012, 15:40
не эмулируя 1801ВП1-128Насколько я понял из этой темы (http://zx.pk.ru/showthread.php?t=20406) - с эмуляцией 1801ВП1-128 уже полностью всё ясно, поэтому есть смысл эмулировать (в том числе и ?) именно его.

perestoronin
08.12.2012, 19:00
Насколько я понял из этой темы (http://zx.pk.ru/showthread.php?t=20406) - с эмуляцией 1801ВП1-128 уже полностью всё ясно, поэтому есть смысл эмулировать (в том числе и ?) именно его.

Эмуляция 1801ВП1-128 тоже не помешает, как будет отлажен СМК-512 можно будет взять наработки из этого проекта для проекта с ATMega128 вместо ПЛИС. Но необходимость в эмуляции 1801ВП1-128 нужна лишь только для ПО завязанном на прямом обращении к 1801ВП1-128 и для подключения реальных флоппи к компьютеру. Так как предполагается возможность использования вместо флопи SD карт, то очень большой необходимости в реальных флоппи и соответственно в эмуляции 1801ВП1-128 не вижу, хотя лишней она не будет, особенно если надо будет показать флоппи в работе или запустить ПО завязанное на 1801ВП1-128. ZX-Evo к примеру обходится без реального флоппи, правда не пробывал ZX-Evo использовать без FDC1793 (аналог КР1818ВГ93).

Возможно в проекте 1801ВП1-128 на ATMega будут интересны разработки по проекту эмуляции самого флоппика SD картой https://sites.google.com/site/zxkit1/katalog-1/zxkit-009