I have been working for some time on a project that I call the “People’s Permacomputer Project”.
You can find the git repo here:
The purpose of the project is to develop or supply an educational tool that is inexpensive, for the promotion of digital literacy.
What originally started as an exploration into CHIP-8, and then various micro-controller platforms, ended up getting bogged down in text editors written in 8K BASIC. Haha.
A thorough search through the Internet Archive, as well as a few other repositories, led me to several text editors printed in magazines and manuals that were written in BASIC – some only around 100 lines!
Filename
Year
Platform
Transcription status
Lines of code
Code size
LED.BAS
1981
CBM PET, APPLE II
COMPLETE
< 300
~ 7 KB
WRDPRO.BAS
1977
GE 635 (Dartmouth)
COMPLETE
~ 350
~ 17 KB
EDITYPE.BAS
1983
VIC-20
COMPLETE
~ 150
~ 5 KB
SCRIPTOR.BAS
1983
ATARI 8-BIT
COMPLETE
~ 360
15K
EDIT.BAS
1977
ALTAIR 8K
COMPLETE
~ 100
~ 5 KB
After some adaptation, I managed to get EDIT.BAS working in a modern Tiny BASIC.
This project has been brought up before on retrocomputingforum, “The Cuneiform Tablets of 2015,” but I think it relates to what you’re doing:
It was an idea for software preservation, where the software is packaged with a written virtual machine spec. for running it that’s simple to implement. The example would probably be too much for the 8-bit architecture on which you’re looking to base your project, but it’s just an example. The preservation/propagation scheme is the point.
Progress has been made on writing a Tiny BASIC for memory limited micro-controllers.
Please find the code for AVR assembly for a working blinking LED demonstration for the Arduino Mega.
This forum thread will serve as a devlog for “2K Tiny BASIC”.
The point of this line of activity is to write a Tiny BASIC that will fit on the cheapest and most readily available micro-controllers. Most of which have about 2K SRAM–such as the Arduino Uno.
A little while ago, I heard about the (PicoCalc - https://www.clockworkpi.com/picocalc), and purchased two units. These have MMBASIC, a very feature-rich BASIC (also available for the Raspberry Pi Pico alone as PicoMite BASIC - Geoff's Projects - BASIC Interpreter for the Raspberry Pi Pico) included as their default firmware. This covers some/much of what you are working towards with your Permacomputer project.
I have been looking for a text editor for my PicoCalc (without changing the firmware to Python, Forth or other language) for a while. It looks like your WRDPRO.BAS may do what I wanted, or at least provide the framework for an editor of my own.
Thank you for this project - it is very interesting.
I would encourage you to think about what you mean by “digital literacy.”
Are you trying to teach those who don’t program how to program? Or are you trying to teach them about the history of microcomputer languages?
The latter includes ideas such as, “all variables are global,” which is certainly not accepted programming practice in any language since the 1950s, excepting microcomputer languages in the 1970s and early 1980s.
Teaching microcomputer BASIC from that era has been, since the '90s, akin to teaching math by starting with Roman numerals. (Not that I want to diss Roman numerals: they certainly solve the problem of, “Should arrays start from 1 or 0?”)
These days we teach math to kids by immediately starting with relatively sophisticated notation such as + and =. (I am not being facetious here: less than half a century ago the best mathematicians in the world would have had no idea what you meant by those.) Possibly it’s also the right time to introduce “modern” computing concepts to beginners.
(I scare-quote that because many of these “modern” concepts date from the 1950s; they just took a long time to catch on in the general community. Just as OO programming dates from the 1970s, and in certain senses the 60s, but didn’t even start to become accepted in the general community until the '90s, and didn’t really catch on until the 2000s.)
Arrays starting at 0 or 1 is one of the biggest cause programming errors. A simple solution
would have been making the Dimension 1 size bigger internally. Then you pick what you need.
“modern” many not be better. Look at the original concept of RISC. Three address code, from the 1985
to 1955 with no flux capacitor. You moved from drum memory to internal ram, and gone to fake Harvard architecture, drum again. One data size 32 bits .Of course it will be as fast as HELL, as it used the latest tech at the time.
How about intercal rather than basic for the first programing language instead. https://www.catb.org/~esr/
Lots of the modern concepts make no sense to me, like virtual memory, dynamic memory and OO.
ALGOL data nesting and PASCAL sets. My first computer I used was a PDP 8, I wonder if that stunted my thinking. Information hiding and software modules and structured code are good ideas,
but not the answer to all, other wise why do we still need assembler code on a bare machine.
There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult. Tony Hoare
What is wrong with spaghetti code? I like pasta,Ben.
While I think the project is great, I fear this goal is not going to be achievable.
Also, the competition for this is fierce. Today we have the Raspberry Pi - which is an inexpensive education tool aimed at the promotion of digital literacy… Not only the hardware but a team of dozens of people actively writing software, tools, documentation and so on.
Then there is the BBC Micro:Bit. It’s also an inexpensive education tool aimed at the promotion of digital literacy. Software, documentation and so in provided by Microsoft and supported by The BBC. Every school in the UK probably has a box full of them…
Software? It’s Scratch or Python. Basic is simply not an option. (Sadly).
I dipped my toes in the waters here some years back when I ported my own Basic to the Raspberry Pi - uptake was virtually zero despite it supporting modern structured concepts, graphics, sound and so on.
In recent years, I’ve even been part of a couple of groups introducing Basic to school kids but that wasn’t as good as it could have been. Switched one group to Scratch then Python and they were off…
So the sad truth is that other than niche areas (where? I’d love to know!) the idea of putting a Basic - full featured with modern structured concepts or Tiny/MS style is almost a fantasy.
But that shouldn’t stop us enthusiasts ploughing on! We will always have small, useful systems that can do good work, programmed in Basic…
Information technology is now too massive, for any kind of digital literacy with all the important
information secret or hidden behind a paywall. For example I picked up FPGA development system
many years ago,to design a TTL computer. The plan was to use TTL macros, to get a working hardware
design for a 20 bit cpu. It claimed to be a educational system, but all the design data was for a 32 bit
arm machine, with no source but binary modules. Great for demos, but useless other than for using their information property.
What happened to PASCAL for teaching? Is all singing and dancing a good thing?Point and click the way to program now with the AI’s out?
I have small useless system simply because I can not find a file system design to write for it in assembler,
Small here is 256Kb ram,2K EPROM, bit banged SPI , and a uart. 7 registers with a 9,18,36 bit word length, no IRQ’s or MMU.
Basic was for computers with simple mass storage like cassette tape or punched cards.
8 bit micros had a 8" floppy. UNIX and MS-DOS are the only two file formats that I know of that could handle media larger than a floppy from the early 80’s and find details on implementation.
Retro designs are nice, but remember what you had for IO and that was often a reason to upgrade,
In some ways people are lucky in that they can build what they want, compared to 50 years ago.
We’d be getting into debate about terminology, or even into politics, if we weren’t careful. In fact, I wrote a long reply, but I’ll make do with a shorter one…
… for me, digital literacy would be about the idea and the possibility that digital things can be understood, that mostly these days digital things contain CPUs which run programs, and programs are things which people can write. One can learn that skill. And programs often have bugs, which can often be fixed, and that too is a skill that can be learnt.
I think those ideas could be taught in a retrocomputing context, probably, or indeed in a web or tablet context. In fact, if you search for “teaching computational thinking without computers” there are ideas there too.
I’m forced to agree with Gordon here. The BASIC we knew is no longer fit for purpose for new learners.
My local retro-computing group has often started with plans for “Let’s get a whole bunch of VIC-20s and teach BASIC to a class of kids!”. It always gets very enthusiastic adult proponents, but failing to find the class of kids who’ll touch it makes the project fizzle every time.
An 8-bit computer isn’t interesting enough for a kid. They’ve grown up with 64-bit cinema-resolution iPads and Android devices. 176 × 184 in 16 colours ain’t gonna do. Many of us on this forum had their first years without computers, and the imaginative step from zero to ZX81 is bigger than anyone younger can perceive.
To me, many permacomputing projects seem to expect that society will fail, and those left holding a handful of Z80s (or your cpu of bias) will rule the ensuing chaos. I require to be more hopeful for society than that. By all means do more with less for fun, but please don’t give it more weight than that.
I reckon Basic would be interesting to have on a fantasy console. It would need to have better performance than the interpreters that often have to scan the whole program to jump to a line, and support for user-defined functions or procedures. I wasn’t satisfied with existing dialects of Basic and how they do procedures, so I’m hoping to implement my own dialect that compiles to lua to run on the pico-8 and/or picotron.
I did get the idea that the pico 8 is reasonably appealing for some kids, I could be wrong though. It is low resolution and has limited colours, though not running Basic
i personally do not see an issue with learning something incomplete, or even partially wrong.
“nothing is ever wasted”.
the reason why i chose BASIC was not for its syntactical or linguistic power, but because it is reasonably memory efficient, and there is a large code base out there with a reasonably active retrocomputing community.
i am not going to answer each of you in turn with the “not BASIC” question.
my picture was to try and engage grade schoolers, children who are quite young, for whom python and scratch may be unsuitable.
i think BASIC is very engaging and has a very low learning curve. it is a good place to start.
Go for it, see how you get on! You’ve got the design and implementation of the language, of course, but also ideally you can find some tame children and perhaps find some ideas for actitivies (I don’t say lesson plans) and see how things work. I’m fairly sure that the adult supervision - their enthusiam, encouragement, and gentle steering - will be a critical part of the recipe.
I did do a few hours of supervision of Code Club activities in my local library. There was a set of recipes for Scratch which went well for those children who wanted to learn - for the others, anything resembling a game became a bit of an end in itself. In our case we didn’t get anywhere with the next level, which was Python, but we had no teaching or even parenting experience.
Speaking as someone who’s coming extremely close to half a century old, I wonder which mathematicians of the 1970s or 1980s would have found + or = mystifying, given they were both added to ASCII in the mid-1960s after years of standardisation around earlier character sets.
I was certainly taught early maths via those symbols close to half a century ago. I have seen pencil writing from a century ago that used those symbols as I would today.