• Please review our updated Terms and Rules here

DOS Text Scrolling Crash using Trident TVGA9000i-3 on 8-bit 8088 based PC

mogwaay

Member
Joined
Mar 5, 2021
Messages
32
Hope you don't mind me cross posting from Vogons, but I hadn't had any replies there to this and thought there might be peeps here with more insight into my VGA problems....

Hi all,

I've been testing a Trident TVGA9000i graphics card in my Xi8088 based computer, the https://github.com/moogway82/XTjr and it is doing some weird stuff.

Details on the card are:
Trident TVGA9000i-3 based with a 4.01E ROM. In an 8-bit ISA slot with jumpers set for 8-bit mode and Non-Interlaced modes. 256kb RAM. Electrolytics caps have been replaced as some seemed marginal on testing.

Firstly, as you can see in videos, it's detecting the display as Monochrome, but I'm not too worried about that at the moment as it's something to do with Pin 12 Monitor ID and I can work-around it using SMONITOR utility, it's been discussed here before (Problems with 8-bit TVGA9000 based ISA video card). [Aside: I had to GND Pin 12 as left floating machine wouldn't boot at all... I thought N/C Pin 12 would normally be the indicator for a colour monitor? Maybe this is a sign of a bad TVG9000i chip?]

The BIG issue I have at the moment is it locking up and DOS text is not scrolling vertically. When you get to the bottom of the screen, the machine just hangs. The boot process also doesn't scroll and just does a weird text cursor jumping around thing and lots of hidden and missing text - only XTIDE and Vid BIOS show text until SMONITOR and SVM in autoexec.bat run. I put the missing text down to monochrome being detected maybe, but the text screen scrolling issue is weird and super annoying.

Video showing the Boot Process and DOS crash:

Short Video showing just the crash in DOS on scroll

I can still run some programs however. The SVM utility for Trident cards to change the video mode works great and lots of the modes work fine when returning to DOS, however all hang when you reach the bottom of the screen. Prince of Persia's SETUP program works fine and the game runs great in VGA mode - I just get a black screen in CGA, and EGA mode. When exiting back to DOS, the machine hangs with a Black Screen. (I'm assessing machine-has-hung by whether it will soft reset Ctrl+Alt+Del). "E" PC-DOS's Edit replacement, runs fine too.

Video showing Prince of Persia running then crash on Exit:

TOPBENCH will show a grey screen and a flashing cursor on the left side of the screen 2/3rds down and hang.

Video showing TOPBENCH crash:

I've tried some of the other jumper settings on the card: 8/16-bit Memory use BIOS detect and Non-Interlaced and Interlaced, but seems to make no difference. Also, the computer works great with my 2 working EGA cards, no weird scrolling crashes there. I don't have another VGA card to test with yet.

I'd be really interested if anyone has seen something like this before with an old 8-bit PC with an ISA VGA card in DOS?

My XTjr has no DMA or 2nd PIC (no IRQs above 7). I'm sure DMA isn't a problem, not sure about 2nd Intterupt Controller, but pretty sure old VGA cards didn't do much with IRQs (IRQ 2 maybe).

My suspects are:
- ROM version, would like to try the 3.51 version, maybe 4.01E expects too much from the hardware of my XTjr? [update: got a new EPROM on order, hoping to give 3.51 a spin soon]
- RAM - only has 256kb and maybe one of the banks are wonky (although surprised PoP works so well if that's the case...)? [update: also got some DRAM on order try upgrading to 512KB - or replacing existing]
- Bad TVGA9000i-3 chip - nowt I can do at that point 😉 but surpised that it still works so well in PoP VGA mode, but terrible in Text mode

Any thoughts are greatly appreciated, many thanks!
Cheers,
Chris.
 
Sort of sounds like it might be crashing when it tries to read from the video RAM.

Text modes usually won't read until they need to scroll. Most DOS games never bother reading, they just write. Diagnostic programs may try to read at certain points.
 
Sort of sounds like it might be crashing when it tries to read from the video RAM.

Text modes usually won't read until they need to scroll. Most DOS games never bother reading, they just write. Diagnostic programs may try to read at certain points.
Thanks, that's really interesting and makes a lot of sense, it'll read back what's in the buffer to shift it up 1 line. Wonder why reading from the ram would fail, nice I have something I can check in scopes!
 
Hi twolazy, thanks for the suggestion. The card doesn't have a WS jumper, however setting my machine's wait states to: 2WS for IO, IOCHRDY (min 2WS) and vRAM (MEMR/W at 0xA...-0xB... range) - which is the same configuration I run my EGA card to get it stable at 10MHz - it was a little more stable and did allow some scrolling. However it still hung after a short while - mainly when trying to start TOPBENCH again as it scrolls through the machines it's loading the benchmarks for.

I took some traces on my cheapo Logic Analyser when TOPBENCH startup crashed on some of the bus pins [ALEE is just ALE typo)]:

Here's just before it crashes, possibly scrolling a row of text:

VGA-vRAM-READ-WIDE-OK.png

And here's it at the point it crashes:

VGA-vRAM-READ-WIDE-BAD.png

Only difference I can see is a slightly weird blip on the D0 line - although could be noting, I get these from time to time on my cheapo LA...

I also tried just poking around the pins of the DRAM with my, also cheapo, USB scope and I wasn't sure about this on Pin 2, IO2, Data bit 2 of the 514256J-7 DRAM:

U3_pin2.png

He's it closer up too:

VGA-DRAM-DATA-PIN-AGAIN.png

I'm not very expeirened in assessing DRAM and my oscilliscope is 24MHz max, so might not have the verical resolution, but this doesn't look at all as nice as the traces I get from the 41646 DRAM on the EGA card - what's that weird rising curve and the noise looks very high on the LOW? Maybe someone with more expeirience of DRAM couls tell me this looks ok, but as a digital signal I'm not impressed.

It might be that the large slow rising curve is because some of the RAM/ROM data lines are pulled-down to GND to setup reset settings for the TVGA3000i-3 chip - this pin has it's jumper open, so might be being pulled high on tristate from the chip's internal pull up?

Pretty sure that it is a problem reading from memory as that's when the crash happened on the LA during TOPBENCH startup and before I set the Wait States I could crash the machine immediately by running Debug -d B800:200....

Well I've got replaement DRAM coming from China, so going to try and replace them at some point and see if anything changes...

Thanks again all for the help and if anyone has any other thoughts I'd love to hear it as I really want to get this old card up and running again.

Cheers!
 
Ya, that capture is strange, it should be a nice square wave. I would trace back that data line and see if there is a bad trace somewhere from the gpu. Its almost like it has capacitance, strange indeed.
 
Thanks twolazy, I agree, it's what I'd expect from a RC charge... I'm going to test again when I get the chance to look at the other DRAM chip which I've traced out and doesn't use any of the lines as reset settings for the TVGA3000i-3 chip. I wondered if the internal pull-up on the TVGA9000i-3 might cause that curve if the chip is tri-stated - which according to a 514256 datasheet is controlled by CAS. Might also see if I can get my cheapo Logic Analyser on the DRAM chips too see what the signals look like on a crash... :)
 
Just a quick update to say I got the card working last night by simply populating the card with 2 additional 4x256 DRAM chips. I had first replaced the original two 4x256 DRAM chips, but the behaviour of the card was the same as before. But then popping in another 2 DRAM chips, boom, the thing was totally stable and has been ever since - played a bunch of games, used DOS, TOPBENCH, CHECKIT3 and even running it in an 800x600 SVGA - VERY SLOWLY! Apart from some graphical gritches and some bad bits on Video RAM tests in Checkit I'm very happy with it now. Also, the monitor detection problem went away, I floated pin 12 ID1 again and it correctly identifies a colour monitor.

However, I have no idea why this fixed it and I don't like that! The Oscilioscope traces looked similar to before - it might just be that the DRAM clock is running far to high for my measley 24MHz scope to see and so it looks weird, but I'm still mystified.

Anyway, I'll probably move on as I'm just happy it works at 10MHz with 0 Wait States and I get a very respectible score of 12 on TOPBENCH which means i'm roughly at an AT level of performance - perfect for a lot of games up to the very early 90s I think.

Thanks again for the suggestions here, much appreciated the support!
 
Maybe without the extra memory populated, the PCB design was electrically noisy?
 
Maybe without the extra memory populated, the PCB design was electrically noisy?
Yeah that might be it, but still confuses me why that would be the case as it's quite a simple board. I do still have some bad-bits when testing the VRAM and EGA graphic mode glitch quite a bit when playing something like PoP, looks like ram issues. I'm going to try swapping the chips round a bit to see how it changes things or try using the old SMD/turned-pin chips I took off the board again to rule out one of the new ones being bad. However it's still very stable, machine hasn't crashed since it was fully populated.
 
Back
Top