Просмотр полной версии : Контроллер дисковода на одной микросхеме ATMega8
Точнее контроллер 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. У меня сейчас проблемы только с разъемом.
Очень оптимистично про 100 руб..
Мне под заказ разработчик реплицирует SMK512 на ПЛИС, выйдет себестоимости минимум 700 руб (без учета оплаты интеллектуального труда).
ПЛИС дороже стоит. И вы делаете реплику сложного устройства.
Я же планирую сделать работу с SD-картой в микроконтроллере. БК0010 будет записывать в специальный порт команду (1-чтение сектора, 2-запись сектора, 3-форматирование дорожки...) и читать/записывать из этого порта 512 байт данных.
Хотя можно сделать полноценную эмуляцию контроллера FDD, но я думаю, что это не нужно.
CodeMaster
07.03.2012, 12:07
1) Разъем
И цена подобного контроллера будет от 100 рублей.
P.S. У меня сейчас проблемы только с разъемом.
Один разъём 100-150 руб.
БК0010 будет записывать в специальный порт команду
БК0010 то ничего записывать не будет, это софт делает. Вопрос в том, что это будет? Это типа ROM диска с загрузчиком с него как ты к Апогею делал или как стандартный софт будет с этим работать?
БК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).
Жду, пока придут по почте детали.
Если Мегу8 использовать в кач. ПЗУ объём получиться 8к-дрова, так?
ног хватает (20шт. надо в кач. ПЗУ), скорости хватит (мин. цикл ВМ1>1.5мкс), только памяти побольше и будет заменитель РЕ2. + ЕЕПРОМ есть.
Под дрова хватит и 512 Байт. Помимо ПЗУ в ATMega надо будет еще зашить программу чтения/изменения FAT32, так что под ПЗУ места не много остается. А образы дискет будут хранится на SD-карте. Больше 1000 дискет на 1 Гб флешку.
Кстати в МК можно еще всякой периферии для БК засунуть не усложняя схему. Часы, порт PS/2 мыши, RS232, ЦАП, АЦП и т.п.
Кстати в МК можно еще всякой периферии для БК засунуть не усложняя схему. Часы, порт PS/2 мыши, RS232, ЦАП, АЦП и т.п.
А нельзя ли сделать все же девайс совместимым с обычным флопповодом, а не 'свой собственный'?
SD-карту проще подключить (там внутри контроллер, который выполняет всю работу), она надежнее, доступнее, компактнее, практичнее.
Вторым этапом можно попробовать дисковод подключить. Это сложнее, так как придется работать с дисководом напрямую, без контроллера. Но вроде бы в Радио86РК, Apple II, Агат это сделали без проблем. Почитаю и сделаю так же. Возможно уже решения для микроконтроллера есть.
CodeMaster
11.03.2012, 20:04
А нельзя ли сделать все же девайс совместимым с обычным флопповодом
Зачем? Девайсы совместимые с обычным флопповодом уже есть в разных вариантах (хотя найти или сделать их непросто).
Зачем? Девайсы совместимые с обычным флопповодом уже есть в разных вариантах (хотя найти или сделать их непросто).
Они дороговатые)
Кроме того, я не говорил, что нужно делать контроллер дисковода. Достаточно иметь образы на флешке, а программа в БК будет воспринимать это, как настоящий дисковод.
Они дороговатые)
Кроме того, я не говорил, что нужно делать контроллер дисковода. Достаточно иметь образы на флешке, а программа в БК будет воспринимать это, как настоящий дисковод.
Совместимость на уровне портов ввода-вывода... можно подумать.
---------- Post added at 19:11 ---------- Previous post was at 19:10 ----------
а программа в БК будет воспринимать это, как настоящий дисковод.
Программа в БК и так должна воспринимать этот контроллер, как обычный дисковод. Программа должна вызывать функции в ПЗУ, которые будут на 100% совместимы с дисководом.
Программа в БК и так должна воспринимать этот контроллер, как обычный дисковод. Программа должна вызывать функции в ПЗУ, которые будут на 100% совместимы с дисководом.
Это если программа обращается к дисководу через систему. А если нет? (Я не БК-шник, но подозреваю, что такие программы вполне могут быть).
Я читал, что различные контроллеры между собой не совместимы. Существуют даже контроллеры на основе 1818ВГ93 (привет Спекки). Так что этот будет не первым.
Жду, пока придут по почте детали.
Пришел разъем, но не тот. Так что проект заморожен пока.
А есть у кого-нибудь описание контроллера БК, точнее описание ВП1-128. А еще лучше схемы?
Или, хотя бы, схемы и описания для вп1-097?
---------- Post added at 23:13 ---------- Previous post was at 23:13 ----------
vinxru, Какой разъем-то нужен? МПИ?
vinxru, Какой разъем-то нужен? МПИ?
Ага.
CodeMaster
04.09.2012, 17:04
Так что проект заморожен пока.
Ыыы?
Так что проект заморожен пока.
Сегодня разморожен. :) Буду сразу делать две версии, для БК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.
не эмулируя 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
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot