User Tag List

Показано с 1 по 10 из 22

Тема: Использование стека и прерывания

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    2,080
    Спасибо Благодарностей отдано 
    87
    Спасибо Благодарностей получено 
    479
    Поблагодарили
    145 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Использование стека и прерывания

    Почитав замечательную статью в журнале DeJa Vu #0A "Программирование - быстрая процедура печати спрайтов через стек от WoodlandStudio." - решил попробовать реализовать. В итоге получаю видеоэффекты и зависание после секунд работы.

    Суть моей задачи такова. Для примера на прерываниях висит музыка и кое какой вывод графики стеком. Всё работает.

    Eсть необходимость "читать" через стек данные из памяти в регистр DE во время прерывания... И тут наступают грабли.

    Для примера соорудил код:

    Код:
    INT_VECTOR=#BE00
    INT_HANDLER=#BFBF
    STACK_MAIN=#7FFF
    STACK_IM2=INT_HANDLER-1
    
    	ORG 	#8000
    START:
    	DI
    	LD SP,STACK_MAIN
    
               LD HL,INT_VECTOR
               LD BC,#00BF
               LD (HL),C
               INC HL
               DJNZ $-2
               LD (HL),C
    
    	LD A,INT_VECTOR/256
    	LD I,A
    	IM 2
    	EI
    
    MAIN_LOOP:
    ; тут читаем стеком данные из памяти и кидаем на экран для примера
    ; EI:HALT тут нет, т.к прерывание должно приходить во время работы чтения стеком.
    ;Если LD SP,SPR1 закоментить зависать перестает, но ясно что выводит мусор :)
    
    	LD (STK1+1),SP
    	LD SP,SPR1
    	LD HL,#4000
    	DUP 16
    	POP DE
    	LD (HL),E
    	INC HL
    	LD (HL),D
    	INC HL
    	EDUP
    STK1	LD SP,#0000
    	JP MAIN_LOOP
    
    SPR1	DS #20,#FF
    
    MAIN_ISR:
    	PUSH IX
    	PUSH HL
    	PUSH DE
    	PUSH BC
    	PUSH AF
    	EXX
    	EX AF,AF'
    	PUSH IY
    	PUSH HL
    	PUSH DE
    	PUSH BC
    	PUSH AF
    ; тут музыка и графика стеком выводится
    
    	POP AF
    	POP BC
    	POP DE
    	POP HL
    	POP IY
    	EX AF,AF'
    	EXX
    	POP AF
    	POP BC
    	POP DE
    	POP HL
    	POP IX
    	RET
    
    ; Обработчик прерываний
    	ORG INT_HANDLER
               EX DE,HL
               EX (SP),HL
               LD (SaveRET+1),HL
               EX DE,HL
               POP DE
               LD (SaveSP+1),sp
               LD SP,STACK_IM2
               CALL MAIN_ISR
    SaveSP LD SP,#0000
               EI
    SaveRET JP #0000
    В чём же может быть проблема? Что-то к вечеру совсем не соображу...
    Последний раз редактировалось drbars; 09.12.2012 в 16:49.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

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

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

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

Похожие темы

  1. Использование USB FDD
    от Максагор в разделе Внешние накопители
    Ответов: 62
    Последнее: 02.07.2024, 14:22
  2. Прерывания IM 2
    от GM BIT в разделе Программирование
    Ответов: 12
    Последнее: 21.01.2011, 23:52
  3. Ответов: 1
    Последнее: 03.05.2009, 23:06
  4. IM2, вектор прерывания
    от Jukov в разделе Программирование
    Ответов: 18
    Последнее: 20.09.2006, 09:32

Ваши права

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