Просмотр полной версии : SD карта и SDOS для 8и битных ПК
У меня возникло желание упорядочить и собрать в одном месте всю информацию о системе SDOS.
Честно говоря, я не предполагал, что SDOS разрастется до текущих маштабов, и сейчас сам иногда испытываю сложность в поиске информации о том или ином варианте сборки.
Что же такое SDOS?
SDOS это компактная консольная оболочка позволяющая читать, запускать на исполнение файлы с SD карты, отформатированной в FAT16, и записывать обратно на карту данные из ОЗУ компьютера. Это позволяет очень просто переносить файлы с 'больших' ПК в наши ретрокомпьютеры и обратно.
В основе кода SDOS взят код уважаемого b2m, который я обрамил дополнительным функционалом и возможностями.
Код системы построен таким образом, что его очень просто можно адаптировать к любому ПК и к любому варианту аппаратного интерфейса и носителя (те, вообще говоря, это не обязательно должна быть SD карта, а может быть и HDD (https://zx-pk.ru/threads/29892-sd-karta-i-sdos-dlya-8i-bitnykh-pk.html?p=1050685&viewfull=1#post1050685)).
На данный момент SDOS:
код самой SDOS занимает от 2 до 2.5КБ (может размещаться как в ПЗУ так и в ОЗУ), плюс для работы с FAT16 нужно еще 2КБ ОЗУ.
собиралась и проверялась как минимум в эмуляторе emu, а в некоторых случаях и в реале на следующих ПК: Специалист std(реал) и MX2(реал), RK-86(реал), Апогей, Партнер-01, Galaksija(реал), Orion(реал), TRS-80(реал), ЮТ-88.
поддерживает три базовых аппаратных интерфейса SD: HWM_PVV, msx, n8vem, и их производные варианты.
поддерживает SD и SDHC карты, те карты с размером больше 4ГБ.
поддерживает следующие базовые директивы:
- CD ИМЯкаталога - перейти в каталог с указанным именем;
- DIR - вывести список файлов и каталогов;
- ИМЯфайла.RKX(RKS для std, RKR для RK-86, GTP для Галаксии, RKO - Орион, CAS - TRS-80 ) запустить файл, при этом расширение можно не набирать, будет произведена автоподстановка;
- R ИМЯфайла.РАСШИРЕНИЕфайла,А ДРЕСкуда,СКОЛЬКОбайт - прочитать не запуская файл, начиная с указанного адреса в памяти и сколько байт пример: R TEST.BIN,0ACD,5FE0 - читает файл TEST.BIN в память начиная с адреса 0х0ACD и до адреса 0х0ACD+0х5FE0=0х6AAD. Ограничение - нет проверки на фактическую длину файла и запрошенную на чтение, те можно запросить прочитать больше чем размер файла, поведение не определено
- W ИМЯфайла.РАСШИРЕНИЕфайла,А ДРЕСоткуда,СКОЛЬКОбайт - записать в файл данные из памяти, начиная с указанного адреса в памяти и сколько байт пример: W TEST.BIN,0ACD,5FE0 - пишет в файл TEST.BIN из памяти начиная с адреса 0х0ACD и до адреса 0х0ACD+0х5FE0=0х6AAD. Ограничение - нет проверки на фактическую длину файла и запрошенную на запись, те можно запросить записать больше чем размер файла, поведение не определено. Записать больше чем существующий размер файла нельзя, если записать данных меньше чем размер файла, то размер файла не меняется и остается прежний
- X - перейти в монитор, из которого был запущен SDOS;
- I - запуск повторной инициализации карты;
только Galaksija:
- WB ИМЯфайла.РАСШИРЕНИЕ - запись BASIC программы в файл на SD в формате GTP;
только СпецециалистМХ:
- L ИМЯфайла.РАСШИРЕНИЕфайла - прочитать данные файла формата RKX с SD в RAM диск МХа; пример: L TEST.BIN - читает файл TEST.BIN в память начиная с адреса 0х0000 и до адреса его длины, создает в RAM диске файл TEST.BIN с стартовым адресом и размером взятыми из 4х первых байт файла на карте, при том, что имя файла в хеадере отсутствовало (в 5м байте 0хЕ6).
Или: L TEST.BIN - читает файл TEST.BIN в память начиная с адреса 0х0000 и до адреса его длины, создает в RAM диске файл TEST_MX.HEX, с стартовым адресом и размером считанные из 4х первых байт файла на карте, и именем файла в хеадере TEST_MX.HEX.
- S ИМЯфайлаНаRAMдиске.РАСШИРЕН ИЕ,ИМЯфайлаНаSD.РАСШИРЕНИЕ - записать данные файла из RAM диска МХа на SD в формате RKX; пример: S TEST.BIN - читает файл TEST.BIN из RAM диска в память начиная с адреса 0х0000 и до адреса его длины, после записывает его на SD карту в существующий файл с таким же именем TEST.BIN, размер не изменяется, формат RKX!
Или: S TEST.BIN,TEST_MX.HEX - читает файл TEST_MX.HEX в память начиная с адреса 0х0000 и до адреса его длины, после записывает его на SD карту в существующий файл с именем TEST.BIN.
только Orion:
- L ИМЯфайла.РАСШИРЕНИЕфайла - прочитать данные файла формата RKO с SD в RAM диск; пример: L TEST$.RKO - читает файл TEST$.RKO в память начиная с адреса 0х0000 и до адреса его длины, создает в RAM диске файл TEST$ с именем, стартовым адресом и размером взятыми из хеадера RKO файла на карте.
- S ИМЯфайлаНаRAMдиске,ИМЯфайла НаSD.РАСШИРЕНИЕ - записать данные файла из RAM диска на SD в формате RKO. пример: S TEST$,TEST1$.BIN -читает файл TEST$ из RAM диска в память начиная с адреса 0х0000 и до адреса его длины, после записывает его на SD карту в существующий файл с таким же именем TEST1$.BIN, размер не изменяется, формат RKO!.
При выводе каталога по DIR печатается имя, расширение файла и его размер(что бы можно было использовать директивы R и W), а на директории пишется DIR в поле размера файла.
При запуске файла пишется стартовый и конечный адреса куда будет считан файл с карты.
Нажатие любой клавиши (пробела) при выводе по DIR приостанавливает вывода списка файлов.
Для СпециалистМХ2 сделана возможность запускать не только файлы с расширением RKX, но и RKS, для чего в том же каталоге, где находится RKS файл нужно поместить файл монитора M2_C000.MON (https://zx-pk.ru/threads/27418-rabota-s-sd-kontrollerom-na-spetsialiste_mkh2.html?p=993336&viewfull=1#post993336) (взят из проекта Vinxru). Кроме того, есть возможность загружать произвольные мониторы (https://zx-pk.ru/threads/27418-rabota-s-sd-kontrollerom-na-spetsialiste_mkh2.html?p=955214&viewfull=1#post955214).
И теперь масса ссылок, с упоминанием SDOS и SD интерфейса.
Началось все с этой (http://www.nedopc.org/forum/viewtopic.php?f=90&t=11446) темы по Специалисту с интерфейсом HWM (http://www.spetsialist-mx.ru/index32.html), и тогда я думал, что на этом все закончится, да не тут то было.
Первая (http://www.nedopc.org/forum/viewtopic.php?f=90&t=17331) попытка упорядочить информацию по SDOS в рамках Специалиста.
Версия (http://www.nedopc.org/forum/viewtopic.php?f=93&t=16296#p132181) для РК-86 с интерфейсом HWM_PVV, и там же, дале с интерфейсом RK86_WW55_SD_HWM_PVV,
далее Апогей (http://www.nedopc.org/forum/viewtopic.php?f=93&t=16296&start=15#p145339) с оригинальным вариантом подключения карты, аналог интерфейса SD_n8vem. В этих вариантах SD карта подключена совместно с ROM диском, не исключая его!
Партнер-01 (https://zx-pk.ru/threads/29755-partner-01-01-modul-sd-karty.html?p=987692&viewfull=1#post987692) .
Версия для Галаксии (http://www.nedopc.org/forum/viewtopic.php?f=71&t=9407&start=225#p143285) с интерфейсом HWM_PVV и с интерфейсом SD_n8vem (http://www.nedopc.org/forum/viewtopic.php?f=71&t=9407&start=270#p145367) .
Практическая реализация в этой (https://zx-pk.ru/threads/29446-galaksiya-%28plyus%29-sborka-i-nastrojka.html) теме.
Ют-88 (https://zx-pk.ru/threads/24628-yut-88-vneshnie-nakopiteli.html?p=974013&viewfull=1#post974013) с интерфейсом SD_n8vem.
Орион (https://zx-pk.ru/threads/28704-sd-karty-i-kontrollery-realizatsii-fat.html?p=953635&viewfull=1#post953635) .
TRS-80 (http://www.nedopc.org/forum/viewtopic.php?f=71&t=17688#p143514) .
Схемы интерфейсов:
HWM_PVV на ИР8 и ИР9 (http://www.nedopc.org/forum/viewtopic.php?f=90&t=11446&start=75#p134316) или на портах ВВ55 (http://www.nedopc.org/forum/viewtopic.php?f=93&t=16296&start=15#p134110) .
HWM_PVV на ИР24 (http://www.nedopc.org/forum/viewtopic.php?f=90&t=11446&start=75#p134101) или здесь (http://zx-pk.ru/attachment.php?attachmentid=64558&d=1520701260) или здесь (https://zx-pk.ru/threads/29892-sd-karta-i-sdos-dlya-8i-bitnykh-pk.html?p=1020948&viewfull=1#post1020948)
HWM_PVV на ИР13 (http://www.nedopc.org/forum/viewtopic.php?f=71&t=9407&start=285#p148843)
SD_n8vem (http://www.nedopc.org/forum/viewtopic.php?f=93&t=16296&start=15#p145339) или здесь (http://www.nedopc.org/forum/viewtopic.php?f=71&t=9407&start=270#p145367) или здесь (https://zx-pk.ru/threads/28704-sd-karty-i-kontrollery-realizatsii-fat.html?p=946077&viewfull=1#post946077) или здесь (http://www.nedopc.org/forum/viewtopic.php?f=96&t=18820&start=45#p144089)
SD_msx (http://msx.hansotten.com/uploads/fyfiles/MMC_Drive.zip) я на реале не проверял, только в emu, но изначально код b2m был реализован для работы именно с этим интерфейсом и он использовался на реале в плис.
Хочу дополнить еще один момент. Согласно спецификации, при инициализации SD карты нужно использовать частоту тактирования SD_CLK не выше 400кГц, а по завершению инициализации переключаться на более высокую. Но как показала практика, современные карты спокойно инициализируются и работают на частоте 2-4МГц, что позволяет отказаться от переключателя скорости тактирования. Переключение скорости поддерживается только в интерфейсе на ПЛИС HWM и в первом варианте интерфейса HWM_PVV на дискретах.
TRS-80(реал)
ИстЕны ради - все же для реализации TRS-80 в ФПГА, не только лишь все это реАлом посчитают)) Но противопоказаний для реального реала быть особо не должно.
ИстЕны ради - все же для реализации TRS-80 в ФПГА, не только лишь все это реАлом посчитают)) Но противопоказаний для реального реала быть особо не должно.
Это гораздо более реал, чем проверки в эмуляторе :).
Немного продолжу...
Исходники SDOS открыты, и их можно скачать почти по каждой из ссылок выше.
SDOS написана в мнемониках ВМ80, и без проблем запускается на Z80.
Каждый раз при добавлении какого либо функционала и новых платформ (ПК) я увеличивал номера версий и подверсий. Актуальная на данный момент версия 8.9, но практически это 8.6 (http://www.nedopc.org/forum/viewtopic.php?f=71&t=9407&start=255#p144429), тк 8.7 - 8.9 это лишь сборки под разные платформы с подвариантами SD интерфейса, и на этом этапе я понял, что так быть не должно, конечный пользователь сам должен собирать SDOS под свои требования и это не должно влиять на версию системы.
Соответственно, я хочу объяснить, как собирается, конфигурируется или портируется на другую платформу SDOS.
Первое, нужно определиться с размещением в адресном пространстве целевой платформы. Нужно определить, где будет размещаться как код самой SDOS, в ОЗУ или ПЗУ, так и ее служебная область 2048-256=1792 байт и в каких адресах. Нужно выбрать такие адреса, которые для большей части программ не задействуются. Здесь нужно выбрать оптимальный компромисс. Если на целевой платформе существует внешний РОМдиск, то достаточно логично разместить SDOS там, и переписывать его в ОЗУ штатными средствами. (При портировании на новую платформу на первом этапе можно выбрать практически любые доступные адреса, и лишь на финишном этапе определить оптимальное размещение в памяти). Если на целевой платформе есть Свободное место в адресном пространстве, в котором можно разместить ПЗУ (пример Специалист и Галаксия), то SDOS размещается в таком участке, и работает сразу из ПЗУ и нужно лишь выбрать доступный участок под служебную область.
Второе, пересекается с первым, это выбор адресов для портов SD интерфейса. Нужно два адреса, это могут быть как адреса в пространстве памяти, так и адреса в IO портах. Для тех платформ, в которых существует внешний РОМдиск, проблема выбора может упроститься. По ссылкам выше есть два варианта такого подключения. Иначе нужно опять искать варианты и компромиссы.
Третье, выбрать вариант SD интерфейса. HWM_PVV - это самый быстрый и, в добавок, его программная поддержка самая компактная, что на общем фоне компактной SDOS(напомню ~2КБ всего!) весьма заметно. 7 корпусов 555 серии (https://zx-pk.ru/threads/29742-minimalnyj-kontroller-microsd-dlya-uknts-s-nebolshim-zagruzochnym-pzu.html?p=988979&viewfull=1#post988979) . msx - более медленный и программная поддержка +150 байт к коду, а по числу корпусов примерно как предыдущий вариант, по тому я его особо не рассматриваю. n8vem - самый медленный, +250 байт к коду, но очень прост в реализации, а по тому, вполне имеет право на рассмотрение. Для наших ретроПК даже скорость n8vem не столь плоха (http://www.nedopc.org/forum/viewtopic.php?f=71&t=9407&start=270#p145380) , тк в большей части файлы имеют не большой размер, что не критично и все лучше, чем просто магнитофон. Любые подварианты этих интерфейсов, к примеру, подключенные через ВВ5, будут соответственно чуть медленнее и будут чуть раздувать программный код.
На этом этапе, для уже существующих вариантов платформ, нужно лишь правильно определить в дефайнах нужные возможности и запустить сборку bat файлом.
Если же нужно портировать SDOS на новую платформу, то тут нужно провести определенные изыскания.
В файле defs.inc нужно сделать секцию с новой платформой, в которой нужно определить такие функции (пример от РК-86):
GETC EQU 0F803H <-ожидать символ с клавиатуры
PUTC EQU 0F809H <-вывести один символ на экран
PRINT EQU 0F818H <-вывести строку на экран
PRHEX EQU 0F815H <-вывести число в HEX формате
IfKeyPress EQU 0F81BH <- проверка ввода с клавиатуры, не зависающая в проверке
входные и выходные параметры этих функций можно посмотреть, к примеру, здесь (http://www.danbigras.ru/RK86/Programm/CPUTbl6.html)
из них основными являются первые две, тк PRINT делается из PUTC, PRHEX как опция, есть уже в коде самой SDOS и использует PUTC, а IfKeyPress можно за комментировать и не использовать (не будет функции приостановки вывода списка файлов по DIR по нажатию любой клавиши, забыл об этой возможности упомянуть в первом сообщении).
GETC и PUTC на целевой платформе так или иначе реализованы, значит нужно их формат вызова подстроить под требуемый SDOS (так было сделано при портировании на Галаксию и TRS-80).
Вот какие дефайны есть в файле defs.inc и что они означают (наличие точки с запятой ';' в начале строки означает исключение этого дефайна, а отсутствие, включение):
#define SDOS_VER "SDOS_V8.9N" - в v8.9 вынес строку с текстом приветствия SDOS в этот дефайн
#define SD_DBG_PRINT0 - тоже в v8.9 разделил один дефайн SD_DBG_PRINT на три, для
#define SD_DBG_PRINT1 - более гибкой подгонки размера SDOS, что очень актуально при сборке компактного кода
#define SD_DBG_PRINT2 - для размещения в ПЗУ на 2КБ (все эти печати 'съедают' до 100 байт кода).
;#define SD_HWM_PVV - это группа из 8 дефайнов определяет тип SD интерфейса для сборки, соотв. HWM_PVV
;#define SD_msx - msx
;#define SD_n8vem - n8vem
;#define RK86_WW55_SD_HWM_PVV - это вариант HWM_PVV подключенный на портах ВВ55, проверялся на реальном РК-86, по тому такое название
;#define RK86_WW55_SD_n8vem ; APOGEE and RK86 memmap - это вариант n8vem подключенный на портах ВВ55, где ВВ55 размещается в адресном пространстве, а не портах, собирался но еще не проверялся на реале, для РК86
#define STD_WW55_SD_n8vem ; Specialist - это полная копия(!?!) RK86_WW55_SD_n8vem варианта, собирался но не проверялся на реале, для Специалиста (Std) - в следующей версии сведу в один дефайн WW55_ADDR_SD_n8vem
;#define UT88_WW55_SD_n8vem ; ports IN - OUT - это вариант n8vem подключенный на портах ВВ55, где ВВ55 размещается в портах IO, собирался но не проверялся на реале, для ЮТ-88 - в следующей версии дефайн переименую в WW55_IO_SD_n8vem
;#define GAL_AY_SD_n8vem - это вариант n8vem подключенный на портах AY3-8910(YM2149F), где AY размещается в портах IO, проверялся на реальной Галаксии - в следующей версии дефайн переименую в AY_IO_SD_n8vem
;#define FAT12_ON - включение поддержки FAT12 на карте, актуально для карт или раздела на карте меньше 32МБ, для экономии размера кода обычно выключен
#define FAT16_ON - включение поддержки FAT16 на карте, является основным
#define RWR - включение поддержки записи на карту, занимает 200-300 байт
;#define UT88 - это группа из 8 дефайнов определяет тип платформы, для которой собирается SDOS. ЮТ-88
;#define APOGEE - Апогей
;#define RK86 - РК-86
#define STD - Специалист
;#define MX2 - СпециалистМХ2 - актуально для оригинального SD_HWM_PVV, там задействуется бит сигнализирующий 'занятость' SPI автомата BUSY (во всех 'моих' вариациях этого интерфейса я выбросил этот бит, тк зная скорость работы ЦП с SD интерфейсом можно NOP_ами, буквально от 1 до 3 штук, подобрать нужную задержку)
;#define GAL - Галаксия
;#define ORION - Орион
;#define TRS80 - TRS80
дальше идут секции включаемые дефайнами типа платформы, на примере от РК-86:
;================================================= =========
#ifdef RK86
GETC EQU 0F803H - ожидать символ с клавиатуры
PUTC EQU 0F809H - вывести один символ на экран
PRINT EQU 0F818H - вывести строку на экран
PRHEX EQU 0F815H - вывести число в HEX формате
IfKeyPress EQU 0F81BH - проверка ввода с клавиатуры, не зависающая в проверке
SD_DATA_PORT EQU 0d000H - адрес, по которому размещается SD интерфейс, его порт данных
SD_CONF_PORT EQU SD_DATA_PORT+1 - адрес, по которому размещается SD интерфейс, его порт конфигурации
SD_DATA_PORT_WW55 EQU 0a000H - адрес, по которому размещается SD интерфейс, его порт ВВ55 для вариантов SD с ВВ55
#define SD_ROM - актуально только в РК-86, если не выбран, то по адресу F000 стоит jmp F800h
#ifdef SD_ROM
START_ADDR EQU 06000H - стартовый адрес для размещения кода самой SDOS (который читается из ROMdisk РК)
#else
START_ADDR EQU 0f000H - стартовый адрес для размещения кода самой SDOS, если он записан в ПЗУ
#endif
BUF EQU 06900h - стартовый адрес для размещения служебной области (буфферов для работы с fat), занимает 2048-256=1792 байт
#endif
;================================================= =========
Исходные коды SDOS находятся в нескольких файлах:
defs.inc - здесь хранятся все дефайны описанные ранее
dos_rk.asm - основной файл, в нем реализация всего интерфейса взаимодействия SDOS и пользователя
это 6 файлов, для каждой из поддерживаемых платформ, в которых реализована функция чтения и запуска файла на выполнение, плюс специфичные возможности для определенной платформы (работа с РАМдиском в СпециалистМХ2 или Орион, запись basic файлов в Галаксии).
При сборке используется файл той платформы, дефайн которой определен в файле defs.inc. Подключение файла идет в файле dos_rk.asm.
При добавлении новой платформы нужно будет добавить такой файл.
dos_gal_RUNF.inc
dos_mx_RUNF.inc
dos_orion_RUNF.inc
dos_rk_RUNF.inc
dos_std_RUNF.inc
dos_trs_RUNF.inc
sd_proc.inc - здесь все функции для работы с самой SD картой
fs_proc.inc - здесь все функции для работы с файловой системой fat12 и fat16.
кроме вышеописанных файлов в архиве с SDOS еще есть:
asm_std.cmd - текстовый BAT файл, в котором описаны опции сборки SDOS, вот его и надо запускать для сборки после конфигурирования всех дефайнов.
ReadMe.txt - текстовый файл, с очень кратким описанием возможностей SDOS
TASM.EXE - это ассемблер, которым все и собирается
TASM85.TAB - это служебный файл ассемблера
Весь процесс сборки для пользователя заключается в конфигурировании дефайнов в файле defs.inc и запуска на выполнение asm_std.cmd. В результате получится требуемый файл SDOS.BIN.
Всегда возникает желание проверить, что же получилось. И в этом громадным подспорьем становится эмулятор emu (http://bashkiria-2m.narod.ru/). Этот эмулятор поддерживает все три типа SD интерфейсов, и их подвариантов. Нужно искать по каталогу config файлы с таким содержимым и делать по аналогии нужную кофигурацию:
для HWM_PVV:
mm2 : MemMap2 {
map[00]=sdcard.data8
map[01]=40
}
для msx:
mm2 : MemMap2 {
map[00]=sdcard.ss
map[01]=sdcard.data
}
для n8vem, на портах ВВ55:
miso : Register {
read[0]=sdcard.miso
read[1]=sdcard.miso
read[2]=sdcard.miso
read[3]=sdcard.miso
read[4]=sdcard.miso
read[5]=sdcard.miso
read[6]=sdcard.miso
read[7]=sdcard.miso
}
appmx : MemMap2 {
map[0]=romdisk.data
map[1]=miso
}
app : K580ww55 {
portA=appmx
portB=romdisk.lsb
portC=romdisk.msb
portC[0]=sdcard.mosi
portC[5]=sdcard.sclk
portC[E]=sdcard.ss
portC[7]=appmx.offset
}
Не будет ли возможности опубликовать фрагменты текста подпрограмм для работы флеш-карточки с ВВ55А на Бейсике - "Чтение блока № хххх в адрес yyyy" и "Запись блока № хххх из адреса уууу" ?
Быстродействие М-ЭВМ - порядка 500 т. рег-рег.
Имеется ввиду блоки по 512 байт, начиная, например, с блока №000000.
- - - Добавлено - - -
И еще вопрос - применяются только классические карты микроSD ( например, 2 Гбайт ), или подойдут и microSDHC ( 2 Гбайт ) ?
Не будет ли возможности опубликовать фрагменты текста подпрограмм для работы флеш-карточки с ВВ55А на Бейсике - "Чтение блока № хххх в адрес yyyy" и "Запись блока № хххх из адреса уууу" ?
Быстродействие М-ЭВМ - порядка 500 т. рег-рег.
Имеется ввиду блоки по 512 байт, начиная, например, с блока №000000.
Это я не понял, и при чем здесь Бейсик? Все написано на asm от 580ВМ80.
И еще вопрос - применяются только классические карты микроSD ( например, 2 Гбайт ), или подойдут и microSDHC ( 2 Гбайт ) ?
Поддерживаются и классические карты SD и микроSD, которые до 2ГБ включительно и microSDHC, которые от 4ГБ и до 32ГБ. С оговорками.
В FAT16 можно отформатировать раздел не более 4ГБ, соответственно для карт больше 4ГБ нужно делать один первичный (http://www.nedopc.org/forum/viewtopic.php?f=71&t=9407&start=225#p143300) (обязательно именно первичный!) раздел на 4ГБ, а остальное сейчас не используется. (задел на будущее, можно доработать SDOS до 4х таких разделов)
и при чем здесь Бейсик?
Для переноса на DEC-16 бит машинки типа ДВК, УКНЦ, БК, НЦ-8010 и моложе.
Или в блок-схемах из школьного учебника по информатике :
https://ru.wikipedia.org/wiki/%D0%91%D0%BB%D0%BE%D0%BA-%D1%81%D1%85%D0%B5%D0%BC%D0%B0
Для переноса на DEC-16 бит машинки типа ДВК, УКНЦ, БК, НЦ-8010 и моложе.
Или в блок-схемах...
Это весьма объемный труд, я на описание возможностей SDOS еле себя сподвиг :), а это...
Фактически, это означает взять asm код и откомментировать его так, что бы получилось словесное описание алгоритма. Что есть
"Чтение блока № хххх в адрес yyyy" и "Запись блока № хххх из адреса уууу" - А инициализация карты нужна? А FAT какой то на карте будет?
Как начало блок-схем, есть код на Си, дальше по ссылке (https://zx-pk.ru/threads/29742-minimalnyj-kontroller-microsd-dlya-uknts-s-nebolshim-zagruzochnym-pzu.html?p=989013&viewfull=1#post989013), его можно на Бейсик переложить. Непонятные моменты я подскажу. На ВВ55 какой тип SD интерфейса видится?
А FAT какой то на карте будет?
Пока - никакой. Каталоги ОС RT-11 - пока 8 томов по 32 метра. Если раздобуду руководства ( на Русском языке с подписями ) по RT-11 V5.6 1992 г. ( что маловероятно ) - то ~20 томов по 32 метра ( 640 Мбайт ). Можно сделать драйвера-дублеры ( штук так ~пяток, с разными именами ) - каждый по ~640 Мбайт.
Нужен собственно железный алгоритм шевеления 3 шт. выводов ВВ55А - для чтения 512 байт, и записи 512 байт ( т.е. блоков данных ).
А софтовая мишура типа поддержки каталогов и т.п. - это есть в самой RT-11.
Насчет инициализации ( с завода-изгоовиеля карты ) - я думаю нагло её прописывать Нулями, заодно и к/с секторов придет в норму.
Тип интерфейса на ВВ55А - 2 проволоки на выход с ВВ55А, 1 проволока на вход.
Главное - по-проще, скорость вторична.
Насчет понимая "С" - я 30 лет назад в институте видал такую брошуру. И даже ,вероятно, прочел...
PVV, В версии 8.9N в модуле SD_proc.inc есть кусок кода в котором проверяется необьявленная переменная.
Похоже на ошибку,Этот кусок НИКОГДА не будет асемблирован.
;
#ifdef SD_RK86_WW55_SD_HWM_PVV
CALL SD_OFF
MVI B,10h
CALL SD_FIN
DCR B
JNZ $-4
#endif
или это так задумано.
Ни какого криминала не вижу, о чем речь? Какая необьявленная переменная? Если речь об этой строчке
JNZ $-4
то, это лишь переход на адрес на 4 меньше чем текущий.
HardWareMan
04.01.2019, 10:50
PVV, он скорее всего говорит за SD_RK86_WW55_SD_HWM_PVV.
PVV, он скорее всего говорит за SD_RK86_WW55_SD_HWM_PVV.
Точно! должно быть просто RK86_WW55_SD_HWM_PVV !
SD_RK86_WW55_SD_HWM_PVV
Вот эта.
Автор! Никогда не сохраняй рисунки в формате JPG!
HardWareMan
12.04.2019, 20:25
Vital72, что не так с жыпегом?
правда надо объяснять? jpg не предназначен для рисунков с резким цветовыми переходами, или вам приятно смотреть на размытые линии и шрифт с артефактами? мне нет.
используйте jpg только для фотографий, где градиентные переходы, а для рисунков и картинок с ограниченным количеством цветов -- png
68749
HardWareMan
13.04.2019, 15:23
Vital72, тем более не понятно, что не так с жыпегом для рисунков?
https://jpegshare.net/images/db/a5/dba540f80b78e8f5ac86fb3f398600c1.jpg
Проверил работу SD интерфейса на Апогее (http://www.nedopc.org/forum/viewtopic.php?f=93&t=16296&start=30#p150553). Включается в его стандартный разъем расширения, из ПЗУ вычитывается код SDOS, а, затем, используя эту ПЗУ идет работа с картой.
https://i.ibb.co/9n3jJkf/IMG-20190504-210216.jpg (https://ibb.co/Zd1C3pw)
https://i.ibb.co/0B9n5z7/IMG-20190504-210235.jpg (https://ibb.co/DGM1djJ)
чтение 25КБ около 15с, что для такой схемы очень даже и не плохо.
В добавок к перечисленным выше схемам SD интерфейсов хочу добавить еще один вариант схемы, подсмотренный здесь (http://s100computers.com/My%20System%20Pages/8080%20CPU%20Board/8080%20CPU%20Board.htm). Весь SD интерфейс получается на 5 корпусах. Программно полностью совместим с вариантом SD_HWM_PVV.
https://i.ibb.co/vvw0HPp/SDnew.png
как оказалось эту схему можно еще упростить без ущерба функционалу:
https://i.ibb.co/7VLY1CZ/SDnew1.png
Error404
01.08.2019, 11:49
Программно полностью совместим с вариантом SD_HWM_PVV.
Упоминалось что недавно пришлось доработать обработку CMD9 (и вроде CMD10 ?). Код SD-OS с этими правками тоже разместите пожалуйста.
- - - Добавлено - - -
Вот это:
исходники здесь - http://www.nedopc.org/forum/viewtopi...rt=240#p143547
ведёт на страницу где никаких вложений нет. Также, nedopc менее посещаемый и менее структурированный ресурс, например там нет правила "первого поста". Все что я размещал там, теперь не найти. :)
Предлагаю таки сделать репку на GitHub (gitlab). ИМХО давно пора.
Упоминалось что недавно пришлось доработать обработку CMD9 (и вроде CMD10 ?). Код SD-OS с этими правками тоже разместите пожалуйста.
Как я понимаю, речь об этом (http://www.nedopc.org/forum/viewtopic.php?f=96&t=18820&start=120#p151218). К SDOS это не применимо и не используется. Это актуально для msx применительно к прошивке NEXTOR, тк в ней встроена утилита fdisk для разметки и форматирования карточки. Исходник драйвера SD карты для NEXTOR я выложу там чуть позже, надо его 'облагородить'.
ведёт на страницу где никаких вложений нет.
действительно, странная ссылка, тем не менее, исходник актуальной версии SDOS выложен в этой ветке, в третьем сообщении.
Предлагаю таки сделать репку на GitHub (gitlab). ИМХО давно пора.
Да, Shaos (http://www.nedopc.org/forum/viewtopic.php?f=71&t=9407&start=135#p143799) уже пару раз мне на подобное намекал:), но я пока к этому не готов.
в sdos с записью вторая пзу почти пустая, может расширить возможности sdos ?
pipe как в rk-dos
к примеру-)
shapipovo
28.08.2019, 06:48
Получил от PVV плату, и вот какая у меня ерунда получается.
https://yadi.sk/i/UQSdfaw2zSWn-w
Грешу на ВГ75, хотя все тесты проходят.
Картинка больше похожа на проблемы с питанием, ВГ75 здесь ни при чем. Какое напряжение приходит на плату SD адаптера? В моменты работы с картой потребление возрастает. Можно попробовать добавить электролит по питанию прямо на плате адаптера 100-500мкф, или другой блок питания, лучше более мощный.
shapipovo
31.08.2019, 11:28
Кондер не помог, питание на ПЗУ 4,9982в. Фото с другого домашнего Апогея
69914
По последнему фото мало что понятно.
Это только графические артефакты или комп виснет?
Программы загружаются, хотя бы самые маленькие?
По картинке видно, что на карте много различных файлов, в том числе с длинными именами. Можно проверить работу с чистой картой, полностью отформатированной, на которой будет записано только несколько файлов (до десятка) в формате имени 8+3?
shapipovo
02.09.2019, 03:05
Мой глюк. Файлы брал из РОМа, а там есть файлы с именами больше 8 знаков. Хотя и такие иногда проходят. Выйду на работу, тогда более тщательно проверю.
Добавил здесь (https://zx-pk.ru/threads/29892-sd-karta-i-sdos-dlya-8i-bitnykh-pk.html?p=1020948&viewfull=1#post1020948) упрощенный вариант схемы SD интерфейса. Схема проверена в железе.
Кроме того, в протеусе проработан вариант схемы SD интерфейса, сдвиг данных в которой вызывается не только записью(все предыдущие схемы), но и чтением! Те это, практически, все варианты реализаций SD интерфейсов в больших плис(Zконтроллер,...), с которым z80 может работать своими командами циклического, блочного, чтения и записи, LDIR, INIR и тп.
https://i.ibb.co/M6PFgYG/SDnew2.png
- - - Добавлено - - -
Для подключения SD карты одно из необходимых требований, это выделение в адресном пространстве двух адресов для SD интерфейса. Недавно в голову пришла мысль, а что, если карту подключать на ножки, уже имеющиеся в ПК?
Для подключения SD карты нужно 4е ножки, один вход и три выхода. Все наши 'маленькие' ПК имеют магнитофонный интерфейс, те один вход и один выход уже есть. Дальше практически у всех есть выход звука, еще один выход, уже два. Остается найти еще выход, и, еще часто имеется выход для управления светодиодом раскладки клавиатуры (Рус\Лат), три, вот и все, что нам нужно!
Используя эти ножки я собрал SDOS для Специалиста используя клавиатурную ВВ55 с перечисленными выше сигналами. Проверка в emu показала работоспособность этой идеи. Да, скорость такого интерфейса низкая, но выше, чем магнитофон, и сам магнитофон и не отменяется, если использовать переключатель. Эта идея будет работать на РК подобных машинах, Орионе, ZX, msx... Остается найти место под 2КБ кода SDOS и 2 КБ ОЗУ.
На днях, совместно с Дмитрий2012, был проведен эксперимент по замене типа носителя в SDOS с SD карты на CF в режиме IDE. Эксперимент проводился на ОрионПро (https://zx-pk.ru/threads/24285-orion-pro-softvernye-dela.html?p=1049907&viewfull=1#post1049907) к которому подключен интерфейс NemoIDE. Кроме этого был доработан функционал SDOS для Ориона, что бы была возможность запускать не только RKO, но и ORD и BRU файлы.
Improver
17.02.2022, 16:13
Решил попробовать драйвер на FAT16 из SDOS для НЖМД на Векторе06ц, написал свою небольшую тестовую программку, подцепил библиотеки для IDE -- по каталогам ходит, файлы открывает, но, оказывается, записывать он умеет только в имеющиеся файлы, и в пределах их размеров. :(
PVV, подскажите, Вы не планируете сделать полноценную запись файлов? Т.е. хотелось бы иметь возможность создать новый файл и сбросить в него данные. Или вот ещё нужная функция -- удалить файл, занятые им кластеры пометить, как свободные. По сути, это всё умеет делать даже обычная ардуина с картридером...
Полноценную запись файлов интегрированную в SDOS делать не планирую. На текущий момент SDOS минимально самодостаточна.
Основная 'фишка' SDOS - её размер.
Вообще SDOS надо рассматривать не как ОС, а как загрузчик полноценной ОС с несколько расширенным функционалом.
Весь дополнительный функционал можно реализовать в виде 'внешних' команд. Как аналог реализация такого в linux. Создаем в корневом каталоге папку SYSBIN, и уже в этой папке размещаем исполняемые файлы del, copy, mkdir, create и тп. Писать же эти команды уже не обязательно на asm, а на любом высокоуровневом языке, по типу Си, можно. Место в ОЗУ наших 'маленьких' ПК для этих 'внешних' команд в данном случае легко организовать имеющимся в SDOS функционале. Для этого в каталоге SYSBIN держим файл TMP.DAT размером, допустим 32КБ. Перед загрузкой 'внешней' команды пишем в этот файл содержимое ОЗУ, в это место загружаем команду, а по завершению восстанавливаем ОЗУ из нашего темп файла. Конечно, даже для этого в код SDOS нужно будет внести правки, но они гораздо проще и не столь объемные по коду чем все эти del, copy, mkdir, create...
Начинать эту работу с нуля желания и времени нет, но подключиться в процессе вполне смогу.
Improver
18.02.2022, 12:16
Полноценную запись файлов интегрированную в SDOS делать не планирую. На текущий момент SDOS минимально самодостаточна.Ок, насчёт этого не возражаю. :)
У меня была идея добавить поддержку FAT16 в одну из Векторовских операционок, и только для жёсткого диска, возможно даже в виде внешнего модуля-драйвера, т.к. применяемое там разбиение НЖМД на кучу дискеток не очень удобно, но без функций создания и записи новых файлов это будет неполноценная замена... Как вариант, на первом этапе можно на FAT-диске насоздавать необходимое количество файлов "DISKETA001", "DISKETA002" и т.п., и использовать их, как дискеты, но, как я понял, программа записи в SDOS не умеет писать данные в произвольное место файла, только с его начала. Это ведь так? Значит понадобится как-то вычислять их расположение и писать данные на диск напрямую, мимо ФС... Да и такое решение усложнит ДОС, и не облегчит обмен файлами с большими ПК.
Для этого в каталоге SYSBIN держим файл TMP.DAT размером, допустим 32КБ. ...С этим на Векторе проблем нет -- все существующие для него ОС, кроме одной забытой, требуют наличия электронного квази-диска на 256кб, там можно и хранить дополнительные утилитки, и даже запускать их прямо на нем, подменяя ОЗУ.
Начинать эту работу с нуля желания и времени нет, но подключиться в процессе вполне смогу.За это спасибо, делать что-то за меня не обязательно, а подсказать и посоветовать -- ценное предложение. :)
Не знаю, насколько далеко у меня пойдёт энтузиазм в этом направлении, но могу поделиться исходниками собранной мной на скорую руку первой тестовой программки для проверки работы Вектора с FAT, вот архив с исходниками и откомпилированным бинарником: 77035
Все обращения к DOS заменены на стандартный вызов через "CALL 5", подпрограммы для обращения к НЖМД использовал из МДОС Т-72 (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=1108343&viewfull=1#post1108343), немного их модифицировав. Для экспериментов использовал образ карты SD3.IMG, взятый тут (http://www.nedopc.org/forum/viewtopic.php?f=90&t=17331).
Тестовая программка подключает диск, выводит RKX-файлы корневой директории, переходит в директорию MX, возвращается в корень, читает и пишет в файл "TESTMX.RKX" -- в общем, тестирует работу всех имеющихся функций FAT16.
И, кстати, я немного поправил подпрограмму чтения файла с FAT -- теперь не надо указывать размер чтения, он выставляется по размеру файла из ФС.
Error404
18.02.2022, 17:23
но без функций создания и записи новых файлов это будет неполноценная замена...
Вот тут еще посмотрите:
https://github.com/lmaurits/lm512
Тоже мини-ОС с минимальной поддержкой FAT16. Запись и удаление там есть, нету seek разве что (а было бы нелишне).
Improver
01.03.2022, 13:44
Промежуточная версия FAT16, в архиве откомпилированная версия и исходники (с моими часто неуместными комментариями): 77083
Теперь она умеет корректировать размер файла при записи до нуля и в большую сторону в пределах последнего кластера. Т.е., например, при исходном значении размера файла "SHAHMMX.RKX" в 6382 байта в него можно записать данные размером от 0 до 8192 байт, при этом размер файла в файловой системе будет скорректирован по количеству записанного. Данная процедура добавила к общему размеру FAT16 всего 185 байт по отношению к предыдущей версии, и это без особой оптимизации кода. :)
Далее нужно научить её дописывать кластеры, как в lm512 по ссылке Error404, и создавать новые файлы -- это как бы план-минимум.
И ещё, синхронизации первой и второй таблиц FAT пока нет, надо будет добавить и это, скорее всего в функцию сброса ФС.
Improver
05.03.2022, 09:32
Доделал в FAT16 запись в файл любого (доступного для 8-бит ПК) объёма данных, с корректировкой размера файла в записи директории и таблице FAT. Архив с тестовой программкой и исходниками: 77106
На данный момент FAT16 умеет читать данные в соответствии с размером файла и записывать данные в существующий файл с корректировкой его размера. Далее остались мелочи -- сделать создание и удаление файлов.
Вопрос есть, немного офтоп, но как можно почекать образ диска? Примонтировать его в линуксе могу, считать/записать файлы, а вот проверку файловой системы не смог запустить -- не понимает его fsck...
Error404
05.03.2022, 10:36
В TODO: крайне полезной была бы дополнительная функция получения в массив всех кластеров файла. Думаю что кластеров хотя секторов было бы удобнее (но их слишком много - слишком большой массив в памяти). Для чего это нужно: очень частый способ применения мини-FAT - хранение на ней образов дисков (SCL, ODI, KDI и подобных) и "монтирование" этих дисков в локальной BIOS стародавних ОС с этих ОС минимальной правкой. А для этого надо последовательно и произвольно ходить direct к секторам "образа диска" лежащего на FAT, желательно быстро - по этому самому массиву секторов/кластеров (мимо распутывания структур FAT).
Improver
05.03.2022, 13:39
В TODO: крайне полезной была бы дополнительная функция получения в массив всех кластеров файла.
Ничего сложного, как пример:
LXI D,RFILE ; ссылка на строку с именем файла (оканчивается нулём)
CALL F_OPEN ; открываем этот файл
JC NOFILE ; не открылось...
LHLD BNEXT ; читаем номер текущего кластера файла
LOOP: PUSH H ; сохраняем в стек
CALL FAT_N16 ; найти следующий кластер
JNZ LOOP ; повторять до последнего кластера
... ; в стеке список кластеров, далее делаем с ними то, что необходимо
NOFILE: ... ; тут, например, вывод ошибки "файл не найден"
Можно это всё загнать в отдельную функцию, если надо... :)
HardWareMan
05.03.2022, 15:46
Единственный минус - это то, что в стек они попадают в обратном порядке и если их оттуда извлекать, то не понятно, где конец, ведь счётчика элементов массива то нет. Однако, можно перед вызовом переназначать стек и конец определять по адресу вершины. В общем, есть над чем подумать.
Error404
05.03.2022, 16:00
Ну так-то еще и прерывания надо стопить в такой функции, а то при прерывании есть вероятность пропила памяти (если стеком фигачить прямо в целевой запрошенный массив)
Но это не принципиально, сохранение HL в массиве можно и изменить
Improver
05.03.2022, 16:07
Однако, можно перед вызовом переназначать стек и конец определять по адресу вершины.Тут есть ещё, как минимум, два варианта: сохранять указатель стека ДО и ПОСЛЕ и вычислять разнице количество записанных туда номеров кластеров, или можно просто предварительно кинуть в стек 0000h (или FFFFh -- кластеров с таким номером быть не может) и читать из стека до получения этого числа. :) Ну или модифицировать приведённый выше фрагмент и сохранять значения сразу в некий буфер в нужном порядке и с подсчётом их количества. В общем, это просто пример, там возможны вариации.
Error404
31.05.2022, 17:03
остались мелочи -- сделать создание и удаление файлов.
Как прогресс с мелочами? Не бросайте! Полезная либа получится. А там глядишь и fat32...
Improver
01.06.2022, 11:34
Как прогресс с мелочами?Отвлёкся немного от FAT в сторону CP/M, в попытке определиться, как всё это туда прикрутить, но там, оказалось, всё сложнее... В свободное время доделаю эти мелочи, не оставлять же на полпути? :)
Error404
02.06.2022, 13:27
Отвлёкся немного от FAT в сторону CP/M, в попытке определиться, как всё это туда прикрутить, но там, оказалось, всё сложнее... В свободное время доделаю эти мелочи, не оставлять же на полпути? :)
Тоже думал на тему скрещивания CPM с FAT. Вариант MSX-DOS не нравится тем что несовместим на уровне BIOS (а точнее разметки файловой системы) и не все ПО поэтому заработает. Пришел к выводу, что удобнее всего на FAT как файлы хранить "сырые" образы дисков CP/M внутри которых CP/M распутает структуры сама, и в ee BIOS как раз и будет "конвертор секторов" для такого доступа:
В TODO: крайне полезной была бы дополнительная функция получения в массив всех кластеров файла. Думаю что кластеров хотя секторов было бы удобнее (но их слишком много - слишком большой массив в памяти). Для чего это нужно: очень частый способ применения мини-FAT - хранение на ней образов дисков (SCL, ODI, KDI и подобных) и "монтирование" этих дисков в локальной BIOS стародавних ОС с этих ОС минимальной правкой. А для этого надо последовательно и произвольно ходить direct к секторам "образа диска" лежащего на FAT, желательно быстро - по этому самому массиву секторов/кластеров (мимо распутывания структур FAT).
Конечно, в такой образ CPM-файлы надо импортировать, а не просто прямо читать с FAT. Но и образов можно иметь много, и кидать их на флешку "как есть" (многое распространяется прямо в виде образов дисков)
Improver
02.06.2022, 16:43
удобнее всего на FAT как файлы хранить "сырые" образы дисков CP/M внутри которых CP/M распутает структуры сама, и в ee BIOS как раз и будет "конвертор секторов" для такого доступаДа, тоже думаю, что такой вариант будет проще прикрутить к СР/М. Но тут может потребоваться ещё одна функция для драйвера FAT: произвольное чтение и запись в файл. Сейчас пока этого нет, файлы либо читаются, либо пишутся из памяти целиком.
Но и образов можно иметь много, и кидать их на флешку "как есть" (многое распространяется прямо в виде образов дисков)Достаточно сложная задача получится, если учесть, что для этого нужно будет адресацию СР/М вида "трек / сектор(128байт)" переводить в кластеры, потом в физические секторы диска и читать/писать их по 512 байт через буфер. Но можно её существенно упростить, если не кидать файлы "как есть", а обеспечить их расположение в непрерывных областях, т.е. полное отсутствие фрагментации этих файлов, а также фиксированный размер образов. В этом случае будет достаточно знать первый сектор файла-образа на диске и читать/писать туда имеющимися уже в BIOS средствами. По сути, существующая реализация FAT уже имеет все функции для этого.
Но можно её существенно упростить, если не кидать файлы "как есть", а обеспечить их расположение в непрерывных областях, т.е. полное отсутствие фрагментации этих файлов, а также фиксированный размер образов. В этом случае будет достаточно знать первый сектор файла-образа на диске и читать/писать туда имеющимися уже в BIOS средствами. По сути, существующая реализация FAT уже имеет все функции для этого.
b2m (автор FAT16 для 8080) использовал такой вариант в реализации Башкирии-2М на плис, если мне не изменяет память.
sergey2b
06.06.2022, 00:31
SD_msx я на реале не проверял, только в emu, но изначально код b2m был реализован для работы именно с этим интерфейсом и он использовался на реале в плис.
архив не доступен,
если у кого нибудь есть поделитесь пожалуйста
- - - Добавлено - - -
SD_msx я на реале не проверял, только в emu, но изначально код b2m был реализован для работы именно с этим интерфейсом и он использовался на реале в плис.
архив не доступен,
если у кого нибудь есть поделитесь пожалуйста
Есть может прошивка с файловым менеджером вшитым, что бы удобней было игры загружать? В крайнем случае под is dos ??
worker_vl
06.02.2024, 14:56
Добрый день, дорогие товарищи!
Скажите, пожалуйста, у вас работают, заявленные в первом сообщении, директивы L и S, для Специалиста? У меня, и на то, и на другое, "NO FILE(S)". Версия SDOS 8.9N.
Добрый день, дорогие товарищи!
Скажите, пожалуйста, у вас работают, заявленные в первом сообщении, директивы L и S, для Специалиста? У меня, и на то, и на другое, "NO FILE(S)". Версия SDOS 8.9N.
Это означает, что SDOS собрана для обычного Специалиста, а директивы L и S применимы только к СпециалистМХ(2) (или для Ориона). Все зависит от определений #define при компиляции SDOS, Версия же 8.9N, по сути, определяет как раз возможный набор #define.
Serg6845
20.10.2024, 13:05
Вашему вниманию предлагается
81420
Очередная инкарнация SD-DOS.
Добавлено - поддержка контроллера CH376 (wch.cn)
Что это дает -
- USB host - можно подключать флешки, картридеры, харды и т.п.
- поддержка FAT12/16/32
- поддержка полноценной записи и удаления файлов
ну и еще кое-что поменял, подробности в Readme.txt
наверняка есть баги, но в общем работает.
я использовал плату по виду как здесь:
http://we.easyelectronics.ru/electro-and-pc/pervoe-podklyuchenie-i-ispolzovanie-modulya-na-interfeysnom-chipe-ch376s-chast-1.html
поскольку в основном продаются такие же - несколько комментариев для тех кто захочет повторить:
- подключаться к плате шлейфом - плохая идея. на 15-сантиметровом шлейфе контроллер безбожно глючил, пришлось укоротить до минимума (~3см)
- пришлось добавить конденсатор 100пф между CS и землей
- на плате некорректно разведено питание - для 5В интерфейса нужно соединить у стабилизатора (микросхема рядом с USB разъемом) вход с выходом, убедившись что ноги 9 и 28 CH376 не соединены между собой
- пришлось добавить конденсатор 100пф между CS и землей
СН376 без этого конденсатора не успевает реагировать?
Какая ревизия чипа использовалась? Я читал в отзывах на Али, что на многих модулях ставится чип со старой прошивкой 0x41, а новая - 0x45. Вроде бы, со старой прошивкой проблемы с FAT при записи.
На шлейфе 15см глючил только адаптер или начинал глючить весь компьютер?
Сегодня, если успею, опробую на "Галаксии", только SDOS под неё соберу. Может, и на "Специалист-Экспресс" опробую, если найду, где что в ПЗУ лежит, я переделывал немного схему выбора...
Serg6845
28.10.2024, 09:08
СН376 без этого конденсатора не успевает реагировать?
нет, со схемы выборки прилетала иголка, чип на нее реагировал. хотя это было еще с длинным шлейфом, надо будет попробовать отпаять...
Какая ревизия чипа использовалась? Я читал в отзывах на Али, что на многих модулях ставится чип со старой прошивкой 0x41, а новая - 0x45.
0х42 и 0х43
Вроде бы, со старой прошивкой проблемы с FAT при записи.
вопрос насколько старой. с 42 ревизией вроде явных проблем не было.
На шлейфе 15см глючил только адаптер или начинал глючить весь компьютер?
только адаптер. на нем питание разведено не слишком удачно, возможно еще и в этом дело.
нет, со схемы выборки прилетала иголка, чип на нее реагировал. хотя это было еще с длинным шлейфом, надо будет попробовать отпаять...
Если будет возможность проверить - напиши, пожалуйста. У меня дома осцилл плохонький, поэтому эту иголку могу не увидеть. Разве что вслепую ставить этот конденсатор, если адаптер не будет работать...
Проверил, у меня ревизия 43, должно быть нормально.
Попробовал на "Галаксии", чип не определился. Но, возможно, проблема в длинных проводах (порядка 10-12см, уже были готовые, через них подключал модуль к своему компьютеру на 6502) и/или отсутствии конденсатора. Возможно, собрал SDOS не так, если не затруднит - посмотри, пожалуйста, настройку, файл с сообщением:
81471
К "Специалисту" ещё не подключал, нужно спаять новый шлейф для подключения, покороче, 3см, и сделать новое ПЗУ для "Экспресса". Я правильно понимаю, что, если нужно собрать SDOS для "Специалиста", ничего в настройках менять не нужно, просто собрать то, что в архиве? Сегодня вряд-ли уже успею это всё сделать, из "Экспресса" ещё нужно шину выводить...
Serg6845
28.10.2024, 20:40
Если будет возможность проверить - напиши, пожалуйста. У меня дома осцилл плохонький, поэтому эту иголку могу не увидеть. Разве что вслепую ставить этот конденсатор, если адаптер не будет работать...
проверил, на коротком шлейфе работает и без конденсатора. и 42 и 43.
Попробовал на "Галаксии", чип не определился. Но, возможно, проблема в длинных проводах (порядка 10-12см, уже были готовые, через них подключал модуль к своему компьютеру на 6502) и/или отсутствии конденсатора. Возможно, собрал SDOS не так, если не затруднит - посмотри, пожалуйста, настройку, файл с сообщением:
куда смотреть? у меня Галаксии нет, и на какие адреса подключен контроллер - я не знаю.
а, увидел - порты CH376 называются DATA_PORT и CMD_PORT, а не SD_DATA_PORT и SD_CONF_PORT
оно при сборке должно было ругнуться
Я правильно понимаю, что, если нужно собрать SDOS для "Специалиста", ничего в настройках менять не нужно, просто собрать то, что в архиве? Сегодня вряд-ли уже успею это всё сделать, из "Экспресса" ещё нужно шину выводить...
как минимум поправить START_ADDR, BUF, CMD_PORT, DATA_PORT. у меня оно сильно нестандартное...
а, увидел - порты CH376 называются DATA_PORT и CMD_PORT, а не SD_DATA_PORT и SD_CONF_PORT
оно при сборке должно было ругнуться
Ага, увидел в файле 376proc.inc. Но при сборке ругани не было.
#ifdef CH376 ;адреса CH376
DATA_PORT EQU 0C800H
CMD_PORT EQU DATA_PORT+1
#endif ;перенести в описание нужного компа
;#ifdef CH376
;SD_DATA_PORT EQU 0C800H
;SD_CONF_PORT EQU SD_DATA_PORT+1
;#endif
Исправил. Пересобрал SDOS для Галаксии, поставил конденсатор на 100пФ. Работает очень нестабильно, каталог так и не удалось вывести, нужно укорачивать шлейф. Но - работает:
81483
После команды DIR завис.
На "Галаксии" использовал более короткий шлейф, длина 9см. Конденсатор не убирал. Использовал другую флэшку. Теперь работает стабильно.
81484 81485 81486 81487
При выводе каталога командой DIR не получается приостановить вывод и, если количество файлов не умещается на экран, их имена просто уходят вверх и скрываются.
Serg6845
29.10.2024, 17:37
На "Галаксии" использовал более короткий шлейф, длина 9см. Конденсатор не убирал. Использовал другую флэшку. Теперь работает стабильно.
ну да, у меня тоже на длинном шлейфе не работало. там разводка неудачная, похоже наводки с соседних проводов. была бы земля через один провод - было бы лучше, но что есть то есть.
При выводе каталога командой DIR не получается приостановить вывод и, если количество файлов не умещается на экран, их имена просто уходят вверх и скрываются.
возможно какие-то особенности подпрограмм ввода с клавиатуры (IsKeyPressed, GETC) о которых я не знаю. а на предыдущих версиях SDOS (с одним из старых контроллеров) - работает?
возможно какие-то особенности подпрограмм ввода с клавиатуры (IsKeyPressed, GETC) о которых я не знаю. а на предыдущих версиях SDOS (с одним из старых контроллеров) - работает?
Не могу сказать, SD-карту, пока что, не смог запустить, причину, пока что, не обнаружил. То ли ошибка при сборке на макетке, то ли собрал SDOS неправильно... Надо выяснять. Я, пока что, приостанавливаю возню с Галаксией и займусь Специалистом. Нужно только собрать SDOS и собрать новую ПЗУ для "Экспресса". Думаю, пока что, подключить вместо второго ВВ55.
- - - Добавлено - - -
ну да, у меня тоже на длинном шлейфе не работало. там разводка неудачная, похоже наводки с соседних проводов. была бы земля через один провод - было бы лучше, но что есть то есть.
Надо сделать свою плату с CH376
У кого на стандартной конфигурации "Специалист-Экспресс" 48к работает SDOS, скажите, с какого адреса ОЗУ располагается буфер?
Serg6845
30.10.2024, 11:21
У кого на стандартной конфигурации "Специалист-Экспресс" 48к работает SDOS, скажите, с какого адреса ОЗУ располагается буфер?
думаю 8800h вполне будет работать. как минимум для попробовать пойдет. разумеется нужно не забывать что в эти адреса грузить что-то с флешки не рекомендуется :)
думаю 8800h вполне будет работать. как минимум для попробовать пойдет. разумеется нужно не забывать что в эти адреса грузить что-то с флешки не рекомендуется :)
Почти совпало :) Я сделал 08900h - на 256 байт ниже переменных Монитора. Подумал, что 256 байт буфера должно хватить.
CityAceE
30.10.2024, 11:32
256 байт буфера должно хватить
А размер сектора разве не 512 байт? Или там буфер не под загрузку сектора используется?
А размер сектора разве не 512 байт? Или там буфер не под загрузку сектора используется?
Нет, все секторно-файловые дела берёт на себя CH376. Вот цитата из ридми:
- требуется гораздо меньше ОЗУ под буферы (36 байт на USB дескриптор и по 64 байта
на командную строку и путь). детально не копал, но похоже количество вводимых символов
не проверяется, так что с длинными путями и ком. строкой надо осторожнее.
Так что 256 байт - это ещё с запасом, если мои подсчёты верны :)
Вот полностью из ридми про CH376:
Только с CH376:
- поддержка полноценной записи файлов, поддержка удаления файлов
- W ИМЯфайла.РАСШИРЕНИЕфайла,А ДРЕСоткуда,СКОЛЬКОбайт - записать в файл
данные из памяти, начиная с указанного адреса в памяти и сколько байт
(пример: W TEST.BIN,0ACD,5FE0 - пишет в файл TEST.BIN из памяти начиная
с адреса 0х0ACD и до адреса 0х0ACD+0х5FE0=0х6AAD).
Все параметры обязательные. Если файла нет - он будет создан, если есть -
сообщение FILE EXISTS и выход (ничего не записывется);
- WO ИМЯфайла.РАСШИРЕНИЕфайла,А ДРЕСоткуда,СКОЛЬКОбайт - аналогично W, но
в случае наличия файла он перезаписывается, длина становится равна СКОЛЬКОбайт;
- WA ИМЯфайла.РАСШИРЕНИЕфайла,А ДРЕСоткуда,СКОЛЬКОбайт - аналогично W, но
в случае наличия файла данные добавляются в конец файла, длина увеличивается на СКОЛЬКОбайт;
- DEL ИМЯфайла.РАСШИРЕНИЕфайла - удаление файла. удаление директорий заблокировано,
потому что контроллер не проверяет наличие файлов внутри директории и удаляет со
всеми потрохами, причем делает это некорректно;
- I [LUN] - запуск повторной инициализации устройства. параметр LUN нужен для работы с
некоторыми картридерами чтобы выбрать нужную карту. теоретически может быть от 0 до F,
пока максимум что мне попалось - 4. если не указан - то 0. макс. значение выводится
при инициализации;
- ? - небольшой встроенный help. можно отключить в defs.inc (жрет место в бинарнике)
- требуется гораздо меньше ОЗУ под буферы (36 байт на USB дескриптор и по 64 байта
на командную строку и путь). детально не копал, но похоже количество вводимых символов
не проверяется, так что с длинными путями и ком. строкой надо осторожнее.
- по железу - контроллер подключается аналогично SD_HWM_PVV - шина данных, /RD, /WR, /CS, A0.
конкретные адреса нужно указать в defs.inc (DATA_PORT, CMD_PORT);
там же надо указать начальный адрес компиляции и адрес буфера.
все это добро со всеми фичами помещается в 2 килобайта. загрузка файлов по ощущениям
в несколько раз быстрее чем с SD_HWM_PVV (это понятно - процессору не нужно перепахивать
директории, FAT и т.п.)
ПЗУ, после сборки, получился чуть меньше 2 килобайт.
CityAceE
30.10.2024, 11:38
Так что 256 байт - это ещё с запасом, если мои подсчёты верны
Можно память заполнить известным значением, поработать в SDOS и потом посмотреть сколько из этих байтов затёрлось.
Serg6845
30.10.2024, 12:16
А размер сектора разве не 512 байт? Или там буфер не под загрузку сектора используется?
буфер на сектор с CH376 не используется. файлы пишутся/читаются прямо по целевым адресам в памяти. буфер там для командной строки и текущего пути, плюс еще пара байт на текущий LUN и еще что-то.
- - - Добавлено - - -
Можно память заполнить известным значением, поработать в SDOS и потом посмотреть сколько из этих байтов затёрлось.
а можно проосто посмотреть в исходник ;)
#ifdef CH376
BUFDIR EQU BUF
CWD EQU BUF+40
LINEBUF EQU CWD+64
M_LUN EQU LINEBUF+64
ENDBUF EQU M_LUN+1
#else
Поставил на шину данных буфер на 74LS245, провода до платы CH376 примерно 8см. Конденсатора нет. Работает стабильно.
https://i.ibb.co/gdNywKP/01.jpg
https://i.ibb.co/3m3W72f/02.jpg
Теперь нужно разобраться с приостановкой и прерыванием вывода каталога и проверить запись. Только клавиатуру PS/2 подключить, а то неудобно на шлейфиках клавиатуру от РК-86 использовать :)
Serg6845
02.11.2024, 11:26
Теперь нужно разобраться с приостановкой и прерыванием вывода каталога и проверить запись. Только клавиатуру PS/2 подключить, а то неудобно на шлейфиках клавиатуру от РК-86 использовать :)
кусок из dos_gal_RUNF.inc:
IfKeyPress:
push H
lxi H,02000h+31 ; test if SPACE is pressed
mov A,M
; push PSW
; pop PSW
pop H
ret
походу там не любая клавиша проверяется, а конкретно пробел.
кусок из dos_gal_RUNF.inc:
походу там не любая клавиша проверяется, а конкретно пробел.
Я нажимал пробел, безрезультатно :(
Serg6845
02.11.2024, 11:57
Я нажимал пробел, безрезультатно :(
надо разбираться где глюк - в IfKeyPress или в GETC
попробуй добавить в dos_rk.asm строчку
C_DIR12:
CALL IfKeyPress ; опрос нажатия кнопок
CPI 0FFH ; приостановка вывода списка файлов если есть нажатие любой кнопки
JZ C_DIR3
jmp C_DIR12
call GETC
cpi dir_exit ;выход
rz
если при нажатии и удержании пробела вывод остановится - проблема в GETC, надо смотреть что там в ПЗУ Галаксии, если нет - проблема в IfKeyPress
если при нажатии и удержании пробела вывод остановится - проблема в GETC, надо смотреть что там в ПЗУ Галаксии, если нет - проблема в IfKeyPress
Видимо, я недостаточно по времени удерживал пробел - стал удерживать дольше и вывод каталога стал останавливаться. В общем, извиняюсь за ложную тревогу. После остановки нажимал ENTER и вывод шёл дальше. Если нажимать пробел, вывод шёл, останавливаясь после каждого файла. Правда, ещё не понял, как прерывать вывод. Когда нажимаю BREAK, вывод останавливается, но выхожу в Бейсик и нужно снова набирать A=USR(&F000).
Ещё непонятная штука с вводом имени файла для запуска. Игра PACMAN_P - проблема с вводом подчерка в имени файла. В Бейсике подчерк вводится нормально, но в SDOS подчерк не вводится. Другие символы вводятся. Конечно, можно переименовать файл, это не проблема. Буду тестить CH376 дальше, попробую запись. Только что сделал PS/2 для Галаксии, не знаю, успею ли сегодня потестить...
kotsergoff
15.11.2024, 13:15
[QUOTE=AlexBel;1205952]Поставил на шину данных буфер на 74LS245, провода до платы CH376 примерно 8см. Конденсатора нет. Работает стабильно.
А если попробовать шлейф со старых АТА дисков? Там как раз через один пин(вернее, провод) земля идет...
А если попробовать шлейф со старых АТА дисков? Там как раз через один пин(вернее, провод) земля идет...
Может и помочь, но, в моём случае, это не имеет смысла. Зачем мне на несколько сантиметров на плате тащить все эти провода, когда нормальная буферизация и укорочение проводов решает проблему...
Serg6845
15.11.2024, 15:15
Видимо, я недостаточно по времени удерживал пробел - стал удерживать дольше и вывод каталога стал останавливаться.
да, кнопки опрашиваются в конце вывода строки по очередному файлу.
Правда, ещё не понял, как прерывать вывод. Когда нажимаю BREAK, вывод останавливается, но выхожу в Бейсик и нужно снова набирать A=USR(&F000).
нужно определить кнопку по которой будет прерывание вывода. строка
dir_exit EQU 1fh ;код кнопки выхода из команды DIR
в defs.inc
Ещё непонятная штука с вводом имени файла для запуска. Игра PACMAN_P - проблема с вводом подчерка в имени файла. В Бейсике подчерк вводится нормально, но в SDOS подчерк не вводится.
что-то мне вспоминается что на Специалисте тоже проблема с подчерками. но детально не разбирался.
kotsergoff
18.11.2024, 18:52
[QUOTE=AlexBel;1205952]Поставил на шину данных буфер на 74LS245, провода до платы CH376 примерно 8см. Конденсатора нет. Работает стабильно.
81572
Так?
- - - Добавлено - - -
Что-то никак не могу разобраться, как правильно(красиво) ответить на сообщение.... :v2_dizzy_facepalm:
Нажмите на изображение для увеличения. Название: Буфер.jpg Просмотров: 6 Размер: 79.4 Кб ID: 81572
Так?
По такой схеме на шину данных будут лезть данные из буфера при любом чтении. /CS буфера нужно посадить выбор адреса (диапазона адресов), чтобы он отдавал на шину данные только тогда, когда это требуется. В остальном - да, так.
kotsergoff
19.11.2024, 16:16
Точно. Что-то этот момент упустил :v2_dizzy_facepalm: Спасибо! Заказал модуль, жду, пока всякую инфу по нему собираю...
kotsergoff
22.11.2024, 18:44
Заинтересовался данным девайсом, заказал, жду. Есть вопросы по SDOSу. Покурил исходники проекта. Вопросы именно по СН376
1. В комментах исходников написано, что каталоги не поддерживаются, но вроде СН376 это умеет
2. SDOS можно запихнуть в ПЗУ(соответсвенно для BUF, BUFDIR, CWD и т.д. надо выделить место в ОЗУ, это понятно, буфера), правильно понял?
Есть проект на 8085, но пока не в железе.. Хочу максимально РК-совместимым сделать, плюс свои плюшки(Одно питание,проц 8085, а-ля ноутбук фактор, монохром ЖК 640х200 точек, пленочная клава тоже своя) Не могу определиться, то ли на макетке 100500 проводов паять(проц, ОЗУ, ПЗУ, порты, диспетчер памяти на ПАЛ), то ли базовую платформу сделать (проц, ОЗУ, ПЗУ, порты, диспетчер памяти на ПАЛ) на ЛУТ, а дальше резать дорожки и подгонять так, как мне надо; у меня клава и дисплей совсем не РК, для них в Мониторе надо писать свой код :-( И как раз понт в написании Монитора для моего девайса, для этого и думаю SDOS использовать (для написания своего Монитора, на РС писать и на свой комп загружать через FLASH)/// Как-то так...
Заинтересовался данным девайсом, заказал, жду. Есть вопросы по SDOSу. Покурил исходники проекта. Вопросы именно по СН376
1. В комментах исходников написано, что каталоги не поддерживаются, но вроде СН376 это умеет
2. SDOS можно запихнуть в ПЗУ(соответсвенно для BUF, BUFDIR, CWD и т.д. надо выделить место в ОЗУ, это понятно, буфера), правильно понял?
Есть проект на 8085, но пока не в железе.. Хочу максимально РК-совместимым сделать, плюс свои плюшки(Одно питание,проц 8085, а-ля ноутбук фактор, монохром ЖК 640х200 точек, пленочная клава тоже своя) Не могу определиться, то ли на макетке 100500 проводов паять(проц, ОЗУ, ПЗУ, порты, диспетчер памяти на ПАЛ), то ли базовую платформу сделать (проц, ОЗУ, ПЗУ, порты, диспетчер памяти на ПАЛ) на ЛУТ, а дальше резать дорожки и подгонять так, как мне надо; у меня клава и дисплей совсем не РК, для них в Мониторе надо писать свой код :-( И как раз понт в написании Монитора для моего девайса, для этого и думаю SDOS использовать (для написания своего Монитора, на РС писать и на свой комп загружать через FLASH)/// Как-то так...
1. В каких комментах написано, что каталоги не поддерживатся? Я, хоть и не проверял, но явно такого не видел. Написано, что удаление директорий заблокировано, но команда CD разве тоже удалена?
2. SDOS в ПЗУ и размещают, располагая в ОЗУ только служебные ячейки. А насчёт реализации самого компьютера - это уже самому решать, зачем нужно чужое мнение?
Serg6845
22.11.2024, 20:40
Заинтересовался данным девайсом, заказал, жду. Есть вопросы по SDOSу. Покурил исходники проекта. Вопросы именно по СН376
1. В комментах исходников написано, что каталоги не поддерживаются, но вроде СН376 это умеет
не поддерживается удаление каталогов - потому что нужно сначала проверить что внутри каталога пусто, CH376 сам этого не делает, а мне было лень, да и размер кода увеличится. ходить по каталогам и читать/писать/удалять в них файлы - можно.
2. SDOS можно запихнуть в ПЗУ(соответсвенно для BUF, BUFDIR, CWD и т.д. надо выделить место в ОЗУ, это понятно, буфера), правильно понял?
да
для написания своего Монитора, на РС писать и на свой комп загружать через FLASH
мой опыт - через флешки не слишком оперативно. я остановился на варианте с последовательным портом и xmodem.
мой опыт - через флешки не слишком оперативно. я остановился на варианте с последовательным портом и xmodem.
Во! В своих поделках использую UART (либо железный, либо программный) и xmodem для записи во Flash. Специально подымаю скорость повыше, для загрузки/выгрузки. Но. С SD мне казалось наоборот, более оперативно. И мобильно. А тут, вдруг...) Или нет?
Serg6845
23.11.2024, 09:24
Во! В своих поделках использую UART (либо железный, либо программный) и xmodem для записи во Flash. Специально подымаю скорость повыше, для загрузки/выгрузки. Но. С SD мне казалось наоборот, более оперативно. И мобильно. А тут, вдруг...) Или нет?
в данном конкретном случае (написать свой монитор) - подразумевается отладка, в случае SD - добавляется цикл записать файл на карту-извлечь-переткнуть-переткнуть обратно на каждой итерации. а итераций в процессе отладки может быть много. в случае xmodem - достаточно один раз соединить компы проводом. если просто запускать готовые файлы - конечно флешка оперативнее.
Кажется, тема ушла в сторону...
А, ну да. Обычно отладку делаешь на "клиенте" и всякие нюансики там и проверяешь, а затем уже всё это учитываешь в исходнике. Согласен. Но SD удобна как для пользователя - не нужно ни о чём думать. Хотя, при небольшом переносе туда-сюда - пофиг.)
kotsergoff
25.11.2024, 17:33
1. В каких комментах написано, что каталоги не поддерживатся? Я, хоть и не проверял, но явно такого не видел. Написано, что удаление директорий заблокировано, но команда CD разве тоже удалена?
81608
Вот эта строка смутила...
- - - Добавлено - - -
мой опыт - через флешки не слишком оперативно. я остановился на варианте с последовательным портом и xmodem.
Да, тут согласен, куча лишних движений... По XMODEM что-то гугл поискал, но походу мы с ним друг друга не поняли... Была мысль (еще до SD) по UART подключиться к компу, а на моей стороне(железо) параллельно ОЗУ повесить приемник (типа на АТ89С51(с х51 контроллерами дружу давно, хоть и не очень близко, как хотелось, тем не менее, выбор пал на него), порты параллельно на ШД и ША), стопорить проц (8085, с переходом его выходов в высокое состояние), загружать в ОЗУ данные, а после передавать управление 8085. Т.е. отключаем ОЗУ от основной схемы, загружаем туда прошивку(в данном случае БИОС) и запускаем основную схему (а-ля ардуино(вот с ней так пока и не подружился, в СИ не силен)), но это опять куча проводов...:v2_dizzy_facepalm:, зато перетыкивание исключаем и можно работать онлайн, оперативно подменивать прошивку. Этакий универсальный загрузчик в ОЗУ(надо только ШД, ША и HOLD использовать, плюс, соответственно, CS, WR) :-) Но что-то таких готовых решений не попалось, и я слегка засомневался. Но тем не менее меня эта идея не покинула, надо все-таки попробовать
[ATTA
Да, тут согласен, куча лишних движений... По XMODEM что-то гугл поискал, но походу мы с ним друг друга не поняли...
Очень много букв... Что либо понять сложно.( Лаконичнее.
kotsergoff
25.11.2024, 17:56
Пытался подробнее свои мысли высказать... Видимо, что-то пошло не так...
Serg6845
25.11.2024, 20:10
Вот эта строка смутила...
а, ну да. CH376 сам не умеет ходить по директориям назад (cd .. - съедает и ошибку не выдает, но остается в текущей директории). если надо на шаг назад - нужно идти в корень и оттуда по одному шагу. оно там ниже как раз реализовано, т.е. в оболочке работает.
параллельно ОЗУ повесить приемник (типа на АТ89С51
как-то очень сложно. загрузчик на целевую железку с приемником и все дела...
как-то очень сложно. загрузчик на целевую железку с приемником и все дела...
Как я понял, человек хочет без ПЗУ, что бы отдельный МК грузил сразу в ОЗУ. Я так делал. Только без hold-а. Процессор тактирую от МК и притормаживаю по надобности, а данные процессору подсовываю с МК. Ну и всё - остальное дело техники. Таким образом, на плате только процессор и ОЗУ 64K. Ну и МК, на котором весь в/в - RTC, UART (2 мегабита/с!) c USB, eeprom, SD.
kotsergoff
16.12.2024, 19:57
Небольшой отчет.
Пришёл девайс СН376(хорошо, два штуки заказал). Моя восьмитка для него пока не готова, тестил по UART. Сначала долго мучил первый девайс, не отвечает, и все! Вспомнил, что по питанию надо на VCC 5вольт сделать. И ву аля! Правда один экземпляр всё-таки по RX-TX ушатал, надеюсь, параллельный порт будет работать. Тестил, как здесь (https://we.easyelectronics.ru/electro-and-pc/pervoe-podklyuchenie-i-ispolzovanie-modulya-na-interfeysnom-chipe-ch376s-chast-1.html), две из трёх флешек заработали! Неопределившуюся флеш пока не форматил(она загрузочная, пока нужна, может, поэтому и не пошла). Доделаю матплату, разведу там разъём под нее, чтоб шлейфа не тянуть, а просто вставить. Попробую, наконец, SDOS :v2_dizzy_punk:
по питанию надо на VCC 5вольт сделать
При питании от 5В нужно сделать питание 3,3В на ноге 9 - в даташите есть примеры. Я запитал микросхему от 5В, а 9 ногу поднял от платы и с местного стабилизатора подал 3,3В.
kotsergoff
16.12.2024, 20:20
На моей плате нога 9 - просто емкость на массу, на VCC перемычки нету. Отпаял стаб на 3,3 вольта, поставил перемычку, на 9 ноге 3,3В(до этого было ~2,4В), на VCC - 5В, RX-TX - 5В без сигнала, на D0-D7 тоже 5В, пока работает...
Вроде по даташиту у МС свой делитель на 9 ногу есть...
На моей плате нога 9 - просто емкость на массу, на VCC перемычки нету. Отпаял стаб на 3,3 вольта, поставил перемычку, на 9 ноге 3,3В(до этого было ~2,4В), на VCC - 5В, RX-TX - 5В без сигнала, на D0-D7 тоже 5В, пока работает...
Вроде по даташиту у МС свой делитель на 9 ногу есть...
Да, и по даташиту там конденсатор. Но решил, для надёжности, подать напряжение извне. Тут уже каждый для себя решает, как делать, я просто рассказал, как сделал сам. Тем более, что стабилизатор уже был на плате.
kotsergoff
16.12.2024, 20:31
На моей плате разведен стаб на VCC, а на 9 ногу - нет, резать неудобно, проще ногу VCC поднять и кинуть МГТФ на 5В, а 9 ногу МГТФ на выход стаба, итого две перемычки дополнительно. Но пока так работает по UART. Подключу параллельный порт, посмотрим...
Можно, пока что, поэкспериментировать с записью.
kotsergoff
16.12.2024, 20:45
В Docklight(я бесплатной версией пользуюсь) не очень удобно с записью эксперементировать, нужен SDOS, ИМХО
В Docklight(я бесплатной версией пользуюсь) не очень удобно с записью эксперементировать, нужен SDOS, ИМХО
Так можно в GCC написать программку. Скачать CodeBlocks вместе с MinGW и использовать. Можно и через Terminal, но там неудобно.
kotsergoff
17.12.2024, 18:49
А зачем? Модуль потестил, работает. Намного приятнее его поюзать в реальном железе, тем более SDOS для него готовый есть..
- - - Добавлено - - -
Пока жду запчасти, плату доразвожу, правда, медленно получается, времени мало на хобби, зима, холода...
Ведущий_специалист
12.02.2025, 16:18
81420
Очередная инкарнация SD-DOS.
наверняка есть баги, но в общем работает.
Откомпилил на пальмиру - прописал порт ch ки.... Долгое время не понимал почему no ch376 found... потом почитал - потыкал команду I... Раза с третьего оно нашлось. Поэтому есть предположение что инит происходит не совсем корректно. Для сравнения запускал свою оболочку командной строки - инит контроллера виден всегда.
- пришлось добавить конденсатор 100пф между CS и землей
Думаю это не поможет - наоборот необходимо в коде добавить задержки или реализовать правильный алгоритм определения контроллера - асм код еще не смотрел, поэтому пока что предположение.
https://i.ibb.co/BHxs7MGm/sdos.png (https://ibb.co/mrwzYW0m)
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot