Reply 200 of 202, by maxtherabbit

User metadata
Rank l33t
georgel wrote on 2021-11-17, 17:30:
maxtherabbit wrote on 2021-11-17, 02:11:

Any idea why DOS32AWE would not work on a dual Pentium Pro system (with APIC)?

I have a pair of almost twin systems, same software, both 440FX Pentium Pro builds. It works great on the single processor machine but doesn't on the dual one.

What error do you get? If you move a CPU from one machine to another does it change the situation? Or at least if you remove the second CPU? Does the DOS32A exhibit the same problem as DOS32AWE?

It hangs up as soon as the first MIDI note is attempted to play. If I run DOS32AWE <game executable> without AWEUTIL loaded there is no hanging. If I load a real mode game with AWEUTIL loaded it works fine.

I'm sorry but I'm not really willing to move physical CPUs around for troubleshooting purposes. May it suffice to say the CPU and chipset in the working machine are the exact same. The only differences are the presence of the second CPU and the presence of the intel S82093AA APIC (which I strongly suspect is the root of the incompatibility)

Reply 201 of 202, by georgel

User metadata
Rank Member

So I am attaching a 4MB font that generates the notorious Divide overflow obviously this is not related only to 28MB soundfonts and with this example font I attached more people with less sound blaster RAM can explore it.
https://drive.google.com/file/d/10ftP-goaZLkO … iew?usp=sharing

The AWEUTIL is neither packed nor protected so feel free to analyze it and help.

The offending instruction in AWEUTIL V1.36 is IDIV at 4A3A. And is part of signed multiplication of data by 1.3 (64h/4bh) in 4AB4 (branch 4BC8) procedure. It multiplies hundreds of values all below or equal to (positive) 63h but suddenly a negative large number appears at some point which leads to the overflow.

The multiplied data starts always with these 7,9,a,fh,11h,12h,13h,14h,12h,14h,16h,18h,19,1ah,1bh,1ch,1dh,1eh,20h,20h,21h,2,3,5,7,9,ah,bh,ch,fh,12h,12h11h,12h, etc...

IDIV when overflows generates INT 0 fault so depending on your handler may show Divide overflow error (DOS/BIOS) or hang or whatever.

The multiplication (along with other computaions many of them with fixed constants) starts after the sound font is uploaded to the SB's RAM while building some AWEUTIL's data structures I guess.

Last edited by georgel on 2021-11-24, 09:38. Edited 1 time in total.

Reply 202 of 202, by Rawit

User metadata
Rank Member

I don't own any AWE hardware but I'm busy lately with Awave Studio. I've converted the new Roland SC-55 soundfont based on the decrypted samples found here: https://github.com/trevor0402/SC55Soundfont/r … eases/tag/v1.2b

You can find the SBK here: https://easyupload.io/q2zlhz

Hope it works as I have no way of testing this.