Running 16-bit Windows 95 games on 64-bit Windows 10

If you are running an x64 version of Windows then when you try and run an old 16-bit Windows 95 application you will see an error screen saying “This app can’t run on your PC”:

To solve this:

  1. Grab a build of winevdm (source) from AppVeyor
  2. Extract the artifact somewhere local, open a command window and cd to that directory
  3. Run your win16 binary as a parameter to otvdm e.g. otvdm c:\games\game.exe
  4. Done!

There’s some background information on why this running 16bit apps doesn’t work, and the virtualisation layers and tooling involved here.

The reason I started looking at this is because I was reminded of an old game called Mordor (here is the official Mordor homepage and here is the demo on the Internet Archive) from some random videogame nostalgia thread somewhere on that internet. Despite the name, it has nothing to do with anything by Tolkein, but is a rogue-like dungeon-exploring RPG.

I had forgotten it existed until seeing its name in that context jogged a 25-year-old memory, and now I can play it again!

Configuring the VS Code integrated terminal to use Bash instead of cmd.exe on Windows

Visual Studio has an integrated terminal and by default on Windows this loads cmd.exe – the standard, and fairly rubbish Windows command prompt.

I normally use cmder as my default terminal on Windows –
this is basically the excellent conemu tabbed console emulator, with a few customisations.

If you try and set VS Code’s integrated terminal to the cmder executable, it will open a new terminal window, rather than be integrated, so you need to point it at the bash.exe executable instead.

After installing cmder to to C:\cmder the bash binary is in C:\cmder\vendor\git-for-windows\bin and the setting you need to add to VS Code is this:

"terminal.integrated.shell.windows": "C:\\cmder\\vendor\\git-for-windows\\bin\\bash.exe"

This will now give you bash when you open the integrated terminal! On one of my computers the default prompt came out ugly, so I changed it like this:

Open the integrated terminal and type

vi ~/.bashrc

Then enter insert mode by pressing ‘i’ and pasting in this:

export PS1="\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[35m\]$MSYSTEM\[\e[0m\] \[\e[33m\]\w\[\e[0m\]\n\$ "

Save the file by pressing Escape, then typing ‘wq’ and pressing Enter.

Exit the terminal by typing ‘exit’ (rather than just hiding it by using the VS Code menu or keyboard shortcut.

Re-open it and tada! a much improved integrated terminal!