Soviet Union ZX Spectrum CommunityСреда, 16.10.2024, 08:20
Вы вошли как Гость | Группа "Гости" | RSS
 [ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Утилита для проверки перемножающего ЦАПа в GS
Black_CatДата: Среда, 10.09.2014, 19:58 | Сообщение # 1
Координатор
Группа: Координаторы
Сообщений: 727
Статус: Offline
psb наваял утилитку для проверки правильности умножения в ЦАПе GS. В цикле в ЦАП громкости пишется 0 или 63, а кнопками от 1 до 9 можно менять значение в ЦАПе звука соответственно от 0 до 255. При правильном умножении громкость писка должна возрастать от 128 (кнопка 5) - это условный ноль до отрицательного максимума = 0 (кнопка 1), или до положительного максимума = 255 (кнопка 9).
Но psb обнаружил, что реальный GS ведёт себя не так, а громкость равномерно нарастает от 0 до 255, чего конечно не должно было бы быть.. но это так. При внимательном взгяде на схему становится ясно почему - это действительно баг схемотехники smile , удивительно, что за более чем 15 лет этот баг заметил только psb smile
Прискорбно, но все выпущенные zorel'ом новоделы, а так же ZXM-GeneralSound Mick'а, имеют этот же баг..
В архиве лежит скомпиленый .trd и исходник:

Код
device zxspectrum128

; -----------------------------------------------------------------------------
; GS Volume DAC test v0.1, (c)2014, psb.
; This test sets different values to sound DAC (by pressing 1-9 keys) and
; do a beep with values 0|63 to volume DAC.
;
; Original GS: 1 - no sound, 5 - middle volume, 9 - max volume.
; Correct case: 1/9 - max volume, 5 - no sound.
; -----------------------------------------------------------------------------

             org #6000

             ld a,#f3:call sendcom

             ; chans init
             xor a:call setchan
             xor a:call setvol
             xor a:call setdac

             ld a,1:call setchan
             xor a:call setvol
             xor a:call setdac

             ld a,2:call setchan
             xor a:call setvol
             xor a:call setdac

             ld a,3:call setchan
             xor a:call setvol
             xor a:call setdac

             ; test chan 0
             xor a:call setchan

loop    res 5,(iy+1)
             ei:halt
             bit 5,(iy+1)
             jr z,loop
             ld a,(iy-50) ;pressed key

             cp '1':jr c,loop
             cp '9'+1:jr nc,loop

             sub '1'
             ld l,a,h,0,de,tab:add hl,de
             ld a,(hl):call beepvol

             jr loop

; sound DAC values (1-9)
tab     db 0, 31, 63, 95, 127, 159, 191, 223, 255

; do beep while key is pressed
beepvol di
             call setdac ;set value to sound DAC
bvloop
             ld a,63:call setvol
             djnz $,$,$,$ ;delay
             xor a:call setvol
             djnz $,$,$,$ ;delay

             xor a:in a,(#fe):cpl:and #1f
             jr nz,bvloop ;still pressed? repeat
             ei
             ret             

; -----------------------------------------------------------------------------

setchan
             out (#b3),a
             ld a,#04:call sendcom ;set chan #
             ret

setvol
             out (#b3),a
             ld a,#05:call sendcom ;set volume value
             ret

setdac
             out (#b3),a
             ld a,#06:call sendcom ;set dac value
             ret

; -----------------------------------------------------------------------------

sendcom out (#bb),a
gswc    in a,(#bb)
             rrca:jr c,gswc
             ret

senddat out (#b3),a
gswd    in a,(#bb)
             rlca:jr c,gswd
             ret

; -----------------------------------------------------------------------------

len     equ $-#6000

             savesna "gsvol_test.sna",#6000
             emptytrd "gsvol.trd"
             savetrd "gsvol.trd","gsvoltst.C",#6000,len
Прикрепления: gsvoltest.zip (2.0 Kb)


"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!".
"Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло."
Гарри Трумэн
 
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2006Сайт управляется системой uCoz