Почитав замечательную статью в журнале 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Что-то к вечеру совсем не соображу...


Что-то к вечеру совсем не соображу...
Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 

.
