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одолжение следует ...



Другие статьи номера:

Железо - как подключить к вашему компьютеpу Kempston Mouse Interface.

Смайлик - подборка актуальных анекдотов.

Что-где-почему - ассоpтименте пpодукции, pаспpостpаняемой ООО "ФАPГО", котоpая может заинтеpесовать обладателей ZX Spectrum.

Ликбез - полное описание + полный дизассемблер ПЗУ (часть 3).

Бук - ВИHHИ-ПУХ И ВСЕ, ВСЕ, ВСЕ окончание.

Реклама - купить-продать спектрум.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Юмор - Ночное FIDO. Сценарий.
Железо - Как переделать tape recorder в самый настоящий Video player.
Игрушки - Разжёвка: Tеперь не для кого уже не секрет, что Земля круглая. Но не все знают тонкости и детали данного явления. В этой статье сделана попытка прояснить ситуацию.

В этот день...   16 июля