Go to file
2024-07-06 12:52:27 -07:00
Ashwood-Smith PC-LISP v3 make sieve conform to the standard benchmark 2024-07-05 06:05:35 -07:00
Borland Turbo Assembler v32 linux build 2024-07-06 06:35:41 -07:00
Borland Turbo BASIC v11 Borland Turbo Basic v1.1 2024-07-01 15:32:03 -07:00
Borland Turbo C v1 MacOS build 2024-07-04 07:57:31 -07:00
Borland Turbo C v2 MacOS build 2024-07-04 07:57:31 -07:00
Borland Turbo C++ v1 MacOS build 2024-07-04 07:57:31 -07:00
Borland Turbo Pascal v1 Turbo Pascal v2 + cleanup 2024-06-30 15:28:49 -07:00
Borland Turbo Pascal v2 Turbo Pascal v2 + cleanup 2024-06-30 15:28:49 -07:00
Borland Turbo Pascal v3 ships with the compiler 2024-07-06 12:52:27 -07:00
Borland Turbo Pascal v4 MacOS build 2024-07-04 07:57:31 -07:00
Borland Turbo Pascal v5 MacOS build 2024-07-04 07:57:31 -07:00
Borland Turbo Pascal v6 MacOS build 2024-07-04 07:57:31 -07:00
Borland Turbo Pascal v7 MacOS build 2024-07-04 07:57:31 -07:00
Borland Turbo Pascal v55 MacOS build 2024-07-04 07:57:31 -07:00
DeSmet C88 v24 MacOS build 2024-07-04 07:57:31 -07:00
DeSmet C88 v31b MacOS build 2024-07-04 07:57:31 -07:00
Digital Research CB-86 v2 MacOS build 2024-07-04 07:57:31 -07:00
Digital Research MT+86 Pascal v311 MacOS build 2024-07-04 07:57:31 -07:00
Digital Research PLI-86 v1 linux build 2024-07-06 12:19:58 -07:00
Intel iC-86 Compiler v4.5 linux build 2024-07-04 07:45:34 -07:00
Logitech Modula-2 v1 linux build 2024-07-04 08:26:48 -07:00
Logitech Modula-2 v1.1 linux build 2024-07-04 08:29:29 -07:00
Logitech Modula-2 v34 linux build 2024-07-04 08:32:44 -07:00
Manx Aztec C86 v42b linux build 2024-07-04 08:52:31 -07:00
Manx Aztec C86 v52a linux build 2024-07-04 08:57:00 -07:00
Manx Aztec C86 v340a linux build 2024-07-04 08:52:31 -07:00
Mark Williams MWC v4 linux build 2024-07-04 09:26:16 -07:00
Mark Williams MWC v311 don't trace 2024-07-04 09:22:45 -07:00
Microsoft BASIC Compiler v5.36 linux build 2024-07-04 09:31:38 -07:00
Microsoft C v1 linux build 2024-07-04 09:37:15 -07:00
Microsoft C v3 linux build 2024-07-04 11:11:27 -07:00
Microsoft C v4 linux build 2024-07-04 11:17:49 -07:00
Microsoft C v5 linux build 2024-07-04 11:29:29 -07:00
Microsoft C v203 linux build 2024-07-04 09:40:33 -07:00
Microsoft Cobol v5 linux build 2024-07-04 11:35:53 -07:00
Microsoft Fortran v5 linux build 2024-07-04 11:43:04 -07:00
Microsoft Fortran v331 linux build 2024-07-04 11:39:28 -07:00
Microsoft GW-BASIC v202 linux build 2024-07-04 11:56:17 -07:00
Microsoft GW-BASIC v322 linux build 2024-07-04 11:56:17 -07:00
Microsoft MASM v5 linux build 2024-07-04 12:37:35 -07:00
Microsoft muLISP-86 v51 macos changes 2024-07-05 09:15:22 -07:00
Microsoft Pascal v1 linux build fixes 2024-07-05 14:18:32 -07:00
Microsoft Pascal v2 linux build fixes 2024-07-05 14:18:32 -07:00
Microsoft Pascal v3.31 add pascal v2 add manual for v3, updae e.pas with better formatting 2024-07-05 14:10:53 -07:00
Microsoft Pascal v4 add pascal v2 add manual for v3, updae e.pas with better formatting 2024-07-05 14:10:53 -07:00
Microsoft QuickBASIC v1 linux build 2024-07-04 14:12:47 -07:00
Microsoft QuickBASIC v3 make clear there is no command line build 2024-07-01 13:05:38 -07:00
Microsoft QuickBASIC v4 linux build 2024-07-04 14:20:33 -07:00
Microsoft QuickBASIC v45 linux build 2024-07-04 14:22:26 -07:00
Microsoft QuickBASIC v71 linux build 2024-07-04 14:48:17 -07:00
Microsoft QuickBASIC v200 make clear there is no command line build 2024-07-01 13:05:38 -07:00
Microsoft QuickC v1 linux build 2024-07-04 15:17:40 -07:00
Microsoft QuickC v2 linux build 2024-07-04 15:05:55 -07:00
Microsoft QuickC v251 linux build 2024-07-04 15:17:40 -07:00
Microsoft QuickPascal v1 linux build 2024-07-04 15:14:33 -07:00
Mix C v202 linux build 2024-07-04 15:28:57 -07:00
Mix Power C v1 linux build 2024-07-04 15:39:35 -07:00
Mix Power C v22 linux build 2024-07-04 15:43:31 -07:00
RHA (Minisystems) ALGOL v55 linux build and fix typo 2024-07-06 10:00:38 -07:00
Spectra PowerBASIC v210f linux build 2024-07-06 12:06:56 -07:00
Zortech C++ v30r1 linux build 2024-07-04 15:51:47 -07:00
Zortech C++ v206 linux build 2024-07-04 15:47:42 -07:00
LICENSE Initial commit 2024-06-30 06:33:18 -07:00
README.md Update README.md 2024-07-06 12:09:01 -07:00

dos_compilers

MS-DOS compilers, assemblers, and interpreters

The license for this repo applies to code I wrote for this repo including versions of the sieve, e, ttt, and tm benchmarks and the build scripts to invoke the tools. The various DOS tools and documentation each have their own respective license terms. In a few cases I used the sieve benchmark that shipped with the tools, so obviously those copies fall under the license of the respective tool.

I do not own copyright for any of these tools. This repo is simply an aggregation of the tools to ease testing of my NTVDM DOS 3.3 emulator.

In some cases where required I've copied an assembler or linker that did not ship with a given compiler into folders so binaries can be produced. These tools belong to their respective owners.

These tools are available for download from many sites on the internet. They are often in forms that make their extraction and/or use difficult. This repo simplifies the process.

If you own the copyright to any of these tools and want me to take them down, please let me know and I'll do so ASAP. It's not my intention to pirate anyone's software.

I cannot vouch that any of these tools matches their official distribution form. Many of these were apparently taken from snapshots on peoples' machines through the years and include changes, files, and/or configuration not found in a pristine distribution.

In some cases I've included user manuals in PDF form that I've found online for the various compilers. They sometimes match the version and sometimes not, but they are always helpful.

I can vouch that the m.bat/m.sh script in each folder builds working benchmark binaries on Windows, Linux, and MacOS. In the cases of tools that can't be invoked via the command-line (e.g. Turbo Pascal), those tools also produce working benchmark binaries.

It is my intention to show each tool in its best light with respect to the benchmarks. If you know of better optimization flags or ways to improve the benchmark source code for a given tool, please feel free to submit a pull request or open an issue. That said, I want to avoid cheap hacks like using peek/poke in BASIC instead of local variables.

The benchmarks include:

  • sieve: The classic from BYTE Magazine that counts prime numbers.
  • e: Computes the irrational number e to 192 digits.
  • ttt: proves you can't win at tic-tac-toe if the opponent is competent
  • tm: test malloc. This calls malloc/calloc/free in the C runtime to measure performance. It's C-only and many C compilers can't run it.

To run the compilers on Windows, use the m.bat script in each folder. Sometimes m.bat is in a subfolder named "bin" or "code". On Linux or MacOS use m.sh. You may need to "chmod 777 m.sh" before you can invoke it. For example:

  • m sieve
  • m e
  • m ttt

To run the resulting apps, use NTVDM's -c flag to force console mode and -p flag to show performance information. The interpreters have other modes for running; see their respective m.bat files for details.

  • ntvdm -c -p sieve
  • ntvdm -c -p e
  • ntvdm -c -p ttt

The Borland Pascal (v1 through v3) products don't support command-line builds, so you have to run the apps, load the source file, and build manually. Same for QuickBASIC v2 and v3. for QuickBASIC v2 you must use some emulator other than NTVDM to build; that version directly accesses keyboard hardware in a way that's not emulated. DOSBOX works great.

If you're running Linux or MacOS and see perplexing compilation errors, it could be your source files don't have cr/lf line separators. Use unix2dos to add them; some of these compilers require them. Some compilers require a ^Z / 0x1a at the end of files; CB86 is an example. Again, if you see build errors this may be the problem.

Here are runtimes for the benchmarks in milliseconds for a 4.77Mhz 8086 (not 8088) as emulated by NTVDM

dos_compilers