;--------------------------------------------------------------------
; Описание: Модуль отображения анализатора
; Автор порта: Тарасов М.Н.(Mick),2010
;--------------------------------------------------------------------
;-------------------------------------------------------------------
; описание: Обновление параметров анализатора
; параметры: нет
; возвращаемое значение: нет
;---------------------------------------------------------------------
Analyzer_update:
ld hl,EAmplitude_ch0
ld a,(hl) ;+00h - Amplitude 0 right/left
and 0Fh
ld (Analyzer_ch0_left),a ;Amplitude 0 left
ld a,(hl) ;+00h - Amplitude 0 right/left
and 0F0h
rrca
rrca
rrca
rrca
ld (Analyzer_ch0_right),a ;Amplitude 0 right
inc hl
ld a,(hl) ;+01h - Amplitude 1 right/left
and 0Fh
ld (Analyzer_ch1_left),a ;Amplitude 1 left
ld a, (hl) ;+01h - Amplitude 1 right/left
and 0F0h
rrca
rrca
rrca
rrca
ld (Analyzer_ch1_right),a ;Amplitude 1 right
inc hl
ld a,(hl) ;+02h - Amplitude 2 right/left
and 0Fh
ld (Analyzer_ch2_left),a ;Amplitude 2 left
ld a,(hl) ;+02h - Amplitude 2 right/left
and 0F0h
rrca
rrca
rrca
rrca
ld (Analyzer_ch2_right),a ;Amplitude 2 right
inc hl
ld a, (hl) ;+03h - Amplitude 3 right/left
and 0Fh
ld (Analyzer_ch3_left),a ;Amplitude 3 left
ld a, (hl) ;+03h - Amplitude 3 right/left
and 0F0h
rrca
rrca
rrca
rrca
ld (Analyzer_ch3_right),a ;Amplitude 3 right
inc hl
ld a, (hl) ;+04h - Amplitude 4 right/left
and 0Fh
ld (Analyzer_ch4_left),a ;Amplitude 4 left
ld a, (hl)
and 0F0h
rrca
rrca
rrca
rrca
ld (Analyzer_ch4_right),a ;Amplitude 4 right
inc hl
ld a, (hl) ;+05h - Amplitude 5 right/left
and 0Fh
ld (Analyzer_ch5_left),a ;Amplitude 5 left
ld a, (hl)
and 0F0h
rrca
rrca
rrca
rrca
ld (Analyzer_ch5_right),a ;Amplitude 5 right
ret
;-------------------------------------------------------------------
; описание: Отображение анализатора
; параметры: нет
; возвращаемое значение: нет
;---------------------------------------------------------------------
Analyzer_view:
ld de,0FF0h
ld a,(Analyzer_ch0_left) ;Amplitude 0 left
ld hl,4200h
call Analyzer_left_draw
ld a, (Analyzer_ch1_left) ;Amplitude 1 left
ld hl,4220h
call Analyzer_left_draw
ld a,(Analyzer_ch2_left) ;Amplitude 2 left
ld hl,4240h
call Analyzer_left_draw
ld a,(Analyzer_ch3_left) ;Amplitude 3 left
ld hl,4260h
call Analyzer_left_draw
ld a,(Analyzer_ch4_left) ;Amplitude 4 left
ld hl,4280h
call Analyzer_left_draw
ld a,(Analyzer_ch5_left) ;Amplitude 5 left
ld hl,42A0h
call Analyzer_left_draw
ld a,(Analyzer_ch0_right) ;Amplitude 0 right
ld hl,421Fh
call Analyzer_right_draw
ld a,(Analyzer_ch1_right) ;Amplitude 1 right
ld hl,423Fh
call Analyzer_right_draw
ld a,(Analyzer_ch2_right) ;Amplitude 2 right
ld hl,425Fh
call Analyzer_right_draw
ld a,(Analyzer_ch3_right) ;Amplitude 3 right
ld hl,427Fh
call Analyzer_right_draw
ld a,(Analyzer_ch4_right) ;Amplitude 4 right
ld hl,429Fh
call Analyzer_right_draw
ld a,(Analyzer_ch5_right) ;Amplitude 5 right
ld hl,42BFh
call Analyzer_right_draw
ret
;-------------------------------------------------------------------
; описание: Отрисовка левого канала анализатора
; параметры: HL - адрес экрана
; A - размерность анализатора
; возвращаемое значение: нет
;---------------------------------------------------------------------
Analyzer_left_draw:
ld c,a
ld b,1
Analyzer_left_loop:
push hl
ld a,c
cp b
ld a,(hl)
jr c,Analyzer_left_clr0
and d
or 0C0h
ld (hl),a
inc h
ld a,(hl)
and d
or 0E0h
ld (hl),a
inc h
ld (hl),a
inc h
ld a,(hl)
and d
or 0C0h
ld (hl),a
Analyzer_left_next:
pop hl
inc b
push hl
ld a,c
cp b
ld a,(hl)
jr c,Analyzer_left_clr1
and e
or 0Ch
ld (hl),a
inc h
ld a,(hl)
and e
or 0Eh
ld (hl),a
inc h
ld (hl),a
inc h
ld a,(hl)
and e
or 0Ch
ld (hl),a
Analyzer_left_inc:
pop hl
inc l
inc b
ld a,b
cp 17
ret z
jr Analyzer_left_loop
Analyzer_left_clr0:
and d
ld (hl),a
inc h
ld a,(hl)
and d
ld (hl),a
inc h
ld (hl),a
inc h
ld a,(hl)
and d
ld (hl),a
nop
jr Analyzer_left_next
Analyzer_left_clr1:
and e
ld (hl),a
inc h
ld a,(hl)
and e
ld (hl),a
inc h
ld (hl),a
inc h
ld a,(hl)
and e
ld (hl),a
nop
jr Analyzer_left_inc
;-------------------------------------------------------------------
; описание: Отрисовка правого канала анализатора
; параметры: HL - адрес экрана
; A - размерность анализатора
; возвращаемое значение: нет
;---------------------------------------------------------------------
Analyzer_right_draw:
ld c,a
ld b,1
Analyzer_right_loop:
push hl
ld a,c
cp b
ld a,(hl)
jr c,Analyzer_right_clr0
and e
or 03h
ld (hl),a
inc h
ld a,(hl)
and e
or 07h
ld (hl),a
inc h
ld (hl),a
inc h
ld a,(hl)
and e
or 03h
ld (hl),a
Analyzer_right_next:
pop hl
inc b
push hl
ld a,c
cp b
ld a,(hl)
jr c,Analyzer_right_clr1
and d
or 30h
ld (hl),a
inc h
ld a,(hl)
and d
or 70h
ld (hl),a
inc h
ld (hl),a
inc h
ld a,(hl)
and d
or 30h
ld (hl),a
Analyzer_right_inc:
pop hl
dec l
inc b
ld a,b
cp 17
ret z
jr Analyzer_right_loop
Analyzer_right_clr0:
and e
ld (hl),a
inc h
ld a,(hl)
and e
ld (hl),a
inc h
ld (hl),a
inc h
ld a,(hl)
and e
ld (hl),a
nop
jr Analyzer_right_next
Analyzer_right_clr1:
and d
ld (hl),a
inc h
ld a,(hl)
and d
ld (hl),a
inc h
ld (hl),a
inc h
ld a,(hl)
and d
ld (hl),a
nop
jr Analyzer_right_inc
;-------------------------------------------------------------------
; описание: Отрисовка левого канала анализатора
; параметры: HL - адрес экрана
; C - позиция в индикаторе
; возвращаемое значение: нет
;---------------------------------------------------------------------
Analyzer_draw_flash:
ld hl,Analyzer_ch0_left
ld a,(hl) ;Analyzer_ch0_left
inc hl
add a,(hl) ;Analyzer_ch0_right
inc hl
add a,(hl) ;Analyzer_ch1_left
inc hl
add a,(hl) ;Analyzer_ch1_right
inc hl
add a,(hl) ;Analyzer_ch2_left
inc hl
add a,(hl) ;Analyzer_ch2_right
and 0Fh
ld hl,Analyzer_table
ld e,a
ld d,0
add hl,de
ld a,(hl)
ld hl,5A92h
ld (hl),a
inc l
ld (hl),a
ld hl,Analyzer_ch3_left
ld a,(hl) ;Analyzer_ch3_left
inc hl
add a,(hl) ;Analyzer_ch3_right
inc hl
add a,(hl) ;Analyzer_ch4_left
inc hl
add a,(hl) ;Analyzer_ch4_right
inc hl
add a,(hl) ;Analyzer_ch5_left
inc hl
add a,(hl) ;Analyzer_ch5_right
and 0Fh
ld hl,Analyzer_table
ld e,a
ld d,0
add hl,de
ld e,(hl)
ld d,e
ld hl,5AD6h
ld (Analyzer_adr_sp),sp
ld sp,hl
push de
push de
push de
push de
push de
push de
ld hl,5AF6h
ld sp,hl
push de
push de
push de
push de
push de
push de
ld sp,(Analyzer_adr_sp)
ret
;-------------------------------------------------------------------
; описание: Обновление параметров анализатора
; параметры: нет
; возвращаемое значение: нет
;---------------------------------------------------------------------
Analyzer_init:
ld b, 12
ld hl,Analyzer_ch0_left
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
;-------------------------------------------------------------------
; описание: Переменные правого и левого каналов анализатора
;---------------------------------------------------------------------
Analyzer_adr_sp:
dw 0
Analyzer_ch0_left:
db 0
Analyzer_ch0_right:
db 0
Analyzer_ch1_left:
db 0
Analyzer_ch1_right:
db 0
Analyzer_ch2_left:
db 0
Analyzer_ch2_right:
db 0
Analyzer_ch3_left:
db 0
Analyzer_ch3_right:
db 0
Analyzer_ch4_left:
db 0
Analyzer_ch4_right:
db 0
Analyzer_ch5_left:
db 0
Analyzer_ch5_right:
db 0
; .end