96 Line F# Emulator + 960 bytes of HP-35 Microcode

  [Part 3 of the HP Calc series] In this post, we’ll create a 96-line F# emulator for the HP-35 calculator with which we’ll run the 960 byte (!) ROM image. As you may well know, I am a calculator freak. The 40-year-old HP-35 is an especially wonderful device; being the world’s first scientific pocket calculator….

3

Meta-Circular Chicken and Egg

[The tenth in a series of posts on the evolution of TransForth]  This post may not quite be deserving of a wizard’s cape and 2001 Space Odyssey background music as when Sussman writes out Lisp in Lisp (at 34:34 – my absolute favorite SICP lecture by the way), but still… we are about to finish…

0

Spanning Two Worlds

[The ninth in a series of posts on the evolution of TransForth] The dictionary we have at the moment is split across two worlds. The definitions are in Forth-world; packed into plain memory. But we still have the F#-world mapping of WordRecords to those memory locations. let mutable dict = [] type WordRecord = {…

0

Heart Transplant

[The eighth in a series of posts on the evolution of TransForth]   They say that the inner interpreter is the heart of Forth and outer interpreter is the soul. It’s time to give TransForth a heart transplant! To really understand what we’re doing here, I’d suggest watching my video demonstration below (perhaps the first bit…

0

Tearing Away the Scaffolding

[The seventh in a series of posts on the evolution of TransForth] At this point we have a reasonably complete Forth that’s pretty fun to play with. Like I said in the first post though, we don’t just want to build a Forth in F#. Stopping here wouldn’t be in keeping with “Forth Tradition” which…

2

: LOOPTY DO I . LOOP ;

[The sixth in a series of posts on the evolution of TransForth] There’s beginning to be more Forth than F# in these posts! The last major piece we’re missing in the language, aside from some compile-time trickery we’ll get into later, is the standard Forth looping constructs. We’re just about done with the whole core language!…

3

IF … ELSE … THEN

[The fifth in a series of posts on the evolution of TransForth]   Sadly (or happily), we’ve come to a point at which we need to begin thinking like an assembly programmer in order to appreciate the mechanics of Forth’s control flow words. We’ll start by implementing IF … ELSE … THEN in this post…

0

VARIABLE X

[The fourth in a series of posts on the evolution of TransForth] We’re getting very close to the point at which we’ll need to start moving closer to the machine with things like direct memory access. Implementing IF/ELSE/THEN, which we’ll do in the next post, will practically require it.   Let’s see if we can stretch…

0

: REFACTOR TRIM BUILD ;

[The third in a series of posts on the evolution of TransForth] Now that we have Forth hobbling along, we can start to peel away the scaffolding. Some of the things we’ve defined in F# can now be redefined in Forth instead. As we go along, I think you’ll be amazed by just how little…

2

: HELLO FORTH WORLD ;

[The second in a series of posts on the evolution of TransForth] In the last post we completed the tokenizer/parser and the REPL along with some baked in primitives. We now want to be able to add to the dictionary of known words from within Forth itself; to build secondary new words that are essentially as…

0