Bare Metal Programming With Only Three Buttons

For anyone who’s seen a 1970’s era microcomputer like the Altair 8800 doing its thing, you’ll know the centerpiece of these behemoths is the array of LEDs and toggle switches used as input and output. Sure, computers today are exponentially more capable, but there’s something undeniably satisfying about developing software with pen, paper, and the patience to key it all in.

If you’d like to get a taste of old school visceral programming, but aren’t quite ready to invest in a 40 year old computer, then [GClown25] might have the answer for you. He’s developed a pocket sized “computer” he’s calling the BIT4 that can be programmed with just three tactile switches. In reality it’s an ATMega4809 running C code, but it does give you an idea of how the machines of yesteryear were programmed.

In the video after the break, [GClown25] demonstrates the BIT4 by entering in a simple binary counter program. With a hand-written copy of the program to use as a reference, he steps through the memory addresses and enters in the command and then the value he wishes to operate on. After a few seconds of frantic button pushing, he puts the BIT4 into run mode and you can see the output on the array of LEDs along the top edge of the PCB.

All of the hardware and software is open source for anyone who’s interested in building their own copy, or perhaps just wants to take a peak at how [GClown25] re-imagined the classic microcomputer experience with modern technology. Conceptually, this project reminds us of the Digirule2, but we’ve got to admit the fact this version isn’t a foot long is pretty compelling.

28 thoughts on “Bare Metal Programming With Only Three Buttons

    1. I was happy to see this new TPS version. Nice PCB, nice programming in C. The first versions were made with Bascom, later I used the Holtek C compiler for the Franzis-TPS. The TPS was not only made for nostalgic reasons. Many people took it for their first steps in programming using this very simple TPS code.

  1. Certainly a way to do it for the old fashion nostalgia. Would probably give the same feel as hard-wiring gate ic’s to make them.
    Lazy me would just use uart and if required bitbang some other protocol like i2c

    1. There is even the version to use the mobile and USBOTG Terminal and others.
      But as Willie says for him it is a lot quicker just to modify with the buttons – we are talking here mostly less tan 256 bytes. Job done before windows has booted – he uses the board in an application.

  2. Nice but it should have been made more user friendly. I remember keying in programs for the Hp1000 via toggle switches and even on Data General systems. Not fun but a hell of lot easier than this thing.

    Shrinking PCB’s to the point they are only accessible with people that have tentacles instread of fingers isn’t a advancement.

    Have no idea what Forth has to do with this.

    1. DO IT! The original was to go with the minimum interface.
      You could theoretically reduce it to just one button – but then realy awkward.

      Nobody stopping you to modify slightly and use 8 toggle switches. Or other options.

      And why Forh? well it has to be written in a language – there is as well another implementation in C and in BASIC – you use (or not) what you want – and others do what they like.
      Why in Forth – simple – Application code to compare, and as part of the Forth Bookshelf https://www.amazon.co.uk/l/B00N8HVEZM?_encoding=UTF8&redirectedFromKindleDbs=true&rfkd=1&shoppingPortalEnabled=true

    1. Go back to 1980 and you could buy the RCA Microtutor – for the 1801 and then for the 1802. 8 toggle switches and 2 hex displays ( or use 8 LEDs.
      As you say people still use it today for fun – and we should have a TPS/Myco implementation for the 1802 Membership card.
      Just to explain – both have a very easy to remember instruction set – you can code in machine code.

  3. I dont know where anyone got the idea that flipping binary toggles to form a program was satisfying. Slow, fraught with hazard, and forbid a power failure which may or may not be followed by ritual suicide after the numerous 512 bytes set. That assuming no error in entry/debug. It is fun to play with for a ‘bit’ but gets old REAL FAST and this device seems worse than that less than fond memory. Nibbler from an 8bit is just sad too.
    Dirty Harry programming: Did you push the button five times or six? Well did you? You feelin lucky punk? Really hope the debounce working today.
    I guess have to wait for bit slicer am2901 version from an M0 to be really revolted/appalled.

    1. They might have their reasons or just do it for fun – If you do not understand it – you just do not understand it – nice to hear that you do not have a clue.

      And by they way – you are talking about what you do not understand. The number of button pushes is visible in HEX. If you pushed one too many you just continue until you get to the right number.

      People do projects and proudly present them here –

      It seems you do not have any project – just want to show you are alive,
      What is the value of your comment for the community? NONE.
      Just a Selfie

    2. The 8080, with its toggle switches, was a pain. I used them to enter a boot program and that was it. The flashing LEDs were good as they showed naive onlookers something was going on. I’ll take a keyboard, flat screen, and flash over the old way.

  4. SECOND LIFE for this TPS. Franzis has just released an updated version – compatible with the older version, so all of the older documentation is still valid.
    And if you think the programming is too cumbersome which I think it is not – a little sketch on a nano will control the 3 switches … .http://www.elektronik-labor.de/Lernpakete/TPS/TPS0.html
    and what we collected in English at the time http://www.elektronik-labor.de/Literatur/MyCo.html
    or even more languages at Conrad, just scroll down – the old version – but mostly the same https://www.conrad.de/de/p/conrad-components-10104-profi-mikrocontroller-lernpaket-ab-14-192286.html

    There is a book we published at the time including the free emulator, the Arduino sketch and even an implementation in Forth https://www.amazon.co.uk/gp/product/1731232535/ref=dbs_a_def_rwt_bibl_vppi_i28

    I will buy a kit soon probably to find out what the differences are.

  5. MyCo/TPS is such a nice, tiny little, 4-bit learning system that it keeps getting re-implemented in different ways.
    After all these years I’ve made a BBC micro:bit version. It’s still in development, but everything is now working. You can find it here:
    github.com/veryalien/mycobit

  6. And for people who just want to look at examples and more
    – have a look at the facebook page.
    This should offer sufficient information to check the shown examples and links to
    MyCo on microbit,
    MyCo/TPS in Python – planned to be adapted to RPI
    MyCo on FPGA even – here on Lattice, but should be easy to port to other FPGAs
    All the links are there.
    Might be a bit of fun over the Festive Season.
    https://www.facebook.com/groups/269499491046124

  7. And another board has been added: the new microbit V1 and now as well V2Download the hex file, program the microbit and start programming using the 3 buttons A, B, RESET to start the programmming https://github.com/veryalien/mycobit.

    And now as well running on the Raspberry PI – done as programming execcise. See it on facebook https://www.facebook.com/groups/269499491046124

    There you can see how to run TPS_Myco with FIRE …
    See the video as proof.

Leave a Reply to JuergenCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.