Space Quest IV SoundBlaster Fix: Difference between revisions
No edit summary |
No edit summary |
||
| Line 6: | Line 6: | ||
[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]] | [[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.
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.