спасибо. я пока нашел только ecma-125. а вот iso только платные. может у тебя есть ссылка. я пока почитаю то, что нашел. но а ты сам разобрался как gap вычисляют. я смотрел формат дорожки их три iso и еще два. и во всех документациях gap называется по разному. у одних gpl1 и gpl2 у других gap3 и gap3f. но в описании формате дорожки они все уже имеют стандартную длинны.
> я пока нашел только ecma-125. а вот iso только платные. может у тебя есть ссылка. я пока почитаю то, что нашел. это одно и тоже
baldr почему ты пишешь что на дорожке 12500байт если в ecma написано что 9216 там вообще все значения написаны для 80 дорожек и 18 секторов на них. а как паресчитать нету или а не понял
скачал еще ecma-100 та може самое только про 9 секторов на трек. эти доки не про физический формат дискеты а про конкретный тип формата.
скачал ecma-99 там уже есть gap для секторов в 256 512 и 1024 байта. на откуда они их берут опять же не написано. и я не вижу зависимости между gap для разных размеров сектора. я бы не мучился и взял таблицу их linux но там только для 512. еслибы я знал зависимость лдя разного размера сектора и разного количества секторов на треке, то и плясал бы от таблицы. но я не понимаю откуда они берут именно такие значения.
нашел интересную литературу http://www.studfiles.ru/dir/cat32/subj1166/file11308/view123921/page7.html
помогите пожалуйста, разобраться. очень очень надо. я разбираю исходник linux floppy.c. и не могу понять. там в таблице gap для форматирования равен 0, а чтения 0x1c. но откуда они берут 1с если при форматировании 0? и еще что делает этот код: /* determine interleave */ il = 1; if (_floppy->fmt_gap < 0x22) il++; /* initialize field */ for (count = 0; count < F_SECT_PER_TRACK; ++count) { here[count].track = format_req.track; here[count].head = format_req.head; here[count].sect = 0; here[count].size = F_SIZECODE; } /* place logical sectors */ for (count = 1; count <= F_SECT_PER_TRACK; ++count) { here[n].sect = count; n = (n + il) % F_SECT_PER_TRACK; if (here[n].sect) { /* sector busy, find next free sector */ ++n; if (n >= F_SECT_PER_TRACK) { n -= F_SECT_PER_TRACK; while (here[n].sect) ++n; } } } посмотрите полный исходник в linux
abcd008 Спецификацию лень глядеть, а наизусть не помню. Но, может, просто не тот формат дорожки смотрите? Флопы использовали разные методы кодирования, посему и форматы были разные, ну а контроллеры для совместимости вынуждены были поддерживать и то, и другое (во всяком случае, древние контроллеры; более-менее современные, надо полагать, поддерживают лишь то, что нужно для обычных ПКшных флопов).
в последней спецификации контроллера fdc у intel описаны два формата дорожки. но на практике используется только один. я просто понять не могу откуда берется gap если при форматировании он 0. может конечно контроллер использует стандартный gap(помоему 22 байта) и ему его хватает?
и как вообще linux форматирует диск на 24 сектора на дорожку. если по документации на дорожку влазит 12500 байт, а 24*(512+поля сектора)=13776. что намного больше.