version 1.2, 1994/07/08 15:00:37
|
version 1.12, 1997/02/08 22:58:09
|
Line 1
|
Line 1
|
\ ERRORE.FS English error strings 9may93jaw |
\ ERRORE.FS English error strings 9may93jaw |
|
|
|
\ Copyright (C) 1995 Free Software Foundation, Inc. |
|
|
|
\ This file is part of Gforth. |
|
|
|
\ Gforth is free software; you can redistribute it and/or |
|
\ modify it under the terms of the GNU General Public License |
|
\ as published by the Free Software Foundation; either version 2 |
|
\ of the License, or (at your option) any later version. |
|
|
|
\ This program is distributed in the hope that it will be useful, |
|
\ but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
\ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
\ GNU General Public License for more details. |
|
|
|
\ You should have received a copy of the GNU General Public License |
|
\ along with this program; if not, write to the Free Software |
|
\ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
|
|
|
|
\ The errors are defined by a linked list, for easy adding |
\ The errors are defined by a linked list, for easy adding |
\ and deleting. Speed is not neccassary at this point. |
\ and deleting. Speed is not neccassary at this point. |
|
|
AVARIABLE ErrLink \ Linked list entry point |
AVARIABLE ErrLink \ Linked list entry point |
0 ErrLink ! |
NIL ErrLink ! |
|
|
: ERR" ( n -- ) |
|
ErrLink linked |
|
, |
|
[char] " word count |
|
dup c, here over chars allot swap move align ; |
|
|
|
decimal |
decimal |
|
|
-1 ERR" Aborted" |
\ error numbers between -256 and -511 represent signals |
ErrLink @ unlock reloff lock \ make sure that the terminating 0 is not relocated |
\ signals are handled with strsignal |
-3 ERR" Stack overflow" -4 ERR" Stack underflow" |
\ but some signals produce throw-codes > -256, e.g., -28 |
-5 ERR" Return stack overflow" -6 ERR" Return stack undeflow" |
|
-7 ERR" Do-loops nested too deeply" -8 ERR" Dictionary overflow" |
\ error numbers between -512 and -2047 are for OS errors and are |
-9 ERR" Invalid memory address" -10 ERR" Division by zero" |
\ handled with strerror |
-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 ( n -- ) |
: .error ( n -- ) |
cr ." Error: " |
cr ." Error: " |
ErrLink |
ErrLink |
BEGIN @ dup |
BEGIN @ dup |
WHILE |
WHILE |
2dup cell+ @ = |
2dup cell+ @ = |
IF 2 cells + count type drop exit THEN |
IF 2 cells + count type drop exit THEN |
REPEAT |
REPEAT |
drop . ; |
drop |
|
[ has-os [IF] ] |
|
dup -511 -255 within |
|
IF |
|
256 + negate strsignal type exit |
|
THEN |
|
dup -2047 -511 within |
|
IF |
|
512 + negate strerror type exit |
|
THEN |
|
[ [THEN] ] |
|
. ; |
|
|