gVarEcho = 0; /* Echo input. */\r
gVarTraceLevel = 0; /* Trace Level for Inner Interpreter. */\r
gVarTraceFlags = 0; /* Enable various internal debug messages. */\r
- gVarQuiet = 0; /* Suppress unnecessary messages, OK, etc. */\r
gVarReturnCode = 0; /* Returned to caller of Forth, eg. UNIX shell. */\r
gIncludeIndex = 0;\r
\r
* to (ucell_t) on 16 bit systems.\r
*/\r
#define DIC_ALIGNMENT_SIZE ((ucell_t)(0x10))\r
-#define DIC_ALIGN(addr) ((uint8_t *)((((ucell_t)(addr)) + DIC_ALIGNMENT_SIZE - 1) & ~(DIC_ALIGNMENT_SIZE - 1)))\r
+#define DIC_ALIGN(addr) ((((ucell_t)(addr)) + DIC_ALIGNMENT_SIZE - 1) & ~(DIC_ALIGNMENT_SIZE - 1))\r
\r
/* Allocate memory for header. */\r
if( HeaderSize > 0 )\r
{\r
- dic->dic_HeaderBaseUnaligned = ( uint8_t * ) pfAllocMem( (ucell_t) HeaderSize + DIC_ALIGNMENT_SIZE );\r
+ dic->dic_HeaderBaseUnaligned = (ucell_t) pfAllocMem( (ucell_t) HeaderSize + DIC_ALIGNMENT_SIZE );\r
if( !dic->dic_HeaderBaseUnaligned ) goto nomem;\r
/* Align header base. */\r
dic->dic_HeaderBase = DIC_ALIGN(dic->dic_HeaderBaseUnaligned);\r
- pfSetMemory( dic->dic_HeaderBase, 0xA5, (ucell_t) HeaderSize);\r
+ pfSetMemory( (char *) dic->dic_HeaderBase, 0xA5, (ucell_t) HeaderSize);\r
dic->dic_HeaderLimit = dic->dic_HeaderBase + HeaderSize;\r
dic->dic_HeaderPtr = dic->dic_HeaderBase;\r
}\r
else\r
{\r
- dic->dic_HeaderBase = NULL;\r
+ dic->dic_HeaderBase = 0;\r
}\r
\r
/* Allocate memory for code. */\r
- dic->dic_CodeBaseUnaligned = ( uint8_t * ) pfAllocMem( (ucell_t) CodeSize + DIC_ALIGNMENT_SIZE );\r
+ dic->dic_CodeBaseUnaligned = (ucell_t) pfAllocMem( (ucell_t) CodeSize + DIC_ALIGNMENT_SIZE );\r
if( !dic->dic_CodeBaseUnaligned ) goto nomem;\r
dic->dic_CodeBase = DIC_ALIGN(dic->dic_CodeBaseUnaligned);\r
- pfSetMemory( dic->dic_CodeBase, 0x5A, (ucell_t) CodeSize);\r
+ pfSetMemory( (char *) dic->dic_CodeBase, 0x5A, (ucell_t) CodeSize);\r
\r
dic->dic_CodeLimit = dic->dic_CodeBase + CodeSize;\r
- dic->dic_CodePtr.Byte = dic->dic_CodeBase + QUADUP(NUM_PRIMITIVES); \r
+ dic->dic_CodePtr.Byte = ((uint8_t *) (dic->dic_CodeBase + QUADUP(NUM_PRIMITIVES))); \r
\r
return (PForthDictionary) dic;\r
nomem:\r
pfCopyMemory( &buffer[4], &FileName[len-numChars], numChars+1 );\r
CreateDicEntryC( ID_NOOP, buffer, 0 );\r
\r
- Result = ffIncludeFile( fid );\r
+ Result = ffIncludeFile( fid ); /* Also close the file. */\r
\r
/* Create a dictionary word named ;;;; for FILE? */\r
CreateDicEntryC( ID_NOOP, ";;;;", 0 );\r
\r
- sdCloseFile(fid);\r
return Result;\r
}\r
\r
{\r
pfSetCurrentTask( cftd );\r
\r
- if( !pfQueryQuiet() )\r
+ if( !gVarQuiet )\r
{\r
MSG( "PForth V"PFORTH_VERSION );\r
if( IsHostLittleEndian() ) MSG("-LE");\r
}\r
}\r
if( dic == NULL ) goto error2;\r
- EMIT_CR;\r
-\r
+ \r
+ if( !gVarQuiet )\r
+ {\r
+ EMIT_CR;\r
+ }\r
+ \r
pfDebugMessage("pfDoForth: try AUTO.INIT\n");\r
Result = pfExecIfDefined("AUTO.INIT");\r
if( Result != 0 )\r
error2:\r
MSG("pfDoForth: Error occured.\n");\r
pfDeleteTask( cftd );\r
- // Terminate so we restore normal shell tty mode.\r
+ /* Terminate so we restore normal shell tty mode. */\r
pfTerm();\r
\r
#ifdef PF_USER_INIT\r
\r
return -1;\r
}\r
+\r
+\r
+#ifdef PF_UNIT_TEST\r
+cell_t pfUnitTest( void )\r
+{\r
+ cell_t numErrors = 0;\r
+ numErrors += pfUnitTestText();\r
+ return numErrors;\r
+}\r
+#endif\r