cell_t gDepthAtColon;\r
\r
/* Global Forth variables. */\r
-char *gVarContext; /* Points to last name field. */\r
+cell_t gVarContext; /* Points to last name field. */\r
cell_t gVarState; /* 1 if compiling. */\r
cell_t gVarBase; /* Numeric Base. */\r
cell_t gVarEcho; /* Echo input. */\r
gCurrentDictionary = NULL;\r
gNumPrimitives = 0;\r
gLocalCompiler_XT = 0;\r
- gVarContext = NULL; /* Points to last name field. */\r
+ gVarContext = (cell_t)NULL; /* Points to last name field. */\r
gVarState = 0; /* 1 if compiling. */\r
gVarEcho = 0; /* Echo input. */\r
gVarTraceLevel = 0; /* Trace Level for Inner Interpreter. */\r
cell_t pfExecIfDefined( const char *CString )\r
{\r
int result = 0;\r
- if( NAME_BASE != NULL)\r
+ if( NAME_BASE != (cell_t)NULL)\r
{\r
ExecToken XT;\r
if( ffFindC( CString, &XT ) )\r
dic->dic_HeaderBase = DIC_ALIGN(dic->dic_HeaderBaseUnaligned);\r
pfSetMemory( dic->dic_HeaderBase, 0xA5, (ucell_t) HeaderSize);\r
dic->dic_HeaderLimit = dic->dic_HeaderBase + HeaderSize;\r
- dic->dic_HeaderPtr.Byte = dic->dic_HeaderBase;\r
+ dic->dic_HeaderPtr = dic->dic_HeaderBase;\r
}\r
else\r
{\r
ucell_t dic_Flags;\r
/* Headers contain pointers to names and dictionary. */\r
\r
- uint8_t *dic_HeaderBaseUnaligned;\r
+ ucell_t dic_HeaderBaseUnaligned;\r
\r
- uint8_t *dic_HeaderBase;\r
- union\r
- {\r
- cell_t *Cell;\r
- uint8_t *Byte;\r
- } dic_HeaderPtr;\r
- uint8_t *dic_HeaderLimit;\r
+ ucell_t dic_HeaderBase;\r
+ ucell_t dic_HeaderPtr;\r
+ ucell_t dic_HeaderLimit;\r
/* Code segment contains tokenized code and data. */\r
\r
- uint8_t *dic_CodeBaseUnaligned;\r
+ ucell_t dic_CodeBaseUnaligned;\r
\r
- uint8_t *dic_CodeBase;\r
+ ucell_t dic_CodeBase;\r
union\r
{\r
cell_t *Cell;\r
uint8_t *Byte;\r
} dic_CodePtr;\r
- uint8_t *dic_CodeLimit;\r
+ ucell_t dic_CodeLimit;\r
} pfDictionary_t;\r
\r
/* Save state of include when nesting files. */\r
extern cell_t gDepthAtColon;\r
\r
/* Global variables. */\r
-extern char *gVarContext; /* Points to last name field. */\r
+extern cell_t gVarContext; /* Points to last name field. */\r
extern cell_t gVarState; /* 1 if compiling. */\r
extern cell_t gVarBase; /* Numeric Base. */\r
extern cell_t gVarEcho; /* Echo input from file. */\r
#if (defined(PF_BIG_ENDIAN_DIC) || defined(PF_LITTLE_ENDIAN_DIC))\r
if( IN_DICS( TOS ) )\r
{\r
- WRITE_CELL_DIC(TOS,M_POP);\r
+ WRITE_CELL_DIC((cell_t *)TOS,M_POP);\r
}\r
else\r
{\r
case ID_VAR_ECHO: DO_VAR(gVarEcho); endcase;\r
case ID_VAR_HEADERS_BASE: DO_VAR(gCurrentDictionary->dic_HeaderBase); endcase;\r
case ID_VAR_HEADERS_LIMIT: DO_VAR(gCurrentDictionary->dic_HeaderLimit); endcase;\r
- case ID_VAR_HEADERS_PTR: DO_VAR(gCurrentDictionary->dic_HeaderPtr.Cell); endcase;\r
+ case ID_VAR_HEADERS_PTR: DO_VAR(gCurrentDictionary->dic_HeaderPtr); endcase;\r
case ID_VAR_NUM_TIB: DO_VAR(gCurrentTask->td_SourceNum); endcase;\r
case ID_VAR_OUT: DO_VAR(gCurrentTask->td_OUT); endcase;\r
case ID_VAR_STATE: DO_VAR(gVarState); endcase;\r
#if (defined(PF_BIG_ENDIAN_DIC) || defined(PF_LITTLE_ENDIAN_DIC))\r
if( IN_DICS( TOS ) )\r
{\r
- TOS = (uint16_t) READ_SHORT_DIC((uint8_t *)TOS);\r
+ TOS = (uint16_t) READ_SHORT_DIC((uint16_t *)TOS);\r
}\r
else\r
{\r
#if (defined(PF_BIG_ENDIAN_DIC) || defined(PF_LITTLE_ENDIAN_DIC))\r
if( IN_DICS( TOS ) )\r
{\r
- WRITE_SHORT_DIC(TOS,M_POP);\r
+ WRITE_SHORT_DIC((uint16_t *)TOS,(uint16_t)M_POP);\r
}\r
else\r
{\r
uint32_t relativeHeaderPtr;\r
/* Development mode. */\r
SD.sd_RelContext = ABS_TO_NAMEREL(gVarContext);\r
- relativeHeaderPtr = ABS_TO_NAMEREL(gCurrentDictionary->dic_HeaderPtr.Byte);\r
+ relativeHeaderPtr = ABS_TO_NAMEREL(gCurrentDictionary->dic_HeaderPtr);\r
SD.sd_RelHeaderPtr = relativeHeaderPtr;\r
\r
/* How much real name space is there? */\r
if( sd->sd_NameSize > 0 )\r
{\r
gVarContext = (char *) NAMEREL_TO_ABS(sd->sd_RelContext); /* Restore context. */\r
- gCurrentDictionary->dic_HeaderPtr.Byte = (uint8_t *)\r
+ gCurrentDictionary->dic_HeaderPtr = (ucell_t)(uint8_t *)\r
NAMEREL_TO_ABS(sd->sd_RelHeaderPtr);\r
}\r
else\r
{\r
gVarContext = 0;\r
- gCurrentDictionary->dic_HeaderPtr.Byte = NULL;\r
+ gCurrentDictionary->dic_HeaderPtr = (ucell_t)NULL;\r
}\r
gCurrentDictionary->dic_CodePtr.Byte = (uint8_t *) CODEREL_TO_ABS(sd->sd_RelCodePtr);\r
gNumPrimitives = sd->sd_NumPrimitives; /* Must match compiled dictionary. */\r
if( NAME_BASE != NULL)\r
{\r
/* Setup name space. */\r
- dic->dic_HeaderPtr.Byte = (uint8_t *) NAMEREL_TO_ABS(HEADERPTR);\r
+ dic->dic_HeaderPtr = (ucell_t)(uint8_t *) NAMEREL_TO_ABS(HEADERPTR);\r
gVarContext = (char *) NAMEREL_TO_ABS(RELCONTEXT); /* Restore context. */\r
\r
/* Find special words in dictionary for global XTs. */\r
{\r
cfNameLinks *cfnl;\r
\r
- cfnl = (cfNameLinks *) gCurrentDictionary->dic_HeaderPtr.Byte;\r
+ cfnl = (cfNameLinks *) gCurrentDictionary->dic_HeaderPtr;\r
\r
/* Set link to previous header, if any. */\r
if( gVarContext )\r
WRITE_CELL_DIC( &cfnl->cfnl_ExecToken, XT );\r
\r
/* Advance Header Dictionary Pointer */\r
- gCurrentDictionary->dic_HeaderPtr.Byte += sizeof(cfNameLinks);\r
+ gCurrentDictionary->dic_HeaderPtr += sizeof(cfNameLinks);\r
\r
/* Laydown name. */\r
- gVarContext = (char *) gCurrentDictionary->dic_HeaderPtr.Byte;\r
- pfCopyMemory( gCurrentDictionary->dic_HeaderPtr.Byte, FName, (*FName)+1 );\r
- gCurrentDictionary->dic_HeaderPtr.Byte += (*FName)+1;\r
+ gVarContext = (char *) gCurrentDictionary->dic_HeaderPtr;\r
+ pfCopyMemory( (char *)gCurrentDictionary->dic_HeaderPtr, FName, (*FName)+1 );\r
+ gCurrentDictionary->dic_HeaderPtr += (*FName)+1;\r
\r
/* Set flags. */\r
- *gVarContext |= (char) Flags;\r
+ *(char*)gVarContext |= (char) Flags;\r
\r
/* Align to quad byte boundaries with zeroes. */\r
- while( ((ucell_t) gCurrentDictionary->dic_HeaderPtr.Byte) & UINT32_MASK )\r
+ while( gCurrentDictionary->dic_HeaderPtr & UINT32_MASK )\r
{\r
- *gCurrentDictionary->dic_HeaderPtr.Byte++ = 0;\r
+ *(char*)(gCurrentDictionary->dic_HeaderPtr++) = 0;\r
}\r
}\r
\r
static cell_t ffCheckDicRoom( void )\r
{\r
cell_t RoomLeft;\r
- RoomLeft = gCurrentDictionary->dic_HeaderLimit -\r
- gCurrentDictionary->dic_HeaderPtr.Byte;\r
+ RoomLeft = (char *)gCurrentDictionary->dic_HeaderLimit -\r
+ (char *)gCurrentDictionary->dic_HeaderPtr;\r
if( RoomLeft < DIC_SAFETY_MARGIN )\r
{\r
pfReportError("ffCheckDicRoom", PF_ERR_HEADER_ROOM);\r
return PF_ERR_HEADER_ROOM;\r
}\r
\r
- RoomLeft = gCurrentDictionary->dic_CodeLimit -\r
- gCurrentDictionary->dic_CodePtr.Byte;\r
+ RoomLeft = (char *)gCurrentDictionary->dic_CodeLimit -\r
+ (char *)gCurrentDictionary->dic_CodePtr.Byte;\r
if( RoomLeft < DIC_SAFETY_MARGIN )\r
{\r
pfReportError("ffCheckDicRoom", PF_ERR_CODE_ROOM);\r
/* Unsmudge the word to make it visible. */\r
void ffUnSmudge( void )\r
{\r
- *gVarContext &= ~FLAG_SMUDGE;\r
+ *(char*)gVarContext &= ~FLAG_SMUDGE;\r
}\r
\r
/* Implement ; */\r