The Supercon Badge is a Freakin’ Computer

It hangs around your neck, comes with the cost of admission, and would blow away a desktop computer from the 1980’s. This is the Hackaday Superconference badge and you can get your hands on one for the price of admission to the ultimate hardware conference.

Everyone through the door gets one of these badges featuring a 320 x 240 color display, a full qwerty keyboard, and limitless hacking potential! The stock firmware runs a BASIC interpreter, the CP/M operating system, and includes games and Easter Eggs. It’s a giant playground, and we want to see what you can do with this custom hardware during the three days of Supercon. Get your ticket now, then join me after the break for a demo video and plenty more info.

This badge design by Voja Antonic was premiered at the Hackaday Belgrade conference in May and is seeing an encore performance for Supercon. It looks amazing, but what you don’t realize until you have it in your hands is how much fun it is to hammer out some BASIC code on the incredibly clicky keyboard. Check out this fun figure: we ordered over 30,000 momentary switches for the assembly of these badges!

Hardware Design and Hacking

The display on the badge is superb and provides plenty of room for highly readable text. Of course it’s full-color and begging for some great visualizations — demoscene anyone? The badge is being assembled by Macrofab, who have also donated a portion of the assembly cost. They use red PCBs for prototypes — you’re looking at #1 of 5 — but the final solder mask will be black. In the upper right you can see the white component with is an RGB LED controllable from inside the BASIC interpreter.

The hard work is happening on the back side of the badge. A PIC32MX370 microcontroller drives everything, with an SST26VF016BT flash chip for an additional 16 MB of storage — both of these chips were graciously donated for this project by Microchip.

Also on board is a speaker and amplifier circuit. That’s right, this badge plays music! You can code in BASIC or in C for three-voice audio.

New for Supercon is the hardware hacking breakout board. This attaches to the breakout header on the top of the badge and includes a hole for a bolt and nut. Shown here is the protoype, the final version will be black, and includes three footprints for “shitty add-ons“(SAO). If you want to make your own SAO to bring to Supercon, here’s the design spec.

The expansion header includes four GPIO pins that can be controlled from the BASIC Interpreter. There are pins for I2C and UART serial broken out. The header is also used to program the badge. If you have a PICKIT, please bring it along to Supercon. You should also bring a USB to serial cable if you have one. (Not like you were going to leave home without it, right?)

We saw all kinds of things connected to this header at Hackaday Belgrade. Before lunch there was a badge up on the WiFi network which you could log into and draw on the screen from your phone’s browser. There were badges communicating via long-range radio dongles. This  year we hope to see communications hacks and a lot of bling!

Firmware Hacking

The firmware is designed by Jaromir Sukuba and is still in progress for this year. He began with an existing tokenizer and fleshed out the core functionality before adding in hardware-specific functionality: playing music, controling the LED, controling GPIO, writing to the screen, PEEKing and POKEing RAM locations, and more. He also added the CP/M operating system and configured the flash chip to serve as disk space for it.

We suggest you begin thinking about hacks involving:

  • The BASIC language
  • Music (look for or arrange tracks that use up to 3 voices)
  • Writing code (or locating existing programs) for CP/M
  • Driving your external hardware hacks using GPIO, I2C, or serial

The most delightful badge hack we saw at the Belgrade conference in May was a two-badge game called “Shoot My Valentine“. Each player had a little ship pointed towards the other badge, when that badge fired the lasers, you saw them travel up off the top of the screen and appear on the other player’s badge. This is the sort of awesome creativity we hope to see this year. Can anyone come up with a 4-player game?

Don’t Miss Out!

Supercon will sell out and the only way you can guarantee you’ll get one of these badges is to grab a ticket and show up at the Hackaday Superconference! See you in November.

54 thoughts on “The Supercon Badge is a Freakin’ Computer

      1. Not bother gathering closer to the center Of the US on my account. I just checked the cost to play. I’m not going to say the registration costs too much, because I’m ignorant of the costs involved to hold the event. However it’s probably safe to say it’s affordable for many Hope its everything for those able attend hope it would be.

      2. SuperCon: train tours. Everything on a train, and thankfully the US does have rails that go a lot of places. Pretty comfy even. Plus no TSA to poke and prod you like cattle before boarding.

  1. Why CP/M? Why not RetroBSD and bang out native MIPS code instead of code for a virtual Z80 on the PIC? Just compile a BASIC interpreter for BSD.

    If you were going for retro Z80 and CP/M fun, why not just use a Zilog EZ80 for the badges?

    1. Well the PIC and external FLASH were donated by Microchip so they definitely win out on the BOM costs.

      The PIC is a 16 bit that runs at 150DMIPS and includes 512kB FLASH and a healthy 128 kB SRAM. The eZ80 / Z180 are older and slower chips, probably even considering the Z80 emulation. Also the Zilog chips are 5V and hard to match with modern components economically.

      I’d like to see a eZ80 / Z180 SBC as well but there is no way to do it as a badge due to the costs.

    2. One problem CP/M had that I didn’t like at all was that it couldn’t tell you precisely how big your file was: Files were allocated in blocks of 128 bytes, and your code was expected to either maintain knowledge of how big the file was or use a unique end-of-file marker – OK for text: they used Ctrl-Z. But binary files? a pain. Either prepend a header that had the size, or keep it externally (then need to keep two things in sync). Ugh.

  2. please add fpga and normal processor.
    second idea is usb for normal put firmware and put program. sorry but normal usb is very important for beginners

    and please add link to assembler!

  3. What, no SAO connector? I’m designing some kits for next year’s VCF shows, and feature creep is setting in for me.
    SAO, lots of LEDs, super cheap Chinese MCUs, USB charging & programming…

  4. This thing deserves nice enclosure, community page and “buy now” link (audio jack instead of speaker would be also nice). For reasonable price I would buy it even though don’t need it. With less reasonable price I would buy it just to waste some time in airplane.

    1. No idea what the admission price is, but adding it to a trip from Australia is not going to go down too well with my bank manager.
      I love the badge, and I’d love to get one to play with, but if they are going to be restricted to Supercon entrants, that would be a real shame.
      As ‘Janusz’ says, please make them available for those that can’t get to Supercon!

  5. Suppose someone designed a Raspberry-Pi-based, really neat application.
    Further suppose that this application was programmed in BASIC.
    Can you imagine how badly that poor slob would be raked over the coals?
    (Kudos to all you “if-it-ain’t-the-latest-it-ain’t-the-greatest” boys for checking your brain at the door, in the case of this really great app which demonstrates–sorry, people–how good BASIC really is, and always has been)

    1. It’s not that you can’t write really great software in BASIC, but rather that the language makes it much harder to do so. It’s harder to read, harder to debug and (in interpreted form) much slower to execute.
      There are later variants of the language like VB.NET that do away with most of the flaws and limitations, but then they are hardly recognisable compared to the original.

        1. Let me know if you find this harder to read–and understand–than almost any other ‘modern’ language; if you do, I’ll be happy to add comments to explain what it does–

          REM PROGRAM TO FIND AREA OF CIRCLE
          PRINT “TYPE IN THE RADIUS (IN FEET):”;
          INPUT R
          PRINT “AREA IS”;3.1415926*R*R;” SQ. FT.”
          REM THE NUMBER 3.1415926 IS ‘PI’.
          END

          Someone please submit an equivalent non-commented Python program.Then do the same for a C program (I know that compiled programs RUN faster; and that the ‘REM’s are technically ‘comments’, but good form demands the first one; the last one is totally un-needed).

          1. Try that again with a non-trivial piece of code.
            BASIC has no procedures or user defined functions to start with. All subroutines or jumps are to line numbers, which don’t describe to the reader what they are doing. All variables have short names (which means they can’t be self describing) and are global (which means it can be hard to locate where they have been changed). The GOTO keyword makes it hard to determine why your code ended up at a point. Need I go on?
            I started programming in MS BASIC (many years ago). If you don’t understand how bad it is in terms of readability and maintainability compared to a more modern language then (1) you haven’t written anything of any consequence and (2) you haven’t bothered looking at/learning any of the modern alternatives. Try Python for example, it’s much more expressive and easier to read while still being light enough to run an interpreter on a microcontroller.

          2. For Hackaday and its readers which Hackaday is trying to teach, it is unfortunate that the personal biases of some make it into the ‘Comments’ section as “gospel”.
            A quick look at Wiki***ia will give the following information about BASIC: it supports long variable names; it is structured, object-oriented, event-driven, supports procedures, functions, methods, arrays, matrices, and matrix operations. Line numbers have not been a requirement for a very long time. No one EVER had to use the ‘GOTO’ command, but it is there, and is sometimes useful.
            The following is a short snippet of code which is more modern than MS-BASIC’s:

            DECLARE SUB PrintSomeStars (StarCount!)
            REM QuickBASIC example
            INPUT “What is your name: “, UserName$
            PRINT “Hello “; UserName$
            DO
            INPUT “How many stars do you want: “, NumStars
            CALL PrintSomeStars(NumStars)
            DO
            INPUT “Do you want more stars? “, Answer$
            LOOP UNTIL Answer$ “”
            Answer$ = LEFT$(Answer$, 1)
            LOOP WHILE UCASE$(Answer$) = “Y”
            PRINT “Goodbye “; UserName$
            END

            Perhaps it would have been valuable to learn BASIC programming beyond the MS-BASIC of “…many years ago…”

          3. Perhaps you don’t understand the difference between BASIC and extended versions of the language. The original Dartmouth BASIC, and MS BASIC are as I described. As people hit the limitations of the language then it was modified and extended to the point that it is now unrecognisable as the same language (as I mentioned above).
            I’ve used both Visual Basic (versions 3 through 6), and VB.NET to create commercial systems. They are nowhere close to the code you present in your example (there are no line numbers, all variables have to be DIMensioned before they are used, they support event driven programming models and Object Oriented design etc. The .NET version is different enough from classic VB that many programmers didn’t bother learning it and went directly to C#.

          4. Well I agree that BASIC is a horrible language to read. It’d doesn’t matter how much you dress it up.

            The original BASIC was from an era not long after COBOL, FORTRAN and Pascal.

            Just like COBOL, FORTRAN and Pascal, BASIC also has modern variants.

            And Just like COBAL, FORTRAN and Pascal, only a small number of devoted die-hards are still using the language.

            BASIC is only good for short uncomplicated tasks. I used to write games with versions of BASIC that were even before Microsoft existed.

            I quickly moved to machine code and then ASM and never looked back. You might think that ASM is even less readable but at least ASM had ORG and Label statements.

            Of course things have changed now and I use a large variety of languages and platforms.

            I’m not saying that BASIC is useless, it has a place. But I would never try to build a complex application with any form of BASIC.

          5. You still don’t seem to get just how different VB.NET is to the code sample you provided. Just because it’s called BASIC doesn’t mean you can move from one to the other with minimal effort (it’s near enough a completely different language). Take this example:

            Imports System.IO
            Imports System.Runtime.CompilerServices

            Module StreamExtensions

            Public Iterator Function GetCSVFields(source As StreamReader, separator As Char) As IEnumerable(Of List(Of String))
            Dim line As String
            While Not source.EndOfStream
            line = source.ReadLine()
            If String.IsNullOrEmpty(line) Then Continue While
            Yield line.Split(separator).ToList()
            End While
            End Function

            End Module

            Do you understand what it is doing and how you’d use it?

            It’s like saying that Latin is just like Italian. The language has evolved a long way and the differences are more than superficial.

  6. Black pcb is fine for some upper ranks but the red is really a neater color for toys, no matter the coat..It harkens back to any toy aside from some wooden blocks we had… Tom Thumb Dial-A-Letter typewriters, et al.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

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