Hi!
I have Altirra Basic mostly running and working. Unfortunately I'm a little dubious about it. Atari Basic turns out to be more different to Microsoft Basic than I was thinking; for example, it wants all-uppercase programs (including variable names, apparently?). More worrying is that the floating point support just delegates to the Atari ROM. There's an open source clone of that from the same author, which works, but apparenly Atari floating point is done with BCD and only supports six significant figures!
Yes, most Atari languages use the math-pack in ROM. The format is BCD, with up to 10 significant digits, but with a base 100 exponent. This means that numbers from 1 to 99 will all have up to 8 decimal places.
Also, most Atari languages call to the OS for the graphics support, so they all have "GRAPHICS", "PLOT" and "DRAWTO" statements "for free".
But, you will hit another problem: Strings in Atari BASIC are very different from MS Basic strings, they must be allocated (with DIM) before use, to a specific maximum number of digits. Also, there are no string arrays in the language.
This last is a problem with anything from the Atari world, as writing floating point libraries is painful and nobody wants to do it. FastBasic does the same thing. This also affects Paul Robson's Basic, which seems to have no floating point support at all currently (it's just stubbed out).
I'm the author of FastBasic - it is intended as the most capable and fast BASIC interpreter available for the Atari 8-bit computers in under 8kB - so my priorities are size, then speed, then support for making great games
FastBasic compiles the source code to a stack-based bytecode, executed with an indirect threaded interpreter. The compiler is also an interpreter from a PEG grammar, that generates code directly from the parsing.
Initially, FastBasic was integer only, and this is noticeable as all the variables are integer by default, you must use the "%" suffix to define floating-point variables. But this is a good thing for porting, as to change the floating-point format you only need to touch very few parts of the interpreter, and you can port the integer version without needing to touch the rest.
FastBasic string support is also different than Atari BASIC and also MS Basic: in FastBasic, all strings are "pascal strings", of up to 255 bytes of length, with the first byte in memory storing the actual length. FastBasic supports string arrays, and all the uninitialized strings do not use any memory (they are stored as null pointers).
In your message above, you said that the FastBasic build process was complex - this is because the integrated full-screen editor is also written in FastBasic, so you need a compiler to build the complete package

If you omit the editor, you could build the compiler and interpreter without the need of the cross-compiler. Also, FastBasic includes a complete test-suite using an included command line simulator, this ensures that changes don't introduce new bugs!
I can help you in adapting FastBasic to CM/M-65, would be a fun project, but you will need to remove or rework a large portion of the statements:
- Graphics, Plot and Dwawto could be implemented for "generic" framebuffers (see the Atari 5200 port at
https://github.com/dmsc/fastbasic/tree/ ... terp/a5200 , this re-implements those).
- Player/Missile (Atari "sprites") support is very hardware specific.
- DLI (Atari raster interrupts) support is also hardware specific (it basically generates the interrupt code on compilation)
- Sound is also hardware specific.
- Pause and Time must be implemented for each possible target.
- All I/O must be converted to CP/M - Atari I/O uses "channels" (a number from 0 to 7), with channel 0 the standard input/output (normally to console), with OPEN/PUT/GET and SPECIAL operations over those.
Porting the Editor requieres that the screen output has "cursor movement" and some control characters, clear-screen and scroll region, and it also hooks on the "break key interrupt" to allow stopping the running program. But as I said, you can initially only port the command line compiler and use an external editor.
The FastBasic cross-compiler supports "targets", it currently can compile for the Atari 8-bit computers (as an executable or cartridge image, and with or without floating-point) and the Atari 5200 game console.
Well, enough advertising for now
Have Fun!