4

How Can One change the MS-DOS prompt font color?

MS-DOS is really old, and being the grandpappy of the computers it is really hard to find support for it.

I have these tried suggestions from websites:
http://www.easydos.com/menucolor.html
https://support.microsoft.com/en-us/kb/95099
http://www.computerhope.com/color.htm

I have edited: Config.sys (It now says 'Menucolor= 2,0' ) C:\Windows\color.txt (It now says 'green')

Still not working.
Anyone have any idead on how to do this?

Notes

Before you suggest 'color a', Ms-Dos is not the cmd. I already tried that.
It is possible! There are multiple ms-dos viruses that have done this effectively.
I am running MS-DOS from Windows 98 on a virtual machine.

9
  • "I am running MS-DOS 6.22 on a virtual machine." ... I know this won't answer your question but... why?
    – danicotra
    Commented Jul 20, 2015 at 21:27
  • 1
    Whoops... I meant I am running MS-DOS from Windows 98 on a virtual machine!
    – Roke
    Commented Jul 20, 2015 at 21:55
  • 2
    I just like looking at and playing with MS-DOS. It is old and pretty cool. I'm sorry I can't fully explain. :P
    – Roke
    Commented Jul 20, 2015 at 21:56
  • 1
    @RookieTEC9 : you must be a vintage/nostalgia lover... ;-)
    – danicotra
    Commented Jul 21, 2015 at 6:19
  • 1
    @RookieTEC9 That assembler was called 'debug', a standalone program not part of msdos.sys, and it is still pretty well documented on the web. Good luck!
    – arch-abit
    Commented Jul 21, 2015 at 22:01

3 Answers 3

4

You can use debug to write a short COM file. When you run debug you'll get a single dash prompt, enter the following (including blank lines) and you'll get a file color.com in your current working directory:

a 100
mov ah, 06
xor al, al
xor cx, cx
mov dx, 184f
mov bh, 07
int 10
mov ah, 4c
xor al, al
int 21

rcx
e
ncolor.com
w
q

It calls int 10 ah=06 to clear the screen, setting the cursor at the bottom and filling with attributes in bh. High nibble is background, low is foreground, colors are:

  • 0 = black
  • 1 = blue
  • 2 = green
  • 3 = cyan
  • 4 = red
  • 5 = purple
  • 6 = yellow
  • 7 = white
  • 8 = light black
  • 9 = light blue
  • A = light green
  • B = light cyan
  • C = light red
  • D = light purple
  • E = light yellow
  • F = light white

(Thus bit 4 is high intensity.) To get red background with black foreground change 07 to 40.

Parsing the command line args to set colors is non-trivial, so just hard code your favorite one. Or do this in debug to update it:

debug color.com
e 10a
40
w
q

Attribute is stored in location 010A, updating it directly is easier than typing it all again.

2

This cannot be done without Qbasic. We will run a small program that will modify the screen colors for the command prompt.

The screen qbasic command will be of much use.

Run this QBASIc program:

 SCREEN 0
 COLOR 26

Note: you can only have digits from 0-7

1
  • 1
    If you do cls, the screen will revert back to the original color.
    – Roke
    Commented Nov 1, 2015 at 21:29
2

If you load ANSI.SYS then define the DOS prompt (for example):

c:>prompt $e[1;33m$p$g

you can change the prompt color and the prompt itself.

Changes the cmd.exe command prompt.

PROMPT [text]

  text    Specifies a new command prompt.

Prompt can be made up of normal characters and the following special codes:

  $A   & (Ampersand)
  $B   | (pipe)
  $C   ( (Left parenthesis)
  $D   Current date
  $E   Escape code (ASCII code 27)
  $F   ) (Right parenthesis)
  $G   > (greater-than sign)
  $H   Backspace (erases previous character)
  $L   < (less-than sign)
  $N   Current drive
  $P   Current drive and path
  $Q   = (equal sign)
  $S     (space)
  $T   Current time
  $V   Windows version number
  $_   Carriage return and linefeed
  $$   $ (dollar sign)
3

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .