|
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одолжение следует ...
Другие статьи номера:
Похожие статьи:
Новье - El Mundo de Mister Emulator, The Sword Of Ianna, Space Escape, Retroforce, Twinlight, Sophia
В этот день... 13 ноября