Merge pull request #70 from philburk/ignoreds
[pforth] / csrc / pf_inner.c
index 10041ba..1446356 100644 (file)
@@ -49,6 +49,7 @@
 #define M_DUP    PUSH_TOS;
 #define M_DROP   { TOS = M_POP; }
 
 #define M_DUP    PUSH_TOS;
 #define M_DROP   { TOS = M_POP; }
 
+#define ASCII_EOT   (0x04)
 
 /***************************************************************
 ** Macros for Floating Point stack access.
 
 /***************************************************************
 ** 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) )
 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
 }
 
 /* Return TRUE if the unsigned double cell integer LO/HI is not greater
@@ -207,12 +208,12 @@ 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) )
 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(cell_t fam );
-static const char *pfSelectFileModeOpen(cell_t fam );
+static const char *pfSelectFileModeCreate( cell_t fam );
+static const char *pfSelectFileModeOpen( cell_t fam );
 
 /**************************************************************/
 static const char *pfSelectFileModeCreate( cell_t fam )
 
 /**************************************************************/
 static const char *pfSelectFileModeCreate( cell_t fam )
@@ -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();
         case ID_KEY:
             PUSH_TOS;
             TOS = ioKey();
+            if (TOS == ASCII_EOT) {
+                M_THROW(THROW_BYE);
+            }
             endcase;
 
 #ifndef PF_NO_SHELL
             endcase;
 
 #ifndef PF_NO_SHELL