Сообщение от
alone
Есть теория, а есть программа teledisk и реальный образ, который она сформировала.
Так я и говорю про него.
Сообщение от
alone
Пример несовместимости в студию.
1) Чуть выше написал A. Makeev.
2) ADS 3.0i неверно определяет скорость дисковода.
Сообщение от
alone
Да? только вот почему-то "последняя стабильная версия, которую не испортил AlCo" (её фамилия 0.35b2) замечательным образом выдаёт "error: track buffer overflow" и вываливается. А версия 0.32b8 - "error: track too long" и тоже вываливается.
А где можно найти версии 0.32b3...b8, у меня таких нет?
Сообщение от
alone
Для справки: gallows.td0 (849442 06.10.04). Если есть другой релиз, то жду url.
На этом ясное дело будут выдавать. У SMT не обрабатывается байт флагов в заголовке сектора TD0 файла, поэтому то длины дорожки не хватает.
В Unreal by AlCo вместо проверки заголовков секторов и игнорирования секторов не содержащих данные левые сектора тоже обрабатываюся.
Путь расширения дорожки неправильный, для этого образа надо просто проверять байт флагов в заголовках секторов и лишние сектора пропускать.
Вот заголовок сектора TeleDisk файла:
Код:
// Sector header
typedef struct
{
BYTE bTrack; // Track number in ID field
BYTE bSide; // Side number in ID field
BYTE bSector; // Sector number in ID field
BYTE bSize; // Sector size indicator: (128 << bSize) gives the real size
BYTE bFlags; // Flags detailing special sector conditions
BYTE bCRC; // Low 8-bits of sector header CRC
}
TD0_SECTOR;
Вот значение битов поля bFlags:
Код:
1: This sector number occurred more than once on this track
2: A data CRC error occurred when this sector was read.
4: A deleted data control mark was present for this sector.
16: A DOS sector copy was requested; this sector was not allocated. In this case, no sector data follows this header.
32: This sector's data field is missing; no sector data follows this header
64: No ID address field was present for this sector, but there is a data field.
В GALLOWS.TD0 bFlags=0x40 т.е. 64 из приведённого выше списка находим "No ID address field was present".
Рекомендую посмотреть как обрабатываются заголовки секторов в других эмулях (лучше всего здесь http://www.simcoupe.org/download.html), там сделана довольно сложная проверка проверка после которой некоторые сектора отбрасываются.
Алгоритм чтения дискет в Direct версии TeleDisk'а далеко несовершенен и при нахождении на дискете подозрительных (с т.з. TeleDisk'а) данных весь найденный мусор складвается вот в такие сектора, с соответствующей пометкой в байте флагов.
Лично я просто переконверил этот файл в FDI и выкинул весь мусор, полученный файл открывается во всех версиях Unreal.
Ну что теперь-то будет наконец теперь сделана длина дорожки 6250 байт?
И как насчёт вернуть настройки колеса мыши в GUI?