User Tag List

Страница 4 из 9 ПерваяПервая 12345678 ... ПоследняяПоследняя
Показано с 31 по 40 из 98

Тема: SD карта и SDOS для 8и битных ПК

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    06.02.2018
    Адрес
    г. Волгоград
    Сообщений
    1,067
    Спасибо Благодарностей отдано 
    585
    Спасибо Благодарностей получено 
    472
    Поблагодарили
    254 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от PVV Посмотреть сообщение
    Полноценную запись файлов интегрированную в SDOS делать не планирую. На текущий момент SDOS минимально самодостаточна.
    Ок, насчёт этого не возражаю.
    У меня была идея добавить поддержку FAT16 в одну из Векторовских операционок, и только для жёсткого диска, возможно даже в виде внешнего модуля-драйвера, т.к. применяемое там разбиение НЖМД на кучу дискеток не очень удобно, но без функций создания и записи новых файлов это будет неполноценная замена... Как вариант, на первом этапе можно на FAT-диске насоздавать необходимое количество файлов "DISKETA001", "DISKETA002" и т.п., и использовать их, как дискеты, но, как я понял, программа записи в SDOS не умеет писать данные в произвольное место файла, только с его начала. Это ведь так? Значит понадобится как-то вычислять их расположение и писать данные на диск напрямую, мимо ФС... Да и такое решение усложнит ДОС, и не облегчит обмен файлами с большими ПК.

    Цитата Сообщение от PVV Посмотреть сообщение
    Для этого в каталоге SYSBIN держим файл TMP.DAT размером, допустим 32КБ. ...
    С этим на Векторе проблем нет -- все существующие для него ОС, кроме одной забытой, требуют наличия электронного квази-диска на 256кб, там можно и хранить дополнительные утилитки, и даже запускать их прямо на нем, подменяя ОЗУ.

    Цитата Сообщение от PVV Посмотреть сообщение
    Начинать эту работу с нуля желания и времени нет, но подключиться в процессе вполне смогу.
    За это спасибо, делать что-то за меня не обязательно, а подсказать и посоветовать -- ценное предложение.

    Не знаю, насколько далеко у меня пойдёт энтузиазм в этом направлении, но могу поделиться исходниками собранной мной на скорую руку первой тестовой программки для проверки работы Вектора с FAT, вот архив с исходниками и откомпилированным бинарником: TESTFAT.7z

    Все обращения к DOS заменены на стандартный вызов через "CALL 5", подпрограммы для обращения к НЖМД использовал из МДОС Т-72, немного их модифицировав. Для экспериментов использовал образ карты SD3.IMG, взятый тут.

    Тестовая программка подключает диск, выводит RKX-файлы корневой директории, переходит в директорию MX, возвращается в корень, читает и пишет в файл "TESTMX.RKX" -- в общем, тестирует работу всех имеющихся функций FAT16.

    И, кстати, я немного поправил подпрограмму чтения файла с FAT -- теперь не надо указывать размер чтения, он выставляется по размеру файла из ФС.
    Последний раз редактировалось Improver; 18.02.2022 в 12:26.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Improver Посмотреть сообщение
    но без функций создания и записи новых файлов это будет неполноценная замена...
    Вот тут еще посмотрите:
    https://github.com/lmaurits/lm512

    Тоже мини-ОС с минимальной поддержкой FAT16. Запись и удаление там есть, нету seek разве что (а было бы нелишне).
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

    Эти 2 пользователя(ей) поблагодарили Error404 за это полезное сообщение:

    Improver(18.02.2022), ivagor(18.02.2022)

  4. #3

    Регистрация
    06.02.2018
    Адрес
    г. Волгоград
    Сообщений
    1,067
    Спасибо Благодарностей отдано 
    585
    Спасибо Благодарностей получено 
    472
    Поблагодарили
    254 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Промежуточная версия FAT16, в архиве откомпилированная версия и исходники (с моими часто неуместными комментариями): TESTFAT1.7z

    Теперь она умеет корректировать размер файла при записи до нуля и в большую сторону в пределах последнего кластера. Т.е., например, при исходном значении размера файла "SHAHMMX.RKX" в 6382 байта в него можно записать данные размером от 0 до 8192 байт, при этом размер файла в файловой системе будет скорректирован по количеству записанного. Данная процедура добавила к общему размеру FAT16 всего 185 байт по отношению к предыдущей версии, и это без особой оптимизации кода.

    Далее нужно научить её дописывать кластеры, как в lm512 по ссылке Error404, и создавать новые файлы -- это как бы план-минимум.
    И ещё, синхронизации первой и второй таблиц FAT пока нет, надо будет добавить и это, скорее всего в функцию сброса ФС.
    Последний раз редактировалось Improver; 02.03.2022 в 09:24.

    Этот пользователь поблагодарил Improver за это полезное сообщение:

    PVV(01.03.2022)

  5. #4

    Регистрация
    06.02.2018
    Адрес
    г. Волгоград
    Сообщений
    1,067
    Спасибо Благодарностей отдано 
    585
    Спасибо Благодарностей получено 
    472
    Поблагодарили
    254 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Доделал в FAT16 запись в файл любого (доступного для 8-бит ПК) объёма данных, с корректировкой размера файла в записи директории и таблице FAT. Архив с тестовой программкой и исходниками: TESTFAT2.7z

    На данный момент FAT16 умеет читать данные в соответствии с размером файла и записывать данные в существующий файл с корректировкой его размера. Далее остались мелочи -- сделать создание и удаление файлов.

    Вопрос есть, немного офтоп, но как можно почекать образ диска? Примонтировать его в линуксе могу, считать/записать файлы, а вот проверку файловой системы не смог запустить -- не понимает его fsck...

  6. #5

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Improver Посмотреть сообщение
    остались мелочи -- сделать создание и удаление файлов.
    Как прогресс с мелочами? Не бросайте! Полезная либа получится. А там глядишь и fat32...
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  7. #6

    Регистрация
    06.02.2018
    Адрес
    г. Волгоград
    Сообщений
    1,067
    Спасибо Благодарностей отдано 
    585
    Спасибо Благодарностей получено 
    472
    Поблагодарили
    254 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Как прогресс с мелочами?
    Отвлёкся немного от FAT в сторону CP/M, в попытке определиться, как всё это туда прикрутить, но там, оказалось, всё сложнее... В свободное время доделаю эти мелочи, не оставлять же на полпути?

  8. #7

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Improver Посмотреть сообщение
    Отвлёкся немного от FAT в сторону CP/M, в попытке определиться, как всё это туда прикрутить, но там, оказалось, всё сложнее... В свободное время доделаю эти мелочи, не оставлять же на полпути?
    Тоже думал на тему скрещивания CPM с FAT. Вариант MSX-DOS не нравится тем что несовместим на уровне BIOS (а точнее разметки файловой системы) и не все ПО поэтому заработает. Пришел к выводу, что удобнее всего на FAT как файлы хранить "сырые" образы дисков CP/M внутри которых CP/M распутает структуры сама, и в ee BIOS как раз и будет "конвертор секторов" для такого доступа:

    Цитата Сообщение от Error404 Посмотреть сообщение
    В TODO: крайне полезной была бы дополнительная функция получения в массив всех кластеров файла. Думаю что кластеров хотя секторов было бы удобнее (но их слишком много - слишком большой массив в памяти). Для чего это нужно: очень частый способ применения мини-FAT - хранение на ней образов дисков (SCL, ODI, KDI и подобных) и "монтирование" этих дисков в локальной BIOS стародавних ОС с этих ОС минимальной правкой. А для этого надо последовательно и произвольно ходить direct к секторам "образа диска" лежащего на FAT, желательно быстро - по этому самому массиву секторов/кластеров (мимо распутывания структур FAT).
    Конечно, в такой образ CPM-файлы надо импортировать, а не просто прямо читать с FAT. Но и образов можно иметь много, и кидать их на флешку "как есть" (многое распространяется прямо в виде образов дисков)
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  9. #8

    Регистрация
    06.02.2018
    Адрес
    г. Волгоград
    Сообщений
    1,067
    Спасибо Благодарностей отдано 
    585
    Спасибо Благодарностей получено 
    472
    Поблагодарили
    254 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    удобнее всего на FAT как файлы хранить "сырые" образы дисков CP/M внутри которых CP/M распутает структуры сама, и в ee BIOS как раз и будет "конвертор секторов" для такого доступа
    Да, тоже думаю, что такой вариант будет проще прикрутить к СР/М. Но тут может потребоваться ещё одна функция для драйвера FAT: произвольное чтение и запись в файл. Сейчас пока этого нет, файлы либо читаются, либо пишутся из памяти целиком.

    Цитата Сообщение от Error404 Посмотреть сообщение
    Но и образов можно иметь много, и кидать их на флешку "как есть" (многое распространяется прямо в виде образов дисков)
    Достаточно сложная задача получится, если учесть, что для этого нужно будет адресацию СР/М вида "трек / сектор(128байт)" переводить в кластеры, потом в физические секторы диска и читать/писать их по 512 байт через буфер. Но можно её существенно упростить, если не кидать файлы "как есть", а обеспечить их расположение в непрерывных областях, т.е. полное отсутствие фрагментации этих файлов, а также фиксированный размер образов. В этом случае будет достаточно знать первый сектор файла-образа на диске и читать/писать туда имеющимися уже в BIOS средствами. По сути, существующая реализация FAT уже имеет все функции для этого.
    Последний раз редактировалось Improver; 02.06.2022 в 16:48.

  10. #9

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В TODO: крайне полезной была бы дополнительная функция получения в массив всех кластеров файла. Думаю что кластеров хотя секторов было бы удобнее (но их слишком много - слишком большой массив в памяти). Для чего это нужно: очень частый способ применения мини-FAT - хранение на ней образов дисков (SCL, ODI, KDI и подобных) и "монтирование" этих дисков в локальной BIOS стародавних ОС с этих ОС минимальной правкой. А для этого надо последовательно и произвольно ходить direct к секторам "образа диска" лежащего на FAT, желательно быстро - по этому самому массиву секторов/кластеров (мимо распутывания структур FAT).
    Последний раз редактировалось Error404; 05.03.2022 в 10:58.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  11. #10

    Регистрация
    06.02.2018
    Адрес
    г. Волгоград
    Сообщений
    1,067
    Спасибо Благодарностей отдано 
    585
    Спасибо Благодарностей получено 
    472
    Поблагодарили
    254 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    В TODO: крайне полезной была бы дополнительная функция получения в массив всех кластеров файла.
    Ничего сложного, как пример:
    Код:
    	LXI D,RFILE	; ссылка на строку с именем файла (оканчивается нулём)
    	CALL	F_OPEN	; открываем этот файл
    	JC	NOFILE	; не открылось...
    	LHLD BNEXT	; читаем номер текущего кластера файла
    LOOP:	PUSH H		; сохраняем в стек
    	CALL	FAT_N16	; найти следующий кластер
    	JNZ	LOOP	; повторять до последнего кластера
    	...		; в стеке список кластеров, далее делаем с ними то, что необходимо
    NOFILE:	...		; тут, например, вывод ошибки "файл не найден"
    Можно это всё загнать в отдельную функцию, если надо...

    Этот пользователь поблагодарил Improver за это полезное сообщение:

    Error404(05.03.2022)

Страница 4 из 9 ПерваяПервая 12345678 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. SD карта для ZX-Spectrum
    от PVV в разделе Разный софт
    Ответов: 21
    Последнее: 25.11.2018, 23:48
  2. Ответов: 1
    Последнее: 14.09.2018, 20:59
  3. Видео карта для спека.
    от Руслан в разделе Изображение
    Ответов: 17
    Последнее: 30.08.2013, 01:29
  4. 2D видео-ускоритель для 8-битных компов, ценй 53$
    от Valen в разделе Зарубежные компьютеры
    Ответов: 4
    Последнее: 08.08.2012, 16:03
  5. Ответов: 3
    Последнее: 09.05.2011, 12:19

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •