# Просмотрщик образов дискет БК.

## Определяемые форматы.

- MicroDOS - опознаётся по маркеру MicroDOS. Из общего формата распознаются следующие форматы:
  - MKDOS - опознаётся по маркеру MKDOS
  - NORD - опознаётся по дескриптору "NORD"
  - AO-DOS - опознаётся либо по дескриптору "AO-DOS", либо по признакам расширенного формата AO-DOS.
- ANDOS - опознаётся по дескриптору файловой системы "FAT12", либо по дескриптору "ANDOS" и по уникальным значениям параметров BPB, характерным только для ANDOS.
- CSIDOS3 - опознаётся по наличию во 2-м секторе маркеров CSIDOS3
- RT-11 - Опознаётся по наличию в 0-м секторе строки "?BOOT-U-" или "?QUBOOT-U-" потому что, по стандарту, в 0-м секторе должен быть либо загрузчик системы, либо подпрограмма, выводящая на экран сообщение, что загрузка невозможна. Если в 0-м секторе этих строк нет, а встречаются и такие диски RT-11, то они не распознаются. Диски УКНЦ тоже опознаются, при условии, что каталог начинается с 6 сектора, и начальный сегмент каталога - первый, т.к. у них нету идентификатора диска, который находится в первом секторе, предполагается, что это стандарт.
- HC-DOS - опознаётся по началу загрузчика, несистемный диск не опознаётся, т.к. во-первых такого у меня нету, во-вторых я вообще без понятия, как однозначно опознать эту ОС.
- DX-DOS - опознаётся по дескриптору файловой системы "FAT12".

Обрабатываются логические диски MKDOS, NORD и RT-11:

- явно опознаётся логический диск только в MKDOS;
- в RT-11 логические диски опознаются по расширению файла DSK;
- в NORD логические диски опознаются по имени файла <Буква>:.

Вход внутрь логического диска осуществляется так же как и в директорию.

## Работа с программой.

### Открытие образа.

Делается нажатием левой кнопкой мыши на кнопке "Открыть", либо нажатием клавиши "O". Повторное открытие уже открытого образа невозможно, т.к. он уже открыт и недоступен другим программам, даже себе.

### Перемещение по каталогу.

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

Пункт ".." в корневой директории вызывает выход из текущего образа и его выгрузку.

### Извлечение файлов из образа.

Выделяете мышью файл или каталог, можно выделить несколько элементов одновременно, и нажимаете кнопку "Извлечь файлы", либо клавишей "E". Извлекается всё содержимое каталога с подкаталогами, из имён файлов и каталогов удаляются всякие опасные символы, типа : < > ? * / \.

Если установить галочку "Использовать формат .bin", то в начале файла будут сперва записываться 2 слова: адрес загрузки, и длина, причём если файл больше 64к, то старшая часть длины будет потеряна.

Если установить галочку "Создавать лог анализа извлекаемых файлов", то будет создаваться файл "extractlog.txt" с параметрами каждого извлечённого файла: адрес загрузки, размер файла и адрес запуска. Если есть блок автозапуска, то адрес берётся оттуда, причём для CSIDOS, где обычно используется малопонятная система определения адреса запуска файла, у которого адрес загрузки меньше 01000, возможно ошибочное определение адреса запуска. В каждой вложенной директории создаётся свой файл "extractlog.txt".

Специально для CSIDOS. При извлечении файлов к их расширениям добавляется информация о страницах. В следующем виде:
#N0xN1,
где:
# - признак информации о страницах;
N0, N1 - номера страниц в окне 0 и 1 соответственно;
x - режим БК: '-' - БК0010, '!' - БК0011М.

Например: filename.exe#5!7, readme.txt#3-4

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

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

### Просмотр файлов.

Нажав на кнопку "Просмотреть как текст", либо клавишу "V" можно просмотреть выделенные файлы, если выделено несколько файлов - все они выводятся на просмотр по очереди, пока не закрыть блокнот с одним файлом, следующий не получится просмотреть, выделенные среди них каталоги игнорируются. Так же нажатие клавиши "Enter" на текущем файле вызовет его просмотр.

Можно просмотреть файлы в виде спрайта. Для этого необходимо выделить нужны файлы и нажать кнопку "Просмотреть как рисунок" клавишу "S", все выделенные файлы выводятся каждый в своём окошке одновременно. Если выделить 100 файлов, то у вас откроются 100 окошек, надо ли вам это, решать вам.

### Добавление файлов.

В некоторые образы можно добавлять файлы. Добавление работает только для ANDOS, DX-DOS, MKDOS, NORD, AODOS и CSIDOS3 для остальных - не реализовано, для некоторых, типа HC-DOS и RT-11, кажется даже нереализуемо. По нажатию кнопки "Добавить файлы" или клавишу "A" появится диалог выбора файлов, в котором можно выбрать файлы для добавления. Можно одновременно выбрать несколько файлов. Директории не выбираются. Соответственно, рекурсивное добавление директорий вместе с их содержимым пока не реализовано.

Реализовано автоматическое определение формата ".bin" (это когда первые два слова файла - адрес и его длина) причём обоих видов - длинного и короткого, и если формат определён, и если у файла два расширения, (например: .exe.bin, это происходит при извлечении файлов с установленной галочкой "Использовать формат .bin") то .bin автоматически удаляется за ненадобностью.

Специально для CSIDOS. При добавлении файлов ищется информация о страницах в виде #N0xN1, и если обнаруживается, то обрабатывается и удаляется из имени файла.

Если файл с таким именем уже есть в каталоге образа, то он не добавляется.

Примечание. В силу крайней глючности каталогов и хаотичной смены форматов от версии к версии, не удалось сделать надёжную запись файлов в образы NORD и AODOS. Некоторая часть образов этих ОС может портиться.

## Атрибуты файла/каталога.

- x - файл удалён, удалённых каталогов я ещё не встречал.
- B - Bad Block - для MicroDOS и RT-11 так помечаются записи, перекрывающие сбойные секторы.
- D - Директория.
- L - Логический диск. Однозначно опознаётся только в MKDOS. В NORD и RT-11 опознаётся по неочевидным признакам, для опознания не хватает информации по этим ОС.
- P - Защищённый файл (MicroDOS, CSIDOS3, RT-11).
- H - Скрытый файл (AO-DOS).
- T – Временный файл. Только для RT-11, судя по описанию ОС, это не закрытый файл после работы с ним. По сути, свободное место на диске, его можно посмотреть, но в большинстве случаев там хранится мусор.