The machine below is an IBM PC AT (Model 5170) with a 6Mhz 80286, 640K of memory, two monitors (a Monochrome Display and a Color Display), two 1.2Mb diskette drives, and a 10Mb hard disk. It boots the BASICDOS-360K-DUAL diskette and runs one session on each monitor: PRIMES.BAT on the Monochrome Display, while the Color Display switches to the hard disk’s SRC directory and runs MK to build BASIC-DOS itself, with MAKE, MASM, and LINK. Since the machine has a hard disk, the boot sector first displays Press a key to start... on the Monochrome Display; press any key (or wait 5 seconds) to boot from the diskette, or press Esc to boot from the hard disk instead. Unlike the PC and PC XT, the PC AT has a battery-powered real-time clock, so BASIC-DOS starts with the current date and time (type DATE or TIME to see them).
Use SHIFT-TAB to move keyboard focus from one session to the next. For even more sessions, try the Dueling Monitors demo, which runs FOUR sessions, two on each monitor.
This demo is also available on an IBM PC, an IBM PC XT, and a COMPAQ DeskPro 386.
The BASICDOS-360K-DUAL diskette’s CONFIG.SYS runs one full-screen session on each monitor: PRIMES.BAT on the Monochrome Display, and on the Color Display, a build of BASIC-DOS itself (with MAKE, MASM, and LINK) from the hard disk’s SRC directory. If there’s no hard disk (eg, on an IBM PC), the Color Display session runs PIPES.BAT instead, which pipes the output of DIR through the CASE filter over and over.
At first glance, it might appear there are two machines running, but it really is just a single machine running two BASIC-DOS sessions. Use SHIFT-TAB to toggle keyboard focus between them. Since these sessions don’t use borders, the presence of a blinking cursor indicates which session has focus.
A MEMSIZE line in CONFIG.SYS (eg, MEMSIZE=128) can limit the total memory used by BASIC-DOS. You might be tempted to think that MEMSIZE is a way to “partition” memory, so that each session has a dedicated amount, but no – MEMSIZE is simply a means of testing BASIC-DOS with different memory sizes. And in any case, partitioning memory would not be a good strategy.
REM Demonstration of dual monitors with full-screen sessions
FILES=20
BUFFERS=4
SESSIONS=4
CONSOLE=CON:80,25,0,0,0
SHELL=COMMAND.COM PATH$="A:\;A:\BIN;A:\SAMPLES;A:\DEMOS":PRIMES.BAT
CONSOLE=CON:80,25,0,0,0,1
SHELL=COMMAND.COM PATH$="A:\;A:\BIN;A:\DEMOS":IF EXISTS("C:\SRC") THEN PATH$="C:\;C:\BIN;C:\DEMOS;C:\TESTS;C:\TOOLS":C: :CD SRC :MK :ELSE PIPES.BAT
Copyright (c) 2020-2026 Jeff Parsons Released under MIT License