Signetics 2650 is an obscure CPU that was the victem of corporate delays. Its quite different to Z80 and 6502, but had 7 registers and an integral stack so coudl run without any memory.
Anyhow the signetics 2650 advert showed a cool dev board and I wondered if we could get a Tiny BASIC running for it
Yes we can! (probably) - several different versions. See Github Page for source.
pBASIC2650 - bare minimum, fits in 1300 bytes
uBASIC2650 - Feature complete Tiny BASIC that fits in 2kbytes
4kBASIC2650 - tokenized Tiny BASIC for speed
miniBASIC2650 - 32bit floating point Tiny BASIC with Trig and EXP/LN functions
A crazy thought occurred to me. Since the 2650's architecture derives from the IBM 1130 mainframe, I wonder whether your BASICs could be ported to a SIMH 1130. That would be an even older CPU to run BASIC. I first learnt programming in FORTRAN on a 1130, which is why I remember that number. Sorry, not volunteering.
Of course in those days I didn't know anything about CPU architecture, I had only a FORTRAN programmer's view of computing. I do have a Docker instance of a SIMH 1130, but since I lost all my card decks and printouts a lifetime ago, I don't have any of my first attempts at programming to run on it.
Thanks for reviving memories of this MCU chip from history. I saw its ads in electronic magazines. It was one of several I had an eye on. Pity it never gained traction. Good luck finding a chip, I see they are commanding collector prices. 😳 Eventually my first micro was the 6502 on a KIM-1.
Unfortunately or maybe fortunately I don't have a candidate for the current competition. I don't have a closet or den with retro machines. Don't remember what happened to the KIM-1. Seems many entries are crawling out of closets, hahaha. 😉
Kudos for resurrecting Tiny Basic even for the lesser known and used CPUs! At this point I imagine AI can generate an interpreter for a CPU given its instruction set and programming model, plus the Tiny Basic spec or TBIL code? In my Tiny Basic project I used the "reversed" approach and treated TBIL as instruction set, internal variables as programming model and created a custom CPU implementation from that.
AI was used in this project but the code quality isnit great vs something like 6502 since much less training data available. So most if it is hand optimized.
None of my interpreters use the IL approach as I wanted to cram In functionality.
kudos on creating a IL specific instruction set cpu, neat idea. :tiphat:
Thanks a lot! I am familiar with Tiny Basic flavor you used (I have another project running it) which has additional functionality, so I populated some "missing" IL opcodes (similar how Z80 did with 8080) to add FOR / NEXT and few other features ( https://hackaday.io/project/204482-cpu-running-basic/log/244892-extending-tiny-basic-to-be-more-like-another-tiny-basic ). I had similar experience with vibe coded TBIL assembler/disassembler too - code needed much tweaking (which I did by reading jscript produced and vibe coding with very specific prompts) to be acceptable, although for one-page React web app there is infinitely more examples out there than for 50yo CPUs. There is always more project ideas than time, but maybe I will try to use AI to generate IL-based Basic interpreter for my other (much simpler) SIFC 16-bit "superscalar" CPU. The idea would be to generate assembly source code of Tiny Basic for arbitrary CPU, either well-known or home brew one. And as final validation step provide a virtual run time environment like you online Basic pages.
ZBSR /ZBRR are 2byte unconditional branches like BSTR/BCTR, UN but only access zero page so first/last 64 bytes in memory. So you can put small subs there or use indirection * to jump somewhere else but with more cycles. If you have an often used subroutine it’s more memory efficient to use zbsr/zbrr instead of 3 byte jumps, but only if unconditional. Since Im not using PIPBUG and intended on rom, I can put the vectors in zero page, not sure you can use them if pipbug stays. To port replace all zbsr/zbrr with unconditional branches. My assembler tells you if they can be 2 byte bstr or need to be 3 byte bsta.
This is epic! Maybe I'll try to get it to run on the Emerson Arcadia 2001, I have two of them and they have a character generator very comparable to the Commodore VIC-20 (although the VIC-20's is better - on first glance they look the same). They only have 1k of RAM so I guess I'll have to add extra RAM.
Uh... I thought you might need help programming the 2650... looks like it's more likely you can help me program it... I'm doing this for 10 years now and I just very recently learned the CPU can do pointer arithmetic. Now I've never used any of the ZB..-codes, I don't understand them. Your code is full of ZBSRs and ZBRRs... what do they do and how do you use them?
A crazy thought occurred to me. Since the 2650's architecture derives from the IBM 1130 mainframe, I wonder whether your BASICs could be ported to a SIMH 1130. That would be an even older CPU to run BASIC. I first learnt programming in FORTRAN on a 1130, which is why I remember that number. Sorry, not volunteering.
Of course in those days I didn't know anything about CPU architecture, I had only a FORTRAN programmer's view of computing. I do have a Docker instance of a SIMH 1130, but since I lost all my card decks and printouts a lifetime ago, I don't have any of my first attempts at programming to run on it.