Как прогресс с мелочами? Не бросайте! Полезная либа получится. А там глядишь и fat32...
Вид для печати
Тоже думал на тему скрещивания CPM с FAT. Вариант MSX-DOS не нравится тем что несовместим на уровне BIOS (а точнее разметки файловой системы) и не все ПО поэтому заработает. Пришел к выводу, что удобнее всего на FAT как файлы хранить "сырые" образы дисков CP/M внутри которых CP/M распутает структуры сама, и в ee BIOS как раз и будет "конвертор секторов" для такого доступа:
Конечно, в такой образ CPM-файлы надо импортировать, а не просто прямо читать с FAT. Но и образов можно иметь много, и кидать их на флешку "как есть" (многое распространяется прямо в виде образов дисков)
Да, тоже думаю, что такой вариант будет проще прикрутить к СР/М. Но тут может потребоваться ещё одна функция для драйвера FAT: произвольное чтение и запись в файл. Сейчас пока этого нет, файлы либо читаются, либо пишутся из памяти целиком.
Достаточно сложная задача получится, если учесть, что для этого нужно будет адресацию СР/М вида "трек / сектор(128байт)" переводить в кластеры, потом в физические секторы диска и читать/писать их по 512 байт через буфер. Но можно её существенно упростить, если не кидать файлы "как есть", а обеспечить их расположение в непрерывных областях, т.е. полное отсутствие фрагментации этих файлов, а также фиксированный размер образов. В этом случае будет достаточно знать первый сектор файла-образа на диске и читать/писать туда имеющимися уже в BIOS средствами. По сути, существующая реализация FAT уже имеет все функции для этого.
SD_msx я на реале не проверял, только в emu, но изначально код b2m был реализован для работы именно с этим интерфейсом и он использовался на реале в плис.
архив не доступен,
если у кого нибудь есть поделитесь пожалуйста
- - - Добавлено - - -
SD_msx я на реале не проверял, только в emu, но изначально код b2m был реализован для работы именно с этим интерфейсом и он использовался на реале в плис.
архив не доступен,
если у кого нибудь есть поделитесь пожалуйста
Есть может прошивка с файловым менеджером вшитым, что бы удобней было игры загружать? В крайнем случае под is dos ??
Добрый день, дорогие товарищи!
Скажите, пожалуйста, у вас работают, заявленные в первом сообщении, директивы L и S, для Специалиста? У меня, и на то, и на другое, "NO FILE(S)". Версия SDOS 8.9N.
Вашему вниманию предлагается
Вложение 81420
Очередная инкарнация SD-DOS.
Добавлено - поддержка контроллера CH376 (wch.cn)
Что это дает -
- USB host - можно подключать флешки, картридеры, харды и т.п.
- поддержка FAT12/16/32
- поддержка полноценной записи и удаления файлов
ну и еще кое-что поменял, подробности в Readme.txt
наверняка есть баги, но в общем работает.
я использовал плату по виду как здесь:
http://we.easyelectronics.ru/electro...s-chast-1.html
поскольку в основном продаются такие же - несколько комментариев для тех кто захочет повторить:
- подключаться к плате шлейфом - плохая идея. на 15-сантиметровом шлейфе контроллер безбожно глючил, пришлось укоротить до минимума (~3см)
- пришлось добавить конденсатор 100пф между CS и землей
- на плате некорректно разведено питание - для 5В интерфейса нужно соединить у стабилизатора (микросхема рядом с USB разъемом) вход с выходом, убедившись что ноги 9 и 28 CH376 не соединены между собой
СН376 без этого конденсатора не успевает реагировать?
Какая ревизия чипа использовалась? Я читал в отзывах на Али, что на многих модулях ставится чип со старой прошивкой 0x41, а новая - 0x45. Вроде бы, со старой прошивкой проблемы с FAT при записи.
На шлейфе 15см глючил только адаптер или начинал глючить весь компьютер?
Сегодня, если успею, опробую на "Галаксии", только SDOS под неё соберу. Может, и на "Специалист-Экспресс" опробую, если найду, где что в ПЗУ лежит, я переделывал немного схему выбора...
нет, со схемы выборки прилетала иголка, чип на нее реагировал. хотя это было еще с длинным шлейфом, надо будет попробовать отпаять...
0х42 и 0х43Цитата:
Какая ревизия чипа использовалась? Я читал в отзывах на Али, что на многих модулях ставится чип со старой прошивкой 0x41, а новая - 0x45.
вопрос насколько старой. с 42 ревизией вроде явных проблем не было.Цитата:
Вроде бы, со старой прошивкой проблемы с FAT при записи.
только адаптер. на нем питание разведено не слишком удачно, возможно еще и в этом дело.Цитата:
На шлейфе 15см глючил только адаптер или начинал глючить весь компьютер?
Если будет возможность проверить - напиши, пожалуйста. У меня дома осцилл плохонький, поэтому эту иголку могу не увидеть. Разве что вслепую ставить этот конденсатор, если адаптер не будет работать...
Проверил, у меня ревизия 43, должно быть нормально.
Попробовал на "Галаксии", чип не определился. Но, возможно, проблема в длинных проводах (порядка 10-12см, уже были готовые, через них подключал модуль к своему компьютеру на 6502) и/или отсутствии конденсатора. Возможно, собрал SDOS не так, если не затруднит - посмотри, пожалуйста, настройку, файл с сообщением:
Вложение 81471
К "Специалисту" ещё не подключал, нужно спаять новый шлейф для подключения, покороче, 3см, и сделать новое ПЗУ для "Экспресса". Я правильно понимаю, что, если нужно собрать SDOS для "Специалиста", ничего в настройках менять не нужно, просто собрать то, что в архиве? Сегодня вряд-ли уже успею это всё сделать, из "Экспресса" ещё нужно шину выводить...
проверил, на коротком шлейфе работает и без конденсатора. и 42 и 43.
куда смотреть? у меня Галаксии нет, и на какие адреса подключен контроллер - я не знаю.Цитата:
Попробовал на "Галаксии", чип не определился. Но, возможно, проблема в длинных проводах (порядка 10-12см, уже были готовые, через них подключал модуль к своему компьютеру на 6502) и/или отсутствии конденсатора. Возможно, собрал SDOS не так, если не затруднит - посмотри, пожалуйста, настройку, файл с сообщением:
а, увидел - порты CH376 называются DATA_PORT и CMD_PORT, а не SD_DATA_PORT и SD_CONF_PORT
оно при сборке должно было ругнуться
как минимум поправить START_ADDR, BUF, CMD_PORT, DATA_PORT. у меня оно сильно нестандартное...Цитата:
Я правильно понимаю, что, если нужно собрать SDOS для "Специалиста", ничего в настройках менять не нужно, просто собрать то, что в архиве? Сегодня вряд-ли уже успею это всё сделать, из "Экспресса" ещё нужно шину выводить...
Ага, увидел в файле 376proc.inc. Но при сборке ругани не было.
Исправил. Пересобрал SDOS для Галаксии, поставил конденсатор на 100пФ. Работает очень нестабильно, каталог так и не удалось вывести, нужно укорачивать шлейф. Но - работает:Код:#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
Вложение 81483
После команды DIR завис.
На "Галаксии" использовал более короткий шлейф, длина 9см. Конденсатор не убирал. Использовал другую флэшку. Теперь работает стабильно.
Вложение 81484 Вложение 81485 Вложение 81486 Вложение 81487
При выводе каталога командой DIR не получается приостановить вывод и, если количество файлов не умещается на экран, их имена просто уходят вверх и скрываются.
ну да, у меня тоже на длинном шлейфе не работало. там разводка неудачная, похоже наводки с соседних проводов. была бы земля через один провод - было бы лучше, но что есть то есть.
возможно какие-то особенности подпрограмм ввода с клавиатуры (IsKeyPressed, GETC) о которых я не знаю. а на предыдущих версиях SDOS (с одним из старых контроллеров) - работает?Цитата:
При выводе каталога командой DIR не получается приостановить вывод и, если количество файлов не умещается на экран, их имена просто уходят вверх и скрываются.
Не могу сказать, SD-карту, пока что, не смог запустить, причину, пока что, не обнаружил. То ли ошибка при сборке на макетке, то ли собрал SDOS неправильно... Надо выяснять. Я, пока что, приостанавливаю возню с Галаксией и займусь Специалистом. Нужно только собрать SDOS и собрать новую ПЗУ для "Экспресса". Думаю, пока что, подключить вместо второго ВВ55.
- - - Добавлено - - -
Надо сделать свою плату с CH376
У кого на стандартной конфигурации "Специалист-Экспресс" 48к работает SDOS, скажите, с какого адреса ОЗУ располагается буфер?
Нет, все секторно-файловые дела берёт на себя 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 килобайт.
буфер на сектор с CH376 не используется. файлы пишутся/читаются прямо по целевым адресам в памяти. буфер там для командной строки и текущего пути, плюс еще пара байт на текущий LUN и еще что-то.
- - - Добавлено - - -
а можно проосто посмотреть в исходник ;)
Код:#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 использовать :)
надо разбираться где глюк - в IfKeyPress или в GETC
попробуй добавить в dos_rk.asm строчку
если при нажатии и удержании пробела вывод остановится - проблема в GETC, надо смотреть что там в ПЗУ Галаксии, если нет - проблема в IfKeyPressКод:C_DIR12:
CALL IfKeyPress ; опрос нажатия кнопок
CPI 0FFH ; приостановка вывода списка файлов если есть нажатие любой кнопки
JZ C_DIR3
jmp C_DIR12
call GETC
cpi dir_exit ;выход
rz
Видимо, я недостаточно по времени удерживал пробел - стал удерживать дольше и вывод каталога стал останавливаться. В общем, извиняюсь за ложную тревогу. После остановки нажимал ENTER и вывод шёл дальше. Если нажимать пробел, вывод шёл, останавливаясь после каждого файла. Правда, ещё не понял, как прерывать вывод. Когда нажимаю BREAK, вывод останавливается, но выхожу в Бейсик и нужно снова набирать A=USR(&F000).
Ещё непонятная штука с вводом имени файла для запуска. Игра PACMAN_P - проблема с вводом подчерка в имени файла. В Бейсике подчерк вводится нормально, но в SDOS подчерк не вводится. Другие символы вводятся. Конечно, можно переименовать файл, это не проблема. Буду тестить CH376 дальше, попробую запись. Только что сделал PS/2 для Галаксии, не знаю, успею ли сегодня потестить...
[QUOTE=AlexBel;1205952]Поставил на шину данных буфер на 74LS245, провода до платы CH376 примерно 8см. Конденсатора нет. Работает стабильно.
А если попробовать шлейф со старых АТА дисков? Там как раз через один пин(вернее, провод) земля идет...
да, кнопки опрашиваются в конце вывода строки по очередному файлу.
нужно определить кнопку по которой будет прерывание вывода. строкаЦитата:
Правда, ещё не понял, как прерывать вывод. Когда нажимаю BREAK, вывод останавливается, но выхожу в Бейсик и нужно снова набирать A=USR(&F000).
dir_exit EQU 1fh ;код кнопки выхода из команды DIR
в defs.inc
что-то мне вспоминается что на Специалисте тоже проблема с подчерками. но детально не разбирался.Цитата:
Ещё непонятная штука с вводом имени файла для запуска. Игра PACMAN_P - проблема с вводом подчерка в имени файла. В Бейсике подчерк вводится нормально, но в SDOS подчерк не вводится.
[QUOTE=AlexBel;1205952]Поставил на шину данных буфер на 74LS245, провода до платы CH376 примерно 8см. Конденсатора нет. Работает стабильно.
Вложение 81572
Так?
- - - Добавлено - - -
Что-то никак не могу разобраться, как правильно(красиво) ответить на сообщение.... :v2_dizzy_facepalm:
Точно. Что-то этот момент упустил :v2_dizzy_facepalm: Спасибо! Заказал модуль, жду, пока всякую инфу по нему собираю...
Заинтересовался данным девайсом, заказал, жду. Есть вопросы по SDOSу. Покурил исходники проекта. Вопросы именно по СН376
1. В комментах исходников написано, что каталоги не поддерживаются, но вроде СН376 это умеет
2. SDOS можно запихнуть в ПЗУ(соответсвенно для BUF, BUFDIR, CWD и т.д. надо выделить место в ОЗУ, это понятно, буфера), правильно понял?
Есть проект на 8085, но пока не в железе.. Хочу максимально РК-совместимым сделать, плюс свои плюшки(Одно питание,проц 8085, а-ля ноутбук фактор, монохром ЖК 640х200 точек, пленочная клава тоже своя) Не могу определиться, то ли на макетке 100500 проводов паять(проц, ОЗУ, ПЗУ, порты, диспетчер памяти на ПАЛ), то ли базовую платформу сделать (проц, ОЗУ, ПЗУ, порты, диспетчер памяти на ПАЛ) на ЛУТ, а дальше резать дорожки и подгонять так, как мне надо; у меня клава и дисплей совсем не РК, для них в Мониторе надо писать свой код :-( И как раз понт в написании Монитора для моего девайса, для этого и думаю SDOS использовать (для написания своего Монитора, на РС писать и на свой комп загружать через FLASH)/// Как-то так...
1. В каких комментах написано, что каталоги не поддерживатся? Я, хоть и не проверял, но явно такого не видел. Написано, что удаление директорий заблокировано, но команда CD разве тоже удалена?
2. SDOS в ПЗУ и размещают, располагая в ОЗУ только служебные ячейки. А насчёт реализации самого компьютера - это уже самому решать, зачем нужно чужое мнение?
не поддерживается удаление каталогов - потому что нужно сначала проверить что внутри каталога пусто, CH376 сам этого не делает, а мне было лень, да и размер кода увеличится. ходить по каталогам и читать/писать/удалять в них файлы - можно.
даЦитата:
2. SDOS можно запихнуть в ПЗУ(соответсвенно для BUF, BUFDIR, CWD и т.д. надо выделить место в ОЗУ, это понятно, буфера), правильно понял?
мой опыт - через флешки не слишком оперативно. я остановился на варианте с последовательным портом и xmodem.Цитата:
для написания своего Монитора, на РС писать и на свой комп загружать через FLASH