Born Dead #0G
31 марта 2000
  Звук  

Coding своими руками - Супер-быстрый MCC player.

════════════════════════════════════════════════════════════════
ЇЄ╒▐╟░░╟▐╒ЄєЇCODING СВОИМИ РУКАМИ-II ЇєЄ╒▐╟░░╟▐╒ЄєЇ
════════════════════════════════════════════════════════════════
                                                                
(c) MOn5+Er^Sa9e                                                
                                                                
                 Супер-быстрый player with MCC                  
                                                                
   Без вступлений и окончаний приведу самый распоследний вариант
плейера  для  MCC  метода!  Теперь им можно воспроизводить ВСЕ -
теорема Котельникова играет на нас!                             
                                                                
        EI      ;до запуска в порт AY n7 записать #FF!          
        HALT                                                    
        LD SP,START-SAMPLE-ADRESS                               
        LD IX,LOOP                                              
        LD DE,#08+256*('MCC_TBL+1)                              
        LD BC,#FFFD                                             
        OUT (C),E       ;вкл. 8 AY_порт (крайний канал)         
                                                                
LOOP:   POP HL                                                  
        LD E,L                                                  
        LD A,(DE)
        DEC D                                                   
        EX AF,AF'                                               
        LD A,(DE)                                               
        LD E,9                                                  
        OUT (253),A                                             
        EX AF,AF'                                               
        OUT (C),E                                               
        OUT (253),A                                             
        LD E,H                                                  
        LD A,(DE)                                               
        INC D                                                   
        EX AF,AF'                                               
        LD A,(DE)                                               
        LD E,8                                                  
        OUT (253),A                                             
        EX AF,AF'                                               
        OUT (C),E                                               
        OUT (253),A                                             
        JP (IX)                                                 
                                                                
Обработчик INT'а:                                               
                                                                
INT:    POP IY  ;взяли адр. возврата                            
        PUSH HL ;восстановили испорченный SAMPL                 
        LD HL,0                                                 
        ADD HL,SP                                               
        LD BC,END_SAMPLE_ADDRESS                                
        OR A                                                    
        SBC HL,BC                                               
        JR NC,END_INT                                           
        LD BC,#FFFD                                             
        POP HL                                                  
        JP (IY)                                                 
END_INT: выход из player'а                                      
                                                                
160 тактов на две выборки сэмпла.                               
80 тактов на выборку.                                           
Fдискрет.=3,5 МГц/80=43,75 кГц.                                 
                                                                
Плеер  использует  только один крайний канал AY, можно и два для
двойной громкости (на качество в принципе почти не влияет кол-во
крайних каналов...)                                             
                                                                
Единственный  недостаток,  можно слегка проскочить конец сэмпла,
т.к.  проверка  раз  в  INT, но недостаток легко исправляется: в
конце  сэмпла (а он обязательно беззнаковый 0..#FF, а не -128 до
+127) заполнен 896 байт "тишиной" - байтом #80 и всё. Почему 896
- т.к. в INT'е 71680 тактов (maximum на нетурбированной машине),
а 71680/80=896!            




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

Похожие статьи:
User Group - редактирование текстов.
Rest in Paint - Beard^AMD приобрел на днях автомобиль.
Обзор - демы с Funtop'1998: Tyrany, Adrenalize, Crazy Love, Morbid Visions, Airspace, Emergency, Katharsis, Entropy, The 5-th Element, Boom, TV-X, Garlic Respiration.

В этот день...   19 октября