home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Black Box 4
/
BlackBox.cdr
/
progc
/
ce331src.arj
/
VERSION.H
< prev
next >
Wrap
Text File
|
1991-06-08
|
18KB
|
329 lines
/*
* V E R S I O N . H
*
* purpose:
* Program name and version number for CodEd. Also, the modification
* and version number history.
*
* acknowledgements:
* CodEd is based on MicroEmacs 3.9 by Daniel Lawrence and others. It
* also incorporates some features that were added to MicroEmacs 3.10.
*
* modification log:
* 1.0 4/6/88 John W. Grothman
* 4/9 jwg - no more monochrome adapter or flicker support
* 4/20 jwg - a hard tab is now used regardless of 'tabsize'.
* CodEd now interprets a tab based solely on
* 'tabsize' (see ce.rc).
* 4/21 jwg - fixed KillText() in random.c; it did a 'return'
* instead of a 'break' if given an argument that
* caused it to exceed the length of the buffer
* 4/28 jwg - rebound ^V/^Z to ^X^N/^X^P and vice versa (scroll)
* 5/2 jwg - common code reduction
* 5/3 jwg - deep-sixed ^U processing and 'error.cmd' handling
* 1.1 6/20 jwg - mod ffgetline() and ffputline() to work a line at
* a time instead of a char at a time (reads are now
* 50% faster and writes are 80% faster)
* 6/22 jwg - mod replaces() to flush the keyboard buffer just
* before it returns (deletes any extra responses to
* the 'query replace' prompt caused by holding down
* the response key instead of single stroking it)
* 6/27 jwg - register all locals that can benefit from it
* 1.2 7/12 jwg - rewrote keyboard handling code (see bios.asm)
* 1.21 8/1 jwg - add 'IndentRegion' and 'UndentRegion' and move
* the auto CMODE check from a macro in 'ce.rc' to
* ReadIn() in 'file.c'
* 8/2 jwg - fix InsBrace() in random.c (pointed to preceding
* line if opening brace was in column 0)
* - add -c command line option (goto character 'n')
* - add ? command line option (print usage and exit)
* 1.22 8/8 jwg - souped up search performance (mostly by turning
* a lot of locals into globals and avoiding the
* passing of a lot of long pointers to functions
* called from within the search Scanner() loops)
* 8/9 jwg - removed egaclose() code from the beginning of
* of egaopen() in ibmpc.c
* 1.23 8/14 jwg - add real move (SetAnchor() and MoveRegion())
* 1.3 8/21 jwg - add goto top line and bottom line of window
* (GotoTlow() and GotoBlow())
* 8/22 jwg - fix bad bug in Scanner() (non-matching char
* after at least one char matched was not put
* back; added putbackch() in search.c to fix it)
* 1.31 9/7 jwg - removed global modes display from ListBuffers()
* 1.32 9/10 jwg - mod tabbing code (tabsize of 4 or 8 uses hard
* tabs, any other tabsize uses spaces)
* 1.33 9/28 jwg - fix bug in magical searches
* 1.34 12/26 jwg - made as ANSI-compatible as possible
* - removed 'printf-type' processing from MlWrite()
* and added sprintf calls where necessary
* 1.35 2/1/89 jwg - bound the function keys via bind.h instead of
* at run-time via ce.rc
* 2.00 2/2 jwg - start mods to use PforCe library calls instead
* of Mickeysoft's stdio calls
* 2.01 3/3 jwg - init. anchorp and anchoro when creating a window
* (main.c) and when splitting a window (window.c)
* 2.02 3/31 jwg - rebound ShrinkWind() to <Alt><PgUp> and
* EnlargeWind() to <Alt><PgDn>
* 2.03 5/23 jwg - removed xlat() and its related function binding
* - add 40-line VGA (35-line EGA) display mode
* 5/30 jwg - add call to RevStrCpy() to initialize the reverse
* search pattern when the -s command line switch
* is used
* 5/30 jwg - changed 'print usage' command line switch from
* ? to -h
* 2.04 6/5 jwg - fix bug in Detab() (from 3.10)
* 6/6 jwg - add horizontal scrolling (from 3.10) and two env.
* variables ($hscroll and $hjump) to control it
* 2.10 6/7 jwg - add new high speed search (Boyer-Moore; from 3.10)
* 6/9 jwg - minor (newly created) bug fixes
* - add the two environment variables for the new
* tabbing code ($hardtab and $softtab)
* 6/13 jwg - more minor (newly created) bug fixes (the new
* search stuff now finds all occurrences of the
* search string; how about that?)
* 2.11 6/14 jwg - made as many 'module local' functions 'static'
* as I could (moved a couple of routines around)
* - mod file reading code to use low-level (getc)
* calls instead of the high-level PforCe (flgetln)
* calls; CodEd now does the funny line terminator
* checks (any combination of <cr><lf>, <lf><cr>,
* <cr> or <lf>); reads are now 4 times faster (note
* that PforCe writes are still almost twice as fast
* as low-level (putc) writes)
* 6/15 jwg - added 'safesave' flag and $safesave env. variable;
* now (if safesave is TRUE) WriteOut() will: write
* to a temporary file, unlink the previous version,
* then rename the temp file to the original name
* (NOTE: default is safesave = TRUE) (from 3.10)
* 6/16 jwg - add BINARY searches for things bound to keys,
* environment variables and user functions (3.10)
* (NOTE: the names[], envars[] and funcs[] arrays
* MUST!!!!! be in ascii sorted order for this to
* work; be VERY careful when modifying func.h or
* var.h) (controlled by BINARY flag in struct.h)
* jwg - mod Detab(), Entab() and Trim() to work on the
* current region if not passed a numeric argument
* (added RegionLines() to get the number of lines
* in the current region) (from 3.10)
* - add DelMark() to clear the mark and anchor in
* the current window
* 6/21 jwg - fix irritant (aborting GotoLine() caused the
* BELL to beep twice)
* - mod CmdAbort() to kill currently active keyboard
* macro (set kbdmode = STOP) only if called with
* a TRUE flag
* - break out most of main() into procline() and
* editloop() (from 3.10)
* 2.12 6/22 jwg - put the pascal keyword on everything (except
* main(), of course; don't want to rewrite the
* C startup code); gained some speed and got
* 1.5K of RAM back
* 6/23 jwg - add (N)arrowed flag to the 'display buffers' list
* 2.13 6/23 jwg - add bookmarks (see NBMARKS in struct.h) (3.10)
* 6/26 jwg - finish bookmark code
* 2.14 6/27 jwg - mod spawn code to do the EXEC directly, without
* calling one of the run-time library functions in
* the Exec??? and Spawn??? family; saves 2K of RAM
* 6/29 jwg - fix SetMark() call in IndentRegion() and
* UndentRegion() to set the mark instead of a
* bookmark (new bug due to bookmark code)
* 2.15 7/3 jwg - incremental searches are now gone for good (I'm
* tired of maintaining the isearch code and of
* spending 2K of RAM on it; besides I personally
* never use it)
* - mod GetString() in input.c to clear the buffer
* (buf[0] = 0) when a Ctrl-Backspace is entered;
* this allows search and/or replace strings to be
* set to NULL
* 7/5 jwg - swapped the order of the two union members in
* the MC structure in struct.h (this allowed me to
* explicitly NULL the first structure in the mcptr
* and rmcptr arrays (see def.h) without getting
* one of the various invalid initialization warning
* messages from the compiler); this was necessary
* because an INT is NOT THE SAME SIZE as a POINTER
* on an Intel processor in large model; two cheers
* for segmented architectures
* 2.16 7/7 jwg - add support for command line wildcards (included
* setargv.obj in ce.arf); CodEd can be invoked with
* a command line like: coded *.c; I like this a lot
* - fix long-standing bug in Token(); the opening
* quote of a quoted string was handled incorrectly;
* it set 'quotef' TRUE, but failed to bump the
* source pointer or to continue the while loop; this
* caused quoted strings in macros to be limited to
* (SIZE - 2 + null) instead of (SIZE - 1 + null)
* 2.17 7/11 jwg - add PrevBuffer(); now we can go back one buffer
* as well as go forward one buffer (NextBuffer())
* - rebound some function keys
* 7/12 jwg - mod FindBuf() and ZotBuf() to update the new
* doubly linked buffer structures and 'btailp'
* added for PrevBuffer(); this works great
* - updated usage message in main.c to reflect new
* function key bindings
* - add code to makelist() to display 'Global Modes'
* as the first line of [Buffer List]
* - add code to makelist() to display the amount of
* RAM available as the last line of [Buffer List]
* - mod oneliner() in spawn.c to use the current
* switch character
* 8/2 jwg - mod WriteOut() in file.c; was checking flopen()
* return for a (FILE *)NULLCPTR instead of a
* NULLHDL
* 2.18 8/7 jwg - fix bug in Font40(); I was assuming that MASM 5.1
* always set up a stack frame, so I just creamed BP
* and figured it would get restored automagically;
* wrong, wrong, wrong; MASM is smarter than the
* average bear, it generates stack frame code only
* if it decides it is absolutely necessary
* - compiled all modules for the '286
* 2.19 8/18 jwg - massive name changes
* 2.20 8/21 jwg - relink with PforCe library compiled for the '286
* 2.21 10/17 jwg - fix bug in replaces() - aborting a replace while
* typing in the replacement string caused the
* replace string to be replaced with a NULL string
* (that's what Ctrl-Backspace is for)
* 2.22 10/23 jwg - delete unused local (saveflag) in editloop() in
* main.c; remnant of an earlier day when editloop()
* had a hook to execute a macro on startup
* - mods for Turbo C; some things are now condition-
* alized by the symbols MSC and TC; changes mostly
* involve different names for some of the include
* files, plus the initialization of '_stklen' in
* main.c for Turbo C
* - mod WriteOut() in file.c for Turbo C; when saving
* more than one file (via QuickExit() or multiple
* FileSave()'s), the safesave filename template
* ("ceXXXXXX") was getting creamed; it seems like
* Turbo C wants a fresh copy every time; oh well
* 3.00 12/6 jwg - release to the public domain
* 3.01 12/13 jwg - return support for monochrome adapters
* 3.02 1/4/90 jwg - return support for the original PC keyboard
* 3.03 1/29 jwg - mod FindBuf(), ReadIn() and procline() to set all
* buffer and and file names to lower case (FindBuf()
* was case-sensitive and shouldn't be; mod ReadIn()
* just to be symmetric)
* - NOTE: the end result of all this lower case stuff
* is that KillBuffer() (and consequently ZotBuf())
* now actually deallocate memory and return it to
* the heap. Some place along the way, a stracmp()
* was failing and so was the deallocation process.
* 3.04 1/30 jwg - fix execprog() in spawn.c; it would just save the
* current screen rez and try to force the CGA mode;
* of course CodEd would complain when it was running
* on a mono display; now we check that the current
* screen rez is not MNO or CGA before we set the
* CGA mode (this assumes that the MNO mode is ALWAYS
* a 25-line mode)
* 3.05 7/3 jwg - add -i (insert), -m (magic searches), -n (normal
* searches) and -o (overwrite) command line switches
* 3.06 9/4 jwg - mod ReadIn() in file.c to fix auto C mode code;
* would get screwed up on relative file names that
* had a '.' or '..' in them, or that, god forbid,
* had a directory name with an extension
* 3.07 10/7 jwg - kill MSC stuff
* - start mods to support TC++
* - kill the pascal keyword
* 3.08 10/14 jwg - convert MAKE files to Borland MAKE format
* - add "cpp" as a valid C-mode filename extension
* 3.09 10/16 jwg - fix bug in replaces() - '(U)ndo last' wouldn't
* 3.10 10/18 jwg - fix bug in rmcstr() - was setting 'status = FALSE'
* if malloc() near the end of rmcstr() failed, but
* did not return - would then attempt to write to
* a NULL pointer - naughty, naughty
* jwg - fix big time bug in amatch() - was not resetting
* 'scurline' and 'scuroff' on a failure - nasty -
* this one's been there since I made all of the
* LINE pointers and offsets global in the search
* functions (v2.10) - beware the speed demon
* 3.11 11/10 jwg - removed the DEBUGM conditional compilation flag
* (from eval.c,exec.c,struct.h,def.h) - there was so
* little code involved, plus the "debug" envar and
* EVDEBUG envar[] index could not be conditionalized
* if we wanted to maintain support for the BINARY
* search routines, so... they be gone
* 11/11 jwg - mods to display.c - delete the mlputi(), mlputli()
* and mlputf() code - unnecessary and uncalled since
* the 'printf-type' processing was removed from
* MlWrite() in version 1.34
* 3.12 11/13 jwg - add an ASCII table window (ala the HELP window)
* - add messages to GetFence() to tell why it failed
* 3.13 11/23 jwg - add check to MakeName() to validate the requested
* file name (i.e., whether or not it's in valid DOS
* filename.ext form) and conditionally continue if
* it isn't
* - void some int functions in various modules whose
* return values were meaningless
* 11/24 jwg - place CGA, EGA and VGA code in ibmpc.c into
* seperate functions for clarity
* - clean up the video code with respect to MONO
* adapters and move some EGA and VGA code into
* Font50() in fonts.asm (renamed from Font40.asm)
* 11/25 jwg - add ResetTo25() to ibmpc.c and fix execprog() in
* spawn.c to reset the display mode to 25 lines
* based on the installed video adapter, since "CGA"
* now is specific to the CGA adapter (see E25/V25)
* - fix Pipe() in spawn.c to clear the file name from
* the buffer into which the specified command's
* output is piped (the file was being unlinked, but
* the file name still showed up on the mode line)
* 3.14 12/1 jwg - clean up validfilename() code
* - clean up FAILURE exit()s in main.c --- PcClose()
* the system first
* - change startup filename extension from .RC to .SF
* (for Startup File; I have no idea what RC was for)
* - clean up display mode change code - if user tried
* to change to an unsupported mode, the screen was
* not getting repainted; pretty disconcerting
* 3.20 12/29 jwg - conditionalize BOOKMARK code (BMARKS in struct.h)
* 12/30 jwg - conditionalize MAGIC code (MAGIC in struct.h)
* - fix GotoBlow() - goal column often incorrect
* 3.21 1/27/91 jwg - minor mods to ibmpc.c and spawn.c (still can't
* Exec (^X $) CHKDSK; can Pipe and Spawn it though)
* - mod gtfun() and gtenv() in eval.c to place the
* switch code in BINARY order (i.e., 0 -> n); this
* should make the jump table code more efficient
* 1/29 jwg - fix a fix; delete ResetTo25() and replace calls
* to it with calls to PcClose(); video mode set and
* reset code got screwed up - wasn't resetting the
* char set to the 25-line (8x14 (EGA)/8x16 (VGA))
* 3.22 2/17 jwg - add 28-line VGA mode
* 2/23 jwg - add "hpp" as a valid C-mode filename extension
* - mod EVSRES code in svar() to repaint the screen
* after a mode switch (trying to switch to the
* current mode (i.e., no change) left the screen
* blank and creamed the modeline)
* - mod scinit() to just return if the requested
* video mode is the same as the current video mode
* 3.23 3/7 jwg - various minor mods
* - oops; forgot to close the .PAL file in vgaset()
* - oops; undo the 'mod scinit()' change made on
* 2/23 - returning from any of the DOS shell or
* exec routines would leave the screen garbage
* (since the requested video mode was the same as
* as the 'remembered' current mode, the screen
* just stayed a nice shade of blue with no text
* and no mode line (I knew I pulled that code a
* long time ago for some reason, just couldn't
* remember; tisk, tisk))
* 3.24 3/10 jwg - move VGA25, VGA28, VGA40, VGA50, EGA25, EGA35,
* EGA43, CGA25 and MNO25 code to fonts.asm
* - default 'safesave' to FALSE (the file I/O code
* has been very stable for some time now, so we
* might as well save a little time and disk I/O
* unless the user explicitly tells us to)
* - kill the 'command completion' code in GetName()
* 3.25 4/13 jwg - add "slt" as a valid C-mode filename extension
* (for Telix SALT compiler source files)
* 3.30 4/28 jwg - mod Entab() to not entab within quoted strings
* 3.31 6/8 jwg - one more fix to the validfilename() code - it
* choked on relative filenames that started with
* with '.' or '..' and that had no extension - this
* better be it for this one
*/
/* program identification */
#define PROGNAME "CodEd"
#define VERSION "3.31" /* 6/8/91 */