Plutonium #01

Coding - Раздeл для начинаюших кодeров.

<b>Coding</b> - Раздeл для начинаюших кодeров.

+===------------=========-----------====+ 
|                CODING...              | 
+===------======---------======-----====+ 
X-treamer/Infotek                         
                                          
          Раздел для начинаюших           
                кодеров.                  
                                          
  Итак, вот снова в нашей газете появился 
этот раздел... И предназначен он тем, кто 
только  еше  сел  за ассемблер и пытается 
что-нибудь написать...                    
Перейдем  сразу  к  более  сложному:  ис- 
пользование  прерываний второго рода. как 
известно, каждый 20 миллисекунд проЦессор 
прерывает исполнение инструкЦий и перехо- 
дит на спеЦиальную - `теневую` проЦедуру. 
При  включенном IM 1(IM 0) это будет про- 
Цедура  по адресу 0038h - опрос клавиату- 
ры.  Но  Z80 позволяет его переназначить. 
Т.e.  вы  можете  написать другую теневую 
проЦедуру, например, проигрыватель ST му- 
зона.  Сделать  это можно следуюшим обра- 
зом:                                      
                                          
1.ПроЦедура переназначения прерываний:    
      DI      ;запрeшаeм прерывания       
      LD A,DD                             
      LD I,A  ;переназначаем вектор       
               прерывания (рег.I)         
      IM 2    ;запускаем прерывания второ-
              ;го рода.                   
      EI      ;разрешаем прерывания       
      RET                                 
                                          
2.По адресу DDFF-DEOO (см.выше рег A) за- 
носиться адрес проЦедуры обработки преры- 
ваний.  А по этому адресу помeшаeтся про- 
Цедура, которая сохраняет все регистры на 
стеке и вызывает оп-int проЦедуру, а пос- 
ле  этого  восстанавливает регистры в об- 
ратном  порядке.  Выглядит  это следуюшим 
образом:                                  
      PUSH ВС ;сохраняем все регистры     
      PUSH DE ;на стеке                   
      PUSH AF                             
      PUSH HL                             
      PUSH IX                             
      PUSH IY                             
      CALL play ;вызываем проигрыватель   
      [ CALL ... ]                        
      [ CALL ... ]                        
      РОР  IY ;восстанавливаем все рег.   
      РОР  IX ;в обратном порядке         
      РОР  HL ;со стека                   
      РОР  AF                             
      РОР  DE                             
      РОР  ВС                             
      JP 0038h ;переходим на опрос клави- 
                атуры Васика :).          
                                          
   Вот  таким  образом выглядит программа 
переназначения  прерываний.  А теперь на- 
последок проЦедура эффекта двойного экра- 
на:                                       
 под адрес, например 42240 загружаем один 
экран,  а  под адрес С000h второй экран и 
набираем слeдуюшую проЦедуру:             
                                          
      LD HL,42240                         
      LD DE,16384                         
      LD ВС,6912                          
      LDIR    ;Переносим экран из буфера. 
L1:   LD ВС,7FFDh                         
      LD A,23     ;включаем первый экран  
      OUT (С),A   ;по адресу 4000h        
      HALT    ;даем задержку до int`а     
      LD A,31                             
      OUT (С),A ;включаем второй экран    
      HALT                                
      JP L1                               
      END                                 
                                          
  Двойной  экран  готов.  Теперь  для уже 
опытных  кодеров предлагаю эффект двухэк- 
рания+псевдо мультиколора:                
                                          
      DI                                  
L1:   LD ВС,7FFDh                         
      LD A,23                             
      OUT (С),A                           
      NOP                                 
      :    } 7 нулей                      
      NOP                                 
      LD A,31                             
      OUT (С),A                           
      NOP                                 
      NOP                                 
      JP L1                               
      END                                 
                                          
  И  что вы видите ?! Один экран просмат- 
риваeтся  сквозь  другой  не  моргая  !!! 
Единственное,  что  я  не  смог,  так это 
синхронизировать   этот  эффект  -  линии 
слегка  косые. А теперь тот же эффект для 
бордюра:                                  
                                          
      DI                                  
L1:   LD ВС,FEH                           
      LD A,1                              
      OUT (С),A                           
      .... - 7 пор`ов                     
      LD A,2                              
      OUT (С),A                           
      NOP                                 
      NOP                                 
      JP L1                               
      END                                 
                                          
  Полосы  тоже плохо синхронизированы, но 
хоть не едут !!!                          
  Ну,  на этот номер с вас хватит, пeрeй- 
дем к следуюшему разделу...               
                                          



Другие статьи номера:

От авторов - Привeт всeм тeм, кто сeйчас читаeт пeрвый номeр eкатeринбуржской газeты <<ПЛУТОНИУМ>>.

Новости - О нeдeлe прошeдшeй...

Софт - Win-bооt fоr Gаmmа-dоs.

Party - Funtop`98.

Ликбeз - Почeму Windоws - mustdie fоrever?!

Жeлeзо - Кворум, "Фича V1.0".

Coding - Раздeл для начинаюших кодeров.

Цитаты - В этой рубрикe рeчь пойдeт о Цитатах из разных газeт и журналов в юмористичeской, а иногда и остро-сатиричeской формe.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
О дураках - Я всегда знал, что сpеди людей много идиотов, но чтобы столько... и таких...
Дискуссия - "LZB о демосцене и о всём..."
Наши новости - О переделанных на диск играх.
очередной Marazm - Зеркало.
News - Ldir снимает с аукциона свой Pentagon. Не успело пройти года со дня смерти Dr. Envelope.

В этот день...   20 апреля