Silicon Image eventually came out with a chip which couldn’t be controlled by simple register reads and writes. The chip designers created a device which could accept a video input stream and scale the image to a new resolution. It could also superimpose a message or picture onto the stream: an on-screen display (OSD) message.
To define and modify these OSD messages (text or picture) one had to program a lot of registers for font, color, character strings and image. It was not practical to do this with peek-and-poke instructions.
I saw a problem waiting for a solution!
I went to the bookstore and bought two books: one on Visual Basic, the other on Graphic File Formats. I taught myself the former, and experimented with the latter. No one had requested a better software tool for this chip. It just seemed like the right thing to do, to make the chip that much more useful to customers.
I was working in the Technical Marketing department at the time, with a primary responsibility of developing Data Sheets, Application Notes, and similar documentation for customers. There was no one else to step up to create a programming tool for this chip. I had wanted to learn something new, and discovered that Microsoft’s Visual Basic was cheap and I could buy an adapter to connect the PCB to my desktop PC.
I studied the books, tried some prototype code, and eventually wrote a large program with a GUI, to allow the user to setup, monitor and debug the chip. It communicated across a UART-to-I2C adapter, which meant customers could use it in their own designs, too. Included in the code was a section for loading in a GIF file to use as a test screen, and an on-screen display (OSD) text editor.
At the end of a couple of months I had a PC program which could read in a JPG or GIF file, show it in the program, and stuff it into the chip’s memory. The program could also define font characters (one by one, it was still tedious, but at least visual), and color mapping. The data could be saved to and loaded from files, and read out from and be written into the chip. It felt really good to run the program, and in parallel I wrote the User Guide, Programmer Reference and Data Sheet.
And everyone loved it!