PDA

View Full Version : my new favorite 8088 / VGA trouble



hargle
July 5th, 2010, 06:11 AM
Earlier this summer I picked up a few machines from a local college.
One of them was a Honeywell 8088 machine. I can post pics of it if anyone wants to peek at it.

It's a rare beasty; I think the older brother to this one:
http://stason.org/TULARC/pc/motherboards/N/NCR-CORPORATION-8088-Personal-Computer-PC-6.html

The motherboard has a *lot* of jumper/patch wires. It must be a pretty early run of a not so popular board.

640k onboard memory, 4 exposed 5.25" bays, runs at 8MHz or 4.77, with a turbo switch, and it has a volume knob for the PC speaker! I've always wanted something like that, so I want this machine to be a showpiece in my collection.

Problem is, I want to put a VGA card in it. I have a card that works great in my zenith 8088 box, but the BIOS on this NCR/Honeywell machine will not initialize it. In fact, the stock BIOS won't even finish POST when I have the card installed.

I switched BIOSes over to the enhanced XT "Anonymous" BIOS which is VGA aware, but it won't initialize it either. The new BIOS will however complete through POST, and boot to a floppy disk.
http://www.phatcode.net/downloads.php?id=101

I'm using a ROM emulator and have even tweaked the source code to force VGA initialization and it still won't light the screen.

There doesn't appear to be any IO conflicts with any VGA ports, and I cannot think of why it seems to be unable to initialize it. IRQ2 maybe? I'm really video dumb, so I don't know what it needs to operate correctly.

So I'm looking for some leads as to what VGA needs to initialize and where I might start sniffing next. I am planning on using a custom built version of this Anonymous XT BIOS if I can get VGA to work, so code tweaking is not a problem.

It's also a PITA to debug on a platform without video! I've been using port 80 writes to a debug card, but that's really only mildly helpful here. I was thinking about perhaps installing monochrome and also the VGA in the same system to help with the debugging.

mbbrutman
July 5th, 2010, 08:07 AM
Some of this you probably already know, so don't get too upset. :-)

The card has to have a chance to run the initialization code on the ROM. The machine is going to walk the ROM areas looking for 55 AA, or whatever the signature is. I'm assuming that the ROMs on the machine know to do this, as it is a later machine. (The original PC1 with the first revision BIOS did not walk the ROM area looking for ROM extensions, so it can't even use EGA, VGA, a hard drive controller, or any other card that needs initialization at POST time.)

EGA and VGA are going to take over Int 10H from whatever BIOS is on the machine. The jumper settings for the machine should be set for CGA.

VGA can emulate Mono and CGA in addition to requiring it's own memory region. So you should ensure that A000:0000 to B000:FFFF is clear with no conflicts. Some machines boasted about being able to have more than 640 for DOS, which would be a no-no with VGA.

Mono cards use 3B4 to 3B8 for I/O ports. CGA cards use 3D4 to 3D9 for I/O ports. EGA uses a slew of ports, including reusing some of the Mono and CGA ports when emulating those cards.VGA is similar.

IRQ2 should not be a problem - on an XT class machine it is free to use, and often that is where a network card will wind up. EGA and VGA do not use an IRQ.

One conflict that nobody thinks about is the BIOS RAM area. My Phoenix ref has a list of addresses for VGA - I'm not sure how complete it is. Here are the offsets:

0x49 to 0x66, 0x84 to -0x8B, and 0xA8 to 0xA9. 0xA8 is the start of a word that points to a table which should be in the VGA ROM.

I think that adding a monochrome card and monitor would make your life infinitely easier. If you do, tell the PC that the mono card is primary so that the BIOS doesn't nuke the monitor. :-) This is a great source of information for dual head setups: http://www.seasip.info/VintagePC/dualhead.html .


Mike

hargle
July 6th, 2010, 05:40 AM
Thanks for your input Mike!

Adding MDA to the computer really, really helped. I was able to put the MDA in the machine along with the VGA card and be able to actually use MDA while debugging the VGA card. And I've found out the problem.... drumroll please....

ROM checksum problem on the VGA card!

Here's where it gets weird.
As mentioned, the VGA card works fine on the zenith 8088.
Dumping the VGA BIOS and comparing the files between the z8088 and this machine showed that after xxx(*) bytes read, it came back an FF instead of what's actually in the ROM. Dumping the VGA BIOS on the NCR machine multiple times and comparing the files shows that it is unable to read the contents the same way twice.

The XTIDE card with its 8K ROM, works absolutely fine in this machine. I will try a tie-breaker card or two with ROMs to see if it's a motherboard issue or a VGA card issue. The problem occurs across different ISA slots, and I have verified that the CPU clock isn't running any faster than the z8088. I have not checked the clock speed on the ISA bus itself yet. Unfortunately, this is the only VGA ISA card that I have that is 8 bit friendly, so i'm at a bit of a standstill for a moment.

Either way, this machine was destined to replace my z8088, but I am now wondering if that's such a good idea. The z8088 has been absolutely bullet proof for a long time.


* = I don't remember the number of correct bytes read before it got a broken one. It looked like it was a pattern, and that might clue me into the exact problem, but I don't recall the spacing. I want to say it was every 100 or 200h bytes.

mbbrutman
July 6th, 2010, 06:03 AM
I was ready to drive up with an MDA board and a 5151!

At least on a PCjr, the ROM checksum has to verify before the machine will try to run the init code on the ROM extension. Maybe the Zenith doesn't run the checksum check, and if it does it had to get through at least once otherwise the BIOS would not have called the init code. (The Zenith has to run the check, but you never know ..)

So something about your machine is out of spec, or goes out of spec as it warms up. It's oscilloscope time! :-)

I'd be running a general memory exerciser to see if it is a pervasive problem on the bus.


Mike

hargle
July 6th, 2010, 12:21 PM
I'm positive that the z8088 is doing a checksum validation on the VGA card. It can somehow read the ROM properly.

I bypassed the "skip rom if checksum fails" section in the NCR BIOS and sure enough, it locked up the machine when it jumped into corrupt code.

It may be an out of spec ISA bus on the motherboard, or it may be an out of spec ROM on the VGA card that is to blame. About all I can do is throw other ROMs on the NCR machines and if they work fine, then I'm going to blame the VGA card and source a new one. IIRC, when I tried this same VGA card on my true blue XT, all it did was beep at me and never lit the screen either. I always chocked that up to the XT being finicky, but it might actually be the VGA card...

BradN
July 20th, 2010, 02:52 PM
You could always try copying the VGA ROM into a faster chip and see if that helps things any.