X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=csrc%2Fpf_core.c;h=d5bd85fc3cc88079334212cc42321b2af049d521;hb=3c4c6950fd3a04bf6a23aab79777124372135d54;hp=73ab1ff53461354f71fb4e3c67e6f62001234b99;hpb=2d8c3ec4828a9a6502a3b81334e1b50294d26fcc;p=debian%2Fpforth diff --git a/csrc/pf_core.c b/csrc/pf_core.c index 73ab1ff..d5bd85f 100644 --- a/csrc/pf_core.c +++ b/csrc/pf_core.c @@ -7,14 +7,17 @@ ** Author: Phil Burk ** Copyright 1994 3DO, Phil Burk, Larry Polansky, David Rosenboom ** -** The pForth software code is dedicated to the public domain, -** and any third party may reproduce, distribute and modify -** the pForth software code or any derivative works thereof -** without any compensation or license. The pForth software -** code is provided on an "as is" basis without any warranty -** of any kind, including, without limitation, the implied -** warranties of merchantability and fitness for a particular -** purpose and their equivalents under the laws of any jurisdiction. +** Permission to use, copy, modify, and/or distribute this +** software for any purpose with or without fee is hereby granted. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL +** THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR +** CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING +** FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF +** CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +** OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ** **************************************************************** ** 940502 PLB Creation. @@ -52,11 +55,14 @@ ExecToken gAcceptP_XT; /* XT of ACCEPT */ /* Depth of data stack when colon called. */ cell_t gDepthAtColon; -/* Global Forth variables. */ +/* Global Forth variables. +* These must be initialized in pfInit below. +*/ cell_t gVarContext; /* Points to last name field. */ cell_t gVarState; /* 1 if compiling. */ cell_t gVarBase; /* Numeric Base. */ -cell_t gVarEcho; /* Echo input. */ +cell_t gVarByeCode; /* Echo input. */ +cell_t gVarEcho; /* Echo input. */ cell_t gVarTraceLevel; /* Trace Level for Inner Interpreter. */ cell_t gVarTraceStack; /* Dump Stack each time if true. */ cell_t gVarTraceFlags; /* Enable various internal debug messages. */ @@ -71,11 +77,16 @@ static void pfResetForthTask( void ); static void pfInit( void ); static void pfTerm( void ); -/* TODO move to pf_config.h header. */ #define DEFAULT_RETURN_DEPTH (512) #define DEFAULT_USER_DEPTH (512) -#define DEFAULT_HEADER_SIZE (120000) -#define DEFAULT_CODE_SIZE (300000) + +#ifndef PF_DEFAULT_HEADER_SIZE +#define PF_DEFAULT_HEADER_SIZE (120000) +#endif + +#ifndef PF_DEFAULT_CODE_SIZE +#define PF_DEFAULT_CODE_SIZE (300000) +#endif /* Initialize globals in a function to simplify loading on * embedded systems which may not support initialization of data section. @@ -89,7 +100,8 @@ static void pfInit( void ) gLocalCompiler_XT = 0; gVarContext = (cell_t)NULL; /* Points to last name field. */ gVarState = 0; /* 1 if compiling. */ - gVarEcho = 0; /* Echo input. */ + gVarByeCode = 0; /* BYE-CODE */ + gVarEcho = 0; /* Echo input. */ gVarTraceLevel = 0; /* Trace Level for Inner Interpreter. */ gVarTraceFlags = 0; /* Enable various internal debug messages. */ gVarReturnCode = 0; /* Returned to caller of Forth, eg. UNIX shell. */ @@ -486,7 +498,7 @@ ThrowCode pfDoForth( const char *DicFileName, const char *SourceName, cell_t IfI if( IfInit ) { pfDebugMessage("Build dictionary from scratch.\n"); - dic = pfBuildDictionary( DEFAULT_HEADER_SIZE, DEFAULT_CODE_SIZE ); + dic = pfBuildDictionary( PF_DEFAULT_HEADER_SIZE, PF_DEFAULT_CODE_SIZE ); } else #else @@ -564,7 +576,7 @@ ThrowCode pfDoForth( const char *DicFileName, const char *SourceName, cell_t IfI PF_USER_TERM; #endif - return Result; + return Result ? Result : gVarByeCode; error2: MSG("pfDoForth: Error occured.\n");