Annotation of gforth/errore.fs, revision 1.6

1.1       anton       1: \ ERRORE.FS English error strings                      9may93jaw
                      2: 
                      3: \ The errors are defined by a linked list, for easy adding
                      4: \ and deleting. Speed is not neccassary at this point.
                      5: 
                      6: AVARIABLE ErrLink              \ Linked list entry point
                      7: 0 ErrLink !
                      8: 
                      9: : ERR" ( n -- )
                     10:        ErrLink linked
                     11:        ,
                     12:        [char] " word count
1.3       anton      13:        string, align ;
1.1       anton      14: 
                     15: decimal
                     16: 
                     17: -1 ERR" Aborted"
1.2       anton      18: ErrLink @ unlock reloff lock \ make sure that the terminating 0 is not relocated
1.1       anton      19: -3 ERR" Stack overflow"                 -4 ERR" Stack underflow"
                     20: -5 ERR" Return stack overflow"          -6 ERR" Return stack undeflow"
                     21: -7 ERR" Do-loops nested too deeply"     -8 ERR" Dictionary overflow"
                     22: -9 ERR" Invalid memory address"         -10 ERR" Division by zero"
                     23: -11 ERR" Result out of range"           -12 ERR" Argument type mismatch"
                     24: -13 ERR" Undefined word"                -14 ERR" Interpreting a compile-only word"
                     25: -15 ERR" Invalid FORGET"                -16 ERR" Attempt to use zero-length string as a name"
                     26: -17 ERR" Pictured numeric ouput string overflow"
                     27: -18 ERR" Parsed string overflow"        -19 ERR" Word name too long"
                     28: -20 ERR" Write to a read-only location" -21 ERR" Unsupported operation"
                     29: -22 ERR" Control structure mismatch"    -23 ERR" Address alignment exception"
                     30: -24 ERR" Invalid numeric argument"      -25 ERR" Return stack imbalance"
                     31: -26 ERR" Loop parameters unavailable"   -27 ERR" Invalid recursion"
                     32: -28 ERR" User interupt"                 -29 ERR" Compiler nesting"
                     33: -30 ERR" Obsolescent feature"           -31 ERR" >BODY used on non-CREATEd definition"
                     34: -32 ERR" Invalid name argument"         -33 ERR" Block read exception"
                     35: -34 ERR" Block write exception"         -35 ERR" Invalid block number"
                     36: -36 ERR" Invalid file position"         -37 ERR" File I/O exception"
                     37: -38 ERR" Non-existent file"             -39 ERR" Unexpected end of file"
                     38: -40 ERR" Invalid BASE for floating point conversion"
                     39: -41 ERR" Loss of precision"             -42 ERR" Floating-point divide by zero"
                     40: -43 ERR" Floating-point result out of range"
                     41: -44 ERR" Floating-point stack overflow" -45 ERR" Floating-point stack underflow"
                     42: -46 ERR" Floating-point invalid argument"
                     43: -47 ERR" Compilation word list deleted" -48 ERR" invalid POSTPONE"
                     44: -49 ERR" Search-order overflow"         -50 ERR" Search-order underflow"
                     45: -51 ERR" Compilation word list changed" -52 ERR" Control-flow stack overflow"
                     46: -53 ERR" Exception stack overflow"      -54 ERR" Floating-point underflow"
                     47: -55 ERR" Floating-point unidentified fault"
                     48: -56 ERR" QUIT"                          -57 ERR" Error in sending or receiving a character"
                     49: -58 ERR" [IF], [ELSE], [THEN] error"
1.6     ! anton      50: 
        !            51: \ signals are handled with strsignal
        !            52: \ but some signals produce throw-codes > -256, e.g., -28
        !            53: \ signals: ( We list them all, except those already present, just in case )
        !            54: \ -256 ERR" Hangup signal"
        !            55: \ -257 ERR" Quit signal"
        !            56: \ -258 ERR" Illegal Instruction"
        !            57: \ -259 ERR" Trace Trap"
        !            58: \ -260 ERR" IOT instruction"
        !            59: \ -261 ERR" EMT instruction" \ abort() call?
        !            60: \ -262 ERR" Kill signal" \ cannot be caught but so what
        !            61: \ -263 ERR" Bad arg to system call"
        !            62: \ -264 ERR" Broken pipe"
        !            63: \ -265 ERR" Alarm signal"
        !            64: \ -266 ERR" Terminate signal"
        !            65: \ -267 ERR" User signal 1"
        !            66: \ -268 ERR" User signal 2"
1.4       anton      67: \ error numbers between -512 and -2047 are for OS errors and are
                     68: \ handled with strerror
1.1       anton      69: 
                     70: : .error ( n -- )
1.4       anton      71:     cr ." Error: "
                     72:     ErrLink
                     73:     BEGIN @ dup
                     74:     WHILE
                     75:        2dup cell+ @ =
                     76:        IF 2 cells + count type drop exit THEN
                     77:     REPEAT
                     78:     drop
1.6     ! anton      79:     dup -511 -255 within
        !            80:     IF
        !            81:        256 + negate strsignal type exit
        !            82:     THEN
1.5       anton      83:     dup -2047 -511 within
1.4       anton      84:     IF
                     85:        512 + negate strerror type exit
                     86:     THEN
                     87:     . ;
1.1       anton      88: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>