Jump to content
MSFN is made available via donations, subscriptions and advertising revenue. The use of ad-blocking software hurts the site. Please disable ad-blocking software or set an exception for MSFN. ×

CamTron

Member
  • Posts

    279
  • Joined

  • Donations

    $0.00 
  • Country

    United States

Everything posted by CamTron

  1. Is there a way to install a driver from a batch file in Windows 9x without going through Device Manager?
  2. What Windows version is that on? Is it reproducible (happens even after a restart)?
  3. I'm pleased to announce that this driver is approaching a usable state. Here is my new version with many of the aforementioned problems now fixed. Please keep in mind that this is still pre-release alpha software, and is rife with bugs. For testing purposes only. vboxdisp.7z Known bugs in this release: 16-color mode is broken and will result in an unreadable display. Only use this driver with 256 or more colors. Though in reality, you probably want more than 16 colors anyway. Resolutions above 1152x882 may cause the system to crash. Changing color depth in the Display Properties does not take effect unless the machine is restarted. You may occasionally get a message saying "Invalid VxD dynamic link call to device number 3, service B." when rebooting the machine. Switching in and out of full-screen DOS prompts too quickly may visually corrupt some characters. Going into a full-screen DOS prompt while other DOS prompts are on the screen may result in graphical glitches in the full-screen DOS prompt.
  4. I managed to solve a few more issues! As of my latest code changes, DOS prompts now switch in and out of fullscreen mode correctly (which is something that even VBEMP has trouble doing), the graphical glitches are gone (caused by stack corruption in one of my functions), and the stability has improved dramatically. I've run into one case where the DDK documentation is WRONG! According to the 95 DDK (and the 98 DDK), the signature for the ValidateMode is: UINT WINAPI ValidateMode(DISPLAYINFO FAR *lpValMode); but in reality, it should be UINT WINAPI ValidateMode(DISPVALMODE FAR *lpValMode); It has this incorrect information in multiple places. While similar in name, the DISPLAYINFO and DISPVALMODE structures have very different layouts, and mixing them up will cause your code not to work as intended. Only by examining the sample code did I figure out that the struct pointer passed in should be DISPVALMODE.
  5. Individual Windows XP updates can still be downloaded from the Microsoft Update Catalog. I suggest that we archive them and also generate a list of SHA-2 hashes so we can keep the update files and verify that they haven't been tampered with.
  6. I was able to attach a file yesterday, so maybe this is fixed now?
  7. Good news is I finally solved the freezing issue by adding BANKEDSCAN to the deFlags member of PDEVICE. I'm not entirely sure what caused it, but I suspect it has to do with a string instruction in DIB_BitBlt triggering an endless loop of page faults when trying to copy between video memory banks, since both the source and destination addresses of a string instruction must be mapped at the same time. Anyway, adding a few flags causes the DIB engine to work around the issue. I might switch to using the graphics adapter's linear framebuffer mode in the future.
  8. I now have a partially functional graphics driver! Source code is included along with a floppy image (install.img) that can be installed in a VM. Please note that this is only compatible with VirtualBox and will not install on any other virtual machine software. Issues: Attempting to open a DOS prompt on Windows 95 will cause a BSOD. It seems to work okay in 98, except for full screen mode not being implemented yet. Hovering over menu items in Windows 95 is glitchy. Attempting to drag a window left or up, or attempting to scroll anything will completely lock up the system. No 2D acceleration yet, so everything is slow. This driver is highly unstable. Expect many random freezes, crashes, and BSODs. The Display properties dialog passes in garbage to my ValidateMode function when trying to determine valid resolutions and bit depths. I've hardcoded 640x480 32-bit color for now. The third bullet point is the most annoying one, and I'm at a roadblock as to figuring out what's causing it. Dragging a window to the left or up immediately hangs the machine. The mouse cursor can move, but nothing can be clicked on or interacted with. SoftICE isn't helping, either. It can detect faults and crashes, but has no way of isolating a freeze. vboxdisp.7z
  9. Is there a way to automatically install a driver (such as through a batch file)? I'd like to automate the process instead of having to go through Device Manager every time I make a change to my code.
  10. Oddly enough, I never seem to get that crash in Windows 95. It only happens in 98. My driver is based on the Windows 95 DDK framebuf sample, so maybe something was changed in Windows 98. I'm currently rewriting it to make the code easier to follow and removing the unused code for old graphics cards like Video7 and ATI Wonder.
  11. If you're looking for a fully integrated OS like Windows, I think you'll be disappointed in most Linux distros. The big distros like Ubuntu, Mint, and Fedora come close, but I still have to do more troubleshooting (sound and wireless networking is a hot mess on Linux) than on Windows 10. However, it may be a solution to some of these people complaining about the telemetry, lack of customization, high system requirements, and UI changes in Windows 10, as long as you're willing to deal with a steep learning curve.
  12. I set up a 98FE virtual machine, converted dibeng.sym to dibeng.nms, and loaded those symbols into SoftICE. However, the stack trace (STACK command) is still just giving me a generic "=> DIBENG(03) at 0367:0FC4 [?]" instead of telling me the actual function name. I'm also unsure of how Windows determines which segment (or selector) a DLL gets mapped to. The crash is happening in segment 0367, but the MOD command shows dibeng.dll loaded at segment 0337. A DLL normally has multiple segments for code and data, as well.
  13. What is the difference between the debug and release versions of Windows? I played around with a debug build of Windows 95 once and aside from the build number being displayed on the desktop, I didn't notice any difference.
  14. 7-zip says it's not a valid archive. Interestingly, I get a different file if I set the Wayback machine to 2000 vs 2008, however, both versions just crash with an invalid instruction when run. I'll just set up a Windows 98 FE VM. It's simpler than tracking down some 20 year old files on the internet.
  15. The Windows 98 DDK (despite MDGX saying "SE") appears to only have symbols for Windows 98 First Edition. I tried downloading the "Windows 98 Second Edition Retail Symbols" from here (link from the MDGX page), and I get a Win98SE.exe file (which appears to be a DOS program). Running it results in an invalid instruction operation, and it does nothing. I can install First Edition in my VM, but I'd like to get symbols for Second Edition, as that's what I have set up right now.
  16. I guess I'll give my opinion on this. The OS that I think is the most fun to use would be Windows 2000. The UI was a result of many well-done studies by Microsoft in the 90s, and provides an interface that's efficient and intuitive. The control panel is very organized with config dialogs that are simple, but not dumbed down. However, the OS is old and not very usable as a daily driver due to lack of hardware and software support. There are a handful of improvements I've seen since 2000 then like the taskbar grouping in XP, the searchable Start menu in Vista, and the Aero Snap feature in 7, but most of the changes were unnecessary cruft just to make it look shiny and different or to catch onto design fads. Linux by far provides the most functionality of any OS I've used. Want to make a ramdisk, create and edit disk images, completely change the look of your desktop, and take total control over what your computer does? Linux can do that with no problem. However, being such a hodgepodge of software from various developers, the user experience and consistency between applications in Linux is not great. Many programs can do a lot, but require reading pages and pages of documentation to understand how to use them and figure out what all the command-line switches and configuration files do. I'm personally a Linux user now, but finding one's balance between user experience and functionality can be difficult.
  17. Is there any place I can download debugging symbols for Windows 98 SE, specifically for DIBENG.DLL? Opening certain dialog boxes makes DIBENG.DLL crash at this line of code, and if I knew what function it was crashing in, I may be able to figure out why.
  18. I also use Linux Mint. I chose the Xfce version because in my experience, I've had fewer bugs and problems with it. Mint is a nice, fully featured Linux distro for a desktop or laptop, and your computer is more than powerful enough to run it.
  19. Yes, that's basically what I figured out. I'm using Linux, and my script creates a virtual null modem. I have the Windows 98 VM running in VirtualBox, which is connected to one end of the null modem, and I'm running the SERIAL.EXE program in DOSEmu (a DOS emulator for Linux), which is connected to the other end of the null modem and allows me to view and control SoftICE. The virtual serial connection is a bit slow, but at least now I can see and control the debugger without its output getting messed up by my WIP graphics driver.
  20. Oh, didn't realize I was hitting a limit on attachments. Would it be possible to make the forum display a message other than Error Code -200 when that happens?
  21. So there are a few problems using the VT100 serial, mainly that many of SoftICE's keyboard shortcuts (such as the F1-F12 keys) don't work correctly. It turns out that SoftICE comes with SERIAL.EXE, which is a DOS program that can control SoftICE over serial and has better functionality than a VT100 terminal. To use it, I copied the SERIAL.EXE to my Linux host, replaced the xterm -e screen /tmp/hostPort 57000 line with dosemu -I 'serial { com 1 device /tmp/hostPort }' -E SERIAL.EXE 1 57000 in the script, and then changed SoftICE's initialization string to "SERIAL ON 1 57000". Now, dosemu connects with the Windows 98 VM over serial, and keyboard shortcuts and colors work in SoftICE.
  22. If you're looking to get a better resolution and color mode, the official VMware guest additions should support Windows 9x.
  23. The corrupted text in SoftICE prevents me from further debugging this driver. Apparently, it's possible to use SoftICE over a serial port, but it somehow treats it as a modem and requires a telephone dial-in number. If anyone knows how to get that to work, it would be appreciated. EDIT: After doing some research, I figured out how to do serial debugging with SoftICE. Not sure if this is useful to anyone out there, but here's what I did. In the SoftICE settings in the Windows 98 guest, I added "SERIAL VT100 1 57000" to the initialization string. On my Linux host machine, I made this script which creates a virtual serial connection and attaches a virtual terminal to one end of it. #!/bin/bash # Script for setting up a virtual serial connection to use with SoftICE # This must be started before starting the guest VM # Create a virtual null modem # This command will create two virtual serial ports, typically named # /dev/pts/N, where N is a number. Since the numbers are unpredictable, # we use the link option which makes socat put user-specified symlinks to these # devices. # The COM1 serial port in VirtualBox must be set up to use the host device at /tmp/guestPort socat -d -d pty,raw,echo=0,link=/tmp/hostPort pty,raw,echo=0,link=/tmp/guestPort & # Create a terminal connected to /tmp/hostPort # I run this in xterm, because all of the GTK-based terminals seem to intercept # the F1-F12 keys, which we need in the debugger xterm -e screen /tmp/hostPort 57000 # Stop the serial connection when xterm exits killall socat In the VirtualBox guest settings, I enabled the COM1 serial port and set the port mode to "Host Device" and the Path/Address to /tmp/guestPort. Now, all I have to do is run that script, start my Windows 98 guest VM, and after a few seconds, I have a serial connection with SoftICE.
  24. I finally got my driver to work in 256 color mode! However, it locks up the system when changing resolution or color depth. I'm also having issues with SoftICE not handling resolution changes correctly. Whenever my driver changes the screen resolution, SoftICE's output becomes garbled and unreadable.
  25. For some reason, I am unable to upload any images or other files when posting on this site. Attempting to do so gives me an error box that says: I've tried on multiple browsers (Firefox 85.0 and Chromium 87.0.4280.66) with the same result. Is this a known issue?

×
×
  • Create New...