VOGONS


First post, by Nightbreaker

User metadata
Rank Newbie
Rank
Newbie

This is an unusual request for help. I wrote a program in QuickBasic utilizing full screen Graphics Screen 12 640x480x256 VGA. It works correctly in DOSBox Windows 7 (x86 & x64) but is corrupted in Windows XP DOS Full Screen! The operating systems are in seprate partitions all running on the same computer utilizing the exact same hardware. The reason I'm looking for help here is to see if someone can tell me what the difference is in how graphics are sent to the display card between Windows XP DOS and Windows 7 DOSBox? If I can duplicate the DOSBox method in Windows XP maybe that would work. Below is additional information explaining the problem.

After I installed my EVGA GT240 card I get corrupt graphics at 640x480 VGA DOS full screen in Windows XP. However it works fine in full screen DOSBox in Windows 7 (both 32 & 64 bit) on the same identical hardware. The two operating systems are installed on the same computer in three separate partitions. Tried several different Geforce drivers no effect. Booted in safe mode and VGA mode only no effect. Booted from portable XP on CD in VGA mode same issue occurred. If the card is bad or incompatible why does it work fine in Windows 7 DOSBox? Very strange, never seen anything like it before. The card works fine in all other respects. Tried different BIOS settings for any options involving the Display Card with no effect.

HP xw4600 Workstation Intel Core 2 Duo 3.33 GHz 8GB DDR2 memory
450 Watt Power supply
Motherboard: Intel X38 Express 82801IB ICH9 chipset, No onboard graphics
MB BIOS: 7-9-2012 ver. 786F3 v01.34 (latest version)
Hard Drive WD3200AAKS 320GB 16MB SATA II
DVD Writer LG GH25NS95 25x 0.75MB buffer SATA
EVGA GT240 512MB GDDR5 Display Card, memory passed checks, in 2nd PCIex16 slot, 1st empty
This was a replacement for the original Quadro FX580 display card (VGA display NOT corrupted using this card).
The card has never been overclock or abused in any way, fan clean, bearings good.
Display Card BIOS: 11-9-2009 v70.15.27.00.40
Display Card supports 640x480 (8,16,32 bit color) according to system info check
Monitor: Samsung SyncMaster 920MB LCD 1280x1024 using DVI digital cable hookup
Audio Card: (X-Fi XtremeGamer Fatal1ty Pro SB0460) in 2nd of 3 PCI slot
USB3 Card in PCIex1 slot
Windows XP, Windows 7 (x86), Windows 7 (x64) in three separate partitions, only one active at any given time. The other two partitions are hidden. Same computer hardware for all. Latest updates for all.

It took me weeks to see what was happening but I still don't know why nor how to fix it.
When a graphic symbol is plotted there is a rectangle plotted too using the background color so it's normally hidden from view! It creates a gap in a connecting line when the rectangle over writes it. This allows the "Paint" function to "leak" out of a box or circle through the gap! Also see corrupt version of OrthoMap with the rectangles being plotted covering prior plotted latitude, longitude, continent graphics. In the "Test2 Corrupt' capture picture you can see a black bar just to the right of the vertical lines, that should not be there! There are two small one-pixel dots I plotted. Both have a black line that shouldn't be there either.

The pictures are captures showing correct view from Win 7 DOSBox and corrupt views from Windows XP.

Programs written in MS QuickBasic Extended v7.1 using Screen 12 640x480x256k color, highest resolution available. Programs run perfectly in Windows 7 DOSBox Full Screen or Windowed x86 & x64. In Windows XP, Screen 12 only runs in Full Screen DOS. What's the graphics difference between Windows XP Full Screen DOS and Windows 7 DOSBox? The same issue occurs in other DOS programs using VGA 640x480. The issue also occurs in EGA 640x380 too.

Please help me! I will get any more info needed.

Note: I tried to add the "correct" picture for Test1 and a test 2 set but couldn't because only five pictures allowed. Too bad because they are informative to the problem.

Reply 1 of 7, by ripsaw8080

User metadata
Rank DOSBox Author
Rank
DOSBox Author

The Windows NTVDM (what you call Windows XP DOS) uses the hardware and BIOS of the host video card more-or-less directly, so the GT240 is the source of your problems. DOSBox emulates video hardware and BIOS and thus doesn't suffer from the host video card's lack of compatiblity with old software.

If you aren't content to use emulation to run decades-old DOS versions of QuickBasic, maybe you should look into using QB64 instead.

Reply 2 of 7, by beastlike

User metadata
Rank Member
Rank
Member

Cool looking application!

ripsaw8080's suggestion is a good one, but if you just want to quickly check that card's ability to get into mode 12h, you might try loading freedos onto the machine. It should run QB, and then your application can get you into mode 12h. That way you take out all the factors for XP, drivers, etc.

In my opinion, the card itself should really support 640x480x16, it's a standard VGA mode. Let's hope the manufacturers are of the same opinion 😀

Reply 3 of 7, by keenmaster486

User metadata
Rank l33t
Rank
l33t

You could also try using FreeBasic. Just compile the program with the #lang "fblite" command at the beginning and it should work.

World's foremost 486 enjoyer.

Reply 4 of 7, by beastlike

User metadata
Rank Member
Rank
Member

Also, if you've got a floppy drive, you could create an MS-DOS startup disk right from XP, put your program on that disk. Boot right up and try your application there.

Reply 5 of 7, by Nightbreaker

User metadata
Rank Newbie
Rank
Newbie

OK so if I understand everyone

1. The problem is the EVGA GT240 Geforce card
2. Either the card is defective or it doesn't properly implement 640x480x16 VGA Graphics
3. I ran several system info programs on the card. They say the card is suppose to support:
640x480x8, 640x480x16, and 640x480x32 VGA.
4. Therefor the card must be defective. (Even though it passed benchmark test at 640x480 VGA)
5. I'll see what EVGA has to say about it.
6. I already tried QB64 and it won't run under it, says C compiler failed with no explanation why.
I tried FreeBasic too. Won't work in it either. It's just too different from QuickBasic.
7. I'll try DOS booting from a floppy but if the problem is the card and it's BIOS then I don't think
that will work either.

I started writing this program in 1989 using my computer at work on lunch breaks and Saturdays.
I have it perfected to my liking now and I'm too old to start over again learning a new
programming language. I will have to find an older card somehow that is compatible and isn't
defective.

As a side note, I noticed that my program will run in a window using Win7 + DOSBox but screen 12
only works Full Screen in WinXP DOS. This must be do to the "DOSBox emulates video hardware
and BIOS"

I've added the other pictures I couldn't before below.

Last edited by Nightbreaker on 2016-10-07, 05:11. Edited 1 time in total.

Reply 6 of 7, by Jorpho

User metadata
Rank l33t++
Rank
l33t++
Nightbreaker wrote:

4. Therefor the card must be defective.

The card is probably working exactly as it was intended to – it's just that the manufacturers didn't expect anyone would be running ancient DOS stuff. (A very common problem is that cards dropped support for the 8x14 font, such that many old DOS programs that use that font will not display correctly – but that's probably not the problem here.)

6. I already tried QB64 and it won't run under it, says C compiler failed with no explanation why.
I tried FreeBasic too. Won't work in it either. It's just too different from QuickBasic.

I understand the people behind QB64 and FreeBasic went to great lengths to ensure compatibility. I would suggest taking your concerns to their forums.

Reply 7 of 7, by keenmaster486

User metadata
Rank l33t
Rank
l33t
Nightbreaker wrote:

I tried FreeBasic too. Won't work in it either. It's just too different from QuickBasic.

Like I said, compile with #lang "fblite" at the very beginning of the program, and there's a 99% chance it'll work perfectly.

Also you could post your code here and I could look it over and see what I can do to make it work in FreeBasic since I have a lot of experience with that.

World's foremost 486 enjoyer.