Май 2019
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728293031  

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

Последние темы
» Эмулятор ИРИШИ для тех, кто не имеет её реальной
автор barsik Пт Май 24 2019, 08:24

» Эмулятор радио 86рк
автор parsec Ср Май 22 2019, 18:44

» Новинки. Книги. Часть 1.
автор Viktor2312 Вт Май 21 2019, 16:21

» Программирование для ИРИШИ
автор barsik Пн Май 20 2019, 21:14

» Новинки. Книги. Часть 3.
автор Viktor2312 Пн Май 20 2019, 16:38

» Модуль контроллера графического дисплея (МКГД).
автор barsik Вс Май 19 2019, 13:40

» ATM Turbo 2+ v7.10
автор alemorf Сб Май 18 2019, 20:03

» Схемы и документация на отечественные ЭВМ и ПЭВМ и комплектующие
автор Viktor2312 Сб Май 18 2019, 18:10

» Куплю микросхемы КР1818ВГ93 и КМ1810ВТ3.
автор Savoj Чт Май 16 2019, 07:51

» Радио-86РК: Расширение ОЗУ
автор barsik Чт Май 16 2019, 01:26

» Клавиатура ИРИШИ
автор barsik Ср Май 15 2019, 16:57

» ИРИША и магнитофон
автор barsik Пн Май 13 2019, 04:23

» Новости криптовалют: статьи, заметки, разное...
автор Viktor2312 Сб Май 11 2019, 03:01

» Жалобы/пожелания по работе форума
автор Viktor2312 Сб Май 11 2019, 00:50

» Альтернативные КНГМД для ИРИШИ
автор barsik Пт Май 10 2019, 01:12

» Видеокарты (GPU). Статьи, заметки, очерки, разное...
автор Viktor2312 Чт Май 09 2019, 19:55

» Алгоритм SHA-256 и др., хеш (hash), хеширование, майнинг.
автор Viktor2312 Чт Май 09 2019, 01:30

» Обсуждение желаемых новодельных плат расширения и мелких усовершенствований базовых плат
автор barsik Ср Май 08 2019, 16:06

» Разное
автор Viktor2312 Вт Май 07 2019, 19:19

» Для новичков (криптовалюта).
автор Viktor2312 Вт Май 07 2019, 17:32

» Ассемблер для современных CPU Intel.
автор Viktor2312 Вт Май 07 2019, 17:12

» МКНГМД Вариант-3. Версия на К1818ВГ93
автор barsik Вт Май 07 2019, 15:15

» Обзор крипто проектов.
автор Viktor2312 Вт Май 07 2019, 12:57

» 7 Мая. День Радио!
автор Viktor2312 Вт Май 07 2019, 12:00

» "Радио-86РК". Статьи, заметки, очерки, разное...
автор barsik Сб Май 04 2019, 20:20

Самые активные пользователи за месяц
Viktor2312
SD-контроллер от vinxru Vote_lcapSD-контроллер от vinxru Voting_barSD-контроллер от vinxru Vote_rcap 
barsik
SD-контроллер от vinxru Vote_lcapSD-контроллер от vinxru Voting_barSD-контроллер от vinxru Vote_rcap 
alemorf
SD-контроллер от vinxru Vote_lcapSD-контроллер от vinxru Voting_barSD-контроллер от vinxru Vote_rcap 
demetrius2003
SD-контроллер от vinxru Vote_lcapSD-контроллер от vinxru Voting_barSD-контроллер от vinxru Vote_rcap 
a.oleg.a
SD-контроллер от vinxru Vote_lcapSD-контроллер от vinxru Voting_barSD-контроллер от vinxru Vote_rcap 
parsec
SD-контроллер от vinxru Vote_lcapSD-контроллер от vinxru Voting_barSD-контроллер от vinxru Vote_rcap 
Savoj
SD-контроллер от vinxru Vote_lcapSD-контроллер от vinxru Voting_barSD-контроллер от vinxru Vote_rcap 
VladimirS
SD-контроллер от vinxru Vote_lcapSD-контроллер от vinxru Voting_barSD-контроллер от vinxru Vote_rcap 

Поиск
 
 

Результаты :
 


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


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

Перейти вниз

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

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

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

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

Посмотреть профиль

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

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

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

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

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

Посмотреть профиль

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

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

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

3
.


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

alemorf
Мастер

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

Посмотреть профиль http://alemorf.ru/

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

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

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

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

san010101
новичёк

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

Посмотреть профиль

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

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
Мастер+

Сообщения : 460
Дата регистрации : 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
Мастер

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

Посмотреть профиль http://alemorf.ru/

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

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

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

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

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

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

Посмотреть профиль

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

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

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

8

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


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

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


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