BASIC-DOS

A PCjs Retro-Programming Project

BASIC-DOS is on Twitter Project maintained by jeffpar

Preview

Part 6: Performance

How does BASIC-DOS compare with the BASIC interpreters that IBM PC users actually had? To find out, we wrote a set of benchmarks, BENCH.BAS, that runs unchanged in all three environments:

Each test was run on a 4.77Mhz IBM PC XT with a Color Graphics Adapter, both without and with an 8087 math coprocessor, and timed by BENCH.BAS itself, using the BIOS timer tick count. The BASIC-DOS results are from a release (non-DEBUG) build. Times are in seconds (smaller is better), and the fastest time for each test is in bold.

Test BASICA BASICA
w/8087
GW-BASIC GW-BASIC
w/8087
BASIC-DOS BASIC-DOS
w/8087
Integer math 30.1 30.1 27.3 27.3 5.0 5.0
Floating-point math (64-bit) 42.0 42.0 14.0 14.0 10.6 1.7
Math functions 11.8 11.8 9.7 9.7 16.0 0.5
String functions 7.4 7.4 6.5 6.5 2.9 2.7
Arrays and subroutines 3.5 3.5 3.1 3.1 1.2 0.7
Primes 78.9 78.9 73.6 73.6 6.9 6.9
Screen output 7.6 7.6 8.5 8.5 3.6 3.6
Graphics: PSET 19.9 19.9 17.5 17.5 3.7 3.7
Graphics: LINE 4.2 4.2 5.7 5.7 1.1 1.1
CIRCLE.BAS 9.1 9.1 8.4 8.4 5.6 5.3

The Tests

The Results

For programs that do most of their work with integers, which includes most games, utilities, and of course PRIMES, BASIC-DOS is typically 5 to 11 times faster than BASICA and GW-BASIC.

BASICA and GW-BASIC are also unable to use an 8087, because internally, they use a floating-point format known as MBF (Microsoft Binary Format). BASIC-DOS performs all floating-point operations using IEEE 64-bit precision, automatically using an 8087 when one is installed and software emulation otherwise.

Try It Yourself

The machine below boots the BASIC-DOS6 diskette, which includes BENCH.BAS. Type BENCH to run the benchmarks with BASIC-DOS, or MSBASIC BENCH to run them with GW-BASIC (type SYSTEM to return to BASIC-DOS afterward). The full set of tests takes a few minutes, and each result is displayed as it completes.

IBM PC, 256Kb RAM, Dual Floppy Drives, CGA

Color Display
Caps
Num
Scroll
F1
F2
F3
F4
F5
F6
F7
F8
F9
F10
Esc
1 !
2 @
3 #
4 $
5 %
6 ^
7 &
8 *
9 (
0 )
- _
= +
Back
-
Num
Scroll
Tab
Q
W
E
R
T
Y
U
I
O
P
[ {
] }
↵
7
↑ 8
9
Ctrl
A
S
D
F
G
H
J
K
L
; :
' "
` ~
← 4
5
→ 6
+
Shift
\ |
Z
X
C
V
B
N
M
, <
. >
/ ?
Shift
PrtSc
1
↓ 2
3
Alt
Space
Caps
Ins 0
Del .
Esc
Tab
F1
F2
F3
F4
F5
F6
F7
F8
F9
F10
Num
Scroll
1 !
2 @
3 #
4 $
5 %
6 ^
7 &
8 *
9 (
0 )
- _
= +
Back
-
+
Q
W
E
R
T
Y
U
I
O
P
[ {
] }
↵
7
↑ 8
9
A
S
D
F
G
H
J
K
L
; :
' "
` ~
← 4
5
→ 6
\ |
Z
X
C
V
B
N
M
, <
. >
/ ?
Shift
PrtSc
1
↓ 2
3
Ctrl
Shift
Alt
Space
Caps
Ins 0
Del .

That’s the end of the current preview. All the demos featured in the preview are also available in our set of Demo Configurations.

Copyright (c) 2020-2026 Jeff Parsons Released under MIT License