File:
[gforth] /
gforth /
Attic /
errore.fs
Revision
1.4:
download - view:
text,
annotated -
select for diffs
Thu Apr 6 16:56:10 1995 UTC (28 years, 11 months ago) by
anton
Branches:
MAIN
CVS tags:
HEAD
fixed bug in resize ("0 n resize" is now equivalent to "n allocate")
added primitives call-c and strerror
most primitives producing iors now produce error numbers derived from OS error
numbers (EAGAIN and its kin)
.error now prints OS error messages for OS-derived error numbers.
primitives working with ferror now call clearerr
added a bit of documentation to glocals.fs to satisfy TeX
added definition of CC to Makefile.in again
\ ERRORE.FS English error strings 9may93jaw
\ The errors are defined by a linked list, for easy adding
\ and deleting. Speed is not neccassary at this point.
AVARIABLE ErrLink \ Linked list entry point
0 ErrLink !
: ERR" ( n -- )
ErrLink linked
,
[char] " word count
string, align ;
decimal
-1 ERR" Aborted"
ErrLink @ unlock reloff lock \ make sure that the terminating 0 is not relocated
-3 ERR" Stack overflow" -4 ERR" Stack underflow"
-5 ERR" Return stack overflow" -6 ERR" Return stack undeflow"
-7 ERR" Do-loops nested too deeply" -8 ERR" Dictionary overflow"
-9 ERR" Invalid memory address" -10 ERR" Division by zero"
-11 ERR" Result out of range" -12 ERR" Argument type mismatch"
-13 ERR" Undefined word" -14 ERR" Interpreting a compile-only word"
-15 ERR" Invalid FORGET" -16 ERR" Attempt to use zero-length string as a name"
-17 ERR" Pictured numeric ouput string overflow"
-18 ERR" Parsed string overflow" -19 ERR" Word name too long"
-20 ERR" Write to a read-only location" -21 ERR" Unsupported operation"
-22 ERR" Control structure mismatch" -23 ERR" Address alignment exception"
-24 ERR" Invalid numeric argument" -25 ERR" Return stack imbalance"
-26 ERR" Loop parameters unavailable" -27 ERR" Invalid recursion"
-28 ERR" User interupt" -29 ERR" Compiler nesting"
-30 ERR" Obsolescent feature" -31 ERR" >BODY used on non-CREATEd definition"
-32 ERR" Invalid name argument" -33 ERR" Block read exception"
-34 ERR" Block write exception" -35 ERR" Invalid block number"
-36 ERR" Invalid file position" -37 ERR" File I/O exception"
-38 ERR" Non-existent file" -39 ERR" Unexpected end of file"
-40 ERR" Invalid BASE for floating point conversion"
-41 ERR" Loss of precision" -42 ERR" Floating-point divide by zero"
-43 ERR" Floating-point result out of range"
-44 ERR" Floating-point stack overflow" -45 ERR" Floating-point stack underflow"
-46 ERR" Floating-point invalid argument"
-47 ERR" Compilation word list deleted" -48 ERR" invalid POSTPONE"
-49 ERR" Search-order overflow" -50 ERR" Search-order underflow"
-51 ERR" Compilation word list changed" -52 ERR" Control-flow stack overflow"
-53 ERR" Exception stack overflow" -54 ERR" Floating-point underflow"
-55 ERR" Floating-point unidentified fault"
-56 ERR" QUIT" -57 ERR" Error in sending or receiving a character"
-58 ERR" [IF], [ELSE], [THEN] error"
\ signals: ( We list them all, execpt those already present, just in case )
-256 ERR" Hangup signal"
-257 ERR" Quit signal"
-258 ERR" Illegal Instruction"
-259 ERR" Trace Trap"
-260 ERR" IOT instruction"
-261 ERR" EMT instruction" \ abort() call?
-262 ERR" Kill signal" \ cannot be caught but so what
-263 ERR" Bad arg to system call"
-264 ERR" Broken pipe"
-265 ERR" Alarm signal"
-266 ERR" Terminate signal"
-267 ERR" User signal 1"
-268 ERR" User signal 2"
\ error numbers between -512 and -2047 are for OS errors and are
\ handled with strerror
: .error ( n -- )
cr ." Error: "
ErrLink
BEGIN @ dup
WHILE
2dup cell+ @ =
IF 2 cells + count type drop exit THEN
REPEAT
drop
dup -512 <= over -2048 > and
IF
512 + negate strerror type exit
THEN
. ;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>