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

## Возможности.

- Просмотр содержимого образов дискет в различных форматах файловых систем БК-0010/БК-0011(М), как списка файлов, так и самих файлов. В текстовом виде или в графическом, в виде спрайта.
- Добавление файлов в образ, если возможно - даже со структурой каталогов.
- Удаление файлов/каталогов из образа.
- Переименование файлов/каталогов в образе.
- Извлечение файлов из образа, возможно со структурой каталогов.
- При наличии установленного драйвера fdrawcmd, возможен доступ к реальным дискетам в реальном дисководе.

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

- 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 логические диски опознаются по имени файла <Буква>:.

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

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

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

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

Так же можно выбрать нужный образ, вызвав файловый диалог нажатием левой кнопкой мыши на кнопке "F2 ОБРАЗ", либо нажатием клавиши "F2". Это особенно полезно, если нужно сменить рабочую директорию, в которой находятся интересующие образы.

Из выпадающего меню этой кнопки можно выбрать привод дисковода A: или B:. Всё это работает только если дисковод физически подключён, и драйвер fdrawcmd установлен. Если эти условия не соблюдены, то ничего не работает, но меню не исчезает. Оно статическое.

Повторное открытие уже открытого образа невозможно, т.к. он уже открыт и недоступен другим программам, даже себе.

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

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

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

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

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

Если установить галочку "Использовать формат .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

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

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

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

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

Можно просмотреть файлы в виде спрайта. Для этого необходимо выделить нужны файлы и нажать кнопку "F4 ГРАФ.ВИД" или клавишу "F4", все выделенные файлы выводятся каждый в своём окошке одновременно. Если выделить 100 файлов, то у вас откроются 100 окошек, надо ли вам это, решать вам.

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

Во все образы можно добавлять файлы, но в редкоиспользуемых форматах образов (типа HC-DOS) добавление может работать некорректно. Для NORD и AODOS - в связи с их не устоявшимися форматами, в одни образы добавление может работать, а в другие - нет.

По нажатию кнопки "F5 ДОБАВИТЬ" или клавиши "F5" появится диалог выбора файлов и папок, в котором можно выбрать файлы или директории для добавления. Можно одновременно выбрать несколько элементов. Если выбрана директория, то добавляется всё её содержимое, со всеми подкаталогами, так что надо быть осторожным, может очень быстро закончиться свободное место.

Внимание! Не используйте двойной клик мышью, это вызовет запуск файла на исполнение, данная функция не перехвачена и пока непонятно как её перехватить.

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

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

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

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

### Переименование файлов/каталогов.

Для переименования в образе необходимо выделить нужный элемент, и нажать кнопку "F6 ПЕРЕИМ" или клавишу "F6". И в появившемся диалоге отредактировать имя файла/каталога. Если выделено несколько элементов, то диалог будет вызываться для каждого выделенного. Групповое переименование, и переименование по маске не реализовано.

### Удаление файлов/каталогов.

Для удаления из образа необходимо выделить нужный элемент, и нажать кнопку "F8 УДАЛИТЬ" или клавишу "F8". Если выделено несколько элементов, то удаляются все. Если в директории что-то есть, выдаётся запрос на подтверждение удаления директории. Если выделенный файл защищён, то выдаётся запрос на подтверждение удаления такого файла.

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

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