#define M_DUP PUSH_TOS;
#define M_DROP { TOS = M_POP; }
+#define ASCII_EOT (0x04)
/***************************************************************
** Macros for Floating Point stack access.
static uint64_t UdToUint64( ucell_t Lo, ucell_t Hi )
{
return (( 2 * sizeof(ucell_t) == sizeof(uint64_t) )
- ? (((uint64_t)Lo) | (((uint64_t)Hi) >> (sizeof(ucell_t) * 8)))
- : Lo );
+ ? (((uint64_t)Lo) | (((uint64_t)Hi) >> (sizeof(ucell_t) * 8)))
+ : Lo);
}
/* Return TRUE if the unsigned double cell integer LO/HI is not greater
static int UdIsUint64( ucell_t Lo, ucell_t Hi )
{
return (( 2 * sizeof(ucell_t) == sizeof(uint64_t) )
- ? TRUE
- : Hi == 0 );
+ ? TRUE
+ : Hi == 0);
}
-static const char *pfSelectFileModeCreate( int fam );
-static const char *pfSelectFileModeOpen( int fam );
+static const char *pfSelectFileModeCreate( cell_t fam );
+static const char *pfSelectFileModeOpen( cell_t fam );
/**************************************************************/
-static const char *pfSelectFileModeCreate( int fam )
+static const char *pfSelectFileModeCreate( cell_t fam )
{
const char *famText = NULL;
switch( fam )
}
/**************************************************************/
-static const char *pfSelectFileModeOpen( int fam )
+static const char *pfSelectFileModeOpen( cell_t fam )
{
const char *famText = NULL;
switch( fam )
}
/**************************************************************/
-int pfCatch( ExecToken XT )
+ThrowCode pfCatch( ExecToken XT )
{
register cell_t TopOfStack; /* Cache for faster execution. */
register cell_t *DataStackPtr;
endcase;
case ID_BYE:
+ EMIT_CR;
M_THROW( THROW_BYE );
endcase;
TOS = -3; /* TODO err num? */
break;
}
- offset = offsetLow;
+ offset = (file_offset_t)offsetLow;
TOS = sdSeekFile( FileID, offset, PF_SEEK_SET );
}
endcase;
case ID_KEY:
PUSH_TOS;
TOS = ioKey();
+ if (TOS == ASCII_EOT) {
+ M_THROW(THROW_BYE);
+ }
endcase;
#ifndef PF_NO_SHELL