1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526
|
CHANGES MADE TO PFE:
====================
If I haven't fixed the bug you've seen, please drop a line to
Dirk Zoller (duz@roxi.rz.fht-mannheim.de)
Thanks to your bug reports and suggestions,
I was able to fix these errors and do the following improvements:
=================================================================
0.9.13 -- 0.9.14
- Fixed `READ-LINE' reporting EOF too late.
- Fixed a bug in `CATCH' occurring with some (Sun acc) compilers.
- Fixed things like `-.+' being a floating point number.
- Fixed ~/.pferc not loaded.
- Fixed `PLACE' (from the L&P-F83 words).
- Made PFEINCLUDE include path work.
- Made codes THROWn by signals compatible with gforth.
- Finds files in another user's home like this `~user/...' now.
- `SEE' now displays floating point literals in exponential form.
- Added constants `S-K1' through `S-K10' for codes returned
by `EKEY' when shifted function keys are pressed.
0.9.12 -- 0.9.13
- Made it faster by reordering some if/else clauses and
partially unrolling the inner interpreter loop.
- Made `AHEAD' immediate as it should be.
- Fixed yet more bugs in the configuration script.
- Fixed an ugly bug: Instead of signal names SIGxyz the
numbers were defined as constants. The same bug messed
up search paths for source and block files.
0.9.11 -- 0.9.12
- Extracted the glossary parts from dpANS6 for online help.
- Fixed install target in Makefile.
- Fixed several of the rewritten file access words.
- Fixed several details in guesscfg.sh
- Finally runs on NeXTstep (without -posix option).
- Uses global register variables on M68K CPU now.
0.9.10 -- 0.9.11
- Completely rewrote configuration, hopefully more reliable now.
Please read file INSTALL.
- Fixed Bug in `SEARCH'.
- Added source file `filesub.c' and moved some subroutines
for file access there. Partly rewrote file access words.
Namely `RESIZE-FILE' uses truncate() now if available.
- Added words `COPY-FILE' and `MOVE-FILE', same stack effect
as `RENAME-FILE'.
- Rewrote block word set, added another block extension word set,
each word with prefix `FILE-' takes additional fid. E.g.
`10 an-fid FILE-LIST'
list block 10 in the opened file.
- Added `LOAD"' to load from another block file like this
1 LOAD" other-file"
- Added support for Watcom C. It's not better than gcc.
- Added Watcom compiled binaries. They are not perfect.
0.9.9 -- 0.9.10
- Fixed `FCONSTANT' and `FVARIABLE' on HP 700.
- Checked command line options -D and -d. Made
turnkey-applications work. See demo/tt.app.
- Fixed a problem with the help index not readable.
Installation of the online help is still a mess.
0.9.8 -- 0.9.9
- Added an `install' target to the makefile.
- Added parameters to the config script:
CC="the C compiler" overrides the tendency towards gcc
--prefix=dir to specify a destination directory
- Once more fiddled around with the terminal stuff.
- Fixed several bugs on the DEC alpha architecture.
- Rewrote `>FLOAT' not to rely on sscanf() any more.
- Renamed a few things to avoid name clashes,
e.g. the -DBSD option now is -D_BSD. Read `install'.
0.9.7 -- 0.9.8
(This was an accidental release and not announced.)
- Added `HELP', see `help/README' for how to install,
then try `HELP ?STACK'.
- Added command line options in ARGC / ARGV according to
an idea by Guenther Thomsen. See `demo/arguments'.
- Moved configurable options to file `options.h'.
- Fixed `>FLOAT', `FE.', `FLNP1', `REPRESENT'.
- Fixed `PARSE'-bug introduced in 0.9.4: No refill at end of line.
- Fixed `SEE' and debugger to display the value `TO' refers to.
- Made `CATCH' and `THROW' aware of the floating point stack.
- Made it significantly faster using GNU-C's global register
variable feature.
0.9.6 -- 0.9.7
- Two new keys in the debugger allow counting of Forth
primitives executed. Simple profiling facility.
- `WORD' issues an error if parsed string would be longer
than 255 chars.
- More-like effect in `WORDS' improved by Andrew Houghton.
- Variable `FLOAT-INPUT' when false disables input of
floating point numbers. Use on 386 without coprocessor.
- Multiple buffers for `S"' and `C"' when used interactively.
Try: `S" world! " S" Hello " TYPE TYPE'.
- Changed `POCKET', now takes an S"-buffer number.
- New command line options and options in const.h:
-E- disables floating point input,
good on 386 w/o 387 under DOS.
-F converts file names to lower case,
good on UNIX-like systems when caps-lock is on.
-P specify number of buffers for `S"'.
- Rewrote Files Word set for better C-source and error checking.
- Fixed badly lined up display output of the debugger.
- Fixed tilde-expansion of file names.
- Fixed `S" WORDLISTS" ENVIRONMENT?' to return the
maximum search order length.
- Fixed double number arithmetics to work with 64 bit machines.
- Fixed a few other bugs introduced in 0.9.6
- Minor fix in `SEE' eliminates empty line appearing sometimes.
- Added online help utilities. Please check directory help
for how you can contribute to online help for pfe.
0.9.5 -- 0.9.6
- Fixed a bug in the debugger (when EXECUTE is involved).
- Fixed another old bug in the debugger (with locals).
- Termcap driver now issues "ks" and "ke" strings,
hopefully fixing cursor key trouble on xterm et al.
- Termcap driver: vt100 assumption made optional.
When disabled (default) input from unknown terminals
is received simply with fgets(), no echoing.
This works better in emacs shell mode.
- Termcap driver: simplified handling of nonblocking input,
i.e. KEY? and fixed it to work with FreeBSD.
- Added Lennart Benshop's 6809 simulator to the demos.
- Improved keyboard handling of tetris demo.
- Improved command line completion:
Type TAB twice to see possible completions.
- WWORDS is like WORDS but with wildcards.
Usage:
WWORDS pattern
Form patterns like this:
* matches any sequence of characters
? matches any single character
\ quotes * and ?
any other character matches this character
Try:
WWORDS ??
WWORDS E*
WWORDS F*A*
WWORDS *\?
0.9.4 -- 0.9.5
- Fixed parse and word to accept any whitespace given blank
as delimiter. (Replaces a hack in READ-LINE.)
- fixed EKEY?, now matches EKEY and KEY? matches KEY.
- More constants for e-keys defined, K-LEFT etc.
- Some renaming in the C source files to avoid name clashes
with the curses library.
- added experimental terminal driver curses.c replacing termcap.c,
(formerly term-ux.c). The latter still is better.
- added file shell.c with words for manipulating files and
directories interactively like with a shell:
RM file --- ; removes the file
TOUCH file --- ; sets last file modification time
to current time or creates file
CD directory --- ; changes directory
RMDIR directory --- ; removes directory
MKDIR directory --- ; creates new directory
LN file altname --- ; creates link altname to file file
MV file newname --- ; moves or renames file to name newname
CP file1 file1 --- ; copies file1 to file2
LL pattern --- ; lists files long matching pattern
LS pattern --- ; lists files short matching pattern
$$ --- pid ; pid of the running pfe
$UID --- uid ; real user id of running pfe
$EUID --- uid ; real user id of running pfe
$GID --- gid ; your group id
$HOME --- addr cnt ; home directory
$CWD --- addr cnt ; current working directory
PWD --- ; print current working directory
UMASK new --- old ; change umask, returns old
Note: No globbing except in LS and LL, no directory as
destination for cp, mv, ln.
Not all of them available with EMX.
0.9.3 -- 0.9.4
- Reworked the installation procedure:
replaced `sysdep.h' by a script `config' to
automagically determine the neccessary information
from your system. Please read file install!
- After `ONLY FORTH' you get a bare ANSI-Forth.
Use `EXTENSIONS ALSO' to access the rest.
- New concept of default search order: Say
DEFAULT-ORDER
and the active search order is saved. Say
RESET-ORDER
to return to the saved search order. ABORT executes
RESET-ORDER. Thus you can decide which search order you
get after an error.
After system startup the following order is default:
ONLY EXTENSIONS ALSO FORTH ALSO DEFINTIONS
- Fixed signal handling with BSD-like systems.
- Fixed handling of job control signals.
- More L&P-F83-compatibility:
added `?LEAVE', `BS', `ASCII', `CONTROL', `UPC'.
- Modified `PARSE': now refills at end of line when loading from file.
- Added Tetris demo.
- Fixed `+TO' applied to locals.
- C-Source: Changed type name `CFA' to `Xt' and `pcode' to `pCode'.
(better uniformity: type names have one capital letter)
- Dropped support for global register variables. It never worked.
a) - Fixed several bugs introduced with 0.9.4, again signals...
0.9.2 -- 0.9.3
- Fixed bugs introduced in 0.9.2.
- `SIGNAL' allows to install a Forth word as signal handler.
- Further tidied up terminal driver interface.
see term-ux.h for system dependent switches
related to unix terminal handling.
- `term-ux.c': now assumes vt100 if termcap failes.
- Merged files `syserr.h/c' into `main.c'.
- EMX: Caps lock now works with IBM character set 437.
- EMX: Improved signal handling though it still doesn't work all right.
- Made `fakemake' script work with nested ifdefs.
a) - Fixed EXIT discarding local variables (compiling).
- Fixed debugger displaying too many local variables.
- Fixed Ultrix bug introduced in 0.9.3
- Fixed EMX displaying strange characters when debugging.
0.9.1 -- 0.9.2
- Fixed `GET-ORDER' which returned the searched word lists
in the wrong order.
- Fixed `FLUSH-FILE' now returning the status.
- Fixed `BRANCH' and `?BRANCH'.
- Fixed `SEE' refusing to show words after `DEBUG word'.
- Removed `SAVE' and `RELOAD'. Sorry. They were incorrect.
- Added command line options -D to save a dictionary image
containing compiled Forth code to a file.
Command line option -d reads such an image in later.
- Added variable `APPLICATION': contains an xt or zero. The
xt is executed after startup instead of `QUIT'. Use
this with options -D/-d to create turnkey applications.
- Added variable `RESET-ORDER'. After `RESET-ORDER OFF' the
search order isn't reset by `ABORT', i.e. after errors.
- Added `ARGC' and `ARGV' making the shell command line options
visible to FORTH.
- Now includes ~/.pferc (name can be changed in const.h) on startup.
- In const.h: added ISO_CHARSET to enable accents and "umlauts"
on all machines supporting them, not only on Linux.
- Added file `unix.c' and moved some unix-idosycrasies there.
- Added file `yours.c' for your own primitives.
- Added terminal driver for DOS-OS/2-EMX in file `term-emx.c'.
- Updated installation hints for DOS users -- please read them.
- Use environment variable PFEOPTIONS to set your favourite
command line options permanently.
- Split file support.c in support.c and dictnry.c.
- Split file term.c in term.c and term-ux.c separating system
dependencies. When porting, please write separate files
term-xxx.c for completely different machines xxx and set
variable TERMO in Makefile accordingly.
- C-source: renamed several variables and structure components
for better readability, added macros to access Forth-
variables more easily.
- C-source: Renamed catch() to cAtch() since "catch" becomes
a keyword in C++.
- Makefile: common options made default options.
0.9.0 -- 0.9.1
- search path and default extensions for include- and block files.
See source file `const.h' for defaults,
environment variable `PFEINCLUDE' and command line option `-Ipath'.
- `EXPAND-FN' ( addr1 cnt1 addr2 --- addr2 cnt2 )
expands a given file name with path and extension.
- added variable `LAST' pointing to the most recently CREATEd
word. Changed `DOES>' to work with this variable instead
of `LATEST' (which is - roughly - `CURRENT @ @').
- added variable `REDEFINED-MSG'. If false, the message
`"xxx" is redefined' is omitted.
- `SOURCE-LINE' returns the line number while INCLUDing a file.
0.8.11 -- 0.9.0
- Included Kevin Haddock's structure tool. See file `struct.4'.
- Ported to DOS and OS/2 using Eberhard Mattes' `emx'-environment.
- C standard io: stdin, stdout, stderr now visible as Forth-files
with the obvious names: `STDIN', `STDOUT' and `STDERR'.
- Can be used as filter now: Interprets stdin (if not a terminal)
until EOF and exits.
- Added word `#!' with the same meaning as `REFILL'
to support shell scripts like this:
#! ./pfe -q
1 2 3 4 + + + . BYE
a) - Improved fakemake-script by Giorgio Richelli.
- Changed directory organization. Sources now in `src'.
- Changed directory name inside archive for unpacking in DOS.
- Fixed a floating point alignment bug on HP-UX.
- Block editor: ^KL interprets current line,
^KB loads current block.
0.8.10 -- 0.8.11
- Included Kevin Haddock's interface to Linux' shared libraries.
Linux users see README.linux-shlibs. This is experimental.
- Several fixes to `SEE'.
- Fixed `SEARCH-WORDLIST'.
- In case pfe fails to detect the text window size,
the command line option -t can be used. E.g.:
-t132x28
makes pfe assume the screen size was 132 columns, 28 rows.
- Slightly changed inner interpreter.
- Prepared support for global register variables, see `sysdep.h'.
(HP-UX users: please read INSTALLATION)
- Moving C sources towards the GNU indentation style
(GNU-emacs' c-mode with default settings).
0.8.9 -- 0.8.10
- Ported it to ULTRIX.
- Renamed constants: `XMAX' to `COLS' and `YMAX' to `ROWS'.
`XMAX' and `YMAX' might some day become the pixel size
of a graphics window.
- Added support for hex number input regardless of `BASE':
In `const.h' define PREFIX_HEX as prefix character,
e.g. '$' to make pfe understand $100 as 256.
- Same support exists for binary numbers, prefix defaults to '%'.
- Fixed `VALUE' to expect an initializer when defining a value.
0.8.8 -- 0.8.9
- Added multi-dimensional array support, see `library.4'.
- Fixed a bug in the query to the termcap database when using
the System V curses emulation of termcap functions. This
bug led to abuse of malloc()ed memory and to very severe
problems on some machines...
- Added `reliable' signal() using sigaction() according to
Stevens. It has been reported however that this is
unreliable at least on Linux. So don't define USE_SIGACTION.
0.8.7 -- 0.8.8
- Made aware of changing window size when running in an xterm.
- Added file `termcap.linux-xterm'
with a modified termcap-entry for xterm under Linux.
- Modified the return codes of EKEY.
- `ORDER' shows the `CURRENT' vocabulary too.
- GET-ORDER doesn't report the `ONLY' word list occuring
at the last position in the search order any more.
- Added a few words to `library.4'.
0.8.6 -- 0.8.7
- Fixed `RENAME'-bug.
- Several slight changes to make it acceptable to a C++-compiler.
- Added `+TO'.
- More (shell) command line options.
- Begun with man-page. Have a look at `pfe.1' with
nroff -t -man pfe.1 | more
- changed INSTALL, system specific hints for SGI and HP
0.8.5 -- 0.8.6
- Simple debugger: Say `DEBUG XYZ' and further executions
of `XYZ' will be done single stepping. Works with Colon-
definitions and DOES>-defined words.
Type '?' or 'H' at the debugger prompt to see available keys.
Use `NO-DEBUG XYZ' to restore `XYZ' to normal.
- Added file `lpf83.c' to provide some compatibility to
Laxen&Perry's F83. Moved some definitions to that file and
added some more.
0.8.4 -- 0.8.5
- Improved SEE, produces nicely formatted output now.
This required some major changes to the internal
organization of the compiler.
- KEY fixed for national characters with codes > 127.
- Command line completion can be excluded from compilation.
- Some changes to *maybe* allow compilation on 64 Bit machines.
a)
- Fixed two bugs introduced in 0.8.5
- Commandline supports configurable function keys. Try:
: DIR SYSTEM" ls -l" ; K1 EXECUTES DIR
then press F1!
0.8.3 -- 0.8.4
- C@ no more sign-extends the byte.
- Fixed `CONVERT'.
- Fixed error condition after incomplete `READ-FILE'/`WRITE-FILE'.
- Commandline does completion of a word on tab-key.
- `RANDOM' and `SRAND' provide pseudo random numbers.
- Improved `SEE' a little -- yet still not satisfying.
- Moved compiler internals related declarations to file `compiler.h'.
0.8.2 -- 0.8.3
- `MS' utilizes usleep() if available.
- `U-SEC' returns an unsigned quantity representing
the system time in microseconds.
- Added file `library.4' open for your source code enhancements.
0.8.1 -- 0.8.2
- `REPRESENT' fixed.
- `.S' prints floating stack too.
- Lots of ports done by Marko Teiste.
- `fakemake' script by Marko Teiste eases switching
to your platform if your make knows no conditionals.
0.8.0 -- 0.8.1
- `SAVE filename' saves entire dictionary.
- `RELOAD filename' reloads such a saved dictionary.
- Command line option -d loads a dictionary at startup.
- Fixed number input conversion with `LOWER-CASE ON'.
- Vectorized I/O:
. `EMIT' does a `*EMIT* @ EXECUTE'
. which by default executes `(EMIT)'
. same applies to KEY, EXPECT and TYPE
. `STANDARD-I/O' restores the defaults
0.7.6 -- 0.8.0
- Fixed DNEGATE with HP-UX' c89-compiler.
- Fixed floating point alignment problem.
- Modified term.c, supports optionally ioctl() instead of tcsetattr().
- Cooperates with job control now.
- Connected QUIT to THROW.
- Executable name selectable in the Makefile (changed it to `pfe').
- Changed EDT to EDIT-TEXT and EDIT to EDIT-BLOCK.
- After an error during compilation:
EDIT-ERROR jumps to the source line.
- `C"' can be used outside definitions.
- Fixed `COMPILE,' and `[IF]' with `LOWER-CASE ON'.
0.7.5 -- 0.7.6
- Fixed `ORDER' and `VOCS'.
- Added HP-UX support.
- Separated file `forth-83.c' from `misc.c'.
- Independent from gcc now, no usage of `long long' any more.
0.7.4 -- 0.7.5
- Fixed floored divide bug.
- Fixed COMPARE bug.
- Changed error checking in control flow words to allow
"extended control flow patterns".
- Changed ':' to not immediate.
- Passes tester.fr/core.fr, which are included in the distribution.
I did a small fix to core.fr, definition `GP7'.
- Modified control flow words compiling strategy
to allow a more modular C-source organization.
- Simplified term.c, uses only POSIX.1-conforming system calls.
- Simplified signal handling, more flexible.
- Enabled break (^U) and quit (default ^\) signals.
Break leads to ABORT, quit terminates the system.
- Changed file name "missing.h" to "sysdep.h" and moved all
system dependend constants and definitions there,
not only "missing" ones.
- Added file `sysdep.c' for system dependend definitions.
- Added some System V Release 2 support. See `sysdep.h/-.c'.
- More flexible Makefile
0.7.3 -- 0.7.4
- Fixed READ-LINE bug, INCLUDED works again.
- Some minor bugs in the interpreter fixed.
- Command line history now fully operable.
Try up/down-arrow, ^E/^X.
- More block-editor help. Pops up 1 second after ^Q/K/O.
- Begun with test-suite. Try 'make test'.
- Adapded file TODO to new insights.
a)
- Fixed local variable bug.
0.7.2 -- 0.7.3
- UNTIL now really immediate.
- Block editor: find and replace fixed.
- Block editor: stamps changed screens now with LOGNAME
and date/time. Turn feature on/off with ^OS.
- Commandline allows recall of one command with ^E now.
- Variable LOWER-CASE added. If 0<> "dup" finds "DUP".
- Command line option -l defaults LOWER-CASE to TRUE.
- ^C at the command line toggles CAPS-mode: lower and
upper case characters are exchanged.
- ^OC in the block editor toggles similar CAPS mode.
0.7.1 -- 0.7.2
- Fixed FCONSTANT.
- File access word set completed.
- POCKET (-- addr u) added for interactive use of S".
- USING and EDIT deal with read-only files now.
hint: Do EMPTY-BUFFERS if you accidentally UPDATEd
a block in a readonly file.
- EKEY reworked, now returns a distinct code for every key
termcap informs about.
- C-source: better naming of several structure members.
0.7.0 -- 0.7.1
- Including file from command line "activated".
- POSTPONE fixed
- BLOCK/BUFFER/UPDATE more stable now
- The block editor learned:
. how to search (^QF) and replace (^QA),
. how to insert (^KV) and delete (^KG) screens,
. how to display some help - there will be more.
- Compressed the distribution with compress instead of gzip.
- Less strong error checking in signal handling.
- Runs with AIX 3.x now (BIG_ENDIAN = 1, -DAIX3).
|