|
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одолжение следует ...
Другие статьи номера:
Похожие статьи:
В этот день... 25 октября