;--------------------------------------------------------------------
 
; Описание: Модуль отображения анализатора
 
; Автор порта: Тарасов М.Н.(Mick),2010
 
;--------------------------------------------------------------------
 
 
 
;-------------------------------------------------------------------
 
; описание: Обновление параметров анализатора
 
; параметры: нет
 
; возвращаемое  значение: нет
 
;---------------------------------------------------------------------
 
Analyzer_update:
 
                ld      hl,EAmplitude_ch0
 
 
 
                ld      a,(hl)                          ;+00h - Amplitude 0 right/left
 
                and     0Fh
 
                ld      c,a
 
                ld      a,(hl)                          ;+00h - Amplitude 0 right/left                          
 
                and     0F0h
 
                rrca    
 
                rrca    
 
                rrca
 
                rrca    
 
                cp      c
 
                jr      nc,Analyzer_up_ch0
 
                ld      a,c     
 
Analyzer_up_ch0:
 
                ld      (Analyzer_ch0_vol),a            ;Amplitude 0
 
 
 
                inc     hl
 
                ld      a,(hl)                          ;+01h - Amplitude 1 right/left
 
                and     0Fh
 
                ld      c,a
 
                ld      a, (hl)                         ;+01h - Amplitude 1 right/left
 
                and     0F0h
 
                rrca    
 
                rrca    
 
                rrca    
 
                rrca    
 
                cp      c
 
                jr      nc,Analyzer_up_ch1
 
                ld      a,c     
 
Analyzer_up_ch1:
 
                ld      (Analyzer_ch1_vol),a            ;Amplitude 1 
 
 
 
                inc     hl
 
                ld      a,(hl)                          ;+02h - Amplitude 2 right/left
 
                and     0Fh
 
                ld      c,a
 
                ld      a,(hl)                          ;+02h - Amplitude 2 right/left
 
                and     0F0h
 
                rrca    
 
                rrca    
 
                rrca    
 
                rrca    
 
                cp      c
 
                jr      nc,Analyzer_up_ch2
 
                ld      a,c     
 
Analyzer_up_ch2:
 
                ld      (Analyzer_ch2_vol),a            ;Amplitude 2  
 
 
 
                inc     hl
 
                ld      a, (hl)                         ;+03h - Amplitude 3 right/left
 
                and     0Fh
 
                ld      c,a
 
                ld      a, (hl)                         ;+03h - Amplitude 3 right/left
 
                and     0F0h
 
                rrca    
 
                rrca    
 
                rrca    
 
                rrca    
 
                cp      c
 
                jr      nc,Analyzer_up_ch3
 
                ld      a,c     
 
Analyzer_up_ch3:
 
                ld      (Analyzer_ch3_vol),a            ;Amplitude 3  
 
 
 
                inc     hl
 
                ld      a, (hl)                         ;+04h - Amplitude 4 right/left
 
                and     0Fh
 
                ld      c,a
 
                ld      a, (hl)
 
                and     0F0h
 
                rrca    
 
                rrca    
 
                rrca    
 
                rrca    
 
                cp      c
 
                jr      nc,Analyzer_up_ch4
 
                ld      a,c     
 
Analyzer_up_ch4:
 
                ld      (Analyzer_ch4_vol),a          ;Amplitude 4  
 
 
 
                inc     hl
 
                ld      a, (hl)                         ;+05h - Amplitude 5 right/left
 
                and     0Fh
 
                ld      c,a
 
                ld      a, (hl)
 
                and     0F0h
 
                rrca    
 
                rrca    
 
                rrca    
 
                rrca    
 
                cp      c
 
                jr      nc,Analyzer_up_ch5
 
                ld      a,c     
 
Analyzer_up_ch5:
 
                ld      (Analyzer_ch5_vol),a            ;Amplitude 5  
 
                ret
 
;-------------------------------------------------------------------
 
; описание: Отображение анализатора
 
; параметры: нет
 
; возвращаемое  значение: нет
 
;---------------------------------------------------------------------
 
Analyzer_view:
 
                ld      a,(Analyzer_ch0_vol)
 
                ld      de,4042h
 
                call    Analyzer_draw
 
 
 
                ld      a,(Analyzer_ch1_vol)
 
                ld      de,4042h + 17h
 
                call    Analyzer_draw
 
 
 
                ld      a,(Analyzer_ch2_vol)
 
                ld      de,4842h
 
                call    Analyzer_draw
 
 
 
                ld      a,(Analyzer_ch3_vol)
 
                ld      de,4842h + 17h
 
                call    Analyzer_draw
 
 
 
                ld      a,(Analyzer_ch4_vol)
 
                ld      de,5042h
 
                call    Analyzer_draw
 
 
 
                ld      a,(Analyzer_ch5_vol)
 
                ld      de,5042h + 17h
 
;-------------------------------------------------------------------
 
; описание: Отрисовка левого канала анализатора
 
; параметры: HL - адрес экрана
 
;            C - позиция в индикаторе
 
; возвращаемое  значение: нет
 
;---------------------------------------------------------------------
 
Analyzer_draw:
 
 
 
                ld      l,a
 
                ld      h,0
 
                add     hl,hl
 
                ld      bc,Animation_table_phase
 
                add     hl,bc
 
                ld      a,(hl)
 
                inc     hl
 
                ld      h,(hl)
 
                ld      l,a
 
                ex      de,hl
 
 
 
                ld      b,16                            ;размерность по Y
 
Analyzer_loop_Y:
 
                push    hl
 
                ex      hl,de
 
                ldi
 
                ldi
 
                ldi
 
                ldi
 
                ldi
 
                ex      hl,de
 
                pop     hl
 
                inc     h
 
                ld      a,h
 
                and     7
 
                jr      nz,Analyzer_next_line
 
                ld      a,l
 
                add     20h
 
                ld      l,a
 
                jr      c,Analyzer_next_line
 
                ld      a,h
 
                sub     8
 
                ld      h,a
 
Analyzer_next_line:
 
                djnz    Analyzer_loop_Y
 
                ret         
 
;-------------------------------------------------------------------
 
; описание: Отрисовка левого канала анализатора
 
; параметры: HL - адрес экрана
 
;            C - позиция в индикаторе
 
; возвращаемое  значение: нет
 
;---------------------------------------------------------------------
 
;-------------------------------------------------------------------
 
; описание: Отрисовка левого канала анализатора
 
; параметры: HL - адрес экрана
 
;            C - позиция в индикаторе
 
; возвращаемое  значение: нет
 
;---------------------------------------------------------------------
 
Analyzer_draw_flash:
 
                ld      a,(Analyzer_ch0_vol)
 
                ld      e,a
 
                ld      a,(Analyzer_ch3_vol)
 
                add     e
 
                and     0Fh
 
                ld      hl,Analyzer_table
 
                ld      e,a
 
                ld      d,0
 
                add     hl,de
 
                ld      a,(hl)
 
                ld      hl,580Eh
 
                ld      (hl),a
 
                inc     l
 
                ld      (hl),a
 
 
 
                ld      a,(Analyzer_ch1_vol)
 
                ld      e,a
 
                ld      a,(Analyzer_ch4_vol)
 
                add     e
 
                and     0Fh
 
                ld      hl,Analyzer_table
 
                ld      e,a
 
                ld      d,0
 
                add     hl,de
 
                ld      a,(hl)
 
                ld      hl,5814h
 
                ld      (hl),a
 
                inc     l
 
                inc     l
 
                ld      (hl),a
 
                inc     l
 
                ld      (hl),a
 
 
 
                ld      a,(Analyzer_ch2_vol)
 
                ld      e,a
 
                ld      a,(Analyzer_ch5_vol)
 
                add     e
 
                and     0Fh
 
                ld      hl,Analyzer_table
 
                ld      e,a
 
                ld      d,0
 
                add     hl,de
 
                ld      a,(hl)
 
                ld      hl,5ACAh
 
                ld      (hl),a
 
                inc     l
 
                ld      (hl),a
 
                inc     l
 
                ld      (hl),a
 
                inc     l
 
                ld      (hl),a
 
                inc     l
 
                ld      (hl),a
 
                inc     l
 
                ld      (hl),a
 
                inc     l
 
                ld      (hl),a
 
                inc     l
 
                ld      (hl),a
 
                inc     l
 
                ld      (hl),a
 
                inc     l
 
                ld      (hl),a
 
                inc     l
 
                ld      (hl),a
 
                inc     l
 
                ld      (hl),a
 
                ld      l,0EAh
 
                ld      (hl),a
 
                inc     l
 
                ld      (hl),a
 
                inc     l
 
                ld      (hl),a
 
                inc     l
 
                ld      (hl),a
 
                inc     l
 
                ld      (hl),a
 
                inc     l
 
                ld      (hl),a
 
                inc     l
 
                ld      (hl),a
 
                inc     l
 
                ld      (hl),a
 
                inc     l
 
                ld      (hl),a
 
                inc     l
 
                ld      (hl),a
 
                inc     l
 
                ld      (hl),a
 
                inc     l
 
                ld      (hl),a
 
 
 
                ret
 
 
 
;-------------------------------------------------------------------
 
; описание: Обновление параметров анализатора
 
; параметры: нет
 
; возвращаемое  значение: нет
 
;---------------------------------------------------------------------
 
Analyzer_init:
 
                ld      b, 6
 
                ld      hl,Analyzer_ch0_vol
 
 
 
Analyzer_init_loop:
 
                ld      (hl),0
 
                inc     hl
 
                djnz    Analyzer_init_loop
 
                ret
 
;-------------------------------------------------------------------
 
; описание:  Переменные правого и левого каналов анализатора
 
;---------------------------------------------------------------------
 
Analyzer_table:
 
                db      47h,47h,47h,47h,46h,46h,45h,45h,44h,44h,43h,43h,42h,42h,41h,41h 
 
;-------------------------------------------------------------------
 
; описание: Таблица адресов на фазы анализатора
 
;---------------------------------------------------------------------
 
Animation_table_phase:
 
                dw      Analyzer_phase_00               ;0
 
                dw      Analyzer_phase_01               ;1
 
                dw      Analyzer_phase_01               ;2
 
                dw      Analyzer_phase_02               ;3
 
                dw      Analyzer_phase_02               ;4
 
                dw      Analyzer_phase_03               ;5
 
                dw      Analyzer_phase_04               ;6
 
                dw      Analyzer_phase_05               ;7
 
                dw      Analyzer_phase_06               ;8
 
                dw      Analyzer_phase_07               ;9
 
                dw      Analyzer_phase_08               ;10
 
                dw      Analyzer_phase_09               ;11
 
                dw      Analyzer_phase_09               ;12
 
                dw      Analyzer_phase_10               ;13
 
                dw      Analyzer_phase_10               ;14
 
                dw      Analyzer_phase_11               ;15
 
 
 
 
 
Analyzer_phase_00:
 
                db      0AAh,01h,0FFh,80h,55h
 
                db      0F4h,07h,00h,0E0h,2Fh
 
                db      0E8h,1Ch,42h,38h,17h
 
                db      50h,70h,42h,0Eh,0Ah
 
                db      0A1h,0C8h,00h,13h,85h
 
                db      45h,08h,00h,10h,0C2h
 
                db      82h,00h,00h,00h,41h
 
                db      01h,00h,00h,00h,82h
 
                db      80h,80h,00h,01h,01h
 
                db      00h,40h,00h,00h,00h
 
                db      00h,20h,00h,00h,01h
 
                db      00h,10h,00h,00h,00h
 
                db      00h,08h,00h,00h,01h
 
                db      00h,04h,00h,00h,00h
 
                db      00h,02h,00h,00h,01h
 
                db      00h,01h,00h,00h,00h
 
Analyzer_phase_01:
 
                db      0AAh,01h,0FFh,80h,55h
 
                db      0F4h,07h,00h,0E0h,2Fh
 
                db      0E8h,1Ch,42h,38h,17h
 
                db      50h,90h,42h,0Eh,0Ah
 
                db      0A1h,48h,00h,13h,85h
 
                db      43h,48h,00h,10h,0C2h
 
                db      82h,20h,00h,00h,41h
 
                db      01h,10h,00h,00h,82h
 
                db      80h,90h,00h,01h,01h
 
                db      00h,08h,00h,00h,00h
 
                db      00h,04h,00h,00h,01h
 
                db      00h,04h,00h,00h,00h
 
                db      00h,02h,00h,00h,01h
 
                db      00h,01h,00h,00h,00h
 
                db      00h,01h,00h,00h,01h
 
                db      00h,00h,80h,00h,00h
 
Analyzer_phase_02:
 
                db      0AAh,01h,0FFh,80h,55h
 
                db      0F4h,07h,00h,0E0h,2Fh
 
                db      0E8h,2Ch,42h,38h,17h
 
                db      50h,50h,42h,0Eh,0Ah
 
                db      0A1h,0D0h,00h,13h,85h
 
                db      43h,08h,00h,10h,0C2h
 
                db      82h,08h,00h,00h,41h
 
                db      01h,04h,00h,00h,82h
 
                db      80h,84h,00h,01h,01h
 
                db      00h,02h,00h,00h,00h
 
                db      00h,02h,00h,00h,01h
 
                db      00h,01h,00h,00h,00h
 
                db      00h,01h,00h,00h,01h
 
                db      00h,00h,80h,00h,00h
 
                db      00h,00h,80h,00h,01h
 
                db      00h,00h,40h,00h,00h
 
Analyzer_phase_03:
 
                db      0AAh,01h,0FFh,80h,55h
 
                db      0F4h,05h,00h,0E0h,2Fh
 
                db      0E8h,14h,42h,38h,17h
 
                db      50h,72h,42h,0Eh,0Ah
 
                db      0A1h,0CAh,00h,13h,85h
 
                db      43h,0Ah,00h,10h,0C2h
 
                db      82h,01h,00h,00h,41h
 
                db      01h,01h,00h,00h,82h
 
                db      80h,81h,00h,01h,01h
 
                db      00h,00h,80h,00h,00h
 
                db      00h,00h,80h,00h,01h
 
                db      00h,00h,40h,00h,00h
 
                db      00h,00h,40h,00h,01h
 
                db      00h,00h,40h,00h,00h
 
                db      00h,00h,20h,00h,01h
 
                db      00h,00h,20h,00h,00h
 
Analyzer_phase_04:
 
                db      0AAh,00h,0BFh,80h,55h
 
                db      0F4h,06h,80h,0E0h,2Fh
 
                db      0E8h,1Ch,82h,38h,17h
 
                db      50h,70h,42h,0Eh,0Ah
 
                db      0A1h,0C8h,40h,13h,85h
 
                db      43h,08h,40h,10h,0C2h
 
                db      82h,00h,40h,00h,41h
 
                db      01h,00h,40h,00h,82h
 
                db      80h,80h,20h,01h,01h
 
                db      00h,00h,20h,00h,00h
 
                db      00h,00h,20h,00h,01h
 
                db      00h,00h,20h,00h,00h
 
                db      00h,00h,20h,00h,01h
 
                db      00h,00h,10h,00h,00h
 
                db      00h,00h,10h,00h,01h
 
                db      00h,00h,10h,00h,00h
 
Analyzer_phase_05:
 
                db      0AAh,01h,0AFh,80h,55h
 
                db      0F4h,07h,20h,0E0h,2Fh
 
                db      0E8h,1Ch,62h,38h,17h
 
                db      50h,70h,62h,0Eh,0Ah
 
                db      0A1h,0C8h,20h,13h,85h
 
                db      43h,08h,20h,10h,0C2h
 
                db      82h,00h,20h,00h,41h
 
                db      01h,00h,20h,00h,82h
 
                db      80h,80h,10h,01h,01h
 
                db      00h,00h,10h,00h,00h
 
                db      00h,00h,10h,00h,01h
 
                db      00h,00h,10h,00h,00h
 
                db      00h,00h,10h,00h,01h
 
                db      00h,00h,10h,00h,00h
 
                db      00h,00h,10h,00h,01h
 
                db      00h,00h,10h,00h,00h
 
Analyzer_phase_06:
 
                db      0AAh,01h,0F5h,80h,55h
 
                db      0F4h,07h,04h,0E0h,2Fh
 
                db      0E8h,1Ch,46h,38h,17h
 
                db      50h,70h,46h,0Eh,0Ah
 
                db      0A1h,0C8h,04h,13h,85h
 
                db      43h,08h,04h,10h,0C2h
 
                db      82h,00h,04h,00h,41h
 
                db      01h,00h,04h,00h,82h
 
                db      80h,80h,08h,01h,01h
 
                db      00h,00h,08h,00h,00h
 
                db      00h,00h,08h,00h,01h
 
                db      00h,00h,08h,00h,00h
 
                db      00h,00h,08h,00h,01h
 
                db      00h,00h,08h,00h,00h
 
                db      00h,00h,08h,00h,01h
 
                db      00h,00h,08h,00h,00h
 
Analyzer_phase_07:
 
                db      0AAh,01h,0FDh,00h,55h
 
                db      0F4h,07h,01h,60h,2Fh
 
                db      0E8h,1Ch,41h,38h,17h
 
                db      50h,70h,42h,0Eh,0Ah
 
                db      0A1h,0C8h,02h,13h,85h
 
                db      43h,08h,02h,10h,0C2h
 
                db      82h,00h,02h,00h,41h
 
                db      01h,00h,02h,00h,82h
 
                db      80h,80h,04h,01h,01h
 
                db      00h,00h,04h,00h,00h
 
                db      00h,00h,04h,00h,01h
 
                db      00h,00h,04h,00h,00h
 
                db      00h,00h,04h,00h,01h
 
                db      00h,00h,08h,00h,00h
 
                db      00h,00h,08h,00h,01h
 
                db      00h,00h,08h,00h,00h
 
Analyzer_phase_08:
 
                db      0AAh,01h,0FFh,80h,55h
 
                db      0F4h,07h,00h,0A0h,2Fh
 
                db      0E8h,1Ch,42h,28h,17h
 
                db      50h,70h,42h,4Eh,0Ah
 
                db      0A1h,0C8h,00h,53h,85h
 
                db      43h,08h,00h,50h,0C2h
 
                db      82h,00h,00h,80h,41h
 
                db      01h,00h,00h,80h,82h
 
                db      80h,80h,00h,81h,01h
 
                db      00h,00h,01h,00h,00h
 
                db      00h,00h,01h,00h,01h
 
                db      00h,00h,02h,00h,00h
 
                db      00h,00h,02h,00h,01h
 
                db      00h,00h,02h,00h,00h
 
                db      00h,00h,04h,00h,01h
 
                db      00h,00h,04h,00h,00h
 
Analyzer_phase_09:
 
                db      0AAh,01h,0FFh,80h,55h
 
                db      0F4h,07h,00h,0E0h,2Fh
 
                db      0E8h,1Ch,42h,34h,17h
 
                db      50h,70h,42h,0Ah,0Ah
 
                db      0A1h,0C8h,00h,0Bh,85h
 
                db      43h,08h,00h,10h,0C2h
 
                db      82h,00h,00h,10h,41h
 
                db      01h,00h,00h,20h,82h
 
                db      80h,80h,00h,21h,01h
 
                db      00h,00h,00h,40h,00h
 
                db      00h,00h,00h,40h,01h
 
                db      00h,00h,00h,80h,00h
 
                db      00h,00h,00h,80h,01h
 
                db      00h,00h,01h,00h,00h
 
                db      00h,00h,01h,00h,01h
 
                db      00h,00h,02h,00h,00h
 
Analyzer_phase_10:
 
                db      0AAh,01h,0FFh,80h,55h
 
                db      0F4h,07h,00h,0E0h,2Fh
 
                db      0E8h,1Ch,42h,38h,17h
 
                db      50h,70h,42h,0Dh,0Ah
 
                db      0A1h,0C8h,00h,12h,85h
 
                db      43h,08h,00h,12h,0C2h
 
                db      82h,00h,00h,04h,41h
 
                db      01h,00h,00h,08h,82h
 
                db      80h,80h,00h,09h,01h
 
                db      00h,00h,00h,10h,00h
 
                db      00h,00h,00h,20h,01h
 
                db      00h,00h,00h,20h,00h
 
                db      00h,00h,00h,40h,01h
 
                db      00h,00h,00h,80h,00h
 
                db      00h,00h,00h,80h,01h
 
                db      00h,00h,01h,00h,00h
 
Analyzer_phase_11:
 
                db      0AAh,01h,0FFh,80h,55h
 
                db      0F4h,07h,00h,0E0h,2Fh
 
                db      0E8h,1Ch,42h,38h,17h
 
                db      50h,70h,42h,0Eh,0Ah
 
                db      0A1h,0C8h,00h,13h,85h
 
                db      43h,08h,00h,10h,0A2h
 
                db      82h,00h,00h,00h,41h
 
                db      01h,00h,00h,00h,82h
 
                db      80h,80h,00h,01h,01h
 
                db      00h,00h,00h,02h,00h
 
                db      00h,00h,00h,04h,01h
 
                db      00h,00h,00h,08h,00h
 
                db      00h,00h,00h,10h,01h
 
                db      00h,00h,00h,20h,00h
 
                db      00h,00h,00h,40h,01h
 
                db      00h,00h,00h,80h,00h
 
 
 
;-------------------------------------------------------------------
 
; описание:  Переменные правого и левого каналов анализатора
 
;---------------------------------------------------------------------
 
Analyzer_ch0_vol:
 
                db      0
 
Analyzer_ch1_vol:
 
                db      0
 
Analyzer_ch2_vol:
 
                db      0
 
Analyzer_ch3_vol:
 
                db      0
 
Analyzer_ch4_vol:
 
                db      0
 
Analyzer_ch5_vol:
 
                db      0