xref: /plan9/sys/src/cmd/aux/vga/adventure (revision eaa278a2909cc1a041239a52a6289e43646f8d04)
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