Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics

Disk image with DOS devtools

A topic by nuclear created Feb 25, 2020 Views: 573 Replies: 7
Viewing posts 1 to 6
(1 edit) (+1)

I have compiled a package containing a PCem configuration, and a disk image with MS-DOS 6.22 including a bunch of programming tools:

  • DJGPP (gcc 4.7.3 including GNU make, GNU debugger, etc)
  • Watcom C/C++ 11.0c
  • Borland C/C++ 3.1
  • Turbo C 3.0
  • Borland Pascal 7
  • NASM 2.05.01
  • MASM 6.11

And also a bunch of useful tools like a proper text editor (VIM 7.3.46), norton commander, unzip32, univbe, etc.

It comes with a README file with instructions on how to set it up. You can use it either with the included PCem configuration (pentium 133, tseng e4000w32, voodoo2, SB16), or you could just raw-write/dd it to an actual disk and boot a PC with it. It includes a pre-compiled pcem for GNU/Linux x86-64, but it might need some libraries to be installed first to work, but includes all ROMs necessary for the pentium system.

Here’s the link:

P.S. a correction for the jam page: NASM does run on DOS, and this package includes it.


Oh shit I just realized I have this account, didn’t need to make a new one for the jam…


Alright corrected the error ;)


Well, there are multiple errors. For instance DOS EXE files are not flat binaries. They have a header, multiple segments, relocations etc. And also the statement that NASM can only output flat binaries is bizarre, given the list of supported binary formats which can easily be obtained by running nasm -hf:

valid output formats for -f are (`*' denotes default):
  * bin       flat-form binary files (e.g. DOS .COM, .SYS)
    ith       Intel hex
    srec      Motorola S-records
    aout      Linux a.out object files
    aoutb     NetBSD/FreeBSD a.out object files
    coff      COFF (i386) object files (e.g. DJGPP for DOS)
    elf32     ELF32 (i386) object files (e.g. Linux)
    elf64     ELF64 (x86_64) object files (e.g. Linux)
    elfx32    ELFX32 (x86_64) object files (e.g. Linux)
    as86      Linux as86 (bin86 version 0.3) object files
    obj       MS-DOS 16-bit/32-bit OMF object files
    win32     Microsoft Win32 (i386) object files
    win64     Microsoft Win64 (x86-64) object files
    rdf       Relocatable Dynamic Object File Format v2.0
    ieee      IEEE-695 (LADsoft variant) object file format
    macho32   NeXTstep/OpenStep/Rhapsody/Darwin/MacOS X (i386) object files
    macho64   NeXTstep/OpenStep/Rhapsody/Darwin/MacOS X (x86_64) object files
    dbg       Trace of all info passed to output stage
    elf       ELF (short name for ELF32)
    macho     MACHO (short name for MACHO32)
    win       WIN (short name for WIN32)

Alright, I corrected it once again.

Submitted (1 edit)

The following instructions worked for me for Windows and they use the package the user nuclear uploaded(thanks nuclear):

Get Windows tools to extract files
1) Download 7-zip from here:

The direct link I used was:

2) Run the 7-zip installer. This should install 7-Zip in the Right Click Menu or the Context Menu of Windows Explorer.

Get PCEm for Windows

3) Download the latest version of pcem for windows from

The direct link I used was:
Right click the file and choose 7-Zip and then Extract to "PCemV15Win\" 
Open the recently extracted folder PCemV15Win and leave it open. We'll copy files there in a later step.

Get the dosdev package

4) Download the Download the package by nuclear here:

Get the package to work with PCem on Windows

5) Right click the file dosdev-pcem.tar.gz and choose 7-Zip and then Extract to "dosdev-pcem.tar\"

6) Open the dosdev-pcem.tar folder and inside, right-click the file dosdev-pcem.tar 7-Zip and then Extract to "dosdev-pcem"

7) Open the recently extracted dosdev-pcem folder

8) Now the PCemV15Win folder from step 3 should be open and the dosdev-pcem folder from step 7 should be open
Copy the file 
From: dosdev-pcem.tar\dosdev-pcem\dotpcem\configs\pentium_dos.cfg
To: PCemV15Win\configs\pentium_dos.cfg

From: "dosdev-pcem\dotpcem\nvr\pentium_dos.430vx.nvr"
To: "PCemV15Win\nvr\pentium_dos.430vx.nvr"

Copy everything in the roms folder here: dosdev-pcem\dotpcem\roms
To here: PCemV15Win\roms
If something already exists, overwrite it.

Copy the file here: "dosdev-pcem\dotpcem\pentium_dos.img"
To here: PCemV15Win\pentium_dos.img
Remember this location. For this example, we'll pretent it lives here: C:\PCemV15Win\pentium_dos.img

9) Edit the file here: "PCemV15Win\configs\pentium_dos.cfg"
Find the line 25 that says : hdc_fn = <HOME>/.pcem/pentium_dos.img
And replace it with the full path to your file, which could look something like:
hdc_fn = C:\PCemV15Win\pentium_dos.img

Run Borland for C/C++

10) Double-click: PCemV15Win\PCem.exe
pentium_dos should appear. Click the Load button. If everything worked, you'll be up and running.

11) The following commands will get you into borland c++.



12) Now write a game, have fun.


Cool! Thanks for adding windows instructions.

Only thing I want to add is for the last bit, C:\bin is in the path due to my autoexec.bat file, so you don’t need to use full path when running my environment setup files (bcdev, djdev, watdev, etc).


Thanks for the heads up. I fixed the command in my comment.