Из журнала 3bit#1, Украина, Харьковская область, 04.01.2005 Опять Scroll... (c) cooper/RSM/P7S ------------------------------------------ Предлагаю вашему вниманию небольшую про- цедурку для сдвига экрана. В чем её преи- мущества, по сравнению с другими? Во-пер- вых, она универсальна, т. е. подходит для скрола как вниз, так и вверх. Всё зависит от адресов которые вы зададите ей при ста- рте. Во-вторых, она за раз сдвигает одну строку, т. е. если надо сдвинуть не весь экран, а допустим 2/3, то нужно соответст- венно вызвать её в цикле 16 раз (может это и не рационально, но зато удобно). В-тре- тьих, она сдвигает и графику, и атрибуты. И делает это хитрым путем ;) Ладно, думаю, сами разберётесь как. Вот её листинг: LD DE,#4000 ;откуда LD HL,#4020 ;куда LD B,#17 ;кол-во строк MAIN PUSH BC CALL SCROLL ;вызов проц.сдвига CALL LL693E ;служебные процедуры (на стр. вверх) CALL LL6949 ;служебные процедуры (на стр. вниз) POP BC DJNZ MAIN RET ;а это собственно и есть служебные процедуры ;где какая, разберетесь сами, ok? LL692A LD A,L SUB #20 LD L,A RET NC LD A,H SUB #08 LD H,A RET LL6934 LD A,E SUB #20 LD E,A RET NC LD A,D SUB #08 LD D,A RET LL693E INC H LD A,L SUB #E0 LD L,A RET NC LD A,H SUB #08 LD H,A RET LL6949 INC D LD A,E SUB #E0 LD E,A RET NC LD A,D SUB #08 LD D,A RET ;непосредственный scroll screen SCROLL PUSH HL PUSH DE LD A,D RRCA RRCA RRCA AND #03 OR #58 LD D,A LD A,H RRCA RRCA RRCA AND #03 OR #58 LD H,A DUP 32 LDI EDUP POP DE POP HL LD BC,#00F8 JP LOOP2 LOOP1 INC H INC D LOOP2 DUP 31 LDI EDUP LD A,(HL) LD (DE),A INC H INC D DUP 31 LDD EDUP LD A,(HL) LD (DE),A JP PE,LOOP1 RET И ещё момент - она используется в нашем журнале, т.е. вы можете оценить её быстро- действие на живом примере. Кстати, в жур- нале она работает медленее оригинала. Сами понимаете, музыка, scroll bar, бегущая строчка и прочая гадость в прерываниях... ------------------------------------------