Эмулятор дисковода

Классические амиги и клоны. 1000, 2000, 3000, 4000, 500, 600, 1200, cdtv, cd32

Модераторы: striimii, Vinnny

Эмулятор дисковода

Сообщение da-nie 20 окт 2011, 20:16

Вот какой у меня получился эмулятор дисковода для амиги из подручных материалов. К сожалению, я пока так и не добился стабильной загрузки программ - довольно часто на некоторых программах вылетает "Ошибка записи/чтения", но если нажимать "retry", то в конце-концов, всё загружается. Судя по моему анализу происходящего, это случается с программами, которые ухитряются читать дорожки с большим интервалом между ними. Типа, сперва 1, а потом 40, а потом снова 1 и снова 40. Наверное, не успевает чтение с SD-карты отработать запросы амиги. Всё-таки, крайне желательно найти большое ОЗУ и считать туда образ целиком. Тогда скорость чтения с SD-карты не будет проблемой. Мой эмулятор хранит на SD-картах образы MFM, которые заливаются через терминальную программу, сделанную для работы с эмулятором.
Эмулятор считает себя единственным дисководом в системе и подключается при всех отключенных дисководах. Просто я отключил у себя дисковод напрочь, поэтому и дешифровку устройства не делал. Да и ножек у МК не хватало.
Эмулятор работает только на чтение. Надобности в записи не было.
Итак:

AmigaFloppyEmulator.rar
Прошивка и терминальная программа (с исходниками)
(185.22 KiB) Скачиваний: 496


afe.rar
Печатная плата в Layout 4.
(20.6 KiB) Скачиваний: 483


AmigaFloppyEmulator.GIF
Схема электрическая принципиальная
AmigaFloppyEmulator.GIF (135.1 KiB) Просмотров: 13739
Последний раз редактировалось da-nie 29 окт 2011, 21:47, всего редактировалось 7 раз(а).
Аватара пользователя
da-nie
Престарелый Амигодум
Престарелый Амигодум
 
Сообщения: 240
Зарегистрирован: 23 сен 2011, 17:25
Откуда: Ленинградская область

Re: Эмулятор дисковода

Сообщение da-nie 20 окт 2011, 20:17

Ну а выглядит это так:

photo.jpg
Внешний вид
photo.jpg (47.85 KiB) Просмотров: 13842
Мой репозиторий: https://github.com/da-nie
Мои статьи: https://habr.com/ru/users/da-nie/posts/
Моё видео: https://www.youtube.com/channel/UCUroi3D5Kf1WxDzg3ON852g/videos
Аватара пользователя
da-nie
Престарелый Амигодум
Престарелый Амигодум
 
Сообщения: 240
Зарегистрирован: 23 сен 2011, 17:25
Откуда: Ленинградская область

Re: Эмулятор дисковода

Сообщение yorgee 20 окт 2011, 22:40

молодца. себестоимость сего. как и чем прошивал. поподробнее распиши и разжуй.
Было A1200 Appolo 68060/75MHz 64mb; A1200 Blizzard PPC/200/68060/50 128mb; Pegasos II G4/1+разгон до 1.25; а600 2mb chip/8mb fast.
Осталось A600 2 mb chip/ 8mb fast. + PC и WinUAE.
Аватара пользователя
yorgee
Надоедливый Амигодух
Надоедливый Амигодух
 
Сообщения: 496
Зарегистрирован: 16 янв 2006, 17:06
Откуда: ЗАТО г.Радужный, Владимирская область.

Re: Эмулятор дисковода

Сообщение da-nie 20 окт 2011, 22:49

молодца. себестоимость сего. как и чем прошивал. поподробнее распиши и разжуй.


Дисплей - 220 р.
Контроллер - 200 р.
Регистры и память - даром были с работы. В Микронике (http://www.mikronika.ru) К588ИР1 по цене 8.80 за штуку. Вот память найти будет трудно, но можно любой практически заменить.
Конденсаторы - со старых блоков питания.
Разъём SD-карты - купил в составе картридера и выпаял - 200 р. картридер.
Max232N - рублей 20. Давно покупал.
Кнопки - выпаял откуда-то.
Шнуры - от мышки и самодельный.
Разъёмы - со старого дисковода.
Резисторы - с работы.
Кварц - рублей 35-40.
Конденсаторы - с работы.
Диоды - с блоков питания.
Подстроечный резистор на дисплей - рублей 100 где-то.
Прошивка - бесплатно, за исключением потраченного времени.

Прошивал как обычно прошивают AVR - можно 5 проводков в LPT порт или ещё что-нибудь того же уровня, а можно и через программатор. У меня самодельный USBasp.

Всё вроде бы.
Мой репозиторий: https://github.com/da-nie
Мои статьи: https://habr.com/ru/users/da-nie/posts/
Моё видео: https://www.youtube.com/channel/UCUroi3D5Kf1WxDzg3ON852g/videos
Аватара пользователя
da-nie
Престарелый Амигодум
Престарелый Амигодум
 
Сообщения: 240
Зарегистрирован: 23 сен 2011, 17:25
Откуда: Ленинградская область

Re: Эмулятор дисковода

Сообщение da-nie 21 окт 2011, 21:39

Ну а вот видео работы эмулятора:

http://ifolder.ru/26483565

Думал, куда бы это залить и решил залить на ifolder (На Youtube не хотелось регистрироваться.). Там скачать можно бесплатно.
Мой репозиторий: https://github.com/da-nie
Мои статьи: https://habr.com/ru/users/da-nie/posts/
Моё видео: https://www.youtube.com/channel/UCUroi3D5Kf1WxDzg3ON852g/videos
Аватара пользователя
da-nie
Престарелый Амигодум
Престарелый Амигодум
 
Сообщения: 240
Зарегистрирован: 23 сен 2011, 17:25
Откуда: Ленинградская область

Re: Эмулятор дисковода

Сообщение easy_john 21 окт 2011, 22:04

качать видео, что бы посмотреть? моветон! :)
PegasosII G4 1.0/1Gb/80Gb/Ati 9200/MorphOS unreg/Debian
a4000/PPC 233mhz/68060 50mhz/128mb/cv ppc/toccata/x-surf/kickflash/indivision/AOS3.9-4.0
a1200/PPC 200mhz/68040 25mhz/256mb/bv ppc/delfina/wifi/indivision sd+ff/AOS 3.9-4.0
a600/68000 7mhz/8mb fast/wifi/AOS 3.0
Аватара пользователя
easy_john
Менеджер
Менеджер
 
Сообщения: 4296
Зарегистрирован: 03 мар 2006, 15:24
Откуда: SPb

Re: Эмулятор дисковода

Сообщение da-nie 21 окт 2011, 22:09

Ну, это кому как. :lol: Мне так всегда удобнее было скачать, чем мучиться с выковыриванием ролика с youtube (хотя и это не проблема :) ).
Мой репозиторий: https://github.com/da-nie
Мои статьи: https://habr.com/ru/users/da-nie/posts/
Моё видео: https://www.youtube.com/channel/UCUroi3D5Kf1WxDzg3ON852g/videos
Аватара пользователя
da-nie
Престарелый Амигодум
Престарелый Амигодум
 
Сообщения: 240
Зарегистрирован: 23 сен 2011, 17:25
Откуда: Ленинградская область

Re: Эмулятор дисковода

Сообщение da-nie 29 окт 2011, 21:47

Нашёл ошибочку в прошивке - "головку" нельзя было на 79-ю дорожку передвинуть.
Ну и заодно включил многоблочное чтение с SD-карты. Прошивка обновлена.
Мой репозиторий: https://github.com/da-nie
Мои статьи: https://habr.com/ru/users/da-nie/posts/
Моё видео: https://www.youtube.com/channel/UCUroi3D5Kf1WxDzg3ON852g/videos
Аватара пользователя
da-nie
Престарелый Амигодум
Престарелый Амигодум
 
Сообщения: 240
Зарегистрирован: 23 сен 2011, 17:25
Откуда: Ленинградская область

Re: Эмулятор дисковода

Сообщение tnt23 29 окт 2011, 23:35

Можешь замерить, сколько у тебя занимает загрузка одной дорожки в память?
A500, A600, A1200, A3000
Аватара пользователя
tnt23
Беспардонный Амигофлуд
Беспардонный Амигофлуд
 
Сообщения: 1293
Зарегистрирован: 17 май 2005, 16:59
Откуда: Санкт-Петербург

Re: Эмулятор дисковода

Сообщение da-nie 30 окт 2011, 00:12

Замерять, честно говоря, лень - надо на работу тащить, там осциллограф есть. Но по моим оценкам:
12800 байт дорожка, читаю я за шаг две (верх и низ), SPI на 1/2 частоты = 12800*8*2*2 тактов = 409600 тактов. Добавим промежутки между секторами и запрос команды чтения, пусть будет 64 такта на сектор (которых 50 для двух сторон) = 64*50=3200 тактов. Итого, 412800 тактов. Это чтение с SD-карты.
На запись в память уйдёт: 12800 байт, две дорожки, 14 тактов на запись в память байта (это заниженная оценка, на самом деле, больше) = 12800*2*14=358400 тактов.
Итого, всего тактов уходит 358400+412800=771200. Частота 16 МГц, итого, по времени переход занимает как минимум 48 миллисекунд. Более реально (если вспомнить, что функция записи в память у меня не inline), 60-100 миллисекунд.
Мой репозиторий: https://github.com/da-nie
Мои статьи: https://habr.com/ru/users/da-nie/posts/
Моё видео: https://www.youtube.com/channel/UCUroi3D5Kf1WxDzg3ON852g/videos
Аватара пользователя
da-nie
Престарелый Амигодум
Престарелый Амигодум
 
Сообщения: 240
Зарегистрирован: 23 сен 2011, 17:25
Откуда: Ленинградская область

Re: Эмулятор дисковода

Сообщение tnt23 30 окт 2011, 00:23

Спасибо. Вроде по стандарту время успокоения головок не более 20мс после последнего шага. Я так понимаю, ты не используешь FAT, то есть накладных расходов на FAT нету.
A500, A600, A1200, A3000
Аватара пользователя
tnt23
Беспардонный Амигофлуд
Беспардонный Амигофлуд
 
Сообщения: 1293
Зарегистрирован: 17 май 2005, 16:59
Откуда: Санкт-Петербург

Re: Эмулятор дисковода

Сообщение da-nie 30 окт 2011, 00:25

Да, мне нет надобности использовать FAT - мне некуда его распаковывать. Возможно, когда на большое динамическое ОЗУ перейду (если перейду и будет интересно дальше играть с амигой :) ), тогда сделаю и с использованием FAT.
Мой репозиторий: https://github.com/da-nie
Мои статьи: https://habr.com/ru/users/da-nie/posts/
Моё видео: https://www.youtube.com/channel/UCUroi3D5Kf1WxDzg3ON852g/videos
Аватара пользователя
da-nie
Престарелый Амигодум
Престарелый Амигодум
 
Сообщения: 240
Зарегистрирован: 23 сен 2011, 17:25
Откуда: Ленинградская область

Re: Эмулятор дисковода

Сообщение tnt23 30 окт 2011, 00:38

Если вдруг захочется FAT, посмотри на FatFS от Elm Chan. Ей надо 512 байт памяти, а там есть и еще менее жручие инкарнации (но более тормозные уже), типа не более 100 байт.

http://elm-chan.org/fsw/ff/00index_e.html
A500, A600, A1200, A3000
Аватара пользователя
tnt23
Беспардонный Амигофлуд
Беспардонный Амигофлуд
 
Сообщения: 1293
Зарегистрирован: 17 май 2005, 16:59
Откуда: Санкт-Петербург

Re: Эмулятор дисковода

Сообщение da-nie 30 окт 2011, 11:11

Спасибо! :)
Мой репозиторий: https://github.com/da-nie
Мои статьи: https://habr.com/ru/users/da-nie/posts/
Моё видео: https://www.youtube.com/channel/UCUroi3D5Kf1WxDzg3ON852g/videos
Аватара пользователя
da-nie
Престарелый Амигодум
Престарелый Амигодум
 
Сообщения: 240
Зарегистрирован: 23 сен 2011, 17:25
Откуда: Ленинградская область

Re: Эмулятор дисковода

Сообщение da-nie 17 июн 2012, 14:31

А вот интересно, судя по вот этой схеме, у француза в этом варианте эмулятора нет никакого промежуточного ОЗУ. Используется PIC18F4525 на 10 МГц, ОЗУ у него почти 4 килобайта. Подключён он непосредственно к SD-карте и дисководу. И всё это ухитряется прочитать по SPI данные с SD-карты и выдать их на дисковод. Как он это делает? :roll: У него в запасе 20 тактов на один бит дисковода. Карта памяти больше 512 байт за раз не выдаёт (если бы могла бы больше, проблемы бы не было - настроил её выдавать непрерывно 16384 байта, и каждый бит с SPI отправляй на дисковод; как наберётся 12800 байт, запускаем процесс для данной дорожки по новой). После 512 байт непременно следует контрольная сумма (2 байта = 32 такта процессора) и пауза (минимум 16 тактов процессора). То есть, будет сбой данных. Как же у француза такого не происходит? Может быть, он так данные размещает на виртуальной дискете, что ему с карты нужно только, скажем, 500 байт (допустим, остальные в секторе нули). Тогда оставшиеся 12 байт он не считывает с карты (там всё равно нули), а вместо этого запускает заново инициализацию SD-карты? Как-то такой принцип приходит в голову. Но как это реализовать на уровне секторов - без понятия.

HXCFLOPPYEMULATOR.gif
Схема
HXCFLOPPYEMULATOR.gif (54.26 KiB) Просмотров: 13713
Мой репозиторий: https://github.com/da-nie
Мои статьи: https://habr.com/ru/users/da-nie/posts/
Моё видео: https://www.youtube.com/channel/UCUroi3D5Kf1WxDzg3ON852g/videos
Аватара пользователя
da-nie
Престарелый Амигодум
Престарелый Амигодум
 
Сообщения: 240
Зарегистрирован: 23 сен 2011, 17:25
Откуда: Ленинградская область

След.

Вернуться в Железо Classic Amiga

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 39

cron