to all
Hei, people! 'sbdrv.zip' was downloaded 15 times but only 3 answers were posted! I'm wondering very much. Could you answer?
to Serge
Вот список того, что нужно сделать с ядром SVN800 для доведения до кондиции:
;-------------------------------------------------------------------------------
удалить:
--------------------------------
core/conf_lib.inc:
строки 43-67:
;[dev]
;sb16
...
mov [sound_dma], eax
@@:
Причина - драйвер сам определяет где находится карточка, не нужно прописывать руками
строки 95-98:
udev_sb16 db 'sb16',0
udev_sb16_def db '0x220',0
udev_sound_dma db 'sound_dma',0
udev_sound_dma_def db '1',0
Причина - используются только в удаляемых строках, т.е. больше не нужны
--------------------------------
sound/sb16.inc:
строки: все кроме 33 (sound_interface: ), 71-93 (от cmp eax,edi до ret) (т.е. кода для
PC Speaker'а. А что (чуть не сказал "какого х") здесь делает этот код?)
Причина - драйвер работает

--------------------------------
kernel.asm:
строка 1036: mov [irq_owner+4*5],1
Причина - так надо (IRQ5 теперь свободен, но ненадолго - лишь пока
нет драйвера)
строка 1108: mov byte[sb16_status],0
Причина - не используется нигде
строки 1190-1284:
sys_sb16:
...
ret
Причина - ядро теперь не знает где SB, а потому прийдётся удалить весь
связанный с ним код
строки 1579-1589:
cmp eax,4 ; SB
...
nsyse4:
Причина - драйвер сам определяет где находится карточка, не нужно прописывать руками
строки 1658-1664:
cmp eax,10 ; SOUND DMA CHANNEL
...
no_set_sound_dma:
Причина - драйвер сам определяет где находится карточка, не нужно прописывать руками
строки 1754-1760:
cmp eax,4
...
ngsyse4:
Причина - в лучшем случае ядро возвратит NULL
строки 1785-1790:
cmp eax,10
...
ngsyse10:
Причина - в лучшем случае ядро возвратит NULL
--------------------------------
data32.inc:
строка 149: sound_dma dd 1
Причина - используются только в удаляемых строках, т.е. больше не нужно
строка 367: sb16 rd 1
Причина - используются только в удаляемых строках, т.е. больше не нужно
--------------------------------
заменить:
--------------------------------
core/syscall.inc:
строка 131: dd sys_sb16
на: dd 0
Причина - теперь этого нет
строка 134: dd sys_sb16II
на: dd 0
Причина - теперь этого нет
--------------------------------
добавить:
--------------------------------
core/dll.inc:
перед строчкой 49 (ret) добавить что-то типа mov eax,1 , а то на моей системе
к моменту вызова драйвера все IRQ кроме 5го уже размаскированы, и после
разрешения IRQ5 в eax'е 0 и драйвер думает, что кто-то уже заграбастал его IRQ