Opex
#07
19 июня 2002 |
|
Всякий бред - А сейчас совсем чуточку бреда, ну чтобы оттянуть штурм на ВRАDS TАLE...
А сейчас совсем чуточку бреда,ну для то- что,чтобы оттянуть штурм на 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быть вот так,и разница этих регистров дол- жна быть 32(!!!!!).Это обязательно. Когда поменяете,вычислите сколько линий вам нужно скролировать,и поменяйте ----, вот там находится счетчик линий. А если вам нужно скролировать вверх(на са- мом деле-то вы понимаете,что вниз).То нуж- но поменять call'ы,вместо DOWNHL,поставить UPHL(об'ясняю все как ламерам :)).И соо- тветственно поменять адреса.Тут,надеюсь по нимаете,что здесь наооборот,т.е.HL>DE.А, елси не понимает,то разберитесь в ней. И самое главное,про прерывания не забывай- те.Они ой как хреново на эту прогу дейст- вуют,потому я ее и не использую. Ну что ж закончу номер я на этом,BARDS ТА- LE сегодня не будет,т.к. карту готовлю.А также кое-какие еще прибамбасы. Так что только в следующем номере,а может и нет,я,надеюсь,что будет.Да и честно гово ря,я не знаю когда выйдет следующий номер. Этот номер вышел через три дня после преды дущего,просто мне писать было что,да и в следующем есть что писать,просто я скоро в Питер уеду(на следующей неделе),потому ско рее всего не успею выпустить 9-ый........ Ладно,поживем-увидим. Все,всем пока,увидимся в 9-ом номере.
Другие статьи номера:
От авторов - Что это такое у вас на экране. До боли знакомая заставка... |
Обзор глюков - И че в этих глюках такого интересного, я все никак не пойму, ведь они наооборот отталкивают народ от того, чтобы они пользовались этими прогами... |
Зона Infinity - ИМПЕРИЯ 2000, ПЛУTОHИЯ, MООNWIND, SHАNGHАI KАRАTE, CTРАHА МИФОВ. |
Всякий бред - А сейчас совсем чуточку бреда, ну чтобы оттянуть штурм на ВRАDS TАLE... |
Послесловие - Авторы и софт. |
Похожие статьи:
В этот день... 21 ноября