По инициативе HardWareManа открываю новую тему по форматам файлов для Специалиста (МХ). Перечисляю расширения файлов используемых для хранения данных на Специалистах:
1.
rom и
bin. Обычные дампы памяти. В них содержится копия памяти компьютера. Обычно применяется для прошивки ПЗУ. Никаких дискрипторов в файлах нет.
2.
rks.
Сначало идёт дескриптор:
2 байта адрес загрузки программы, он же начальный;
2 байта конечный адрес программы;
Потом идёт сам дамп памяти.
В конце два байта - контрольная сумма дампа памяти.
Адрес и размер в дискрипторе в нотации i8080, т. е. младший байт первым.
3.
i80,
cpu. файлы-программы для эмулятора spmx4 Александра Шевцова. Все файлы-программы состоят из двух файлов с одинаковыми именами, но разными расширениями. Файлы с расширением i80 - представляют собой собственно сами программы, т.е. набор двоичных кодов микропроцессора i8080(К580ВМ80). Файлы с расширением - cpu являются сопроводителями файлов i80, они указывают эмулятору куда загружать файл-программу и с какого адреса ее запускать. Сопроводительный файл представляет собой обычный текстовый файл. Все записи в этом текстовом файле нужно делать с первой позиции курсора. В первую строку текста записывается шестнадцатеричный адрес загрузки файла i80 в эмулятор(4 символа), во вторую строку записывается шестнадцатеричный адрес старта файла i80 (тоже 4 символа) и, наконец, в третью строку записывается полное имя файла-монитора, с которым работает данная программа i80 (если имя монитора не указано, то это означает, что файл i80 может исполняться с любым монитором).
4.
odi. файл-образ дискеты от ПК "Специалист_МХ". Эти файлы представляют собой образы дискет 3.5" и 5.25" - 80 дорожек/2 стороны/5 секторов объемом 1024 байта на одну дорожку с одной стороны, т.е. это образы стандартных для "Специалиста_МХ" MX_DOS и CP/M дискет. Опознать диск можно по стрингу "Dos_MX V3.6", который находится по смещению 5, в первом секторе нулевой дорожки.
Файл-образ дискеты формируется так: 5 секторов нижней стороны дорожки дискеты, следом 5 секторов верхней стороны дорожки дискеты и т.д. В итоге понятие стороны дорожки исчезает. Получается разбивка образа диска: 80 дорожек, 10 секторов, по 1024 байта каждый. Шаг сектора 0400h. Шаг дорожки 1400h. Общий размер файла 819200 байтов.
Структура диска:
0000-27FFh - 10 секторов нулевой дорожки отведены под MX_DOS.
2800-2FFFh - 2 сетора первой дорожки отведены под FAT. В том числе:
2800-29AFh - файловая таблица выводимая MX_DOS на экран.
29B0-2FFFh - таблица FAT.
3000-33FFh - сектор корневого каталога (если сектор не дефектный, иначе любой другой свободный).
3400... - поле секторов пользователя.
Структура FAT:
Представляет собой план секторов диска. Шаг ячейки сектора 2 байта. Общий размер таблицы 1600 байт. Первые системные ячейки MX_DOS и FAT обозначены кодом 53h("S"). Незанятые сектора обозначены в ячейке байтами 00h 00h. Каталоги помечены в ячейке байтами EBh 00h.
Структура заголовка файла/каталога подобна структуре заголовка на RAM и ROM дисках:
Чтение файлов производится в следующей последовательности:
Из заголовка файла берется адрес первого сектора. По нему определяется адрес сектора на диске - (10 * (номер дорожки) + (номер сектора)) * (шаг сектора). С этого адреса сектор считывается. Далее по тому же адресу сектора определяется адрес его ячейки в FATе. Формула та же. Только вместо шага сектора используется шаг ячейки. В поле ячейки этого сектора берется адрес следующего сектора и т.д. Прерывается цепочка при встрече в поле ячейки байтов AAh 00h. Размер последнего прочитанного сектора уточняется по конечному адресу файла.