| 
					| Black_Cat | Дата: Среда, 10.09.2014, 19:58 | Сообщение # 1 |  |  Координатор Группа: Координаторы Сообщений: 737 Статус: Offline | psb наваял утилитку для проверки правильности умножения в ЦАПе GS. В цикле в ЦАП громкости пишется 0 или 63, а кнопками от 1 до 9 можно менять значение в ЦАПе звука соответственно от 0 до 255. При правильном умножении громкость писка должна возрастать от 128 (кнопка 5) - это условный ноль до отрицательного максимума = 0 (кнопка 1), или до положительного максимума = 255 (кнопка 9). Но psb обнаружил, что реальный GS ведёт себя не так, а громкость равномерно нарастает от 0 до 255, чего конечно не должно было бы быть.. но это так. При внимательном взгяде на схему становится ясно почему - это действительно баг схемотехники
  , удивительно, что за более чем 15 лет этот баг заметил только psb   Прискорбно, но все выпущенные 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
 "Трудно найти чёрную кошку в тёмной комнате..  ...особенно, если её там нет", "Forever!".
 "Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло."
 Гарри Трумэн
 |  |  |  |  |