Программирование на Ассемблере
Эта команда используется
для форматирования (начальной разметки) треков с одновременной записью в
них некоторых данных. При этом данные для инициализации треков берутся из
специального буфера размером 11*512 = 5632 байт (размер одного трека).
Заметим, что параметр начального смещения на диске должен быть кратен числу
5632, так как FORMAT работает с целыми треками. Используя команду FORMAT Вы легко можете написать, например, программу
копирования дискет: для копирования какого-либо трека достаточно считать
его содержимое с исходного диска и затем с помощью команды FORMAT выполнить
разметку и запись данных в соответствующий трек диска-копии.
Команда SEEK (код 10) используется для позиционирования головки дисковода
на нужный трек без выполнения каких-либо операций чтения/записи.
Единственным параметром этой команды является начальное смещение.
И, наконец, команда REMOVE (код 12) используется для установки обработчика
прерываний, который вызывается всякий раз, когда диск удаляется из
дисковода. Адрес структуры прерываний передается в поле данных структуры
ввода/вывода (смещение 40). Если этот параметр равен нулю, обработка
прерывания отключается. Приведем пример законченной программы, работающей с диском на низком
уровне: ;***** Track disk - Basic function I/O, 86, S.D ***** ILABEL ASSEMPRO:Includes/amiga.i ;только для AssemPro OpenLib = -552
CloseLib = -414
ExecBase = 4 * Вызовы AmigaDOS Open = -30
Close = -36
OpenDevice = -444
CloseDevice = -450
SendIO = -462
Read = -42
Write = -48
WaitForChar = -204
mode_old = 1005 INIT_AMIGA ;только для AssemPro run:
bsr.s init ;инициализация
bra test ;основная программа init:
move.l ExecBase,A6
lea dosname(PC),A1
moveq #0,D
|