./demo/                                                                                                775       0      12            0  4425705142   5031                                                                                                                                                                                                                                                                                                                                                                      ./demo/Makefile                                                                                        444       0      12          634  4424743403   6536                                                                                                                                                                                                                                                                                                                                                                      #
# @(#)Makefile.release 1.14 89/03/20 SMI
#

#
#  Makefile to be included on the actual release tapes
#

DESTDIR=

SUBDIR= SRC COLORPIX DATA DIALBOX GP1 MAPS

all:
	-for i in ${SUBDIR}; do \
		(cd $$i; make ${MFLAGS}); \
		done

clean:
	-for i in ${SUBDIR}; do \
		(cd $$i; make ${MFLAGS} clean); \
		done

install: all
	-for i in ${SUBDIR}; do \
		(cd $$i; make ${MFLAGS} DESTDIR=${DESTDIR} install); \
		done
                                                                                                    ./demo/Makefile.datafiles                                                                              444       0      12          361  4424743404  10467                                                                                                                                                                                                                                                                                                                                                                      CHOWN=/etc/chown
INSTALLDIR=$(DESTDIR)/usr/demo/$(DIR)

.DEFAULT:
	sccs get -G$< $@

all: $(FILES)

install: all
	-mkdir $(INSTALLDIR) && $(CHOWN) bin $(INSTALLDIR)
	@set -x; for i in $(FILES); do \
		install $$i $(INSTALLDIR); done

clean:
r i in ${SUBDIR}; do \
		(cd $$i; make ${MFLAGS} clean); \
		done

install: all
	-for i in ${SUBDIR}; do \
		(cd $$i; make ${MFLAGS} DESTDIR=${DESTDIR} install); \
		done
                                                                                                    ./demo/bouncedemo                                                                                      755       0      12        60000  4424737217   7205                                                                                                                                                                                                                                                                                                                                                                                                 M  $G "I#  J  "g  a  *HTHS/N  "N  " / N  hX/ N  pNVH0 HzHx  HzN6   -@Hx  Hn/ N<       gAv` 4nf$<  Ԯ      ЮЮHzbHx  /./:/:/ Hx  N    -@/././:x/:x/. Ю/ N    & / .Ю/ N    Hz"Hx  Hz N fP-@JfX`"Hx  / /:/:/.֮/N D   A-H-y  -z lHnHx  nNPL N^Nu o Hx ` o Hx G` o Hx I` o Hx N@eNu/HPHx Hx  Hx N@/|    Hx N@   /usr/lib/ld.so /dev/zero     crt0: no /usr/lib/ld.so
   %crt0: /usr/lib/ld.so mapping failure
    crt0: no /dev/zero
                 N  x  NV/. BN  PO-@fHx N  hXO n/( N  XO`
 nrè Hn n/N  PO0.H2.HЁS=@0.H2.HЁS=@0.nm0.H R@=@=n=n=| BnBnBnBBBHx 0n/0n/ n h p  /  n h p  /  n h /(  n h  P PNO $`  n (   g
/N  XO n (    f 0.nf0.Rn@ o` $=nBnBBBHx 
0n/0n/ n h 0.H /  n h 0.H /  n h /(  n h  P PNO $0.n0.H2.H2.Ho0.H2.H2.H`0.nlHD=@0.HD=@Rn0.n0.H2.H2.Hm.0.n=@0.nlp`
0.Hn=@gBnRnnn*` nS o*=n=n=| BnBnBn nJ f h/.N  XOBN  hXOp N^Nu  j    r    z  
            
                              
                     
      
      	         	                   
                               (4         	                       9      ) ~  "   / b  "   ;        B r     K         U   "   ` &       v 5                G        p    _etext _edata _end start _exit __DYNAMIC _main start_float __exit _environ _finitfp_ fsoft_used _gfxsw_handlesigwinch _win_getsize _pw_use_fast_monochrome _gfxsw_done _gfxsw_init  /usr/lib/fsoft          (           (    
                   suntool sunwindow pixrect c                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    $                                  \  `  `    (                   H   N      Nqa   Nqa  Nqa  Nqa  Nqa  Nqa  Nqa  Nqa                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     "        "   *   (4   1      8	      =        C ~  "   I b  "   U r     ^   "   i__DYNAMIC crt0.o Fcrt1.o bouncedemo.o _etext _edata _end start _main start_float _environ fsoft_used                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ./demo/canvas_demo                                                                                     755       0      12        60000  4424737216   7343                                                                                                                                                                                                                                                                                                                                                                                                M  $G "I# hJ  "g  a  *HTHS/N  "N  " / N  hX/ N  pNVH0 HzHx  HzN6   -@Hx  Hn/ N<       gAv` 4nf$<  Ԯ      ЮЮHzbHx  /./:/:/ Hx  N    -@/././:x/:x/. Ю/ N    & / .Ю/ N    Hz"Hx  Hz N fP-@JfX`"Hx  / /:/:/.֮/N D   A-H-y h-z lHnHx  nNPL N^Nu o Hx ` o Hx G` o Hx I` o Hx N@eNu/HPHx Hx  Hx N@/|    Hx N@   /usr/lib/ld.so /dev/zero     crt0: no /usr/lib/ld.so
   %crt0: /usr/lib/ld.so mapping failure
    crt0: no /dev/zero
                 N  x  NV  B/. /. HyK"Hx HyK*	BHy HyN	N  O / HyF
Hy HyF
	aHy  BN  O 0# Hz/9 N  PO/9 N  $tXOBN  XO# BN  XO# BHz
Hy HyD""Hz
Hy HyD""Hz
ZHy HyD""Hz	Hy HyD""N  O 4# BHz
HyL 
aBHyL	BHyL-	HxHyL
HxHyLAHz0HyJ4
aHxHyJ=
/9 HyJ2
/9 HyJ3
Hy  /9 N  O T#  HyLA/9  N  POr# HyL
/9  N  POr# /9  N  0fXO/9 N  XOBN  hXOp N^NuNVBHx HyA?	Hy  /. N  O -@BHzHyAk
aHx HyA8BHyA7Hx HyA$AHy HyAQ	aHy  / N  O 4# BHzHyAk
aHx HyA8BHyA7Hx HyA$AHy HyAQ	aHy  /.N  O 4# BHz4HyAk
aHx dHyA8BHyA7Hx HyA$AHy HyAQ	aHy  /.N  O 4#  BHzHyAk
aHx HyA3BHy Hy HyAVaHy HyAQ	aHy HyA*Hy  HyA AHx HyAK	!Hx HyAM	!BHyAaBHy HyA`Hy  /.N  O h# $BHzTHyAk
aHx HyA3BHy Hy HyAVaHy HyAQ	aHy HyA*Hy  HyA AHx HyAK	!Hx HyAM	!BHyAaBHy HyA`Hy  /.N  O h# (BHzHyAk
aHx HyA3BHy Hy HyAVaHy HyAQ	aHy HyA*Hy! HyA AHx HyAK	!Hx HyAM	!BHyAaBHy HyA`Hy  /.N  O h# ,BHz0HyAk
aHx HyA3BHy /Hy ,HyAVaHy HyAQ	aHy HyA*Hy! HyA AHx HyAK	!Hx HyAM	!BHyAaBHy HyA`Hy  /.N  O h# 0BHzHyAk
aHx HyA3BHy DHy AHyAVaHy 3HyAQ	aHy HyA*Hy9 HyA AHx HyAK	!Hx HyAM	!BHyAaBHy HyA`Hy  /.N  O h# 4BHzHyAk
aBHyA3BHy YHy VHyAVaHy HHyAQ	aHy HyA*Hy9 HyA AHx HyAK	!Hx HyAM	!BHyAaBHy HyA`Hy  /.N  O h# 8BHz\HyAk
aBHx Hy ]/.N  O / HyAY	Hy HyA*Hy: HyA AHy  /.N  O ,BHztHyAk
aBHx Hy c/.N  O / HyAY	Hy HyA*HyD HyA AHy  /.N  O ,BHz0HyAk
aBHx Hy h/.N  O / HyAY	Hy
HyA*Hy: HyA AHy  /.N  O ,BHz@HyAk
aBHx Hy n/.N  O / HyAY	Hy
HyA*HyD HyA AHy  /.N  O ,BBHyJ-/.N  N^NuNVBHyA3/9 8N  PO/ HyL-	HyA3/9 4N  PO/ HyL(	HyA3/9 0N  PO/ HyL#	HyA3/9  N  PO/ HyLHyA3/9 N  PO/ HyL
HyA3/9 N  PO/ HyLA/9  N  O 8HyL	/9  N  PO-@HyA3/9 ,N  POg  BHyA3/9 ,N  PO/ HyL	/9  N  O HyL	/9  N  POJgBB`BHz2HyL
a/9  N  O /. /. N  -NPO/9  N  0fXOHyA3/9 $N  POJg"HyJ3
/9  N  POJf$B/9 `BBHyJ3
/9  N  O HyA3/9 (N  POJg"HyJ2
/9  N  POJf$B/9 `BBHyJ2
/9  N  O HyA3/9 N  PO-@HyLA/9  N  POg.BHyLA/9  N  PO/ HyA3/9 N O HyA3/9 N  PO-@HyL
/9  N  POg*BHyL
/9  N  PO/ HyA3/9 N N^NuNVHyL	/9  N  PO-@BBBBHyL
/9  N  PO/ HyLA/9  N  PO/  np  / p  / /(  P PNN^NuNV  /9  N  0fXON^NuNV  J fN  1B/9 HyA3/9 <N O B/9 HyA3/9 @N O BHx HyJ/	/9 N  N^NuNV  BHx HyK*	/9 N  O /9 N XON^NuNV  B/. HyA3/9 N O B/. HyA3/9 N O HyL	/. N  POJf . r#  . # N^NuNV  /. N  0fXON^NuNVHyL	/. N  PO-@BnBn n 0(    g  ` 8=| `  =| `  Hx HyJe	/. N  O JfHx!HyJe	/. N  O Jg|=| `tB/. /. N PO/ /. /9 N  O `J n p 0( f0H` n p 0(  @|   g j   g L  !g L  "gJng4Hx  n"n 0) H / 0) H / /(  P h NO Jng.B n"n 0) H / 0) H / /(  P h NN^NuNVHyL	/. N  PO-@Hx 
/9 Hx 
Hx 
/ N  1JO /9 /9 Hx 
/9 /.N  1JO /9 Hx 
/9 /9 /.N  1JO Hx 
Hx 
/9 Hx 
/.N  1JO /9 /9 Hx 
Hx 
/.N  1JO Hx 
/9 /9 Hx 
/.N  1JN^NuNV/. /. Hy sHnN (O HnBHx /. /. /. N 0O Hx Hx  n  .  /  .  /  .  /  .  / /(  P h NN^NuNVBHy  /9 N  O # BHy  /9 N  O -@BHzHyAk
aBHyA3BHy Hy HyAVaHy |HyAQ	aHy  HyA*Hy HyA AHx HyAK	!Hx HyAM	!BHyAaBHy HyA`Hy  / N  O hBHzHyAk
aBBHy /.N  O / HyAY	Hy  HyA*Hy HyA AHy  /.N  O ,BHzTHyAk
aBHyAA	BHyAp
Hx HyA8BHyA7Hx HyA$AHy HyAQ	aHy  /.N  O D# <BHz HyAk
aBHyAA	Hx HyAp
Hx HyA8BHyA7Hx HyA$AHy HyAQ	aHy  /.N  O D# @BBHyJ.ABHyJ-/.N  O BBHyJ.ABHyJ-/9 N  N^NuNV  B/. HyL	/9  N  O B/. HyAA	/9 <N O B/. HyAA	/9 @N N^NuNV  HyAp
/. N  POJg
#  `#  /. /. a PO/9  a XON^NuNV  BBHyJ/	/9 N  N^NuNVHyJN
 /. N  PO-@BHx Hy N 8O -@    f  Jg  BHx HyQ	Hx HyQ7	Hy HyQ$	aHy HyQ#	aBHy HyQaHn/. N @O 8-@f4Hy /.N HPO-@gDJf@/. N PXOp `@   f`$Hy C/.N HPO-@gJg/. /. N XPON^Nu    j    r    z  
        #    %            $    "             !                           & 
         "  ' *   2   :  * B   J  ( R   Z      b  .               '      "                                                      
         
         	            
               *                   $                                            !                           #   !   )   "       #   &   $   %   %   +   &       '   (   (   -   )       *       +   ,   ,   0   -   .   .   /   /       0           >        	  H                    9      ) ~  "   / b  "   ;        B r h   K         U   "   `        n     ~ m                          Q                                              $       0       E  [      U       `       s  F      | 
       8                      N                     O       }      
              #        1 J   A z      W Q   p                     _etext _edata _end start _exit __DYNAMIC _main start_float __exit _environ _finitfp_ fsoft_used _alert_prompt _canvas_demo_pr _mem_ops _panel_slider _panel_choice _panel_button_image _canvas_window_event _scrollbar_create _icon_create _notify_next_destroy_func _notify_interpose_destroy_func _window_set _notify_veto_destroy _window_destroy _panel_set _panel_create_item _sprintf _window_main_loop _panel_button _pw_text _window_get _panel_window_object _canvas_window_object _frame_window_object _menu_create _window_create _panel_get _menu_show _wmgr_confirm _panel_cycle_pr _defaults_get_boolean _panel_seln_destroy_proc _panel_cycle_pr_data _panel_caret_invert_proc _panel_nullproc _panel_caret_on_proc _panel_seln_inform_proc  /usr/lib/fsoft    ؀      (          (                       suntool sunwindow pixrect c                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    $                                  \  `      `                    N      Nqa   Nqa  Nqa  Nqa  Nqa  Nqa  Nqa  Nqa  Nqa  Nqa  	Nqa  
Nqa  Nqa  Nqa  
Nqa  Nqa | Nqa t Nqa l Nqa d Nqa \ Nqa T Nqa L Nqa D Nqa < Nqa 4 Nqa , Nqa $ Nqa  Nqa  Nqa  Nqa  Nqa           "`    "_        "P    "P            "P    "P          "P  1"P   @¢   `B  8"P  	"P           "P  ` "P  @   @   @ "P  @ "P  @       "P   "P         "P   "P         "P    "P      <   "P |À"P  p   "P   "P           "Q    "R     !a*R"RJB"QVBз !    "P    "_    """"""""""""""""    p                   @   @    pCANVAS DEMO Clear Draw Props Quit Width  Height Margin Vertical Scrollbar:    NO YES Horizontal Scrollbar:  NO YES Retained:    NO YES Auto Clear:  NO YES Auto Expand:  NO YES Auto Shrink:  NO YES CLEAR DRAW PROPS QUIT (%d, %d) Fixed Image:  NO YES DONE Width  Height /Compatibility/Alerts Are you sure you want to Quit? Confirm Cancel Press the left mouse button to confirm Quit.  To cancel, press the right mouse button now. Press the left mouse button to confirm Quit.  To cancel, press the right mouse button now.    ` ` ` `40` <    xppX0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     "        "   +    0   >       D    4   X       g    $   {            .        0f       p        $t        4        1        -        4        1J  	     *n       .r  '     -  4      B    ,  S      _    p  j    (                                3       4D       .@      8       .       -N             @  +    <  >      E     5  U   >  \    c	  H  h       n ~  "  t b  "   r h     "       J    Q                   (__DYNAMIC crt0.o Fcrt1.o canvas_demo.o _canvas_auto_clear _menu _canvas_auto_expand _object_height _canvas_vertical_sb _vertical_sb _handle_event _draw_something _canvas_demo_pr_data _init_panel _hide_props _create_props _show_props _my_destroy_func _draw_line _modify_canvas _resize_canvas _draw_canvas _canvas_width _canvas_retained _base_frame _icon_data _canvas_horizontal_sb _horizontal_sb _canvas_height _object_width _canvas_margin _fixed_image _modify_object _quit _canvas_auto_shrink _repaint_canvas _clear_canvas _canvas _object_height_item _object_width_item _props panel_util_data _etext _edata _end start _main start_float _environ fsoft_used _canvas_demo_pr _panel_cycle_pr _panel_seln_destroy_proc _panel_cycle_pr_data _panel_caret_invert_proc _panel_caret_on_proc _panel_seln_inform_proc                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             ./demo/cursor_demo                                                                                     755       0      12       100000  4424737215   7417                                                                                                                                                                                                                                                                                                                                                                        @                       M  $G "I# J  "g  a  *HTHS/N  "N  %T / N  hX/ N  pNVH0 HzHx  HzN6   -@Hx  Hn/ N<       gAv` 4nf$<  Ԯ      ЮЮHzbHx  /./:/:/ Hx  N    -@/././:x/:x/. Ю/ N    & / .Ю/ N    Hz"Hx  Hz N fP-@JfX`"Hx  / /:/:/.֮/N D   A-H-y -z lHnHx  nNPL N^Nu o Hx ` o Hx G` o Hx I` o Hx N@eNu/HPHx Hx  Hx N@/|    Hx N@   /usr/lib/ld.so /dev/zero     crt0: no /usr/lib/ld.so
   %crt0: /usr/lib/ld.so mapping failure
    crt0: no /dev/zero
                 N  x  NVHyA3/9 0N  PO-@BHyA3/9 `N  PO/ HyC	HyA3/9 \N  PO/ HyCHyA3/9 XN  PO/ HyCHyA3/9 TN  PO/ HyCHyA3/9 PN  PO/ N  $XO/ HyCHyA3/9 LN  POR/ HyCHyA3/9 HN  PO/ HyC	HyA3/9 DN  PO/ HyCHyA3/9 @N  PO/ HyCHyA3/9 <N  PO/ HyCHyA3/9 8N  PO/ N  $XO/ HyCHyA3/9 4N  POR/ HyCHyA3/9 dN  PO/ N  $XO/ HyCHyA3/9 lN  PO/ HyC
HyA3/9 hN  PO/ HyC	.r/ HyC	.r/ HyC	.r/ HyC	.r/ HyC	/9 pN  O B/9 pHyJ1
/9 ,N  p N^NuNV . rb4@0; N       " &p`p`p`p`p`
p
`p`p N^NuNV  /9 (N  XOp N^NuNVBHx HyK*	BHy @HyN	N  O / HyF
Hy XHyF
	a/. /. HyK"Hy  BN  O 0# (Hz
/9 (N  POBHy  /9 (N  O # ,HyC	HyJ1
/9 ,N  PO/ N  PO-@ @/( /( /( N  O -@BB/.Hx  @/( /( BB/  P PNO $BHx HyC/.HyC	N  O # pB/9 pHyJ1
/9 ,N  O          B9 B9 !   @ B9 "    B9 #B9   B9 $B9 B9   % @ B9  L &  B9   'HyJQ
/9 ,N  PO-@Hy d/ N  POHy  Hy Hy Hx B/. y  h $NO BHzHyAk
aHx HyAM	!Hx 	HyAL	!Hx HyA3BHy Hy Hy Hy zHyAVaHx HyA?	Hy lHyAQ	aHy HyA-Hy HyA#AHy HyA,Hy  HyA"ABHyAF	Hy  /9 ,N  O |# 0BHx HyA?	Hy HyAQ	aHy HyA,Hy HyA"AHy  /9 ,N  O ,BHzHyAk
aBHy Hy Hy Hy Hy Hy Hy Hy Hy Hy Hy Hy Hy Hy Hy Hy HyAVaHy HyAQ	aHy HyA,Hy" HyA"AHx HyAK	!Hx HyAM	!BHyAaBHy HyA`Hy  /9 ,N  O # hBHz0HyAk
aBHy %Hy "Hy Hy Hy Hy Hy Hy Hy Hy Hy Hy 
Hy Hy Hy Hy HyAVaHy HyAQ	aHy HyA,Hy" HyA"AHx HyAK	!Hx HyAM	!BHyAaBHy HyA`Hy  /9 ,N  O # lBHzRHyAk
aHx HyA3BHy Hy Hy gHy UHy CHy ;Hy 3HyAVaHy (HyAQ	aHy HyA,Hy" HyA"AHx HyAK	!Hx HyAM	!BHyAaBHy HyA`Hy  /9 ,N  O |# dBHx HyA?	Hy HyAQ	aHy HyA,Hy  HyA"AHy  /9 ,N  O ,BHzZHyAk
aHx HyAK	!BHy
HyA1BHy HyA(ABHy
 HyA2BHy	 HyA)AHx 	HyAL	!BHyAaBHy HyA`Hx HyAM	!BHy |Hy 
THy ,Hy Hy HyA^Hy HyAQ	aHy	 HyA,Hy HyA"AHy  /9 ,N  O # 4BHz|HyAk
aHx HyA3BHy 0Hy Hy Hy Hy Hy Hy HyAVaHy HyAQ	aHy	 HyA,Hy HyA"AHx HyAK	!Hx HyAM	!BHyAaBHy HyA`Hy  /9 ,N  O |# 8BHzHyAk
aHxHyA8HxHyA7BHyA3Hx HyA$AHy BHyAQ	aHy
 HyA,Hy HyA"AHy /9 ,N  O L# @BHzXHyAk
aHxHyA3Hx HyA8HxHyA7Hx HyA$AHy GHyAQ	aHy HyA,Hy HyA"AHy /9 ,N  O L# DBHzHyAk
aBHy dHy bHy `Hy ^Hy \Hy ZHy XHy VHyAVaHx HyA3Hy OHyAQ	aHy HyA,Hy HyA"AHy  /9 ,N  O \# <BHzVHyAk
aHx HyAM	!Hx HyAK	!BHy Hy 
lHyA^Hy fHyAQ	aHy
 HyA,Hy HyA"AHy  /9 ,N  O L# HBHx HyA?	Hy vHyAQ	aHy HyA,Hy  HyA"AHy  /9 ,N  O ,BHzHyAk
aHx HyAK	!BHyHyA1BHy HyA(ABHy HyA2BHy	 HyA)AHx 	HyAL	!BHyAaBHy HyA`Hx HyAM	!BHy |Hy 
THy ,Hy Hy HyA^Hy HyAQ	aHy HyA,Hy HyA"AHy  /9 ,N  O # LBHzHyAk
aHx HyA3BHy Hy Hy Hy Hy Hy Hy HyAVaHy HyAQ	aHy HyA,Hy HyA"AHx HyAK	!Hx HyAM	!BHyAaBHy HyA`Hy  /9 ,N  O |# PBHzHyAk
aHxHyA8HxHyA7BHyA3Hx HyA$AHy HyAQ	aHy HyA,Hy HyA"AHy /9 ,N  O L# XBHzHyAk
aHxHyA3Hx HyA8HxHyA7Hx HyA$AHy HyAQ	aHy HyA,Hy HyA"AHy /9 ,N  O L# \BHz&HyAk
aBHy 3Hy 1Hy /Hy -Hy +Hy )Hy 'Hy %HyAVaHx HyA3Hx HyA$AHy HyAQ	aHy HyA,Hy HyA"AHy  /9 ,N  O d# TBHzHyAk
aHx HyAM	!Hx HyAK	!BHy Hy 
lHyA^Hy 5HyAQ	aHy HyA,Hy HyA"AHy  /9 ,N  O L# `BHzHyAk
aBHx Hy E/9 ,N O / HyAY	Hy HyA,HyF HyA"AHy /9 ,N  O ,BBHyJ.ABHyJ-/9 ,N  O BBHyJ.ABHyJ-/9 (N  O /9 (N  XOBN  hXOp N^NuNVHyJN
 /. N  PO-@BHx Hy JN (O -@    f  Jg  BHx HyQ	Hx HyQ7	Hy HyQ$	aHy HyQ#	aBHy `HyQaHn/. N 0O 8-@f4Hy /.N 8PO-@gDJf@/. N @XOp `@   f`$Hy /.N 8PO-@gJg/. /. N HPON^Nu      j    r    z  
    .    /                 *    -        )    (        ,        !        #   + 
        ' "  $ *  9 2   :  7 B   J         ,   
T   |      
l      @   R  >    Z  G b  C j  J r  H z  K   M   F   A   P   O   E   D   L         "   >      ,      #                /   L                             
      4   9                  &   '   A      "      '      %                     	   F                
   +      *      !      -      1             (      /      .      $           !       #   H   $   0   %   )   &   <   (   6   )   3   *   G   +   4   ,   B   -   5   .   :   0   2   1   7   2   M   3       5   ;   6   8   7   E   8   C   9       :       ;   =   <       =   ?   >       ?   @   @       A       B   D   C   J   D   I   E       F   N   G   K   H       I       J   O   K   P   L       M       N       O       P           A|        	  x                    9      ) ~  %T   / b  "   ;        B r    K         U   "   `        n  @   w     ~ m        ,                  h             Q        7      U                 ,         3 
X  %    8       R        q       }         [               
@          
           a   
 8             '  N      <       Q       ` S      l }      {        \                    ,    
T    |               J    z      .  
l  6 Q T  O  x  d  L  }         H    P                                   
 H                    ) {   >  F      L X      U       ^       g    r L       \    _etext _edata _end start _exit __DYNAMIC _main start_float __exit _environ _finitfp_ fsoft_used _alert_prompt _hair_pr _on_pr _mem_ops _cursor_get _panel_slider _curdem_icpr5_data _panel_choice _panel_button_image _down_arrow _cursor_create _icon_create _hair_pr_data _on_pr_data _off_pr_data _curdem_icpr2_data _notify_next_destroy_func _notify_interpose_destroy_func _window_set _notify_veto_destroy _window_destroy _pw_setcmsname _curdem_icpr4_data _panel_create_item _window_main_loop _down_arrow_data _curdem_icpr1_data _panel_button _window_get _panel_window_object _frame_window_object _panel_message _mem_create _window_create _panel_get _cursor_set _curdem_icpr3_data _curdem_icpr1 _curdem_icpr2 _curdem_icpr3 _curdem_icpr4 _curdem_icpr5 _pw_opsstd_ptr _wmgr_confirm _panel_cycle_pr _defaults_get_boolean _off_pr _panel_seln_destroy_proc _panel_cycle_pr_data _panel_caret_invert_proc _panel_nullproc _panel_caret_on_proc _panel_seln_inform_proc _pwo_region _pw_dontclipflag _pwo_stencil _pwo_getattributes _pwo_putattributes _pwo_vector _pwo_rop _pw_close _pw_opsstd_null_lock _pwo_batchrop _pwo_get _pwo_nop _pwo_put _pw_opsstd _pwo_getcolormap _pwo_putcolormap /usr/lib/fsoft    !@      (  !  !H      (  !   !R       !0  !Z          suntool sunwindow pixrect c                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            $                              !      \  `  `             \    @   `   N      Nqa   Nqa  Nqa  Nqa  Nqa  Nqa  Nqa  Nqa  Nqa  Nqa  	Nqa  
Nqa  Nqa  Nqa  
Nqa  Nqa | Nqa t Nqa l Nqa d Nqa \ Nqa T Nqa L Nqa D Nqa < Nqa 4 Nqa , Nqa $ Nqa  Nqa  Nqa  &Nqa  (Nqa  )Nqa  *Nqa  +Nqa  ,Nqa  -Nqa  .Nqa  /Nqa  0Nqa  1Nqa  2Nqa  3Nqa  4                        ?      ?               |  <     x                           p      x      8      <     8   8    8    8   0p   `p   p   p    p      p      p      p      p      p      p      8      8      8      8                   3   < 3  x 3  x 3  p3   ? ?        x      <          |                  ?   ?                                               @   @                    ?      ?               |  < `   x  `                       p      x      8      <          8   8   8    8    0p    p   p   p    p      p      p      p      p      p      p      8      8      8      8               f    f <   f x   f x   f p               x      <          |                  ?   ?                                               @   @                    ?      ?               |  < `   x  `         `  `            p      x      8      <         08  08  08  08  0p   p   p    0p   0p    p      p      p      p      p      p      8      8      8      8                    <    x    x    p                x      <          |                  ?   ?                                               @   @                    ?      ?          `    ` |  < `   x `    `        `   `        p      x      8      <         8  8  8  8   p   0p   0p  p   p      p      p      p      p      p      p      8      8      8      8                 ?   < #   x    x    p        ?   ?    x      <          |                  ?   ?                            @                   @   @    
@                ?      ?             |  <    x      0    0                p      x      8      <         `8   8   `8   `8   `p   `p   `p    `p    p      p      p      p      p      p      p      8      8      8      8                    ? < ?  # x #   x    p     #   ?  ?   ? x      <          |                  ?   ?                            
h                   @   @    h??                                                        ?                                      ߉P00                       @       
X               ?      ?      ?                            ߉P00    
                   @                @      @      @8@H"D@D@D@I"D@8@      @      @      @    @    @    @    @    @    @    @    @    @    @    @    @      @      @      @      @?@?@    @  p  @   0  @      @      @    @    @    @    @    @    @    @    @    @    @    @    @    @      @      @     @     @ 4q @ LR  @ DR  @ DR  @ LR  @ 4qQ @      @      @      @              (                   @   @    ,    cursor_demo rainbow What to show: Show Cursor Show Horizontal Hair Show Vertical Hair Fullscreen Cursor Info: X Hot Spot 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Y Hot Spot 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Drawing OP PIX_SRC PIX_DST PIX_SRC | PIX_DST PIX_SRC & PIX_DST PIX_NOT(PIX_SRC & PIX_DST) PIX_NOT(PIX_DST) PIX_SRC ^ PIX_DST Horizontal Hair Info: Thickness Drawing OP PIX_SRC PIX_DST PIX_SRC | PIX_DST PIX_SRC & PIX_DST PIX_NOT(PIX_SRC & PIX_DST) PIX_NOT(PIX_DST) PIX_SRC ^ PIX_DST Gap: Length: Color: 0 1 2 3 4 5 6 7 Border Gravity: Vertical Hair Info: Thickness Drawing OP PIX_SRC PIX_DST PIX_SRC | PIX_DST PIX_SRC & PIX_DST PIX_NOT(PIX_SRC & PIX_DST) PIX_NOT(PIX_DST) PIX_SRC ^ PIX_DST Gap: Length: Color: 0 1 2 3 4 5 6 7 Border Gravity: Quit /Compatibility/Alerts Are you sure you want to Quit? Confirm Cancel Press the left mouse button to confirm Quit.  To cancel, press the right mouse button now. Press the left mouse button to confirm Quit.  To cancel, press the right mouse button now.      P P P P40` <    xppX0        X                          x    X ` h     p x                p                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   "        "   +    L   ;    4   L        R    p   Z       a       f    d   q    8   {    
               %<       T       <        3B       P       (                     X       \  	    D       "  %    0  3    l  @    `  U    H  k      v    @      h      (      ,      
h            @       $       4`       4`     A|      	  x          ~  %T   b  "   r      "  $  @  -    4  h  G 7   S  ,  a     m  3 
X  z      
@       a                 ,    
T    |      , J   <  
l  D Q T  ]  x  r  L    H    P       {       __DYNAMIC crt0.o Fcrt1.o cursor_demo.o _vert_thickness _horiz_thickness _blue _cursor _green _red _cursor_op _horiz_op _on_image _k2_image _quit_out _vert_color _horiz_color _my_destroy_func _vert_op _ic_image _down_arrow_image _k3_image _vert_gap _vert_length _horiz_length _apply_cursor _what_to_show _cursor_yhot _vert_border_gravity _horiz_border_gravity _off_image _k4_image _cursor_xhot _frame _panel _k5_image _k1_image _horiz_gap _value_to_op panel_util_data pw_rop_data.o _etext _edata _end start _main start_float _environ fsoft_used _hair_pr _on_pr _curdem_icpr5_data _down_arrow _hair_pr_data _on_pr_data _off_pr_data _curdem_icpr2_data _curdem_icpr4_data _down_arrow_data _curdem_icpr1_data _curdem_icpr3_data _curdem_icpr1 _curdem_icpr2 _curdem_icpr3 _curdem_icpr4 _curdem_icpr5 _pw_opsstd_ptr _panel_cycle_pr _off_pr _panel_seln_destroy_proc _panel_cycle_pr_data _panel_caret_invert_proc _panel_caret_on_proc _panel_seln_inform_proc _pw_dontclipflag _pw_opsstd_null_lock _pw_opsstd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ./demo/framedemo                                                                                       755       0      12        60000  4424737215   7022                                                                                                                                                                                                                                                                                                                                                                                                 M  $G "I# J  "g  a  *HTHS/N  "N  " / N  hX/ N  pNVH0 HzHx  HzN6   -@Hx  Hn/ N<       gAv` 4nf$<  Ԯ      ЮЮHzbHx  /./:/:/ Hx  N    -@/././:x/:x/. Ю/ N    & / .Ю/ N    Hz"Hx  Hz N fP-@JfX`"Hx  / /:/:/.֮/N D   A-H-y -z lHnHx  nNPL N^Nu o Hx ` o Hx G` o Hx I` o Hx N@eNu/HPHx Hx  Hx N@/|    Hx N@   /usr/lib/ld.so /dev/zero     crt0: no /usr/lib/ld.so
   %crt0: /usr/lib/ld.so mapping failure
    crt0: no /dev/zero
                 N  x  NVhB `   9 R/ Hy 0Hy &N  O BBHy  N  O -@gtHx Hx Hx N  O "9 A ! Hx   9 A  p  h /( /.N  O /.N  XOR    m LJ fHy 3N  XO` 0/. BN  PO# J fHx N  hXO y /( N  XOHnN  XO . Hx BHxHnHn/9 N  O Hx N  &HXOA "| x#h  "Hx  HnN  POHx  HnN  POHx  HnhN  POHy xAhO"O0< "QAO"O0< "QAO"O0< "QHz 0/9 N  O l/9 N  XOBN  hXOp N^NuNV n Jg PJf n  PJ g n  (    g  n J g
BN  &H`
/. N  XO n p" n g Hn n /N  POJg  Hy lN  XO`   P m  P `      m  S # ~ `   ~ l  P `  B R `x    mlS `dHy vN  XO`  p 0.f0.H`p 0. @| r?grFgrSgrfg @rsg tHn/9 N  PO n "n BB n BA "| x#h  " n  p N^NuNV y  ( r-@J fJg   y rè Hy  y /N PO09 lR@@H   # 09 lR@@H   # BBBB0y /0y / y  h p  /  y  h p  /  y  h /(  y  h  P PNO $ 9  mB  y S BB 9 A /0 Hx Hx Hx  y  h  9  /  y  h  9  /  y  h /(  y  h  P PNJfR p N^Nu        j    r    z  
                        
                                            
                                    
            	            
               	      
            
                                                                                                        ,        	                      9      ) ~  "   / b  "   ;        B r    K         U   "   `        f        n         5                                  6        {         F                S              ;                    . G      : p    _etext _edata _end start _exit __DYNAMIC _main start_float __exit _environ _finitfp_ fsoft_used _read _printf _gfxsw_setinputmask _win_getsize _gfxsw_selectdone _gfxsw_select _input_imnull _gfxsw_inputinterrupts _bzero _sprintf _pw_use_fast_monochrome _mem_create _open _close _perror _input_readevent _gfxsw_done _gfxsw_init   /usr/lib/fsoft    X      (  (  `      (  8  j       H  r          suntool sunwindow pixrect c                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    $                                  \  `    h  	X         
  H          N      Nqa   Nqa  Nqa  Nqa  Nqa  Nqa  Nqa  Nqa  Nqa  Nqa  	Nqa  
Nqa  Nqa  Nqa  
Nqa  Nqa | Nqa t Nqa l Nqa d Nqa \ Nqa T              Pframe.xxx       %d Couldn't find any 'frame.xx' files in working directory
 framedemo 's' slower usec timeout
'f' faster usec timeout
'S' slower sec timeout
'F' faster sec timeout
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       "        "   )     $   =       C       K     &H   `       h       r    x   |                                       ,        	              ~  "    b  "    r       "   __DYNAMIC crt0.o Fcrt1.o framedemo.o _framedemo_selected _rect _yimage _framedemo_nextframe _ximage _framenum _timeleft _mpr _frames _s _gfx _timeout _etext _edata _end start _main start_float _environ fsoft_used                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ./demo/jumpdemo                                                                                        755       0      12        60000  4424737216   6704                                                                                                                                                                                                                                                                                                                                                                                                 M  $G "I# J  "g  a  *HTHS/N  "N  " / N  hX/ N  pNVH0 HzHx  HzN6   -@Hx  Hn/ N<       gAv` 4nf$<  Ԯ      ЮЮHzbHx  /./:/:/ Hx  N    -@/././:x/:x/. Ю/ N    & / .Ю/ N    Hz"Hx  Hz N fP-@JfX`"Hx  / /:/:/.֮/N D   A-H-y -z lHnHx  nNPL N^Nu o Hx ` o Hx G` o Hx I` o Hx N@eNu/HPHx Hx  Hx N@/|    Hx N@   /usr/lib/ld.so /dev/zero     crt0: no /usr/lib/ld.so
   %crt0: /usr/lib/ld.so mapping failure
    crt0: no /dev/zero
                 N  x  NV|./. BN  PO-@ @p  
@ WD -@BJfHx N  hXOJg n!|    -n `"Hy  n/N  POJft-BX nJf/./.N  (PO-@`8 n ( S!@ tl$ n!|    ` ntŨ /.N  XO n/( N  XOBt-B-B-BHn n/N  PO n   l ( ` <  !@  n ( " DЁ/ Hx N  PO-@fHy N  XO`  n ( S" DЁЮ-@0.lR@@H-@0.lR@@H-@ n    lt` n   d lt`t-B-n` 0n/BN  PO-@0n/BN  PO-@ .-@ .-@ ." N  $  ." N  Ԁ/N  XO-@N  -@ .N  -@ .N  -@ .N  -@-A .N  -@-A .N  AN  AN  AN  N  -@ .N  -@-A .N  -@-A .N  AN  AN  AFN  N  -@ .r n  n .r!@  .N   n!@  .N   n!@  n!P  n!h   nB tծ .찮c X0.nn0.H-@BBBB0n/0n/ n h p  /  n h p  /  n h /(  n h  P PNO $`  -n`  n!P  n!h   nB tծ .찮cBt-BB`   .R԰l  Hn n/(  h  h , PNPO/.Hn/./. n/( /./.N  'O -@ n/(  h  h , h NXO n (   g
/N XO n (    f JgBJf XJg,Jg& .U/ Hx  ./  n/( N O Jf /.N  XOJf /.N XOBN  hXOp $.|N^Nu@      NVH0*n B(n `  J f  R., r,, rJ f , Ѭ  , Ѭ *, r(, rJ g.  rN  ".  SN (-@fR/.Hx `BB n   /   /  / //(  P h NO  n 0Hm,0( Hm"0H2( HЁl0( H2( HЁm~)G I c  .L0N^NuNVJ gN 0/ Hy HnN 8`Hx Hy HnN @O Hn n /( N HPOB.B.B.| B.B.| | B.B.| B.B.| | B.B.| | B.| | | | HnHnHnHx B n /(  y 0 h $NpN^Nu        j    r    z  
    #                            !                     
                
     %   " "   *   2  $ :   B   J   R  - Z  ) b  0 j  . r  1 z  3   ,   '   6   5   +   *   2             
            #   
          "                      
                   *         	                                                                             )      ,                    /      !      .      (   !   $   "   %   #   &   $   '   %   +   &   1   '   3   (       )   2   *   -   +       ,       -   0   .   4   /       0   5   1       2   7   3       4   6   5       6           2X     h   	  h                    9      ) ~  "   / b  "   ;        B r    K         U   "   `        f        l        t &                        5                                  y                         F        F        :        k                                l       0       G      ! p      - p      5 H      G  0  V       b    s                       H                     { 4    G       X                         L       \    _etext _edata _end start _exit __DYNAMIC _main start_float __exit _environ _finitfp_ fsoft_used lmult Ffltd _printf _gfxsw_handlesigwinch Fflts Fdivd _win_getsize _strncpy Fdtos _sqroot _free lmodt _pw_setcmsname _sprintf ldivt Fmuld _calloc Fints _strcmp _pw_exposed Fstod _r _gfxsw_done _gfxsw_init _getpid _pw_cyclecolormap _pw_opsstd_ptr _pwo_region _pw_dontclipflag _pwo_stencil _pwo_getattributes _pwo_putattributes _pwo_vector _pwo_rop _pw_close _pw_opsstd_null_lock _pwo_batchrop _pwo_get _pwo_nop _pwo_put _pw_opsstd _pwo_getcolormap _pwo_putcolormap /usr/lib/fsoft          (    $      (    .         6          suntool sunwindow pixrect c                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                $                                  \  `  	  H  
       
    0      X   N      Nqa   Nqa  Nqa  Nqa  Nqa  Nqa  Nqa  Nqa  Nqa  Nqa  	Nqa  
Nqa  Nqa  Nqa  
Nqa  Nqa | Nqa t Nqa l Nqa d Nqa \ Nqa T Nqa L Nqa D Nqa < Nqa 4 Nqa , Nqa $ Nqa  Nqa  Nqa  Nqa  Nqa  Nqa   Nqa  !Nqa  "Nqa  #Nqa  $Nqa  %Nqa  &Nqa  'Nqa  (Nqa  )        -c Jump couldn't allocate memory
 jumpdemo%10ld rgb         P X `     h p x               h                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           "        "   (     '   4     (   C     )   Q   2X   X  h   _	  h   d        j ~  "   p b  "   | r       "     0         { 4        __DYNAMIC crt0.o Fcrt1.o jumpdemo.o _accelerate _setupcolormap pw_rop_data.o _etext _edata _end start _main start_float _environ fsoft_used _pw_opsstd_ptr _pw_dontclipflag _pw_opsstd_null_lock _pw_opsstd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             ./demo/spheresdemo                                                                                     755       0      12        60000  4424737216   7402                                                                                                                                                                                                                                                                                                                                                                                                M  $G "I# @J  "g  a  *HTHS/N  "N  " / N  hX/ N  pNVH0 HzHx  HzN6   -@Hx  Hn/ N<       gAv` 4nf$<  Ԯ      ЮЮHzbHx  /./:/:/ Hx  N    -@/././:x/:x/. Ю/ N    & / .Ю/ N    Hz"Hx  Hz N fP-@JfX`"Hx  / /:/:/.֮/N D   A-H-y @-z lHnHx  nNPL N^Nu o Hx ` o Hx G` o Hx I` o Hx N@eNu/HPHx Hx  Hx N@/|    Hx N@   /usr/lib/ld.so /dev/zero     crt0: no /usr/lib/ld.so
   %crt0: /usr/lib/ld.so mapping failure
    crt0: no /dev/zero
                 N  x  NV/. BN  PO-@BJfHx N  hXO-n `"Hy H n/N  POJfr-AX nJfJg/.N  (r`
/.N  'XO-@`  nrè /9  y  P h NXOHn n/N  POBBBHx 0n/0n/ n h p  /  n h p  /  n h /(  n h  P PNO $ n h  h $/( 0n/Hx N  O # `  0.lR@@2.lRAAAl0.`0.J@lR@@H/ BN  PO-@0n/BN  PO-@0n/BN  PO-@ n/( BN  PO".N  -@fR   lr-A/./. n/( /././.N  $O  n (    f ~S  nJ f "/9  y  P h NXO/.N  XOBN  hXOp N^NuNVH .. ,. *. B(D`  n  (   g
/N  XO n  ( vf R "N  -@ "N  / N  XO$ BB n  Ђ /  Є /   /  Є / /(  P h NO &D`   "N  -@ "N  -@ D" Ё-@ "N  / N  XO" Ё-@ " ЁҁЁ/ BN  PO-@ " ҁЁЮЮr \D-Ag&/.  І/ /./9  y  P h NO Ro @ y  ( Sf,/.  y  Ї / Hx /9 N  &O BRo ^/. ؇".T/Hx /9 N  &p L N^NuNVH0 n  h $ n  h "(  n  h Ԩ  n  h  (  n "( Ԁ*B h "(  n  ( SҀ h $ n  h Ԩ  n  h  (  n "( SЁ"( Ԁ(BBB//. /( /(  n p  /  .  / /(  P PN`Bcp L0N^NuNVHy K n /( N  PO| | | | B.B.| | @B.| | B.B.| B.B.B.| | @B.| L| B.| HnHnHnHx B n /(  y  h $NpN^NuNV.Hy S n /( N  PO~ A C x x A x R   mHn Hn Hn Hx B n /(  y  h $N <   ..N^Nu    j    r    z  
                                
                        !        "   $ 
        ' "  & *   2   :  #         
                       
             #         
                            
               	                                                                            !                    $      "           !   &   "   '   #       $   %   %       &       '           /,        	                      9      ) ~  "   / b  "   ;        B r @   K         U   "   `        f &       | 5                                          S        0        G        p                      `                !        4 H      @       I       S {   h  F      v X                      d   L       \    _etext _edata _end start _exit __DYNAMIC _main start_float __exit _environ _finitfp_ fsoft_used lmult _gfxsw_handlesigwinch _win_getsize _sqroot lmodt _pw_setcmsname _strcmp _mem_create _r _gfxsw_done _gfxsw_init _pw_opsstd_ptr _pwo_region _pw_dontclipflag _pwo_stencil _pwo_getattributes _pwo_putattributes _pwo_vector _pwo_rop _pw_close _pw_opsstd_null_lock _pwo_batchrop _pwo_get _pwo_nop _pwo_put _pw_opsstd _pwo_getcolormap _pwo_putcolormap   /usr/lib/fsoft          (          (             
          suntool sunwindow pixrect c                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            $                                  \  `    	          
              N      Nqa   Nqa  Nqa  Nqa  Nqa  Nqa  Nqa  Nqa  Nqa  Nqa  	Nqa  
Nqa  Nqa  Nqa  
Nqa  Nqa | Nqa t Nqa l Nqa d Nqa \ Nqa T Nqa L Nqa D Nqa < Nqa 4 Nqa , Nqa $         -g rainbow fullgray                              ( 0 d 8 8 8       8 8 8     ( 0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           "        "   +     $   3       8     '   N     (r   e     &   s     (      /,        	              ~  "    b  "    r @      "          `    {      d   __DYNAMIC crt0.o Fcrt1.o spheresdemo.o _sphere _mpr _setuprainbowcolormap _setupfullgraycolormap _demoflushbuf pw_rop_data.o _etext _edata _end start _main start_float _environ fsoft_used _pw_opsstd_ptr _pw_dontclipflag _pw_opsstd_null_lock _pw_opsstd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ./demo/SRC/                                                                                            775       0      12            0  4425705137   5464                                                                                                                                                                                                                                                                                                                                                                      ./demo/SRC/cframedemo.c                                                                                444       0      12        17074  4424743271  10044                                                                                                                                                                                                                                                                                                                                                                      #ifndef lint
static	char sccsid[] = "@(#)cframedemo.c 1.9 88/11/09 Copyr 1984 Sun Micro";
#endif

/*
 * Copyright (c) 1984 by Sun Microsystems, Inc.
 */

/*
 * 	Overview:	Frame displayer in windows.  Reads in all the
 *			files of form "frame.xxx" in working directory &
 *			displays them like a movie.
 *			See constants below for limits.
 */

#include <stdio.h>
#include <sys/types.h>
#include <sys/file.h>
#include <sys/time.h>
#include <pixrect/pixrect.h>
#include <pixrect/pr_util.h>
#include <pixrect/bw1var.h>
#include <pixrect/memvar.h>
#include <sunwindow/rect.h>
#include <sunwindow/rectlist.h>
#include <sunwindow/pixwin.h>
#include <sunwindow/win_input.h>
#include <sunwindow/win_struct.h>
#include <suntool/gfxsw.h>

#define	MAXFRAMES	1000
#define	FRAMEWIDTH	256
#define	FRAMEHEIGHT	256
#define	USEC_INC	50000
#define	SEC_INC		1

static	struct pixrect *mpr[MAXFRAMES];
static	struct timeval timeout = {SEC_INC,USEC_INC}, timeleft;
static	char s[] = "frame.xxx";
static	struct gfxsubwindow *gfx;
static	int frames, framenum = 1, ximage, yimage;
static	struct rect rect;
#define NCMAP	64
#define MAXSHADE 31
#define SHADEBITS 5
static u_char red[NCMAP], green[NCMAP], blue[NCMAP];


main(argc, argv)
	int argc;
	char **argv;
{
	int	fd, framedemo_selected();
	struct	inputmask im;
	fd_set	inbits, nullbits;

	for (frames = 0; frames < MAXFRAMES; frames++) {
		sprintf(&s[6], "%d", frames);
		fd = open(s, O_RDONLY, 0);
		if (fd == -1) {
			break;
		}
		mpr[frames] = mem_create(FRAMEWIDTH, FRAMEHEIGHT, 1);
		read(fd, mpr_d(mpr[frames])->md_image,
		    FRAMEWIDTH*FRAMEHEIGHT/8);
		close(fd);
		}
	if (frames <= 1) {
	    printf("Couldn't find any 'frame.xx' files in working directory\n");
	    return;
	}
	/*
	 * Initialize gfxsw
	 */
	gfx = gfxsw_init(0, argv);
	if (gfx == (struct gfxsubwindow *)0)
		exit(1);
	/*
	 * Set up input mask
	 */
	input_imnull(&im);
	im.im_flags |= IM_ASCII;
	gfxsw_setinputmask(gfx, &im, &im, WIN_NULLLINK, 1, 0);
	/*
	 * Main loop
	 */
	framedemo_nextframe(1);
	timeleft = timeout;
	FD_ZERO (&inbits);
	FD_SET (gfx->gfx_windowfd, &inbits);
	FD_ZERO (&nullbits);
	gfxsw_select(gfx, framedemo_selected, inbits, nullbits, nullbits,
	    &timeleft);
	/*
	 * Cleanup
	 */
	gfxsw_done(gfx);
}

framedemo_selected(gfx, ibits, obits, ebits, timer)
	struct	gfxsubwindow *gfx;
	fd_set	*ibits, *obits, *ebits;
	struct	timeval **timer;
{
	if ((*timer && ((*timer)->tv_sec == 0) && ((*timer)->tv_usec == 0)) ||
	    (gfx->gfx_flags & GFX_RESTART)) {
		/*
		 * Our timer expired or restart is true so show next frame
		 */
		if (gfx->gfx_reps)
			framedemo_nextframe(0);
		else
			gfxsw_selectdone(gfx);
	}
	if (FD_ISSET (gfx->gfx_windowfd, ibits)) {
		struct	inputevent event;

		/*
		 * Read input from window
		 */
		if (input_readevent(gfx->gfx_windowfd, &event)) {
			perror("framedemo");
			return;
		}
		switch (event.ie_code) {
		case 'f': /* faster usec timeout */
			if (timeout.tv_usec >= USEC_INC)
				timeout.tv_usec -= USEC_INC;
			else {
				if (timeout.tv_sec >= SEC_INC) {
					timeout.tv_sec -= SEC_INC;
					timeout.tv_usec = 1000000-USEC_INC;
				}
			}
			break;
		case 's': /* slower usec timeout */
			if (timeout.tv_usec < 1000000-USEC_INC)
				timeout.tv_usec += USEC_INC;
			else {
				timeout.tv_usec = 0;
				timeout.tv_sec += 1;
			}
			break;
		case 'F': /* faster sec timeout */
			if (timeout.tv_sec >= SEC_INC)
				timeout.tv_sec -= SEC_INC;
			break;
		case 'S': /* slower sec timeout */
			timeout.tv_sec += SEC_INC;
			break;
		case '?': /* Help */
			printf("'s' slower usec timeout\n'f' faster usec timeout\n'S' slower sec timeout\n'F' faster sec timeout\n");
			/*
			 * Don't reset timeout
			 */
			return;
		default:
			gfxsw_inputinterrupts(gfx, &event);
		}
	}
	FD_ZERO (ibits);
	FD_ZERO (obits);
	FD_ZERO (ebits);
	timeleft = timeout;
	*timer = &timeleft;
}

struct pixrect *spherepr;

framedemo_nextframe(firsttime)
	int	firsttime;
{
	int planes;
	int restarting;

	if (gfx->gfx_flags&GFX_DAMAGED)
		gfxsw_handlesigwinch(gfx);
	restarting = gfx->gfx_flags&GFX_RESTART;
	if (firsttime || restarting) {
		gfx->gfx_flags &= ~GFX_RESTART;
		win_getsize(gfx->gfx_windowfd, &rect);
		ximage = rect.r_width/2-FRAMEWIDTH/2;
		yimage = rect.r_height/2-FRAMEHEIGHT/2;
		load_colors();
		pw_setcmsname(gfx->gfx_pixwin, "spinning_world");
		pw_putcolormap(gfx->gfx_pixwin, 0, NCMAP, red, green, blue);

		/* bkgnd and sphere shading setup */
		planes = -1;
		pw_putattributes(gfx->gfx_pixwin, &planes);
		pw_writebackground(gfx->gfx_pixwin, 0, 0,
		    rect.r_width, rect.r_height, PIX_CLR);

		spherepr = mem_create( FRAMEWIDTH+3, FRAMEHEIGHT+3, 8);
		drawsphere(spherepr,FRAMEWIDTH/2+1,FRAMEHEIGHT/2+1,
			FRAMEWIDTH/2+1);
		pw_write(gfx->gfx_pixwin, ximage-1, yimage-1, FRAMEWIDTH+3,
			FRAMEHEIGHT+3, PIX_SRC, spherepr, 0, 0);
		if (spherepr) pr_destroy( spherepr);

		planes = 32;
		pw_putattributes(gfx->gfx_pixwin, &planes);
	}
	if (framenum >= frames) {
		framenum = 1;
		gfx->gfx_reps--;
	}
	pw_write(gfx->gfx_pixwin, ximage, yimage, FRAMEWIDTH, FRAMEHEIGHT,
	    PIX_SRC, mpr[framenum], 0, 0);
	if (!restarting)
		framenum++;
}
load_colors()
{
	int i;
	red[0] = green[0] = blue[0] = 150;
	red[NCMAP-1] = green[NCMAP-1] = blue[NCMAP-1] = 0;
	for (i=1; i<NCMAP; i++) {
		if (i <= MAXSHADE) {
			red[i] = 0;
			green[i] = (i & MAXSHADE) << (7-SHADEBITS);
			blue[i] =  ((i & MAXSHADE) << (8-SHADEBITS)) +7;
		} else {
			red[i] = (i & MAXSHADE) << (6-SHADEBITS);
			green[i] = ((i & MAXSHADE) << (8-SHADEBITS)) +7;
			blue[i] = 0;
		}
	}
}
#define SDERIV	-2
short circle[128];

#define mem_spot(pr, x, y, color)					\
	 *(mprd8_addr( mpr_d((pr)), (x), (y), 8)) = (color);

jsqrt(n) register unsigned n;
{
    register unsigned q,r,x2,x;
	unsigned t;

	if (n > 0xFFFE0000) return 0xFFFF;  /* algorithm won't cover this case*/
	if (n == 0xFFFE0000) return 0xFFFE; /* or this case */
	if (n < 2) return n;                /* or this case */
	t = x = n;
	while (t>>=2) x>>=1;
	x++;
	for(;;) {
		/* quotrem(n,x,q,r);      /* q = n/x, r = n%x */
		q = n/x;
		r = n%x;
		if (x <= q) {
			x2 = x+2;
			if (q < x2 || q==x2 && r==0) break;
		}
		x = (x + q)>>1;
	}
	return x;
}



drawsphere( dpr, x, y, radius)
	struct pixrect *dpr;
	int x, y, radius;
{
	int stheight;			/* starting height */
	register ifderiv, ofderiv;	/* derivatives of parab */
	register short u,v;		/* coordinates of pts on circle */
	register height;		/* height**2 of current pixel */
	register sheight;		/* actual height of pixel */
	register int color;
	short x1, x2, x3, x4, y1, y2, y3, y4;
	short inten;

	ofderiv = -1;
	stheight = radius * radius;
	makecircle(radius, x, y);
	for (v = 0; v <= radius; v++) {
		height = stheight;
		ifderiv = -1;
		stheight += ofderiv;
		ofderiv += SDERIV;
		x2 = x+v; x4 = x-v; y2 = y+v; y4 = y-v;
		for (u = 0; u <= v; u++) {
			if (v > circle[u])
				break;
			else if (height <= 0)
				sheight = 0;
			else
				sheight = jsqrt(height);

			inten = (sheight * MAXSHADE) / radius;
			color = (inten<1)?1:inten;

			x1 = x+u; x3 = x-u; y1 = y+u; y3 = y-u;
			mem_spot( dpr, x1, y2, color);
			mem_spot( dpr, x2, y1, color);
			if (u != 0) {
				mem_spot( dpr, x3, y2, color);
				mem_spot( dpr, x2, y3, color);
			}
			if (v != 0) {
				mem_spot( dpr, x1, y4, color);
				mem_spot( dpr, x4, y1, color);
			}
			if (u != 0 && v != 0) {
				mem_spot( dpr, x3, y4, color);
				mem_spot( dpr, x4, y3, color);
			}
			height += ifderiv;
			ifderiv += SDERIV;
		}
	}
}
makecircle(rad, x0, y0)
short   rad;
{
	int x, y, d;

	x = 0;
	y = rad;
	d = 3 - 2 * rad;
	while (x < y) {
		circle[x] = y;
		circle[y] = x;
		if (d < 0) {
			d = d + 4 * x + 6;
		} else {
			d = d + 4 * (x - y) + 10;
			y = y - 1;
		}
		x += 1;
	}
	if (x == y)
		circle[x] = y;
	else
		circle[x] = 0;
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ./demo/GP1/                                                                                            775       0      12            0  4425705141   5417                                                                                                                                                                                                                                                                                                                                                                      ./demo/GP1/Makefile                                                                                    444       0      12         1623  4424743422   7145                                                                                                                                                                                                                                                                                                                                                                      #
# @(#)Makefile.release 1.3 89/03/20 SMI
#

#
# Makefile for the GP demos and libraries
# to be include on release tapes

DESTDIR=

CFLAGS= -O

SUBDIR= DEV_GP1

DEMOS= flight rotobj

WINLIBS= -lsuntool -lsunwindow -lpixrect

all: ${DEMOS} ${SUBDIR}

${SUBDIR}: FRC
	cd $@; make ${MFLAGS}

FRC:

flight: flight.o 
	cc -o flight flight.o ${WINLIBS} ${CFLAGS}

flight.o: flight.c flight_dat.h
	cc -c ${CFLAGS} flight.c

rotobj: rotobj.o 
	cc -o rotobj rotobj.o ${WINLIBS} -lm ${CFLAGS}

rotobj.o: rotobj.c
	cc -c ${CFLAGS} rotobj.c

clean:
	rm -f *.o
	for i in ${SUBDIR}; do \
		(cd $$i; make ${MFLAGS} DESTDIR=${DESTDIR} clean); \
		done

install: all
	-install -s flight tempfile && \
	 rm flight; rm flight.o  && \
	 mv tempfile flight;
	-install -s rotobj tempfile && \
	 rm rotobj; rm rotobj.o && \
	 mv tempfile rotobj;
	-for i in ${SUBDIR}; do \
		(cd $$i; make ${MFLAGS} DESTDIR=${DESTDIR} install); \
		done
fx->gfx_flags & GFX_RESTART)) {
		/*
		 * Our timer expired or restart is true so show next frame
		 */
		if ./demo/GP1/flight.c                                                                                    444       0      12        61231  4424743420   7145                                                                                                                                                                                                                                                                                                                                                                      #ifndef lint
static	char sccsid[] = "@(#)flight.c 1.4 88/11/04 Copyr 1987 Sun Micro";
#endif

/*
 * Copyright (c) 1987 by Sun Microsystems, Inc.
 */

#include <fcntl.h>
#include <pixrect/pixrect_hs.h>
#include <pixrect/memreg.h>
#include <pixrect/cg2reg.h>
#include <sunwindow/window_hs.h>
#include <suntool/gfxsw.h>
#include <math.h>
#include <stdio.h>
#include <pixrect/gp1cmds.h>
#include <sys/signal.h>
#include <sys/ioctl.h>
#include <sun/gpio.h>

#if defined(mc68010) || defined(mc68020)
#define GP_PUT_FLOAT(sp, fp)       *((float *)sp)++ = *fp;
#define GP_PUT_INT(sp, ip)         *((int *)sp)++ = *ip;
#define GP_GET_FLOAT(sp, fp)       *fp = *((float *)sp)++;
#define GP_GET_INT(sp, ip)         *ip = *((int *)sp)++;
#else
#define GP_PUT_FLOAT(sp, fp)       *(sp)++ = *((short *)(fp)); \
				   *(sp)++ = *((short *)(fp)+1);
#define GP_PUT_INT(sp, ip)         *(sp)++ = *((short *)(ip)); \
                                   *(sp)++ = *((short *)(ip)+1);
#define GP_GET_FLOAT(sp, fp)       *((short *)fp) = *(sp)++; \
                                   *((short *)fp+1) = *(sp)++;
#define GP_GET_INT(sp, ip)         *((short *)ip) = *(sp)++; \
                                   *((short *)ip+1) = *(sp)++;
#endif

#define CMAPSIZE	64

static unsigned char rmap1[CMAPSIZE], gmap1[CMAPSIZE], bmap1[CMAPSIZE];
static unsigned char rmap2[CMAPSIZE], gmap2[CMAPSIZE], bmap2[CMAPSIZE];
static caddr_t gp1_shmem;
static struct pixrect;
static struct gfxsubwindow *gfx;
static char minordev;

int gp1_rop();
int sigxcpu_catcher();

struct gp1_attr
        {
        short attrchg;
        int attrcnt, clpcnt;
        int clipid;
        int org_x, org_y;
        int statblkindx;
        short fbindx;
        float xscale, xoffset, yscale, yoffset;
        short op, color, pixplanes;
	};
  
static struct gp1_attr gp1_attr;

struct point {					/* vertices */
	float x, y, z, w;
	};

struct poly {					/* polygons */
	short color;
	short nbnds;
	short *npts;
	struct point *vtx;
	};

struct face {					/* faces */
	short start, n;
	};
struct plane_eqn {
	float a,b,c,d;	/* see J.Blinn */
	};
struct bspnode {				/* bsptree */
	short bsp_face;	/* index to face */
	struct plane_eqn bsp_eqn;
	struct bspnode *bsp_front;
	struct bspnode *bsp_back;
	};

#include "flight_dat.h"

struct viewerpos {		/* position and velocity of viewer */
	float px,py,pz;
	float wx,wy,wz;
	float vx,vy,vz;
	} viewer = {0.0,0.0,400.0,  0.0,0.0,0.0,  0.0,0.0,0.0};

struct matrix_3d {
	float m[4][4];
	};
struct matrix_3d model, invmodel;
struct matrix_3d identity = {
	1.0, 0.0, 0.0, 0.0,
	0.0, 1.0, 0.0, 0.0,
	0.0, 0.0, 1.0, 0.0,
	0.0, 0.0, 0.0, 1.0
	};
struct matrix_3d viewmtx = {
	1.0, 0.0, 0.0, 0.0,
	0.0, -1.0, 0.0, 0.0,
	0.0, 0.0, -0.4, -0.4,
	0.0, 0.0, 158.0, 160.0
	};
struct matrix_3d roty[] = {		/* rotate about y axis */
	{ {0.999390827, 0.0, -0.034899496, 0.0},	/* -2 degrees */
	  {0.0, 1.0, 0.0, 0.0},
	  {0.034899496, 0.0, 0.999390827, 0.0},
	  {0.0, 0.0, 0.0, 1.0} },
	{ {0.999847695, 0.0, -0.017452406, 0.0},	/* -1 degrees */
	  {0.0, 1.0, 0.0, 0.0},
	  {0.017452406, 0.0, 0.999847695, 0.0},
	  {0.0, 0.0, 0.0, 1.0} },
	{ {0.999961923, 0.0, -0.008726535, 0.0},	/* -0.5 degrees */
	  {0.0, 1.0, 0.0, 0.0},
	  {0.008726535, 0.0, 0.999961923, 0.0},
	  {0.0, 0.0, 0.0, 1.0} },
	{ {0.999993907, 0.0, -0.003490651, 0.0},	/* -0.2 degrees */
	  {0.0, 1.0, 0.0, 0.0},
	  {0.003490651, 0.0, 0.999993907, 0.0},
	  {0.0, 0.0, 0.0, 1.0} },
	{ {0.0,},},				/*  0 degrees (unused) */
	{ {0.999993907, 0.0, 0.003490651, 0.0},		/* 0.2 degrees */
	  {0.0, 1.0, 0.0, 0.0},
	  {-0.003490651, 0.0, 0.999993907, 0.0},
	  {0.0, 0.0, 0.0, 1.0} },
	{ {0.999961923, 0.0, 0.008726535, 0.0},		/* 0.5 degrees */
	  {0.0, 1.0, 0.0, 0.0},
	  {-0.008726535, 0.0, 0.999961923, 0.0},
	  {0.0, 0.0, 0.0, 1.0} },
	{ {0.999847695, 0.0, 0.017452406, 0.0},		/* 1 degrees */
	  {0.0, 1.0, 0.0, 0.0},
	  {-0.017452406, 0.0, 0.999847695, 0.0},
	  {0.0, 0.0, 0.0, 1.0} },
	{ {0.999390827, 0.0, 0.034899496, 0.0},		/* 2 degrees */
	  {0.0, 1.0, 0.0, 0.0},
	  {-0.034899496, 0.0, 0.999390827, 0.0},
	  {0.0, 0.0, 0.0, 1.0} },
	};
struct matrix_3d rotz[] = {		/* rotate about z axis */
	{ {0.999390827, -0.034899496, 0.0, 0.0},	/* -2 degrees */
	  {0.034899496, 0.999390827, 0.0, 0.0},
	  {0.0, 0.0, 1.0, 0.0},
	  {0.0, 0.0, 0.0, 1.0} },
	{ {0.999847695, -0.017452406, 0.0, 0.0},	/* -1 degrees */
	  {0.017452406, 0.999847695, 0.0, 0.0},
	  {0.0, 0.0, 1.0, 0.0},
	  {0.0, 0.0, 0.0, 1.0} },
	{ {0.999961923, -0.008726535, 0.0, 0.0},	/* -0.5 degrees */
	  {0.008726535, 0.999961923, 0.0, 0.0},
	  {0.0, 0.0, 1.0, 0.0},
	  {0.0, 0.0, 0.0, 1.0} },
	{ {0.999993907, -0.003490651, 0.0, 0.0},	/* -0.2 degrees */
	  {0.003490651, 0.999993907, 0.0, 0.0},
	  {0.0, 0.0, 1.0, 0.0},
	  {0.0, 0.0, 0.0, 1.0} },
	{ {0.0,},},				/*  0 degrees (unused) */
	{ {0.999993907, 0.003490651, 0.0, 0.0},		/* 0.2 degrees */
	  {-0.003490651, 0.999993907, 0.0, 0.0},
	  {0.0, 0.0, 1.0, 0.0},
	  {0.0, 0.0, 0.0, 1.0} },
	{ {0.999961923, 0.008726535, 0.0, 0.0},		/* 0.5 degrees */
	  {-0.008726535, 0.999961923, 0.0, 0.0},
	  {0.0, 0.0, 1.0, 0.0},
	  {0.0, 0.0, 0.0, 1.0} },
	{ {0.999847695, 0.017452406, 0.0, 0.0},		/* 1 degrees */
	  {-0.017452406, 0.999847695, 0.0, 0.0},
	  {0.0, 0.0, 1.0, 0.0},
	  {0.0, 0.0, 0.0, 1.0} },
	{ {0.999390827, 0.034899496, 0.0, 0.0},		/* 2 degrees */
	  {-0.034899496, 0.999390827, 0.0, 0.0},
	  {0.0, 0.0, 1.0, 0.0},
	  {0.0, 0.0, 0.0, 1.0} }
	 };
struct matrix_3d rotx[] = {		/* rotate about x axis */
	{ {1.0, 0.0, 0.0, 0.0},				/* -2 degrees */
	  {0.0, 0.999390827, 0.034899496, 0.0},
	  {0.0, -0.034899496, 0.999390827, 0.0},
	  {0.0, 0.0, 0.0, 1.0} },
	{ {1.0, 0.0, 0.0, 0.0},				/* -1 degrees */
	  {0.0, 0.999847695, 0.017452406, 0.0},
	  {0.0, -0.017452406, 0.999847695, 0.0},
	  {0.0, 0.0, 0.0, 1.0} },
	{ {1.0, 0.0, 0.0, 0.0},				/* -0.5 degrees */
	  {0.0, 0.999961923, 0.008726535, 0.0},
	  {0.0, -0.008726535, 0.999961923, 0.0},
	  {0.0, 0.0, 0.0, 1.0} },
	{ {1.0, 0.0, 0.0, 0.0},				/* -0.2 degrees */
	  {0.0, 0.999993907, 0.003490651, 0.0},
	  {0.0, -0.003490651, 0.999993907, 0.0},
	  {0.0, 0.0, 0.0, 1.0} },
	{ {0.0,},},				/*  0 degrees (unused) */
	{ {1.0, 0.0, 0.0, 0.0},				/* 0.2 degrees */
	  {0.0, 0.999993907, -0.003490651, 0.0},
	  {0.0, 0.003490651, 0.999993907, 0.0},
	  {0.0, 0.0, 0.0, 1.0} },
	{ {1.0, 0.0, 0.0, 0.0},				/* 0.5 degrees */
	  {0.0, 0.999961923, -0.008726535, 0.0},
	  {0.0, 0.008726535, 0.999961923, 0.0},
	  {0.0, 0.0, 0.0, 1.0} },
	{ {1.0, 0.0, 0.0, 0.0},				/* 1 degrees */
	  {0.0, 0.999847695, -0.017452406, 0.0},
	  {0.0, 0.017452406, 0.999847695, 0.0},
	  {0.0, 0.0, 0.0, 1.0} },
	{ {1.0, 0.0, 0.0, 0.0},				/* 2 degrees */
	  {0.0, 0.999390827, -0.034899496, 0.0},
	  {0.0, 0.034899496, 0.999390827, 0.0},
	  {0.0, 0.0, 0.0, 1.0} }
	};

struct rect viewrect;
mpr_static( cursorpr, 0,0,1, 0);
struct cursor cursor = {0,0,0,&cursorpr};

main()
{
	int cplns = 0x3e;	/* clip planes bits 0..5 = FNTBRL */
	int planesmask, pmask;
	struct matrix_3d matrix;
	struct inputmask mask;

	if (!getenv("WINDOW_ME")) {
		printf("this demo only runs in gp windows\n");
		exit(1);;
	}
	makemaps();
	gfx = gfxsw_init(0,0);
	if(gfx->gfx_pixwin->pw_pixrect->pr_ops->pro_rop != gp1_rop) {
		printf("this demo only runs in gp windows\n");
		exit(1);
	}
	pw_setcmsname(gfx->gfx_pixwin, "\0");
	ioctl( gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd,
	    GP1IO_GET_TRUMINORDEV, &minordev);
	signal(SIGXCPU, SIG_IGN); /* do nothing in this case */
	gp1_attr.statblkindx =
	    gp1_stblk_alloc(gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd);
	gp1_shmem = gp1_d(gfx->gfx_pixwin->pw_clipdata->pwcd_prmulti)->gp_shmem;
	pw_putcolormap(gfx->gfx_pixwin, 0, CMAPSIZE, rmap1, gmap1, bmap1);
	while((gp1_d(gfx->gfx_pixwin->pw_pixrect)->cgpr_va)->status.word &
	    0x80);
	while(!((gp1_d(gfx->gfx_pixwin->pw_pixrect)->cgpr_va)->status.word &
	    0x80));
	pw_writebackground(gfx->gfx_pixwin, 0, 0, 
		gfx->gfx_pixwin->pw_clipdata->pwcd_prmulti->pr_size.x,
		gfx->gfx_pixwin->pw_clipdata->pwcd_prmulti->pr_size.y,
		PIX_SRC);
	model = identity; model.m[3][2] = -viewer.pz;
	model.m[3][1] = -80;
	invmodel = identity; invmodel.m[3][2] = viewer.pz;
	invmodel.m[3][1] = 80;

	input_imnull( &mask);			/* initialize input */
	win_setinputcodebit( &mask, MS_LEFT);
	win_setinputcodebit( &mask, MS_MIDDLE);
	win_setinputcodebit( &mask, MS_RIGHT);
	win_setinputcodebit( &mask, LOC_MOVE);
	win_setinputcodebit( &mask, LOC_MOVEWHILEBUTDOWN);
	win_setinputmask( gfx->gfx_windowfd, &mask, (struct inputmask *)NULL,
	    WIN_NULLLINK);
	if ( fcntl( gfx->gfx_windowfd, F_SETFL, FNDELAY) == -1)
		printf("Failed to set non-blocking I/O\n");
	win_setcursor( gfx->gfx_windowfd, &cursor);

Restart:
	gp1_stblk_init();
	planesmask = 0x3F;
	pw_putattributes(gfx->gfx_pixwin, &planesmask);
	win_getrect( gfx->gfx_windowfd, &viewrect);

	while (1) {
		pmask = flipplanes();
		pw_putattributes(gfx->gfx_pixwin, &pmask);
		pw_writebackground(gfx->gfx_pixwin, 0, 0, 
		    gfx->gfx_pixwin->pw_clipdata->pwcd_prmulti->pr_size.x,
		    gfx->gfx_pixwin->pw_clipdata->pwcd_prmulti->pr_size.y,
		    PIX_SRC);
		sample_controls( &matrix);
		gp1_pw_lock(gfx->gfx_pixwin, &gfx->gfx_rect);
		load_matrix( matrix.m);
		bsp_traverse( &viewer, bsptree, cplns, pmask);
		if(gp1_pw_unlock(gfx->gfx_pixwin))
			goto Restart;
		}
	}

sample_controls( mat)
	struct matrix_3d *mat;
{
	struct inputevent ie;
	static short dx, dy, lastx, lasty, roll = 0;
	struct matrix_3d m1, m2;

	/* sample the mouse movements */
	dx = dy = 0;
	while (input_readevent( gfx->gfx_windowfd, &ie) != -1) {
	    switch (ie.ie_code) {
	    	case MS_LEFT:
			viewer.vz += 1;
			break;
	        case MS_MIDDLE:
			model = identity; model.m[3][2] = -viewer.pz;
			model.m[3][1] = -80;
			invmodel = identity; invmodel.m[3][2] = viewer.pz;
			invmodel.m[3][1] = 80;
			viewer.vz = 0;
			break;
	        case MS_RIGHT:
			viewer.vz -= 1;
			break;
	        case LOC_MOVE:
			dx += ie.ie_locx - lastx; dy += ie.ie_locy - lasty;
			roll = 0;
			break;
	        case LOC_MOVEWHILEBUTDOWN:
			dx += ie.ie_locx - lastx; dy += ie.ie_locy - lasty;
			roll = 1;
			break;
		default:;
	    }
	    lastx = ie.ie_locx; lasty = ie.ie_locy;
	}
	dx = dx/2; dy = dy/2;
	dx = (dx>4)?4:((dx<-4)?-4:dx);
	dy = (dy>4)?4:((dy<-4)?-4:dy);

	/*
	 * rotate about x axis for pitch, rotate about z axis for roll
	 */
	if (dx != 0) {
		gp1_matmul_3d( gfx->gfx_pixwin, model.m, rotz[4+dx].m,
			model.m);
		gp1_matmul_3d( gfx->gfx_pixwin, rotz[4-dx].m, invmodel.m,
			invmodel.m);
		if (!roll) {
		    gp1_matmul_3d( gfx->gfx_pixwin, model.m, roty[4-dx].m,
			    model.m);
		    gp1_matmul_3d( gfx->gfx_pixwin, roty[4+dx].m, invmodel.m,
			    invmodel.m);
		}
	}
	if (dy != 0) {
		gp1_matmul_3d( gfx->gfx_pixwin, model.m, rotx[4+dy].m,
			model.m);
		gp1_matmul_3d( gfx->gfx_pixwin, rotx[4-dy].m, invmodel.m,
			invmodel.m);
	}
	/*
	 * translate by our velocity
	 */
	m1 = identity; m1.m[3][2] = -viewer.vz;
	gp1_matmul_3d( gfx->gfx_pixwin, model.m, m1.m, model.m);
	m1.m[3][2] = viewer.vz;
	gp1_matmul_3d( gfx->gfx_pixwin, m1.m, invmodel.m, invmodel.m);
	/*
	 * translate center of projection back out, and add perspective
	 */
	m1.m[3][2] = viewer.pz;
	gp1_matmul_3d( gfx->gfx_pixwin, model.m, m1.m, m2.m);
	gp1_matmul_3d( gfx->gfx_pixwin, m2.m, viewmtx.m, mat->m);

	m1.m[3][2] = -m1.m[3][2];
	gp1_matmul_3d( gfx->gfx_pixwin, m1.m, invmodel.m, m2.m);
	viewer.wx = 400.0 * m2.m[2][0] + m2.m[3][0];
	viewer.wy = 400.0 * m2.m[2][1] + m2.m[3][1];
	viewer.wz = 400.0 * m2.m[2][2] + m2.m[3][2];
}

bsp_traverse( vwp, bsp, cplns, pmask)
	struct viewerpos *vwp;
	struct bspnode *bsp;
	int cplns, pmask;
{
	float dist;

	if ( bsp == 0) return;

	dist = bsp->bsp_eqn.a * vwp->wx + bsp->bsp_eqn.b * vwp->wy +
	       bsp->bsp_eqn.c * vwp->wz + bsp->bsp_eqn.d;
	if ( dist < 0.0) {		/* if viewer is in back of face */
		bsp_traverse( vwp, bsp->bsp_front, cplns, pmask);
		bsp_traverse( vwp, bsp->bsp_back, cplns, pmask);
	} else {			/* if viewer is in front of face */
		bsp_traverse( vwp, bsp->bsp_back, cplns, pmask);
		paint_face( bsp->bsp_face, cplns, pmask);
		bsp_traverse( vwp, bsp->bsp_front, cplns, pmask);
	}
}

paint_face( face, cplns, pmask)
	int face, cplns, pmask;
{
	struct poly *poly;
	short i;

	poly = &polylist[faces[face].start];
	for(i=0; i<faces[face].n; i++) {	/* paint each polygon */
	    gp1polys(poly, 1, cplns, pmask);
	    switch (face) {	/* cludge to avoid vectors on split polys */
	    			/* we should separate face polys, face vecs */
	    case 14: gp1vecs( &b5pwfix, 1, cplns, pmask); break;
	    case 19: gp1vecs( &b1pwfix, 1, cplns, pmask); break;
	    case 22: gp1vecs( &b5npwfix, 1, cplns, pmask); break;
	    case 26: gp1vecs( &b1spwfix, 1, cplns, pmask); break;
	    default: gp1vecs( poly, 1, cplns, pmask); break;
	    }
	    poly++;
	}
}

/*			    wood,grass, pond, sail,park,wall, roof */
unsigned char red[] = { 50, 100,  80,   50,   255, 180,  200, 200};
unsigned char grn[] = { 50, 100,  200,  150,  255, 180,  200, 100};
unsigned char blu[] = { 200, 20,  0,    255,  255, 180,   50, 50};

makemaps() /* make the colormaps */
{
	int i;

	for (i=0; i<CMAPSIZE; i++) {
		rmap1[i] = red[i & 7];
		gmap1[i] = grn[i & 7];
		bmap1[i] = blu[i & 7];
	}
	for (i=0; i<CMAPSIZE; i++) {
		rmap2[i] = red[i / 8];
		gmap2[i] = grn[i / 8];
		bmap2[i] = blu[i / 8];
	}
}

load_matrix( matptr)
	float *matptr;
{
	unsigned int bitvec;
	register int offset;
	register short *shmptr;

	while ((offset = gp1_alloc(gp1_shmem, 1, &bitvec, minordev,
	    gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd)) == 0)
		;
	shmptr = &((short *) gp1_shmem)[offset];
	*shmptr++ = GP1_USEFRAME | (gp1_attr.statblkindx & 0x7);
	*shmptr++ = GP1_SETFBINDX | 0;
	*shmptr++ = GP1_SELECTMATRIX | 0;
	*shmptr++ = GP1_SET_MATRIX_3D | 0;
	GP_PUT_FLOAT(shmptr, matptr); matptr++;
	GP_PUT_FLOAT(shmptr, matptr); matptr++;
	GP_PUT_FLOAT(shmptr, matptr); matptr++;
	GP_PUT_FLOAT(shmptr, matptr); matptr++;

	GP_PUT_FLOAT(shmptr, matptr); matptr++;
	GP_PUT_FLOAT(shmptr, matptr); matptr++;
	GP_PUT_FLOAT(shmptr, matptr); matptr++;
	GP_PUT_FLOAT(shmptr, matptr); matptr++;

	GP_PUT_FLOAT(shmptr, matptr); matptr++;
	GP_PUT_FLOAT(shmptr, matptr); matptr++;
	GP_PUT_FLOAT(shmptr, matptr); matptr++;
	GP_PUT_FLOAT(shmptr, matptr); matptr++;

	GP_PUT_FLOAT(shmptr, matptr); matptr++;
	GP_PUT_FLOAT(shmptr, matptr); matptr++;
	GP_PUT_FLOAT(shmptr, matptr); matptr++;
	GP_PUT_FLOAT(shmptr, matptr); matptr++;

	*shmptr++ = GP1_EOCL | GP1_FREEBLKS;
	GP_PUT_INT(shmptr, &bitvec);
	gp1_post( gp1_shmem, offset,
	    gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd);
}

gp1polys( plist, n, cplns, mask)
register struct poly plist[];
register int n;
int cplns, mask;
	{
	register struct point *vtx;
	int i,m,nbnds, totpts;
	unsigned int bitvec;
	register int offset, roomleft, nwords;
	register short *shmptr, *npts;

	while ((offset = gp1_alloc(gp1_shmem, 1, &bitvec, minordev,
	    gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd)) == 0)
		;
	shmptr = &((short *) gp1_shmem)[offset];
	*shmptr++ = GP1_USEFRAME | (gp1_attr.statblkindx & 0x7);
	*shmptr++ = GP1_SETFBINDX | 0;
	*shmptr++ = GP1_SETROP;
	*shmptr++ = PIX_SRC;
	*shmptr++ = GP1_SETPIXPLANES | mask;
	*shmptr++ = GP1_SETCLIPPLANES | (cplns & 0x3F);
	*shmptr++ = GP1_EOCL;
	gp1_post( gp1_shmem, offset,
	    gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd);
	offset += 7;
	roomleft = 512-10; /* 7 above, 3 for EOCL & bitvec before final post */
	for(i=0; i<n; i++) {		/* paint each polygon */
		nbnds = plist[i].nbnds;		/* number of boundaries */
		totpts = 0;
		for (m=0; m<nbnds; m++)
			totpts += plist[i].npts[m];
		if ((nwords = totpts*6 + nbnds + 5) > 509)
			{
			fprintf(stderr, "gp1polys: polygon too big!\n");
			continue;
			}
		if (nwords > roomleft)
			{
			*shmptr++ = GP1_EOCL | GP1_FREEBLKS;
			GP_PUT_INT(shmptr, &bitvec);
			gp1_post(gp1_shmem, offset,
			    gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd);
			while ((offset = gp1_alloc(gp1_shmem, 1, &bitvec,
			    minordev,
			    gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd)) == 0)
				;
			shmptr = &((short *) gp1_shmem)[offset];
			roomleft = 509;
			}
		roomleft -= nwords;
		vtx = plist[i].vtx;
		npts = plist[i].npts;
		*shmptr++ = GP1_USEFRAME | gp1_attr.statblkindx;
		*shmptr++ = GP1_SETCOLOR | plist[i].color;
		*shmptr++ = GP1_XFPOLYGON_3D | GP1_SHADE_CONSTANT;
		*shmptr++ = nbnds;
		while (nbnds--) *shmptr++ = *npts++;
		while (totpts--) {
			GP_PUT_FLOAT(shmptr, &vtx->x);
			GP_PUT_FLOAT(shmptr, &vtx->y);
			GP_PUT_FLOAT(shmptr, &vtx->z);
			vtx++;
			}
		*shmptr++ = GP1_EOCL;
		gp1_post(gp1_shmem, offset,
		    gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd);
		offset += nwords;
		}
	*shmptr++ = GP1_EOCL | GP1_FREEBLKS;
	GP_PUT_INT(shmptr, &bitvec);
	gp1_post(gp1_shmem, offset,
		    gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd);
	}

gp1vecs( plist, n, cplns, mask)
register struct poly plist[];
register int n;
int cplns, mask;
	{
	register struct point *vtx, *startvtx;
	int i, m, nbnds;
	unsigned int bitvec;
	register int offset, nvecs, nvecsleft;
	register short *shmptr, *savptr, *npts;

	while ((offset = gp1_alloc(gp1_shmem, 1, &bitvec, minordev,
	    gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd)) == 0)
		;
	shmptr = &((short *) gp1_shmem)[offset];
	*shmptr++ = GP1_USEFRAME | gp1_attr.statblkindx;
	*shmptr++ = GP1_SETCOLOR | TOPCOL;
	*shmptr++ = GP1_SETFBINDX | 0;
	*shmptr++ = GP1_SETROP;
	*shmptr++ = PIX_SRC;
	*shmptr++ = GP1_SETPIXPLANES | mask;
	*shmptr++ = GP1_SETCLIPPLANES | (cplns & 0x3F);
	savptr = shmptr;
	shmptr += 2;
	nvecs = 0;
	nvecsleft = (512 - 12) / 12;
	for(i=0; i<n; i++) {		/* paint edges of each polygon */
		nbnds = plist[i].nbnds;
		vtx = plist[i].vtx;
		npts = plist[i].npts;
		while (nbnds--) {
		    startvtx = vtx;
		    if ((m = *npts++) > 42)	/* (512 - 6) / 12 */
			{
			fprintf(stderr, "gp1vecs: boundary too big!\n");
			m = 42;
			}
		    if (nvecsleft < m)
			{
			if (nvecs > 0)
				{
				*savptr++ = GP1_XFVEC_3D;
				*savptr = nvecs;
				}
			*shmptr++ = GP1_EOCL | GP1_FREEBLKS;
			GP_PUT_INT(shmptr, &bitvec);
			gp1_post(gp1_shmem, offset,
			    gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd);
			while ((offset = gp1_alloc(gp1_shmem, 1, &bitvec,
			    minordev,
	    		    gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd)) == 0)
				;
			shmptr = &((short *) gp1_shmem)[offset];
			*shmptr++ = GP1_USEFRAME | gp1_attr.statblkindx;
			savptr = shmptr;
			shmptr += 2;
			nvecs = 0;
			nvecsleft = 42;		/* (512 - 6) / 12 */
			}
		    nvecs += m;
		    nvecsleft -= m;
		    while (--m) {
			    GP_PUT_FLOAT(shmptr, &vtx->x);
			    GP_PUT_FLOAT(shmptr, &vtx->y);
			    GP_PUT_FLOAT(shmptr, &vtx->z);
			    vtx++;
			    GP_PUT_FLOAT(shmptr, &vtx->x);
			    GP_PUT_FLOAT(shmptr, &vtx->y);
			    GP_PUT_FLOAT(shmptr, &vtx->z);
			    }
		    GP_PUT_FLOAT(shmptr, &vtx->x);
		    GP_PUT_FLOAT(shmptr, &vtx->y);
		    GP_PUT_FLOAT(shmptr, &vtx->z);
		    vtx++;
		    GP_PUT_FLOAT(shmptr, &startvtx->x);
		    GP_PUT_FLOAT(shmptr, &startvtx->y);
		    GP_PUT_FLOAT(shmptr, &startvtx->z);
		    }
		}
	*savptr++ = GP1_XFVEC_3D;
	*savptr = nvecs;
	*shmptr++ = GP1_EOCL | GP1_FREEBLKS;
	GP_PUT_INT(shmptr, &bitvec);
	gp1_post(gp1_shmem, offset,
		    gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd);
	}

flipplanes() {
	static int flip = 0;
	int plane1 = 0x7;
	int plane2 = 0x38;

	flip = 1 - flip;
	if (flip) {
		pw_putcolormap(gfx->gfx_pixwin,0,CMAPSIZE,rmap2,gmap2,bmap2);
		while((gp1_d(gfx->gfx_pixwin->pw_pixrect)->cgpr_va)->
		    status.word & 0x80);
		while(!((gp1_d(gfx->gfx_pixwin->pw_pixrect)->cgpr_va)->
		    status.word & 0x80));
		return(plane1);
	}
	else {
		pw_putcolormap(gfx->gfx_pixwin,0,CMAPSIZE,rmap1,gmap1,bmap1);
		while((gp1_d(gfx->gfx_pixwin->pw_pixrect)->cgpr_va)->
		    status.word & 0x80);
		while(!((gp1_d(gfx->gfx_pixwin->pw_pixrect)->cgpr_va)->
		    status.word & 0x80));
		return(plane2);
	}
}

gp1_pw_lock(pw, r)
struct pixwin *pw;
struct rect *r;
{
	pw_lock(pw, r);
	if (pw->pw_clipdata->pwcd_clipid == gp1_attr.clipid)
		return(0);
	return(gp1_pw_updclplst(pw));
}

gp1_pw_unlock(pw)
struct pixwin *pw;
{
	int retcode;

	retcode = 0;
	pw_unlock(pw);
	if (gfx->gfx_flags & GFX_DAMAGED) {
		gfxsw_handlesigwinch(gfx);
		retcode = 1;
		}
	if (gfx->gfx_flags & GFX_RESTART) {
		gfx->gfx_flags &= ~GFX_RESTART;
		retcode = 1;
		}
	return (retcode);
}
		
gp1_pw_updclplst(pw)
struct pixwin *pw;
{
	unsigned int bitvec;
	short offset, *gp1_addr;
	register short *bufptr, *nptr;
	struct gp1pr *dmd;
	int retcode, x, y, nrect;
	float scalevalue, fltval;
	struct pixwin_prlist *prl;

	gp1_attr.clipid = pw->pw_clipdata->pwcd_clipid;
	retcode = 0;
	dmd = gp1_d(pw->pw_pixrect);
	gp1_addr = (short *)dmd->gp_shmem;
	while ((offset = gp1_alloc(gp1_addr, 1, &bitvec, minordev,
	    gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd)) == 0);
	bufptr = &gp1_addr[offset];

	dmd = gp1_d(pw->pw_clipdata->pwcd_prmulti);
	scalevalue = pw->pw_clipdata->pwcd_prmulti->pr_size.x/2.0;
	if (scalevalue < pw->pw_clipdata->pwcd_prmulti->pr_size.y/2.0 )
	    scalevalue = pw->pw_clipdata->pwcd_prmulti->pr_size.y/2.0;
	*bufptr++ = GP1_USEFRAME | (gp1_attr.statblkindx & 0x7);
	*bufptr++ = GP1_SETVWP_3D;
	GP_PUT_FLOAT(bufptr, &scalevalue);
	fltval = dmd->cgpr_offset.x+pw->pw_clipdata->pwcd_prmulti->pr_size.x/2;
	GP_PUT_FLOAT(bufptr, &fltval);
	GP_PUT_FLOAT(bufptr, &scalevalue);
	fltval = dmd->cgpr_offset.y+pw->pw_clipdata->pwcd_prmulti->pr_size.y/2;
	GP_PUT_FLOAT(bufptr, &fltval);
	fltval = 0;
	GP_PUT_FLOAT(bufptr, &fltval);
	GP_PUT_FLOAT(bufptr, &fltval);

	*bufptr++ = GP1_SETCLPLST;
	nptr = bufptr++;

	if (pw->pw_clipdata->pwcd_state == PWCD_NULL)
		{
		*nptr = 1;
		*bufptr++ = 0;
		*bufptr++ = 0;
		*bufptr++ = 0;
		*bufptr++ = 0;
		}
	else {
		nrect = 0;
		dmd = gp1_d(pw->pw_clipdata->pwcd_prmulti);
		x = dmd->cgpr_offset.x;
		y = dmd->cgpr_offset.y;
		if (x != gp1_attr.org_x | y != gp1_attr.org_x)
			{
			gp1_attr.org_x = x;
			gp1_attr.org_y = y;
			retcode = 1;
			}
		for (prl = pw->pw_clipdata->pwcd_prl; prl; prl = prl->prl_next)
			{
			dmd = gp1_d(prl->prl_pixrect);
			*bufptr++ = dmd->cgpr_offset.x;
			*bufptr++ = dmd->cgpr_offset.y;
			*bufptr++ = prl->prl_pixrect->pr_size.x;
			*bufptr++ = prl->prl_pixrect->pr_size.y;
			if (++nrect == 60)
				break;
			}
			*nptr = nrect;
		}
	*bufptr++ = GP1_EOCL | GP1_FREEBLKS;
	GP_PUT_INT(bufptr, &bitvec);
	gp1_post(gp1_addr, offset, gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd);
	return(retcode);
}
sigxcpu_catcher() {
	/* do nothing ... continue to run */
}

int gp1_stblk_alloc(fd)
int fd;
        {
        int i;
 
        if( ioctl(fd, GP1IO_GET_STATIC_BLOCK, &i) )
                return (-1);
        else
                return(i);
        }
 
gp1_matmul_3d( pw, m1, m2, m3)
struct pixwin *pw;
float *m1, *m2, *m3;
	{
	register short *gp1_addr, *shmptr, *result;
	register float *mptr;
	unsigned int bitvec;
	register int offset, i;
	struct gp1pr *dmd;

	dmd = gp1_d(pw->pw_pixrect);
	gp1_addr = (short *)dmd->gp_shmem;
	while ((offset = gp1_alloc(gp1_addr, 1, &bitvec,
		dmd->minordev, dmd->ioctl_fd)) == 0)
		;
	shmptr = &(gp1_addr)[offset];
	*shmptr++ = GP1_USEFRAME | gp1_attr.statblkindx;
	*shmptr++ = GP1_SET_MATRIX_3D | 4;	/* matrix #4 is m1 */
	i = 4;
	mptr = m1;
	while (i--) {
		GP_PUT_FLOAT(shmptr, mptr); mptr++;
		GP_PUT_FLOAT(shmptr, mptr); mptr++;
		GP_PUT_FLOAT(shmptr, mptr); mptr++;
		GP_PUT_FLOAT(shmptr, mptr); mptr++;
	}
	*shmptr++ = GP1_SET_MATRIX_3D | 5;	/* matrix #5 is m2 */
	i = 4;
	mptr = m2;
	while (i--) {
		GP_PUT_FLOAT(shmptr, mptr); mptr++;
		GP_PUT_FLOAT(shmptr, mptr); mptr++;
		GP_PUT_FLOAT(shmptr, mptr); mptr++;
		GP_PUT_FLOAT(shmptr, mptr); mptr++;
	}
	*shmptr++ = GP1_MATMUL_3D;		/* matrix #3 = m1 * m2 */
	*shmptr++ = 4;
	*shmptr++ = 5;
	*shmptr++ = 3;
	*shmptr++ = GP1_GETMATRIX_3D | 3;	/* matrix #3 is result */
	result = shmptr;
	*shmptr++ = 1;				/* get matrix not done */
	shmptr += 32;				/* result goes here */
	*shmptr++ = GP1_EOCL;
	gp1_post(gp1_addr, offset, dmd->ioctl_fd);
						/* wait til matmul done */
	gp1_chkloc(result, dmd->ioctl_fd);
	result++;
	i = 4;
	mptr = m3;
	while (i--) {
		GP_GET_FLOAT(result, mptr); mptr++;
		GP_GET_FLOAT(result, mptr); mptr++;
		GP_GET_FLOAT(result, mptr); mptr++;
		GP_GET_FLOAT(result, mptr); mptr++;
	}
	shmptr = &(gp1_addr)[offset];
	*shmptr++ = GP1_EOCL | GP1_FREEBLKS;
	GP_PUT_INT(shmptr, &bitvec);
	gp1_post(gp1_addr, offset, dmd->ioctl_fd);
	return(0);
}

gp1_chkloc(addr, fd)
short *addr;
int fd;   
{
	int i;

	for (i=0; i<20000; i++) {
		if (!*addr) {
			return(0);
			}
		}
	gp1_kern_gp_restart(fd, 0);
	return(-1);
} 

gp1_stblk_init()
{
	register short *shmptr;
	unsigned int bitvec;
	register int offset;

	while ((offset = gp1_alloc(gp1_shmem, 1, &bitvec, minordev,
	    gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd)) == 0)
		;
	shmptr = &((short *) gp1_shmem)[offset];
	*shmptr++ = GP1_USEFRAME | (gp1_attr.statblkindx & 0x7);
	*shmptr++ = GP1_SETFBINDX |
	    gp1_d(gfx->gfx_pixwin->pw_pixrect)->cg2_index;
	*shmptr++ = GP1_SETPIXPLANES | 0;
	*shmptr++ = GP1_SETROP;
	*shmptr++ = PIX_SRC;
	*shmptr++ = GP1_SETCOLOR | 0;
	*shmptr++ = GP1_SETCLIPPLANES | 0;
	*shmptr++ = GP1_SELECTMATRIX | 0;
	*shmptr++ = GP1_SETHIDDENSURF | GP1_NOHIDDENSURF;
	*shmptr++ = GP1_EOCL | GP1_FREEBLKS;
	GP_PUT_INT(shmptr, &bitvec);
	gp1_post( gp1_shmem, offset,
	    gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd);
}
tr++ = GP1_SETFBINDX | 0;
	*shmptr++ = GP1_SETROP;
	*shmptr++ = PIX_SRC;
	*shmptr++ = GP1_SETPIXPLANES | mask;
	*shmptr++ = GP1_SETCLIPPLANES | (cplns & 0x3F);
	*shmptr++ = GP1_EOCL;
	gp1_post( gp1_shmem, offset,
	    gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd);
	offset += 7;
	roomleft = 512-10; /* 7 above, 3 for EOCL & bitvec before final post */
	for(i=./demo/GP1/rotobj.c                                                                                    444       0      12        32153  4424743420   7170                                                                                                                                                                                                                                                                                                                                                                      #ifndef lint
static	char sccsid[] = "@(#)rotobj.c 1.4 88/11/04 Copyr 1987 Sun Micro";
#endif

/*
 * Copyright (c) 1987 by Sun Microsystems, Inc.
 */

#include <pixrect/pixrect_hs.h>
#include <pixrect/memreg.h>
#include <pixrect/cg2reg.h>
#include <sunwindow/window_hs.h>
#include <suntool/gfxsw.h>
#include <math.h>
#include <stdio.h>
#include <pixrect/gp1cmds.h>
#include <sys/file.h>
#include <sys/signal.h>
#include <sys/ioctl.h>
#include <sun/gpio.h>

#if defined(mc68010) || defined(mc68020)
#define GP_PUT_FLOAT(sp, fp)       *((float *)sp)++ = *fp;
#define GP_PUT_INT(sp, ip)         *((int *)sp)++ = *ip;
#define GP_GET_FLOAT(sp, fp)       *fp = *((float *)sp)++;
#define GP_GET_INT(sp, ip)         *ip = *((int *)sp)++;
#else
#define GP_PUT_FLOAT(sp, fp)       *(sp)++ = *((short *)(fp)); \
                                   *(sp)++ = *((short *)(fp)+1);
#define GP_PUT_INT(sp, ip)         *(sp)++ = *((short *)(ip)); \
                                   *(sp)++ = *((short *)(ip)+1);
#define GP_GET_FLOAT(sp, fp)       *((short *)fp) = *(sp)++; \
                                   *((short *)fp+1) = *(sp)++;
#define GP_GET_INT(sp, ip)         *((short *)ip) = *(sp)++; \
                                   *((short *)ip+1) = *(sp)++;
#endif

static unsigned char rmap1[2], gmap1[2], bmap1[2];
static unsigned char rmap2[2], gmap2[2], bmap2[2];
static caddr_t gp1_shmem;
static struct pixrect;
static struct gfxsubwindow *gfx;
static int nvecs;
static char minordev;

int gp1_rop();
int sigxcpu_catcher();

struct gp1_attr
        {
        short attrchg;
        int attrcnt, clpcnt;
        int clipid;
        int org_x, org_y;
        int statblkindx;
        short fbindx;
        float xscale, xoffset, yscale, yoffset;
        short op, color, pixplanes;
	};
  
static struct gp1_attr gp1_attr;

struct point 
	{
	float x;
	float y;
	float z;
	float w;
	};

static struct point veclist[8400];

typedef float matrix_3d[4][4];
matrix_3d mtxidentity = {
        1.0,            0.0,            0.0,            0.0,
        0.0,            1.0,            0.0,            0.0,
        0.0,            0.0,            1.0,            0.0,
        0.0,            0.0,            0.0,            1.0};
matrix_3d mtxperspective = {
        1.0,            0.0,            0.0,            0.0,
        0.0,            1.0,            0.0,            0.0,
        0.0,            0.0,            -0.416,        -0.4,
        0.0,            0.0,            156.0,          160.0};
matrix_3d mtxx, mtxy, mtxz;

main(argc,argv)
int argc;
char **argv;

	{
	int j;
	int cplns = 0x3f;
	char *filename;
	int planesmask;
	int pathlength;

	if (argc == 1)  
		{
		fprintf(stderr, "format: rotobj datafile\n");
		exit(1);
		}
	filename = argv[1];
	if (!getenv("WINDOW_ME")) {
		printf("this demo only runs in gp windows\n");
		exit(1);;
	}
	makemaps();
	gfx = gfxsw_init(0,0);
	if(gfx->gfx_pixwin->pw_pixrect->pr_ops->pro_rop != gp1_rop) {
		printf("this demo only runs in gp windows\n");
		exit(1);
	}
	pw_setcmsname(gfx->gfx_pixwin, "\0");
	ioctl( gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd,GP1IO_GET_TRUMINORDEV, &minordev);
	signal(SIGXCPU, SIG_IGN); /* do nothing in this case */
	gp1_attr.statblkindx = gp1_stblk_alloc(gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd);
	gp1_shmem = gp1_d(gfx->gfx_pixwin->pw_clipdata->pwcd_prmulti)->gp_shmem;
	nvecs = readvecs(filename);
	pw_putcolormap(gfx->gfx_pixwin, 0, 4, rmap1, gmap1, bmap1);
	while((gp1_d(gfx->gfx_pixwin->pw_pixrect)->cgpr_va)->status.word & 0x80)
		;
	while(!((gp1_d(gfx->gfx_pixwin->pw_pixrect)->cgpr_va)->status.word & 0x80))
		;
	pw_writebackground(gfx->gfx_pixwin, 0, 0, 
		gfx->gfx_pixwin->pw_clipdata->pwcd_prmulti->pr_size.x,
		gfx->gfx_pixwin->pw_clipdata->pwcd_prmulti->pr_size.y,
		PIX_SRC);

	initialize_matrices();
Restart:
	planesmask = 0x03;
	pw_putattributes(gfx->gfx_pixwin, &planesmask);

	set_matrix(mtxperspective, 1);
	set_matrix(mtxidentity, 2);
	while (1) {

	    randomize_path();
	    set_matrix(mtxx, 3);
	    set_matrix(mtxy, 4);
	    set_matrix(mtxz, 5);
	    set_rot_matrix();
	    pathlength = 30 + (random()>>10)%40;
	    for (j = 0; j < pathlength; j++) {
		gp1vecs(mtxy, veclist, nvecs, 3, cplns);
	        if(gp1_pw_unlock(gfx->gfx_pixwin))
			goto Restart;
		}
	    }
	}

makemaps() /* make the colormaps */
{
	rmap1[0] = 255;
	gmap1[0] = 255;
	bmap1[0] = 255;
	rmap1[1] = 0;
	gmap1[1] = 0;
	bmap1[1] = 255;
	rmap1[2] = 255;
	gmap1[2] = 255;
	bmap1[2] = 255;
	rmap1[3] = 0;
	gmap1[3] = 0;
	bmap1[3] = 255;

	rmap2[0] = 255;
	gmap2[0] = 255;
	bmap2[0] = 255;
	rmap2[1] = 255;
	gmap2[1] = 255;
	bmap2[1] = 255;
	rmap2[2] = 0;
	gmap2[2] = 0;
	bmap2[2] = 255;
	rmap2[3] = 0;
	gmap2[3] = 0;
	bmap2[3] = 255;
}

readvecs(filename)
char *filename;
	{
	int i, fd;

	if ( (fd = open(filename, O_RDONLY, 0)) == -1) {
		fprintf(stderr, "cannot open data file.\n");
		exit(1);
	}

	i = read(fd, veclist, 16*8400);
	return(i/32);
	}

gp1vecs(matptr, veclist, n, color, cplns)
register matrix_3d *matptr;
register struct point *veclist;
register int n;
int color, cplns;
	{
	register int m;
	unsigned int bitvec;
	register int offset, roomleft;
	register short *shmptr;
	int planesmask;
	float *vecptr;

	planesmask = flipplanes();
	pw_putattributes(gfx->gfx_pixwin, &planesmask);
        gp1_pw_lock(gfx->gfx_pixwin, &gfx->gfx_rect);
	pw_writebackground(gfx->gfx_pixwin, 0, 0, 
		gfx->gfx_pixwin->pw_clipdata->pwcd_prmulti->pr_size.x,
		gfx->gfx_pixwin->pw_clipdata->pwcd_prmulti->pr_size.y,
		PIX_SRC);
	while ((offset = gp1_alloc(gp1_shmem, 1, &bitvec, minordev, gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd)) == 0)
		;
	shmptr = &((short *) gp1_shmem)[offset];
	*shmptr++ = GP1_USEFRAME | (gp1_attr.statblkindx & 0x7);
	*shmptr++ = GP1_SETCOLOR | color;
	*shmptr++ = GP1_SETFBINDX | 0;
	*shmptr++ = GP1_SETROP;
	*shmptr++ = PIX_SRC;
	*shmptr++ = GP1_SETPIXPLANES | planesmask;
	*shmptr++ = GP1_SETCLIPPLANES | (cplns & 0x3F);
	*shmptr++ = (8 << 8) | 0;
	*shmptr++ = GP1_MATMUL_3D;
	*shmptr++ = 2;
	*shmptr++ = 3;
	*shmptr++ = 2;
	*shmptr++ = GP1_MATMUL_3D;
	*shmptr++ = 2;
	*shmptr++ = 1;
	*shmptr++ = 0;
	*shmptr++ = GP1_EOCL;
	gp1_post(gp1_shmem, offset, gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd);
	offset += 17;
	roomleft = 512-17;
	vecptr = &veclist[0].x;
	for(;;)
		{
		m = (roomleft - 6) / 12;
		if ((n -= m) < 0)
			m += n;
		*shmptr++ = GP1_USEFRAME | (gp1_attr.statblkindx & 0x7);
		*shmptr++ = GP1_XFVEC_3D;
		*shmptr++ = m;
		while (--m >= 0)
			{
			GP_PUT_FLOAT(shmptr, vecptr); vecptr++;
			GP_PUT_FLOAT(shmptr, vecptr); vecptr++;
			GP_PUT_FLOAT(shmptr, vecptr); vecptr++;
			vecptr++;
			GP_PUT_FLOAT(shmptr, vecptr); vecptr++;
			GP_PUT_FLOAT(shmptr, vecptr); vecptr++;
			GP_PUT_FLOAT(shmptr, vecptr); vecptr++;
			vecptr++;
			}
		*shmptr++ = GP1_EOCL | GP1_FREEBLKS;
		GP_PUT_INT(shmptr, &bitvec);
		gp1_post(gp1_shmem, offset, gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd);
		if (n > 0)
			{
			while ((offset = gp1_alloc(gp1_shmem, 1, &bitvec, minordev, gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd)) == 0)
				;
			shmptr = &((short *) gp1_shmem)[offset];
			roomleft = 512;
			continue;
			}
		break;
		}
	}

flipplanes() {
	static int flip = 0;
	int plane1 = 1;
	int plane2 = 2;

	flip = 1 - flip;
	if (flip) {
		pw_putcolormap(gfx->gfx_pixwin,0,4,rmap2,gmap2,bmap2);
		while((gp1_d(gfx->gfx_pixwin->pw_pixrect)->cgpr_va)->status.word & 0x80)
			;
		while(!((gp1_d(gfx->gfx_pixwin->pw_pixrect)->cgpr_va)->status.word & 0x80))
			;
		return(plane1);
	}
	else {
		pw_putcolormap(gfx->gfx_pixwin,0,4,rmap1,gmap1,bmap1);
		while((gp1_d(gfx->gfx_pixwin->pw_pixrect)->cgpr_va)->status.word & 0x80)
			;
		while(!((gp1_d(gfx->gfx_pixwin->pw_pixrect)->cgpr_va)->status.word & 0x80))
			;
		return(plane2);
	}
}

gp1_pw_lock(pw, r)
struct pixwin *pw;
struct rect *r;
{
	pw_lock(pw, r);
	if (pw->pw_clipdata->pwcd_clipid == gp1_attr.clipid)
		return(0);
	return(gp1_pw_updclplst(pw));
}

gp1_pw_unlock(pw)
struct pixwin *pw;
{
	int retcode;

	retcode = 0;
	pw_unlock(pw);
	if (gfx->gfx_flags & GFX_DAMAGED) {
		gfxsw_handlesigwinch(gfx);
		retcode = 1;
		}
	if (gfx->gfx_flags & GFX_RESTART) {
		gfx->gfx_flags &= ~GFX_RESTART;
		retcode = 1;
		}
	return (retcode);
}
		
gp1_pw_updclplst(pw)
struct pixwin *pw;
{
	unsigned int bitvec;
	short offset, *gp1_addr;
	register short *bufptr, *nptr;
	struct gp1pr *dmd;
	int retcode, x, y, nrect;
	struct pixwin_prlist *prl;
	float scalevalue, fltval;

	gp1_attr.clipid = pw->pw_clipdata->pwcd_clipid;
	retcode = 0;
	dmd = gp1_d(pw->pw_pixrect);
	gp1_addr = (short *)dmd->gp_shmem;
	while ((offset = gp1_alloc(gp1_addr, 1, &bitvec, minordev, gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd)) == 0);
	bufptr = &gp1_addr[offset];

	dmd = gp1_d(pw->pw_clipdata->pwcd_prmulti);
	scalevalue = pw->pw_clipdata->pwcd_prmulti->pr_size.x/2.0;
	if ( scalevalue > pw->pw_clipdata->pwcd_prmulti->pr_size.y/2.0 )
		scalevalue = pw->pw_clipdata->pwcd_prmulti->pr_size.y/2.0;
	*bufptr++ = GP1_USEFRAME | (gp1_attr.statblkindx & 0x7);
	*bufptr++ = GP1_SETVWP_3D;
	GP_PUT_FLOAT(bufptr, &scalevalue);
	fltval = dmd->cgpr_offset.x+pw->pw_clipdata->pwcd_prmulti->pr_size.x/2;
	GP_PUT_FLOAT(bufptr, &fltval);
	GP_PUT_FLOAT(bufptr, &scalevalue);
	fltval = dmd->cgpr_offset.y+pw->pw_clipdata->pwcd_prmulti->pr_size.y/2;
	GP_PUT_FLOAT(bufptr, &fltval);
	fltval = 0.0;
	GP_PUT_FLOAT(bufptr, &fltval);
	GP_PUT_FLOAT(bufptr, &fltval);

	*bufptr++ = GP1_SETCLPLST;
	nptr = bufptr++;

	if (pw->pw_clipdata->pwcd_state == PWCD_NULL)
		{
		*nptr = 1;
		*bufptr++ = 0;
		*bufptr++ = 0;
		*bufptr++ = 0;
		*bufptr++ = 0;
		}
	else {
		nrect = 0;
		dmd = gp1_d(pw->pw_clipdata->pwcd_prmulti);
		x = dmd->cgpr_offset.x;
		y = dmd->cgpr_offset.y;
		if (x != gp1_attr.org_x | y != gp1_attr.org_x)
			{
			gp1_attr.org_x = x;
			gp1_attr.org_y = y;
			retcode = 1;
			}
		for (prl = pw->pw_clipdata->pwcd_prl; prl; prl = prl->prl_next)
			{
			dmd = gp1_d(prl->prl_pixrect);
			*bufptr++ = dmd->cgpr_offset.x;
			*bufptr++ = dmd->cgpr_offset.y;
			*bufptr++ = prl->prl_pixrect->pr_size.x;
			*bufptr++ = prl->prl_pixrect->pr_size.y;
			if (++nrect == 60)
				break;
			}
			*nptr = nrect;
		}
	*bufptr++ = GP1_EOCL | GP1_FREEBLKS;
	GP_PUT_INT(bufptr, &bitvec);
	gp1_post(gp1_addr, offset, gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd);
	return(retcode);
}
sigxcpu_catcher() {
	/* do nothing ... continue to run */
}

int gp1_stblk_alloc(fd)
int fd;
        {
        int i;
 
        if( ioctl(fd, GP1IO_GET_STATIC_BLOCK, &i) )
                return (-1);
        else
                return(i);
        }
 
set_matrix(matptr, n)
	float *matptr;
	int n;
{
	register int m;
	unsigned int bitvec;
	register int offset;
	register short *shmptr;

	while ((offset = gp1_alloc(gp1_shmem, 1, &bitvec, minordev, gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd)) == 0)
		;
	shmptr = &((short *) gp1_shmem)[offset];
	*shmptr++ = GP1_USEFRAME | (gp1_attr.statblkindx & 0x7);
	*shmptr++ = GP1_SET_MATRIX_3D | n;
	GP_PUT_FLOAT(shmptr, matptr); matptr++;
	GP_PUT_FLOAT(shmptr, matptr); matptr++;
	GP_PUT_FLOAT(shmptr, matptr); matptr++;
	GP_PUT_FLOAT(shmptr, matptr); matptr++;

	GP_PUT_FLOAT(shmptr, matptr); matptr++;
	GP_PUT_FLOAT(shmptr, matptr); matptr++;
	GP_PUT_FLOAT(shmptr, matptr); matptr++;
	GP_PUT_FLOAT(shmptr, matptr); matptr++;

	GP_PUT_FLOAT(shmptr, matptr); matptr++;
	GP_PUT_FLOAT(shmptr, matptr); matptr++;
	GP_PUT_FLOAT(shmptr, matptr); matptr++;
	GP_PUT_FLOAT(shmptr, matptr); matptr++;

	GP_PUT_FLOAT(shmptr, matptr); matptr++;
	GP_PUT_FLOAT(shmptr, matptr); matptr++;
	GP_PUT_FLOAT(shmptr, matptr); matptr++;
	GP_PUT_FLOAT(shmptr, matptr); matptr++;
	*shmptr++ = GP1_EOCL | GP1_FREEBLKS;
	GP_PUT_INT(shmptr, &bitvec);
	gp1_post(gp1_shmem, offset, gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd);
} /* end of set_matrix() */

randomize_path()
{
	double x, y, z;
	double pi = 3.14159265358;
	float sinx, cosx, siny, cosy, sinz, cosz; 
	double l;

	x = (-50 + (random()>>10)%100)/50.0;
	y = (-50 + (random()>>10)%100)/50.0;
	z = (-50 + (random()>>10)%100)/50.0;

	l = sqrt(x*x + y*y + z*z);

	x = x/l * pi / 15.0;
	y = y/l * pi / 15.0;
	z = z/l * pi / 15.0;

	sinx = sin(x);
	cosx = cos(x);
	siny = sin(y);
	cosy = cos(y);
	sinz = sin(z);
	cosz = cos(z);

	mtxx[1][1] = cosx;
	mtxx[2][2] = cosx;
	mtxx[1][2] = sinx;
	mtxx[2][1] = -sinx;

	mtxy[0][0] = cosy;
	mtxy[2][2] = cosy;
	mtxy[0][2] = -siny;
	mtxy[2][0] = siny;

	mtxz[0][0] = cosz;
	mtxz[1][1] = cosz;
	mtxz[0][1] = sinz;
	mtxz[1][0] = -sinz;

} /* end of randomize_path() */


initialize_matrices()
{
	int i, j;

	for (i=0; i<4; i++) {
		for (j=0; j<4; j++) {
			if (i==j) {
				mtxx[i][j] = 1.0;
				mtxy[i][j] = 1.0;
				mtxz[i][j] = 1.0;
			} else {
				mtxx[i][j] = 0.0;
				mtxy[i][j] = 0.0;
				mtxz[i][j] = 0.0;
			}
		}
	}

	srandom(getpid());
				
} /* end of initialize_matrices() */

set_rot_matrix()
{
	register int m;
	unsigned int bitvec;
	register int offset;
	register short *shmptr;

	while ((offset = gp1_alloc(gp1_shmem, 1, &bitvec, minordev, gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd)) == 0)
		;
	shmptr = &((short *) gp1_shmem)[offset];
	*shmptr++ = GP1_USEFRAME | (gp1_attr.statblkindx & 0x7);
	*shmptr++ = GP1_MATMUL_3D;
	*shmptr++ = 3;
	*shmptr++ = 4;
	*shmptr++ = 3;
	*shmptr++ = GP1_MATMUL_3D;
	*shmptr++ = 3;
	*shmptr++ = 5;
	*shmptr++ = 3;
	*shmptr++ = GP1_EOCL | GP1_FREEBLKS;
	GP_PUT_INT(shmptr, &bitvec);
	gp1_post(gp1_shmem, offset, gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd);
} /* end of set_rot_matrix() */
shmptr, &bitvec);
	gp1_post(gp1_shmem, offset,
		    gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd);
	}

flipplanes() {
	static int flip = 0;
	int plane1 = 0x7;
	int plane2 = 0x38;

	flip = 1 - flip;
	if (flip) {
		pw_putcolormap(gfx->gfx_pixwin,0,CMAPSIZE,rmap2,gmap2,bmap2);
		while((gp1_d(gfx->gfx_pixwin->pw_pixrect)->cgpr_va)->
		    status.word & 0x80);
		while(!((gp1_d(gfx->gfx_pixwin->pw_pixrect)-./demo/DIALBOX/                                                                                        775       0      12            0  4425705145   6116                                                                                                                                                                                                                                                                                                                                                                      ./demo/DIALBOX/Makefile                                                                                644       0      12          376  4424743503   7626                                                                                                                                                                                                                                                                                                                                                                      #
# @(#)Makefile.demo 1.1 88/10/31 SMI
#
 
OBJS= dialtest.o pw_circle.o diag.o
LIBS=	-lsuntool -lsunwindow -lpixrect -lm
CFLAGS=	-O

.KEEP_STATE:

all:		dialtest

dialtest.o:	dialtest.c dial_icon.h

dialtest:	$(OBJS)
		cc $(CFLAGS) -o $@ $(OBJS) $(LIBS)
TCLIPPLANES | (cplns & 0x3F);
	*shmptr++ = (8 << 8) | 0;
	*shmptr++ = GP1_MATMUL_3D;
	*shmptr++ = 2;
	*shmptr++ = 3;
	*shmptr++ = 2;
	*shmptr++ = GP1_MATMUL_3D;
	*shmptr++ = 2;
	*shmptr++ = 1;
	*shmptr++ = 0;
	*shmptr++ = GP1_EOCL;
	gp1_post(gp1_shmem, offse./demo/DIALBOX/diag.c                                                                                  644       0      12         5542  4424743503   7256                                                                                                                                                                                                                                                                                                                                                                      
#ifndef lint
static char     sccsid[] = "@(#)diag.c 1.2 88/10/31 Copyright 1988 Sun Micro";
#endif
 
/*
 * Copyright (c) 1988 by Sun Microsystems, Inc.
 */

#include <sys/types.h>
#include <stdio.h>
#include <fcntl.h>
#include <sys/time.h>
#include <sundev/vuid_event.h>
#include <sys/ioctl.h>
#include <errno.h>

extern int win_fd;

#define DB_OK	      0
#define DB_OPEN_ERR  -1
#define DB_IOCTL_ERR -2
#define DB_WRITE_ERR -3
#define DB_READ_ERR  -4
#define DB_COMP_ERR  -5

#define message(s)  fprintf(stderr, (s))

void
diag_notify()
{
    switch(diag_test()) {
	case DB_OK:
	    message("OK.\n");
	    break;
	case DB_OPEN_ERR:
	    message("Cannot open device.\n");
	    break;
	case DB_IOCTL_ERR:
	    message("Ioctl failed.\n");
	    break;
	case DB_WRITE_ERR:
	    message("Write Error.\n");
	    break;
	case DB_READ_ERR:
	    message("No Response from Dialbox.\n");
	    break;
	case DB_COMP_ERR:
	    message("Selftest Failed.\n");
	    break;
	default:
	    message("Weird unknown kind of error.\n");
	    break;
    }
}

int
diag_test()
{
    int             db_fd, c, err, vuid_format;

    static unsigned char diag_cmd[] = {0x10, 0, 0};
    static unsigned char expected_response[] = {0x1, 0x2};
    static unsigned char response[sizeof (expected_response)];
    static unsigned char reset_cmd[] = {0x1F, 0, 0};

    err = DB_OK;
    if ((db_fd = open("/dev/dialbox", O_RDWR)) == -1) {
	perror("open");
	return(DB_OPEN_ERR);
    }
    win_remove_input_device(win_fd, "/dev/dialbox");
    
    /* set to "native mode", (This does not work for the 3.5 driver yet! */
    vuid_format = VUID_NATIVE;
    if (ioctl(db_fd, VUIDSFORMAT, &vuid_format) == -1) {
	perror("ioctl(VUIDSFORMAT, VUID_NATIVE)");
	err = DB_IOCTL_ERR;
    }
    /* Set up for "non-blocking" reads */
    if (fcntl(db_fd, F_SETFL, fcntl(db_fd, F_GETFL, 0) | O_NDELAY) == -1) {
	perror("fctntl()");
	err = DB_IOCTL_ERR;
    }
    while (read(db_fd, response, 1) > 0) {
	; /* just flush */
    }
    /* This does not work for the 3.5 driver yet. */
    if (write(db_fd, diag_cmd, sizeof (diag_cmd)) != sizeof (diag_cmd)) {
	perror("write()");
	err = DB_WRITE_ERR;
    } else {
	sleep(1);
	if ((c = read(db_fd, response, 2)) != 2) {
	    err = DB_READ_ERR;
	} else if (strncmp(response, expected_response, sizeof (expected_response))) {
	     err = DB_COMP_ERR;
	} else {
	    ; /* OK */
	}
    }
    if (write(db_fd, reset_cmd, sizeof (reset_cmd)) != sizeof (reset_cmd)) {
	perror("write()");
	 err = DB_WRITE_ERR;
    }
    /* back to VUID mode */
    vuid_format = VUID_FIRM_EVENT;
    if (ioctl(db_fd, VUIDSFORMAT, &vuid_format) == -1) {
	perror("ioctl (VUIDSFORMAT, VUID_FIRM_EVENT)");
	err = DB_IOCTL_ERR;
    }
    while (read(db_fd, response, 1) > 0) {
	; /* just flush (again) */
    }
    /* re install device to window system */
    win_set_input_device(win_fd, db_fd, "/dev/dialbox");
    close(db_fd);
    return(err);
}
set = gp1_alloc(gp1_addr, 1, &bitvec, minordev, gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd)) == 0);
	bufptr = &gp1_addr[offset];

	dmd = gp1_d(pw->pw_clipda./demo/DIALBOX/dial_icon.h                                                                             644       0      12         3615  4424743503  10277                                                                                                                                                                                                                                                                                                                                                                      /* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
 */
	0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x8A00,0x0000,0x0000,0x0001,
	0x9100,0x0000,0x0000,0x0001,0xA080,0x0000,0x0000,0x0001,
	0xC1E0,0x0000,0x0000,0x0001,0x821C,0x0000,0x0000,0x0001,
	0xA403,0x0000,0x0000,0x0001,0x8800,0x8600,0x0000,0x0001,
	0xD000,0x8780,0x0000,0x0001,0xB002,0x49C0,0x0000,0x0001,
	0x8801,0x4870,0x0000,0x0001,0x8815,0x3038,0x0000,0x0001,
	0x840A,0x938E,0x0000,0x0001,0x8650,0x5C67,0x0000,0x0001,
	0x81A0,0x7821,0x8000,0x0001,0x8000,0x7010,0xE000,0x0001,
	0x8000,0x5110,0x3000,0x0001,0x8000,0x5010,0x1C00,0x0001,
	0x8000,0x8820,0x0600,0x0001,0x8000,0x8C60,0x0380,0x0001,
	0x8001,0x0380,0x38C0,0x0001,0x8001,0x0000,0xC670,0x0001,
	0x8002,0x3800,0x8218,0x0001,0x8002,0xC601,0x0110,0x0001,
	0x8002,0x8201,0x1110,0x0001,0x8005,0x0101,0x0130,0x0001,
	0x8005,0x1100,0x8220,0x0001,0x8009,0x0100,0xC660,0x0001,
	0x8008,0x8200,0x3840,0x0001,0x8010,0xC600,0x0040,0x0001,
	0x8010,0x3800,0x00C0,0x0001,0x8020,0x0003,0x8080,0x0001,
	0x8020,0x000C,0x6180,0x0001,0x8023,0x8008,0x2180,0x0001,
	0x804C,0x6010,0x1100,0x0001,0x8048,0x2011,0x1300,0x0001,
	0x8090,0x1010,0x1200,0x0001,0x8091,0x1008,0x2600,0x0001,
	0x8110,0x100C,0x6600,0x0001,0x8108,0x2003,0x8400,0x0001,
	0x810C,0x6000,0x0C00,0x0001,0x8203,0x8000,0x0800,0x0001,
	0x8200,0x0038,0x1800,0x0001,0x8400,0x00C6,0x1800,0x0001,
	0x8438,0x0082,0x1000,0x0001,0x88C6,0x0101,0x3000,0x0001,
	0x8882,0x0111,0x3000,0x0001,0x9101,0x0101,0x6000,0x0001,
	0x9111,0x0082,0x6000,0x0001,0x9101,0x00C6,0x4000,0x0001,
	0x9082,0x0038,0xC000,0x0001,0x8CC6,0x0000,0xC000,0x0001,
	0x8338,0x0381,0x8000,0x0001,0x8080,0x0C61,0x8000,0x0001,
	0x8060,0x0821,0x0000,0x0001,0x8010,0x1013,0x0000,0x0001,
	0x800C,0x1113,0x0000,0x0001,0x8003,0x1016,0x0000,0x0001,
	0x8000,0x8826,0x0000,0x0001,0x8000,0x6C66,0x0000,0x0001,
	0x8000,0x138C,0x0000,0x0001,0x8000,0x0C0C,0x0000,0x0001,
	0x8000,0x0318,0x0000,0x0001,0xFFFF,0xFFFF,0xFFFF,0xFFFF
sponse, 1) > 0) {
	; /* just flush */
    }
    /* This does not work for the 3.5 driver yet. */
    if (write(db_f./demo/DIALBOX/dialtest.c                                                                              644       0      12         7154  4424743502  10163                                                                                                                                                                                                                                                                                                                                                                      
#ifndef lint
static char     sccsid[] = "@(#)dialtest.c 1.4 88/10/31 Copyright 1988 Sun Micro";
#endif
 
/*
 * Copyright (c) 1988 by Sun Microsystems, Inc.
 */

#include <stdio.h>
#include <fcntl.h>


#include <suntool/sunview.h>
#include <suntool/panel.h>
#include <suntool/canvas.h>


#include <math.h>

short tool_image[256] =
{
#include "dial_icon.h"
};

DEFINE_ICON_FROM_IMAGE(tool_icon, tool_image);


#define NDIALS 8
/* converts dial units (64th of degrees) to radians */
#define DIAL_TO_RADIANS(n) \
	((float)(n) * 2.0 * M_PI) / (float) DIAL_UNITS_PER_CYCLE

/* these are defined in <sundev/dbio.h>, but since that may not be installed */
/* they are also defined here */

#define DIAL_DEVID		0x7B
#define	event_is_dial(event)	(vuid_in_range(DIAL_DEVID, event->ie_code))
#define DIAL_NUMBER(event_code)	(event_code & 0xFF)
#define DIAL_UNITS_PER_CYCLE (64*360)


#define BLACK 0
#define WHITE 255

Window
    frame,
    panel,
    canvas;

Pixwin *dial_pixwin;

void dial_event_proc(), draw_dials();
extern void diag_notify();

int win_fd;

main(argc, argv)
    int argc;
    char **argv;
{
    int db_fd;
    dial_reset();
    frame = window_create(NULL, FRAME,
                          FRAME_LABEL, "Dialtool",
			  FRAME_ICON, &tool_icon,
                          0);
    panel = window_create(frame, PANEL, 0);
    panel_create_item(panel, PANEL_BUTTON, PANEL_LABEL_IMAGE,
		      panel_button_image(panel, "Diagnostics", 5, 0),
		      PANEL_NOTIFY_PROC,
		      diag_notify,
		      0);
    window_fit_height(panel);
    win_fd = (int)window_get(frame, WIN_FD);		 
    if ((db_fd = open("/dev/dialbox", O_RDWR)) == -1)  {
	perror("Open failed for /dev/dialbox:");
	exit(1);
    }
    win_set_input_device(win_fd, db_fd, "/dev/dialbox");
    close(db_fd); /* window system now has its own copy */

    canvas = window_create(frame, CANVAS,
                            CANVAS_WIDTH, 256,
                            CANVAS_HEIGHT, 512,
			    WIN_HEIGHT, 512,
			    WIN_WIDTH, 256,
			    CANVAS_RETAINED, FALSE,
			    CANVAS_REPAINT_PROC, draw_dials,
			    WIN_EVENT_PROC, dial_event_proc,
                            0);
    dial_pixwin = canvas_pixwin(canvas);

    window_fit(canvas);
    window_fit(frame);
    
    draw_dials();
    window_main_loop(frame);
}

static float angle[9];

dial_reset()
{
    int i;
    for (i=0; i < NDIALS; i++) {
	angle[i] = M_PI;
    }
}

void
dial_event_proc(window, event, arg)
    Window window;
    Event *event;
    caddr_t arg;
{
    int i;
    static int delta, absolute, my_absolute;

    if (event_is_dial(event)) {
	    i = DIAL_NUMBER(event->ie_code);
	    delta = (int)window_get(canvas, WIN_EVENT_STATE, event->ie_code);
	    draw_dial(i, angle[i], BLACK);
	    angle[i] += DIAL_TO_RADIANS(delta);
	    draw_dial(i, angle[i], WHITE);
    }
}

struct pr_pos origins_8[8] =
{
    {64,  64},	
    {64, 192},
    {64, 320},
    {64, 448},
    {192,  64},	
    {192, 192},
    {192, 320},
    {192, 448},
};

struct pr_pos origins_9[9] =
{
    {64,  64},	{192, 64}, {320, 64},
    {64, 192},	{192, 192}, {320, 192},
    {64, 320},	{192, 320}, {320, 320}
};

struct pr_pos *dial_origin = origins_8;

void
draw_dials()
{
    int i;
    for (i=0; i < 8; i++) {
	pw_circle(dial_pixwin, dial_origin[i].x, dial_origin[i].y,
		  48, WHITE);
	draw_dial(i, angle[i], WHITE);
    }
}


draw_dial(dialnum, angle, color)
    int dialnum;
    float angle;
    int color;
{
    struct pr_pos to;

    to.x = dial_origin[dialnum].x + (int)(sin(-angle) * 46.0);
    to.y = dial_origin[dialnum].y + (int)(cos(-angle) * 46.0);
    pw_vector(dial_pixwin, dial_origin[dialnum].x,
	  dial_origin[dialnum].y,
	  to.x,
	  to.y,
	  PIX_SRC, color);
}

	GP_PUT_FLOAT(bufptr, &fltval);

	*bufptr++ = GP1_SETCLPLST;
	nptr = bufptr++;

	if (pw->pw_clipdata->pwcd_state == PWCD_NULL)
		{
		*nptr = 1;
		*bufptr++ = 0;
		*bufptr++ = 0;
		*bufptr++ = 0;
		*bufptr++ = 0;
		}
	else {
		nrect = 0;
		dmd = gp1_d(pw->pw_clipdata->pwcd_prmulti);
		x = dmd->cgpr_offset.x;
		y = dmd->cgpr_offset.y;
		if (x != gp1_attr.org_x | y != gp1_attr.org_x)
			{
			gp1_attr.or./demo/DIALBOX/pw_circle.c                                                                             644       0      12         1553  4424743502  10316                                                                                                                                                                                                                                                                                                                                                                      
#ifndef lint
static char     sccsid[] = "@(#)pw_circle.c 1.2 88/10/31 Copyright 1988 Sun Micro";
#endif
 
/*
 * Copyright (c) 1988 by Sun Microsystems, Inc.
 */

#include <suntool/sunview.h>

pw_circle(pw, cx, cy, r, color)
	Pixwin *pw;
	int cx, cy, r, color;
{
	int x, y, s;
	struct rect rect;
	
	x = 0;
	y = r;
	s = 3 - (2 *y);

	rect.r_left = cx - r;
	rect.r_top = cy - r;
	rect.r_width = rect.r_height = 2 * r;

	pw_lock(pw, &rect);
	while(y>x)
	{
		put(pw, cx, cy, x, y, color);
		if (s<0)
			s+=4*(x++)+6;
		else
			s+=4*((x++)-(y--))+10;
	}
	if (x==y)
		put(pw, cx, cy, x, y, color);
	pw_unlock(pw);
}

put(pw,cx, cy, x, y, color)
Pixwin *pw;
int cx, cy, x, y, color;
{
	int i,j,k,tmp;

	for (i=0; i<2; i++)
	{
		for (j=0; j<2; j++)
		{
			for (k=0; k<2; k++)
			{
				pw_put(pw, x+cx, y+cy, color);
				x = (-x);
			}
			y = (-y);
		}
		tmp=x;
		x=y;
		y=tmp;
	}
}

efine BLACK 0
#define WHITE 255

Window
    frame,
    panel,
    canvas;

Pixwin *dial_pixwin;

void dial_event_proc(), draw_dials();
extern void di                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ENT;
    if (ioctl(db_fd, VUIDSFORMAT, &vuid_format) == -1) {
	perror("ioctl (VUIDSFORMAT, VUID_FIRM_EVENT)");
	err = DB_IOCTL_ERR;
    }
    while (read(db_fd, response, 1) > 0) {
	; /* just flush (again) */
    }
    /* re install device to window system */
    win_set_input_device(win_fd, db_fd, "/dev/dialbox");
    close(db_fd);
    return(err);
}
set = gp1_alloc(gp1_addr, 1, &bitvec, minordev, gp1_d(gfx->gfx_pixwin->pw_pixrect)->ioctl_fd)) == 0);
	bufptr = &gp1_addr[offset];

	dmd = gp1_d(pw->pw_clipda./demo/DIALBOX/dial_icon.h                                                                             644       0      12         3615  4424743503  10277                                                                                                                                                                                                                                                                                                                                                                      /* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
 */
	0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x8A00,0x0000,0x0000,0x0001,
	0x9100,0x0000,0x0000,0x0001,0xA080,0x0000,0x0000,0x0001,
	0xC1E0,0x0000,0x0000,0x0001,0x821C,0x0000,0x0000,0x0001,
	0xA403,0x0000,0x0000,0x0001,0x8800,0x8600,0x0000,0x0001,
	0xD000,0x8780,0x0000,0x0001,0xB002,0x49C0,0x0000,0x0001,
	0x8801,0x4870,0x0000,0x0001,0x8815,0x3038,0x0000,0x0001,
	0x840A,0x938E,0x0000,0x0001,0x8650,0x5C67,0x0000,0x0001,
	0x81A0,0x7821,0x8000,0x0001,0x8000,0x7010,0xE000,0x0001,
	0x8000,0x5110,0x3000,0x0001,0x8000,0x5010,0x1C00,0x0001,
	0x8000,0x8820,0x0600,0x0001,0x8000,0x8C60,0x0380,0x0001,
	0x8001,0x0380,0x38C0,0x0001,0x8001,0x0000,0xC670,0x0001,
	0x8002,0x3800,0x8218,0x0001,0x8002,0xC601,0x0110,0x0001,
	0x8002,0x8201,0x1110,0x0001,0x8005,0x0101,0x0130,0x0001,
	0x8005,0x1100,0x8220,0x0001,0x8009,0x0100,0xC660,0x0001,
	0x8008,0x8200,0x3840,0x0001,0x8010,0xC600,0x0040,0x0001,
	0x8010,0x3800,0x00C0,0x0001,0x8020,0x0003,0x8080,0x0001,
	0x8020,0x000C,0x6180,0x0001,0x8023,0x8008,0x2180,0x0001,
	0x804C,0x6010,0x1100,0x0001,0x8048,0x2011,0x1300,0x0001,
	0x8090,0x1010,0x1200,0x0001,0x8091,0x1008,0x2600,0x0001,
	0x8110,0x100C,0x6600,0x0001,0x8108,0x2003,0x8400,0x0001,
	0x810C,0x6000,0x0C00,0x0001,0x8203,0x8000,0x0800,0x0001,
	0x8200,0x0038,0x1800,0x0001,0x8400,0x00C6,0x1800,0x0001,
	0x8438,0x0082,0x1000,0x0001,0x88C6,0x0101,0x3000,0x0001,
	0x8882,0x0111,0x3000,0x0001,0x9101,0x0101,0x6000,0x0001,
	0x9111,0x0082,0x6000,0x0001,0x9101,0x00C6,0x4000,0x0001,
	0x9082,0x0038,0xC000,0x0001,0x8CC6,0x0000,0xC000,0x0001,
	0x8338,0x0381,0x8000,0x0001,0x8080,0x0C61,0x8000,0x0001,
	0x8060,0x0821,0x0000,0x0001,0x8010,0x1013,0x0000,0x0001,
	0x800C,0x1113,0x0000,0x0001,0x8003,0x1016,0x0000,0x0001,
	0x8000,0x8826,0x0000,0x0001,0x8000,0x6C66,0x0000,0x0001,
	0x8000,0x138C,0x0000,0x0001,0x8000,0x0C0C,0x0000,0x0001,
	0x8000,0x0318,0x0000,0x0001,0xFFFF,0xFFFF,0xFFFF,0xFFFF
sponse, 1) > 0) {
	; /* just flush */
    }
    /* This does not work for the 3.5 driver yet. */
    if (write(db_f./demo/DIALBOX/dialtest.c                                                                              644       0      12         7154  4424743502  10163                                                                                                                                                                                                                                                                                                                                                                      
#ifndef lint
static char     sccsid[] = "@(#)dialtest.c 1.4 88/10/31 Copyright 1988 Sun Micro";
#endif
 
/*
 * Copyright (c) 1988 by Sun Microsystems, Inc.
 */

#include <stdio.h>
#include <fcntl.h>


#include <suntool/sunview.h>
#include <suntool/panel.h>
#include <suntool/canvas.h>


#include <math.h>

short tool_image[256] =
{
#include "dial_icon.h"
};

DEFINE_ICON_FROM_IMAGE(tool_icon, tool_image);


#define NDIALS 8
/* converts dial units (64th of degrees) to radians */
#define DIAL_TO_RADIANS(n) \
	((float)(n) * 2.0 * M_PI) / (float) DIAL_UNITS_PER_CYCLE

/* these are defined in <sundev/dbio.h>, but since that may not be installed */
/* they are also defined here */

#define DIAL_DEVID		0x7B
#define	event_is_dial(event)	(vuid_in_range(DIAL_DEVID, event->ie_code))
#define DIAL_NUMBER(event_code)	(event_code & 0xFF)
#define DIAL_UNITS_PER_CYCLE (64*360)


#define BLACK 0
#define WHITE 255

Window
    frame,
    panel,
    canvas;

Pixwin *dial_pixwin;

void dial_event_proc(), draw_dials();
extern void diag_notify();

int win_fd;

main(argc, argv)
    int argc;
    char **argv;
{
    int db_fd;
    dial_reset();
    frame = window_create(NULL, FRAME,
                          FRAME_LABEL, "Dialtool",
			  FRAME_ICON, &tool_icon,
                          0);
    panel = window_create(frame, PANEL, 0);
    panel_create_item(panel, PANEL_BUTTON, PANEL_LABEL_IMAGE,
		      panel_button_image(panel, "Diagnostics", 5, 0),
		      PANEL_NOTIFY_PROC,
		      diag_notify,
		      0);
    window_fit_height(panel);
    win_fd = (int)window_get(frame, WIN_FD);		 
    if ((db_fd = open("/dev/dialbox", O_RDWR)) == -1)  {
	perror("Open failed for /dev/dialbox:");
	exit(1);
    }
    win_set_input_device(win_fd, db_fd, "/dev/dialbox");
    close(db_fd); /* window system now has its own copy */

    canvas = window_create(frame, CANVAS,
                            CANVAS_WIDTH, 256,
                            CANVAS_HEIGHT, 512,
			    WIN_HEIGHT, 512,
			    WIN_WIDTH, 256,
			    CANVAS_RETAINED, FALSE,
			    CANVAS_REPAINT_PROC, draw_dials,
			    WIN_EVENT_PROC, dial_event_proc,
                            0);
    dial_pixwin = canvas_pixwin(canvas);

    window_fit(canvas);
    window_fit(frame);
    
    draw_dials();
    window_main_loop(frame);
}

static float angle[9];

dial_reset()
{
    int i;
    for (i=0; i < NDIALS; i++) {
	angle[i] = M_PI;
    }
}

void
dial_event_proc(window, event, arg)
    Window window;
    Event *event;
    caddr_t arg;
{
    int i;
    static int delta, absolute, my_absolute;

    if (event_is_dial(event)) {
	    i = DIAL_NUMBER(event->ie_code);
	    delta = (int)window_get(canvas, WIN_EVENT_STATE, event->ie_code);
	    draw_dial(i, angle[i], BLACK);
	    angle[i] += DIAL_TO_RADIANS(delta);
	    draw_dial(i, angle[i], WHITE);
    }
}

struct pr_pos origins_8[8] =
{
    {64,  64},	
    {64, 192},
    {64, 320},
    {64, 448},
    {192,  64},	
    {192, 192},
    {192, 320},
    {192, 448},
};

struct pr_pos origins_9[9] =
{
    {64,  64},	{192, 64}, {320, 64},
    {64, 192},	{192, 192}, {320, 192},
    {64, 320},	{192, 320}, {320, 320}
};

struct pr_pos *dial_origin = origins_8;

void
draw_dials()
{
    int i;
    for (i=0; i < 8; i++) {
	pw_circle(dial_pixwin, dial_origin[i].x, dial_origin[i].y,
		  48, WHITE);
	draw_dial(i, angle[i], WHITE);
    }
}


draw_dial(dialnum, angle, color)
    int dialnum;
    float angle;
    int color;
{
    struct pr_pos to;

    to.x = dial_origin[dialnum].x + (int)(sin(-angle) * 46.0);
    to.y = dial_origin[dialnum].y + (int)(cos(-angle) * 46.0);
    pw_vector(dial_pixwin, dial_origin[dialnum].x,
	  dial_origin[dialnum].y,
	  to.x,
	  to.y,
	  PIX_SRC, color);
}

	GP_PUT_FLOAT(bufptr, &fltval);

	*bufptr++ = GP1_SETCLPLST;
	nptr = bufptr++;

	if (pw->pw_clipdata->pwcd_state == PWCD_NULL)
		{
		*nptr = 1;
		*bufptr++ = 0;
		*bufptr++ = 0;
		*bufptr++ = 0;
		*bufptr++ = 0;
		}
	else {
		nrect = 0;
		dmd = gp1_d(pw->pw_clipdata->pwcd_prmulti);
		x = dmd->cgpr_offset.x;
		y = dmd->cgpr_offset.y;
		if (x != gp1_attr.org_x | y != gp1_attr.org_x)
			{
			gp1_attr.or