While Corona is delaying the metal brackets, I tried playing the C/MS demo tools on my Snark Barker. I know I used them on the MUS1099, but with the Snark Barker, I have no luck. The cmsdrv.com driver complains that the card is incorrectly jumpered (220h). Paku Paku and Sierra games all work fine. It's just the C/MS demo disks that won't work. Any idea what the cmsdrv is doing there? Trying some kind of autodetection that fails on non-C/MS cards?
YouTube and Bonus
80486DX@33 MHz, 16 MiB RAM, Tseng ET4000 1 MiB, SnarkBarker & GUSar Lite, PC MIDI Card+X2+SC55+MT32, OSSC
Any idea what the cmsdrv is doing there? Trying some kind of autodetection that fails on non-C/MS cards?
IIRC, Sound Blaster and compatible cards don't support CMS auto-detection, at all, because the relevant port addresses are already used for other purposes.
Any idea what the cmsdrv is doing there? Trying some kind of autodetection that fails on non-C/MS cards?
IIRC, Sound Blaster and compatible cards don't support CMS auto-detection, at all, because the relevant port addresses are already used for other purposes.
So... can we patch the driver, so I can enjoy the C/MS demos without having to break out the MUS1099 card...?
YouTube and Bonus
80486DX@33 MHz, 16 MiB RAM, Tseng ET4000 1 MiB, SnarkBarker & GUSar Lite, PC MIDI Card+X2+SC55+MT32, OSSC
I'd say so. Wasn't CMS auto-detection based on writing a value to a port and reading it back to see if it is still the same, i.e. buffered by the CMS?
If you're looking for a good code analysis tool, try Ghidra!
Not really. Last time I ordered 10 PCBs and everyone got their own components from favorite suppliers. You might want to ask around if anyone wants to do another batch.
YouTube and Bonus
80486DX@33 MHz, 16 MiB RAM, Tseng ET4000 1 MiB, SnarkBarker & GUSar Lite, PC MIDI Card+X2+SC55+MT32, OSSC
Not really. Last time I ordered 10 PCBs and everyone got their own components from favorite suppliers. You might want to ask around if anyone wants to do another batch.
Is it like a DIY kit or a fully assembled card? I don't understand.
Is it like a DIY kit or a fully assembled card? I don't understand.
It's a PCB, just the circuit board - not even a kit. You need to buy all the additional components yourself, then break out the soldering iron.
Great fun (I have one here I made last year), but given your questions I'd recommend first getting a better grasp of how (ready-made) sound cards work, and depending on your soldering skills perhaps do a slightly smaller project first.
Also, as root42 points out, the batch he ordered has been used, so you'd have to order new PCBs made to this design yourself...
So... can we patch the driver, so I can enjoy the C/MS demos without having to break out the MUS1099 card...?
I removed the check for CMS availability, but I think that not everything is so simple. So, this code:
1loc_107:: 2 mov dx,data_16 ; DX = 220h 3 add dl,0Bh ; DX = 22Bh 4 in al,dx ; port 22Bh 5 cmp al,0A0h 6 je loc_109 ; Jump if equal - OK
Read data from 22B port and compare value to 0xA0. If ok, then display 'installed at 80h interrupt', otherwise display 'CMS not found'. We can patch conditional jump (JE) with unconditional jump short (JMPS) and allways going to needeed brunch. I will attach the modified file, but it seems to me that there is something else that will not allow it to be used normally. I have not tested this file. If anyone have time to test on real hardware - you are wellcome -)
Last edited by Tronix on 2020-05-06, 16:40. Edited 1 time in total.
Tronixwrote on 2020-05-06, 13:39:I removed the check for CMS availability, but I think that not everything is so simple. So, this code: […] Show full quote
So... can we patch the driver, so I can enjoy the C/MS demos without having to break out the MUS1099 card...?
I removed the check for CMS availability, but I think that not everything is so simple. So, this code:
1loc_107:: 2 mov dx,data_16 ; DX = 220h 3 add dl,0Bh ; DX = 22Bh 4 in al,dx ; port 22Bh 5 cmp al,0A0h 6 je loc_109 ; Jump if equal - OK
Read data from 22B port and compare value to 0xA0. If ok, then display 'installed at 80h interrupt', otherwise display 'CMS not found'. We can patch conditional jump (JE) with unconditional jump short (JMPS) and allways going to needeed brunch. I will attach the modified file, but it seems to me that there is something else that will not allow it to be used normally. I have not tested this file. If anyone have time to test on real hardware - you are wellcome -)
Very cool. I will test this later on my 386!
YouTube and Bonus
80486DX@33 MHz, 16 MiB RAM, Tseng ET4000 1 MiB, SnarkBarker & GUSar Lite, PC MIDI Card+X2+SC55+MT32, OSSC
Not really. Last time I ordered 10 PCBs and everyone got their own components from favorite suppliers. You might want to ask around if anyone wants to do another batch.
Is it like a DIY kit or a fully assembled card? I don't understand.
You have to buy everything yourself. Someone could make a DIY kit, but that's a load of work due to the sheer amount of components to sort.
Tronixwrote on 2020-05-06, 13:39:I removed the check for CMS availability, but I think that not everything is so simple. So, this code: […] Show full quote
So... can we patch the driver, so I can enjoy the C/MS demos without having to break out the MUS1099 card...?
I removed the check for CMS availability, but I think that not everything is so simple. So, this code:
1loc_107:: 2 mov dx,data_16 ; DX = 220h 3 add dl,0Bh ; DX = 22Bh 4 in al,dx ; port 22Bh 5 cmp al,0A0h 6 je loc_109 ; Jump if equal - OK
Read data from 22B port and compare value to 0xA0. If ok, then display 'installed at 80h interrupt', otherwise display 'CMS not found'. We can patch conditional jump (JE) with unconditional jump short (JMPS) and allways going to needeed brunch. I will attach the modified file, but it seems to me that there is something else that will not allow it to be used normally. I have not tested this file. If anyone have time to test on real hardware - you are wellcome -)
Very cool. I will test this later on my 386!
well, your binary crashes my 386, or with QEMM triggers an illegal instruction. 😀
YouTube and Bonus
80486DX@33 MHz, 16 MiB RAM, Tseng ET4000 1 MiB, SnarkBarker & GUSar Lite, PC MIDI Card+X2+SC55+MT32, OSSC
0x4C DOS function - terminate program without stay it resident, but we need stay resident becourse its TSR driver. So another piece of code look like:
1seg000:11CF mov al, byte ptr start+1 2seg000:11D2 add al, 7Bh ; '{' 3seg000:11D4 sub byte ptr loc_113A1+2, al
mean take byte from 0x1 offset then add this with 0x7b then substract with 0x4c and place result in 0x13A3 offset. After executing this code mov ax,4c00h must be changed to mov ax,3100h. 31 dos function - terminate and stay resident. For some reason, this piece of code is not executed. I remove this self-modification and change mov ax,4c00 to mov ax,3100. So, driver is loaded into memory, but don't work with real CMS 🙁 Somewhere there is something else, some kind of protection.
UPD: Okay, i found CRC proc caclulation
1seg000:1177 loc_11177: ; CODE XREF: seg000:loc_110FD↑j 2seg000:1177 pop es 3seg000:1178 push ax 4seg000:1179 sub ah, ah 5seg000:117B mov cx, 0F31h 6seg000:117E mov si, 4B3h 7seg000:1181 8seg000:1181 loc_11181: ; CODE XREF: sub_1113C:loc_11184↓j 9seg000:1181 lodsb 10seg000:1182 add ah, al 11seg000:1184 12seg000:1184 loc_11184: ; CODE XREF: seg000:110F↑j 13seg000:1184 loop loc_11181 14seg000:1186 mov word ptr start, ax 15seg000:1189 add byte_10F32, ah 16seg000:118D mov dx, word_1010F 17seg000:1191 add dx, 7 18seg000:1194 mov al, ah 19seg000:1196 out dx, al 20seg000:1197 pop ax 21seg000:1198 retn
So, original calculated CRC is 0xA02E placed into first bytes at cs:100 offset (2E A0), then used many times to check code integrity. I patched this routine and viola - cmsdrv.com running OK with original CMS. Also it run without CMS, but dosn't play any music.
Oh okay, i found another strange place and patched it.
Finaly, CMSDRV.COM now run on SB 1.x with CMS chips well. I tested it with real 486 and Snark Barker with original song disks from CMS (player.exe).
Enjoy.
Oh okay, i found another strange place and patched it.
Finaly, CMSDRV.COM now run on SB 1.x with CMS chips well. I tested it with real 486 and Snark Barker with original song disks from CMS (player.exe).
Enjoy.
great! thanks for sharing!
is this also needed for SB2.0 ?
Oh okay, i found another strange place and patched it.
Finaly, CMSDRV.COM now run on SB 1.x with CMS chips well. I tested it with real 486 and Snark Barker with original song disks from CMS (player.exe).
Enjoy.
great! thanks for sharing!
is this also needed for SB2.0 ?
Probably? Well, the 2.0 has the GALs, not sure what they are doing. But I assumed that the SB only provided the SAA1099s without the rest of the GameBlaster (whatever that big IC on that thing was doing anyway).
YouTube and Bonus
80486DX@33 MHz, 16 MiB RAM, Tseng ET4000 1 MiB, SnarkBarker & GUSar Lite, PC MIDI Card+X2+SC55+MT32, OSSC
Oh okay, i found another strange place and patched it.
Finaly, CMSDRV.COM now run on SB 1.x with CMS chips well. I tested it with real 486 and Snark Barker with original song disks from CMS (player.exe).
Enjoy.
Works perfectly! Thank you. Now the Snark Barker is so much better. 😉
YouTube and Bonus
80486DX@33 MHz, 16 MiB RAM, Tseng ET4000 1 MiB, SnarkBarker & GUSar Lite, PC MIDI Card+X2+SC55+MT32, OSSC
I've started assembling mine (FINALLY!) but found out that two of my ICs are slightly off spec. To be specific:
The 12MHz crystal I got has 50pF capacitance while the BOM crystal has 18pF
The 500mW 5.1V Zener diode I got has 35R impedence while the BOM zener diode has 17R
Would either of these be a problem or can I use them safely on the board?
appiah4wrote on 2020-05-08, 08:55:I've started assembling mine (FINALLY!) but found out that two of my ICs are slightly off spec. To be specific: […] Show full quote
I've started assembling mine (FINALLY!) but found out that two of my ICs are slightly off spec. To be specific:
The 12MHz crystal I got has 50pF capacitance while the BOM crystal has 18pF
The 500mW 5.1V Zener diode I got has 35R impedence while the BOM zener diode has 17R
Would either of these be a problem or can I use them safely on the board?
I didn't even check (or know that I had to) on my boards for those values. And both cards work. 😀 I would expect for the card to have some leeway in this respect. One way to find out!
YouTube and Bonus
80486DX@33 MHz, 16 MiB RAM, Tseng ET4000 1 MiB, SnarkBarker & GUSar Lite, PC MIDI Card+X2+SC55+MT32, OSSC
One last question, that wire going across the crystal - Is that for properly grounding the thing? And if so, is it soldered onto the crystal itself, or only to the PCB?