Here are the keys to my Ad-Hoc programming editor (e.exe). Almost fully the same as in WordStar and WordStar compatibles such as Joe: One-key sequences: ctrl-a, home = home (if shift held, drags the block begin/end along) ctrl-b, left = go left (if shift held, drags the block begin/end along) ctrl-c = exit without saving (prompts if unsaved changes). Also cancels prompts ctrl-d, delete = delete character under cursor ctrl-e, end = end (if shift held, drags the block begin/end along) ctrl-end = go to bottom right corner of current window (if shift held, drags the block begin/end along) ctrl-f, right = go right (if shift held, drags the block begin/end along) ctrl-g = go to matching parenthesis ctrl-h, backspace = left + delete ctrl-i = insert spaces until the next tab column ctrl-m, ctrl-j, enter, ctrl-enter = insert a newline and spaces to match the indentation of current line ctrl-r = refresh screen ctrl-t, F8, shift-F8 = bring up the screen mode selection dialog ctrl-u, pageup = page up (if shift held, drags the block begin/end along) ctrl-v, pagedown = page down (if shift held, drags the block begin/end along) ctrl-w = scroll one line up ctrl-y = erase line at cursor ctrl-z = scroll one line down ctrl-backspace = undo ctrl-home = go to upper left corner of current window (if shift held, drags the block begin/end along) ctrl-left = go left on word boundary (if shift held, drags the block begin/end along) ctrl-pagedown = go to file end (if shift held, drags the block begin/end along) ctrl-pageup = go to file beginning (if shift held, drags the block begin/end along) ctrl-right = go right on word boundary (if shift held, drags the block begin/end along) up = go up (if shift held, drags the block begin/end along) down = go down (if shift held, drags the block begin/end along) insert = toggle insert/overwrite mode shift-F1 = ask for new video dimensions and set that mode (not supported by older versions) F1 = decrease video height by 1 characters F2 = increase video height by 1 characters F3 = decrease video width by 2 characters F4 = increase video width by 2 characters F5 = toggle 9-bit character mode F6 = toggle double-width character cell mode (maintains video width in pixels) F7 = toggle double-height character cell mode (attempts to maintain video height in pixels) F8, shift-F8, ctrl-t = bring up the screen mode selection dialog F9 = toggle Commodore 64-like simulation mode F10 = toggle forced uppercase text (rendering only; does not affect files) shift-F6 = toggle double-width character cell mode (maintains video width in characters) shift-F7 = toggle double-height character cell mode (maintains video height in characters) Two-key sequences: ctrl-k b = mark block begin ctrl-k k = mark block end ctrl-k m = move block ctrl-k c = paste(copy) block ctrl-k y = delete block ctrl-k d = save file (prompts for name) ctrl-k x = save file and exit (prompts for name) ctrl-k e = load file (prompts for name) ctrl-k o = load file (prompts for name) ctrl-k n = new file ctrl-k u = go to file beginning (if shift held, drags the block begin/end along) ctrl-k v = go to file end (if shift held, drags the block begin/end along) ctrl-k . = indent block ctrl-k , = unindent block ctrl-k = show info about character under cursor ctrl-k ' = insert any character you type next (prompts for 1 character); used for inserting control-characters. ctrl-q = ignored File name prompts do not have a dialog & path navigation. It just asks for a path+name in the status line prompt. There is no autocomplete. Syntax highlighting is based on the patterns in the c.jsf file. It always uses that file. You can replace the file to use syntax highlighting for some other language. The syntax highlighting file format is the same as in Joseph Allen's editor (joe-editor.sourceforge.net), EXCEPT that colors are indicated in two-digit hexadecimal numbers rather than symbolic names such as "white" or "bg_red yellow". The hexadecimal numbers are standard VGA text attributes, which are a bitwise sum of: 80 = blinking foreground or intensity for background, depending on VGA adapter 40 = red background 20 = green background 10 = blue background 08 = high intensity color 04 = red foreground 02 = green foreground 01 = blue foreground For example, 0C = 08 + 04 = red foreground at high intensity (background = black) 1B = 10 + 08 + 02 + 01 = blue background, high intensity, blue-green (cyan) color More documentation about the jsf file format can be found in the c.jsf file. Design priorities of the editor: 1. runs in DOS 2. does not intervene with TSRs that tamper with PIT (clock interrupts) - corollary: compiles with Borland C++ 3.1, real-mode target 4. comfortable to use for someone who is familiar with Joe 5. fast 6. eyecandy Why was the editor created? 1. I needed an editor that runs in DOS, because I use DOSBox for recording my programming videos. I do all my programming in Linux, but I use DOSBox for making the videos. 2. I needed the editor to support other than 80-character wide screen modes (this is why I could not use Borland C++ 3.1 IDE) 3. I wanted syntax highlighting and somewhat familiar inputs that do not hinge on direct hardware access (i.e. you can stream input by hooking INT 16h). 3. Joe could not be compiled for DOS. TODO list: 1. turn it into 32-bit portable code that runs on any platform where SDL is available 2. make the syntax checking wiser with regards to how it resumes when the document changes 3. add support for 256 colors or more (currently limited by VGA 16-color text mode) 4. publish source code History: Editor created in 2011-03-08. However, because its sole purpose of existing is to be sort of hollywood for programming, I almost always make some small changes to it when I create new videos. This includes tweaks like adding faux temperature gauges to the status bar, adding new fonts, adjusting the color schemes, and adding new input functions if I invent some need. Even though the editor works, I don't use it for any real work. As such, it has had quite little testing, and may contain severe bugs that may cause data loss. I provide it for archival and curiosity without any warranty. *NO WARRANTY* -- Joel Yliluoma http://iki.fi/bisqwit/