Initial revision
diff --git a/Demo/sgi/gl/backface.py b/Demo/sgi/gl/backface.py
new file mode 100755
index 0000000..594b8ad
--- /dev/null
+++ b/Demo/sgi/gl/backface.py
@@ -0,0 +1,140 @@
+#! /usr/local/python
+
+#   backface
+#
+#   draw a cube that can run with backface() turned on or off.
+#   cube is moved when LEFTMOUSE is pressed and mouse itself is moved.
+
+from gl import *
+from DEVICE import *
+from GL import *
+
+CUBE_SIZE = 200.0
+CUBE_OBJ = 1
+
+def main () :
+	#
+	x = 0
+	y = 0
+	moveit = 0
+	#
+	initialize()
+	#
+	while (1) :
+		#
+		while (qtest()) :
+			dev, val = qread()
+			#
+			if dev == ESCKEY :
+				backface(0)
+				return
+				#
+			elif dev == REDRAW :
+				reshapeviewport()
+				drawcube(x,y)
+				#
+			elif dev == LEFTMOUSE :
+				#
+				# LEFTMOUSE down
+				moveit = val
+				#
+			elif dev == BKEY :
+				backface(1)
+				drawcube(x,y)
+				#
+			elif dev == FKEY :
+				backface(0)
+				drawcube(x,y)
+				#
+		if moveit :
+			x = getvaluator(MOUSEX)
+			y = getvaluator(MOUSEY)
+			drawcube(x,y)
+
+
+def initialize () :
+	foreground ()
+	keepaspect (1, 1)
+	gid = winopen('backface')
+	winset(gid)
+	winconstraints()
+	#
+	doublebuffer()
+	gconfig()
+	shademodel(FLAT)
+	#
+	ortho(-1024.0, 1024.0, -1024.0, 1024.0, -1024.0, 1024.0)
+	#
+	qdevice(ESCKEY)
+	qdevice(REDRAW)
+	qdevice(LEFTMOUSE)
+	qdevice(BKEY)
+	qdevice(FKEY)
+	qenter(REDRAW,gid)
+	#
+	backface(1)
+
+#
+# define a cube
+def cube () :
+	#
+	# front face
+	pushmatrix()
+	translate(0.0,0.0,CUBE_SIZE)
+	color(RED)
+	rectf(-CUBE_SIZE,-CUBE_SIZE,CUBE_SIZE,CUBE_SIZE)
+	popmatrix()
+	#
+	# right face
+	pushmatrix()
+	translate(CUBE_SIZE, 0.0, 0.0)
+	rotate(900, 'y')
+	color(GREEN)
+	rectf(-CUBE_SIZE,-CUBE_SIZE,CUBE_SIZE,CUBE_SIZE)
+	popmatrix()
+	#
+	# back face
+	pushmatrix()
+	translate(0.0, 0.0, -CUBE_SIZE)
+	rotate(1800, 'y')
+	color(BLUE)
+	rectf(-CUBE_SIZE,-CUBE_SIZE,CUBE_SIZE,CUBE_SIZE)
+	popmatrix()
+	#
+	# left face
+	pushmatrix()
+	translate(-CUBE_SIZE, 0.0, 0.0)
+	rotate(-900, 'y')
+	color(CYAN)
+	rectf(-CUBE_SIZE,-CUBE_SIZE,CUBE_SIZE,CUBE_SIZE)
+	popmatrix()
+	#
+	# top face
+	pushmatrix()
+	translate(0.0, CUBE_SIZE, 0.0)
+	rotate(-900, 'x')
+	color(MAGENTA)
+	rectf(-CUBE_SIZE,-CUBE_SIZE,CUBE_SIZE,CUBE_SIZE)
+	popmatrix()
+	#
+	# bottom face
+	pushmatrix()
+	translate(0.0, -CUBE_SIZE, 0.0)
+	rotate(900, 'x')
+	color(YELLOW)
+	rectf(-CUBE_SIZE,-CUBE_SIZE,CUBE_SIZE,CUBE_SIZE)
+	popmatrix()
+
+def drawcube(x,y) :
+	#
+	pushmatrix()
+	rotate(2*x, 'x')
+	rotate(2*y, 'y')
+	color(BLACK)
+	clear()
+	cube()        
+	popmatrix()
+	swapbuffers()
+
+
+main ()