Skip to content

Category: News


A modern toolchain for Vectrex development

Recently i read an article about the Vectrex game console. I kew the system a bit, also played it when it came out in the early 80s at a friends house. But i never really hat a connection to the system, like i have for the SNES or the Amiga computer.

Since writing an emulator is on my programming bucketlist, i recenlty took a look at simple platforms that i could start to write an emulator for. I looked into stuff like Chip8 and the GameBoy that seemed easy to emulate, in comparison to a PS1 or N64.

So the Vectrex got interested. I started reading its specification. It all seemed straigth forward to me. The Vectrex uses a Motorola 6809 CPU, which is not a super common 8bit CPU, but was used in the Dragon home computers. Otherwise there is an AY-3-8912 for the sound and 1KB RAM and 8KB ROM.

To get started i took a look into homebrew scene, to figure out getting own code runing on the machine. As usual for systems from that time it was mainly programmed using machine code. Which i kind of like, but also implicates a higher learning curve. There is typically no middleware or frameworks that helps you with anyhting, so you have to learn all the HW registers and figure out how to stuff.

So i was surpised to find a of modern c toolchain with some libc and bios support. I ended up following the instructions for a modern c based toolchain.

The toolchain basically consists of a c compiler, assmbler & linker and a emulator. It also came with and SDL based Emulator, but it would not run on current MacOS because of the unmaintained/bugfixed SDL library. So i decided to port the the emulator to SDL2, which was fun learning the render contexts of SDL2.

So thats what iam using

  • CMOC – The C compiler
  • LWTOOLS – Assembler and linker for the 6809
  • VecX – Vectrex emulator

I started off modifying the c examples that came from Johan who ported the CMOC compiler suite to the Vectrex system.

This is what i came with, you can find the code in my sample repo.

VecX Emulator

Leave a Comment

Update about my company

Its been a while since I blogged about the development of my company Userlike that I co-founded in 2011. Last update was 2 years ago

As you might expect running a company needs a lot of time and energy. So my left free time is mostly reserved for my family and social activities. You could say that free time for my hobbies became a rare thing. The last couple of years I saw a definite shift that I tend to spent more time on not computer related stuff during my free time. Lately I spent more time playing the guitar, re-booting an old hobby of mine. Actually this one involved also a bit computer work, since I figured I need to build my own Midi Controller for my amp modelling software.

Between Christmas and New Years I went on a vaction where I got some unexpected free afternoons on my hand, and I felt the itch to look into my old console projects I had been working. I re-booted some old PSP code, for which I used to development a couple of projects. I started writing an amiga style intro. I re-used some old Future Composer player routine that I ported ages ago to the PSP. Revisiting PSP development, brought some nice changes.You can run your toolchain in a docker image, which makes cross development easier.

Getting back to initial topic of this blog post. A big step for the company’s development was our move into a new office space. We grew out the old 120 square meter office space. The last couple of month in that space we were using the officw with up to 14 people in 3 rooms. That demanded a lot of discipline and smart approach to our work schedule. But we survived it 🙂

Peter & Jörn

Office with a view

Finally we found a nice office space not to far away from the old office, still very close to the center of cologne. Everything is in 10 minutes walking disctance, eihter to the main station or into the center of the city.
The office is bit over 400 square meetinfs consisting of 5 rooms. Three big open space loft offices, a meeting room, a lounge area and a kitchen.

After we moved in and exchanged all our office furniture, we gave our office a new look with the help of Grafit. The office make over was celebrated at our Summer party.

Like switching office we also replaced our website, multiple time. When we moved in the old office the website looked kind of like this.

Our old website like 4 years ago from 2015

And we transitioned to a new style. Next version website from 2017

And right we are in the process of releasing a new website again. Latest version website from 2019

Latest version website from 2019

Latest version website from 2019

Its been a crazy time developing the company. Our headcount grew from around 15 people working at the old Userlike office to arround 40 people today. My development team grew from a 3 people (including me) to 10 developers.

Which also means a shift in my line of work, that I transitioned coding to managing a team. It’s been challeging 2 years for me because we mostly grew the development team to build a new big iteration of our product.

We are changing couple of components in our current stack. First we unify our operator and user facing chat application to one code base using React. Also we are throwing out XMPP as our main message broker, and switching to a custom component, that is part of our new chat server. We switched to Python with
Greenlets and giving up node.js. These steps help us to share code between our apps and also reduce also the distributed state handling between application, since we have less “moving parts” in our stack. Its been a rough start. Because we didn’t realise in the beginning, that most of our problems were related to our internal protocol shortcomings and complex state handling. Once we addressed this by developing a new chat server with a new protocol, things picked up very quickly. Looking forward to release the first iteration of the product.

The new production iteration will open us a lot of new usages of our chat application. Despite an new look and improved UX, the biggest conceptional switch for us is to leave the online/offline paradigma of live chat and transition to a sync/async paradigma of a messaging application. This will improve our messenger integrations like Telegram, Facebook and WhatsApp.

We had 2 strong years of growing our product and customer base, we have a stronghold in the German market and were able to subscribe a couple of enterprise customer which we could attract with a strong product, professional onboarding services and custom integrations as well as custom tailored solution like chat bot integrations.

Looking forward to a successful 2019.

Leave a Comment

Building a Company

Its been some time since I blogged about the development of my company Userlike that I co-founded in 2011. It has been 5 busy years since I last blogged about Userlike.

Since then I haven’t had a lot of time to work on gaming console related hobby projects. (Despite some work on the AspectQt port and a Amiga Intro I made). I hope to find more time to work on new projects. I already have planned to update the quickdev16 software a bit.

It has been an awesome time developing the company. Our headcount grew from 3 people working at Userlike to 20 people today. The customer base grew from a couple of hundreds signups to 30k customer accounts that we are handling right now.
4 Years ago we were more or less working from home office all the time. Then we moved into our first office space in the center of Cologne like 2.5 years ago. This was a huge step for us and moved the company forward. As of today we have already outgrown the office space and started looking for a new and bigger place to call our new home.

Wasn’t slow on the technical side either. I guess its fair to say that we replaced each of our software components at least once by a either re-write or different approach. And still we are refactoring and getting rid of technical debt all the time. On of our most visible components is the chat messenger widget itself, where we are on the 3rd major iteration. Each major version introduction involves a migration phase for our customers. This is always a huge task for the development team, to make the migration smooth as possible while maintaining multiple software versions of the messenger.

Developing a SaaS can be tricky. You always have to balance between customers requests, not falling behind competition and don’t overloading your product with options that hardly anyone is using. The challenge is to find the right compromise, being pragmatic sometimes helps.

Devops side of the project wasn’t less interesting. Last year we switched our datacenter, since we had outgrown our old setup and approach of scaling we went for something new. Now we rely on automatic deployment of our system which we solved with Ansible and are very happy with it.
Another big change for our infrastructure was to switch from MySQL to Postgres. The reason for this was quite pragmatic. We used to store all business data in MySQL and stored all bulk data in a mongoDB. Over time and a growing dataset it became clear mongoDB is a hard to handle memory wasting database. So we decided to move to Postgres and merged the mongoDB bulk data using the Postgres JSON type feature. It was quite a task to do the data migration, but since then we never looked back.

We kind of matured the feature set for Userlike over the last 4 years and already branched out into new fields. We started integrating different messenger channels like Telegram and Facebook.
Another new development will be to break up the online / offline communication paradigm to a more async and sync communication which will yield to higher usability for professional support teams using Userlike.

Btw, we are hiring and extending our developer team. If you are a python and javascript person, or like building infrastructure, we might have the right job for you.

Leave a Comment

Bake that Book

Last Summer i gave my old Macbook Pro 15″, Late 2011 with 8GB and 160GB SSD to one of my team members at Userlike, since i got a Retina upgrade. I think the old one was still decent, since the SSD gave it that boost to make it usable, even if the laptop was 2 years old at that time. Unluckily the old Macbook Pro didn’t last long, it just died after 3 month. Wouldn’t turn on anymore. As i predicted, after bringing it to the Apple Store, they said the logic board was fried, which always means its totaled. We bought a new Macbook and moved on.

Now i got the broken Macbook back to my place and i thought i would at least sell the display, case and reuse the SSD. But i remembered reading all the Macbook baking blog articles. I already disassembled a few Macbooks down to the logic board and also did some reflow stuff for side projects. Also knowing that a friend of mine has good experience with baking old Nokia phones, i though i give it a try.

  • Go to and look up the tutorial to change the logic board
  • Disassemble the laptop, collect screws and parts in separate containers
  • Be becareful with all the ribbon cable connectors, there are a lot and some are tricky
  • Get the logic board out, remove heat pipes, ram and speakers
  • Preheat oven to 180c
  • I cleaned the board with isopropyl alcohol
  • Set board on tin foil legs on a baking tray
  • Put in the oven for 7 minutes
  • Let it cool fast at a open window
  • Clean fans and case from the inside
  • Assemble, make sure to get all cables connected
  • Boot that Book

I hoped that i had a 50/50 chance that it will work. I was confident, that i don’t mess the laptop during disassemble and assemble phase, i wasn’t sure what the result was after baking. I remembered that the laptop got quite hot while working, so there were some odds that this permanent heat would have altered the setup of the parts of the pcb. And it turned out to be worth the work, the Macbook booted up nicely.

Get your tools







1 Comment

Meet my new project Userlike

Its not that i have been kind of lazy about blogging the last year, its just i didn’t to anything on my side projects like SNES hacking or the like. I quit my day job last year and started founding my own Company [Devcores]( Last Summer i began coding our first SAAS wich entered the beta phase last december. Lets meet [Userlike]( It’s a webbased live chat system targeted for online shops. It SAAS and can be added with one line of javascript to your website. We are in private beta right now and plan to release the first public version with the next 2 month. If you want to test it, drop me a line and i will get you an account.


Leave a Comment

Super Nintendo Talk

A while ago i held a talk at the [ccc]( in cologne about my favorite game console the Super Nintendo. This talk covers the Super Nintendo technology in detail. Starting with the CPU and PPU, covering the cartridge memory maps and showing most of the custom chips which where used on cartridges. I also show development hardware, copier stations and the current available flashcarts. The topic emulation is also covered . The second part of the talk is about the [quickdev16]( project, which i did with my friend max in 2009. We built a flashcart for the SNES which is useful for developing homebrew software. The talk sums up all the details i learned during the research i made to built this kind of cartridge. I uploaded the [slides](, maybe someone find this useful to dive into the SNES world.


New Quickdev16 Loader

We got a new loader for the Quickdev16 firmware. The loader will replace
the current dummy loader and has a few new advantages:


* Faster upload because of IRQ driven communication between SNES and AVR
* Progressbar while uploading
* Display Rom infos
* ASCII and Katakana font support
* Eyecandy: new logo design with sine wave effect and bassdrum synced
background effects..

Due to these features the loader blew up to more than 55kb, too much for
our limited space in the AVR progmem (64kb – 4kb bootloader). Our main
firmware is between 8kb and 24kb, depends on the debug-features that you
compile in. So the recent task is to either reduce the loader size by
skipping eyecandy, finding a better compression routine to compress it
in the progmem or build a minimal firmware and put parts of the loader
into the surplus 4kb eeprom on the AVR. Probably we will have to combine
the different approaches.

One reason why the firmware is that big these days is the new “minimal
debug terminal”, a serial command line where you can maintain the
Quickdev system status. You can dump memory regions from sram, switch
between the busses, write to the shared memory section, show the status
of the hardware ports and use several other usefull commands. Check the
project page for more details on the commands.

1 Comment

Quickdevs are shipping

Last week we shipped the first batch of Quickdevs. The Software is feature ready, but we wanted to do some eye candy on the SNES software side, which didn’t work out yet. So software updates are coming within the next weeks.

Feel free to order at david @


Quickdev16 Project Page is ready.

Finally our project page for the Quickdev16 becomes available. You will find information how to download or build all needed software from scratch.

We gonna build the first batch of 10 cartridges this week. So stay tuned.

Home | quickdev16 | Assembla_1252313267848

1 Comment