With an entire epic of refactoring under our belt, AntForth is lean and mean! It’s time to focus on adding some new functionality. Here’s what I want to add in Phase 2:

  • Add the ability to prefix hex numeric literals with $ and binary numeric literals with %, so that we can input numbers in those bases without changing BASE, which is tedious. These prefixes aren’t in the ANS Forth standard, but they are in the ANS Forth 2012 proposal, so this seems like a good way to go. I’m also adding a 0x prefix for hex, because I find that more convenient.

  • Fix the remaining ANS Forth Core gaps. This is roughly:

    • Double precision arithmetic
    • “Picture” number formatting
    • any other missing words
  • Exception handling
  • Multiple vocabularies, custom search order etc
  • CP/M file access, & demand-loaded assembler

In the interests of keeping the interpreter small, we will leverage two key new abilities (multiple voacbularies, CP/M file support) to move the built-in assembler out to an external ASSEMBLER.FTH file that will be automatically loaded whenever the CODE word is invoked. Since the assembler is the single largest builtin component currently, this should provide plenty of space for new features, without losing any functionality. Having to have a separate ASSEMBLER.FTH file accessible is a minor inconvenience, but hopefully it’s worth it. I hope it is joined in the future by other libraries and optional components.

Planning

I used the retro at the end of the refactoring epic as an opportunity to discuss with the team the broad strokes of what I wanted to achieve in the next phase.

As far as BMAD is concerned, MVP is done so the existing PRD and architecture documents are defunct - we need to create new ones. We do this in the familiar way, bmad-create-prd followed by bmad-create-architecture. BMAD is smart enough to realise what’s happening for both of these, and offers to archive the old documents before creating fresh ones.

We follow this up with a /bmad-bmm-create-epics-and-stories and mid-way (after it has created the epics but before it dives into the stories) I call a “party mode” discussion to check for any howlers.

While developing the stories for aprint 12 it became clear that the LLM was weaseling out of porting all the current assembler functionality to a separate Forth file and planned to leave anything tricky behind - so I nipped that in the bud.

Finally /bmad-bmm-sprint-planning gets our sprint-status.yml all ship-shape, and we’re finally ready to begin new development.