City
#07
28 марта 1999 |
|
Ликбез - полное описание + полный дизассемблер ПЗУ (часть 3).
--------------------------------------------------- ЛИКБЕЗ --------------------------------------------------- (c) П.Ю.Федин ╔═════════════════════════════════════════════════╗ ║ ║ ║ ПОЛHОЕ ОПИСАHИЕ + ПОЛHЫЙ ДИЗАССЕМБЛЕP ПЗУ ║ ║ ║ ║ TR-DOS 5.04T (5.03) ║ ║ ║ ║ ДЛЯ ПРОФЕССИОНАЛОВ, ║ ║ ║ ║ А ТАКЖЕ ДЛЯ ТЕХ, ║ ║ ║ ║ КТО ХОЧЕТ ИМИ СТАТЬ. ║ ║ ║ ╚═════════════════════════════════════════════════╝ пpодолжение Запись файлов Для записи файлов служит команда SAVE. Ее синтак- сис такой же, как и в бейсике. Для обозначения рас- ширения файла B можно использовать только пустую строку или слово LINE. Примеры команд записи: SAVE"HONDACC"LINE 100 комментарий SAVE"A:DESIGN" SAVE"MONEY"DATA M$() комментарий SAVE"SALECALC"CODE 40000,120 комментарий Загрузка файлов Команда LOAD абсолютно такая же, как и в бейсике. Для обозначения расширения B можно использовать лю- бой символ, кроме CODE и DATA. При успешной загруз- ке программы на бейсике она либо запустится,либо вы попадете в бейсик с сообщением OK. Можно также вве- сти просто LOAD<ENTER>. Тогда будет произведена по- пытка автозагрузки и при неудаче вы выйдете в кома- ндный процессор TR-DOS, а в бейсик сможете вернуть- ся по команде RETURN. Примеры команд загрузки: LOAD"INTEREST" комментарий LOAD"MARGIN"CODE 51000,14536 комментарий LOAD"MONEY"DATA M$() комментарий LOAD"SALECALC"CODE Запуск файлов TR-DOS позволяет запускать программы на бейсике и в кодах одной командой.Для этого используется ко- манда RUN. Ее синтаксис такой же, как и LOAD. Также есть команда RUN<ENTER> - эквивалент LOAD<ENTER>. Внимание! В подпрограмме есть ошибки. Проверка файлов и слияние программ Для этого служат команды MERGE и VERIFY.Синтаксис такой же, как и у LOAD. Естественно, MERGE работает только с программами на бейсике. Есть также команда MERGE<ENTER>. "Волшебная" кнопка (или просто MAGIC) Пpи помощи этой кнопки почти любая прогpамма в любой момент времени может быть записана на диск, а затем запущена с того же места. Работа этой кнопки основана на немаскируемом прерывании. Нажатие кнопки переключает ПЗУ на TR-DOS и выра- батывает сигнал NMI. Подпрограмма обработки немас- кируемого прерывания сохраняет регистры процессора на стеке и записывает всю память компьютера на диск в файле "@"CODE. Если у вас 48К, то этим все закан- чивается, иначе на диск записываются все страницы памяти, в которых есть хотя бы один ненулевой байт в файлах "@N"CODE, где N - номер страницы, которая хранится в файле, затем файл "@8"CODE, в котором находится код банка памяти, активного в момент на- жатия MAGIC. Казалось бы, классная вещь, но во пер- вых, в подпрограмме есть грубейшие ошибки, во вто- рых, в новых программах просто нет места в стеке для сохранения всех регистров и при записи стек за- тирает саму программу. Учитывая это, а также неком- мерческий вид программ, полученных таким способом, я не рекомендую распространять программы, сброшен- ные таким способом. Подпрограмма MAGIC использует собственные систем- ные переменные, для организации которых 512 байтов с адреса 16384 записываются в сектора 10 и 11 доро- жки 0. ╔═════╤═════╤═════════════════════════════════════╗ ║Адpес│Длина│ Содержимое ║ ╟─────┼─────┼─────────────────────────────────────╢ ║16384│ 256 │Буфер для операций с каталогом ║ ║16512│ 32 │Подпрограмма определения текущего ПЗУ║ ║16640│ 1 │Контр. сумма текущей страницы ОЗУ ║ ║16641│ 1 │Код текущего банка памяти ║ ║16642│ 1 │Номер файла страницы в каталоге ║ ║16643│ 1 │Номер записываемой страницы ОЗУ ║ ║16644│ 12 │не используется ║ ║16656│ 8 │Имя файла страницы ║ ║16664│ 1 │Расширение файла страницы ║ ║16665│ 2 │Адрес загрузки файла страницы ║ ║16667│ 2 │Длина файла страницы в байтах ║ ║16669│ 1 │Длина файла страницы в секторах ║ ║16670│ 1 │Номер первого сектора файла страницы ║ ║16671│ 1 │Номер первой дорожки файла страницы ║ ║16672│ 16 │Не используется ║ ║16688│ 1 │Контрольный байт. Всегда равен 170 ║ ║16689│ 202 │Временный стек ║ ║23552│ 1 │Тип дисковода: бит 3=0 - двухсторон- ║ ║ │ │ний; 1 - односторонний. При возврате ║ ║ │ │содержит команду RET для переключения║ ║ │ │ПЗУ ║ ║23553│ 1 │При входе в подпрограмму MAGIC сохра-║ ║ │ │няет регистp состояния ВГ-93.Содержит║ ║ │ │флаг текущего ПЗУ (0 - бейсик-128; 16║ ║ │ │- бейсик-48). ║ ╚═════╧═════╧═════════════════════════════════════╝ Для запуска MAGIC-файла используется команда GO TO. Ее синтаксис: GO TO<имя файла><расширение>[<комментарий>] Имя файла может быть изменено как угодно,при этом если первый символ имени "$",то при запуске устана- вливается режим прерываний IM 2, иначе IM 1. Также, надо оставлять номера в конце имен файлов страниц. Наряду с обычными системными переменными подпро- грамма GO TO использует свои: ╔═════╤═════╤═════════════════════════════════════╗ ║Адрес│Длина│ Содержимое ║ ╟─────┼─────┼─────────────────────────────────────╢ ║16384│ 16 │Не используется ║ ║16400│ 1 │Тип дисковода: бит 1=1- дисковод дву-║ ║ │ │сторонний, 0 - односторонний ║ ║16401│ 1 │Копия системного регистра ║ ║16402│ 14 │Не используется ║ ║16416│ 2 │Длина имени файла ║ ║16418│ 221 │Временный стек ║ ║16639│ 1 │Не используется ║ ║16640│ 256 │Место для загрузки файла "@8"CODE ║ ╚═════╧═════╧═════════════════════════════════════╝ Внимание! В подпрограмме GO TO также есть ошибки. пpодолжение следует ...
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября