Андрій Юсупов p>
"ДОДАТКОВІ Дискові утиліти" p>
ЧОМУ І НАВІЩО? p>
Багато хто може запитати: «Навіщо ще потрібні якісь там дискові утиліти,коли на світі їх існує і так вже чимало, і до того ж є дуже навітьпотужні? » p>
Так, все це так. Однак, коли вирішені глобальні проблеми, можнаподумати і про дрібні зручності (зрештою, все наше життя складається зних). Незважаючи на те, що такі потужні програмні пакети як Norton
Utilites або PC Tools містять безліч різних корисних утиліт, все ж такибувають випадки, коли їх використання для вирішення якої-небудь проблемибуває незручним або непрактичним: доводиться або пройти через величезнекількість меню, або набивати довгий список ключів у командному рядку, ітому втрачати купу дорогоцінного часу. Часу, яке могло б бутизбережене, якби ви використовували інші менш загальні утиліти. Не вартозабивати цвяхи мікроскопом, навіть якщо цей мікроскоп дуже хороший! p>
До того ж бувають такі ситуації, які просто не передбачені вцих потужних програмних пакетах з-за того, що, або при їх створенніавтори про це просто не подумали, або вважають, що ці ситуації рідкозустрічаються. Але ж рано чи пізно, але це трапляється, і горе томукористувачеві, який не вміє користуватися утилітами, подібними DiskEdit'уз NU! p>
Адже навіть обізнана людина витрачає на ці ситуації просто багато часу,не кажучи вже про інших людей, не настільки добре знайомими з комп'ютером. Вонизмушені з цим миритися і, в результаті, багато чого втрачати ...
Ось тут і приходять на допомогу утилітки, які на перший погляд здаютьсямарними і непотрібними, роблячи за нас всю малоприємну і копіткуроботу і, що найголовніше, заощаджуючи наш час, сили і нерви. p>
СКЛАД "EXTRA DISK UTILITES": p>
У пакет "Extra Disk Utilities" на даний момент (листопад 1999 року )входять наступні утиліти:
1) "Restore Boot Record" - відновлює пошкоджену завантажувальний запис (Boot Record);
2) "Transfer System Areas" - переносить системні області з однієї дискети на іншу;
3) " Quick New Format "- змінює формат дискети без її форматування;
4)" Save User Boot Record "- зберігає у файлі копію завантажувального запису, щоб їй потім можна було користуватися у всіх перерахованих вище утилітах. p>
Власне кажучи, так як я працюю тільки з логічнимиушкодженнями, а не з фізичними, тому використано тільки абсолютначитання/запис секторів дискети (переривання 25h і 26h). p>
Для отримання додаткової інформації (типи накопичувачів) під DOSвикористовується переривання 13h (функції 15h і 08h), а під Windows - читання з
CMOS, використовуючи порти 70h і 71h. P>
ВИДИ "EXTRA DISK UTILITES": p>
Цей пакет був розроблений у трьох різних і незалежних видах:
1) у стилі утиліт MS - DOS'а, що запускаються з командного рядка з параметрами;
2) під DOS в інтерактивному режимі (Turbo Vision). Повністю аналогічно версії під Windows;
3) і, нарешті, під Windows 3.1/95/98. P>
В результаті всього цього він став доступний практично всімкористувачам PC сумісних комп'ютерів, без будь-яких обмежень. p>
ЩО використаний для розробки: p>
1) "Turbo Assembler", "Turbo Linker" і "Turbo Debugger" для розробкипершого виду "Extra Disk Utilities" (під DOS);
2) "Borland C + + 3.1" під DOS для розробки другого виду (під Turbo
Vision);
3) "Borland C + + 3.1" під Windows для розробки третього виду (під Object
Windows Library 1.0);
4) "WorkShop" для розробки діалогових вікон для Windows. P>
УТИЛІТА: p>
Restore Boot Record p>
p>
Відновлює логічно пошкоджену завантажувальний запис (Boot
Record) на дискеті, без пошкодження логічної структури дискети іщо є на ній інформації. p>
Потрібно задати ім'я диска (A: чи B:), тип формату (180 Kb, 360 Kb,
720 Kb, 800 Kb, 1.2 Mb, 1.44 Mb, 1.6 Mb). Також формат можна задати як
"Auto detect" (автоматичне визначення типу формату) або "user format".
При "user format" треба задати ім'я файлу, який містить завантажувальний запис
(512 байт). Тому немає обмеження на кількість форматів, і стандартнопідтримуються тільки сім - найосновніших. Користувач може самстворити завантажувальний запис, що містить що вимагається йому формат, за допомогоюутиліти "Save User Boot Record", опис якої ви знайдете трохи далі. p>
Технологія: за допомогою абсолютної запису на диск (переривання 26h)записується 512 байт на нульовий сектор дискети. Якщо запис пройдеуспішно, то повернеться повідомлення "All right!", інакше буде видано повідомленняпро помилку. p>
Transfer System Areas p>
p>
Переносить з однієї дискети на іншу логічну структуру вихідноїдискети (Boot Record, FAT) і очищає кореневий каталог від записів. Урезультаті чого виходить дискета ідентична вихідної щодологічної структури. p>
Потрібно задати ім'я початкового диска і ім'я диска, на який будепроводитися перенесення системних областей. Також можна задати: міняти чи неміняти дискету в дисководі, якщо використовується один пристрій. Цимдосягається те, що можна очистити дискету від записів практично миттєво
(спробуйте стерти з дискети близько 100 файлів - різниця ставатипомітною і без вимірів за секундоміром. А якщо файлів більше ?). p>
Технологія: зчитується з вихідні дискети запис завантаження, вонааналізується і записується на дискету-приймач. Потім, використовуючиотриману інформацію, очищаються FAT і кореневий каталог на дискеті -приймачі. Якщо все пройде успішно, то повернеться повідомлення "All rigth!",інакше буде видане повідомлення про помилку. p>
Quick New Format p>
p>
"Швидкий формат". Насправді навіть занадто швидкий - за 1 секундуможна змінити формат дискети, наприклад, замість 1.2 Mb можна миттєвоотримати 800 Kb. Форматування відбувається настільки швидко тому, що йогоне відбувається - фізична структура залишається незмінною, змінюється лишелогічна структура (Boot Record, FAT). Використаний принцип попередньоїутиліти, тільки завантажувальний запис не зчитується з дискети, а задаєтьсязаздалегідь, як в "Restore Boot Record". p>
Потрібно задати ім'я диска і тип формату. Все аналогічно утиліті
"Restore Boot Record" (див. вище). P>
Технологія: задається запис завантаження, вона аналізується ізаписується на дискету. Потім, використовуючи отриману інформацію, очищаються
FAT і кореневий каталог. Якщо все пройде успішно, то повернеться повідомлення
"All right!", Інакше буде видане повідомлення про помилку. P>
Save User Boot Record p>
p>
Зберігає в файл завантажувальний запис з дискети, для використанняпопередніми утилітами. p>
Потрібно задати ім'я диска і ім'я файлу. p>
Технологія: за допомогою абсолютного читання з диска (переривання 25h)зчитується нульовий сектор дискети, і ці 512 байт записуються в заданийфайл. Якщо все пройде успішно, то повернеться повідомлення "All right!", Інакшебуде видане повідомлення про помилку. p>
ОПЦІЇ: p>
Directories p>
p>
Можна задати каталог за замовчуванням для файлів форматів, які зберігаютьсяутилітою "Restore Boot Record". Цей каталог буде присутній в рядкудля введення імені файлу для користувача формату. p>
Опції можна зберігати для подальшого використання. p>
ПРОБЛЕМИ: вирішених і невирішених. p>
Само собою, при написанні будь-якої програми виникають проблеми великі ітрохи менше, деякі виявляються повністю дозволеними, деякі вдаєтьсяспритно обійти, ну і залишається мала частина невирішених або надісланих докращих часів. p>
І ось я хочу поділитися своїми проблемами і способами їх вирішення:
1. Виявляється, що під Windows переривання 13h робить не те ж, що під p>
DOS (я так і не з'ясував, що саме), тому тривалий час не працювало визначення типів дисководів. Обійшов я цю справу шляхом зчитування даних дисководів прямо з CMOS, використовуючи порти 70h і 71h. P>
2. Форматів дискет існує просто величезна безліч (я можу перерахувати близько двадцяти - це більш-менш потрібні), тому постало питання - як їх всіх підтримувати? Довелося залишити на частку користувача копіювати потрібні формати у файл за допомогою що додається утиліти "Save User Boot Record". Та й тих, що підтримуються, занадто багато, щоб всіх їх тримати в повному вигляді в пам'яті (7 * 512 байт = 3584 байти), тому довелося їх проаналізувати і залишити тільки що розрізняються байти (15 байт).
Економія: 3584 - (512 +7 * 15) = 2967 байт. P>
Ну, на цьому, мабуть, і вистачить, тому що саме основне я вже згадав,а інші проблеми не варто й згадувати (занадто дрібні і давно вжевирішені). p>
Автор висловлює подяку за допомогу по підготовці цієї статтісвоєму науковому керівникові Вадиму Сергійовичу Рубльова. p>