My BBC Master 128 projects part 03

I have been writing software for my refurbished BBC Master 128KiB microcomputer. The aim is to convert it from a retro gaming jukebox to an everyday productivity machine.

In previous posts I discussed my list and reminders app - Listy.

Today I finished the calculator app.  Mathematical expressions can be entered and calculated at the command line.  Values can be stored in 26 variables 'a' through 'z' and the previous result from the accumulator can be used in an expression by substituting the '@' symbol as a variable. The values of all variables including the accumulator are automatically stored on disk between calculations so they are always available the next time the system runs.

All in glorious teletext graphics.


The welcome screen.


I am rather pleased with the result, although there is some work to do regarding the error reporting as I have only implemented one error message for the case of the accumulator overflow.

Also, it would be nice if I could store functions as well as the value of an expression in a variable.

My current project is a general time-keeping app.  I want a clock, timer, countdown, reminder and alarm system.  So far I only have the clock implemented.

This photo is a shot of the clock app running on my BBC Master 128. Those digits are about 10 cm tall on the display.
In order to get some really big text I have modified some code I found in The Century Computer Programming Guide for the BBC Micro, an excellent guide to programming for the BBC Computer systems, by Professor Peter Morse and Brian Hancock, with code from P.Dilley for the large 64x64 pixel characters.




An excellent guide to programming the vintage BBC micro computer.

Are you looking at ME?
What's next?

More nerdy posts coming soon.

Still awake?  You might like to play an awesome adventure game, or read about my Raspberry Pi data-logging adventures.

My BBC Master 128 projects part 02

So, recently I bought a vintage BBC Master series microcomputer and set myself the task of turning it into a productivity machine.

My first app - Listy - is a note-taking and reminders app.  Although there are a few bugs that I still need to iron out, this app is almost complete.  Listy lets me add tagged notes with reminder dates.

All in glorious teletext graphics.


Most of the functions are accessible through one of the special symbols on the computer keyboard. Operating System commands are also accepted.  Oh, and yes, I am aware that the date is incorrectly set in the CMOS.

Here is an example of a note "Electricity" which will remind me to check my meters on the current due date.  I only wish that the CMOS calendar was not set incorrectly.

My latest project is a command line calculator.

It allows me to enter a mathematical expression and evaluate it.

Here we see the value 47 in the accumulator.  The previous expression resulted in an error.

The app will allow me to store values in up to 26 variables (a through z), which will be stored on disk for next time the program runs along with the value in the accumulator.

Variables can, of course, be used in the expressions.

It would be possible to set variables equal to expressions, such as y = f(x) so that y would change as x changes, however I have not implemented this in the first iteration in order to avoid dastardly circular references from melting my 'beeb'.

Well that's it for now.

I'll be back with more BBC microcomputer adventures soon; hopefully after I've fixed the CMOS date problem.

Still with us? Read about my other adventures with 25-year-old operating systems

My BBC Master 128 projects part 01

I have owned a refurbished BBC Master 128 computer for just over one week.  In order to justify its position as pride of place on my desk, I am determined to write some apps for it that I will be able to use every day.  Thus turning this vintage games machine into a productivity machine.

The first program is a note-taking app called 'Listy'.

Listy allows me to add notes of up to 256 characters, sorted alphabetically.  The notes can be searched by content and 'tagged'.  Notes are automatically saved to disk.

Listy displays all its lists in glorious teletext graphics.

An early version of Listy showing the help screen, banner and command line running on vintage hardware and captured on my Lumia 950.
Source code showing the insertion sort algorithm. This puts new records into the correct place alphabetically.

Continued code for the insertion sort.

Further routines used by the sort algorithm, also showing the code for the blue banner at the top of the screen.
Algorithm for finding a record by name using binary search.  Binary search is a VERY fast algorithm for finding a single record typically requiring less than eight checks before a record is found (or not).

Algorithm for displaying word-wrapped text on the screen.

Current Progress

I am currently working on Listy 2.1 which has been modified to allow for shorter commands.

Records are created/modified using the command: +<name>.

Records are found by simply typing their name <name>.

A full readout of all records is achieved using the command: @.

All records displayed alphabetically is achieved using the command @keys.

Still to do

Deleting records using the command: -<name>.

Searching for records by content: ?<search term>, or by tag #<search term>

Future work

I want Listy to be able to sort records by 'date created' and by 'due date'.  This will require minor modification to the insertion sort algorithms.  I also want Listy to display records that are 'due today' when the application first loads.

Currently Listy saves all lists to a single file on the DFS floppy disk. It would be useful to be able to specify a filename to allow for multiple lists.

Well that's all for now.  If you are still awake then you might like to read my other BBC Micro posts, or just some random Programming posts.

My BBC Master 128

I recently bought a new refurbished BBC Master computer supplied by the lovely people at www.retroclinic.com.

The BBC Master is a thirty-year-old microcomputer from Acorn that was popular in school and homes throughout the late eighties. Use of the BBC computers is as synonymous with the eighties as with hoola-hoops, denim jackets, He-man, Saved by the Bell and Margret Thatcher.  This computer truly is a relic of the cold war.

The Master was an improvement on the original BBC model 'B' in that it provided a mighty 128KiB of RAM, enough to power the high-resolution graphics modes available on both hardware and still have available space for your program.

My BBC Master (running Acornsoft Elite) with disc drive, Raspberry Pi and modern PC.
The computer arrived in excellent condition.  Retroclinic have done a wonderful job in refurbishing the machine.

And so, with social life cancelled, I have spent the weekend exploring what my 'beeb' can do.

The package included a dozen or so games on disc, including Repton, Elite and (possible the greatest of all...) Baron.

The murderous 8-bit skeleton army from Baron.

The internals of the machine also contain a couple of games: Acorn's own 'Pac Man' clone 'Snapper' and 'Chuckie Egg'.  They never made 'Chuckie Egg' the movie, which is a shame, as the late, great, David Bowie would have made an excellent killer-duck boss.

ROMS include among others:

  • VIEW (Acorn's word-processor)
  • ViewSheet (Acorn's spreadsheet program)
  • EDIT (Text and programming-code editor)
  • CMOS RAM (battery powered Y2K-fixed settings and internal clock)
My projects

If the BBC Master is going to earn it's position as pride of place on my desk, then I want to turn the computer into an everyday productivity machine.  Playing old games for nostalgia's sake is fun, however I can do that using emulation.

So I intend to write a suite of programs for everyday use.

First of all a note-taking/list app.  Then a calculator program and finally an alarm clock/calendar app.

The BBC Master has no access to the network and only a 200K disc for storage.  Also I don't have access to a library of program code - everything has to be coded in the original beeb BASIC.

Let's go!

Still awake?  You might like these other nerdy posts:

My #chatbot is online

He's ready! Warts and all.  Mac, the superdecade games chatbot is online and ready to talk to you.

Another thrilling conversation with Mac.
Ok, I admit it, he doesn't say much for now, but I promise that I'll update his database with more topics to improve his conversation skills as time goes by.

Feel free to go and chat, or steal my code, whatever.  Any feedback then do get in touch.

Yo

This is my new favourite app!

Yo.

Yo is a social media app that allows you to send the letters 'Y' and 'o' in that order to your contacts.  Yo.  You can also send links and your location, and there is an additional 'yo status' that allows you to display your status in one emoji.

It is described by the developers as a "a single-tap zero character communication tool".

It has been describe by my friends as "annoying", "this isn't Facebook chess", and "this app has a half life of 5 hours: in five hours time the chance of me deleting this app increases to 50%"...

... but I think that they are wrong.

Not all messages we send need to be essays.  "Text me when you get back".  OK, I will.  I'll send you a 'yo'.

Yo allows you to convey meaning without actually saying anything.  Yo REDALERTISRAEL to get a yo whenever a missile is launched from Gaza.  Subscribe to LARGEEARTHQUAKE to to a yo whenever there is an Earthquake larger than 6 on the Richter scale.

Yo.

You need to tell your friend where you are. Send a Yo with your location.

In a time when we are drowning in email, Yo is a very refreshing service.

If This Then That...

You get more power to your yo when you integrate with a service like IFTTT.  IFTTT let's you set triggers that invoke some sort of action.

A custom IFTTT.

With IFTTT I've got my yo history saved to my Dropbox.  When I get a yo I also get a twitter notification send to my Microsoft band 2.

Send me a yo now (my username is SUPERDECADE) and you will see it gets tweeted to my timeline.

You can send a yo to IFTTT to act as the trigger for almost any action.  Send a yo - it turns on the lights in your house.  Send a yo - it creates a new page in OneNote. Someone posts a picture on Instagram with a specific hashtag - you get a yo.  The list is almost endless.

IFTTT works with the yo status app as well.  Here I am working on automating my status.  At night it shows me as asleep.  When I wake up, the emoji is a cup of coffee.  I post something to my pocket then it shows me reading.  It even changes to a birthday cake on my birthday.


I think that I have only just scratched the surface of Yo.  When you think of this app as a trigger it becomes much more than an 'annoying' messaging app that you will uninstall in five hours.  There is also a developer API for more fun and games.

And remember a 'yo' can mean anything!

Yo.

Send a yo to me now.  I am SUPERDECADE, then roll your eyes and look at some of these other posts. #yo

Label