- •Предисловие
- •Немного истории
- •Обзор программного обеспечения
- •Центральный процессор
- •______________________________________Другие регистры
- •Внешние устройства
- •____________________________Порт 255 (#ff, %11111111)
- •____________________________Порт 254 (#fe, %11111110)
- •_______________________________Маскируемые прерывания
- •______________________________________________Режим 0
- •_____________________________Немаскируемые прерывания
- •____________________________Организация памяти
- •_____________________________Экранная область памяти
- •__________________________________Буфер принтера
- •__________Формат хранения текста программы на Бейсике
- •___________________________Формат хранения переменных
- •Числовые переменные (numeric variables)
- •Числовой массив (numeric array)
- •Управляющая переменная цикла for...Next (index variable)
- •Методы адресации
- •Загрузка gens4
- •Программирование на ассемблере gens4
- •____________________________________Формат строки ассемблера
- •35 Start ld hl,label ;загрузка регистра
- •_________________________________________________________Метки
- •_____________________________Команды условной трансляции
- •Insert — перейти в режим «вставка». Выход из режима осуществляется нажатием Enter;
- •_______________________Работа с дисководом и магнитофоном
- •Другие команды
- •Include buffer? (Размер входного буфера?)
- •Ассемблирование программы
- •Сообщения об ошибках
- •Зарезервированные слова
- •Пример сеанса работы
- •Программа-загрузчик
- •Команды mons4
- •9C40[ss/m] установке начального значения pc
- •Использование дополнительных фонтов
- •Input "address: ";a: rem адрес нового фонта
- •Системные переменные
- •Ожидание ввода: call 5598 (#15de)
- •Изображение окружности: call 9005 (#232d)
- •Изображение линии: call 9399 (#24b7), call 9402 (#24ва)
- •Загрузка файла без заголовка: call 1366 (#0556)
- •Пояснения к таблице символов
- •Контрольные коды zx Spectrum
- •Оглавление
_____________________________Немаскируемые прерывания
Немаскируемое прерывание вызывается при поступлении сигнала на вход NMI процессора. При этом выполнение основной программы приостанавливается, и управление передается на ячейку с адресом 102 (#66) (выполняется команда CALL 102).
В ZX Spectrum немаскируемое прерывание не задействовано, но оно может вызываться некоторыми внешними устройствами. При этом вместо стандартной «прошивки» подключается ПЗУ вызвавшего прерывание устройства, в котором записана программа обработки прерывания. Этот принцип используется, например, в дисковой системе Beta Disk фирмы Technology Research и интерфейсе Multiface One фирмы Romantic Robot.
При входе в немаскируемое прерывание сбрасывается триггер IFF, и, следовательно, запрещается вызов маскируемых прерываний.
Возврат из немаскируемого прерывания и восстановление состояния регистра IFF происходит по команде процессора RETN.
Следует отметить, что на самом деле Z80 имеет два триггера, участвующих в обработке прерываний: IFF1 и IFF2. Триггер IFF1 используется для управления разрешением маскируемых прерываний, a IFF2 хранит его состояние при обработке немаскируемых. Состояние триггера IFF2 отражается битом P/V флагового регистра после выполнения команд LD А,I или LD A,R.________________
*) Фирмой Zilog были разработаны микросхемы, входящие совместно с Z80 CPU в комплект под общим названием Z80.
Состояния триггеров IFF1 и IFF2 в различных режимах работы процессора приведены в табл. 4.
Таблица 4. Состояния триггеров IFF1 и IFF2.
Действие |
IFF1 |
IFF2 |
Примечание |
_____________ сигнал RESET |
0 IFF1 |
0 IFF2 |
устанавливает режим 0 |
команда DI |
0 IFF1 |
0 IFF2 |
запрещает прерывания |
команда EI |
1 IFF1 |
1 IFF2 |
разрешает прерывания |
_______ сигнал INT |
0 IFF1 |
0 IFF2 |
маскируемое прерывание |
команда RETI |
IFF2 IFF1 |
не изменяется |
возврат из маскируемого прерывания |
|
|
|
|
_______ сигнал NMI |
0 IFF1 |
IFF1 IFF2 |
немаскируемое прерывание |
команда RETN |
IFF2 IFF1 |
не изменяется |
возврат из немаскируемого прерывания |
|
|
|
|
команда LD А,I |
не изменяется |
не изменяется |
IFF2 P/V |
команда LD A,R |
не изменяется |
не изменяется |
IFF2 P/V |