Dosbox Guide

Last updated: 2024-04-07

Introduction

DOS was the operating system I used on my first computer. We can emulate it reasonably well now, and get a sense of what using it was like with a screen reader. This guide will explain how to go from nothing to a working DOS install that talks.

Requirements

This guide assumes you’re on Windows. If you’re on something else, adapt it accordingly. I’ll link to everything you should need to get going, so you don’t need more than a basic Windows installation.

Preconfigured system

A preconfigured system is available with most of this done for you, except installing com0com. Download it here. If you use that, most of the below can be skipped, except for installing com0com. A copy of this guide is also included in it; read the readme for info on how to get it going.

Getting DOSBox-X

Download the latest version of DOSBox-X from its releases page on GitHub. The file you want is called something like dosbox-x-vsbuild-win64-20240301225703.zip.

Extract it. The directory you want is bin\x64\release. That has all the files you need for this part. To make it easier to deal with, take that release directory, rename it to dosbox and put it somewhere you can find (your user directory or c: will work). I’ll call that the dosbox directory from now on.

The most important things in here are dosbox-x.conf (the configuration file), dosbox-x.exe (the main program), and drivez (the Z: drive).

Configuration: serial port

The screen readers we’re going to run require a speech synthesizer. This can either be an internal board, or connected to a serial port. Since we can’t emulate an internal board, we need to use a serial port.

If you have a hardware synthesizer, USB to serial adapters are available and you should be able to use it. If you’re on a desktop, your motherboard might have a serial header. You can get cables for these and add a serial port to the back of your machine. When I tried this, the motherboard serial connection worked better than USB on my machine; the USB adapter would speak more synthesizer commands.

Assuming you want to use an emulated hardware synthesizer, we need to install a serial port emulator.

Installing com0com

Download com0com. Extract it and run setup. Assuming you’re on X64, you want the X64 setup. On the select components to install screen, uncheck the last item (COM# <-> COM#). We’ll adjust the default CNCA0 and CNCB0 port names later.

After pressing install, alt tab until you find a window labeled Windows Security. It’ll just show up without taking focus; it’s asking you if you want to install the driver. Press Install.

Now we have to configure the driver. In the start menu, under com0com, you should find Setup Command Prompt. Activate that. At the command> prompt, type or paste (case matters):

change CNCA0 PortName=COM8
change CNCB0 PortName=COM9

After that, quit out of the utility by typing quit.

Secure boot

If your system uses secure boot, the driver might not install. Microsoft increased the requirements around driver signing in modern versions of Windows 10, and they take effect if secure boot is on and your system hasn’t been upgraded from a previous version of Windows.

To get around this, edit the registry. Go to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CI\Policy, create a new dword UpgradedSystem and set it to 1.

Note: I don’t know what other effects this will have. Probably none. The alternatives are to either disable secure boot in your BIOS, or find another driver. The FREE Virtual Serial Ports driver might work, but I haven’t tested it. If you get it to work, contact me and I’ll add it to the guide.

dosbox configuration

We now need to tell dosbox about the serial port we just configured. There’s a graphical configuration utility, but it’s not accessible, so we have to edit the configuration file manually. Set the following options in dosbox-x.conf (use the search feature of your editor to find them):

mount c: drivec`
c:

Next, create a new directory called drivec in your dosbox directory. This will hold everything on the C: drive.

Running the synthesizer emulator

Download and extract vbns-ao2-v1.1.1.zip. This is a modification of the original vbns-ao2 code to fix a bug where the screen reader would say the speech rate command. Open a command prompt, cd into vbns-ao2 and run emu com8. NVDA should say ready. Leave that up; you’ll need to start it every time you run dosbox.

Installing a screen reader

We need a screen reader installed under DOS for things to work. ASAP is good for this, however we need to run through its installation without a screen reader. Download ASAP. Extract it with a zip utility into dosbox. Start dosbox, cd tmp and run asapinst bns com1. The installation fails when it tries creating s.bat, but it mostly works. You should hear three beeps when it fails. Press Ctrl-f9 to exit dosbox, and restart it. You should then be able to type \asap\asap bns com1 and hear speech.

Once you add that command to the autoexec section of the configuration file, speech should come up automatically.

s.bat should contain something like:

@ECHO OFF
C:
CD \ASAP
ASAP bns com1 %1%2%3%4%5
CD\

Running dosbox

Now that everything is set up (or you’re using the preconfigured build), make sure the synth emulator is running. Run start_emu.bat or emu com8 (see above) and wait for it to say ready. Run dosbox-x and it should start talking. If you put NVDA to sleep in dosbox (NVDA+shift+s on the desktop layout or NVDA+shift+z on laptop), the synth will still talk through it.

To control ASAP, toggle num lock and use the numpad. In brief, 7/8/9 are previous/current/next line, 4/5/6 and 1/2/3 are the same for word/character. To route the speech cursor back to the system cursor, hit numpad 0, z. There’s an extensive manual, you’ll find it in drivec\asap\asap.txt. For a slightly more modern version of the manual, asap.htm is included in asapdemo.exe. I’ve put it in drivec\asap in the preconfigured version.

If you’re on a laptop, you’ll probably have to redefine all the keys, or get something to emulate a numpad. You can get into the control panel with control-backslash, use the arrows to look around, then escape to exit.

Dosbox has a menu system you can access. To do this, use NVDA’s object navigation to get to it and click on the menu you want. You can use the arrow keys from there.

To quit dosbox, press control F9.

Installing other programs

JAWS for DOS

To install JAWS for DOS, do the following: 1. Download jdosfree.exe. 2. Put it in c:and run it.

Once it’s extracted, there’s an install program. If you run it now, you’ll get all the way through it and it’ll fail because you can’t insert a disk into drive C.

To get around this, use subst to put c:on drive A and run the installer.

subst a: c:\tmp
a:
install

I told it I was using a BNS, and to skip the autoexec.bat file.

To start JAWS, remove ASAP from the autoexec section of the configuration, and run:

cd\jaws
jaws

What’s next?

A machine with just ASAP on it isn’t very useful. Find software and install it. You can set up com2 as a modem and call telnet BBSs with a terminal emulator, Commo should work well.

Troubleshooting

ASAP has a long delay between the time you hit enter and the time it speaks the prompt, but if you type dir it’s responsive.

This is caused by dos idle api being set to true in the dos section of the configuration file. This is designed to prevent applications from taking an entire CPU core checking for keyboard activity. I haven’t used it enough to know if this is the only problem with leaving it on; try turning it off.

Resources

Changelog

Contact

If you have any questions, you can contact me.

Email me

Mastodon: @tspivey@dragonscave.space