
Programming in BASIC on the TRS-80 - gregorymichael
http://baugues.com/trs-80/
======
antimagic
Ahhh, a most timely article, from my perspective. I've recently being writing
a computer game for my first computer, which was a contemporary of the
trash-80
([http://www.compucolor.org/emu/ccemu.html](http://www.compucolor.org/emu/ccemu.html)).
The guy that made the emulator was working for NVIDIA last time I talked to
him, and he thoughtfully provided most of the programming manuals for
Compucolor II on the site.

Why? Well I was mostly expired from a story in "Surely You're Joking, Mr
Feynman" where he talks about being bored with physics, and he gets back into
it by playing around with toy problems that he had to work out from first
principles (the way that the wobble in a spinning plate precesses around the
axis). So I've started programming in an emulator of this old 1980s computer.
It seems to be working for me too - I'm finding myself to be much more engaged
in my day job since I've started.

~~~
flohofwoe
Same here, that growing feeling that we have lost something during the 90's
when home-computers were replaced by 'business PCs' drove me to write an
emulator to preserve some of the magic in the past few months:
[http://floooh.github.io/virtualkc/](http://floooh.github.io/virtualkc/),
here's how to write a 'Hello World!' program on it in BASIC, FORTH, machine
code and assembler:
[http://floooh.github.io/virtualkc/p035_helloworld.html](http://floooh.github.io/virtualkc/p035_helloworld.html)

In my opinion, the RaspberryPi is the closest thing to a home-computer we have
today, it encourages to learn, experiment and create things, it would be nice
if it had a simpler, more home-computer-like standard operating system though.
Linux (or any other current desktop or mobile OS) is simply too complex and
scary. In contrast to that, smartphones and tablets are closed ecosystems
optimized for consumption. I don't see how these closed-off platforms
encourage kids to explore and learn to create something on their own.

~~~
jarcane
The RISC OS people have produced a custom ROM that runs only BBC Basic at
boot: [https://www.riscosopen.org/content/sales/risc-os-
pico](https://www.riscosopen.org/content/sales/risc-os-pico)

There's also some stuff here on the RPi site on other BASIC options:
[https://www.raspberrypi.org/blog/celebrating-50-years-of-
bas...](https://www.raspberrypi.org/blog/celebrating-50-years-of-basic/)

I would actually love to re-case an RPi in it's own retro keyboard unit and
turn it into a proper TV-computer of old. Alas I don't really have anything in
the way of that kind of solder/hardware skills.

EDIT: Actually, following some of my own links, it looks like someone's beat
me to it: [http://www.fuze.co.uk/](http://www.fuze.co.uk/)

------
jarcane
The REPL still lives! You need Racket. There's a lot of great programs now
using Racket/WeScheme in education for younger kids.

Another project though I think really seems to be gunning for that old-school
feel with some modern conveniences is PICO-8, which is a retro Lua VM meant
mainly for designing games, complete with REPL, built in editors, and even
PEEK and POKE. :D

To be honest though, I also kinda wonder how well you'd do just plunking a kid
down in front of one of those older machines. Especially the Tandy ones. The
Color Computer came with an amazing manual, that's pretty much what got me
into programming all on my own as a kid.

As a fun side note, here's a Lisp in 1.5 pages of Tandy Color Basic:
[https://twitter.com/J_Arcane/status/668545293164683264](https://twitter.com/J_Arcane/status/668545293164683264)

~~~
VLM
Pretty sure that is Randy Beer's model 1 and model 3 lisp from 80 micro, part
of a multi article series beginning March of '83, see page 176 or so of:

[https://archive.org/details/80-microcomputing-
magazine-1983-...](https://archive.org/details/80-microcomputing-
magazine-1983-03)

It may very well run on a coco unchanged (they were very close) or someone
modified it to work on a coco without changing the version remarks. I'm not
motivated enough to do a biological meat powered DIFF between the tweet and
the magazine.

I tried typing it in (in probably summer of 83), LOL thats not happening
without typos, ended up convincing my Dad to get the load-80 for that month
(essentially load 80 was a cassette tape delivered monthly with the code from
the magazine so you don't have to type stuff in). Later Load-80 was a floppy
disk. The future being very unevenly distributed it was at least half a decade
before IBM PC clone users finally had "big blue disk" (which I enjoyed
monthly)

It was my first experience with a LISP. I would advise that LISP and magazine
series were very interesting but highly non-optimal way to introduce a roughly
ten year old kid to LISP.

From memory by the third month or so of the series he had a crude database set
up and implemented MATCH. Performance was slow, the REPL took maybe a minute
to think about complicated things.

Its fun to page thru the ads. Dynamic ram had dropped below a buck per
kilobyte. 80 micro was going thru a computer science phase, interesting to
read the APL article a few pages later.

Edited to add, this is Randy Beer's home page today:

[http://mypage.iu.edu/~rdbeer/](http://mypage.iu.edu/~rdbeer/)

~~~
jarcane
To give proper credit, that's actually a port of the Model I/III Lisp to the
CoCo, as printed in Hot Coco magazine.

I'm still idle in a few bits of the CoCo scene and someone dug it up a while
back so I snapped the code just because I was impressed that 1) it was pulled
off in BASIC, and 2) in so little space.

Probably indeed not the best introduction to Lisp. I do wish I had had _some_
intro to Lisp, or perhaps more ideally Scheme, back when I was that young
though. I honestly believe I'd've stuck with programming if I'd discovered
Lisp & FP when I was just starting to look beyond BASIC/QBasic. Instead all I
saw was everyone telling me I should learn Assembly or C if I wanted to be a
"real programmer", while Python and JavaScript were sneered at as mere
"scripting languages," save for those like Perl that were intelligible only to
other Perl hackers.

Once Java came along and I took two glances at that, I just gave up on
programming for another decade, resigned to the idea that coding for a living
was nothing more than a life of tedium and irritation.

I'm still not always sure I was wrong.

------
ianbicking
I've had surprising luck with doing simple Logo with my daughter (4-1/2).
Actually I feel a bit guilty as she'd like to do more. So far we're just doing
drawing (no loops or anything), but with all the tedium of finding the keys
and getting the commands just right. I helped her make one routine that
randomly changes the color, which she likes. (She named the routine after
herself – kids don't need to stress over proper naming ;)

But I really wish there was material to get her started. I haven't found any
introductory Logo books – finding an old book and updating it to a new dialect
would be fine, but I'd appreciate some structure and thoughtfulness about the
order of introduction. I probably should print out some primers too, so I
don't have to remind her of RT and LT and FD every time.

I've been using this Logo interpreter:
[http://www.calormen.com/jslogo/](http://www.calormen.com/jslogo/) – it does
all the traditional stuff pretty well, but it could also use this same sense
of structure and content. A kid should be able to sit down and think: here's a
thing I could try to do. And here's all the tools I need to do it. Really
that's just content.

On the fancy side Hopscotch has been really impressive (significantly better
than Scratch), but being iPad-only has been a problem. That said, my daughter
still appreciates Logo even compared to something fancy.

(One important thing about my daughter's interest: I talk to her in detail
about what I do. The importance of this occurred to me during a parent
education event I was at, where they noted: when you ask your kid how their
day was and they disappointingly say "fine", have you been telling them how
your day was? Parents need to demonstrate that kind of storytelling and
engagement, and in my experience kids suck it up more than you'd expect, even
stories about seemingly boring work stuff.)

------
cubano
I, too, wrote my first programs on a trash-80, sitting in the store and saving
the things to a high-performance cassette drive ;)

But I no longer think that's the thing...the point back then was, to me at
least, "here is something big that no one else I know is doing but its so
obviously very cool, empowering, and in a way, _secret_ ".

Nowadays, with so many devices intruding on every aspect of our lives, there
is just very little of that _secret_ anymore, and while of course its hard for
me to know how modern tech is affecting kids nowadays, I just cannot imagine
they can feel the same way as I did, sitting alone in a Radio Shack in 1978,
writing BASIC programs in wonderment.

------
SeanDav
I have just started teaching my daughter to program. I would certainly agree
that starting off is not nearly as easy as it used to be.

Kids love interactive and graphical environments and trying to do this in any
mainstream language quickly becomes non trivial.

I chose Python and pygame but it gets confusing for the child to see things
like:

    
    
       from pygame.locals import *
    

and

    
    
       for event in pygame.event.get():
         if event.type == QUIT:
            pygame.quit()
    

and

    
    
       size = (120, 640)
       screen = pygame.display.set_mode(size)   
    

One can tell her to ignore these and just accept they are necessary but it
does cause issues and looks very intimidating to a beginner.

~~~
gosub
processing may be a nice alternative. very small boilerplate to have a
graphical/interactive program running, and a cute ide to keep your sketches.
[https://processing.org/](https://processing.org/)

~~~
gregorymichael
Love your username.

------
purpled_haze
Scratch is the only thing I've gotten my kids interested in:
[https://scratch.mit.edu/](https://scratch.mit.edu/)

Unfortunately, it didn't last long.

------
DanielBMarkham
Very happy memories. I spent so much time in Radio Shack when I was a teenager
that it started to feel like home. Friend of mine wrote the first machine-
language program I ever saw, "Mountain Mission". You basically controlled the
elevation of a cannon and it shot at things on a mountain. Radio Shack put it
in their software catalog. I think he made several hundred bucks.

I feel sorry for folks learning to code today. I was thinking about creating a
course to teach folks to program, and it occurred to me that a more useful
course might be along the lines of "How to set up and run 'hello world' in
various configurations" You could have a section on each O/S, and then
exercises would cover the top 5 or 6 languages.

------
bitwize
Microcomputer BASIC is what inspired Glass Table for Gambit Scheme:
[https://github.com/bitwize/glasstable](https://github.com/bitwize/glasstable)

It's basically a development environment you operate from the REPL. Every time
you define something, GT memorizes your definition; you can then save this
"workspace" of definitions to a program file or load prior work into the
workspace.

It's a shame that there are almost no programming environments that work the
way BASIC did, where the command language for the development toolset is the
same as the programming language itself.

~~~
jarcane
Strictly speaking, most Common Lisps can do this too out of the box. It's how
"compiling" even works under most CL implementations.

------
sumsted
Neat article, I miss the simplicity of the old machines as well.

I teach a weekend programming class for middle schoolers and the setup is a
real pain. There's just too much stuff that gets in the way of learning to
code. Our setup is Python 3 with Pycharm EDU2 installed on each child's
laptop. for some lessons we have a Raspberry Pi (gopigo and minecraft) that
the kids can control remotely using Python.

We tried using Idle but it crashes too much and is a bit of a pain to navigate
with the multi-window display. Pycharm EDU is pretty good, but I haven't had
much luck using it with lessons. The lessons take a lot of time to setup and
sometimes just crash Pycharm or become unusable, holding up class. So we use
Pycharm EDU just as an IDE.

I thought of using something remote like Koding or codio (I really like these
options), but we have some lessons that require us to be local so we can reach
out to our bot and rpi. A more lightweight IDE would be nice, something with
nice debug capability like Pycharm EDU. These kids are sporting some really
old laptops, hammy downs from older siblings mostly. Ideas welcome.

------
bluedino
>> I can’t help but feel a little sad at how much harder it is to learn to
program today.

>> Back then, with a few lines of code I could write a program that ran on
practically any home computer.

Pop open Chrome and you can write almost the same program from that magazine
in Javascript. You'll have to figure out how to do the input, though.

Magazines like Linux Format even have multi-page coding tutorials for
different languages all the time.

[http://www.linuxformat.com/archives&listpdfs=1](http://www.linuxformat.com/archives&listpdfs=1)

>> There’s so many more steps to reach “Hello World” in any of today’s major
languages

>> There’s also so much more distraction. With no Internet, no video games

There were TONS of games for the TRS-80. I used to sit in Radio Shack as a kid
playing them all day long. You didn't have the Internet back then but you
could dial into BBS's. That was a real time-waster.

------
GedByrne
Basic is still alive and well, providing a simple programming environment for
beginners.

It has returned to being a hobbyist scene, just like in the 80s. Basic
compilers are written by hobbyists for hobbyists.

For native applications my favourite is PureBasic:
[http://www.purebasic.com/](http://www.purebasic.com/)

It's a nice variant that compiles to a tiny, dependency free executables for
Windows, Linux and OSX.

It also provides a nice gateway to the underlying assembler.
[http://www.purebasic.com/documentation/reference/inlinedasm....](http://www.purebasic.com/documentation/reference/inlinedasm.html)

It also has an online version called Spider Basic that compiles to JavaScript:
[http://www.spiderbasic.com/](http://www.spiderbasic.com/)

~~~
bitJericho
Monkey X is by far the best BASIC compiler available to date. Purebasic is
still good for GUI stuff, but it's not OOP like Monkey X. And Monkey X can
support native GUIs if a library or wrapper were created (and may already
exist).

~~~
jarcane
Hmm. Maybe I should take another look at Purebasic then. "Not OOP" is a
selling point for me, and rare as hen's teeth where GUI software is concerned.

~~~
kevin_thibedeau
> rare as hen's teeth where GUI software is concerned.

You can still write native Win32 and Xlib apps in C not to mention all of the
languages where OOP is an optional bolt-on.

------
83457
I remember typing in games on the TI-99/4A without understanding how to edit a
program in TI Basic. If I mistyped I couldn't go back and edit the line so was
screwed. With some guidance back in the day I would have had a lot more fun.

------
IIAOPSW
I remember as a teenager in the mid 2000s my sweet old grandmother gave me
this book she found lying around because she didn't understand it but she
knows I'm into "those computer things". It was the manual that came with the
TRS 80 explaining how to use BASIC. It came with some example programs. It was
an amusing glimpse into a bygone era but ultimately I declared the book to be
hopelessly outdated trash. I kind of wish I had kept it.

~~~
codesmythe
Was it this one?

[https://archive.org/details/Getting_Started_with_TRS-80_Basi...](https://archive.org/details/Getting_Started_with_TRS-80_Basic_1981_Tandy)

My introduction to programming was this via this book in the back of my sixth
grade math class in 1982. Been hooked ever since.

~~~
IIAOPSW
That looks right.

------
bluedino
Somewhere around 1991 or so we got a 386SX with DOS and Q-BASIC. Here I was
stuck with all these Apple II and Commodore books from the library, most of
the games wouldn't work because the peeks and pokes and functions that weren't
available.

I later found some GW-BASIC books which helped a little bit, but I wish the
library had some newer stuff. C compilers were $500 back then so BASIC was all
I had.

------
ck2
Wow nostalgia taking me back to learning level 1 basic on a TRS-80 Model I at
the Radio Shack store.

But the ease of learning BASIC is alive and well today, you can write a PHP
program with as much ease (then you can learn to write better code later but
the point is the barrier to entry is very very low).

You can even run PHP as an interpreter in a DOS-like command window in
Windows, very easy.

------
AnimalMuppet

      POKE 16407, 43
    

This wrote a value into an absolute memory address. 16407 was one of the
registers of the video controller. Poking various values into it would cause
various funky things to happen on screen. 43 was one of the best values to put
in there, but others were interesting too.

Sometimes you had to reboot the machine to recover, though...

------
empressplay
My second computer (after the Timex Sinclair 1000) was a TRS-80 MC-10. I liked
that it had the same BASIC commands mapped to keys like the TS/1000 and so it
was a great upgrade into a computer that had colour and sound... and since I
was 6 the small keyboard was okay =)

------
bitJericho
The first computer I had access to and learned to program on :)

------
ddingus
Oh, this is fun. Nice piece.

Time to turn my Apple 2e on and play for a while.

