Last updated: 2024-04-07
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.
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.
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.
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).
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.
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.
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.
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):
serial1 = directserial realport:com9
mount c: drivec`
c:
Next, create a new directory called drivec in your dosbox directory. This will hold everything on the C: drive.
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.
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\
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.
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
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.
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.
If you have any questions, you can contact me.
Mastodon: @tspivey@dragonscave.space