Permalink
Switch branches/tags
Nothing to show
Commits on May 23, 2010
  1. Fixing up the assertion logic to be more clean. Yet to be added is a …

    rthelen committed May 23, 2010
    …special handler to call when the input stream is too short; i.e., incorrectly terminated.
  2. Removing global variables.

    rthelen committed May 23, 2010
Commits on May 22, 2010
  1. Deleted the forth word 1 which was incorrectly creating a new object …

    rthelen committed May 22, 2010
    …with value 1 every time it was used. Also fixed a bug in the sieve algorithm in which the stack was growing by one each time through the core loop. Ooops. :-) And, added a function zzz which can is called whenever a terminal error occurs. fbreak is modified to break on it instead of using a conditional break point (the latter is very slow).
  2. Added begin/while/repeat, 1+, and fixed if/then. Changed const to con…

    rthelen committed May 22, 2010
    …stant. Got the sieve of Eratosthenes up and running. And, increased the number of default objects to 10K.
Commits on May 20, 2010
  1. Fixing a number of bugs in the memory garbage collector. Basically, t…

    rthelen committed May 20, 2010
    …he code had reverse sense with respect to previously used objects. And, it had a bug in calculating the object number (within the block). Those two bugs are fixed and now running the garbage collector before every fobj_new() call works. As it should :-)
Commits on May 19, 2010
  1. Adding words to support holding objects temporarily during execution …

    rthelen committed May 19, 2010
    …to stave off lost objects when the allocator runs during C code.
  2. Adding a new forth test string that breaks the memory allocator. Work…

    rthelen committed May 19, 2010
    …ing to fix the memory allocator.
  3. Adding an I/O word: emit

    rthelen committed May 19, 2010
  4. Merged newly defined words into the regular word list after a success…

    rthelen committed May 19, 2010
    …ful compilation of a command line.
  5. Now do loops work :-)

    rthelen committed May 19, 2010
  6. Compiling words now works.

    rthelen committed May 19, 2010
Commits on May 18, 2010
  1. tyForth's biggest change to-date!!

    rthelen committed May 18, 2010
    The mechanism by which strings are executed has completely changed: they
    are compiled into a temporary word and then that word is executed!
    
    constants work in the three-step dosi-do manner that they do.  (See the
    source for comments on that process.)
    
    There's code that needs to be ripped out now that's no longer needed.  But,
    I'll take care of that soon enough.  I just want to commit this and push it
    out there to deal with later.
    
    This is a huge change.  Compiling words are present!  There are still bugs.
    But it's pretty good.
Commits on May 14, 2010
  1. Improving the memory manager by making object allocation a constant t…

    rthelen committed May 14, 2010
    …ime operation (unless garbage collection is necessary).
Commits on May 10, 2010
  1. Moved more of the header stuff out of forth.h into fcode.c which is t…

    rthelen committed May 10, 2010
    …he only place where it\'s necessary. Things are much closer to flight ready.
  2. Moving toward a unified word model where each word contains a pointer…

    rthelen committed May 10, 2010
    … to the name, code to execute and body. The One True Way.
Commits on May 4, 2010
Commits on May 3, 2010
  1. Several changes:

    rthelen committed May 3, 2010
    1) Parser is now significantly enhanced.  It can now execute code from an
       arbitrary string.  This is a big improvement.
    
    2) String functions are enhanced.
    
    3) There's now a hash function for all objects and a compare function for
       numbers and strings.  The hash will be used with a hash data structure
       inside the fhash_t data type.
    
    4) fnumber_t was promoted from a double to a long double.
Commits on Apr 28, 2010
  1. Adding some test code.

    rthelen committed Apr 28, 2010
  2. Dang. Hash tables had a bug where looking up a non-existent key would…

    rthelen committed Apr 28, 2010
    … cause a seg fault. Fixed.
  3. Adding the code to create a forth environment dictionary and add all …

    rthelen committed Apr 28, 2010
    …the fprimitive.c FWORD()s to it.
  4. Modifying the gen_fword_inc.pl script to generate header & c-source f…

    rthelen committed Apr 28, 2010
    …iles. We need the headers to handle the fact that the FWORD() routines are all defined/declared in fprimitives.c but those are needed in forth.c to add those words to the dictionary.
  5. Adding the tool which converts fprimitives into header references of …

    rthelen committed Apr 28, 2010
    …things that, at runtime, are to be added to the dictionary.
Commits on Apr 27, 2010
  1. Changing the keys & values hash code to use just one array instead of…

    rthelen committed Apr 27, 2010
    … two.
    
    It makes for tighter fobj_t definition (fhash_t was the largest object
    type).  And, it means there is only one memory allocation in the structure,
    not two parallel ones.
  2. GREAT! A big step forward with words. Now we have FWORDs which give us

    rthelen committed Apr 27, 2010
    leverage of the underlying Forth VM.  A little more infrastructure and
    we'll have docolon words.  Beyond that, we can start building important
    things like a bunch of code for a DTC in Forth.  Bwahahaha!
Commits on Apr 25, 2010
  1. Preparing the higher level functions by giving the base more girth. Now

    rthelen committed Apr 25, 2010
    there are primitives defined in one file.  I'll add more primitives quickly
    enough.  (Copying many of those primitives from the arm-sim forth
    implementation.)
  2. Changing fnum print routine.

    rthelen committed Apr 25, 2010
  3. Too close for missiles, switching to guns. Or, retain/release is too …

    rthelen committed Apr 25, 2010
    …hard;
    
    switching to garbage collection.
    
    This change introduces a simple garbage collector.  All of the
    retain/release/refcount code is tossed out.  The grabage collector could
    use some help to make it more efficient.  But, it should be fine for a
    wile.
    
    More test code is needed.  Also, slightly changed the print code to not
    always print out all the meta-information (object address, for example).
Commits on Apr 24, 2010
  1. Separated ftable so that it no longer has all 3 data structures in it:

    rthelen committed Apr 24, 2010
    stack, array, and hash.  Instead, there are now three separate files with
    each in it.  I'm not expecting to expose arrays and hashes to user
    programmers.  But, I'm trying to decide if I want to expose stacks.
  2. Fixing a bug in a switch statement that allowed fall-through in a cas…

    rthelen committed Apr 24, 2010
    …e where that was particularly bad.
Commits on Apr 22, 2010
  1. Adding support for store/fetch and lots of macros to simplify the tes…

    rthelen committed Apr 22, 2010
    …t code. There should be much more test code.
  2. Major clean up. Dumped felem_t and fstack_t data types. Instead, tabl…

    rthelen committed Apr 22, 2010
    …es are used as stacks (though, not terribly efficiently). And, now there is no error propogation. Routines simply fassert() to terminate execution or return the object in question. That simplifies the code significantly.
Commits on Apr 20, 2010
  1. Adding preliminary support for tables. Also added a bunch of new supp…

    rthelen committed Apr 20, 2010
    …ort routines. Centralized the processing for errors in various types.