City
#13
29 мая 1999 |
|
Ликбез - полное описание и полный дизассемблер ПЗУ (часть 8).
--------------------------------------------------- ЛИКБЕЗ --------------------------------------------------- (c) П.Ю.Федин ╔═════════════════════════════════════════════════╗ ║ ║ ║ ПОЛHОЕ ОПИСАHИЕ + ПОЛHЫЙ ДИЗАССЕМБЛЕP ПЗУ ║ ║ ║ ║ TR-DOS 5.04T (5.03) ║ ║ ║ ║ ДЛЯ ПРОФЕССИОНАЛОВ, ║ ║ ║ ║ А ТАКЖЕ ДЛЯ ТЕХ, ║ ║ ║ ║ КТО ХОЧЕТ ИМИ СТАТЬ. ║ ║ ║ ╚═════════════════════════════════════════════════╝ пpодолжение Формат описателя файла байты 0 - 7 - имя файла. байт 8 - расширение файла. байты 9 - 10 - для кодов и массивов- адрес загруз- ки, для программ на бейсике - длина файла, для файлов данных: байт 9 - номер блока в файле, байт 10- любой, TR-DOS всегда уста- навливает 32. байты 11 - 12 - для массивов и кодов - длина файла, для программ на бейсике- длина про- граммы, для файлов данных - длина записанной части блока. байт 13 - Длина файла в секторах. байт 14 - Номер первого сектора файла. байт 15 - номер первой дорожки файла. Формат описателя диска (сектор 8 дорожки 0) байты 0 - 224 - не используются. байт 225 - номер первого свободного сектора. байт 226 - номер первой свободной дорожки. байт 227 - тип диска: 22- 80-дорожечный двухсторонний, 23- 40-дорожечный двухсторонний, 24- 80-дорожечный односторонний, 25- 40-дорожечный односторонний. байт 228 - количество файлов на диске вмес- те со стертыми. байты 229 - 230 - количество свободных секторов. байт 231 - всегда 16 - признак принадлежнос- ти диска к TR-DOS. байты 232 - 243 - не используются. Байты 234 - 242 TR-DOS заполняет байтом 32. байт 244 - количество стертых файлов. байты 245 - 252 - имя диска. байты 253 - 255 - не используются. Ошибки в подпрограммах TR-DOS Фатальные ошибки: Ошибки PEEK POKE - невозможно работать с файлами с расширением B и D. Также не- льзя работать с последним сек- тором любого файла. Ошибка PEEK - после сектора дочитывается столько байтов из следующего, сколько указано в младшем бай- те длины файла. Эта ошибка об- ходится при использовании под- программы 15635. Ошибки MAGIC - портит адреса 23552 и 23553. Если по адресу 23304 будет 238, то в порт 32765 загрузит- ся число из 23388. Делает 20 попыток записи на диск с зак- леенной прорезью. Ошибка RUN - некорректно запускает кодовые файлы. Ошибка PRINT# - При создании нового блока фай- ла портит буфер, из-за чего может не сработать CAT# или LIST#. Ошибка RESET - помещает по адресу 23746 ко- манду RET без наличия систем- ных переменных TR-DOS. Ошибка CAT - Если номера дисководов в 23801 и 23798 разные, то произойдет что угодно. Ошибка позиционирования - не учитывается скорость пере- мещения головки дисковода. Другие ошибки: Ошибка выбора дисковода - не проверяется тип дисковода, если в переменной 255, а если ее изменить, то тип дисковода будет все время переопреде- ляться. Ошибка чтения адресного маркера - флаг игнорирования ошибки бе- рется из 23761, а не из 23831. Ошибка всех COPY - портится переменная 23840, а при COPY S - еще и 23839. Ошибки GO TO - цвет бордюра берется из 23624. Для сохранения длины имени файла используется экран, хотя в этом нет необходимости. При загрузке файлов страниц нажа- тие BREAK или ответ A на воп- рос Retry,Abort,Ignore? приве- дет к чему угодно. Ошибки PRINT# и INPUT# - после вопроса Retry, Abort, Ignore? или нажатия BREAK бу- дет что угодно. Ошибка настройки на диск - не проверяется возможность ис- пользования дисковода в требу- емом режиме. Совершенно непра- вильно обрабатывается DISC ER- ROR. Ошибка READ ONLY - при попытке записи на 40-доро- жечный диск 80-дорожечном дис- ководе сообщение выдается пра- вильно, но в переменной 23823 вместо кода ошибки будет копия переменной с типом дисковода. Ошибка BREAK - при нажатии BREAK выдается со- общение BREAК INTO PROGRAM вместо BREAK-CONT REPEATS. пpодолжение следует ...
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября