VOGONS


First post, by pshipkov

User metadata
Rank Oldbie
Rank
Oldbie

Been on my mind for a while to ask the local experts about a peculiar issue i am noticing on some SiS 496/497 motherboards.
Basically, at least some sound cards will hang the system because at the moment their DMA access is initiated through them.
Disabling the internal CPU cache fixes the problem.
Switching the L1 cache mode between WB/WT makes no difference.
Found some obscure information about disabling HIDDEN REFRESH in BIOS, but this is not an option for the chipset in question.

At the same time everything is fine in Windows 95/98, or NT4, including running the same DOS games/apps that hang in pure DOS mode.

Any hints ?

retro bits and bytes

Reply 1 of 27, by rasz_pl

User metadata
Rank l33t
Rank
l33t

How about booting into win95, playing some sounds to make sure it works and then quitting to DOS? Maybe windows knows something about the chipset and activates workaround.

Open Source AT&T Globalyst/NCR/FIC 486-GAC-2 proprietary Cache Module reproduction

Reply 3 of 27, by mkarcher

User metadata
Rank l33t
Rank
l33t
pshipkov wrote on 2023-05-07, 02:02:

Basically, at least some sound cards will hang the system because at the moment their DMA access is initiated through them.
Disabling the internal CPU cache fixes the problem.
Switching the L1 cache mode between WB/WT makes no difference.

What kind of sound card shows this issue? Is it a WSS-compatible sound card (which can run in either "single mode" or "demand mode" DMA), or a classic Sound Blaster (uses "single mode" all the time)? What kind of CPU is it? How do you switch between WB/WT for the L1 cache? Are you aware that the BIOS setup setting "L1 cache mode" only works on Cyrix CPUs, while for AMD CPUs you need to use a jumper to change the L1 cache mode?

Reply 4 of 27, by pshipkov

User metadata
Rank Oldbie
Rank
Oldbie

In the most recent case it happens on Lucky Star LS-486E C1/C2/D motherboards with SB AWE64 Gold and Am5x86 processor.
Often use TWEAKS.EXE to adjust L1 policy and other parameters. But can be through jumpers as well.

retro bits and bytes

Reply 7 of 27, by mkarcher

User metadata
Rank l33t
Rank
l33t
pshipkov wrote on 2023-05-07, 07:48:

In the most recent case it happens on Lucky Star LS-486E C1/C2/D motherboards with SB AWE64 Gold and Am5x86 processor.
Often use TWEAKS.EXE to adjust L1 policy and other parameters. But can be through jumpers as well.

Be careful when using tools like TWEAKS.EXE. L1WB only works if a number of settings are consistent:

  1. The processor is set to WB mode during reset. On Am5x86 and enhanced AMD DX4 processors, this setting can only be influenced by jumpers
  2. The write-back control pins of the processors are connected to the correct pins of the chipset. This is why you have to set lots of jumpers for the CPU type on modern 486 boards
  3. The chipset is configured to use the L1WB cache coherency protocol

If any of these settings isn't matching, issues like you are observing are common. TWEAKS.EXE seems to directly affect position "3" in that list only. You should not fiddle with that setting as long as your BIOS correctly recognizes the processor. If you see "AMD 5x86" or "AMD X5" in the POST screen, you can trust the BIOS to have recognized the processor and the jumper setting. The BIOS will initialize the chipset automatically in the only correct way. The BIOS does not probe whether the write-back signalling actually works, or some jumper is routing the write-back control signals to a wrong CPU pin.

Looking at L1WB if you got issues with DMA is a good idea. But the only way to get the Am5x86 out of L1WB mode is actually changing a jumper. Looking at the manual for the LS-486E C1/C2, it is very likely that the jumer defining L1WB/L1WT on the Am5x86 (and AMD and Intel Enhanced DX4) is JP7, pins 6-7. If that one is installed, the CPU speaks the L1WB protocol, and there is nothing you can do using BIOS setup, TWEAKS.EXE or any other software solution to change it. If running the L1WB protocol does not work reliably (e.g. because the jumper settings or the chipset configuration is wrong), you will face strange issues with DMA. To do a controlled test whether L1WB is the culprit, remove JP7, pins 6-7. If that fixes your issues, double-check CPU jumpering and make sure that the BIOS recognizes the processor correctly. If the BIOS does not, you need a BIOS update for proper WB operation.

Reply 8 of 27, by feipoa

User metadata
Rank l33t++
Rank
l33t++

I wouldn't get too caught up on the L1 on/off issue; the fact remains that when L1 is enabled properly, ISA sound in DOS does not function. I have also witnessed this problem on the Lucky Star LS-486E series of motherboards, based on the SiS 496/497. However, for my case, if I the PCI bus set equal to the FSB, DOS (and Windows) sound works fine for me with my OPL3 card. The issue for me comes when setting PCI = 1/2*FSB, for which case sound FX in DOS will hang the system, although the wavetable header will still function with midi playback. Unlike the situation that pshipkov noticed, I am unable to get Windows sound working when PCI = 1/2*FSB.

I'm using an Audican32 plus, which should be a yamaha OPL3 card, I think the OPL3SAx. pshipkov is using the AWE64Gold. I also tested my DOS sound woes using an ESS ES1868 and confirmed that there is no DOS sound when PCI = 1/2*FSB.

I think the main takeaway from pshipkov's [potentially incorrect method] scheme to disable L1 was that there are some conditions that exist, however detrimental, which will make DOS sound work. Maybe there are other less detrimental means of getting the sound working. I think this is what the OP is looking for.

By the way, the reason I'm not wanting to set PCI = FSB is because I'm working with FSB's of 60-66 MHz. So far, ISA sound, PCI SCSI, and PCI Ultra DMA do not like 1/2*FSB, however my Intel 10/100 PCI NIC seemed to function OK under this condition.

Plan your life wisely, you'll be dead before you know it.

Reply 9 of 27, by mkarcher

User metadata
Rank l33t
Rank
l33t

I'm sorry if I was unclear. I cast no doubt on the method to enable / disable the L1 cache. These methods generally do work as advertised. I consider the result that ISA DMA works with L1 disabled, and crashes the system with L1 enabled reliable. On the other hand, I question the reliability of the claim that "switching L1 to WT doesn't solve the issue", unless this test has been performed by jumpering. It doesn't help in this case that there is no official documentation on how to run the Enhanced DX4 / 5x86 at L1WT in this board.

As I don't have first-hand experience with the LS-486E boards, I can't add own knowledge to the information that running PCI at FSB/2 can cause issues, but this might in fact be a contributing factor. The SiS496/497 chipset doesn't have an integrated PCI clock divider, but requires an external divide-by-two circuit that is usually used or bypassed using a jumper. In the case of the LS-486E board, I don't find any information about that jumper in the scanned manual, but the jumper guide on The Retro Web indactes JP19 as being that jumper, where 1-2 is "PCI = FSB/2" (i.e. the problematic setting) and 2-3 is "PCI = FSB" (i.e. the usually more reliable setting). In my experience, running the PCI bus at 40MHz makes trouble less often than using the divide-by-two feature, but your mileage may vary. Interestingly, the photo on The Retro Web doesn't have JP19 installed at all, which makes me wonder whether it is a working configuration at all.

Reply 11 of 27, by feipoa

User metadata
Rank l33t++
Rank
l33t++

For LS-486E Rev.D, the FSB/2 setting is in the manual, but in an unusual location. There is a small table on the top of the page with REMARKS. It is JP16.

If I'm not mistaken, pshipkov also has DOS DMA sound issues when not using the 1/2*FSB option. I'm not sure of the full range of FSB frequencies afflicted for his case. What I find most interesting is that he is able to use the 1/2*FSB option (at 66 MHz) with an AWE64Gold in Windows, but not DOS.

Plan your life wisely, you'll be dead before you know it.

Reply 12 of 27, by pshipkov

User metadata
Rank Oldbie
Rank
Oldbie

@mkarcher

Thanks for the notes.
Your message prompted me to find my notes.
You are right, TWEAKS.EXE does not allow dynamic change of the L1 cache policy.
Setting L1 cache in WT mode DOES solve the DMA problem with AWE64G.
My initial statement was incorrect. Will empirically verify it soon to refresh my memory.

Bus ISA PCI divider works well on the LS-486E series boards. At least i didn't observe any issues with that, or heard about such.
Unless Feipoa brought it up the other day. But it feels that his problems are related to the 60MHz FSB and the sound cards he is using at the moment.
The divider option was never a such factor for me.

There are several pictures on TRW. All they show the bus divider jumper being installed.

Last edited by pshipkov on 2023-05-08, 00:31. Edited 1 time in total.

retro bits and bytes

Reply 13 of 27, by mkarcher

User metadata
Rank l33t
Rank
l33t
pshipkov wrote on 2023-05-07, 21:26:

Setting L1 cache in WT mode DOES solve the DMA problem with AWE64G.
My initial statement was incorrect. Will empirically verify it soon to refresh my memory.

So this makes it very likely that the issue you are facing is due to L1WB problems. If you didn't already, double check that the CPU type jumpers match the settings shown in https://theretroweb.com/motherboard/manual/ls … a6736006204.pdf exactly. L1WT is way more forgiving with incorrect jumper settings than L1WB. I hope the settings shown in the manual are correct.

pshipkov wrote on 2023-05-07, 21:26:

There are several pictures on TRW. All they show the bus divider jumper being installed.

I was referring to https://theretroweb.com/motherboards/s/lucky- … e-rev-c1-rev-c2 , picture 2 of 6. That picture does not have the jumper installed.

Reply 14 of 27, by pshipkov

User metadata
Rank Oldbie
Rank
Oldbie

Ok, i confirm that with L1 in WT the DMA issue is not present.

Jumpers are correctly set.

Ok, you are looking at the C variants of the motherboard.
I am talking about D.

Wanted to clarify something else to @Feipoa.
He talked about PCI bus divider jumper.
At some point i mentioned ISA bus divider, but meant PCI bus divider.
Fixed in my post above.

retro bits and bytes

Reply 15 of 27, by feipoa

User metadata
Rank l33t++
Rank
l33t++
pshipkov wrote on 2023-05-08, 00:31:

Ok, i confirm that with L1 in WB the DMA issue is not present.

I'm so confused right now. I think you meant to write WT instead of WB.
Could you try using a Yamaha OPL3 type of sound card w/WB mode enabled? I don't have any issue with L1:WB Am5x86 with DOS sound using OPL3SAx, provided PCI=FSB. Maybe your issue is AWE64G related.

EDIT: Your post has changed before my eyes!

Plan your life wisely, you'll be dead before you know it.

Reply 16 of 27, by pshipkov

User metadata
Rank Oldbie
Rank
Oldbie

I had a typo in my last message.
Apparently i fixed it a moment before you posted because in your quote it is still WB instead of WT.
So yes, i meant if L1 in WT all is good.

Will check some other sound cards soon. They work just fine in other rigs with l1wb.
So most likely we have a awe64g problem.
It has been long time since I tried that sound card with other mobos, so cannot remember if it had the same issue there.
Anyone ?

retro bits and bytes

Reply 17 of 27, by feipoa

User metadata
Rank l33t++
Rank
l33t++

My DMA sound problems only arise when using the PCE = 1/2*FSB jumper.

How are you setting the LSD for L1:WT mode? I've attached the manual for this board.

Are you using the jumper settings for either:
(D) INTEL -SLE 486 DX/DX2/DX4 & 486 OVERDRIVE
or
(E) AMD DX/DX2/DX4 (NV8T)
?

I trace the WB/WT# pin on the socket 3 to JP13, pin 3. This particular pin header is not utilised for all but the Cyrix DX2/DX4. This is curious because I recall this WB/WT# pin also going to a header on the M919, but it has a jumper that is used to set WB/WT mode, if I recall correctly.

I would like to see if I set the Am5x86 for L1:WT mode if I still have sound issues when PCI = 1/2*FSB.

Attachments

Plan your life wisely, you'll be dead before you know it.

Reply 18 of 27, by mkarcher

User metadata
Rank l33t
Rank
l33t
feipoa wrote on 2023-05-08, 09:39:

I trace the WB/WT# pin on the socket 3 to JP13, pin 3.

Are you 100% sure in that? As I guess from the suggested jumper settings in the manual, WB/WT# (&EW/5x86 pinout) should be connected to JP8, pin 6, which is directly next to the pin you quoted. When probing from the solder side, I tend to make mistakes like that often, as you suddenly work on a mirror image.

For me, the key indicator is that WB/WT#(&EW) is the same location as CLKMUL(NV8T). The note on NV8T configuration DX2 vs DX4 indicates that JP8 pin 6 is used to set the multiplier.

EDIT: Likely connected to both. That pin (B13) is also WM-RST (aka SRESET aka INIT) on the classic Cyrix 486 pinout, so having that pin jumpered for Cyrix also makes sense.

Reply 19 of 27, by feipoa

User metadata
Rank l33t++
Rank
l33t++

If I made a mistake, I don't know where. I'm attaching my measurement photos. Maybe you'll spot something I missed.

Am5x86_pins_printed_and_flipped_over.JPG
Filename
Am5x86_pins_printed_and_flipped_over.JPG
File size
373.97 KiB
Views
378 views
File license
CC-BY-4.0
LSD_WB-WT_pin_multimeter.JPG
Filename
LSD_WB-WT_pin_multimeter.JPG
File size
1.91 MiB
Views
378 views
File license
CC-BY-4.0

Plan your life wisely, you'll be dead before you know it.