0,0 → 1,34 |
( Îáðàáîòêà îøèáîê. |
Copyright [C] 1992-1999 A.Cherezov ac@forth.org |
Ðåâèçèÿ: Cåíòÿáðü 1999 |
) |
|
VECT ERROR \ îáðàáîò÷èê îøèáîê (ABORT) |
VECT (ABORT") |
|
: (ABORT1") ( flag c-addr -- ) |
SWAP IF COUNT ER-U ! ER-A ! -2 THROW ELSE DROP THEN |
; |
|
CREATE ERRTIB C/L 1+ ALLOT |
CREATE ERRFILE C/L 1+ ALLOT |
VARIABLE ER>IN |
VARIABLE SAVEERR? |
VARIABLE >IN_WORD |
|
: SAVEERR |
DUP SAVEERR? @ AND |
IF SOURCE ERRTIB $! >IN_WORD @ ER>IN ! SAVEERR? OFF |
SOURCE-ID 999 HERE WITHIN |
IF SOURCE-ID .NAME ZCOUNT C/L UMIN ERRFILE $! |
THEN |
THEN ; |
|
: ERROR_DO |
SAVEERR |
CR ERRFILE COUNT TYPE |
CR ERRTIB COUNT TYPE |
CR ER>IN @ BEGIN SPACE 1- DUP 0 MAX 0= UNTIL ." ^" DROP |
CR ." ERR=" . |
CR S0 @ SP! STATE 0! |
; |