Just returning after stc will make the pci version of the card not work
my point is you should NOT NEED to modify anything. This piece of VGA BIOS code detects if its running in a computer with PCI bus. Computers with PCI buis are always 32bit, computers without can be 16bit.
TLDR this function doesnt need any patching. Others might (I havent looked at the code), but not this one.
The code you are commenting on is not the original code, you are referring to the modifications pshipkov made. The original 1.02 code is this:
12FEA 66 50 push eax 22FEC 66 53 push ebx 32FEE 66 52 push edx 42FF0 E8 27 00 call 0x301a 5 6; String: "fZf[fXs" 72FF3 66 5A pop edx 82FF5 66 5B pop ebx 92FF7 66 58 pop eax 10 11... 12 13301A 66 BB 00 00 00 80 mov ebx, 0x80000000 143020 BA F8 0C mov dx, 0xcf8 153023 66 8B C3 mov eax, ebx 163026 66 EF out dx, eax 173028 66 ED in eax, dx 18302A 66 3B C3 cmp eax, ebx 19302D 75 29 jne 0x3058 20302F BA FC 0C mov dx, 0xcfc 213032 66 ED in eax, dx 223034 66 3D 13 10 A8 00 cmp eax, 0xa81013 23303A 74 1E je 0x305a 24303C 81 C3 00 08 add bx, 0x800 253040 81 FB 00 B0 cmp bx, 0xb000 263044 75 DA jne 0x3020 273046 2B DB sub bx, bx 283048 66 81 C3 00 00 01 00 add ebx, 0x10000 29304F 66 81 FB 00 00 00 81 cmp ebx, 0x81000000 303056 75 C8 jne 0x3020 313058 F9 stc
So this absolutely needs patching because of 32-bit register use.
pshipkov's modified version replaces push eax, ebx, edx with push ax, bx, dx for 286 compatibility then uses int 0x1a instead of a port based check for pci devices, which i suppose is fine on a 286 if it 0x1a returns with carry flag set. I already confirmed a few hours ago on a 286 this works on real hardware.
Is this reference correct? It says several 32 bit registers are modified as return values. If so a 486 with pci bus responds and modifies 32 bit registers, returns, and the outer scope is no longer preserving 32 bit registers as the original code did, because push eax is now push ax, etc.
---
Anyway, we know the bios is not the problem, there is some hardware difference that needs to be determined.
I searched all over vogons, google, cannot find any reference to a HW mod or HW issue. Looked over the pictures of other cards online, compared with mine. Some small changes of via placements but it seems they are still connected the same way as best I can tell. I'm sure someone will figure it out soon. If not, I will examine my cards in early May when I am back and I will figure it out I'm sure. I'd love to hear other people's benchmark results with the card eventually though.
@sqpat
Since these ROMs do not work on several 286 motherboards, maybe it is your 286 SCAMP guy who is handling it somehow?
I sold my SCAMP board last year. Remember having this feeling at the time that i will probably regret it later since the chipset is not well studied.
So the ball is with you to test with other boards and confirm working/non-working.
So it's actually not the SCAMP board this time, its the JCS router SCAT board from here: https://theretroweb.com/motherboards/s/jc-inf … ration-jcs286-s
If I can figure out anything else before May I will update, but this effort might go into hibernation a couple weeks meanwhile.
tried few more things with version 1.02 of the CL-GD5434 ROM - eliminated all PCI codepaths (there are few of them in there), few more smaller tweaks - nothing made a difference - no screen. But i can type by memory something and start a game (hear music playing), etc., so the system is functional, just the video card is not doing something right.
Also, tried different ISA speeds - just in case.
Reporting for visibility.
OK, I was able to get ahold of a Headland HT-18 board (Protech PM286) . No post. I get stuck at POST code 31 after 2F. 2f is Video memory tested, 31 is Alternate Video Adapter tested. If its testing an alternate video adapter then perhaps something failed during the video bios initialization? I do not get the machine running in the background at all, it just hangs. Cant ctrl alt delete, toggle caps lock, or anything like that.
By the way, comparing pins present on speedstar pro and speedstar 64 i only see 4 different pins populated.
Speedstar 64 Adds: MEMR MEMW (16 bit on front side)
Speedstar 64 Removes: SMEMR SMEMW (8 bit on back side)
Could this be significant? I am trying to read up on it, seems that the 8 bit SMEMR/SMEMW and is only active during reads/writes on the first 1MB of system memory (so that 8 bit cards aren't signalled when writes outside of their addressable range happens) while MEMR/MEMW should always be active. Could it be for some reason some motherboards are not sending the signals to the 16 bit memr/memw portion of the card...? Or only during bios initialization? I don't have enough knowledge/context for this.
---
I also tried MCLK on the card. I was able to run the dram clock higher (up from 50 mhz to 70 mhz). This did not seem to improve performance any way I could measure in DOS. I read that the 5434 BIOS supposedly resets the dram clk on resolution/screen mode changes but I don't think I observed this behavior. I'm still learning about tweaking the card though.