Традиційний дисковий сервіс працює в 16-розрядному режимі процесора, всі параметри виклику передаються через регістри процесора. Адреса сектора задається в системі CHS і розміщений вельми специфічно. Сервіс викликається програмним перериванням Int 13h, при виклику приймаються наступні угоди:
номер функції задається в регістрі АН і не повинен перевищувати 3Fh;
· логічний номер диска задається в регістрі DL (біт 7 = 0 - ознака звернення до НГМД);
· номер циліндра (0-1023) задається в регістрі СН (молодші 8 біт) і СЦ7:6] (старші 2 біта);
· номер голівки (0-255) задається в регістрі DH;
· номер початкового сектора (1-63) задається в регістрі CL [ 5 :0];
· кількість секторів, що беруть участь в операції, 8 біт - в регістрі AL (0-255);
· покажчик на початок буфера оперативної пам'яті для прочитуваних і записуваних даних (address of buffer) - в регістрах Е S: ВХ;
· результат виконання операції визначається по прапору перенесення: З F = 0 -успешное виконання операції, CF = 1 - виявлені помилки (код стануповертається в регістрі АН, код завершення останньої операції з дискетами зберігається за адресою 40:41h, з жорсткими дисками - 40:74h);
· таблиця параметрів диска для дискет (DPT) задана покажчиком в пам'яті за адресою 0:78h, для жорстких дисків (HDPT) - 0:104h або 0:118h.
Список функцій традиційного сервісу приведений в таблицю. 12.7, детальніше вони описані в [4, 9]. Пристрої можуть не підтримувати деякі функції, про що драйвери повинні «чесно повідомити» кодом повернення Olh.
1 Лише для фіксованих дисків.
2 Лише для дискет і інших змінних носіїв.
3 Призначення відрізняється від звичайного.
Формально традиційний сервіс дозволяє працювати з дисками, що мають до 1024 х 256 х 63 = 16 515 072 секторів (близько 8,4 Гбайт). Ряд операційних систем має помилку, що не дозволяє використовувати повний об'єм, допустимий даним сервісом. Для дисків об'ємом більше 15 481 935 секторів слід користуватися лише функціями розширеного сервісу (див. нижчий). Проте при роботі з пристроями АТА є ще і бар'єр в 528 Мбайт. Річ у тому, що контроллер жорсткого диска АТА, на який орієнтовані драйвери Int 13h, має лише 4-бітовий регістр номера голівки (а в BIOS - 6 біт). Правда, цей же контроллер здатний приймати 16-бітовий номер циліндра (у BIOS - 10 біт). Зрозуміло, що безпосередньо без спотворень через ці два фільтри (формат виклику і формат регістрів контроллера) може пройти лише виклик з найжорсткішими обмеженнями по кожній координаті. Тоді обмеження, отримане тим же перемножуванням діапазонів координат, виходить близько 528 мільйонів байт:
(210 = 1024 циліндри) х (24 = 16 голівок) х (26 - 1 = 63 сектори) х 512 байт = 528 482 304 байт.
Для подолання 528-мегабайтного бар'єру дисків АТА, не чіпаючи програмного інтерфейсу, в BIOS ввели розширення традиційного дискового сервісу. Інтерфейс АТА в тривимірній геометрії дозволяє реалізувати досить великий (але вже не позамежний) об'єм диска:
(216 = 65 536 циліндрів) х (24 = 16 голівок) х (28 - 1 = 255 секторів) х 512 байт = 136,9 Гбайт.
Аби досягти хоч би інтерфейсного обмеження BIOS (8,4 Гбайт), стали застосовувати трансляцію параметрів виклику функцій Int 13h, які теперназиватимемо логічними, у физические* параметри, передавані контроллерам АТА-дисков. У функції, яка повідомляє параметри диска (функція 8), виробляється зворотна трансляція, так що на стороні виклику програмного інтерфейсу Int 13 h присутньо лише логічні параметри. Природно, логічний об'єм диска не може перевищувати фізичного: (З х Н х 5) трансляції (LBA, Large Disk, ЕСН5) см.в [1,4,9].
Розширений сервіс BIOS
Аби дістати можливість роботи через BIOS з дисками об'єму більше 8,4 Гбайт, потрібно було ввести нові функції дискового сервісу.
Розширений дисковий сервіс BIOS, Enhanced Disk Drive Services (EDD), просувний фірмою Phoenix Technologies LTD, реалізується багатьма розробниками BIOS і пристроїв масової пам'яті. Він дозволяє працювати з пристроями, що мають об'єм до 264 секторів, ефективно використовуючи архітектуру процесорів IA-32 і IA-64. Сервіс оперує лінійною логічною адресою сектора (LBA). Замість традиційних таблиць параметрів дисків в нім використовуються нові, такі, що дають вичерпну інформацію про пристрої, їх фізичну організацію і інтерфейс. Пристрої можуть мати змінні носії і самі бути знімними в процесі роботи комп'ютера (наприклад, підключені до шини USB або IEEE1394), так що поняття «Змінюваність носія» декілька розмивається. Такі пристрої повинні підтримувати механізм повідомлення про зміну носія і програмне блокування зміни носія. По прогнозах ємкості даного інтерфейсу повинно вистачити на 15-20 років.
Розширення BIOS Int 13 h використовують ОС Windows 95, Windows 98, Windows 2000. Правда, це використання обмежене лише початковим завантаженням і процесом установки (FDISK, FORMAT), оскільки в регулярній роботі застосовуються власні 32-розрядні драйвери. Розширення BIOS Int 13 h не використовують DOS (всі версії), Windows 3. lx, Windows NT, Novell NetWare, OS/2 Warp, Linux, Unix.
В даний час визначено три набори функцій:
доступ до фіксованих дисків (fixed disk access subset) - функції 41-44h, 47h і 48h;
· блокування і зміна носія (device locking and ejecting subset) - функції 41h, 45h, 46h, 48h і 49h;
· підтримка розширених дисків (enhanced disk drive (EDO) support subset) -функции 41h і 48h.
Розширений сервіс, як і традиційний, викликається програмним перериванням Int13h з номерами функцій зверху 3Fh (регістр АН); номер пристрою (регістр D L) допустимий в діапазоні 80h-FFh. Основні параметри виклику - початкова адреса блоку, число секторів для передачі і адреса буфера - передаються через адресний пакет (device address packet). Формат пакету порівняно з передачею параметрів традиційного сервісу через регістри процесора досить просторий.
· Оскільки розширення BIOS може бути і відсутнім, є функція перевірки його наявності (номер 41h). Розширення може діяти вибірково (не для всіх пристроїв), так що перевірку треба виробляти для конкретного пристрою, що цікавить програму. Перевірка дає номер версії розширення і карту підтримуваних наборів функцій. Функції розширеного читання, запису, верифікації і пошуку (42h, 43h, 44h і 47h) по сенсу не відрізняються від їх аналогів з традиційного сервісу. Для роботи із змінними носіями введені функції отпирания/запирания, витягання і перевірки факту зміни носія (45h, 46h і 49h). Від ідеології традиційного сервісу сильно відрізняється функція здобуття параметрів пристрою (48h). Вона повертає в ОЗУ буфер з набором параметрів і детальним описом пристрою, що дозволяє ОС і додаткам працювати з ним, минувши BIOS. Функція установка апаратної конфігурації (4Eh) дозволяє управляти режимом передачі (Рio, DMA), а також попередньою вибіркою (пошуком).
· Для емуляції дисків на завантажуваних CD-ROM до сервісів BIOS Int 13h додається декілька нових функцій:
· прочитати сектори завантажувального каталога (4Dh); функції 41 -48h дозволяють звертатися до будь-яких логічних секторів CD-ROM (у режимі LBA з розміром сектора 2048 байт), коли для даного приводу включена емуляція.
2.написати і оформити згідно вимог програму на Асемблері для рисування вказаним кольором прямокутника заданого розміру у певній точці екрану
(задані координати лівої верхньої вершини) з використанням циклів.
3.Перейти в існуючий каталог(прізвище студента).Відкрити файл(ім’я студента).Прочитати текст( N символів). Вивести текст на екран. Закрити файл. Знищитти файл. Перейти в кореневий каталог. Знищити існуючий каталог.