From OSDev Wiki
Jump to: navigation, search



Who is John Burger?

I'm an Australian citizen that has been interested in software programming ever since I crashed my first mainframe at the age of 12 (1980). It was running a Tic‑Tac‑Toe program that refused to believe I could beat it three times in a row, and 'crashed' in a sulk when I did. OBVIOUSLY looking back on it I now realize that it was programmed that way - but at the time the feeling of terror, angst and panic made me the Ethical Hacker I am today.

What is John's history?

I first started writing code in 1981. BASIC, Pascal and Forth were my first languages. It was only when I crashed a mini-computer's Pascal compiler that I realized that a compiler was merely yet another program, prone to the same foibles that beset other mere programs I myself had written.

I started learning assembly in 1984 on my TRS-80 Color Computer with a 6809 processor. When I joined the workforce in 1987 I soon learned x86 assembler, and wrote some TSRs and application libraries that were used for decades to come.

In 1990 I decided to write my first OS. The 386SX had come out, and was cheaper than other PCs at the time. The Olivetti PCS-386SX was a sturdy little workhorse, and its BIOS came with a ROM monitor! I could access RAM and the hard disk directly, without booting into an OS first! I still have three of these systems today.

My first tools were Borland's products (I bought TASM and preferred it over MASM), and started to hack and experiment. It formed the basis of my (abandoned) Masters project - alas, work took priority.

What about now?

Most of my career has since been in 3GL - Pascal, C/C++ and Java - rather than the higher-level languages and frameworks that litter the IT landscape now. I guess you could call me a dinosaur - except that I'm currently writing C for x86, ARM and PowerPC embedded systems that keep me close to the hardware, where I feel most in control.

So what happened to your OS?

I've been lurking on a number of websites (including this one) for a while now, and I've finally decided that I want to resurrect where I got up to. Most of my last couple of decades have included a teaching component, so I fully expect to write a couple of tutorials about low-level OS implementation. Look for some interesting content!

But step one was to resurrect my development environment - and it sucks! I use 64-bit systems now, and they refuse to run the old (OLD!) tools that I grew up and got comfortable with. That's OK: surely the new tools are better now? WRONG!

Most of them refuse to produce for anything other than existing OSes like Windows or Linux. I want complete control. Raw. Binary. 16-bit for boot sectors, and transitioning to 32- and 64-bit as necessary. Nope: not happening. And unfortunately the ones that DO work aren't large-system friendly. Oh sure, they can assemble code, but they don't assume you've got a large code base, and they do assume that you are good enough to keep the ENTIRE source code in your head at the same time. Hey! I'm getting old! And I expect the tools to TELL me when I'm doing something foolish.

To this day, to my mind TASM is still the best assembler out there. I'd love to be proven wrong, but I have looked at quite a few... Luckily Borland produced 32-bit versions of their tools just before they imploded (Inprised?), so I'll just use those - except that most people don't have TASM anymore. It seems that the Netwide Assembler NASM is the assembler-of-choice, so as much as I don't like it my code here will be in NASM format.

All right. But what can you do for us?

Hopefully, a lot. I've resurrected some of my early work, updated it for today's development environments, and have re-published my work for your edification. Please take a look at my latest demo - or indeed any other of my Wiki pages.

Personal tools