ME My Echo Version 1.00 (Production) Mark Plancke, Author Fellow Programmer of The Guild January 3, 1989 Version 1.00 ME - My Echo Page 1 It has always bothered me that the DOS ECHO command fell short in some areas, mainly the ability to send escape sequences to the console. This would allow people who were so inclinded, to enter ANSI escape sequences into thier batch files, etc. So I wrote this as an my first ASSEMBLER project for the IBM PC. I have written in a variety of high level languages, such as C, COBOL, FORTRAN and BASIC, but have never attempted the "down to the bare metal" programming which ASSEMBLER allows. Seems like a lot of fun, if you have the time and you need the speed which an assembler can provide. At any rate, this program is designed as a simple replacement for the DOS ECHO command, with a few added features. There is the ability to echo escape sequences to the console as well as all the options offered by the DOS PROMPT command (I figured it was a good starting point). Escape sequences are prefaced by an escape character, which is the '$'. To echo a message, you simply type the text as you want it to appear. So here are the escape sequences which may be used: Characters Meaning $$ Print the $ character $T Current time $D Current date $P Current directory $V DOS version number $N Current drive code $G Print the > character $L Print the < character $B Print the | character $Q Print the = character $H Print the Back space character $E ESCape character $_ Print a CR/LF character sequence Examples: me $e[2jHello World ; Clear screen and home cursor and ; Print Hello World me $e31;47m$e[1mHello World Version 1.00 ME - My Echo Page 2 REVISION HISTORY Oct 12, 1988 Version 0.10 Initial testing pre-release. Oct 13, 1988 Version 0.20 Added help screen when no arguments where given. Improved error messages. Jan 3, 1989 Version 1.00 Implemented the printing of the following o Current Time o Current Date o DOS Version Number NOTES ON DATE OUTPUT The date can be formatted in three ways, as follows; 1. MM/DD/YYYY 2. MM/DD/YY 3. DDD MM/DD/YYYY The format is determined by a variable in the assembler program TM_FMT, set this to the format number you want and recompile. Valid formats are as above 1 through 3. The file ME.COM may be modified directly to update this field, the variable is located at position four (4) in the file. You can use a hex editor or DEBUG to change this variable to the value you want. To use debug, follow this procedure... Commands Comments - do not type these DEBUG ME.COM ; Start up debugger -D 100 L4 ; Dump four bytes 5691:0100 E9 71 04 03 .q.. -E 103 ; Enter data at 103 5691:0103 03.01 ; Enter the new display mode -W ; Write the file Writing 08B3 bytes -Q ; Exit debugger This changes the display mode from 3 to 1. ANSI TUTOR Here are some control codes for the ANSI driver, summarized from the IBM material. 1. CURSOR POSITIONING To move the cursor to a specified position: ESC [#;#h where the first # is the desired line number and the second the desire column. To move the cursor up without changing columns: ESC [#a where # specifies the number of lines moved. To move the cursor to a specified horizontal and vertical position: ESC [#;#f where # means first the line number and secondly the column number. To get a device status report: ESC [6n To get a cursor position report: ESC [#;#r where the first # specifies the current line and the second # specifies the current column To move the cursor down: ESC [#b where # specifies the number of lines moved down. To move the cursor forward: ESC [#C where # specifies the number of columns moved. To move the cursor backward: ESC [#d where # specifies the number of columns moved. To save the cursor position: ESC [s and to restore it: ESC [u. 2. ERASING To do a CLS (erase screen move cursor to home position): ESC [2j To erase from cursor to end of line: ESC [k 3. COLOR GRAPHICS To set the color/graphics attributes, enter ESC [#;#m where the first # is the desired foreground color and the second is the desired background color. Select colors from the list below: 30 black foreground 31 red foreground 32 green foreground 33 yellow foreground 34 blue foreground 35 magenta foreground 36 cyan foreground 37 white foreground 40 black background 41 red background 42 green background 43 yellow background 44 blue background 45 magenta background 46 cyan background 47 white background To set additional attributes enter: ESC [#m where # is the number of the desired attribute. Select attributes from the list below: 0 all attributes off (white on black) 1 bold on 4 underscore (on IBM Monochrome Display) 5 blink 7 reverse video 8 invisible To give an example of what can be done with these additional codes, a batch file called MENUOFF.BAT containing only the line: PROMPT $e[2J$e[30;40m$h would blank a color display completely. It does a CLS, sets the display to a black foreground and background and the with the "$h" performs a backspace to erase the blinking cursor (the "$h command is documented in the DOS manual under PROMPT). Another batch file called MENUON.BAT containing the lines: PROMPT $e[0m prompt cls Would reset a color display to restore the screen after MENUOFF.BAT had been run. Enjoy ANSI! It is a wonderful tool, and can be a lot of fun to use. It's not a keyboard enhancer, and if you load it up with too many keyboard redefinitions at one time you will run out of environment space. This is harmless and simply means that ANSI is full. But it will work fine to define your function keys and control your screen. ME (My Echo) Version 1.00 (Production) January 3, 1989