RUЭВМ
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.
Сентябрь 2020
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
282930    

Календарь Календарь

Последние темы
» Тема для вопросов, консультаций и т. д...
автор Atari1974 Вчера в 16:12

» ZX Microdrive
автор barsik Вчера в 02:44

» Флейм только по теме "Радио-86РК".
автор barsik Пн Сен 28 2020, 09:24

» Трансформатор электронный Taschibra 230/12В 60Вт для галогенных ламп. Перестал работать.
автор Viktor2312 Ср Сен 23 2020, 15:05

» Купил с али БП 12в 100w для питания LED лент подсветки. Проблема
автор Viktor2312 Вс Сен 20 2020, 18:07

» Жалобы/пожелания по работе форума
автор Viktor2312 Вс Сен 20 2020, 11:54

» Стабилизированный преобразователь напряжения.
автор Viktor2312 Пн Сен 14 2020, 23:12

» Простые доработки ZX-48К: RAM-монитор в ПЗУ и экран на E000
автор barsik Сб Сен 12 2020, 23:47

» Применение КР580 ВИ53 для генерации музыки
автор Viktor2312 Сб Сен 12 2020, 20:09

» STM32. Статьи, заметки, очерки, разное...
автор Viktor2312 Чт Сен 03 2020, 12:09

» STM32G0. Документация (Datasheet, разное).
автор Viktor2312 Чт Сен 03 2020, 11:52

» Новинки. Книги. Часть 1.
автор Viktor2312 Ср Сен 02 2020, 14:21

» STM32F4. Статьи, заметки, очерки, разное...
автор Viktor2312 Вт Сен 01 2020, 14:44

» Ленинград-0,-1,-2,-3. Статьи, заметки, очерки, разное...
автор barsik Вс Авг 30 2020, 08:32

» Ленинград-0
автор barsik Вс Авг 30 2020, 08:01

» STM32F4. Изучение.
автор Viktor2312 Пт Авг 28 2020, 00:07

» Орион-128: Полезные доработки ПЭВМ
автор barsik Чт Авг 27 2020, 11:21

» STM32H7. Статьи, заметки, очерки, разное...
автор Viktor2312 Вт Авг 25 2020, 10:43

» Радио-86РК: По страницам журнала "Радио" и не только...
автор barsik Вт Авг 25 2020, 01:28

» STM32L0. Документация (Datasheet, разное).
автор Viktor2312 Вс Авг 23 2020, 10:10

» STM32L0. Отладочные платы.
автор Viktor2312 Сб Авг 22 2020, 20:22

» STM32L0. Программное обеспечение, разное...
автор Viktor2312 Сб Авг 22 2020, 17:24

» STM32L0. Статьи, заметки, очерки, разное...
автор Viktor2312 Чт Авг 20 2020, 19:37

» STM32H7. Документация (Datasheet, разное).
автор Admin Чт Авг 20 2020, 13:33

» STM32F7. Документация (Datasheet, разное).
автор Admin Чт Авг 20 2020, 13:32

Самые активные пользователи за месяц
Viktor2312
SD-контроллер от vinxru Vote_l10SD-контроллер от vinxru Voting10SD-контроллер от vinxru Vote_r10 
barsik
SD-контроллер от vinxru Vote_l10SD-контроллер от vinxru Voting10SD-контроллер от vinxru Vote_r10 
Atari1974
SD-контроллер от vinxru Vote_l10SD-контроллер от vinxru Voting10SD-контроллер от vinxru Vote_r10 

Поиск
 
 

Результаты :
 


Rechercher Расширенный поиск


SD-контроллер от vinxru

Перейти вниз

SD-контроллер от vinxru Empty SD-контроллер от vinxru

Сообщение  Viktor2312 в Вс Янв 22 2017, 15:27

1
Данная тема создана с перспективой на будущее и вообще потому, что такое существует в природе. Я выложу здесь ту информацию, которая мне доступна и как вроде связанна с данной темой. В надежде, что пользователи поправят меня, если что, и дополнят тему в будущей перспективе...
Viktor2312
Viktor2312
Гуру+

Сообщения : 12512
Дата регистрации : 2012-08-10
Возраст : 41
Откуда : Пятигорск

Вернуться к началу Перейти вниз

SD-контроллер от vinxru Empty Re: SD-контроллер от vinxru

Сообщение  Viktor2312 в Вс Янв 22 2017, 15:27

2
резерв.
Viktor2312
Viktor2312
Гуру+

Сообщения : 12512
Дата регистрации : 2012-08-10
Возраст : 41
Откуда : Пятигорск

Вернуться к началу Перейти вниз

SD-контроллер от vinxru Empty Re: SD-контроллер от vinxru

Сообщение  alemorf в Пн Дек 17 2018, 15:21

3
.


Последний раз редактировалось: alemorf (Пн Янв 07 2019, 04:46), всего редактировалось 1 раз(а)

alemorf
Мастер

Сообщения : 244
Дата регистрации : 2018-12-17

http://alemorf.ru/

Вернуться к началу Перейти вниз

SD-контроллер от vinxru Empty Re: SD-контроллер от vinxru

Сообщение  san010101 в Пн Дек 17 2018, 17:30

4
Было бы очень здорово.

san010101
новичёк

Сообщения : 37
Дата регистрации : 2018-07-24
Возраст : 43
Откуда : Красноярск

Вернуться к началу Перейти вниз

SD-контроллер от vinxru Empty .

Сообщение  barsik в Ср Дек 19 2018, 12:53

5
Я не собирал флэш-контроллер от vinxru и имею смутное представление о нём. Могу ошибаться, но из прочтения форумов на эту тему у меня сложилось мнение, что контроллер является закрытым для сторонних программ устройством. Разработка состоит из двух частей - из собственно контроллера, обеспечивающего доступ к micro-SD с файловой системой FAT16 и программы-оболочки типа Нортон для управления файлами в кодах КР580.

Таким образом это устройство заменяет только магнитофон (и даже не полностью, т.к не является эмулятором магнитофона). Конечно, запускать игры удобно и это устройство вполне устраивает тех, кому надо только посмотреть старое ПО и затем поставить ретро-компьютер на полку. В условиях когда запись на micro-SD невозможна (хотя другие подобные изделия это могут) такое решение наилучшее.

Но даже, если бы запись была возможна, для тех, кто более серьёзно пользуется компьютером, у данной концепции есть недостатки. Для магнитофонных программ более правильным был бы эмулятор магнитофона, так, как это сделано в эмуляторах.

Если речь идёт о низкоуровневой эмуляции магнитофона, т.е обслуживании контроллером самого МГ-входа и выхода (т.е контроле и управлении сигналов прямо на ножке ППА), то я считаю, что это не очень полезная и намного более сложная в реализации затея. Во-первых, есть разные форматы, например, MSX-двухчастотка, РК-двухфазка, а в ZX-Spectrum для защиты от пиратства применяются и более хитрые форматы.

Если цифровой МГ не будет хранить данные в WAV-формате, а декодировать принятые данные в байты и хранить их уже в виде кодов, то можно сделать цифровой магнитофон пригодный только для РК86 и близких по МГ-формату компьютеров. Владельцам ZX такое устройство не подойдёт. А вот хранение записей в WAV формате полностью заменит обычный магнитофон, хотя цифровой магнитофон проще купить в магазине, а цифровой диктофон есть в любом телефоне. Однако WAV-формат неудобен, т.к при этом скорость обмена та же, как с реальным магнитофоном (составляет всего 200 байт в секунду), тогда как эмулятор магнитофона работает мгновенно.

Более простой программный эмулятор магнитофона на базе внешнего привода устроен так. Пользователь выбирает файл или маркирует группу файлов в файловой панели, а затем по выходе из оболочки на вектор ПЗУ-шной подпрограммы F806 вешается побайтовая процедура чтения из открытого и считанного в буфер файла, причём к файлу вначале и, если надо и в конце, добавляются байты, которые входят в МГ-формат данного компьютера (в случае РК и ОРИОНА это пилот-тон в 256 нулевых байтов, затем синхробайт Е6, нач.адрес в формате старший, младший, затем сам файл, после блока файла следуют два нуля и КС блока). Впрочем, проще хранить данные прямо в МГ-формате, используя, например, простейший алгоритм для сжатия повторяющихся байтов (если пилотон сжать в 3 байта, то служ.байтов от МГ-формата всего десяток).

А на вектор F80F тоже вешает обработчик вызовов. В случае, если ещё нет открытого на запись файла, то при первом вызове F80F начинается процедура ожидания пилот-тона с поиском синхробайта. После обнаружения факта выдачи на F80F синхробайта, считываются 4 байта адресов (начальный и конечный) и, для запроса имени записываемого файла, открывается окно. После ввода имени файла управление возвращается программе вызвавшей F80F, и все последующие вызовы F80F до тех пор пока не будет получено указанное в заголовке число байтов, передают байты в буфер. После передачи указанного числа байтов, файл автоматически закрывается и пишется на диск, а вывод завершающих 5 байтов в блочке КС игнорируется. Если на вывод выведено меньшее число байтов, чем заказано, то в эмуляторах критерием конца записи файла является пауза в вызовах F80F длительностью более 2-3 секунд (меньшее время помешает записи/чтению с ленты многоблочных программ).

Но ввод и вывод с магнитофона по сути нужен только двум программам - бейсику и текстовому редактору. Если не учитывать многоблочные программы, то для обычных файлов способ попадания кода в ОЗУ вообще не важен и применённая концепция намного удобнее, чем возня с командной строкой в которой набирается директива для МГ-ввода. Для текстового редактора можно обойтись загрузкой блока в буфер, т.к любой редактор РК имеет запрос NEW?

Но и для бейсика и для текстового редактора уже с 1993 существует дисковое решение - это дисководные верcии текстовых редакторов и бейсика-плюс для РК-ДОС. Получается, что имея дисковод с РК-ДОС магнитофон вообще низачем не нужен.

Потому я считаю, что вместо мало-кому интересной разработки эмулятора магнитофона, стоило бы сделать на порядок более простую работу. А именно, обеспечить программистский интерфейс для доступа к micro-SD как к обычному приводу с посекторным обменом. Для этого надо ввести всего несколько функций - чтение сектора размером в 512 байт и запись такого сектора на micro-SD.

Адресацию по диску можно сделать традиционную - через указание номера трека и номера сектора. Для этого даже не нужны как в DOS отдельные функции типа "установка N трека" и "установка N сектора". Можно просто указывать трек и сектор в регистрах при вызове процедур чтения/записи сектора. А можно использовать сплошную адресацию по типу LBA в винчестере, когда просто задаётся порядковый номер сектора в парном регистре (т.е адресация максимум до 65535 секторов по 512 байт и максимум в 32 мб, чего для дисков 8-ми разрядок более, чем достаточно). Хотя все DOS работают с секторами и треками, но пересчёт в LBA это всего десяток команд процессора, что не существенно усложнит BIOS в DOS 8-ми разрядки.

Высокоуровневый формат micro-SD не важен. Он может оставаться FAT16 или можно использовать низкоуровневый доступ, т.е micro-SD без файлового формата, когда напрямую читаются/пишутся сектора с заданным номером. Удобнее для считывания и записи на PC и в телефоне сохранить формат FAT16.

Если остаётся формат FAT16, то для организации дисков для конкретной дискеты создаются файлы образы дисков (которые могут иметь, например, расширение DSK). С помощью функции "выбор диска" выбираем какой-либо файл. После чего все обращения на чтение/запись выполняются с этим файлом. Например, если вызвана операция чтения сектора номер 100, то из файла в буфер читается 512 байт с отступом в 512*100 байтов от начала файла.

Например, для дисков оригинальной РК-ДОС создаются файлы образы размером в 400 кб (для чуть изменённой РК-ДОС размер диска может быть до 8*0.5*255= 1020 кб. Это максимальный размер, который возможен в РК-ДОС (т.к в одном байте VTOC таблицы занятости описывающем один трек можно описать лишь 8 секторов, а число треков ограничено в 255, хотя это макс.число треков при желании можно изменить).

Для CP/M диски могут быть намного большего размера, но для удобства в силу отсутствия подкаталогов неудобны диски с размером более 2 мб.

Для меня неинтересен контроллер от vinxru, даже с записью. Мне нужен именно контроллер внешнего привода. Совсем неважно как устроен этот привод, реальный он или на базе излишнего ОЗУ компьютера. Нужны лишь процедуры записи и чтения сектора с указанным номером. Модификация имеющихся DOS для 8-ми разрядки простейшая, в них убираются имеющиеся процедуры работы с физическим носителем и вставляется десяток команд вызывающих процедуру контроллера. Таким образом контроллер работает как аппаратно-программный драйвер DOS.

На базе флэш-памяти можно сделать также устройства с побайтовым обменом. Тогда имеющиеся DOS даже не надо модифицировать. Например, и для РК и для ОРИОНА есть версии RK-DOS, CP/M и других DOS в которых в качестве привода А использован эл.диск из излишнего ОЗУ. Интерфейс происходит всего двумя подпрограммами - чтение и запись байта из излишнего ОЗУ - F836 и F839. Программе без разницы откуда и как берётся и куда записывается байт. Потому эти DOS для работы на флэш даже не требуется модифицировать (чуть-чуть модифицируется лишь ПЗУ, чтобы п/п-ммы F836/39 работали иначе).

Т.к реально 8-ми разрядки используют дополнительное банковое ОЗУ только для целей эл.диска, то контроллер с побайтовым обменом эквивалентен, т.е заменяет, расширение ОЗУ на большой объём.

Например, если к ОРИОНУ с всего двумя банками РУ5-тых подключить флэш-карту и все обращения по F836/39 выше, чем в банку N1 переадресовывать во внешний носитель (а флэш-память это как раз быстрый носитель), то программа будет считать, что это ОРИОН, который имеет 256 банок памяти по 64 кб. В ORDOS достаточно забить одну команду, а вместо родного ПЗУ поставить соответствующе модифицированное и получится ORDOS с 255 квазидисков (реально лишь 26, для большего не хватит букв латинского алфавита для названия дисков).

Естественно побайтовый обмен с флэш-памятью не работает побайтово, а буферизуется. В реальности байты читаются/пишутся подряд. Потому при первом обращении в буфер считывается целый сектор и чтение последующих байтов происходит без повторного обращения к флэш, а до достижения адресацией конца сектора байты читаются из буфера

Вот такое устройство контроллера флэш-памяти для 8-ми разрядок решает все проблемы 8-ми разрядок, заменяя дисковод и винчестер и позволяет использовать и сохраняет всё имеющееся ПО без переделок, а если есть побайтовый обмен, то и заменяет расширение ОЗУ. А текущий вариант контроллера от vinxru не решает ни магнитофонных ни дисководных проблем, а может использоваться лишь для запуска игр.
barsik
barsik
Мастер++

Сообщения : 701
Дата регистрации : 2016-11-10
Откуда : С-Петербург

Вернуться к началу Перейти вниз

SD-контроллер от vinxru Empty Re: SD-контроллер от vinxru

Сообщение  alemorf в Ср Дек 19 2018, 17:50

6
Ну дак оно так и работает. В память, по любому адресу, загружается маленький драйвер (SDBIOS). У драйвера есть множество команд, вот, например:

Открыть файл (A=2, D=0, HL=имя файла / A=код ошибки)
Установить позицию чтения записи файла (A=3, B=режим, DE:HL=позиция / A=код ошибки, DE:HL=позиция) (С начала B=0, с текущего положения B=1, с конца B=2)
Прочитать из файла (A=4, HL=размер, DE=адрес / A=код ошибки, HL=сколько загрузили)
Записать в файл (A=5, HL=размер, DE=адрес / A=код ошибки)

Что бы вызвать команду надо заполнить соответствующие регистры и сделать CALL этого драйвера. Драйвер - простейшая штука, просто выдает в параллельный 8-битные код эти команды. Можно и порт писать.

---

Протокол открытый, описанный:
alemorf. ru/comps/specialist_lin/sd.html

---

Например:

; Выбираем образ диска
mvi a, 2
lxi hl, disk_name
call 0C800h

; Устанавливаем сектор
mvi a, 3
lxi hl, 120 // Сектор + дорожка + сторона
lxi de, 0
call 0C800h

; Закписываем сектор
mvi a, 5
lxi hl, 256 // Размер сектора
lxi de, buffer
call 0C800h

disk_name: .db "disk1.dsk";

---

Я кстати CPM к этому драйверу подключал.

alemorf
Мастер

Сообщения : 244
Дата регистрации : 2018-12-17

http://alemorf.ru/

Вернуться к началу Перейти вниз

SD-контроллер от vinxru Empty Re: SD-контроллер от vinxru

Сообщение  Viktor2312 в Ср Дек 19 2018, 19:51

7
alemorf пишет:В течении следующего года думаю разработать комбинированный контроллер на STM32 со встроенным...

Если в первый пост нужно будет добавить какую-то информацию, чтобы не искать её по всей теме, пишите, добавлю.
Viktor2312
Viktor2312
Гуру+

Сообщения : 12512
Дата регистрации : 2012-08-10
Возраст : 41
Откуда : Пятигорск

Вернуться к началу Перейти вниз

SD-контроллер от vinxru Empty Re: SD-контроллер от vinxru

Сообщение  Спонсируемый контент

8

Спонсируемый контент


Вернуться к началу Перейти вниз

Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения