\title/FN ═__ Приложения __________________________________________________─ ©©© ═__ ▄Приложение I. ┬Инструментальное средство Disk Fixer Мало знать, надо и применять. Мало хотеть, надо и делать. И.В.Гете ┬I.1. Описание правил работы Редактор дисков Disk Fixer (автор: Земцов П.А., Новосибирск, НГУ) предназначен для непосредственной ("ручной") работы с внутренней струк╨ турой диска. В первую очередь он является средством восстановления "ис╨ порченных" дискет ( из этого, конечно же, не следует, что редактор не умеет "работать" с "нормальными" дискетами). Редактор может работать с односторонними и двусторонними дискетами, в любой конфигурации дисководов (включая виртуальный диск), на любой машине типа MSX или MSX-2 с видеопроцессором, совместимым с MSX-2. Редактор предоставляет средства для работы как с самой мелкой едини╨ цей информации на диске (┬сектор─), так и с их логической организацией более высокого уровня (┬кластеры─, каталог, FAT, Boot-сектор) и еще более высокого (┬файлы─). \/T0/1 ─┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬│ ┴ Редактор требует от пользователя некоторых знаний ┴ ┴ по структуре дискеты, без этого работа с Disk Fixer ┴ ┴ может оказаться опасной для Вашего диска! ┴ ┌┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┐ \/T1/1- Информация в редакторе организована в ┌буфера─. ┌Буфер─ - это объект, точнее, его внешняя оболочка (некий прозрачный контейнер). Буфер может быть пустым, может заполняться информацией, мо╨ жет увеличиваться и уменьшаться в зависимости от количества этой инфор╨ мации. Максимальное количество буферов равно 10. Каждый буфер имеет номер. ┌Номер─ - это индивидуальный его идентифика╨ тор, он дается ему при создании и никогда не меняется. В момент созда╨ ния буфер пуст. Посередине окна с пустым буфером видна надпись "Empty buffer", и больше там ничего нет. Никакого редактирования над пустым буфером не выполняется. Редактор может находиться в двух режимах: ┌в обычном─ и в режиме ┌ре─╨ ┌дактирования.─ Стандартным режимом является обычный режим. Курсор в нем имеет вид инверсного прямоугольника, выделяющего текущий элемент рабо╨ чей области буфера. \/T0/1 ─┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬│ ┴ Переход в режим редактирования осуществляется ┴ ┴ нажатием клавиши "RETURN", выход из режима редак╨ ┴ ┴ тирования осуществляется нажатием клавиши "ESC". ┴ ┌┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┐ \/T1/1- В обычном режиме редактировать ┌нельзя─, так как работа с FAT, катало╨ гом и т.д. требует от пользователя величайшей осторожности и любые слу╨ чайные изменения здесь нежелательны. В любом месте редактора можно получить подсказку по доступным в этот момент возможностям, нажав клавишу "?". ┌Перечислим управляющие символы в режиме редактора. \/T0/1 ─┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬├┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬│ ┴юКлавиша(и)─┴ юДействие─ ┴ └┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┼┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┘ ┴ "ESC" ┴ ┌Прекращение─ любой команды ┴ ┴ "ЕSC" (F6╤F10) ┴ Покинуть режим ┴ ┴ "F1" ┴ Чтение ┌предыдущего─ блока ┴ ┴ "F2" ┴ Чтение ┌следующего─ блока ┴ └┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┼┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┘ ┴ Клавиши управления ┴ Перемещение курсора по экрану ┴ ┴ курсором ┴ ┴ └┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┼┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┘ ┴ "HOME" ┴ Перемещение курсора к началу страницы ┴ ┴ "CLS" ┴ Перемещение курсора к началу буфера ┴ ┴ "INS" ┴ Вставка нулевого байта ┴ ┴ "DEL" ┴ Уничтожение байта ┴ ┴ "SELECT" ┴ Переход к режиму 40/80 символов ┴ ┴ "J" ┴ Перемещение страницы ┌вверх─ ┴ ┴ "Q" ┴ Перемещение страницы ┌вниз─ ┴ ┴ "CTRL"+"V" ┴ Префикс специального символа ┴ ┴ "CTRL"+"T" ┴ Ввод ┌текста─ ┴ ┌┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┤┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┐ ┌Приведем теперь команды Disk Fixer... ┌(в угловых скобках указывается клавиша, ┌по которой происходит вызов команды) ─┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬├┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬│ ┴ юКоманда─ ┴ юСодержание─ ┴ └┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┼┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┘ ┴ [L] ┴ Переход к байту ┴ └┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┼┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┘ ┴ [I]dent ┴ Идентификатор системы ┴ └┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┼┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┘ ┴ [E]xit ┴ ┌Выход─ из программы Disk Fixer ┴ └┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┼┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┘ ┴ [F]AT ┴ Подсистема FAT FIXER: ┴ ┴ [R]ead ┴ чтение FAT ┴ ┴ [W]rite ┴ запись FAT ┴ ┴ [М]оvе ┴ копирование FAT ┴ ┴ [C]ompare ┴ сравнение FAT ┴ ┴ [A]nalysis ┴ анализ FAT ┴ ┴ "TAB" ┴ запись признака конца файла ($$$) ┴ └┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┼┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┘ ┴ [D]irectory ┴ Подсистема DIRECTORY FIXER: ┴ ┴ [R]ead ┴ чтение Справочника ┴ ┴ [W]rite ┴ запись Справочника ┴ ┴ [K]ill ┴ уничтожить файл ┴ ┴ [U]p ┴ обмен строки с верхней ┴ ┴ [D]own ┴ обмен строки с нижней ┴ ┴ [S]earch ┴ поиск первого вхождения файла в каталог ┴ ┴ [N]ext ┴ поиск очередного вхождения файла в каталог ┴ ┴ [C]lear ┴ очистка каталога ┴ ┴ "TAB" ┴ уничтожение имени файла в Справочнике ┴ └┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┼┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┘ ┴ [R]ead ┴ ┌Чтение─ блока ┴ └┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┼┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┘ ┴ [W]rite ┴ ┌Запись─ блока ┴ └┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┤┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┘ ┴ В командах R и W можно, используя клавиши "Стрелка вверх" и "Стрелка┴ ┴ вниз", вводить номер в единицах, не совпадающих с масштабом ┴ └┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬├┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┘ ┴ [T]ype ┴ Вывод информации в кодах ASCII ┴ └┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┼┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┘ ┴ dri[V]e ┴ Установка имени дисковода. ┴ ┴ ┴ Доступные дисководы изображаются в DSK:XXXXX ┴ ┴ ┴ Текущий дисковод изображается в NOW:X ┴ └┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┼┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┘ ┴ [B]uffer ┴ Выбор буфера: B <Цифра 0╤9> ┴ ┴ ┴ Система имеет 10 буферов объемом 1Кбайт. ┴ ┴ ┴ В основном режиме имеется индикатор: ┴ ┴ ┴ Buffers: <номера непустых буферов> ┴ ┴ ┴ Now : <номер текущего буфера> ┴ └┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┼┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┘ ┴ [S]cale ┴ Устанавливает масштаб редактирования ┴ ┴ ┴ (при этом буфер чистится): ┴ ┴ ┴ [B]lock (128 байт), ┴ ┴ ┴ [S]ector (512 байт), ┴ ┴ ┴ [C]luster (1024 байт). ┴ ┴ ┴ Заметим, что S = 2╧C +10 ; B = 4╧S ┴ └┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┼┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┘ ┴ radi[X] ┴ Устанавливает систему счисления для номеров ┴ ┴ ┴ блоков, секторов, кластеров, входов FAT и ┴ ┴ ┴ байтов: X,H - шестнадцатеричная; ┴ ┴ ┴ D - десятичная. ┴ └┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┼┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┘ ┴ [M]ode ┴ Установка вида отображения информации: ┴ ┴ ┴ М <цифра 1╤4> ┴ ┴ ┴ 1 - смешанный: 8 (16); ┴ ┴ ┴ 2 - числовой : 16(32); ┴ ┴ ┴ 3 - текстовый: 16(32); ┴ ┴ ┴ 4 - плотный : 32(64). ┴ ┌┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┤┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┐ \/T1/1-