А сейчас совсем чуточку бреда,ну для то- что,чтобы оттянуть штурм на BRADS TALE. Вы знали,что в SE#1;2(SPECTRUM EXPERT), текст не печатается,а он просто LDIR'тся. Нет,ежу понятно,что нельзя просто так: взять и LDIR,перед этим он строится в памяти по нужному адресу,а потом при помо- щи LDIR печатается на экран.Он хреначит по 32 байта 8 строк.И это все гораздо быс- трее,чем печатать,но громоздко,потому не выгодно. Помниться в ZX#8,там была "ЭПОПЕЯ",там Ме- дноногов рассказывал как Ворон'а писал. ОН говорил,как совместить прерывания и стек.Довольно интересный метод,но я так и не вник в него,для меня это слишком слож- но,но вот Х-TRАDEя смотрю поняли. Значит,у них скрол экрана через стек.Имем- но таким методом,который более рационально подходит,т.е. LD DE,NNNNN PUSH DE nnnnn-число из экрана.Ну взяли мы из экра- на два байта и на стек,а стек у нас на эк- ране.И,когда придут прерывания у нас не будет лажи на экране ввиде бегущих пиксе- лов.А сейчас я предложу вам программу,на- писанную NOTSOFT'ом специално для газеты, но так и не вошедшую в газету по причине простой до безбожности-IM2.Или проще гово- ря прерывания.Смотрите ;***************************************** (c) 2002,NOTSOFT/ANOT GROUP ;***************************************** ORG #6000 DI LD HL,22528,DE,HL,ВС,767 INC DE:LD (HL),70:LDIR LD А,3:OUT (#FE) LD HL,#4000:LD В,184 FILL PUSH HL .32 LD А,R:LD (HL),А:INC HL РОР HL:CALL DOWNHL DEC В:JP NZ,FILL CALL DO LOOP1 LD А,#BF:IN (#FE):RRA:JR C,LOOP1 LLLL CALL #C000 LOOP LD А,#BF:IN (#FE):RRA:JR NC,LLLL LD А,#7F:IN (#FE):RRA:JR C,LOOP RET DO LD IX,#C000 LD (IX),#ED:INC IX LD (IX),#73:INC IX LD (IX),#FF:INC IX LD (IX),#FE:INC IX LD HL,#4000:; **** LD DE,#4020; **** LD В,184; ---- L2 LD (IX),#31:INC IX LD (IX),E:INC IX LD (IX),D:INC IX PUSH HL,DE LD C,16 L1 LD (IX),#E1:INC IX LD (IX),#22:INC IX LD (IX),L:INC IX LD (IX),H:INC IX INC HL,HL:DEC C JR NZ,L1 РОР HL:CALL DOWNHL; !!!! ЕХ DE,HL РОР HL:CALL DOWNHL; !!!! DJNZ L2 LD (IX),#ED:INC IX LD (IX),#7В:INC IX LD (IX),#FF:INC IX LD (IX),#FE:INC IX LD (IX),201 RET ;-------------------------------------- DOWNHL INC H:LD А,H:AND 7:RET NZ:LD А,L ADD А,32:LD L,А:RET C:LD А,H SUB 8:LD H,А RET UPHL DEC H:LD А,H:AND 7:СР 7:RET NZ LD А,L:SUB 32:LD L,А:RET C LD А,H:ADD А,8:LD H,А RET ;-------------------------------------- Программа написана на STORmv1.1. .32-значит,что 32 раза исполнится эта ко- манда,это наподобии REPT.Почему не исполь- зовали REPT,да потому,что у нас его нет. Хотя STORm понимает такую команду,но не работает,а жаль. В птограмме есть демонстрационный эффект именно для него и формируем экран(.32). На экране формируется всякая байда и после нажатия клавиши начинает скролироваться через стек,скрол быстрый,но ест недостаток Он с прерываниями не любит работать.Прога работать-то будет,все о.k.,но при приходе IM2 вы увидите на экране,где сейчас нахо- дятся прерывания.Потому и лажово-то все. Хотя,если у вас на прерываниях не висит музыка,а что-нибудь такое простое,то мож- но свобдно делать так: INT DI LD (STACK+1),SP LD SP,NNNNN PUSH AF PUSH ВС PUSH DE ....... РОР DE РОР ВС РОР AF STACK SP,0 EI RET Я не преводил все регистры,которые надо сохранить на стеке,потому что это дело уже личное.Кому что надо,тот то и сохраняет. И вот после этого вы на экране ничего не увидите.Но зачем сохранять стек,когда на- чинаем обрабатывать прерывания,если мы пред этим делаем DI ? Да так на всякий слу чай,все равно децл байт. Да,забыл сказать прога формирует по адресу #C000 блок кодов: LD SP,NNNNN РОР HL LD (ХХХХХ),HL И такой блок надолго,пока не будет сформи- ровано для всего экрана. nnnnn-адрес в экране. xxxxx-адрес в экране. Как вы понимает,что адреса-то разные. И еще,**** вот таким вот знаком указаны места,где можно поменять адреса. Эти адреса отвечают за сколько скролиро- вать будем,если мы скролируем вниз,т.е. изпользуем подпрограмму DOWNHL(на самом де ле это вверху да ладно),то HL