Alok Menghrajani

Previously: security engineer at Square, co-author of HackLang, put the 's' in https at Facebook. Maker of CTFs.


This blog does not use any tracking cookies and does not serve any ads. Enjoy your anonymity; I have no idea who you are, where you came from, and where you are headed to. Let's dream of an Internet from times past.


Home | Contact me | Github | RSS feed | Consulting services | Tools & games

I recently came across a piece of assembly code, written by Li-Chen Wang, which displays a Kaleidoscope. This code was written in 1976, and distributed for $15 on a punched tape. It appears this was one of three pieces of code used to demonstrate the capabilities of Cromemco's Dazzler, the first commercial color graphics card for microcomputers.

Stan Veit, owner of the Computer Mart of New York, described the reaction when he displayed the changing patterns of Kaleidoscope on a color television in his store window at the corner of 5th Avenue and 32nd Street in New York City in early 1976. “People driving by began to stop and look – they had never seen anything like it before. In a short time the Dazzler had caused a traffic jam on 5th Avenue!” The police had to contact the building landlord and make him disconnect the television.

Dr. Li-Chen Wang made quite some important contributions resulting in the growth of the computer industry, such as a free and open source BASIC interpreter as well as pioneering the concept of free software.

It turns out running this code from the dawn of computers in a browser isn't too hard. The code is 127 bytes long. I found an existing 8080 emulator. With the help of this technical manual, I wrote the bare minimum amount of code to emulate a Dazzler. Computer manuals back then were very detailed, especially for hardware that came as a kit, requiring a day or two of soldering.

Below is the result of running the code. In part 2, I cover the question of verifying the authenticity of this code. Part 3 looks at the code's control flow. In a subsequent post, I will explain how the code actually works.