Good morning Michael,
Happy Thanksgiving weekend.
John and I have recently discussed the direction of travel of MINT.
John wants to extend the language with new features, however as a hardware engineer, I want to reduce the primitive set, to something I can actually implement in hardware or on a typical 1970s 8-bit cpu.
We are actively talking on how best to manage this divergence.
I am reviewing the MINT instruction set, and deciding what are genuine primitives, and what are convenient constructs.
I wish to retain the essential primitives, such as ADD, SUB, AND, OR, XOR (plus 20 others) - which are easily implemented on any 8-bit cpu in assembly language.
The constructs, such as loops, arrays, switch statements, number base conversion and character input and output are not common instructions on most cpus - and we are looking to implement these using small routines composed of MINT primitives.
This will reduce the size of the MINT core, and thus simplify the task of porting to other processors.
This task is not without precedent, Charles Moore, (Novix NC4016) Dr. C.H. Ting (eForth) and James Bowman (J1 Forth CPU) all used a similar approach to build a full featured Forth on top of a CPU with a minimal instruction set. (MISC).
Over the next couple of months, using the current Z80 MINT implementation as the target, we hope to strip out the constructs, and leave a basic instruction set, which will then be easier to code into alternative targets.
This is an open discussion - so if you have any ideas to share, please feel free to proffer them.