The Windows 3.1 DDK does not appear to document the DspDrvr_Addresses function. It is protected-mode service entry point 0Ch in VGAVDD, and it’s called VDDsetaddresses in the VGA display driver (VGA.ASM) but DspDrvr_Addresses in the VDD (VMDAVGA.INC). It was the VDD itself!Īnd I also found that the missing link was a small section of code that was explained as “Call VDD to specify latch address” in the Windows 3.1 VGA driver. That might also explain why my driver worked with VDDVGA30.386 but not with the newer VDDVGA for Windows 3.1 (VDDVGA.386 is normally built into WIN386.EXE and does not exist as a separate file, although a standalone VDDVGA.386 can be used).Īfter poking through the VDDVGA source code for a while, I realized that it almost certainly wasn’t register access from a DOS session leaking through. The Video 7 sample driver that I based my code on was intended to work with its own custom VDD, not with VDDVGA judging from the source code in the Windows 3.1 DDK, I suspect that V7VDD.386 was effectively forked from the Windows 3.0 VGAVDD and at most slightly updated for Windows 3.1. I also suspected that the problem was likely caused by my driver doing something wrong, or perhaps not doing something necessary to correctly set up the VDD. This would not matter if the driver used the linear framebuffer to access video memory, but for good reasons it uses banking and accesses video memory through the A0000h aperture.īut how could that even happen? The VDD is meant to virtualize VGA registers and not let DOS applications touch the real hardware. Comparing bad/good VGA register state, I soon enough discovered that the sequencer registers contents changed, switching from chained to planar mode. The upside is that the source code of VDDVGA.386 (plus several other VDD variants) was shipped with the Windows 3.1 DDK.įirst I tried to find out what was even happening. The downside of the VDD is that its operation is not particularly well explained in the Windows DDK documentation. There was clearly some difference between the VGA VDD (Virtual Display Driver) in Windows 3.0 and 3.1. And in fact it also didn’t exist in Windows 3.1 if I used the Windows 3.0 compatible VDDVGA30.386 VxD shipped with Windows 3.1 (plus the corresponding VGA30.3GR grabber). Oddly enough, this problem did not exist in Windows 3.0. It was possible to recover by using Alt+Enter to switch the DOS window to full screen again and then returning to the desktop, but obviously that wasn’t going to cut it. MODE CO80) would destroy the Windows desktop, preventing further drawing from happening properly. But an attempt to set a mode in the DOS window (e.g. In Windows 3.1 running in Enhanced 386 mode, I could start a DOS session and switch it to a window. Have a great day.While working on my Windows 3.x display driver, I ran into a vexing problem. All those aside, great take on Windows 3.11. The chord sound is missing from the files, but that's not really that important. (It could just be my school laptop) And also, the internet can't properly be set up. One, occasionally when I start to type something in Write, I get huge lag spikes. But here comes the minor issues I was going to talk about. Also, there is way more you can do on there than I thought. You don't need one of those dinosaur computers. It's like the box says, "Makes your PC easier to use!" This proves that emulation when using a 30 year-old operating system can still make it useful. Because instead of going through the process of waiting for Google Documents to load, you can just pull up Write and start typing with little to no wait time, making note-taking and remembering things for later very easy. Pardon my language, but I find this thing way more useful than the pile of shit that is ChromeOS. There are some minor issues with it, but I will get into those later. Although this is actually Windows 3.11 for workgroups, it is still working great.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |