https://www.ebay.com/itm/175787923554
looks very professional
looks very professional
looks very professional
The guy who makes them is in the MCA Facebook group.
Many games supported Sound Blaster, yes, but sadly doesn't mean that the MCA bus was supported.
If games is your goal stick with a clone and avoid the disappointment...
Game software were coded and built directly against an ISA bus Sound Blaster so all the ISR (interrupt service routines) DMA (direct memory access) processes are designed for that bus architecture UNLESS the game writer wrote the methods to handle MCAbus architecture the sound cards will fail to produce results in a PS/2.
I had the white clone snarky board you see on eBay before returning it and tried the following games and software:
Simcity (1989) - no sound
Raptor Call of the Shadows - only could get some sound when set to Adlib. Sound Blaster settings, game would not start.
Star Trek Final Unity - PS/2 (Model 90 Pentium60 / Model 77 486DX2) machines would crash/lock up with any Sound Blaster settings, Sound Blaster detection in setup would do the same.
Duke Nukem 3D - No sound.
Duke Nukem 3D Atomic Edition - Had sound, no problems
Windows 98 - Auto detects and installs MS Win 95 driver fine and plays Windows Sounds ok.
Windows NT 4.0 - has popping noise on start and end of Windows Sounds using MS Sound Blaster Driver for NT.
I also own a Sound Piper 16 which uses an ESS688F Sound Blaster compatible chipset. In DOS games above it fairs the same even though the ESS688F ISA version is celebrated in the DOS game world.
If you saw Louis' other post about Sound Blaster/MCV, even they admit that their Sound Blaster software doesn't work on MCA and you have to update to MCA versions of their utilities.
"CAUSE: It is due to the hardware differences in interrupt handling
between the AT bus machine and the Micro Channel machine. Therefore,
Sound Blaster program which is designed for AT bus cannot be used on
PS/2* machine directly"
stack overflow etc due to isr getting called repeatedly.
stack overflow etc due to isr getting called repeatedly.Yes on Model 90 I've filled up the System Log several times in doing game testing. IRQ not serviced errors.
I made a small modification to the snarkbarker and wrote a quick tsr to operate as the irq police and I can now play my few test games unmodified i.e. doom..DOS Box has sound blaster code with fixes they've done for compatibly in their emulator, maybe could be applied to the card as well.
Kevin Moonlight wrote:
stack overflow etc due to isr getting called repeatedly.That's uber cringe, like a psycho ex calling repeatedly...
Care to expound on the relentless calling?
The particular issue with the games I tested that failed, inside of their interrupt handler they were not clearing the interrupt flag on the soundblaster card before returning. On the ISA systems that did not matter, your handler just does notget called again until you clear that flag somewhere else in your code to deassert the irq line and then have it go up again so there is a new edge. With MCA being level based the second you return you are just called again and again if irq line is
So my TSR for all intensive purposes simply ensures that anytime there is an interrupt from the Snark Barker, once the assigned handler is finished I read the soundblaster status port to make sure the interrupt flag is cleared and I also make surethe pic end of interrupt was set just in case. This was not entirely straight forward as these games are not polite and do not seem to check for the existing handler to chain/call after. Some games may have intentionally not been clearing the
I’ve also now learned that even adlib is not well supported. Even though the Snark should be asserting the chrdy signal for every fm request which I thought got you a minimum of 300ns on all systems. I shall hookup a logic analyzer later tosee what is happening for my own understanding I don’t expect to have much to offer here, it would seem the Yamaha chip is just too slow for some systems.
On Saturday, 1 July 2023 at 06:23:26 UTC-4, Louis Ohland wrote:
Kevin Moonlight wrote:
stack overflow etc due to isr getting called repeatedly.That's uber cringe, like a psycho ex calling repeatedly...
Care to expound on the relentless calling?
MCA Interrupt Procedures https://www.ardent-tool.com/tech/MCA_Interrupt_Procedures.html
Unfortunately, I don't ken the interrupt circuitry well enough to make
this klar.
Plus, you are describing the failure of the software to handle clearing
the level assertion instead of the one and done ISA edge trigger stuff.
If I can findt a decent description of ISA edge triggered software, I
could compare it to the MCA Interrupt handling...
I'm a doctor, Jim! Not an EE!
Kevin Moonlight wrote:
The particular issue with the games I tested that failed, inside
of their interrupt handler they were not clearing the interrupt flag
on the soundblaster card before returning. On the ISA systems that
did not matter, your handler just does not get called again until
you clear that flag somewhere else in your code to deassert the irq
line and then have it go up again so there is a new edge. With MCA
being level based the second you return you are just called again and
again if irq line is still high.
So my TSR for all intensive purposes simply ensures that anytime there
is an interrupt from the Snark Barker, once the assigned handler is
finished I read the soundblaster status port to make sure the
interrupt flag is cleared and I also make sure the pic end of
interrupt was set just in case. This was not entirely straight
forward as these games are not polite and do not seem to check for the
existing handler to chain/call after. Some games may have
intentionally not been clearing the interrupt flag for some other
reason, these will not be happy. This is all just experimentation
in fun at this point. quite a hack.
I’ve also now learned that even adlib is not well supported. Even >> though the Snark should be asserting the chrdy signal for every fm
request which I thought got you a minimum of 300ns on all systems.
I shall hookup a logic analyzer later to see what is happening for my
own understanding I don’t expect to have much to offer here, it would
seem the Yamaha chip is just too slow for some systems.
On Saturday, 1 July 2023 at 06:23:26 UTC-4, Louis Ohland wrote:
Kevin Moonlight wrote:
stack overflow etc due to isr getting called repeatedly.That's uber cringe, like a psycho ex calling repeatedly...
Care to expound on the relentless calling?
Level-Sensitive Interrupts http://ps-2.kev009.com/ohland/Interrupts/Level-Sensitive_Interrupts.html
Louis Ohland wrote:
MCA Interrupt Procedures
https://www.ardent-tool.com/tech/MCA_Interrupt_Procedures.html
Unfortunately, I don't ken the interrupt circuitry well enough to make
this klar.
Plus, you are describing the failure of the software to handle
clearing the level assertion instead of the one and done ISA edge
trigger stuff.
If I can findt a decent description of ISA edge triggered software, I
could compare it to the MCA Interrupt handling...
I'm a doctor, Jim! Not an EE!
Kevin Moonlight wrote:
The particular issue with the games I tested that failed, inside >>> of their interrupt handler they were not clearing the interrupt flag
on the soundblaster card before returning. On the ISA systems that
did not matter, your handler just does not get called again until
you clear that flag somewhere else in your code to deassert the irq
line and then have it go up again so there is a new edge. With MCA
being level based the second you return you are just called again and
again if irq line is still high.
So my TSR for all intensive purposes simply ensures that anytime
there is an interrupt from the Snark Barker, once the assigned
handler is finished I read the soundblaster status port to make sure
the interrupt flag is cleared and I also make sure the pic end of
interrupt was set just in case. This was not entirely straight
forward as these games are not polite and do not seem to check for
the existing handler to chain/call after. Some games may have
intentionally not been clearing the interrupt flag for some other
reason, these will not be happy. This is all just experimentation
in fun at this point. quite a hack.
I’ve also now learned that even adlib is not well supported. Even >>> though the Snark should be asserting the chrdy signal for every fm
request which I thought got you a minimum of 300ns on all systems. I
shall hookup a logic analyzer later to see what is happening for my
own understanding I don’t expect to have much to offer here, it would
seem the Yamaha chip is just too slow for some systems.
On Saturday, 1 July 2023 at 06:23:26 UTC-4, Louis Ohland wrote:
Kevin Moonlight wrote:
stack overflow etc due to isr getting called repeatedly.That's uber cringe, like a psycho ex calling repeatedly...
Care to expound on the relentless calling?
MCA Interrupt Procedures https://www.ardent-tool.com/tech/MCA_Interrupt_Procedures.htmlcalled again until you clear that flag somewhere else in your code to deassert the irq line and then have it go up again so there is a new edge. With MCA being level based the second you return you are just called again and again if irq line is still
Unfortunately, I don't ken the interrupt circuitry well enough to make
this klar.
Plus, you are describing the failure of the software to handle clearing
the level assertion instead of the one and done ISA edge trigger stuff.
If I can findt a decent description of ISA edge triggered software, I
could compare it to the MCA Interrupt handling...
I'm a doctor, Jim! Not an EE!
Kevin Moonlight wrote:
The particular issue with the games I tested that failed, inside of their interrupt handler they were not clearing the interrupt flag on the soundblaster card before returning. On the ISA systems that did not matter, your handler just does not get
the pic end of interrupt was set just in case. This was not entirely straight forward as these games are not polite and do not seem to check for the existing handler to chain/call after. Some games may have intentionally not been clearing the interruptSo my TSR for all intensive purposes simply ensures that anytime there is an interrupt from the Snark Barker, once the assigned handler is finished I read the soundblaster status port to make sure the interrupt flag is cleared and I also make sure
what is happening for my own understanding I don’t expect to have much to offer here, it would seem the Yamaha chip is just too slow for some systems.I’ve also now learned that even adlib is not well supported. Even though the Snark should be asserting the chrdy signal for every fm request which I thought got you a minimum of 300ns on all systems. I shall hookup a logic analyzer later to see
On Saturday, 1 July 2023 at 06:23:26 UTC-4, Louis Ohland wrote:
Kevin Moonlight wrote:
stack overflow etc due to isr getting called repeatedly.That's uber cringe, like a psycho ex calling repeatedly...
Care to expound on the relentless calling?
I don't see it as a circuitry issue. The majority of issues would seem to be not clearing the interrupt flipply-floppy on the card prior to exiting the ISR, which on ISA means nothing will happen next, whereas MCA means you are going to be rightback into your ISR. Even the games that do handle this properly would likely be unfriendly to the interrupt sharing, and that would be an issue I could not see overcoming easily, so for any hope to use soundblaster on microchannel, having a
I know videos are not received well here... i got some questions, I am still trying to explain what I am doing here. still not entirely sure it is useful or not, need to make a small list of games that people wanted to play but could never get towork with the snarkbarker, and see if I could get them working with my method or not..
https://www.youtube.com/watch?v=1PjLtKcPYI0called again until you clear that flag somewhere else in your code to deassert the irq line and then have it go up again so there is a new edge. With MCA being level based the second you return you are just called again and again if irq line is still
On Saturday, 1 July 2023 at 12:59:26 UTC-4, Louis Ohland wrote:
MCA Interrupt Procedures
https://www.ardent-tool.com/tech/MCA_Interrupt_Procedures.html
Unfortunately, I don't ken the interrupt circuitry well enough to make
this klar.
Plus, you are describing the failure of the software to handle clearing
the level assertion instead of the one and done ISA edge trigger stuff.
If I can findt a decent description of ISA edge triggered software, I
could compare it to the MCA Interrupt handling...
I'm a doctor, Jim! Not an EE!
Kevin Moonlight wrote:
The particular issue with the games I tested that failed, inside of their interrupt handler they were not clearing the interrupt flag on the soundblaster card before returning. On the ISA systems that did not matter, your handler just does not get
the pic end of interrupt was set just in case. This was not entirely straight forward as these games are not polite and do not seem to check for the existing handler to chain/call after. Some games may have intentionally not been clearing the interrupt
So my TSR for all intensive purposes simply ensures that anytime there is an interrupt from the Snark Barker, once the assigned handler is finished I read the soundblaster status port to make sure the interrupt flag is cleared and I also make sure
what is happening for my own understanding I don’t expect to have much to offer here, it would seem the Yamaha chip is just too slow for some systems.
I’ve also now learned that even adlib is not well supported. Even though the Snark should be asserting the chrdy signal for every fm request which I thought got you a minimum of 300ns on all systems. I shall hookup a logic analyzer later to see
On Saturday, 1 July 2023 at 06:23:26 UTC-4, Louis Ohland wrote:
Kevin Moonlight wrote:
stack overflow etc due to isr getting called repeatedly.That's uber cringe, like a psycho ex calling repeatedly...
Care to expound on the relentless calling?
I know videos are not received well here... i got some questions, I am
still trying to explain what I am doing here.
after. Some games may have intentionally not been clearing the interrupt flag for some other reason, these will not be happy. This is all just experimentation in fun at this point. quite a hack.
Try Duke Nukem 3D basic version with your TSR work around for fun. Atomic edition works. Basic 3D does not.after. Some games may have intentionally not been clearing the interrupt flag for some other reason, these will not be happy. This is all just experimentation in fun at this point. quite a hack.
Located here if you don't already have a copy. https://archive.org/details/duke-3-d
on the topic of duke3d, I have not been able to get any version to crash including the one listed above.The older version would just not make sound. Did not crash.
on the topic of duke3d, I have not been able to get any version to crash including the one listed above.The older version would just not make sound. Did not crash.
See if you can play Raptor Call of the Shadows then. It talks about PS/2 in the readme so there maybe hope. Adlib was the only thing it would do for FX sounds.
DMA is a whole another animal. You have the following to deal with in MCA. These settings were interesting to play with when I was working with the Ultimedia 7-6 card driver.
-Adapters can do burst-mode where it can have complete control of the DMA channel for up to 12mSec.
-MicroChannel Fairness feature, when 'Fairness' is disabled, the adapter will compete for every arbitration phase and will obtain more than its fair share of channel usage but allows for smoother audio play back."
Raptor Call of the Shadows works good with my TSR but crashes without.
DOS program that is not attempting to do anything specialAh but even DOS uses device drivers specific hardware on specific machines. In this case the device driver is built into the game and was tailored for ISA even if they were sloppy it worked with ISA.
On Sunday, July 2, 2023 at 6:42:10 PM UTC-5, Kevin Moonlight wrote:
Raptor Call of the Shadows works good with my TSR but crashes without.
Excellent work. I forwarded your video to texelec. Maybe they can make their cards better as well.
DOS program that is not attempting to do anything specialAh but even DOS uses device drivers specific hardware on specific machines. In this case the device driver is built into the game and was tailored for ISA even if they were sloppy it worked with ISA.
Texelec card is the market leader
(5502-L Planar
In the case of TYRIAN, what I noticed is that it would write to the sub-address 388h and then it would do 8 reads to 40h and then it would write to the data to 389h and then it would read 40h 10 more times. I would need to look closer to be sure Iam not missing something, but it certainly appears to just do reads to the timer and not really care about the values, not actually configuring the timer or doing anything , and on a PC it would expect those reads to take 500ns or whatever it may be,
Are you in talks with Texelec to add these fixes to their card? All of the above is for not if it can't get into a "production" card for people to use.Texelec card is the market leader
Would be in interested in having one of their cards again if it can actually play Raptor and maybe others with your work around.
Something similar like your TSR could have been done before.
I was just fiddling with my ChipChat, which is SB compatible and generally a similar ISA-to-MCA conversion, when I noted that DOOM crashes at startup with the known stack overflow.
Then on the Install Disk 1 I found DOSMIXER.EXE and DOSMIXER.DOC, which suggests:
"DOSMIXER -M15 -F10 -W15 -I0 -G
same as previous example, Except also sets up the sound card
for the "special game" setting.
Some DOS games require the sound card to be initialized to a
special state. If you encounter any issues running a DOS
game run the "DOSMIXER" with the "-G" option. Games like
"DOOM" and "HERETIC" require this setting. Games such as
"Rise of the Triad" do not. For the games that require the
"-G" option, we suggest you put the DOSMIXER statement in
a batch file to run the particular game."
After running DOSMIXER -G, DOOM starts fine.
OPL3 sound (internal FM synth) is still distorted due to the other thing you found out, but the external wavetable is just fine.
I didn't look into DOSMIXER.EXE through the disassembler goggles, but it might do something similar and was probably forgotten about.
For Raptor though, it does not clear the startup issues, the SB remains "undetected".
| Sysop: | Keyop |
|---|---|
| Location: | Huddersfield, West Yorkshire, UK |
| Users: | 715 |
| Nodes: | 16 (2 / 14) |
| Uptime: | 157:26:24 |
| Calls: | 12,093 |
| Calls today: | 1 |
| Files: | 15,000 |
| Messages: | 6,517,751 |