Важная информация

User Tag List

Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 13 из 13

Тема: Прерывания IM 2

  1. #11
    Veteran Аватар для Enigmatic
    Регистрация
    22.08.2010
    Адрес
    г. Антрацит, Украина
    Сообщений
    1,661
    Спасибо Благодарностей отдано 
    270
    Спасибо Благодарностей получено 
    304
    Поблагодарили
    152 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если такой вот вопрос поднялся-
    Как корректно кинуть какой-нибудь процесс в IM2,например воспроизведение музыки+опрос клавы?
    Я раньше делал это в gens (лет 10 назад) -получалось,а счас чет не получается...
    Помню процедуру обработки брал из книги Как написать игру на ассемблере..
    Моё железо

    Скрытый текст


    ZX_Evolution rev.b + NEO_GS + TSFM
    Ленинград-128/256kb + AY + TR_Dos
    Delta_micro /repair status/
    Москва_48кb /repair status/
    [свернуть]

  2. #12
    Guru Аватар для null_device
    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    3,095
    Спасибо Благодарностей отдано 
    21
    Спасибо Благодарностей получено 
    83
    Поблагодарили
    67 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Как корректно кинуть какой-нибудь процесс в IM2,например воспроизведение музыки+опрос клавы?
    Я делал так:

    Скрытый текст

    Блок на который указывает вектор прерываний.

    Код:
    push ix ;cохраняются на стеке значения всех регистры процессора
    push iy ;либо тех, которые изменются при выполнении ПП по адресу nn
    push bc 
    push de
    push hl
    push af
    exx
    push bc
    push de
    push hl
    ex af,af'
    push af
    call nn ;адрес вызываемый каждое прерывание (собственно, переход на ПП "повешаную" на прерывания)
    pop af ;восстанавливаются значения регистров процессора
    pop hl ;до момента прихода прерывания
    pop de
    pop bc
    ex af,af'
    pop af
    exx
    pop hl
    pop de
    pop bc
    pop iy
    pop ix
    jp 38 ;переход по стандартному адресу обработки прерывания im1 (команда rst 56)
    Для "запуска" и "остановки" писал нечто подобное:

    Код:
    di ; запретить прерывания
    call nn ;адрес "инициализации" мелодии
    ld a,m ;число m, вектор прерываний
    ld i,a
    im 2 ;включение режима
    ei ;разрешить прерывания
    ret
    ----
    Код:
    di
    call nn ; адрес "заглушающий" каналы ПГЗ
    ld a,3F ;установка "стандартного" вектора прерываний для нормальной работы в tr-dos
    ld i,a
    im 1 ;выключение режима im2
    ei
    ret
    [свернуть]
    Последний раз редактировалось null_device; 21.01.2011 в 13:42.
    Когда есть, но не знаешь где - это все равно, что нету.

  3. #13
    Activist Аватар для ace210
    Регистрация
    17.06.2009
    Адрес
    Москва
    Сообщений
    400
    Спасибо Благодарностей отдано 
    365
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот все разъяснения
    http://zx.pk.ru/showpost.php?p=212708&postcount=87

Страница 2 из 2 ПерваяПервая 12

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 1
    Последнее: 03.05.2009, 23:06
  2. IM2, вектор прерывания
    от Jukov в разделе Программирование
    Ответов: 18
    Последнее: 20.09.2006, 09:32

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •