dykstrom / basic-mode

Emacs major mode for editing BASIC code
GNU General Public License v3.0
7 stars 10 forks source link

20 support dialects of basic #30

Closed dykstrom closed 1 year ago

dykstrom commented 1 year ago

This PR introduces derived modes as a way to support different BASIC dialects.

Closes #10 Closes #20

hackerb9 commented 1 year ago

Looking good. I'm making some changes to M100 mode and adding a CoCo mode.

It turns out, the BASIC in the TRS-80 Model 100 is not actually descended from the TRS-80 Model I/III. In fact, it appears to be somewhere between Microsoft's CPM BASIC (MBASIC) and the BASIC that came with the IBM PC (BASICA). I have the manual for IBM BASIC 3.0, so I should be able to add basic-ibmpc-mode and have them inherit properly.

By the way, in the early 80s Microsoft had three variants of their PC BASIC: Cassette (in ROM), Disk, and Advanced. I do not think they need to be targeted separately as each is a superset of the previous one.

hackerb9 commented 1 year ago

I haven't experienced anything terribly wrong with this branch, so I think it can be merged as is.

I did notice something that can be fixed now or later. I believe that some of the new basic reserved words, while a good idea for the default mode, maybe are not such a good idea for the essential core which submodes inherit from. I suggest that these keywords not be in that core:

functions: cdbl, cint, command$, fix, hex$, log10, oct$, l/rtrim$,space$, timer, l/ucase$, usr.

builtins: beep, eqv, imp, line, mat, tron, troff

keywords: call, defdbl, defint, deflng, defsng, defstr, elseif, loop, randomize, repeat, sub, until, wend, while.

types: (remove all)