Space Quest IV SoundBlaster Fix: Difference between revisions

From OS2World.Com Wiki
Jump to navigation Jump to search
Created page with " [https://archive.org/download/minerva2/minerva2.zip/minerva2%2FOS2%2FSQ4304.ARJ]"
 
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
On OS/2 2.0 304E, Space Quest IV experiences problems in a DOS session.       
On machines that have the SoundBlaster card, it runs for about 30             
seconds, and then stops.  The problem was found to be related to DMA           
transfers and simulated interrupts.                                           
                                     


[https://archive.org/download/minerva2/minerva2.zip/minerva2%2FOS2%2FSQ4304.ARJ]
[https://archive.org/download/minerva2/minerva2.zip/minerva2%2FOS2%2FSQ4304.ARJ]
Intro                                                                         
                                                                       
On OS/2 2.0 304E, Space Quest IV experiences problems in a DOS session. On machines that have the SoundBlaster card, it runs for about 30 seconds, and then stops.  The problem was found to be related to DMA transfers and simulated interrupts.                                           
                                                                               
Fix Description                                                               
                                                             
After debugging for several days, a fix was found for the SNDBLAST.DRV         
file that comes with Space Quest IV.  This fix makes the interrupt handler     
for the SoundBlaster card work better under a Virtual 86 environment.         
Essentially, it guarantees that the SoundBlaster card is in the correct       
state before it sends an End of Interrupt (EOI) to the Programmable Interrupt 
Controller. We have patched the SNDBLAST.DRV file and it now works correctly. 
Essentially, the EOI is at the end of the interrupt handler instead           
of at the beginning.                                                           
                                                                               
Why Not Change OS/2?                                                           
                                                     
Changing OS/2 for this problem would mean a great deal of work.  Interrupt     
simulation would have to change so that it would be impossible to ever         
enable interrupts while running a DOS interrupt handler.  All associated       
code would have to be resident (present), and the DOS address space for       
interrupt handlers could never cross a page-boundry without the pages         
being present.  This is not a trivial fix. The fix was to move four           
bytes of code in the SNDBLAST.DRV instead of trying a major change to         
OS/2.                                                                         
                                                                               
Sierra Contact                                                                 
                                                               
Sierra was contacted to discuss the change.They agreed that it was a           
good change and that it might partially explain why Space Quest IV             
doesn't work under Windows Enhanced Mode Dos sessions. We expect that         
they will incorporate this idea into their products from this day on.         
                                                                               
Patch for Customers                                                           
                                                         
We have built a executable called SQ4FIX.COM that runs in a DOS session.       
We are putting this file into the product, and it will be installed           
into \OS2\MDOS when the user selects the DOS & Win-OS/2 section during         
install.  To use this patch program, the user only has to change to the       
drive which has Space Quest IV installed and execute the program.             
                                                                               
Example:                                                                       
                                                                               
D:\> sq4fix                                                                   
                                                                               
There are no parameters to worry about and SQ4FIX will do error checking.     
The README for GA is being updated to inform the user about this               
program and how to use it.                                                     
[[Category:Gaming Articles‎]]

Latest revision as of 03:09, 28 June 2025

On OS/2 2.0 304E, Space Quest IV experiences problems in a DOS session. On machines that have the SoundBlaster card, it runs for about 30 seconds, and then stops. The problem was found to be related to DMA transfers and simulated interrupts.


[1]

Intro

On OS/2 2.0 304E, Space Quest IV experiences problems in a DOS session. On machines that have the SoundBlaster card, it runs for about 30 seconds, and then stops. The problem was found to be related to DMA transfers and simulated interrupts.

Fix Description

After debugging for several days, a fix was found for the SNDBLAST.DRV file that comes with Space Quest IV. This fix makes the interrupt handler for the SoundBlaster card work better under a Virtual 86 environment. Essentially, it guarantees that the SoundBlaster card is in the correct state before it sends an End of Interrupt (EOI) to the Programmable Interrupt Controller. We have patched the SNDBLAST.DRV file and it now works correctly. Essentially, the EOI is at the end of the interrupt handler instead of at the beginning.

Why Not Change OS/2?

Changing OS/2 for this problem would mean a great deal of work. Interrupt simulation would have to change so that it would be impossible to ever enable interrupts while running a DOS interrupt handler. All associated code would have to be resident (present), and the DOS address space for interrupt handlers could never cross a page-boundry without the pages being present. This is not a trivial fix. The fix was to move four bytes of code in the SNDBLAST.DRV instead of trying a major change to OS/2.

Sierra Contact

Sierra was contacted to discuss the change.They agreed that it was a good change and that it might partially explain why Space Quest IV doesn't work under Windows Enhanced Mode Dos sessions. We expect that they will incorporate this idea into their products from this day on.

Patch for Customers

We have built a executable called SQ4FIX.COM that runs in a DOS session. We are putting this file into the product, and it will be installed into \OS2\MDOS when the user selects the DOS & Win-OS/2 section during install. To use this patch program, the user only has to change to the drive which has Space Quest IV installed and execute the program.

Example:

D:\> sq4fix                                                                     
                                                                               

There are no parameters to worry about and SQ4FIX will do error checking. The README for GA is being updated to inform the user about this program and how to use it.