City
#12
14 мая 1999 |
|
Ликбез - полное описание + полный дизассемблер ПЗУ (часть 8).
--------------------------------------------------- ЛИКБЕЗ --------------------------------------------------- (c) П.Ю.Федин ╔═════════════════════════════════════════════════╗ ║ ║ ║ ПОЛHОЕ ОПИСАHИЕ + ПОЛHЫЙ ДИЗАССЕМБЛЕP ПЗУ ║ ║ ║ ║ TR-DOS 5.04T (5.03) ║ ║ ║ ║ ДЛЯ ПРОФЕССИОНАЛОВ, ║ ║ ║ ║ А ТАКЖЕ ДЛЯ ТЕХ, ║ ║ ║ ║ КТО ХОЧЕТ ИМИ СТАТЬ. ║ ║ ║ ╚═════════════════════════════════════════════════╝ пpодолжение Регистр состояния 1818ВГ-93 После выполнения в регистре состояния будут нахо- дится флаги, показывающие результат выполнения ко- манды: ╔═══════════════╤═══════════════╗ ║ │Разряд регистра║ ║ Команда ├─┬─┬─┬─┬─┬─┬─┬─╢ ║ │7│6│5│4│3│2│1│0║ ╟───────────────┼─┼─┼─┼─┼─┼─┼─┼─╢ ║Вспомогательная│R│P│H│F│C│T│I│Q║ ║Чтение адреса │R│0│0│N│C│W│D│Q║ ║Чтение сектора │R│0│A│N│C│W│D│Q║ ║Чтение дорожки │R│0│0│0│0│W│D│Q║ ║Запись сектора │R│P│E│N│C│W│D│Q║ ║Запись дорожки │R│P│E│0│0│W│D│Q║ ╚═══════════════╧═╧═╧═╧═╧═╧═╧═╧═╝ Значения флагов: R - готовность дисковода (1 - не готов). P - защита от записи. H - загрузка головки. E - ошибка записи. A - тип адресной метки. F - ошибка поиска. N - массив не найден. C - ошибка в контрольной сумме. T - головка на дорожке 0 (сигнал TR00 от дисковода) W - потеря данных. I - индексный импульс. D - запрос данных. Q - занято (идет выполнение команды). Порт 255. Системный регистр служит для выбора дисководов и выполнения других вспомогательных действий. Его структура: 7 6 5 4 3 2 1 0 │ │ │ │ └─┴─Номер дисковода (0 - 3). │ │ │ └─────Сброс ВГ-93, если 0. │ │ └───────Загрузка головки. │ └─────────Сторона диска (0 - нижняя). └─────────────Метод записи (0 - FM, 1 - MFM). При вводе из этого порта читаются сигналы: бит 7 - INTRQ; бит 6 - DRQ. К сожалению, порты TR-DOS доступны только тогда, когда включено ПЗУ TR-DOS, что очень затрудняет до- ступ к ним. Но для записи в порты можно использо- вать следующие подпрограммы: 12227 OUT (31),A RET 7738 OUT (63),A RET 8179 OUT (255),A RET 12044 OUT (255),A RET 10835 OUT (C),A RET Для чтения из портов подобных подпрограмм нет. Коды ошибок: В TR-DOS обработка ошибок реализована весьма не- корректно, но все же можно различить ошибки, если воспользоваться двумя переменными: 23610 и 23823. ╔══════════════╤══════════════════════╤═════╤═════╗ ║Сообщение об │Значение │23610│23823║ ║ошибке │ │ │ ║ ╟──────────────┼──────────────────────┼─────┼─────╢ ║O.K. │Нормальное завершение │ 255 │ 0 ║ ║No file(s) │Требуемый файл не най-│ 255 │ 1 ║ ║ │ден │ │ ║ ║File exists │Файл уже существует │ 255 │ 2 ║ ║No space │Нет места на диске │ 255 │ 3 ║ ║Directory full│Нет места в каталоге │ 255 │ 4 ║ ║ │диска │ │ ║ ║Rec OF │Обращение к несущест- │ 255 │ 5 ║ ║ │вующему сектору файла │ │ ║ ║No disc │Нет диска в дисководе │ 26 │ 6 ║ ║Disc error │Дисковая ошибка. Есть │ 26 │ 7 ║ ║Trk XX sec XX │3 варианта:R - еще раз│ │ ║ ║Retry,Abort, │попробовать,I - продо-│ │ ║ ║Ignore? │лжить со дующего сек-│ │ ║ ║ │тора, А- отказаться от│ │ ║ ║ │операции │ │ ║ ║Read only │Диск защищен от записи│ 26 │ 7 ║ ║Trk XX sec XX │Есть 3 варианта ( смо-│ │ ║ ║Retry,Abort, │трите выше) │ │ ║ ║Ignore? │ │ │ ║ ║Stream opened │Открываемый поток уже │ 25 │ 10 ║ ║ │занят │ │ ║ ║Not disk file │Закрываемый канал не │ 255 │ 11 ║ ║ │принадлежит TR-DOS │ │ ║ ║Array not │Требуемая переменная │ 255 │ 14 ║ ║found │не найдена │ 1 │ 1 ║ ║*BREAK* │Нажата клавиша BREAK │ 20 │ 20 ║ ║ │ │ 12 │ 12 ║ ║Out of RAM │Не хватает оперативной│ 3 │ 3 ║ ║ │памяти │ │ ║ ║Disc error │Диск не принадлежит │ 255 │ 0 ║ ║ │TR-DOS │ │ ║ ║Read only │Попытка записи на 40- │ 255 │ * ║ ║ │дорожечный диск на 80-│ │ ║ ║ │дорожечном дисководе │ │ ║ ║*ERROR* │Прочие ошибки, в ос-│ 11 │ 12 ║ ║ │новном синтаксические │ X │X+1 ║ ╚══════════════╧══════════════════════╧═════╧═════╝ * - копия переменной с типом дисковода, X - любое число. В случае вывода сообщения Retry,Abort,Ignore? коды ошибки устанавливаются при ответе A. продолжение следует...
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября