Просмотр полной версии : Махинации с регистром I и IM2
Собственно в коде одной программы нашёл следующую конструкцию:
MOV A, #FE
MOV I, A
IM 2
Всё отлично, но
1. Я не понимаю, что тут происходит и зачем эта конструкция нужна.
2. Pentagon 128 в этом месте ничего не делает, но я подозреваю, что этот набор инструкций всё же зачем-то нужен
:confused:
ну как это ничего не делает... устанавливает вектор прерывания и включает IM2....
null_device
25.10.2014, 04:54
Что-то не припоминаю наличие мнемоники MOV? :v2_conf2:
---
Если принять, что за ней скрывается команда LD, листинг приобретает более "привычный" вид (скорее всего данный код "обрамлен" командами DI\EI):
DI
...
LD A, #FE
LD I, A
IM 2
...
EI
устанавливает пользовательский режим прерываний и задает адрес по которому читается вектор прерывания, в данном случае FEFF. на клонах с нестабильной шиной, младший байт адреса может отличаться и иметь значение от 0 до ff. для таких случаев можно всю область от #FE00 до #FF00 прописать одним и тем же байтом, например 80, тогда вектор, тогда вектор прерывания с любым значением на шине данных получится #8080.
Разве это махинации? То ли дело, когда мне удалось ULA на +2 завесить... вот это махинация так махинация :)
Разве это махинации? То ли дело, когда мне удалось ULA на +2 завесить... вот это махинация так махинация :)
ты ещё из порта #7ffd прочитай значение ( именно на сером +2)
SoftLight
25.10.2014, 12:58
А что будет?
комп зависнет из-за ошибки в ULA.
наверно разработчики не предусмотрели такое развитие событий
"Я делаю свой эмулятор и задумал реализовать такую классную штуку как gigascreen "
я в шоке...
"Я делаю свой эмулятор и задумал реализовать такую классную штуку как gigascreen "
я в шоке...между прочим да.. Человек делает эмулятор спектрума, и не вкурсе про прерывания...
Советую почитать топиксртеру - http://speccy.info/Прерывания
между прочим да.. Человек делает эмулятор спектрума, и не вкурсе про прерывания...
всякое бывает. вон Лисицын сделал AVRспек на 8ми микросхемах даже не зная про im2 и искренне удивлялся почему большинство игр не работает.
нет но мы же вроде разобрались тогда.
нет но мы же вроде разобрались тогда.
ну,да.
изначально у него по EI всегда шарашил IM1 и портились данные в системной переменной (где часы)
Alex Rider
25.10.2014, 18:45
комп зависнет из-за ошибки в ULA.
Насколько я помню, из-за ошибки ULA произойдет запись в #7ffd.
Насколько я помню, из-за ошибки ULA произойдет запись в #7ffd. а почему тогда комп зависает/сбрасывается ?
стек < 49152
Alex Rider
26.10.2014, 03:20
а почему тогда комп зависает/сбрасывается ?
стек < 49152
IM2, I >= #0c0?
Alex Rider, http://www.zxpress.ru/article.php?id=4588
"Стоит заметить, что вышеизложенное "свойство" не зависит от режима прерываний!"
было писано сто лет назад :)
я думаю, что только по этому комп не зависает и не сбрасывается... а происходит это потому, что обработчик прерываний не расчитывал такой бяки с быстродействием. возможно в нем отсутствует DI вначале. да мало ли.
Alex Rider
26.10.2014, 12:47
Alex Rider, http://www.zxpress.ru/article.php?id=4588
"Стоит заметить, что вышеизложенное "свойство" не зависит от режима прерываний!"
Я не про это. Если таблица векторов прерываний живет в страничной памяти, чтение из #7ffd приведет к переключению страниц, и "давай, до свидания".
Я не про это. Если таблица векторов прерываний живет в страничной памяти, чтение из #7ffd приведет к переключению страниц, и "давай, до свидания".
какие таблицы в простом бейсике при IM1 ???
Alex Rider
26.10.2014, 13:31
какие таблицы в простом бейсике при IM1 ???
А где шла речь про простой бейсик и IM1? :D
Spectramine
26.10.2014, 15:35
а почему тогда комп зависает/сбрасывается ?
стек < 49152
может, пзу не то включается ?
какие таблицы в простом бейсике при IM1 ???
Через #7ffd кроме страницы еще и пзу переключается, а бейсик в пзу ;)
Всем спасибо. Я вспомнил)
На самом деле я 12 лет провёл за спектрумом (причём в активной разработке), но последующий интервал в 10 лет дал о себе знать. Мне стыдно.
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot