Я получил образы дискет (оригинальные загрузочные диски DOS 6.22 и FreeDOS 1.44 МБ), созданные с помощью команды * nix dd
которые отлично работают при использовании в виртуальной среде.
Теперь я хочу понять структуру этих файлов.
Насколько я знаю, дискета объемом 1,44 МБ имеет 80 дорожек, каждая дорожка имеет 18 секторов, а каждый сектор состоит из 512 байтов. Умножая это, я получаю около 0,7 МБ, что точно соответствует размеру одной из двух сторон.
Положение дорожки 0 сектора 2, головки 2, равно 9728 (или 0x2600) - это первый сектор, который загрузчик DOS 6.22 извлекает с диска. Но как это рассчитывается?
Как мне добраться до этих значений? Я использовал эмулятор, чтобы пройти через загрузчик. Первый доступ к дискете осуществляется путем вызова прерывания 013h с AH = 2 (чтение с дискеты), AL = 1 (чтение одного сектора), CH = 0 (чтение с дорожки 0), CL = 2 (чтение из сектора 2) и DH = 1 (используйте головку 1 = используйте вторую сторону). Этот вызов заставляет эмулятор загружать байты, начиная с позиции 9728.
Каждое значение регистра, кроме номера сектора (которое основано на 1), основано на 0.
Заранее спасибо!