X-Git-Url: http://git.subgeniuskitty.com/pforth/.git/blobdiff_plain/7e736678ce1c4cdcb2be160541b633b7d08ee5c9..7d169e32d0619ecf128abe042ec5ef6a2655e1a1:/csrc/pf_inner.c diff --git a/csrc/pf_inner.c b/csrc/pf_inner.c index dffadf0..1446356 100644 --- a/csrc/pf_inner.c +++ b/csrc/pf_inner.c @@ -49,6 +49,7 @@ #define M_DUP PUSH_TOS; #define M_DROP { TOS = M_POP; } +#define ASCII_EOT (0x04) /*************************************************************** ** Macros for Floating Point stack access. @@ -197,8 +198,8 @@ static void TraceNames( ExecToken Token, cell_t Level ) 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 @@ -207,15 +208,15 @@ static uint64_t UdToUint64( ucell_t Lo, ucell_t Hi ) 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 ) @@ -240,7 +241,7 @@ static const char *pfSelectFileModeCreate( int fam ) } /**************************************************************/ -static const char *pfSelectFileModeOpen( int fam ) +static const char *pfSelectFileModeOpen( cell_t fam ) { const char *famText = NULL; switch( fam ) @@ -269,7 +270,7 @@ static const char *pfSelectFileModeOpen( int fam ) } /**************************************************************/ -int pfCatch( ExecToken XT ) +ThrowCode pfCatch( ExecToken XT ) { register cell_t TopOfStack; /* Cache for faster execution. */ register cell_t *DataStackPtr; @@ -1089,7 +1090,7 @@ DBUG(("XX ah,m,l = 0x%8x,%8x,%8x - qh,l = 0x%8x,%8x\n", ah,am,al, qh,ql )); TOS = -3; /* TODO err num? */ break; } - offset = offsetLow; + offset = (file_offset_t)offsetLow; TOS = sdSeekFile( FileID, offset, PF_SEEK_SET ); } endcase; @@ -1264,6 +1265,9 @@ DBUG(("XX ah,m,l = 0x%8x,%8x,%8x - qh,l = 0x%8x,%8x\n", ah,am,al, qh,ql )); case ID_KEY: PUSH_TOS; TOS = ioKey(); + if (TOS == ASCII_EOT) { + M_THROW(THROW_BYE); + } endcase; #ifndef PF_NO_SHELL