2008-08-24

Windows 2000 driver for ATI Rage 128 PRO

My mother's PC broke down quite suddenly about a week ago. PC would boot but the screen said "NO SIGNAL". Guessing the video card to be at fault, I packed up an old AGP card and some other stuff and drove down to see what I could do.

Bingo! Replaced the card and got Windows visible on the screen again. But it was displaying in 800x600 and 16 colors. Windows 2000 wouldn't recognize the card so it defaulted to "VGA compatible."

Thus began my hunt for a driver. The sticker on the card says "ATI RAGE 128 PRO 32MB". Well, ATI is a major player in the video card business, so it shouldn't be a problem, should it?

"www.ati.com@ redirects to ati.amd.com . Seems ATI wasn't big enough to avoid being swallowed by AMD. OK, so far so good.

There's a "find your driver" page with a nested menu that leads to "legacy drivers" leads to a driver allegedly good for Windows 2000. A half hour download on my mom's 56K line.

What's this? "You need DirectX 8 to run this installer?" I cursed a bit at this craziness and proceeded. Eventually got to the installer and... "This driver is not compatible with the card(s) in your computer."

I spent 4 hours with Google and downloading drivers from other sites. Many sites, such as softpedia.com, give you menus and descriptions and make your mouth all watery... only to send you back to ATI/AMD's page.

Finally found a "reference driver" at www.treiber-world.de that worked. I thank the good folks there, and hope my reference to them doesn't get them in trouble with AMD.

2008-08-18

Date Arithmetic

In 1996 I wrote a log file management utility on a UNISYS mainframe. It's written in SSG, an obscure script language that has no built-in date arithmetic. It worked mostly OK with my own home-cobbled date arithmetic routines, but every now and then I get complaints about it blowing up due to date-related problems. Time for correct and robust date arithmetic!

I came across these algorithms by Gary Katch. They are short, fast and easily portable. All that's required is integer arithmetic in about 32 bits.

There's no copyright notice on Gary's page, so assuming his consent I'll excerpt the bare bones here, just in case his page gets lost on the 'net:


Calculate day number from date


Given integer y, m, d, calculate day number g as:

function g(y,m,d)
m = (m + 9) % 12
y = y - m/10
return 365*y + y/4 - y/100 + y/400 + (m*306 + 5)/10 + d - 1 )

Calculate date from day number


Given day number g, calculate year, month, and day:

function d(g)
y = (10000*g + 14780)/3652425
ddd = g - (365*y + y/4 - y/100 + y/400)
if (ddd < 0) then
y = y - 1
ddd = g - (365*y + y/4 - y/100 + y/400)
endif
mi = (100*ddd + 52)/3060
mm = (mi + 2)%12 + 1
y = y + (mi + 2)/12
dd = ddd - (mi*306 + 5)/10 + 1
return y, mm, dd



In these routines, "%" means modulo, and all division is integer (and thus truncated). I've found them to work well and can recommend them.

2008-08-15

Teamspeak under Linux

I play World of Warcraft on a machine running Kubuntu 8.04 . TeamSpeak is practically required for in-game voice communication.

Sadly, TeamSpeak doesn't play nicely with sound systems under Linux - it blocks an entire sound device.

Some solid information and advice on how to deal with the problem, the best I've found yet, is found on the Linux Gamers site.