1*eaa278a2SDavid du Colombier 2*eaa278a2SDavid du ColombierFrom The Be Newsletter 3*eaa278a2SDavid du ColombierVolume 3, Issue 8 -- February 24, 1999 4*eaa278a2SDavid du Colombier 5*eaa278a2SDavid du Colombier-------------------------------------------------------------------------------- 6*eaa278a2SDavid du ColombierBE ENGINEERING INSIGHTS: Adventures in Graphics Drivers 7*eaa278a2SDavid du ColombierBy Leo Schwab -- <ewhac@be.com> 8*eaa278a2SDavid du Colombier-------------------------------------------------------------------------------- 9*eaa278a2SDavid du Colombier 10*eaa278a2SDavid du ColombierThis adventure is more true than I might otherwise be 11*eaa278a2SDavid du Colombierwilling to admit. All persons and events depicted are 12*eaa278a2SDavid du Colombierentirely fictitious, except where they aren't. Unflattering 13*eaa278a2SDavid du Colombiercharacterizations of certain organizations are entirely 14*eaa278a2SDavid du Colombierdeliberate and intentional. 15*eaa278a2SDavid du Colombier 16*eaa278a2SDavid du Colombier You are in a cube. In front of you is a 16" 17*eaa278a2SDavid du Colombier (visible) Sony monitor. In front of that is a 18*eaa278a2SDavid du Colombier Mitsumi keyboard and an unbranded mouse. Just to 19*eaa278a2SDavid du Colombier the right is a 266 MHz PC clone. The system is 20*eaa278a2SDavid du Colombier running a development version of BeOS R4. 21*eaa278a2SDavid du Colombier 22*eaa278a2SDavid du Colombier There is a graphics card here. 23*eaa278a2SDavid du Colombier There is a floppy disk here. 24*eaa278a2SDavid du Colombier There is a note from your boss here. 25*eaa278a2SDavid du Colombier There is a Hoberman sphere here. 26*eaa278a2SDavid du Colombier 27*eaa278a2SDavid du Colombier> INVENTORY 28*eaa278a2SDavid du Colombier 29*eaa278a2SDavid du Colombier You have a well-used satchel. Inside it are 30*eaa278a2SDavid du Colombier 31*eaa278a2SDavid du Colombier A set of screwdrivers 32*eaa278a2SDavid du Colombier A small telescope 33*eaa278a2SDavid du Colombier A 16M laptop RAM module 34*eaa278a2SDavid du Colombier A book on decorative knots 35*eaa278a2SDavid du Colombier A PCMCIA Ethernet card 36*eaa278a2SDavid du Colombier Last year's tax return 37*eaa278a2SDavid du Colombier A 166 MHz Pentium laptop computer 38*eaa278a2SDavid du Colombier A bottle of echinacea capsules 39*eaa278a2SDavid du Colombier Hair sticks 40*eaa278a2SDavid du Colombier 41*eaa278a2SDavid du Colombier Your wallet contains $3200. 42*eaa278a2SDavid du Colombier 43*eaa278a2SDavid du Colombier> REPLACE KEYBOARD 44*eaa278a2SDavid du Colombier 45*eaa278a2SDavid du Colombier You put aside the amazingly cruddy Mitsumi keyboard 46*eaa278a2SDavid du Colombier and substitute your favorite AT&T keyboard. 47*eaa278a2SDavid du Colombier 48*eaa278a2SDavid du Colombier> PUT LAPTOP ON DESK 49*eaa278a2SDavid du Colombier 50*eaa278a2SDavid du Colombier The laptop is now on the desk. 51*eaa278a2SDavid du Colombier 52*eaa278a2SDavid du Colombier> READ NOTE 53*eaa278a2SDavid du Colombier 54*eaa278a2SDavid du Colombier "Write a driver for this card. We'd like it in time 55*eaa278a2SDavid du Colombier for R4 release." 56*eaa278a2SDavid du Colombier 57*eaa278a2SDavid du Colombier> EXAMINE GRAPHICS CARD 58*eaa278a2SDavid du Colombier 59*eaa278a2SDavid du Colombier You are evidently the proud owner of a Yoyodyne 60*eaa278a2SDavid du Colombier Monstra VelocElite-LX 128-3D-AGP graphics card. 61*eaa278a2SDavid du Colombier 62*eaa278a2SDavid du Colombier> INSERT CARD IN MACHINE 63*eaa278a2SDavid du Colombier 64*eaa278a2SDavid du Colombier The machine emits a curious and worrying noise. 65*eaa278a2SDavid du Colombier 66*eaa278a2SDavid du Colombier> TURN OFF MACHINE AND INSERT CARD 67*eaa278a2SDavid du Colombier 68*eaa278a2SDavid du Colombier The graphics card is now installed in the machine. 69*eaa278a2SDavid du Colombier 70*eaa278a2SDavid du Colombier> TURN ON MACHINE 71*eaa278a2SDavid du Colombier 72*eaa278a2SDavid du Colombier BeOS R4(devel) boots. You are looking at a 73*eaa278a2SDavid du Colombier gray scale desktop. 74*eaa278a2SDavid du Colombier 75*eaa278a2SDavid du Colombier> EXAMINE FLOPPY DISK 76*eaa278a2SDavid du Colombier 77*eaa278a2SDavid du Colombier The handwritten label reads, "Programming docs." 78*eaa278a2SDavid du Colombier 79*eaa278a2SDavid du Colombier> INSERT DISK AND PRINT DOCS 80*eaa278a2SDavid du Colombier 81*eaa278a2SDavid du Colombier Nothing happens. 82*eaa278a2SDavid du Colombier 83*eaa278a2SDavid du Colombier> INSERT DISK, MOUNT DISK, AND PRINT DOCS 84*eaa278a2SDavid du Colombier 85*eaa278a2SDavid du Colombier The drive spins for a moment, and the command prompt 86*eaa278a2SDavid du Colombier returns. 87*eaa278a2SDavid du Colombier 88*eaa278a2SDavid du Colombier> READ DOCS 89*eaa278a2SDavid du Colombier 90*eaa278a2SDavid du Colombier I see no docs here. 91*eaa278a2SDavid du Colombier 92*eaa278a2SDavid du Colombier> GO TO PRINTER AND GET DOCS 93*eaa278a2SDavid du Colombier 94*eaa278a2SDavid du Colombier The printer is out of paper. 95*eaa278a2SDavid du Colombier 96*eaa278a2SDavid du Colombier> PUT PAPER IN PRINTER 97*eaa278a2SDavid du Colombier 98*eaa278a2SDavid du Colombier There is no paper here. 99*eaa278a2SDavid du Colombier 100*eaa278a2SDavid du Colombier> STEAL PAPER FROM COPIER UPSTAIRS 101*eaa278a2SDavid du Colombier 102*eaa278a2SDavid du Colombier After installing the liberated paper in the printer, 103*eaa278a2SDavid du Colombier you print your docs. 104*eaa278a2SDavid du Colombier 105*eaa278a2SDavid du Colombier> EXAMINE DOCS 106*eaa278a2SDavid du Colombier 107*eaa278a2SDavid du Colombier The cover page reads, "Yoyodyne Monstra 108*eaa278a2SDavid du Colombier VelocElite-LX 128-3D Programmer's Reference. Alpha 109*eaa278a2SDavid du Colombier Revision 05-31-98. Confidential and Proprietary. 110*eaa278a2SDavid du Colombier Restricted Secret; Level Violet. Do not expose in 111*eaa278a2SDavid du Colombier public. This document must be kept secured when not 112*eaa278a2SDavid du Colombier in use. Disclosure of this document to third 113*eaa278a2SDavid du Colombier parties is punishable by death." 114*eaa278a2SDavid du Colombier 115*eaa278a2SDavid du Colombier> READ DOCS 116*eaa278a2SDavid du Colombier 117*eaa278a2SDavid du Colombier After several hours, you finish reading the docs. 118*eaa278a2SDavid du Colombier The VelocElite-LX is a depressingly predictable 119*eaa278a2SDavid du Colombier variation on the VGA register set. There are some 120*eaa278a2SDavid du Colombier registers that have unhelpfully terse descriptions. 121*eaa278a2SDavid du Colombier The card also has the ability to execute rendering 122*eaa278a2SDavid du Colombier command lists out of RAM. 123*eaa278a2SDavid du Colombier 124*eaa278a2SDavid du Colombier You now know enough to write a rough driver for the 125*eaa278a2SDavid du Colombier card. 126*eaa278a2SDavid du Colombier 127*eaa278a2SDavid du Colombier> WRITE ROUGH DRIVER 128*eaa278a2SDavid du Colombier 129*eaa278a2SDavid du Colombier After several days, you have driver ready to test. 130*eaa278a2SDavid du Colombier 131*eaa278a2SDavid du Colombier> INSTALL DRIVER AND TEST 132*eaa278a2SDavid du Colombier You reboot the machine. The screen is blank. 133*eaa278a2SDavid du Colombier 134*eaa278a2SDavid du Colombier> RUN 'minicom' ON LAPTOP 135*eaa278a2SDavid du Colombier 136*eaa278a2SDavid du Colombier The 'minicom' terminal emulator is now running in an 137*eaa278a2SDavid du Colombier XTerm on the laptop. 138*eaa278a2SDavid du Colombier 139*eaa278a2SDavid du Colombier> PRESS ALT-SYSRQ ON MACHINE 140*eaa278a2SDavid du Colombier 141*eaa278a2SDavid du Colombier Nothing happens. 142*eaa278a2SDavid du Colombier 143*eaa278a2SDavid du Colombier> PLUG SERIAL CABLE INTO LAPTOP 144*eaa278a2SDavid du Colombier 145*eaa278a2SDavid du Colombier The "kdebug>" prompt from the kernel debugger 146*eaa278a2SDavid du Colombier appears on the XTerm. 147*eaa278a2SDavid du Colombier 148*eaa278a2SDavid du Colombier> EXAMINE REGISTERS 149*eaa278a2SDavid du Colombier 150*eaa278a2SDavid du Colombier After thirty minutes, you determine that two of the 151*eaa278a2SDavid du Colombier sync registers are set incorrectly. 152*eaa278a2SDavid du Colombier 153*eaa278a2SDavid du Colombier> FIX BUGS IN DRIVER AND TEST 154*eaa278a2SDavid du Colombier 155*eaa278a2SDavid du Colombier You can't see anything. 156*eaa278a2SDavid du Colombier 157*eaa278a2SDavid du Colombier> REBOOT IN SAFE MODE AND FIX BUGS 158*eaa278a2SDavid du Colombier 159*eaa278a2SDavid du Colombier A new version of the driver is ready to test. 160*eaa278a2SDavid du Colombier 161*eaa278a2SDavid du Colombier> TEST 162*eaa278a2SDavid du Colombier 163*eaa278a2SDavid du Colombier You reboot the machine. You see a color BeOS 164*eaa278a2SDavid du Colombier desktop. 165*eaa278a2SDavid du Colombier 166*eaa278a2SDavid du Colombier> TEST MODES 167*eaa278a2SDavid du Colombier 168*eaa278a2SDavid du Colombier You switch to 800*600. It looks fine. 169*eaa278a2SDavid du Colombier You switch to 1024*768. It looks fine. 170*eaa278a2SDavid du Colombier You switch to 1152*864. There are pixel sparkles on 171*eaa278a2SDavid du Colombier the screen. 172*eaa278a2SDavid du Colombier 173*eaa278a2SDavid du Colombier> PRESS ALT-SYSRQ ON MACHINE 174*eaa278a2SDavid du Colombier 175*eaa278a2SDavid du Colombier Nothing happens. 176*eaa278a2SDavid du Colombier 177*eaa278a2SDavid du Colombier> YES, IT DOES! 178*eaa278a2SDavid du Colombier 179*eaa278a2SDavid du Colombier Oh, sorry, I forgot. You get a "kdebug>" prompt. 180*eaa278a2SDavid du Colombier 181*eaa278a2SDavid du Colombier> EXAMINE SYNC REGISTERS 182*eaa278a2SDavid du Colombier 183*eaa278a2SDavid du Colombier After forty minutes, you find nothing wrong with the 184*eaa278a2SDavid du Colombier registers. 185*eaa278a2SDavid du Colombier 186*eaa278a2SDavid du Colombier> EXAMINE REGISTER 0x6000 187*eaa278a2SDavid du Colombier 188*eaa278a2SDavid du Colombier Register 0x6000 (FIFO watermarks) contains 0x0201 189*eaa278a2SDavid du Colombier (powerup default). 190*eaa278a2SDavid du Colombier 191*eaa278a2SDavid du Colombier> WRITE 0x0200 TO REGISTER 0x6000 192*eaa278a2SDavid du Colombier 193*eaa278a2SDavid du Colombier This is one of the poorly documented registers. Are 194*eaa278a2SDavid du Colombier you sure you want to do this? 195*eaa278a2SDavid du Colombier 196*eaa278a2SDavid du Colombier> YES 197*eaa278a2SDavid du Colombier 198*eaa278a2SDavid du Colombier The screen goes blank. 199*eaa278a2SDavid du Colombier 200*eaa278a2SDavid du Colombier> WRITE 0x0201 TO REGISTER 0x6000 201*eaa278a2SDavid du Colombier 202*eaa278a2SDavid du Colombier You see a color BeOS desktop. 203*eaa278a2SDavid du Colombier 204*eaa278a2SDavid du Colombier> WRITE 0x0202 TO REGISTER 0x6000 205*eaa278a2SDavid du Colombier 206*eaa278a2SDavid du Colombier The screen goes blank. 207*eaa278a2SDavid du Colombier 208*eaa278a2SDavid du Colombier[ ...Many more iterations deleted... ] 209*eaa278a2SDavid du Colombier 210*eaa278a2SDavid du Colombier> WRITE 0x1810 TO REGISTER 0x6000 211*eaa278a2SDavid du Colombier 212*eaa278a2SDavid du Colombier The pixel sparkles cease. 213*eaa278a2SDavid du Colombier 214*eaa278a2SDavid du Colombier> MODIFY DRIVER TO WRITE 0x1810 to 0x6000 AND TEST 215*eaa278a2SDavid du Colombier 216*eaa278a2SDavid du Colombier You reboot the machine. You see a color BeOS 217*eaa278a2SDavid du Colombier desktop, sans pixel sparkles. 218*eaa278a2SDavid du Colombier 219*eaa278a2SDavid du Colombier> ADD HARDWARE BLITTER SUPPORT TO DRIVER AND TEST 220*eaa278a2SDavid du Colombier 221*eaa278a2SDavid du Colombier You reboot the machine. You see a perfectly stable 222*eaa278a2SDavid du Colombier display of utter garbage with icons and text on top 223*eaa278a2SDavid du Colombier of it. 224*eaa278a2SDavid du Colombier 225*eaa278a2SDavid du Colombier> FIX RECTANGLE CODE AND TEST 226*eaa278a2SDavid du Colombier 227*eaa278a2SDavid du Colombier You reboot the machine. You see a color BeOS desktop. 228*eaa278a2SDavid du Colombier 229*eaa278a2SDavid du Colombier> DRAG WINDOW 230*eaa278a2SDavid du Colombier 231*eaa278a2SDavid du Colombier The screen turns blank. 232*eaa278a2SDavid du Colombier 233*eaa278a2SDavid du Colombier> FIX BLITTING CODE AND TEST 234*eaa278a2SDavid du Colombier 235*eaa278a2SDavid du Colombier You can't see anything. If you proceed, you will 236*eaa278a2SDavid du Colombier likely be eaten by a Grue. 237*eaa278a2SDavid du Colombier 238*eaa278a2SDavid du Colombier> REBOOT IN SAFE MODE, FIX BLITTING CODE, AND TEST 239*eaa278a2SDavid du Colombier 240*eaa278a2SDavid du Colombier You reboot the machine. A color BeOS desktop greets 241*eaa278a2SDavid du Colombier you. 242*eaa278a2SDavid du Colombier 243*eaa278a2SDavid du Colombier> DRAG WINDOW 244*eaa278a2SDavid du Colombier 245*eaa278a2SDavid du Colombier The window moves, but leaves "dirt" behind it. 246*eaa278a2SDavid du Colombier 247*eaa278a2SDavid du Colombier> READ DOCS ON BLITTER 248*eaa278a2SDavid du Colombier 249*eaa278a2SDavid du Colombier "The blit width register is set to the number of 250*eaa278a2SDavid du Colombier bytes copied per row." Your code reflects this 251*eaa278a2SDavid du Colombier statement. 252*eaa278a2SDavid du Colombier 253*eaa278a2SDavid du Colombier> ADD FENCEPOST TO BLIT WIDTH AND TEST 254*eaa278a2SDavid du Colombier 255*eaa278a2SDavid du Colombier You reboot the machine. Windows now drag normally, 256*eaa278a2SDavid du Colombier except for some weirdness at the left edge of the 257*eaa278a2SDavid du Colombier screen. 258*eaa278a2SDavid du Colombier 259*eaa278a2SDavid du Colombier> EXAMINE WEIRDNESS 260*eaa278a2SDavid du Colombier 261*eaa278a2SDavid du Colombier It looks as if the left four columns of pixels are 262*eaa278a2SDavid du Colombier being blitted 64 pixels too high. 263*eaa278a2SDavid du Colombier 264*eaa278a2SDavid du Colombier> READ DOCS ON BLITTER 265*eaa278a2SDavid du Colombier 266*eaa278a2SDavid du Colombier There is nothing in the docs to explain this behavior. 267*eaa278a2SDavid du Colombier 268*eaa278a2SDavid du Colombier> GO www.yoyodyne.com 269*eaa278a2SDavid du Colombier 270*eaa278a2SDavid du Colombier You are in a Web site. 271*eaa278a2SDavid du Colombier 272*eaa278a2SDavid du Colombier There are many links here. 273*eaa278a2SDavid du Colombier 274*eaa278a2SDavid du Colombier> GO DEVELOPER SUPPORT 275*eaa278a2SDavid du Colombier 276*eaa278a2SDavid du Colombier There is no developer support here. 277*eaa278a2SDavid du Colombier 278*eaa278a2SDavid du Colombier> READ DOCS ON SUPPORT 279*eaa278a2SDavid du Colombier 280*eaa278a2SDavid du Colombier There is nothing in the docs on how to get support. 281*eaa278a2SDavid du Colombier 282*eaa278a2SDavid du Colombier> TALK TO BOSS 283*eaa278a2SDavid du Colombier 284*eaa278a2SDavid du Colombier Your boss gives you the e-mail address of the contact 285*eaa278a2SDavid du Colombier person at Yoyodyne. 286*eaa278a2SDavid du Colombier 287*eaa278a2SDavid du Colombier> SEND MAIL DESCRIBING PROBLEM 288*eaa278a2SDavid du Colombier 289*eaa278a2SDavid du Colombier The e-mail disappears down the Ethernet port, on its 290*eaa278a2SDavid du Colombier way to yoyodyne.com. 291*eaa278a2SDavid du Colombier 292*eaa278a2SDavid du Colombier> WAIT 293*eaa278a2SDavid du Colombier 294*eaa278a2SDavid du Colombier Time passes. 295*eaa278a2SDavid du Colombier 296*eaa278a2SDavid du Colombier You have new mail. 297*eaa278a2SDavid du Colombier 298*eaa278a2SDavid du Colombier> READ MAIL 299*eaa278a2SDavid du Colombier 300*eaa278a2SDavid du Colombier You have 1 new message(s): 301*eaa278a2SDavid du Colombier 302*eaa278a2SDavid du Colombier From: john.smallberries@yoyodyne.com 303*eaa278a2SDavid du Colombier "Oh, yeah. That's a known bug. The official 304*eaa278a2SDavid du Colombier workaround is to copy those four pixel columns in 305*eaa278a2SDavid du Colombier software." 306*eaa278a2SDavid du Colombier 307*eaa278a2SDavid du Colombier> WRITE SPECIAL CASE FOR BLITTING CODE AND TEST 308*eaa278a2SDavid du Colombier 309*eaa278a2SDavid du Colombier You reboot the machine. Windows now glide across 310*eaa278a2SDavid du Colombier the display like silk. 311*eaa278a2SDavid du Colombier 312*eaa278a2SDavid du Colombier> TEST 15 BIT MODES 313*eaa278a2SDavid du Colombier 314*eaa278a2SDavid du Colombier All 15 bit modes work perfectly. 315*eaa278a2SDavid du Colombier 316*eaa278a2SDavid du Colombier> TEST 16 BIT MODES 317*eaa278a2SDavid du Colombier 318*eaa278a2SDavid du Colombier All 16 bit modes work perfectly. 319*eaa278a2SDavid du Colombier 320*eaa278a2SDavid du Colombier> TEST 32 BIT MODES 321*eaa278a2SDavid du Colombier 322*eaa278a2SDavid du Colombier The screen turns blank, then returns to the previous 323*eaa278a2SDavid du Colombier mode. 324*eaa278a2SDavid du Colombier 325*eaa278a2SDavid du Colombier> READ DOCS ON DISPLAY DEPTHS 326*eaa278a2SDavid du Colombier 327*eaa278a2SDavid du Colombier "The following display depths are supported: 328*eaa278a2SDavid du Colombier 329*eaa278a2SDavid du Colombier 0x00: 4 bits 330*eaa278a2SDavid du Colombier 0x02: 8 bits 331*eaa278a2SDavid du Colombier 0x04: 16 bits (RGB 555) 332*eaa278a2SDavid du Colombier 0x05: 16 bits (RGB 565) 333*eaa278a2SDavid du Colombier 0x06: 24 bits (RGB 888) 334*eaa278a2SDavid du Colombier 0x08: 32 bits (xRGB 8888)" 335*eaa278a2SDavid du Colombier 336*eaa278a2SDavid du Colombier> PRESS ALT-SYSRQ AND EXAMINE REGISTER 337*eaa278a2SDavid du Colombier 338*eaa278a2SDavid du Colombier The display depth register is set to 0x05. 339*eaa278a2SDavid du Colombier 340*eaa278a2SDavid du Colombier> WRITE 0x08 TO REGISTER 341*eaa278a2SDavid du Colombier 342*eaa278a2SDavid du Colombier The display turns blank. 343*eaa278a2SDavid du Colombier 344*eaa278a2SDavid du Colombier> WRITE 0x06 TO REGISTER 345*eaa278a2SDavid du Colombier 346*eaa278a2SDavid du Colombier You see a color BeOS desktop. 347*eaa278a2SDavid du Colombier 348*eaa278a2SDavid du Colombier> WRITE MAIL DESCRIBING PROBLEM 349*eaa278a2SDavid du Colombier 350*eaa278a2SDavid du Colombier Nothing happens. 351*eaa278a2SDavid du Colombier 352*eaa278a2SDavid du Colombier> ENTER 'c' AT DEBUGGER PROMPT AND WRITE MAIL 353*eaa278a2SDavid du Colombier 354*eaa278a2SDavid du Colombier The e-mail disappears down the Ethernet port, on its 355*eaa278a2SDavid du Colombier way to yoyodyne.com. 356*eaa278a2SDavid du Colombier 357*eaa278a2SDavid du Colombier> WAIT 358*eaa278a2SDavid du Colombier 359*eaa278a2SDavid du Colombier Time passes. 360*eaa278a2SDavid du Colombier 361*eaa278a2SDavid du Colombier You have new mail. 362*eaa278a2SDavid du Colombier 363*eaa278a2SDavid du Colombier> READ MAIL 364*eaa278a2SDavid du Colombier 365*eaa278a2SDavid du Colombier You have 1 new message(s): 366*eaa278a2SDavid du Colombier 367*eaa278a2SDavid du Colombier From: john.smallberries@yoyodyne.com 368*eaa278a2SDavid du Colombier "I just spoke to our hardware engineer, and he says 369*eaa278a2SDavid du Colombier that 32-bit modes don't really work all that well, 370*eaa278a2SDavid du Colombier and they should be avoided. 24-bit works fine, 371*eaa278a2SDavid du Colombier however." 372*eaa278a2SDavid du Colombier 373*eaa278a2SDavid du Colombier> REMOVE 32 BIT SUPPORT FROM DRIVER AND TEST 374*eaa278a2SDavid du Colombier 375*eaa278a2SDavid du Colombier You reboot the machine. You have now have a 376*eaa278a2SDavid du Colombier functional accelerated BeOS desktop. 377*eaa278a2SDavid du Colombier 378*eaa278a2SDavid du Colombier> CHECK DRIVER INTO SOURCE TREE 379*eaa278a2SDavid du Colombier 380*eaa278a2SDavid du Colombier You check in your new source files into the master 381*eaa278a2SDavid du Colombier source tree. 382*eaa278a2SDavid du Colombier 383*eaa278a2SDavid du Colombier You have broken the build. 384*eaa278a2SDavid du Colombier 385*eaa278a2SDavid du Colombier A dunce cap has appeared in your cube. 386*eaa278a2SDavid du Colombier 387*eaa278a2SDavid du Colombier> FIX DEPENDENCY FILE AND CHECK IN 388*eaa278a2SDavid du Colombier 389*eaa278a2SDavid du Colombier The build is restored to its former glory. 390*eaa278a2SDavid du Colombier 391*eaa278a2SDavid du Colombier The dunce cap has vanished. 392*eaa278a2SDavid du Colombier 393*eaa278a2SDavid du Colombier You have new mail. 394*eaa278a2SDavid du Colombier 395*eaa278a2SDavid du Colombier> READ MAIL 396*eaa278a2SDavid du Colombier 397*eaa278a2SDavid du Colombier You have 1 new message(s): 398*eaa278a2SDavid du Colombier 399*eaa278a2SDavid du Colombier From: baron@be.com 400*eaa278a2SDavid du Colombier "We're having trouble with the Yoyodyne driver in 401*eaa278a2SDavid du Colombier the QA lab. Can you look at it?" 402*eaa278a2SDavid du Colombier 403*eaa278a2SDavid du Colombier> GO QA LAB 404*eaa278a2SDavid du Colombier 405*eaa278a2SDavid du Colombier You are in the QA Lab. Many machines on many 406*eaa278a2SDavid du Colombier shelves are here, running test programs. The Baron 407*eaa278a2SDavid du Colombier directs you to the misbehaving machine. Its screen 408*eaa278a2SDavid du Colombier is blank. 409*eaa278a2SDavid du Colombier 410*eaa278a2SDavid du Colombier> TELNET INTO MACHINE 411*eaa278a2SDavid du Colombier 412*eaa278a2SDavid du Colombier A 'bash' shell prompt greets you. 413*eaa278a2SDavid du Colombier 414*eaa278a2SDavid du Colombier> REMOVE FILE '/boot/home/config/settings/app_server_settings' 415*eaa278a2SDavid du Colombier AND REBOOT 416*eaa278a2SDavid du Colombier 417*eaa278a2SDavid du Colombier You reboot the machine. You see a perfectly 418*eaa278a2SDavid du Colombier functional 640*480 display. 419*eaa278a2SDavid du Colombier 420*eaa278a2SDavid du Colombier The Baron looks like he has something to say. 421*eaa278a2SDavid du Colombier 422*eaa278a2SDavid du Colombier> TALK TO BARON 423*eaa278a2SDavid du Colombier 424*eaa278a2SDavid du Colombier He directs you to another machine. The monitor 425*eaa278a2SDavid du Colombier looks as if it can't quite sync to the card's 426*eaa278a2SDavid du Colombier signal. 427*eaa278a2SDavid du Colombier 428*eaa278a2SDavid du Colombier> TELNET INTO MACHINE 429*eaa278a2SDavid du Colombier 430*eaa278a2SDavid du Colombier A 'bash' shell prompt greets you. 431*eaa278a2SDavid du Colombier 432*eaa278a2SDavid du Colombier> REMOVE FILE '/boot/home/config/settings/app_server_settings' 433*eaa278a2SDavid du Colombier AND REBOOT 434*eaa278a2SDavid du Colombier 435*eaa278a2SDavid du Colombier Ha ha! That doesn't work this time! A sense of 436*eaa278a2SDavid du Colombier crushing defeat envelops you. 437*eaa278a2SDavid du Colombier 438*eaa278a2SDavid du Colombier> DON'T EDITORIALIZE 439*eaa278a2SDavid du Colombier 440*eaa278a2SDavid du Colombier Sorry. 441*eaa278a2SDavid du Colombier 442*eaa278a2SDavid du Colombier> EXAMINE MONITOR 443*eaa278a2SDavid du Colombier 444*eaa278a2SDavid du Colombier You are looking at a Flabloden 15ZF monitor. 445*eaa278a2SDavid du Colombier 446*eaa278a2SDavid du Colombier> READ MONITOR DOCS 447*eaa278a2SDavid du Colombier 448*eaa278a2SDavid du Colombier "Congratulations on your purchase of a Flabloden 449*eaa278a2SDavid du Colombier 15ZF monitor. Our products are fully compliant with 450*eaa278a2SDavid du Colombier VESA standards, including the VESA signalling and 451*eaa278a2SDavid du Colombier GTF specifications, assuring your monitor will work 452*eaa278a2SDavid du Colombier with whatever the hell graphics card you have 453*eaa278a2SDavid du Colombier installed..." 454*eaa278a2SDavid du Colombier 455*eaa278a2SDavid du Colombier> GO www.vesa.org 456*eaa278a2SDavid du Colombier 457*eaa278a2SDavid du Colombier You are at the Video Electronics Standards 458*eaa278a2SDavid du Colombier Association's Web site. 459*eaa278a2SDavid du Colombier 460*eaa278a2SDavid du Colombier There are many links here. 461*eaa278a2SDavid du Colombier 462*eaa278a2SDavid du Colombier A Reporter from CNN visiting Jean-Louis wanders by. 463*eaa278a2SDavid du Colombier He glances in your cube. 464*eaa278a2SDavid du Colombier 465*eaa278a2SDavid du Colombier> HIDE YOYODYNE DOCS! 466*eaa278a2SDavid du Colombier 467*eaa278a2SDavid du Colombier It is too late. The Reporter has seen the docs on 468*eaa278a2SDavid du Colombier your desk. A lightning bolt stabs out of the sky 469*eaa278a2SDavid du Colombier and through the ceiling, striking the Reporter, 470*eaa278a2SDavid du Colombier leaving only a smoking pile of ash. 471*eaa278a2SDavid du Colombier 472*eaa278a2SDavid du Colombier> CLEAN UP ASH 473*eaa278a2SDavid du Colombier 474*eaa278a2SDavid du Colombier You dutifully clean up the Reporter's remains. 475*eaa278a2SDavid du Colombier 476*eaa278a2SDavid du Colombier> SEARCH FOR GTF DOCS 477*eaa278a2SDavid du Colombier 478*eaa278a2SDavid du Colombier You find a link here named "VESA General Timing 479*eaa278a2SDavid du Colombier Formula." 480*eaa278a2SDavid du Colombier 481*eaa278a2SDavid du Colombier> GO VESA GENERAL TIMING FORMULA 482*eaa278a2SDavid du Colombier 483*eaa278a2SDavid du Colombier A Troll bars your way. He is demanding tribute. 484*eaa278a2SDavid du Colombier 485*eaa278a2SDavid du Colombier> EXAMINE TROLL 486*eaa278a2SDavid du Colombier 487*eaa278a2SDavid du Colombier He is big, strong, mean, ugly, pitiless, and 488*eaa278a2SDavid du Colombier unusually well dressed. 489*eaa278a2SDavid du Colombier 490*eaa278a2SDavid du Colombier> EVADE TROLL 491*eaa278a2SDavid du Colombier 492*eaa278a2SDavid du Colombier Despite your best efforts, the Troll thwarts your 493*eaa278a2SDavid du Colombier attempts to evade him. 494*eaa278a2SDavid du Colombier 495*eaa278a2SDavid du Colombier> TALK TO TROLL 496*eaa278a2SDavid du Colombier 497*eaa278a2SDavid du Colombier "THOU CANST NOT PASS LEST THOU PAYEST UNTO ME MY 498*eaa278a2SDavid du Colombier RIGHTFUL TRIBUTE!" thunders the Troll. 499*eaa278a2SDavid du Colombier 500*eaa278a2SDavid du Colombier> EXPLAIN SITUATION TO TROLL 501*eaa278a2SDavid du Colombier 502*eaa278a2SDavid du Colombier The Troll ignores you. 503*eaa278a2SDavid du Colombier 504*eaa278a2SDavid du Colombier> KILL TROLL 505*eaa278a2SDavid du Colombier 506*eaa278a2SDavid du Colombier You can't do that. 507*eaa278a2SDavid du Colombier 508*eaa278a2SDavid du Colombier> DAMMIT! 509*eaa278a2SDavid du Colombier 510*eaa278a2SDavid du Colombier Now who's editorializing? 511*eaa278a2SDavid du Colombier 512*eaa278a2SDavid du Colombier> PAY TRIBUTE 513*eaa278a2SDavid du Colombier 514*eaa278a2SDavid du Colombier Reluctantly, you hand over the required tribute. 515*eaa278a2SDavid du Colombier The Troll gives you a token so that you may pass 516*eaa278a2SDavid du Colombier this way again. 517*eaa278a2SDavid du Colombier 518*eaa278a2SDavid du Colombier Your wallet now contains $2500. 519*eaa278a2SDavid du Colombier 520*eaa278a2SDavid du Colombier> GO VESA GENERAL TIMING FORMULA 521*eaa278a2SDavid du Colombier 522*eaa278a2SDavid du Colombier There is a file here. The description says it 523*eaa278a2SDavid du Colombier contains the algorithm for calculating sync timings 524*eaa278a2SDavid du Colombier for any display mode. 525*eaa278a2SDavid du Colombier 526*eaa278a2SDavid du Colombier> DOWNLOAD FILE 527*eaa278a2SDavid du Colombier 528*eaa278a2SDavid du Colombier A copy of the file is now on your machine. 529*eaa278a2SDavid du Colombier 530*eaa278a2SDavid du Colombier> READ FILE 531*eaa278a2SDavid du Colombier 532*eaa278a2SDavid du Colombier There is no PDF reader here. 533*eaa278a2SDavid du Colombier 534*eaa278a2SDavid du Colombier> TRANSFER FILE TO LAPTOP AND READ 535*eaa278a2SDavid du Colombier 536*eaa278a2SDavid du Colombier After picking through some opaque language, you now 537*eaa278a2SDavid du Colombier understand the VESA GTF. 538*eaa278a2SDavid du Colombier 539*eaa278a2SDavid du Colombier> ADD VESA GTF CODE TO DRIVER AND TEST 540*eaa278a2SDavid du Colombier 541*eaa278a2SDavid du Colombier You reboot the machine. The Flabloden 15ZF monitor 542*eaa278a2SDavid du Colombier now works perfectly. 543*eaa278a2SDavid du Colombier 544*eaa278a2SDavid du Colombier You have new mail. 545*eaa278a2SDavid du Colombier 546*eaa278a2SDavid du Colombier> READ MAIL 547*eaa278a2SDavid du Colombier 548*eaa278a2SDavid du Colombier You have 2 new message(s): 549*eaa278a2SDavid du Colombier 550*eaa278a2SDavid du Colombier From: xf541ceuc8@aol.com 551*eaa278a2SDavid du Colombier "MAKE.MONEY.FAST! Hi, my name is Dave Rhodes..." 552*eaa278a2SDavid du Colombier 553*eaa278a2SDavid du Colombier> DELETE MESSAGE, NEXT MESSAGE 554*eaa278a2SDavid du Colombier 555*eaa278a2SDavid du Colombier From: rjs@be.com 556*eaa278a2SDavid du Colombier "We're going to need AGP support on the Yoyodyne 557*eaa278a2SDavid du Colombier card so we can start on OpenGL acceleration. Can 558*eaa278a2SDavid du Colombier you help with that?" 559*eaa278a2SDavid du Colombier 560*eaa278a2SDavid du Colombier> READ DOCS ON AGP 561*eaa278a2SDavid du Colombier 562*eaa278a2SDavid du Colombier Except for a few PCI configuration registers, there 563*eaa278a2SDavid du Colombier is no mention of AGP in the docs. 564*eaa278a2SDavid du Colombier 565*eaa278a2SDavid du Colombier> GO developer.intel.com 566*eaa278a2SDavid du Colombier 567*eaa278a2SDavid du Colombier You are at Intel's developers' Web site. 568*eaa278a2SDavid du Colombier 569*eaa278a2SDavid du Colombier There are many links here. 570*eaa278a2SDavid du Colombier 571*eaa278a2SDavid du Colombier> FIND AGP DOCS 572*eaa278a2SDavid du Colombier 573*eaa278a2SDavid du Colombier You find a single file named, "Accelerated Graphics 574*eaa278a2SDavid du Colombier Port Interface Specification (v2.0)". 575*eaa278a2SDavid du Colombier 576*eaa278a2SDavid du Colombier> DOWNLOAD FILE TO LAPTOP AND READ 577*eaa278a2SDavid du Colombier 578*eaa278a2SDavid du Colombier AGP is an extension to PCI. Like a modern CPU's 579*eaa278a2SDavid du Colombier MMU, AGP uses a translation table (called a GART) to 580*eaa278a2SDavid du Colombier make disjoint blocks of system memory appear 581*eaa278a2SDavid du Colombier contiguous. Both the graphics card and the 582*eaa278a2SDavid du Colombier motherboard controller must be properly configured 583*eaa278a2SDavid du Colombier for AGP to work. The layout and function of the PCI 584*eaa278a2SDavid du Colombier AGP configuration registers are described only in 585*eaa278a2SDavid du Colombier general terms. Most of the rest of the document 586*eaa278a2SDavid du Colombier describes hardware implementation and signalling 587*eaa278a2SDavid du Colombier details. 588*eaa278a2SDavid du Colombier 589*eaa278a2SDavid du Colombier> EXAMINE MOTHERBOARD IN MACHINE 590*eaa278a2SDavid du Colombier 591*eaa278a2SDavid du Colombier Your machine uses an Intel 440LX motherboard 592*eaa278a2SDavid du Colombier controller. 593*eaa278a2SDavid du Colombier 594*eaa278a2SDavid du Colombier> GO developer.intel.com 595*eaa278a2SDavid du Colombier 596*eaa278a2SDavid du Colombier You are at Intel's developers' Web site. 597*eaa278a2SDavid du Colombier 598*eaa278a2SDavid du Colombier There are many links here. 599*eaa278a2SDavid du Colombier 600*eaa278a2SDavid du Colombier> FIND 440LX DOCS 601*eaa278a2SDavid du Colombier 602*eaa278a2SDavid du Colombier You find a file named, "Intel 440LX AGPset: 82443LX 603*eaa278a2SDavid du Colombier PCI AGP Controller (PAC) Datasheet" 604*eaa278a2SDavid du Colombier 605*eaa278a2SDavid du Colombier> DOWNLOAD FILE TO LAPTOP AND READ 606*eaa278a2SDavid du Colombier 607*eaa278a2SDavid du Colombier You now understand how to program the host's and 608*eaa278a2SDavid du Colombier graphics card's AGP control registers. 609*eaa278a2SDavid du Colombier 610*eaa278a2SDavid du Colombier> ADD CODE ENABLING AGP 1X MODE TO DRIVER AND TEST 611*eaa278a2SDavid du Colombier 612*eaa278a2SDavid du Colombier You reboot the machine. Everything still works. 613*eaa278a2SDavid du Colombier 614*eaa278a2SDavid du Colombier> ADD CODE ENABLING SIDEBAND ADDRESSING TO DRIVER AND TEST 615*eaa278a2SDavid du Colombier 616*eaa278a2SDavid du Colombier You reboot the machine. Everything still works. 617*eaa278a2SDavid du Colombier 618*eaa278a2SDavid du Colombier> ADD CODE ENABLING GART TO DRIVER AND TEST 619*eaa278a2SDavid du Colombier 620*eaa278a2SDavid du Colombier You do not know how to create a GART. 621*eaa278a2SDavid du Colombier 622*eaa278a2SDavid du Colombier> READ AGP DOCS ON GART 623*eaa278a2SDavid du Colombier 624*eaa278a2SDavid du Colombier "The specific layout of the GART is 625*eaa278a2SDavid du Colombier chipset-specific, and not documented here. GART 626*eaa278a2SDavid du Colombier manipulation is done via a miniport driver or HAL 627*eaa278a2SDavid du Colombier supplied with the chipset BIOS reference 628*eaa278a2SDavid du Colombier implementation." 629*eaa278a2SDavid du Colombier 630*eaa278a2SDavid du Colombier> READ 440LX DOCS ON GART 631*eaa278a2SDavid du Colombier 632*eaa278a2SDavid du Colombier There is no description of the GART here. 633*eaa278a2SDavid du Colombier 634*eaa278a2SDavid du Colombier> GO developer.intel.com 635*eaa278a2SDavid du Colombier 636*eaa278a2SDavid du Colombier You are at Intel's developers' Web site. 637*eaa278a2SDavid du Colombier 638*eaa278a2SDavid du Colombier There are many links here. 639*eaa278a2SDavid du Colombier 640*eaa278a2SDavid du Colombier> FIND GART DOCS 641*eaa278a2SDavid du Colombier 642*eaa278a2SDavid du Colombier There are no GART docs here. 643*eaa278a2SDavid du Colombier 644*eaa278a2SDavid du Colombier> SEARCH FOR OTHER AGP RESOURCES 645*eaa278a2SDavid du Colombier 646*eaa278a2SDavid du Colombier There is a link to the AGP Implementor's Forum, at 647*eaa278a2SDavid du Colombier www.agpforum.org. 648*eaa278a2SDavid du Colombier 649*eaa278a2SDavid du Colombier> GO www.agpforum.org 650*eaa278a2SDavid du Colombier 651*eaa278a2SDavid du Colombier You are at the AGP Implementor's Forum Web site. 652*eaa278a2SDavid du Colombier 653*eaa278a2SDavid du Colombier There are many links here. 654*eaa278a2SDavid du Colombier 655*eaa278a2SDavid du Colombier> FIND GART DOCS 656*eaa278a2SDavid du Colombier 657*eaa278a2SDavid du Colombier A Troll bars your way. He is demanding tribute. 658*eaa278a2SDavid du Colombier 659*eaa278a2SDavid du Colombier> EVADE TROLL 660*eaa278a2SDavid du Colombier 661*eaa278a2SDavid du Colombier Despite your best efforts, the Troll thwarts your 662*eaa278a2SDavid du Colombier attempts to evade him. 663*eaa278a2SDavid du Colombier 664*eaa278a2SDavid du Colombier> PAY TRIBUTE 665*eaa278a2SDavid du Colombier 666*eaa278a2SDavid du Colombier Reluctantly, you hand over the required tribute. 667*eaa278a2SDavid du Colombier The Troll gives you a token so that you may pass 668*eaa278a2SDavid du Colombier this way again. 669*eaa278a2SDavid du Colombier 670*eaa278a2SDavid du Colombier Your wallet is now empty. 671*eaa278a2SDavid du Colombier 672*eaa278a2SDavid du Colombier> FIND GART DOCS 673*eaa278a2SDavid du Colombier 674*eaa278a2SDavid du Colombier There are no GART docs here. The Troll laughs 675*eaa278a2SDavid du Colombier uproariously. 676*eaa278a2SDavid du Colombier 677*eaa278a2SDavid du Colombier> FIND ALL PROGRAMMING DOCS 678*eaa278a2SDavid du Colombier 679*eaa278a2SDavid du Colombier You find a file named, "System Software." 680*eaa278a2SDavid du Colombier 681*eaa278a2SDavid du Colombier> DOWNLOAD FILE TO LAPTOP AND READ 682*eaa278a2SDavid du Colombier 683*eaa278a2SDavid du Colombier 'ghostscript' reports: "This PDF file is encrypted 684*eaa278a2SDavid du Colombier and cannot be processed." 685*eaa278a2SDavid du Colombier 686*eaa278a2SDavid du Colombier> CRASH LAPTOP BACK TO WINDOWS 687*eaa278a2SDavid du Colombier 688*eaa278a2SDavid du Colombier You close your XTerms, reboot the laptop, and in 689*eaa278a2SDavid du Colombier mere minutes, Windows is ready. 690*eaa278a2SDavid du Colombier 691*eaa278a2SDavid du Colombier> OPEN "SYSTEM SOFTWARE" DOCS 692*eaa278a2SDavid du Colombier 693*eaa278a2SDavid du Colombier The PDF reader opens. This looks suspiciously like a 694*eaa278a2SDavid du Colombier Powerpoint slide. 695*eaa278a2SDavid du Colombier 696*eaa278a2SDavid du Colombier> SEARCH DOCS FOR "GART" 697*eaa278a2SDavid du Colombier 698*eaa278a2SDavid du Colombier "GART manipulation is performed through the miniport 699*eaa278a2SDavid du Colombier driver and DirectX 5 extensions..." 700*eaa278a2SDavid du Colombier 701*eaa278a2SDavid du Colombier> CURSE 702*eaa278a2SDavid du Colombier 703*eaa278a2SDavid du Colombier You heartily curse in a manner that comes only with 704*eaa278a2SDavid du Colombier long practice. Co-workers pop up from their cubes 705*eaa278a2SDavid du Colombier like prairie dogs. 706*eaa278a2SDavid du Colombier 707*eaa278a2SDavid du Colombier> SCORE 708*eaa278a2SDavid du Colombier 709*eaa278a2SDavid du Colombier Out of a possible 127 points, you have a total score 710*eaa278a2SDavid du Colombier of 83 (65%). 711*eaa278a2SDavid du Colombier 712*eaa278a2SDavid du Colombier> SAVE 713*eaa278a2SDavid du Colombier 714*eaa278a2SDavid du Colombier Your adventure has been saved... 715*eaa278a2SDavid du Colombier 716