X-Git-Url: http://git.subgeniuskitty.com/pforth/.git/blobdiff_plain/46fcda16ac30c5555e21d11ea8e2089c657bf1d6..c144b1fd70936b7807820faf924adca93a890516:/csrc/pfcompil.c diff --git a/csrc/pfcompil.c b/csrc/pfcompil.c index 04bc000..01574df 100644 --- a/csrc/pfcompil.c +++ b/csrc/pfcompil.c @@ -258,6 +258,9 @@ PForthDictionary pfBuildDictionary( cell_t HeaderSize, cell_t CodeSize ) CreateDicEntryC( ID_FILE_WRITE, "WRITE-FILE", 0 ); CreateDicEntryC( ID_FILE_POSITION, "FILE-POSITION", 0 ); CreateDicEntryC( ID_FILE_REPOSITION, "REPOSITION-FILE", 0 ); + CreateDicEntryC( ID_FILE_FLUSH, "FLUSH-FILE", 0 ); + CreateDicEntryC( ID_FILE_RENAME, "(RENAME-FILE)", 0 ); + CreateDicEntryC( ID_FILE_RESIZE, "(RESIZE-FILE)", 0 ); CreateDicEntryC( ID_FILE_RO, "R/O", 0 ); CreateDicEntryC( ID_FILE_RW, "R/W", 0 ); CreateDicEntryC( ID_FILE_WO, "W/O", 0 ); @@ -343,6 +346,8 @@ PForthDictionary pfBuildDictionary( cell_t HeaderSize, cell_t CodeSize ) CreateDicEntryC( ID_SOURCE_ID, "SOURCE-ID", 0 ); CreateDicEntryC( ID_SOURCE_ID_PUSH, "PUSH-SOURCE-ID", 0 ); CreateDicEntryC( ID_SOURCE_ID_POP, "POP-SOURCE-ID", 0 ); + CreateDicEntryC( ID_SOURCE_LINE_NUMBER_FETCH, "SOURCE-LINE-NUMBER@", 0 ); + CreateDicEntryC( ID_SOURCE_LINE_NUMBER_STORE, "SOURCE-LINE-NUMBER!", 0 ); CreateDicEntryC( ID_SWAP, "SWAP", 0 ); CreateDicEntryC( ID_TEST1, "TEST1", 0 ); CreateDicEntryC( ID_TEST2, "TEST2", 0 ); @@ -831,7 +836,7 @@ ThrowCode ffInterpret( void ) { pfDebugMessage("ffInterpret: calling ffWord(()\n"); - theWord = ffWord( BLANK ); + theWord = ffLWord( BLANK ); DBUG(("ffInterpret: theWord = 0x%x, Len = %d\n", theWord, *theWord )); if( *theWord > 0 ) @@ -976,7 +981,7 @@ ThrowCode ffIncludeFile( FileStream *InputFile ) ***************************************************************/ Err ffPushInputStream( FileStream *InputFile ) { - cell_t Result = 0; + Err Result = 0; IncludeFrame *inf; /* Push current input state onto special include stack. */ @@ -1151,9 +1156,14 @@ cell_t ffRefill( void ) if( gCurrentTask->td_InputStream == PF_STDIN ) { /* ACCEPT is deferred so we call it through the dictionary. */ + ThrowCode throwCode; PUSH_DATA_STACK( gCurrentTask->td_SourcePtr ); PUSH_DATA_STACK( TIB_SIZE ); - pfCatch( gAcceptP_XT ); + throwCode = pfCatch( gAcceptP_XT ); + if (throwCode) { + Result = throwCode; + goto error; + } Num = POP_DATA_STACK; if( Num < 0 ) {