Magic (кнопка)
Magic button — кнопка на некоторых интерфейсах (в особенности Beta Disk Interface), позволяющая сохранить состояние компьютера на внешний носитель для последующего восстановления. Может использоваться для организации отгрузок в тех случаях, когда они не предусмотрены прерываемой программой.
Принцип действия
Кнопка генерирует импульс на сигнале NMI, при его захвате включается ПЗУ TR-DOS. Процессор реагирует на NMI сохранением текущего адреса программного счётчика в стеке и переходом на адрес #0066. Программа ПЗУ сохраняет регистры и состояние прерываний (включены или выключены) и переходит на сохранение. Создаётся файл "@" с длиной 49152 (для 48K режима) и какое-то число файлов с длиной 16384 (для каждой страницы памяти в 128K режиме).
Недостатки
- При использовании стека как источника данных (приём данных через POP) Magic затирает важные данные.
- Оригинальная процедура TR-DOS не сохраняет на диск, если в системный регистр контроллера (порт #FF) был предварительно записан 0. Это исправлено в TR-DOS 6.05E и последующих версиях.
- При расположении стека ниже #4020 (точное значение - ?) Magic не может сохранить все регистры в стеке.
- Невозможно программно определить режим IM 1/2. Он вручную указывается в названии Magic-файла (файл, начинающийся с "$", запускается с IM 2).
- Если программа рассчитана на то, что в течение определённого количества тактов прерывание не произойдёт, то Magic может нарушить её работоспособность (т.к. выход из Magic может произойти в любой момент). Исправить это затруднительно, т.к. принудительный HALT может вызвать процедуру обработки прерываний тогда, когда данные для неё ещё не подготовлены.
- Память выше 128K не сохраняется.
Другие применения
В некоторых прошивках TR-DOS кнопка Magic выдаёт меню или ждёт нажатия кнопки, выбирающей режим работы. Это может быть, например, пауза или вызов отладчика. В некоторых вариантах схемы подключения кэша Magic включает кэш вместо ПЗУ.