1

Тема: Микроша: формат дисков

Привет!

Прислали пару трёхдюймовок для съёма данных.
Судя по спектру, там немного странный FM-формат.
Ожидаем, что это будет Микроша.

Странность в том, что помимо двух явных пиков на 4.0 и 8.0 мкс, там есть ещё 3.0 и около 7.1 мкс.
Возможно, эти два пика вносятся предкомпенсацией записи, вот только почему-то они есть
на всех дорожках, а не только во второй половине диска.

Но вопрос вот в чём: вроде как на фотках-схемах микрошевского контроллера флопика фигурирует
вг93. Но вг93 - это же как бы вроде бы mfm-контроллер, fm там только для совместимости ?
На кой его было использовать в fm- режиме в микроше, тем более на 3.25'' -дисках ?
Может кто сделать исторический экскурс в вопрос ?

2 Отредактировано avivanov76 (12-02-2023 14:31)

Re: Микроша: формат дисков

В оригинальном КНГМД "Микроши" не было ВГ93. Это чисто FM контроллер на дискретной логике (в духе "Агата"). Описание тут:
https://ftp.radio.ru/pub/arhiv/1993/01.djvu страница 13
https://ftp.radio.ru/pub/arhiv/1993/02.djvu страница 17

По идее пиков на 3 и 7 мкс там быть не должно, но поскольку в Микроше постоянно работает ПДП и процессор регулярно останавливается, то возможно это и на работе контроллера НГМД сказывается.

Вот еще тема на zx-pk https://zx-pk.ru/threads/9812-mikrosha- … viewfull=1. Человек с ником SEA - это Евгений Седов, разработчик контроллера и ДОС для "Микроши".

3 Отредактировано Voldemar0 (12-02-2023 17:59)

Re: Микроша: формат дисков

Спасибо за ссылки на журналы !
Буду по ним работать.

Я про ВГ93 тут прочитал:
https://webhamster.ru/mytetrashare/inde … glvpoloaf5

Причем тут заявляется совместимость со спектрумом, но там -то вг93 ?

В то же время в Радио пишут, что совместимость с PC только в планах.

Тут синхросимвол не похож на вг93, так что как бы они и не будут совместимы, вроде бы как...

Вообще, то, что в Радио - похоже на агат. И на zx-pk автор как бы и говорит, что знал только форматы агата и от него танцевал в формате файловой системы.
Странно только, что тогда и размер секторов не позаимствовал с агата.

4

Re: Микроша: формат дисков

Voldemar0 пишет:

Причем тут заявляется совместимость со спектрумом, но там -то вг93 ?

Я где-то (вроде бы на zx-pk) видел, что для "Радио-86РК" и "Микроши" был адаптирован контроллер НГМД от "Орион-128".
Вот там была ВГ93. Но это, во-первых, не родной контроллер, а во-вторых там уже MFM формат.

5 Отредактировано Voldemar0 (13-02-2023 21:33)

Re: Микроша: формат дисков

1)
В начале поля данных в этом формате есть поле "размер сектора". Но везде пишется, что размер - 512 байт.

Хотя на практике я чаще наблюдаю цифру 0x200, но в некоторых редких полях - 0x1A4.
Не исключено, что это какая-то бага у меня в декодере, но нет ли варианта, что зачем-то реально такой размер использовался для чего-то?

И если да - то каким образом тогда строится DSK-образ для этой архитектуры ?
Ведь DSK полагается на фиксированный размер секторов и хорошо известные их количество на диске.

2)
После синхрополей, по описанию формата, должны идти нули.
Это, фактически, пауза для того, чтобы софт успел решить, что делать дальше.
Но я пока нахожу там сразу за синхрой несколько случайных байт,
потом уже пять нулей и за ними следом уже пролог (сигнатуру) поля.
Так как сигнатура читается правильно, я предполагаю, что битовая и байтовая синхронизация
верны. Но тогда не ясно откуда берётся этот мусор? Или он там вполне реально существовал и был допустим ?

Внутри секторов видно немало вполне читаемого текста, так что, вероятно, декодер работает правильно...

000106b0  38 20 72 71 7a 61 6e 78  20 62 72 61 74 69 73 6c  |8 rqzanx bratisl|
000106c0  61 77 73 6b 61 71 20 32  37 0d 0a 72 61 64 69 6f  |awskaq 27..radio|
000106d0  74 65 68 6e 69 7e 65 73  6b 69 6a 20 69 6e 73 74  |tehni~eskij inst|
000106e0  69 74 75 74 0d 0a 73 6b  62 20 20 22 44 45 53 49  |itut..skb  "DESI|
000106f0  47 4e 22 0d 0a 28 43 29  20 31 39 38 37 20 42 4f  |GN"..(C) 1987 BO|
00010700  4e 59 0d 0a 0a 4d 65 6e  60 3a 0d 0a 0a 50 20 2d  |NY...Men`:...P -|

Не совсем ясно только насчёт кодировки, там были какие-то игры в семь бит + какой-нибудь переключатель рус/лат как отдельная команда ?

6

Re: Микроша: формат дисков

Насчет переменного сектора: там же в первом номере на странице 15 написано, что сектор может быть занят не полностью. Не знаю, правда, как именно это сделано - запись физически прекращается после указанного числа байт или всё же 512 байт в сектор записываются всегда. И где, в этом случае, находится контрольная сумма.

Количество секторов на треке в описании тоже есть: 5 штук. И емкость диска написана: 400 Кбайт. Так что вроде структура нигде не нарушается.

Вот насчет синхрополей ничего не знаю. Возможно, не только при чтении, но и при записи софт после синхрополя о чем-то думает и контроллер пишет то, что висит на выходе порта А ВВ55.

Может, кто-нибудь на zx-pk об этом что-то знает.

Кодировка там КОИ-7, но у "Микроши" было два набора символов в знакогенераторе. В одном наборе кириллица и латиница, а в другом - только кириллица со строчными и заглавными буквами. Одновременно эти наборы использовать было нельзя.

7 Отредактировано Voldemar0 (14-02-2023 06:27)

Re: Микроша: формат дисков

> Количество секторов на треке в описании тоже есть: 5 штук. И емкость диска написана: 400 Кбайт. Так что вроде структура нигде не нарушается.

Так вот а что делать с короткими секторами ?
Добивать до 512 ?
Но тогда теряется заданный размер сектора (может он важен операционке или ещё чему нибудь?)

Контролька, похоже, просто следует сразу после массива, независимо от его размера. Добивки не видно, вроде.
Видимо, тут пытались немного экономить на спичках, но смысла мало - короткий сектор будет только в конце файла, а место на диске в любом случае занято как под полный сектор.
Может быть это под впечатлением от RWTS Школьницы - у неё тоже есть параметр в вызове - количество читаемых байт. Но это не размер сектора, а буквально - объём данных, который будет при чтении слит в пользовательский буфер. Используется для точного чтения K-файлов (условно, если файл 276 байт, то в пользовательский буфер уйдёт аккуратно 276 байт, а не два сектора).

8

Re: Микроша: формат дисков

Voldemar0 пишет:

Так вот а что делать с короткими секторами ?
Добивать до 512 ?
Но тогда теряется заданный размер сектора (может он важен операционке или ещё чему нибудь?)

Думаю, что добивка нужна. Иначе при попытке перезаписать такой "укороченный" сектор заодно затрется следующий за ним. Раз перед контрольной суммой добивки нет, значит она после контрольной суммы.

Voldemar0 пишет:

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

Мне кажется, тут экономили на буфере чтения. У "Микроши" 32 Кбайт ОЗУ, которое штатно не расширяется. Из него 2,5 Кбайт - экранная область. Так что иметь буфер и для TSL и для прочитанного сектора становится накладно.
Подозреваю, что чтение сектора идет сразу в нужный адрес памяти. Поэтому и размер записан прямо в заголовке.

Кроме того, лишняя операция (перекладывание из буфера в память) создает лишние тормоза. А производительность у "Микроши" по прикидкам меньше, чем у "Агата".

6502 на 1 МГц - это примерно ВМ80 на 2 МГц. У "Микроши" тактовая 1,77 МГц. Кроме того, каждые 10 телевизионных строк (640 мкс) ВГ75 дергает ВТ57. ВТ57 говорит процессору "Стоп!" и начинает перекачивать из ОЗУ в ВГ75 очередную строку дисплея. Это занимает где-то 180 мкс. В итоге, производительность процессора получается раза в полтора меньше, чем у 6502.

9 Отредактировано Voldemar0 (17-02-2023 06:50)

Re: Микроша: формат дисков

Вроде в целом и в частностях разобрался.

Немного дополнительно:

0) Нумерация сторон диска противоположна агатовской: у агата нулевая сторона внизу, первая вверху.
Тут наоборот. Возможно, эта игра связана с тем, что верхняя головка включается низким уровнем сигнала.
Кто-то скрывает эту инверсию в контроллерах, кто-то - нет.

1) Контрольная сумма поля данных считается буквально как сумма всех байт. Но считается только по данным, байты размера и резервный байт не защищаются ей. Контрольная сумма следует сразу за массивом данных, независимо от его размера.

2) Формат .rkdisk - что-то вроде NIB-140. Это поток байт, которым контроллер обменивается с ЦП. Со всеми полями, прологами, контрольными суммами.

Но это любопытно: ведь в этом формате не сохраняется синхросимволы и синхропоследовательности, а - с другой стороны - из-за FM-формата контроллера байты в потоке могут быть любыми (нет ограничения на значения, как в 140ке).

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

Либо эмуляторы, читая .rkdisk, добавляют информацию о синхре на основании какой-то последовательности знакомых байт.

--

P.S. Я не думал о том, что надо бы в цепочку декодеров Мост3 внедрить возможность синтеза NIB/AIM из Eim3. В основном, всё было заточено под синтез старых Eim и Dsk. Надо будет подумать, как бы это ненавязчиво докрутить...