Page 3 of 3

Re: RS-232 disk mounter

PostPosted: Fri, 18.09.2020 18:31:12
by performer
Слона то я и не заметил! вернее, факта того, что транспорт на запись работает, просто сохранения на диск нет.

Долго думал, как бы сделать так, чтобы записью не запороть подкинутые имеджи, в итоге имеем следующее:

По-умолчанию утилита использует файлы $TMP/rs232mnt-<n>.trd для всех 4 дисков, файлы отображаются в память mmap-ом и запись секторов асинхронно падает на диск.
* Если на параметрах задан путь к файлу с расширением .trd (маленькими буквами), то для чтения и записи будет использован он.
* Если файл пустой или создается при запуске - он будет отформатирован как TRDOS 80x2.
* Если на параметрах указан файл любого другого формата (или .TRD большими буквами) - при запуске он будет сконвертирован в $TMP/rs232mnt-<n>.trd.

Re: RS-232 disk mounter

PostPosted: Fri, 18.09.2020 18:53:37
by TS-Labs
performer wrote:файлы отображаются в память mmap-ом

А почему не просто malloc? Зачем терзать ммап?

Про запись: там была какая то засада в протоколе по сериалу, то ли что-то не допилено, то ли какая-то техническая проблема. Я сейчас сходу не готов за это браться, но при желании разобраться могу рассказать историю впиливания и где валяются недоделки.

Re: RS-232 disk mounter

PostPosted: Fri, 18.09.2020 19:37:29
by performer
Я чот не замечаю, чтоб со стороны TSConf шли операции записи. COPY ничего реально не копирует.. Оно точно реализовано в конфе?

Re: RS-232 disk mounter

PostPosted: Fri, 18.09.2020 19:40:44
by performer
> А почему не просто malloc? Зачем терзать ммап?

А смысл? потом при выходе файл писать? mmap отлично работает на любых системах, да еще учитывая, что операций записи кот наплакал все прозрачно и надежно )
fsync пишет все равно ассинхронно :) хотя, я думаю, пока следующий сектор прилетит, оно уже на диск закомитится

> Про запись: там была какая то засада в протоколе по сериалу, то ли что-то не допилено, то ли какая-то техническая проблема. Я сейчас сходу не готов за это браться, но при желании разобраться могу рассказать историю впиливания и где валяются недоделки.

Я под спеку не писал лет 25... так что слабо представляю... Ну, пусть ждет своего времени. У меня все запилино

Re: RS-232 disk mounter

PostPosted: Fri, 18.09.2020 20:56:00
by TS-Labs
performer wrote:Оно точно реализовано в конфе?

Дело там в драйвере, который - прослойка между виртуальной вг93 и компортом. И там-то и было что-то не доделано. Я при случае гляну.

Re: RS-232 disk mounter

PostPosted: Mon, 21.09.2020 13:26:49
by performer
Чот я по AVR-ным сорцам тут https://github.com/tslabs/zx-evo/tree/m ... vr/current вообще не понял, где ВГ эмулируется

Re: RS-232 disk mounter

PostPosted: Mon, 21.09.2020 13:55:48
by TS-Labs
Эмуляция не в авр, а на з80+фпга.
Схема такая:
1. Для требуемого флопа (A..D) включается 1 в соотв. бит порта FDDVirt.
2. При обращении к любому регу ВГ93 вместо текущей страницы памяти аппаратно включается 255-я во все окна з80.
3. Там находится код (trap), работающий прослойкой между кодом для ВГ93 и драйвером девайса, эмулирущим флоп.
4. В зависимости от типа примонтированного девайса, идет вызов драйвера (SD, компорт и тд).
5. Драйвер девайса возвращает прочитанный сектор, либо записывает переданный сектор.
6. Трап возвращает данные и статус в вызывающий код ВГ93.
Пользовательская программа не знает, что работает не с физической ВГ, кроме конечно отличающихся задержек.

Re: RS-232 disk mounter

PostPosted: Sun, 25.04.2021 05:45:45
by TS-Labs
UPDATE
! Пофиксал противную багу связанную с особенностями работы компорта в виндовсе.

Re: RS-232 disk mounter

PostPosted: Sun, 25.04.2021 11:15:24
by LessNick
TS-Labs wrote:! Пофиксал противную багу


:ura: :vodka: