Retro Assembler

July 21, 2017

I spent the majority of my childhood and my early adult life coding a lot of demos and a few games on Commodore 64 and Plus/4, in assembly. Later I also worked on demos for the Amiga and Gameboy Color. I miss those days a lot, and in the recent years I had this recurring urge to write a new C64 demo. Or at least do something in assembly because it's just fun. After spending quite some time reading up on the ins and outs of ARM V7 that I could code for in my Raspberry Pi, I realized that it's just silly to go down that route. The Pi hardware is surprisingly poorly documented, people are just guessing or reverse engineering Linux distributions to figure out how the GPU's screen buffer can be accessed, mail slots and messaging, ummm no thanks. I can spend my time a bit more wisely, and my heart is captured by the Commodore 64 forever anyway.

My friends and I used to code in an awesome utility called Turbo Assembler, it's still a fascinating piece of marvel. It loaded to the memory address $9000 and upwards, and the tokenized source code was building downwards from there, so it left us plenty of work space in the 64 kilobytes RAM that the Commodore 64 and Plus/4 were built with.

Back in those days I wished I could write my own assembler, but I couldn't even imagine how I could do that effectively, with at least the same features I used in Turbo Assembler. Then decades passed, I worked on a bunch of serious software, and suddenly it didn't sound impossible anymore, just a bit challenging. I decided that if I'm going to code a new demo (or twenty), it must be done in my own assembler. I got to it, started working on the project on a Sunday morning on June 18th, and by the next Saturday it compiled the first test source code, a music player.

Retro Assembler was born.

Retro Assembler – Commodore 64 source code in Notepad++

After a month of work on it (not full time, just evenings and weekends), it's ready to be published. It's so advanced that it could easily be called a version 2.0 but I'll just go with a solid 1.0 for good measure. I'm afraid I got a bit carried away with it (in the meantime my wife Leslie binge-watched all five seasons of Orange Is The New Black), now it's a macro assembler with a lot of serious features. I made it to support the MOS6502 microprocessor family, so most Commodore computers and some early game consoles (Nintendo NES, Atari 2600 etc) can be targeted with it. But it's not all it will ever do. The application was designed in a way that adding other CPU types is doable with moderate amount of work, so in a future release the Gameboy CPU will be supported too, and shortly after the Zilog Z80 as well. I might even code something for the ZX Spectrum I never had. Motorola 68000 and perhaps ARM may be supported as well, but those can wait.

For all the features check out the rather extensive documentation, but here are the highlights:

I guess that's good enough for an initial release. I don't expect too many people to start using it, but even if nobody ever downloads it, I don't mind. I'm really proud of this assembler and now it's time for me to start working on that demo. Fellow sceners, I'm back!

Download
RetroAssembler.zip Version 1.0 (70KB)

Platform: Windows command line (Requires .net Framework 4.7)

Ambience

July 20, 2017

This is a bit of a recap. I wrote this app in April 2015 and now I issued a minor update.

Ambience puts you into the mood for work or relaxation by playing ambient sounds in the background. Whether it's nature or a busy coffee shop that helps you to get into the zone, Ambience got you covered. The app is based on Noizio for macOS and iOS, but it had no Windows version, so I made one.

Ambience – Noizio for Windows

Back then not only I made it High DPI aware, but also created an installer version. I decided to drop the installer due to its issues, the app can be used in portable mode which is better anyway. And with the release of Windows 10, I made a small adjustment in the header to look better with white title bars and compiled the app for .net Framework 4.7 which will be the minimum version for my applications from now on.

Download
Ambience.zip (32MB)

Platform: Windows (requires .net Framework 4.7)

Big thanks to the makers of Noizio for the sounds and images, they deserve all the credit for those. Go and check them out if you've got a Mac, iPhone or iPad.

Here We Go Once Again

July 20, 2017

A couple of years ago I restarted this website, but it didn't go too far before I neglected it, as it happened before. Now once again I'm doing the same thing, hoping this time it sticks. As usual, these reboots are tied to blog engine rewrites and guess what, I've rewritten this blog engine again. One might think that I don't like to blog, I just like to write blog engines. One might be right. One may also recall the definition of insanity at this point.

Anyway, this blog is a platform for my thoughts, an outlet where I can write about things I developed, used, enjoyed, experienced, or just interesting to me. It may even contain some details of my personal life. How it will go remains to be seen, these pages are here to be filled with something you may find valuable or just entertaining. There are so many things in life that won't fit into a tweet.