randi wrote on 2025-08-01, 04:11:
Hello there, I just acquired this exact same board as in Oak Technology VGA-16 (OTI-037C based mda/cga/ega/vga) video card schematics? ,and it too is not recognized by any MB (5160/XT Turbo/286/386/486) I have. It just gives the standard AMI 1 long, 8 short beeps.
This basically means: The AMI BIOS checked whether a video BIOS is present. If yes, it has called the video BIOS to initialize card. After the video BIOS returned (in case there is a video BIOS), the AMI BIOS could detect neither a CGA compatible (this includes EGA and VGA) or MDA compatible display card.
randi wrote on 2025-08-01, 04:11:
With some tips from kind folks to use DEBUG.EXE , I managed to download the OAK OTI 037C BIOS on a XT setup with 2 displays (using its integrated MDA) , and run this BIOS inside 86box, confirming BIOS is good.
What's interesting about the design of the OTI-037C card is that the BIOS access is a completely separate function. The OTI-037C chip is not involved in decoding ROM addresses. Address bits 17-19 are only decoded by logic chips, likely one of the PALs on your card. So working BIOS access is a good start, but doesn't tell us a lot about the functionality of the OTI-037C chip or its ISA interface. We do know that the decoding of the ROM address space works, so we can infer that the decoding of the VGA memory address space (A0000-BFFFF) most likely works as well. By the way: The 16-bit part of the ISA bus is only used for BIOS access, the OTI-037C VGA implementation is a pure 8-bit implementation.
U16 is the high data buffer that amplifies the data from the "ODD" BIOS chip before it goes to the high part of the ISA bus in case of 16-bit BIOS reads. I think we can directly skip thinking about that chip, as well as U14 and U15, the BIOS ROMs. Just like in the EGA thread in which you linked this thread, the OTI-037C has multiplexed input for the low 8 address bits and the 8 ISA data bits. The function of chip that was broken on the EGA card is performed by U6 on this card, but this obviously does not mean this is your issue as well. That chip can send the low 8 address bits to the OTI chip if it is required. On the other hand, U9 can send the (low) 8 ISA data bit to the OTI chip or send data from the OTI chip back to the ISA bus. The ISA bus is connected to the "A" side of that chip, while the OTI chip is connected to the "B" side of that chip. THe chip next to it, U10, is an unidirectional buffer, with its output connected to the ISA bus. I suppose that one is used to forward the contents of the "EVEN" BIOS chip to the low 8 bits. Another 244 is right next to it, called U11, is used to forward the contents of the "ODD" BIOS chip to the low 8 bits in case the card is working in an 8-bit system, and those bits are not transferred using the high 8 data lines. To be frank, I was lazy and didn't trace the inputs of U10 and U11, maybe I have them assigned the wrong way around. It doesn't matter for troubleshooting the card, though.
So, to summarize: BIOS access is implemented using U10 to U16. Maybe the PAL U12 also decodes video memory access and not only BIOS access.
The P0-P7 buffer from the data sheet between the OTI chip and the DAC likely is U3, while U5, a quadruple tristate driver is the four buffers shown on PCLK, BLANK, HSYNC and VSYNC. U1 is the inverter for the feature signals EVIDEO, EDCLK and ESYNC. U8 is the driver for the CGA/EGA/MDA output connector. I have no idea what U4 is good for. It is somehow close to the monitor interface, possibly to read the classic monitor ID pins.
So, for the VGA part of that card to work, we need a working address passthrough (U6), a working data connection (U9), likely the PAL U7 and definitely a working VGA chip (U17). It is OK that U17 doesn't output anything until it is properly initialized.
I suggest the first thing to test is whether we can interface the chip at all. It might well boot up in "disabled" mode, in which it only responds to port 3C3. This is used to be able to switch between onboard video, like the MCGA provided on the PS/2 model 30 and the OAK VGA card. So, please run the following test in DEBUG: Output 0 to port 3C3 (o3c3 0), then read it back (i3c3). Output FF to port 3C3 (o3c3 FF), then read it back again. I don't know whether bits 1 to 7 of that port can be modified, but bit 0 is supposed to be toggleable. If you get issues with debug displaying correctly after "o3c3 ff", blindly type "o3c2 23" to put the OAK card into a state that doesn't conflict with your MDA/Hercules card.
Assuming you can read back bit 0 of port 3C3, and you wrote an odd value to 3c3 last, you should then be able to access I/O ports of the card. Write 8 into port 3CE (graphics controller index port), and try to read it back. If this works OK, write 55 into port 3CF (graphics controller data port), and try to read it back, then write AA into port 3CF and try to read it back.
Please report the results, and depending on whether stuff worked or failed, I will suggest next steps.