Thursday, April 26, 2012

Reference Referral

I don't have anything outstanding to mention from my exploring and labeling of assembly today.  I mostly have started going to the deepest nested levels of the unlabeled functions I have left.  The best way to identify a function you don't understand is usually to identify the other functions that it calls.  This led to not only labeling many functions today, but also many variables.  So I made a lot of progress, even if not much of it was actual game code and was more just support functions.  But it's always satisfying to figure one out, regardless of its purpose.

Today it was mostly functions and variables which had to do with OS detection and serial port interaction, with a tad bit of FOSSIL driver stuff.  This meant lots of referring to interrupt and I/O port lists to figure out what was going on.  And that's why I decided to make this post.

There's something out there which I've known about for many many years now, and it's something that I think a lot of lower-level and/or old-school programmers all have a copy of.  I'm talking about Ralf Brown's Interrupt List.  Or simply the RBIL if you prefer.  It's a very detailed listing of near everything which ever used an interrupt, I/O port, or memory address in a PC, up until about the year 2000.

When I first got a copy, it was late 90s, though I had no idea that the thing had been around since 1981.  This was around that time when I'd started breaking out of my Turbo Pascal cage, having thoroughly read through the built-in help and learning about I/O ports, interrupt hooking, and memory access in the process.  So finding this collection of information in the RBIL was like a pot of gold.  I liked making games at the time, so messing with the video card's registers and memory was my biggest draw.  I could do things better and faster than Pascal normally allowed.  Simple curiosity eventually led me to also hooking interrupts, directly accessing the keyboard and serial ports, etc.  Basically, anything in my PC I could mess with, I tried it.  And I was doing all of this before I even knew C!

None of that would have been possible without the RBIL.  It would have been like when I had an Atari 800 years before that, and had seen the POKE and PEEK commands used in various Basic programs, but had no idea what the heck they did or what kind of possibilities they allowed because I had no kind of reference.  So it makes me wonder just how many other developers that the RBIL inspired to do more.  And I wonder how many game developers and software companies relied on this list to make their products.  Maybe it was indirectly responsible for games like Wolfenstein 3D and Doom, for all we know!

Ralf Brown may have not contributed all of the information himself, but he maintained it.  And nearly twenty years is an incredible amount of dedication to ensuring that there was one central list of information that software and hardware developers could rely on.  Even though twelve years have passed since it was last updated, and a lot has changed inside of PCs in the meantime, a lot of the information in the RBIL is still just as relevant as it ever was.  And it will continue to be relevant until the PC architecture is dead, when/if that ever happens.

So kudos to Ralf, and to everyone who contributed to making the RBIL possible.  All of us geeks much appreciate it!


No comments:

Post a Comment