How I got here
In the mid 70's, I finished High School, and moved on to the "University of New Brunswick" I originally enrolled in electrical engineering courses, as I had always been keen to build electrical things, but the University introduced me to computers because they had an IBM 360 mainframe. Here was a way to create cool stuff without having to build it! It was not long before I switched to study computer science.
I got to know people at the university computing center, and one who became a lifelong friend was building his own system based on the then new Intel 8080... I had to have one too, so we continued building them together.
Once I had a system, I immediately started creating low level software for it. I got deep into the world of ROM monitors and assembly language. (I wish I had kept a photo of my homemade wooden keyboard).
There were some mainframe high level languages available (Fortran, COBOL, PL/1 etc.) but they were large, complicated and quite beyond the capability of my little 8080. So I gained a lot of experience in assembly language which remains high on my list of preferred ways to program even today.
Around the same time, a couple of chaps at BELL LABS named Brian Kernighan and Dennis Ritchie had created a programming language they called C. This was not like other high level languages, much closer to the basis of how a computer worked and closer to assembly language than others all the while removing the need to focus on and keep track of a myriad of little details. This was clearly a winner as it remains the basis of the most popular languages today.
I didn't really find out about it until into the 80's, and I realized this was a definite option for small systems. By this time I had mostly moved on to the 6809 which had many capabilities which made it a good C candidate.
About mid 80's, I decided to implement C for my micros (by this time I had built quite a few different systems). I began working on my own Micro-C, and being somewhat of an efficiency nut, I worked very hard on making it capable of generating reasonable code for both processors (which were quite different in architecture).
I had the basics working fairly quickly, and in 1988 I publicly released the first version of Micro-C. This release had code generators for the 6809 and 8080, and in subsequent years I expanded this to include: the 68HC08, 68HC11, 68HC12, 68HC16, 8051/52, 8088/8086, 8096 and AVR families, as well as my own "C-FLEA" a tiny virtual processor optimized for running C code (more on this later).
During this time I learned that some guys named "Ron Cain" & "James Hendrix" had developed their own "SMALL-C", I took a look and found it to be lacking many of the fundamental language features and rather poor at code generation. It did however show me that others were interested in very small C setups.
For anyone who is interested, here is a document that I wrote back in the day comparing the two systems.
And for the record, I didn't choose the name "Micro-C" because I envisioned it as being overly small or "microscopic" in code terms (like much of my code it does seems above average in those areas), but because I envisioned it as being very useful on microprocessor based systems (which were fairly primitive at the time).
I founded DDS (Dunfield Development Services) selling various mail order software products, but by far the most successful were the embedded versions of Micro-C. I made a good living from this for many years and sold thousands of these tools. The compiler received many favorable reviews by various magazines and technical journals and was very well liked by it's users.
During this time I became fairly well known on a worldwide basis. I do not at all claim to be famous, but in certain technical circles I had a fair bit of influence.
And job offers kept coming in... Eventually some local hightech companies doing very interesting things approached me and I jumped on the bandwagon.
I continued to sell and support Micro-C for some time, but wasn't really doing a whole lot of new development. As computers became more powerful the little Micro-C system became less important and fell to the sidelines.
I did work for a number of years at various local hightech companies, and managed to keep fairly busy - which brings us to 2019.
In 2019 I had a major health incident! (not Covid - if you want to know more there's an account of what happened to me on the "About Dave" page). I was out of commission for quite a few months, and during this time the guy I was working for retired and closed his company. And on top of this, the global Covid pandemic has pretty much everything shut down or running at reduced capacity. So I have had A LOT of time on my hands.
I've always been a bit of a DOS nut .. not because I am overly fond of DOS itself, but because it doesn't much get in the way. Things were SIMPLE under DOS - I wrote tons of stuff using all my own tools and with surprisingly little effort.
Even as DOS receded and Windows began to take over, DOS software still ran and ran well under Windows DOS emulation... but in recent years Windows has gone 64bit and 16bit DOS software is no longer supported at all.
I looked at development tools for Windows, but the capable ones seem insanely complex and almost everything needs to be "installed". No more just ripping out a simple tool/utility and easily copying it around where and when it's needed.
I do use DOSBOX a fair bit, but it has some major bugs not relating to video games and the developers make it clear they have no intention of supporting the running of anything other than video games. DOSBOX is also big, has quite a few files and has to be configured with it's own file system.
It also stores data in hidden places like "appdata" in Windows that will hang around "forever". In other words it's a "big ask" to advise someone to put a lot of "stuff" on their system (and learn how to configure, use and clean up after it) just so they could run a simple utility.
Having lots of time on my hands, I decided to see if I could come up with a solution. Not wanting to port my tools over to Windows (same problems as mentioned above), what I came to was I needed a virtual machine much simpler than DOSBOX that could run my code very well.
Remember "C-FLEA"? my virtual CPU designed for my compiler? .. it was a good place to start. It was originally designed for very small systems, and with a few enhancements works just as well (or even better) on larger systems. Thus "Dunfield Virtual Machine" (DVM) was born.
For anyone remaining interested in Micro-C's development, here is my internal change log.
Back to "About Dave".
Back to DDS main page.