VOGONS


First post, by feipoa

User metadata
Rank l33t++
Rank
l33t++

Does anyone have a Diamond Stealth 32 VLB with a PLCC68 RAMDAC? My Diamond Stealth 32 has solder pads for a PLCC68, but I've only ever seen photos of these with a PLCC44. If someone has one of these cards with a PLCC68, I'd be interested in the VGA BIOS. I've been trying to get my card working in Win95 at 1280x1024x256c-NI-60Hz and 1024x768x65k-NI-60Hz, but it wants to run this resolution in interlaced mode. I was hoping a different RAMDAC or BIOS might correct this problem.

This is what my card looks like, it contains a PLCC44, STG1702J-13Z RAMDAC:

The attachment Stealth32_VLB_PLCC44_top.JPG is no longer available
The attachment Stealth32_VLB_PLCC44_bottom.JPG is no longer available

I tried swapping the RAMDAC with a PLCC68, STG1703J-13 RAMDAC, but screen stayed blank:

The attachment Stealth32_VLB_forced_PLCC68.JPG is no longer available

Datasheets here:

The attachment RAMDAC-STG1702.PDF is no longer available
The attachment RAMDAC-STG1703.pdf is no longer available

There exists an ET4000/w32p based Hercules VLB card with a PLCC68 RAMDAC, an ICS5341-3, but the pinouts are different from the ST RAMDAC and it will not work on the Diamond Stealth 32. For the Hercules card, the PLCC68 RAMDAC was needed to get 1280x1024x256c working in non-interlaced mode, but 1024x768x65k should work with the ST PLCC44.

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

Reply 1 of 22, by feipoa

User metadata
Rank l33t++
Rank
l33t++

For the Diamond card, 1024x768x65k at 60 Hz works well in NT4, but this resolution is insisting on running in 43Hz-interlaced mode in Windows 95. I have tried several different Windows drivers, but I cannot get this card running 1024x768x65k, non-interlaced in Win95.

Does anyone know how to modify the VGA BIOS so that only non-interlaced, 60 Hz will be selected when I run the card at 1024x768x65k ?

Attached is the Diamond/Spea driver from the SPEA wayback website:

The attachment Diamond_Stealth32_VLB_W95W32-v4.0.953.exe is no longer available

Attached is the v2.15 Diamond VGA BIOS:

The attachment Diamond_Stealth_32_VLB_ET4000W32P_VGABIOS_v2.15.zip is no longer available

I also tried running my Diamond Stealth 32 VLB with the Hercules VLB BIOS, but the screen stayed blank. I don't own the Hercules card, but here is the Hercules card's VGA BIOS:

The attachment Hercules_Dynamite_Power_VL_V8.00N-D2g_with_ICS5341-3_PLCC68.zip is no longer available

Alternate drivers and utilities disk location: http://diamond.retropc.se/driver/stealth/st32/files.htm

Last edited by feipoa on 2024-01-21, 03:02. Edited 1 time in total.

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

Reply 2 of 22, by feipoa

User metadata
Rank l33t++
Rank
l33t++

It was mentioned to me that I might be able to use VMODE to resolve the issue with the Stealth 32 running interlaced mode at 1024x768.

Looking through the readme, I see:

SELECTING DISPLAY SCAN RATES

Vmode includes commands to provide additional scan rates that
may improve synchronization with a variety of monitors. Normally, the
default scan rates are effective, but some monitors may require
different scan rates for the most satisfactory display results. By
setting these modes, frequencies are adjusted that affect displayed
modes. The following are available via the VMODE command.
You may wish to add to your autoexec.bat file the Vmode command and parameter
for the best display possible on your monitor.

example: VMODE x

VMODE Modes Vertical Horizontal
x Value affected Refresh Rate Frequency Resolution
35K 29,2A,30 56Hz 35KHz 800x600 *
38K 29,2A,30 60Hz 38KHz 800x600 *
48K 29,2A,30 72.7Hz 48KHz 800x600 *
45M 37,38 87Hz 35.5KHz 1024x768 interlaced *
65M 37,38 60.5Hz 49.0KHz 1024x768 non-interlaced *
72M 37,38 69.8Hz 56.3KHz 1024x768 non-interlaced *
72H 11,12,25,2E 72.7Hz 38.7KHz 640x480 *
1280-I 3F 87Hz 48.1KHz 1280x1024 interlaced *
1280-60 3F 60Hz 64.4KHz 1280x1024 *
1280-70 3F 70Hz 75KHz 1280x1024 *

* Note: Not all modes are supported by all monitors. Attempting to use
modes which your monitor does not support will produce unsatisfactory
results.

From this listing, I guess I'd run this at the DOS C: prompt,

VMODE 65M

Then boot into Windows 95.

Anyone familiar with this? I've attached VMODE.

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

Reply 3 of 22, by feipoa

User metadata
Rank l33t++
Rank
l33t++

Running VMODE 65M or VMODE 72M, either before booting into Windows 95, or running it from within a Windows Command Prompt, did not help the situation. The Diamond Stealth 32 is still insisting on running interlaced mode for either 1024x768x256c or 1024x768x65k when running Windows 95.

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

Reply 4 of 22, by feipoa

User metadata
Rank l33t++
Rank
l33t++

Attached is the Diamond Stealth Utilities disk. This disk contains setmode.exe, which is a DOS GUI programme: Stealth 32 Setmode rev 1.16. Upon running setmode.exe in DOS, I can use a custom monitor option to set all vertical resolutions to 60 Hz. Or I can select some pre-configured monitor like .NEC 5FG. Upon exiting the application, I receive this message:

! SAVE UPDATED CONFIGURATION !
This step will erase the old configuration
Press <ENTER> to continue or <ESC> to abort.

Screen will blank while file is updated.

Now, when I boot Windows 95 and I am able to run:
1024x768x256c
1024x768x65k
1280x1024x256c

However, upon a hard or soft reset, the configuration is lost and I cannot run these resolutions in Windows 95 without first running setmode.exe again. If there is a way to automate this in autoexec.bat, the instructions do not specify.

I noticed how the message says that it will erase the old configuration and update the file, but it doesn't say which file. I wish the power-on defaults were set for 60 Hz.

Next, I downloaded this archive from elianda's FTP site, et4w32p.vlb.zip, which contains VMODE with more options compared to my previous VMODE upload. It has a utility to enable interleaving, setting refresh rates, and also a setmode.exe. While this programmes are runable in DOS, and it looked promising when I set them up, nothing gets saved upon exiting.

I'm also attaching DMODE, but I haven't played with this yet.

Within the VMODE folder, there's also a file called TLIVESA.COM which sets VESA 1.2, but it still doesn't overwrite the interlaced power-on defaults of the VGA BIOS. So, I still have to manually navigate the setmode.exe GUI every boot.

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

Reply 5 of 22, by Tiido

User metadata
Rank l33t
Rank
l33t

These cards don't have any EEPROM or flash on them the utils could change so none of the conf changes can be presistent. Only some cards, like some ATI things, have an EEPROM that the video BIOS and/or driver checks into and some utils are able to update.

T-04YBSC, a new YMF71x based sound card & Official VOGONS thread about it
Newly made 4MB 60ns 30pin SIMMs ~
mida sa loed ? nagunii aru ei saa 😜

Reply 6 of 22, by feipoa

User metadata
Rank l33t++
Rank
l33t++

mkarcher was willing to take a look at the situation. He was able to determine that Diamond Stealth's SETMODE is able to run from the command line (without GUI), like this:

SETMODE MONITOR

This will load the previously GUI-selected monitor at command line or autoexec.bat. At boot-up, it now looks like:

The attachment Stealth32_SETMODE_NEC_5FG.JPG is no longer available

It does reset the screen, so you will loose the visual display of the autoexec/config startup log, but that is a trivial inconvenience.

I can now start Windows 95 and be able to run non-interlaced:
1024x768x256c
1024x768x65k
1280x1024x256c

Instead of SETMODE MONITOR in autoexec.bat, I can also use:

SETMODE 5FG

According to mkarcher, the BIOS defaults to a monitor with ID "8". The NEC 5FG is ID "7". This is at offset 23F. He says I should be able change the value at 23F from 08 or 07, and increase the checksum byte at 7FFF from 63 to 64 (hex), inorder to not have to fuss with setmode. Looking through the pre-defined monitors which support up to 1280x1024 non-interlaced, I see:

NEC 5FG uses:
640x480: 72 Hz
800x600: 72 Hz
1024x768: 72 Hz
1280x1024: 60 Hz

Nanao F550i uses:
640x480: 60 Hz
800x600: 72 Hz
1024x768: 70 Hz
1280x1024: 60 Hz

ViewSonic 7
640x480: 72 Hz
800x600: 72 Hz
1024x768: 70 Hz
1280x1024: 60 Hz

HL6955 SETK
640x480: 60 Hz
800x600: 72 Hz
1024x768: 72 Hz
1280x1024: 60 Hz

Since I'm using an LCD, there aren't flicker issues and I think the lower the vertical refresh rates are preferred to increase compatibility with the greatest number of monitors. Thsu, I'm selecting Nanao F550i. Unfortunately, there's not a pre-defined BIOS monitor option for the F550i. Thus, I'm providing a modified VGA BIOS which sets the power-on defaults to use the 5FG. If you want lower or custom refresh rates, you can use the custom monitor option within setmode.exe.

The attachment Diamond_Stealth_32_VLB_ET4000W32P_VGABIOS_v2.15_monitor_set_to_5FG.zip is no longer available

I'll still be interested if any one has one of these cards with a PLCC-68 RAMDAC. I'd be interested in the RAMDAC model number and a copy of the VGA BIOS.

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

Reply 7 of 22, by mkarcher

User metadata
Rank l33t
Rank
l33t

The intended workflow for monitor configuration on the Diamond Stealth 32 is to obtain the Stealth utility disk and use the setmode utility to configure the monitor. The configuration will not be saved into any EEPROM or CMOS RAM, but it will be stored into SETMODE.EXE. If then run "SETMODE MONITOR", it will just apply the configuration that has been saved into SETMODE and exit. This command is intended to be run from AUTOEXEC.BAT, so you get the monitor setting applied everytime the computer boots.

Actually, it seems like SETMODE.EXE is buggy. Everytime you invoke SETMODE.EXE, it checks whether it contains a configuration with a valid checksum, and only if the checksum is invalid, the monitor type is directly sent to the card. While this seems like a logic error, it's actually not that bad that this code doesn't work, because it interprets the stored monitor in a wrong way, so I don't bother determining file offsets to fix the checksum check.

There is a list of 33 monitor definitions in SETMODE.EXE, which will be mapped to a couple of different monitor IDs supported by the Stealth 32 BIOS. The monitor description texts in SETMODE are obviously not accurate in standard SETMODE operation, because it displays different info texts for monitors that map to the same BIOS ID. I'm providing a list of mappings for your convenience:

  • BIOS ID 0: NEC 3FG / SVG 150-COL / SVG 200-COL / SVG 201-COL
  • BIOS ID 1: NEC 6FG
  • BIOS ID 2: EVG 500-COL / Vesa 75
  • BIOS ID 3: NEC 4FG / CTX 5468NI
  • BIOS ID 5: CS1024ni / CS1024ni2
  • BIOS ID 6: NEC 3FGe / NEC 3FGx / ViewSonic 6
  • BIOS ID 7: EVG 400-COL / NEC 5FG / MAG 17F / ViewSonic 7 / Sony 1604S / Nanao 9500 / Nanao 9070u / Nanao 9080i / Nanao F550i / Nanao T560i / HL6955 SETK
  • BIOS ID 8: Fixed Frequency / IBM 8514 / CS1024
  • BIOS ID 9: SONY 1304
  • BIOS ID 10: SONY 1304s
  • BIOS ID 11: CS1572 FS
  • BIOS ID 12: NEC 4FGe/5FGe
  • BIOS ID 13: EVG 300-COL

The BIOS implements IDs 0 to 12. IDs 13, 14 and 15 are treated the same as ID 8 (baseline configuration), so "EVG 300-COL" is treated the same way as Fixed / 8514 / CS1024. The BIOS does not implement configuring refresh rates per mode or centering / sizing individual modes. On the other hand, SETMODE offers these capabilities when you choose "custom monitor". In that case (only), "SETMODE MONITOR" will install a BIOS extension as TSR that implements loading custom mode parameters per mode. This BIOS extension can be unloaded using "SETMODE -u".

The SETMODE utility contains another undocumented option: You can invoke it as "SETMODE MCLK xx" where xx is a decimal number between 30 and 75. This option communicates with the clock generator, so this likely changes the memory clock to a value between 30MHz and 75MHz. It also saves the MCLK settings to SETMODE.EXE. I can't find any code that uses this value at a later time to restore it after a reboot, though. There also is SETMODE CLOCK that dumps the current value stored in SETMODE.EXE, which may or may not be equal to the value currently programmed into the clock chip.

Reply 8 of 22, by feipoa

User metadata
Rank l33t++
Rank
l33t++

Thanks for the further details! You dived in quite deep.

mkarcher wrote on 2024-01-22, 21:32:

The SETMODE utility contains another undocumented option: You can invoke it as "SETMODE MCLK xx" where xx is a decimal number between 30 and 75. This option communicates with the clock generator, so this likely changes the memory clock to a value between 30MHz and 75MHz. It also saves the MCLK settings to SETMODE.EXE. I can't find any code that uses this value at a later time to restore it after a reboot, though. There also is SETMODE CLOCK that dumps the current value stored in SETMODE.EXE, which may or may not be equal to the value currently programmed into the clock chip.

This is very interesting. I will run SETMODE CLOCK to see what is stored in setmode.exe. As for determining the current MCLK, I guess I need to probe the PLL with the scope?

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

Reply 9 of 22, by mkarcher

User metadata
Rank l33t
Rank
l33t

About RAMDAC support: While the BIOS detects a wider range of DACs, it can only return "DAC type 4" or "DAC type 5" to SETMODE. 4 is interpreted as "STG1700" and 5 is interpreted as "STG1702", so it is likely that the Stealth 32 was only shipped with those two RAMDAC types. Some features are gated by the presence of a STG1702, most prominently: Only the STG1702 supports 24bpp packed true color while transferring 16 bit at a time.

I don't see why there is the PLCC68 pinout. Maybe it is intended for an STG1703, or possibly a non-STG DAC also supported by the BIOS. The non-STG DAC uses the following command values: 04h = 8bpp (1 byte at a time), 14h = 15bpp (2 bytes at a time), 24h = 8bpp (2 bytes at a time), 34h = 16bpp (2 bytes at a time), 74h = 24bpp (1 byte at a time). Maybe someone recongnizes these command bytes.

Reply 10 of 22, by mkarcher

User metadata
Rank l33t
Rank
l33t
feipoa wrote on 2024-01-22, 22:03:

This is very interesting. I will run SETMODE CLOCK to see what is stored in setmode.exe. As for determining the current MCLK, I guess I need to probe the PLL with the scope?

MCLK is set up by the BIOS on boot. The BIOS sets a value of 50.2 MHz. That value is different from what you get by SETMODE MCLK 50, which should result in 50.8 MHz.

Last edited by mkarcher on 2024-01-23, 00:05. Edited 1 time in total.

Reply 11 of 22, by feipoa

User metadata
Rank l33t++
Rank
l33t++

It is possible that if the Diamond Stealth 32 VLB existed with a PLCC-68 RAMDAC that it came with a different BIOS. I've seen Diamond PCI cards with different RAMDAC's using different BIOSes. The Diamond S3-968's with TI vs. IBM RAMDACs are one such example.

I can say that the STG1703J, the CH8398, and the ICS5341-3 don't work on this card with the existing BIOS. The ICS5341-3 has the wrong pinout and gets hot very fast. I turned it off within 3 seconds, so maybe the ICS is fried, maybe not. The other two don't get hot.

I don't have any cards with an STG1700, but online searches reveal that it is also a PLCC-44.

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

Reply 12 of 22, by mkarcher

User metadata
Rank l33t
Rank
l33t
feipoa wrote on 2024-01-22, 23:51:

I can say that the STG1703J, the CH8398, and the ICS5341-3 don't work on this card with the existing BIOS. The ICS5341-3 has the wrong pinout and gets hot very fast. I turned it off within 3 seconds, so maybe the ICS is fried, maybe not. The other two don't get hot.

Im surprised that the STG1703 doesn't work. That chip is intended to be a very compatible to the STG1702. The BIOS RAMDAC identification code should detect a properly connected STG1703 as STG1702 and work fine with it. As it doesn't work, I suspect that the pinout of the STG1703 still is no exact match to the intended PLCC68 DAC. (BTW: MCLK has been added to my previous post)

Reply 13 of 22, by mkarcher

User metadata
Rank l33t
Rank
l33t

Oh, I see both the AT&T 20C408 you mentioned in a PM and the STG1703 have integrated clock synthesizers. It might be possible that the output of the ICD2061A clock synthesizer (pins 8 and 9) are wired in parallel with the clock outputs of PLCC68 DACs (pins 9 and 61), so you get trouble if both chips are installed. The BIOS only supports the ICD2061A, so possibly the STG1703 starts to work if you disconnect those two pins of the DAC. Removing the ICD2061A chips is no viable option with your current BIOS. The BIOS (as is) won't take any advantage of anything better than the STG1702, though.

Reply 14 of 22, by feipoa

User metadata
Rank l33t++
Rank
l33t++

Lots of juicy information here. Much appreciated!

I connected the oscilloscope to MCLK and VCLK on the ICD2061ASC-1 clock generator:

The attachment Diamond_Stealth_32_VLB_VCLK_MCLK_connections.JPG is no longer available

The scope measurements indicated that MCLK = 50.0 MHz and VCLK ~= 28 MHz:

The attachment Diamond_Stealth_32_VLB_VCLK_MCLK_oscilliscope_MCLK_measurement.JPG is no longer available
The attachment Diamond_Stealth_32_VLB_VCLK_MCLK_oscilliscope_VCLK_measurement.JPG is no longer available

Next, I ran:

SETMODE CLOCK
The attachment Diamond_Stealth_32_VLB_VCLK_MCLK_DOS_setmode_clock_result.JPG is no longer available

It also indicates 50 MHz.

Next, did a power cycle. MCLK first starts out at 40 MHz (which is the FSB for this setup), then after a few seconds, switches to 50 MHz. At soft- or hard-resets, MCLK stays at 50 MHz.

Then, tried:

SETMODE MCLK 48

oscilliscope measures 48 MHz.
SETMODE CLOCK indicates 48 MHz.

The unnerving part comes next - I turned the power off, then turned it back on. Measured MCLK and it was still at 48 MHz. Being conservative, I repeated the procedure for MCLK = 51 MHz. Thus, it looks as if the MCLK value get programmed into clock generator and it stays resident. This means that if I wanted to experiment with overclocking MCLK and selected a value which is too fast for the card, the card may no longer be usable. I suppose I could connect the ICD2061A up to an Arduino and figure out the serial programming, but this is hardly worth the effort. Do you know of a simple means to get MCLK programmed back to 50 MHz if MCLK was set too high and will no longer generate a display?

For any overclocking experiments, we would have to find the breaking point for MCLK, then back it off some. Maybe it is 70 MHz?

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

Reply 15 of 22, by feipoa

User metadata
Rank l33t++
Rank
l33t++

Attached are the Cypress and IC Designs datasheets for the ICD2061A programmable clock generator. They give some example of how to program the clock generator, which requires a single 24-bit word to be sent serially. There are several other caveats and constraints mentioned. It suggests using their BitCalc Windows application to generate this 24-bit word. I haven't yet looked for BitCalc.

I don't think I'd want to get into this with my Arduino unless I brick my Stealth 32 card. Alternately, maybe I can programme a bricked card/PLL in-motherboard using SETMODE.exe if I use another [PCI] graphics card as the primary display? I should test this out; the curiosity of how fast I can take MCLK to will weigh upon me. I recall that changing MCLK on the ARK1000VL didn't have a huge impact for most applications, but there was some benefit.

The Cypress datasheet mentions some constraints:
MCLK min: 52 MHz, max: 120 MHz
VCLK min: 65 MHz, max: 165 MHz

But we are using MCLK at 50 MHz and... why is VCLK only at 28 MHz? Or is VCLK only of needed from the clock generator if we are using a PLCC-68 RAMDAC?

Looking at the datasheets and probing some traces on the PCB, I find that differences between the STG1702 (PLCC44) and STG1703 (PLCC68) are that the STG1703 has these extra pins:

STG1703, pin 9, VCLK ----> goes to ICD2061A, pin 9, VCLKOUT
STG1703, pin 61, MCLK ----> goes to ICD2061A, pin 8, MCLKOUT
STG1703, pin 43, Strobe ----> goes to ICD2061A, pin 12, INIT0
STG1703, pin 7, Xin ----> goes to 14.318 MHz crystal
STG1703, pin 6, Xout ----> goes to 14.318 MHz crystal
STG1703, pin 44, VS0 ----> goes to ICD2061A, pin 1, SEL0/CLK
STG1703, pin 45, VS1 ----> goes to ICD2061A, pin 2, SEL1/DATA
STG1703, pin 46, VS2 ----> goes to GND
STG1703, pin 47, VS3 ----> goes to GND

To get the PLCC68 STG1703 working, were you suggesting that I isolating STG1703 pins 9 and 61?

Is there any tangible benefit to using STG1703 over STG1702? The datasheets indicate that both are 16-bit RAMDACs, yet the datasheet calls the 1703 an upgrade from the 1702. "The 68 PLCC pinout is designed to permit easy upgrade from the STG1700/1702 44 pin PLCC".

EDIT: I tried to run my PC Chips M919 with VLB graphics + ISA graphics, but screen stays blank. I then tried to run it with VLB graphics + PCI graphics, but screen stays blank. I tried multiple PCI cards. Alternately, I suppose if I brick the Stealth 32 card and there's no display, I could still let the computer boot to the C: prompt, then type in SETMODE MCLK 50 with a blank screen, but there's still the possibility that it needs a functioning graphics card to re-programme the serial interface. It would be nice if I had a backup ICD2061A that's already set to 50 MHz MCLK.

EDIT2: Does anyone know a safe upper-limit for MCLK on an ET4000/w32p?

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

Reply 16 of 22, by Disruptor

User metadata
Rank Oldbie
Rank
Oldbie
feipoa wrote on 2024-01-23, 08:40:

Alternately, I suppose if I brick the Stealth 32 card and there's no display, I could still let the computer boot to the C: prompt, then type in SETMODE MCLK 50 with a blank screen...

Perhaps I would give this a try. Automated recovery boot disk. 😀

feipoa wrote on 2024-01-23, 08:40:

..., but there's still the possibility that it needs a functioning graphics card to re-programme the serial interface. It would be nice if I had a backup ICD2061A that's already set to 50 MHz MCLK.

Yes, that may happen.

Reply 17 of 22, by mkarcher

User metadata
Rank l33t
Rank
l33t
feipoa wrote on 2024-01-23, 08:37:

The unnerving part comes next - I turned the power off, then turned it back on. Measured MCLK and it was still at 48 MHz. Being conservative, I repeated the procedure for MCLK = 51 MHz. Thus, it looks as if the MCLK value get programmed into clock generator and it stays resident. This means that if I wanted to experiment with overclocking MCLK and selected a value which is too fast for the card, the card may no longer be usable. I suppose I could connect the ICD2061A up to an Arduino and figure out the serial programming, but this is hardly worth the effort. Do you know of a simple means to get MCLK programmed back to 50 MHz if MCLK was set too high and will no longer generate a display?

The ICD2061A does not have non-volatile storage. The data sheet lists the power-up frequency selection possiblities, and your card seems to use the setting INIT1=0, INIT0=1, which is supposed to configure the chip to 40MHz MCLK (independent of FSB clock, having 40MHz at both places is just coincidence), and to the standard 25/28MHz video clocks for VGA compatibility. The data sheet explicitly talks about a "power on reset" configuring the chip, so it should revert back to these settings even if you cut the power for just a second. Furthermore, the BIOS unconditionally configures the chip to ~50 MHz during POST. There is no plausible explanation fo the ICD2061A to not revert to 40MHz when you power down the machine, and there is really no plausible explanation for the ICD2061A to not return to 50MHz as soon as the POST of the graphics card is executed. Thus I suspect that your measurements were faulty. Possibly you set the scope to "normal triggering" (instead of the default setting "auto triggering") and lost contact. In that case, the last known good waveform will stay on the screen forever.

Expected behaviour is: As soon as you power-cycle the machine, you will have 40 MHz initialized by the power-on reset circuit of the ICD2061. As soon as the mainboard BIOS hands over to the VGA VIOS, you will get 50MHz, and you only get other frequencies as soon as you run SETMODE MCLK from the DOS prompt. SETMODE CLOCK is close to the most useless feature ever invented, because it just tells you what clock has been last set with this copy of SETMODE.EXE, so the value reported by SETMODE is useless as soon as you push the reset button.

feipoa wrote on 2024-01-23, 08:40:
The Cypress datasheet mentions some constraints: MCLK min: 52 MHz, max: 120 MHz VCLK min: 65 MHz, max: 165 MHz […]
Show full quote

The Cypress datasheet mentions some constraints:
MCLK min: 52 MHz, max: 120 MHz
VCLK min: 65 MHz, max: 165 MHz

But we are using MCLK at 50 MHz and... why is VCLK only at 28 MHz? Or is VCLK only of needed from the clock generator if we are using a PLCC-68 RAMDAC?

On the one hand, you misunderstand parts of the data sheet; on the other hand, that box in the Cypress data sheet makes no sense. The IC Designs data sheet mentions different constraint which are at least consistent with the other parts of the data sheet. It generally says f(VCO) should be between 50 and 120 MHz. Let's start with the misunderstanding, though: The data sheet does not specify the minimum frequency of MCLK/VCLK, as you seem to assume. It specifies the frequency of the internal oscillator in the PLL chip (the voltage controlled oscillator), which is used to derive the MCLK/VCLK. The derivation happens by using the "Post-VCO Divisor" (Table 6 in the Cypress data sheet). If you select a Post-VCO divisor of 2, the VCLK range will drop from 50..120MHz to 25..60MHz. As you can select divisors up to 128, you could synthesize frequencies below 500kHz. While Cypress likely bought IC Designs and datasheet revisions correcting minor details might happen, it makes absolutely no sense that the VCO range selection table (Table 7 in the Cypress data sheet) lists a lot of ranges spanning the 50 to 120MHz range (for both the MCLK and VCLK oscillator), and then continues to mention constraints that do not overlap the range selection. I suggest to just ignore the the VCO ranges given in Table 8. I'm not going to argue whether the highest recommendable reference frequency is 25MHz (as the Cypress datasheet claims) or 60MHz (as the IC Designs datasheet claims), because the reference frequency is fixed at 14.318MHz anyway. Furthermore, it is possible that Cypress discovered that the chip has suboptimal performance at reference clocks above 25MHz, so they don't recommend higher frequencies anymore.

You do not need VCLK or MCLK from the clock generator when you use a PLCC-68 RAMDAC: The PLCC-68 RAMDAC integrates its own clock generator. The idea is that you can build cheaper cards (less components) if you use a PLCC-68 RAMDAC instead of having to deal with a PLCC-44 RAMDAC and a dedicated clock chip. So VCLK is only needed if we are not using a PLCC-68 RAMDAC.

feipoa wrote on 2024-01-23, 08:40:

Looking at the datasheets and probing some traces on the PCB, I find that differences between the STG1702 (PLCC44) and STG1703 (PLCC68) are that the STG1703 has these extra pins:

(mapping snipped)

To get the PLCC68 STG1703 working, were you suggesting that I isolating STG1703 pins 9 and 61?

Exactly what I expected. The PLCC68 RAMDAC is meant as substitute for both the clock generator and the PLCC44 RAMDAC. I was indeed suggesting to isolate pins 9 and 61. Furthermore, having two chips drive the 14.318MHz crystals may or may not cause issues, depending on how the pins are internally set up in those chips. Isolating pins 6 and 7 as well is a good idea, too. You can't just remove the ICD2061A chip and use the STG1703 clock synthesizer instead, because the BIOS does not support programming clocks in a STG1703 chip, it only supports programming clocks in the ICD2061A chip, and unconditionally assumes the ICD2061A is present.

feipoa wrote on 2024-01-23, 08:40:

Is there any tangible benefit to using STG1703 over STG1702? The datasheets indicate that both are 16-bit RAMDACs, yet the datasheet calls the 1703 an upgrade from the 1702. "The 68 PLCC pinout is designed to permit easy upgrade from the STG1700/1702 44 pin PLCC".

I don't expect any benefit. The BIOS won't notice the difference. The BIOS can detect STG DACs. If it detects an STG DAC, it will probe the device ID register, and if it is zero, it treats the DAC at STG1700, and if it is any other value, it treats the DAC as STG1702. As I don't have a comprehensive 1702 data sheet at hand, I can't compare whether the 1703 has better specs, but I can say for sure that the BIOS (as is) will not use any feature of the STG1703 that doesn't work exactly the same way as on the STG1702.

feipoa wrote on 2024-01-23, 08:40:

I tried to run my PC Chips M919 with VLB graphics + ISA graphics, but screen stays blank.

That's not surprising: The Video BIOS ROM chip on VLB graphics cards is connected to the ISA bus, and will conflict with the ROM chip on the ISA graphics card. Pulling a ROM chip still isn't likely to work, because usually there is a buffer (digital amplifier) between the BIOS chip and the ISA bus, and even with the BIOS chip removed, the buffer chip will drive something (possibly garbage, possibly all FFh) on the ISA bus.

feipoa wrote on 2024-01-23, 08:40:

I then tried to run it with VLB graphics + PCI graphics, but screen stays blank.

This is supposed to "work", but not in the way you want it. A standard 486 BIOS that detects a VGA ROM on the ISA bus (that is a VLB or ISA graphics card) is going to skip initialization of the PCI graphics card (so you will get a blank screen), but the ISA/VLB graphics card is supposed to work. If the PCI graphics card has a "native" operation mode that doesn't interfere with VGA operation, a graphics driver of an operating system might enable that native mode without enabling the compatiblity resources that conflict with the ISA/VLB VGA graphics card, to get both cards running at the same time.

feipoa wrote on 2024-01-23, 08:40:

Does anyone know a safe upper-limit for MCLK on an ET4000/w32p?

The ET4000/W32p data sheet I have at hand has the specification of the clock interface in section 4.5. This data sheet uses the name "system clock (SCLK)" instead of "memory clock (MCLK)" to talk about that frequency. The data sheet specification item "F4 (SCLK cycle time)" states: "min. 20ns", so 50MHz is the maximum vendor-permitted MCLK/SCLK, everything above that is overclocking. I don't have any experience about the amount of headroom you have on ET4000/W32p chips, though.

Reply 18 of 22, by feipoa

User metadata
Rank l33t++
Rank
l33t++

Thanks for your analysis. Upon further examination with the scope, MCLK does indeed reset to 40 MHz, then to 50 MHz upon system reset. I'm not sure how I messed up reading the scope, but your explanation is plausible. Once I noticed that the scope result matched that of SETMODE CLOCK, I stopped looking at the scope and trusted the SETMODE CLOCK setting, thinking it was actually reading the MCLK value. Your confirmation that SETMODE CLOCK merely regurgitates the last value programmed into it explains the problem.

Okay, so isolate PLCC68 pins 9 & 61 and 6 & 7 to determine if I can get an STG-1703 working. As I've already soldered on a PLCC44 socket, it is unlikely I will try the STG-1703 again, unless a photo emerges of a Diamond Stealth 32 running a PLCC-68 RAMDAC. Unfortunately, removing the sockets with hot air tends to damage the base plastic (the bottom planar section).

Once the fear of a permanently stuck MCLK was removed, I did some benchmarking. I tried MCLK=70 MHz, but the screen was garbled. I tried 63 MHz and there was only minor garbling while running DOOM. I tried 60 MHz and the screen looked good. The results are as follows,

Am5x86-160, M919, 1024K (2-1-2), 128M EDO (0/0 ws), FSB 40 MHz
ET4000/w32p (Diamond Stealth 32 VLB)

DOOM
MCLK = 50 MHz: 1198 realtics
MCLK = 60 MHz: 1194 realtics
The improvement in DOOM is almost nil. A similar was noted when increasing MCLK on the ARK1000VL from 55 to 80 MHz.

Next, I ran WinTune98 in Windows 95 at various resolutions. Since I'm using the NEC 5FG monitor specification, the refresh rates are 800x600 at 72 Hz, 1024x768 at 72 Hz, and 1280x1024 at 60 Hz.

WinTune98
MCLK = 50 MHz
800x600x16 = 13.10 Mpixels/s (72 Hz)
800x600x24 = 3.88 (72 Hz)
1024x768x8 = 25.74 (72 Hz)
1024x768x16 = 11.13 (72 Hz)
1280x1024x8 = 23.47 (60 Hz)

MCLK = 60 MHz

800x600x16 = 14.4 Mpix/s
800x600x24 = froze
1024x768x8 = 26.63
1024x768x16 = 13.2
1280x1024x8 = 25.54

I was going to compare the Stealth 32 VLB (ET4000/w32p) against the previously tested ARK1000VL, but I ran those tests at 180 MHz, thus the comparison isn't 1:1. Nonetheless, until I run a proper VLB comparison, the values for the ARK1000VL at 180 MHz are provided below.

Am5x86-180, M919, 1024K (2-1-2), 128M EDO (1/0 ws), FSB 60 MHz
ARK1000VL (2themax)
WinTune98
MCLK = 80 MHz (the max it can do)
800x600x16 = 14.52 Mpixels/s (72 Hz)
800x600x24 = 4.26 (60 Hz)
1280x1024x8 = 24.0 (60 Hz)

From these results, I would expect the ET4000/W32P to have better Windows performance.

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

Reply 19 of 22, by CoffeeOne

User metadata
Rank Oldbie
Rank
Oldbie

Maybe no more relevant, but you might know I have this card:
Re: Where to obtain 110 MHz RAMDAC for ARK1000VL graphics card? which had a STG1700
Card is non functional now, RAM and RAMDAC were removed, but in case you want to have the Bios, I can dump it.