When I reorganize my hard-drive, I came across my old collections of programs that I wrote long time ago, among them was an Audio CD Player dated in 1995-1996. Applications that can play Audio CD's are ubiquitous nowadays, every main stream OS comes with one pre-installed, but that's not the case for DOS, in fact, not even everyone owns a CD-ROM drive back then.

Programming in DOS was fun, I meant, for many tasks that seems easy today or taken for granted, you have to come up with your own solutions, such as switching to graphics mode, initializing and communicating with mouse, etc. Yes, if you never heard of it, mouse has to be initialized first with interrupt call before you can program with it. I still remember that was interrupt 33H for mouse. By the way, mouse driver has to be loaded explicitly before that. For graphics mode, thanks to Borland's BGI, unless you have to do double buffering to avoid flicker (common requirement in game programing), you don't have to deal with assembly and differences between video drivers, you are programming against a set of universal interfaces. All in all, you will learn a lot by doing everything yourself.

So that was my first complete GUI program under DOS with mouse support, that I wrote in C in 1995. I rewrote the mouse communicating part with assembly shortly after, then completely rewrote the whole thing again with C++ one year later. Both versions were weighting about 40K SLOC. It can play Audio CD's (the obvious), supports many playback modes common in real audio CD players: random, shuffle, single repeat and full repeat, and a way to edit playlist. I tried to mimic the color scheme of LED panel and added a little bit animations, for power-on/off, ejecting CD, etc.

Lost in thoughts, I unconsciously fired up DOSBox, launched it, and took a screenshot, this is it, with power turned on:


A CD Player for DOS that I wrote in 1995-1996.

You might be asking why the surname in background does not match my real one, well, that shows my own stupidity back in the days. I thought it is uncool if one does not have an anglicized name with which to publish software and I pick that one for no particular reason. That was naïve, I admit.

Anyway, those were the good days.