home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Amiga 5 / MA_Cover_5.iso / ppc / mesa / src / attrib.s < prev    next >
Encoding:
Text File  |  1998-01-31  |  35.8 KB  |  1,953 lines

  1.  
  2. ; Storm C Compiler
  3. ; TEMP:Mesa_2_5/src/attrib.c
  4.     mc68030
  5.     mc68881
  6.     XREF    _gl_DrawBuffer
  7.     XREF    _gl_error
  8.     XREF    _gl_problem
  9.     XREF    _memcpy
  10.     XREF    _malloc
  11.     XREF    _free
  12.     XREF    _CC
  13.  
  14.     SECTION "_new_attrib_node:0",CODE
  15.  
  16.  
  17. ;static struct gl_attrib_node *new_attrib_node( GLbitfield kind )
  18. _new_attrib_node
  19.     move.l    d2,-(a7)
  20.     move.l    $8(a7),d2
  21. L73
  22. ;   an = (struct gl_attrib_node *) malloc( sizeof(struct gl_attrib
  23.     pea    $C.w
  24.     jsr    _malloc
  25.     addq.w    #4,a7
  26.     move.l    d0,a0
  27. ;   if (an) 
  28.     cmp.w    #0,a0
  29.     beq.b    L75
  30. L74
  31. ;      an->kind = kind;
  32.     move.l    d2,(a0)
  33. L75
  34.     move.l    a0,d0
  35.     move.l    (a7)+,d2
  36.     rts
  37.  
  38.     SECTION "_gl_PushAttrib:0",CODE
  39.  
  40.     rts
  41.  
  42. ;void gl_PushAttrib( GLcontext* ctx, GLbitfield mask )
  43.     XDEF    _gl_PushAttrib
  44. _gl_PushAttrib
  45. L128    EQU    -$40
  46.     link    a5,#L128
  47.     movem.l    d2/d3/a2,-(a7)
  48.     move.l    $C(a5),d2
  49. L77
  50. ;   if (INSIDE_BEGIN_END(ctx)) 
  51.     move.l    $8(a5),a0
  52.     add.l    #$E08A,a0
  53.     move.l    (a0),d0
  54.     cmp.l    #$1A00,d0
  55.     beq.b    L79
  56. L78
  57. ;      gl_error( ctx, GL_INVALID_OPERATION, "glPushAttrib" );
  58.     move.l    #L76,-(a7)
  59.     pea    $502.w
  60.     move.l    $8(a5),-(a7)
  61.     jsr    _gl_error
  62.     add.w    #$C,a7
  63.     movem.l    (a7)+,d2/d3/a2
  64.     unlk    a5
  65.     rts
  66. L79
  67. ;   if (ctx->AttribStackDepth>=MAX_ATTRIB_STACK_DEPTH) 
  68.     move.l    $8(a5),a0
  69.     move.l    $1E20(a0),d0
  70.     cmp.l    #$10,d0
  71.     blo.b    L81
  72. L80
  73. ;      gl_error( ctx, GL_STACK_OVERFLOW, "glPushAttrib" );
  74.     move.l    #L76,-(a7)
  75.     pea    $503.w
  76.     move.l    $8(a5),-(a7)
  77.     jsr    _gl_error
  78.     add.w    #$C,a7
  79.     movem.l    (a7)+,d2/d3/a2
  80.     unlk    a5
  81.     rts
  82. L81
  83. ;   head = NULL;
  84.     clr.l    -$8(a5)
  85. ;   if (mask & GL_ACCUM_BUFFER_BIT) 
  86.     move.l    d2,d0
  87.     and.l    #$200,d0
  88.     beq.b    L83
  89. L82
  90. ;      attr = MALLOC_STRUCT( gl_accum_attrib );
  91.     pea    $10.w
  92.     jsr    _malloc
  93.     addq.w    #4,a7
  94.     move.l    d0,a2
  95. ; attr, &ctx->Accu
  96.     pea    $10.w
  97.     move.l    $8(a5),a1
  98.     lea    $1E64(a1),a0
  99.     move.l    a0,-(a7)
  100.     move.l    a2,-(a7)
  101.     jsr    _memcpy
  102.     add.w    #$C,a7
  103. ;      newnode = new_attrib_node( GL_ACCUM_BUFFER_BIT );
  104.     pea    $200.w
  105.     jsr    _new_attrib_node
  106.     addq.w    #4,a7
  107.     move.l    d0,a0
  108. ;      newnode->data = attr;
  109.     move.l    a2,4(a0)
  110. ;      newnode->next = head;
  111.     move.l    -$8(a5),$8(a0)
  112. ;      head = newnode;
  113.     move.l    a0,-$8(a5)
  114. L83
  115. ;   if (mask & GL_COLOR_BUFFER_BIT) 
  116.     move.l    d2,d0
  117.     and.l    #$4000,d0
  118.     beq.b    L85
  119. L84
  120. ;      attr = MALLOC_STRUCT( gl_colorbuffer_attrib );
  121.     pea    $52.w
  122.     jsr    _malloc
  123.     addq.w    #4,a7
  124.     move.l    d0,a2
  125. ; &ctx->Color, siz
  126.     pea    $52.w
  127.     move.l    $8(a5),a1
  128.     lea    $1E74(a1),a0
  129.     move.l    a0,-(a7)
  130.     move.l    a2,-(a7)
  131.     jsr    _memcpy
  132.     add.w    #$C,a7
  133. ;      newnode = new_attrib_node( GL_COLOR_BUFFER_BIT );
  134.     pea    $4000.w
  135.     jsr    _new_attrib_node
  136.     addq.w    #4,a7
  137.     move.l    d0,a0
  138. ;      newnode->data = attr;
  139.     move.l    a2,4(a0)
  140. ;      newnode->next = head;
  141.     move.l    -$8(a5),$8(a0)
  142. ;      head = newnode;
  143.     move.l    a0,-$8(a5)
  144. L85
  145. ;   if (mask & GL_CURRENT_BIT) 
  146.     move.l    d2,d0
  147.     and.l    #1,d0
  148.     beq.b    L87
  149. L86
  150. ;      attr = MALLOC_STRUCT( gl_current_attrib );
  151.     pea    $5E.w
  152.     jsr    _malloc
  153.     addq.w    #4,a7
  154.     move.l    d0,a2
  155. ;r, &ctx->Current,
  156.     pea    $5E.w
  157.     move.l    $8(a5),a1
  158.     lea    $1EC6(a1),a0
  159.     move.l    a0,-(a7)
  160.     move.l    a2,-(a7)
  161.     jsr    _memcpy
  162.     add.w    #$C,a7
  163. ;      newnode = new_attrib_node( GL_CURRENT_BIT );
  164.     pea    1.w
  165.     jsr    _new_attrib_node
  166.     addq.w    #4,a7
  167.     move.l    d0,a0
  168. ;      newnode->data = attr;
  169.     move.l    a2,4(a0)
  170. ;      newnode->next = head;
  171.     move.l    -$8(a5),$8(a0)
  172. ;      head = newnode;
  173.     move.l    a0,-$8(a5)
  174. L87
  175. ;   if (mask & GL_DEPTH_BUFFER_BIT) 
  176.     move.l    d2,d0
  177.     and.l    #$100,d0
  178.     beq.b    L89
  179. L88
  180. ;      attr = MALLOC_STRUCT( gl_depthbuffer_attrib );
  181.     pea    $A.w
  182.     jsr    _malloc
  183.     addq.w    #4,a7
  184.     move.l    d0,a2
  185. ; &ctx->Depth, siz
  186.     pea    $A.w
  187.     move.l    $8(a5),a1
  188.     lea    $1F24(a1),a0
  189.     move.l    a0,-(a7)
  190.     move.l    a2,-(a7)
  191.     jsr    _memcpy
  192.     add.w    #$C,a7
  193. ;      newnode = new_attrib_node( GL_DEPTH_BUFFER_BIT );
  194.     pea    $100.w
  195.     jsr    _new_attrib_node
  196.     addq.w    #4,a7
  197.     move.l    d0,a0
  198. ;      newnode->data = attr;
  199.     move.l    a2,4(a0)
  200. ;      newnode->next = head;
  201.     move.l    -$8(a5),$8(a0)
  202. ;      head = newnode;
  203.     move.l    a0,-$8(a5)
  204. L89
  205. ;   if (mask & GL_ENABLE_BIT) 
  206.     move.l    d2,d0
  207.     and.l    #$2000,d0
  208.     beq    L97
  209. L90
  210. ;      attr = MALLOC_STRUCT( gl_enable_attrib );
  211.     pea    $3E.w
  212.     jsr    _malloc
  213.     addq.w    #4,a7
  214.     move.l    d0,a2
  215. ;      attr->AlphaTest = ctx->Color.AlphaEnabled;
  216.     move.l    $8(a5),a1
  217.     lea    $1E74(a1),a0
  218.     move.b    $22(a0),d0
  219.     move.b    d0,(a2)
  220. ;      attr->AutoNormal = ctx->Eval.AutoNormal;
  221.     move.l    $8(a5),a1
  222.     lea    $1F2E(a1),a0
  223.     move.b    $12(a0),d0
  224.     move.b    d0,1(a2)
  225. ;      attr->Blend = ctx->Color.BlendEnabled;
  226.     move.l    $8(a5),a1
  227.     lea    $1E74(a1),a0
  228.     move.b    $2D(a0),d0
  229.     move.b    d0,2(a2)
  230. ;      for (i=0;
  231.     moveq    #0,d0
  232.     bra.b    L92
  233. L91
  234. ;     attr->ClipPlane[i] = ctx->Transform.ClipEnabled[i];
  235.     move.l    $8(a5),a1
  236.     move.l    a1,a0
  237.     add.l    #$DC76,a0
  238.     lea    (a0),a0
  239.     add.l    d0,a0
  240.     move.b    (a0),d1
  241.     lea    3(a2),a0
  242.     add.l    d0,a0
  243.     move.b    d1,(a0)
  244.     addq.l    #1,d0
  245. L92
  246.     cmp.l    #6,d0
  247.     blo.b    L91
  248. L93
  249. ;      attr->ColorMaterial = ctx->Light.ColorMaterialEnabled;
  250.     move.l    $8(a5),a1
  251.     lea    $1FA0(a1),a0
  252.     add.l    #$8E14,a0
  253.     move.b    (a0),d0
  254.     move.b    d0,$9(a2)
  255. ;      attr->CullFace = ctx->Polygon.CullFlag;
  256.     move.l    $8(a5),a1
  257.     move.l    a1,a0
  258.     add.l    #$D670,a0
  259.     lea    (a0),a0
  260.     move.b    $D(a0),d0
  261.     move.b    d0,$A(a2)
  262. ;      attr->DepthTest = ctx->Depth.Test;
  263.     move.l    $8(a5),a1
  264.     lea    $1F24(a1),a0
  265.     move.b    $8(a0),d0
  266.     move.b    d0,$B(a2)
  267. ;      attr->Dither = ctx->Color.DitherFlag;
  268.     move.l    $8(a5),a1
  269.     lea    $1E74(a1),a0
  270.     move.b    $51(a0),d0
  271.     move.b    d0,$C(a2)
  272. ;      attr->Fog = ctx->Fog.Enabled;
  273.     move.l    $8(a5),a1
  274.     lea    $1F66(a1),a0
  275.     move.b    (a0),d0
  276.     move.b    d0,$D(a2)
  277. ;      for (i=0;
  278.     moveq    #0,d0
  279.     bra.b    L95
  280. L94
  281. ;     attr->Light[i] = ctx->Light.Light[i].Enabled;
  282.     move.l    $8(a5),a1
  283.     lea    $1FA0(a1),a0
  284.     move.l    d0,d1
  285.     muls.l    #$10E2,d1
  286.     add.l    d1,a0
  287.     move.b    $68(a0),d1
  288.     lea    $E(a2),a0
  289.     add.l    d0,a0
  290.     move.b    d1,(a0)
  291.     addq.l    #1,d0
  292. L95
  293.     cmp.l    #$8,d0
  294.     blo.b    L94
  295. L96
  296. ;      attr->Lighting = ctx->Light.Enabled;
  297.     move.l    $8(a5),a1
  298.     lea    $1FA0(a1),a0
  299.     add.l    #$8E02,a0
  300.     move.b    (a0),d0
  301.     move.b    d0,$16(a2)
  302. ;      attr->LineSmooth = ctx->Line.SmoothFlag;
  303.     move.l    $8(a5),a1
  304.     move.l    a1,a0
  305.     add.l    #$ADDC,a0
  306.     lea    (a0),a0
  307.     move.b    (a0),d0
  308.     move.b    d0,$17(a2)
  309. ;      attr->LineStipple = ctx->Line.StippleFlag;
  310.     move.l    $8(a5),a1
  311.     move.l    a1,a0
  312.     add.l    #$ADDC,a0
  313.     lea    (a0),a0
  314.     move.b    1(a0),d0
  315.     move.b    d0,$18(a2)
  316. ;      attr->IndexLogicOp = ctx->Color.IndexLogicOpEnabled;
  317.     move.l    $8(a5),a1
  318.     lea    $1E74(a1),a0
  319.     move.b    $4E(a0),d0
  320.     move.b    d0,$19(a2)
  321. ;      attr->ColorLogicOp = ctx->Color.ColorLogicOpEnabled;
  322.     move.l    $8(a5),a1
  323.     lea    $1E74(a1),a0
  324.     move.b    $4F(a0),d0
  325.     move.b    d0,$1A(a2)
  326. ;      attr->Map1Color4 = ctx->Eval.Map1Color4;
  327.     move.l    $8(a5),a1
  328.     lea    $1F2E(a1),a0
  329.     move.b    (a0),d0
  330.     move.b    d0,$1B(a2)
  331. ;      attr->Map1Index = ctx->Eval.Map1Index;
  332.     move.l    $8(a5),a1
  333.     lea    $1F2E(a1),a0
  334.     move.b    1(a0),d0
  335.     move.b    d0,$1C(a2)
  336. ;      attr->Map1Normal = ctx->Eval.Map1Normal;
  337.     move.l    $8(a5),a1
  338.     lea    $1F2E(a1),a0
  339.     move.b    2(a0),d0
  340.     move.b    d0,$1D(a2)
  341. ;      attr->Map1TextureCoord1 = ctx->Eval.Map1TextureCoord1;
  342.     move.l    $8(a5),a1
  343.     lea    $1F2E(a1),a0
  344.     move.b    3(a0),d0
  345.     move.b    d0,$1E(a2)
  346. ;      attr->Map1TextureCoord2 = ctx->Eval.Map1TextureCoord2;
  347.     move.l    $8(a5),a1
  348.     lea    $1F2E(a1),a0
  349.     move.b    4(a0),d0
  350.     move.b    d0,$1F(a2)
  351. ;      attr->Map1TextureCoord3 = ctx->Eval.Map1TextureCoord3;
  352.     move.l    $8(a5),a1
  353.     lea    $1F2E(a1),a0
  354.     move.b    5(a0),d0
  355.     move.b    d0,$20(a2)
  356. ;      attr->Map1TextureCoord4 = ctx->Eval.Map1TextureCoord4;
  357.     move.l    $8(a5),a1
  358.     lea    $1F2E(a1),a0
  359.     move.b    6(a0),d0
  360.     move.b    d0,$21(a2)
  361. ;      attr->Map1Vertex3 = ctx->Eval.Map1Vertex3;
  362.     move.l    $8(a5),a1
  363.     lea    $1F2E(a1),a0
  364.     move.b    7(a0),d0
  365.     move.b    d0,$22(a2)
  366. ;      attr->Map1Vertex4 = ctx->Eval.Map1Vertex4;
  367.     move.l    $8(a5),a1
  368.     lea    $1F2E(a1),a0
  369.     move.b    $8(a0),d0
  370.     move.b    d0,$23(a2)
  371. ;      attr->Map2Color4 = ctx->Eval.Map2Color4;
  372.     move.l    $8(a5),a1
  373.     lea    $1F2E(a1),a0
  374.     move.b    $9(a0),d0
  375.     move.b    d0,$24(a2)
  376. ;      attr->Map2Index = ctx->Eval.Map2Index;
  377.     move.l    $8(a5),a1
  378.     lea    $1F2E(a1),a0
  379.     move.b    $A(a0),d0
  380.     move.b    d0,$25(a2)
  381. ;      attr->Map2Normal = ctx->Eval.Map2Normal;
  382.     move.l    $8(a5),a1
  383.     lea    $1F2E(a1),a0
  384.     move.b    $B(a0),d0
  385.     move.b    d0,$26(a2)
  386. ;      attr->Map2TextureCoord1 = ctx->Eval.Map2TextureCoord1;
  387.     move.l    $8(a5),a1
  388.     lea    $1F2E(a1),a0
  389.     move.b    $C(a0),d0
  390.     move.b    d0,$27(a2)
  391. ;      attr->Map2TextureCoord2 = ctx->Eval.Map2TextureCoord2;
  392.     move.l    $8(a5),a1
  393.     lea    $1F2E(a1),a0
  394.     move.b    $D(a0),d0
  395.     move.b    d0,$28(a2)
  396. ;      attr->Map2TextureCoord3 = ctx->Eval.Map2TextureCoord3;
  397.     move.l    $8(a5),a1
  398.     lea    $1F2E(a1),a0
  399.     move.b    $E(a0),d0
  400.     move.b    d0,$29(a2)
  401. ;      attr->Map2TextureCoord4 = ctx->Eval.Map2TextureCoord4;
  402.     move.l    $8(a5),a1
  403.     lea    $1F2E(a1),a0
  404.     move.b    $F(a0),d0
  405.     move.b    d0,$2A(a2)
  406. ;      attr->Map2Vertex3 = ctx->Eval.Map2Vertex3;
  407.     move.l    $8(a5),a1
  408.     lea    $1F2E(a1),a0
  409.     move.b    $10(a0),d0
  410.     move.b    d0,$2B(a2)
  411. ;      attr->Map2Vertex4 = ctx->Eval.Map2Vertex4;
  412.     move.l    $8(a5),a1
  413.     lea    $1F2E(a1),a0
  414.     move.b    $11(a0),d0
  415.     move.b    d0,$2C(a2)
  416. ;      attr->Normalize = ctx->Transform.Normalize;
  417.     move.l    $8(a5),a1
  418.     move.l    a1,a0
  419.     add.l    #$DC12,a0
  420.     lea    (a0),a0
  421.     move.b    $6B(a0),d0
  422.     move.b    d0,$2D(a2)
  423. ;      attr->PointSmooth = ctx->Point.SmoothFlag;
  424.     move.l    $8(a5),a1
  425.     move.l    a1,a0
  426.     add.l    #$D652,a0
  427.     lea    (a0),a0
  428.     move.b    (a0),d0
  429.     move.b    d0,$2E(a2)
  430. ;      attr->PolygonOffsetPoint = ctx->Polygon.OffsetPoint;
  431.     move.l    $8(a5),a1
  432.     move.l    a1,a0
  433.     add.l    #$D670,a0
  434.     lea    (a0),a0
  435.     move.b    $20(a0),d0
  436.     move.b    d0,$2F(a2)
  437. ;      attr->PolygonOffsetLine = ctx->Polygon.OffsetLine;
  438.     move.l    $8(a5),a1
  439.     move.l    a1,a0
  440.     add.l    #$D670,a0
  441.     lea    (a0),a0
  442.     move.b    $21(a0),d0
  443.     move.b    d0,$30(a2)
  444. ;      attr->PolygonOffsetFill = ctx->Polygon.OffsetFill;
  445.     move.l    $8(a5),a1
  446.     move.l    a1,a0
  447.     add.l    #$D670,a0
  448.     lea    (a0),a0
  449.     move.b    $22(a0),d0
  450.     move.b    d0,$31(a2)
  451. ;      attr->PolygonSmooth = ctx->Polygon.SmoothFlag;
  452.     move.l    $8(a5),a1
  453.     move.l    a1,a0
  454.     add.l    #$D670,a0
  455.     lea    (a0),a0
  456.     move.b    $16(a0),d0
  457.     move.b    d0,$32(a2)
  458. ;      attr->PolygonStipple = ctx->Polygon.StippleFlag;
  459.     move.l    $8(a5),a1
  460.     move.l    a1,a0
  461.     add.l    #$D670,a0
  462.     lea    (a0),a0
  463.     move.b    $17(a0),d0
  464.     move.b    d0,$33(a2)
  465. ;      attr->Scissor = ctx->Scissor.Enabled;
  466.     move.l    $8(a5),a1
  467.     move.l    a1,a0
  468.     add.l    #$D714,a0
  469.     lea    (a0),a0
  470.     move.b    (a0),d0
  471.     move.b    d0,$34(a2)
  472. ;      attr->Stencil = ctx->Stencil.Enabled;
  473.     move.l    $8(a5),a1
  474.     move.l    a1,a0
  475.     add.l    #$D726,a0
  476.     lea    (a0),a0
  477.     move.b    (a0),d0
  478.     move.b    d0,$35(a2)
  479. ;      attr->Texture = ctx->Texture.Enabled;
  480.     move.l    $8(a5),a1
  481.     move.l    a1,a0
  482.     add.l    #$D73C,a0
  483.     lea    (a0),a0
  484.     move.l    (a0),d0
  485.     move.l    d0,$36(a2)
  486. ;      attr->TexGen = ctx->Texture.TexGenEnabled;
  487.     move.l    $8(a5),a1
  488.     move.l    a1,a0
  489.     add.l    #$D73C,a0
  490.     lea    (a0),a0
  491.     move.l    $18(a0),d0
  492.     move.l    d0,$3A(a2)
  493. ;      newnode = new_attrib_node( GL_ENABLE_BIT );
  494.     pea    $2000.w
  495.     jsr    _new_attrib_node
  496.     addq.w    #4,a7
  497.     move.l    d0,a0
  498. ;      newnode->data = attr;
  499.     move.l    a2,4(a0)
  500. ;      newnode->next = head;
  501.     move.l    -$8(a5),$8(a0)
  502. ;      head = newnode;
  503.     move.l    a0,-$8(a5)
  504. L97
  505. ;   if (mask & GL_EVAL_BIT) 
  506.     move.l    d2,d0
  507.     and.l    #$10000,d0
  508.     beq.b    L99
  509. L98
  510. ;      attr = MALLOC_STRUCT( gl_eval_attrib );
  511.     pea    $38.w
  512.     jsr    _malloc
  513.     addq.w    #4,a7
  514.     move.l    d0,a2
  515. ;Y( attr, &ctx->Ev
  516.     pea    $38.w
  517.     move.l    $8(a5),a1
  518.     lea    $1F2E(a1),a0
  519.     move.l    a0,-(a7)
  520.     move.l    a2,-(a7)
  521.     jsr    _memcpy
  522.     add.w    #$C,a7
  523. ;      newnode = new_attrib_node( GL_EVAL_BIT );
  524.     move.l    #$10000,-(a7)
  525.     jsr    _new_attrib_node
  526.     addq.w    #4,a7
  527.     move.l    d0,a0
  528. ;      newnode->data = attr;
  529.     move.l    a2,4(a0)
  530. ;      newnode->next = head;
  531.     move.l    -$8(a5),$8(a0)
  532. ;      head = newnode;
  533.     move.l    a0,-$8(a5)
  534. L99
  535. ;   if (mask & GL_FOG_BIT) 
  536.     move.l    d2,d0
  537.     and.l    #$80,d0
  538.     beq.b    L101
  539. L100
  540. ;      attr = MALLOC_STRUCT( gl_fog_attrib );
  541.     pea    $26.w
  542.     jsr    _malloc
  543.     addq.w    #4,a7
  544.     move.l    d0,a2
  545. ;CPY( attr, &ctx->
  546.     pea    $26.w
  547.     move.l    $8(a5),a1
  548.     lea    $1F66(a1),a0
  549.     move.l    a0,-(a7)
  550.     move.l    a2,-(a7)
  551.     jsr    _memcpy
  552.     add.w    #$C,a7
  553. ;      newnode = new_attrib_node( GL_FOG_BIT );
  554.     pea    $80.w
  555.     jsr    _new_attrib_node
  556.     addq.w    #4,a7
  557.     move.l    d0,a0
  558. ;      newnode->data = attr;
  559.     move.l    a2,4(a0)
  560. ;      newnode->next = head;
  561.     move.l    -$8(a5),$8(a0)
  562. ;      head = newnode;
  563.     move.l    a0,-$8(a5)
  564. L101
  565. ;   if (mask & GL_HINT_BIT) 
  566.     move.l    d2,d0
  567.     and.l    #$8000,d0
  568.     beq.b    L103
  569. L102
  570. ;      attr = MALLOC_STRUCT( gl_hint_attrib );
  571.     pea    $14.w
  572.     jsr    _malloc
  573.     addq.w    #4,a7
  574.     move.l    d0,a2
  575. ;Y( attr, &ctx->Hi
  576.     pea    $14.w
  577.     move.l    $8(a5),a1
  578.     lea    $1F8C(a1),a0
  579.     move.l    a0,-(a7)
  580.     move.l    a2,-(a7)
  581.     jsr    _memcpy
  582.     add.w    #$C,a7
  583. ;      newnode = new_attrib_node( GL_HINT_BIT );
  584.     move.l    #$8000,-(a7)
  585.     jsr    _new_attrib_node
  586.     addq.w    #4,a7
  587.     move.l    d0,a0
  588. ;      newnode->data = attr;
  589.     move.l    a2,4(a0)
  590. ;      newnode->next = head;
  591.     move.l    -$8(a5),$8(a0)
  592. ;      head = newnode;
  593.     move.l    a0,-$8(a5)
  594. L103
  595. ;   if (mask & GL_LIGHTING_BIT) 
  596.     move.l    d2,d0
  597.     and.l    #$40,d0
  598.     beq.b    L105
  599. L104
  600. ;      attr = MALLOC_STRUCT( gl_light_attrib );
  601.     move.l    #$8E3C,-(a7)
  602.     jsr    _malloc
  603.     addq.w    #4,a7
  604.     move.l    d0,a2
  605. ; attr, &ctx->Ligh
  606.     move.l    #$8E3C,-(a7)
  607.     move.l    $8(a5),a1
  608.     lea    $1FA0(a1),a0
  609.     move.l    a0,-(a7)
  610.     move.l    a2,-(a7)
  611.     jsr    _memcpy
  612.     add.w    #$C,a7
  613. ;      newnode = new_attrib_node( GL_LIGHTING_BIT );
  614.     pea    $40.w
  615.     jsr    _new_attrib_node
  616.     addq.w    #4,a7
  617.     move.l    d0,a0
  618. ;      newnode->data = attr;
  619.     move.l    a2,4(a0)
  620. ;      newnode->next = head;
  621.     move.l    -$8(a5),$8(a0)
  622. ;      head = newnode;
  623.     move.l    a0,-$8(a5)
  624. L105
  625. ;   if (mask & GL_LINE_BIT) 
  626.     move.l    d2,d0
  627.     and.l    #4,d0
  628.     beq.b    L107
  629. L106
  630. ;      attr = MALLOC_STRUCT( gl_line_attrib );
  631.     pea    $C.w
  632.     jsr    _malloc
  633.     addq.w    #4,a7
  634.     move.l    d0,a2
  635. ;Y( attr, &ctx->Li
  636.     pea    $C.w
  637.     move.l    $8(a5),a1
  638.     move.l    a1,a0
  639.     add.l    #$ADDC,a0
  640.     lea    (a0),a0
  641.     move.l    a0,-(a7)
  642.     move.l    a2,-(a7)
  643.     jsr    _memcpy
  644.     add.w    #$C,a7
  645. ;      newnode = new_attrib_node( GL_LINE_BIT );
  646.     pea    4.w
  647.     jsr    _new_attrib_node
  648.     addq.w    #4,a7
  649.     move.l    d0,a0
  650. ;      newnode->data = attr;
  651.     move.l    a2,4(a0)
  652. ;      newnode->next = head;
  653.     move.l    -$8(a5),$8(a0)
  654. ;      head = newnode;
  655.     move.l    a0,-$8(a5)
  656. L107
  657. ;   if (mask & GL_LIST_BIT) 
  658.     move.l    d2,d0
  659.     and.l    #$20000,d0
  660.     beq.b    L109
  661. L108
  662. ;      attr = MALLOC_STRUCT( gl_list_attrib );
  663.     pea    4.w
  664.     jsr    _malloc
  665.     addq.w    #4,a7
  666.     move.l    d0,a2
  667. ;Y( attr, &ctx->Li
  668.     pea    4.w
  669.     move.l    $8(a5),a1
  670.     move.l    a1,a0
  671.     add.l    #$ADE8,a0
  672.     lea    (a0),a0
  673.     move.l    a0,-(a7)
  674.     move.l    a2,-(a7)
  675.     jsr    _memcpy
  676.     add.w    #$C,a7
  677. ;      newnode = new_attrib_node( GL_LIST_BIT );
  678.     move.l    #$20000,-(a7)
  679.     jsr    _new_attrib_node
  680.     addq.w    #4,a7
  681.     move.l    d0,a0
  682. ;      newnode->data = attr;
  683.     move.l    a2,4(a0)
  684. ;      newnode->next = head;
  685.     move.l    -$8(a5),$8(a0)
  686. ;      head = newnode;
  687.     move.l    a0,-$8(a5)
  688. L109
  689. ;   if (mask & GL_PIXEL_MODE_BIT) 
  690.     move.l    d2,d0
  691.     and.l    #$20,d0
  692.     beq.b    L111
  693. L110
  694. ;      attr = MALLOC_STRUCT( gl_pixel_attrib );
  695.     pea    $2866.w
  696.     jsr    _malloc
  697.     addq.w    #4,a7
  698.     move.l    d0,a2
  699. ; attr, &ctx->Pixe
  700.     pea    $2866.w
  701.     move.l    $8(a5),a1
  702.     move.l    a1,a0
  703.     add.l    #$ADEC,a0
  704.     lea    (a0),a0
  705.     move.l    a0,-(a7)
  706.     move.l    a2,-(a7)
  707.     jsr    _memcpy
  708.     add.w    #$C,a7
  709. ;      newnode = new_attrib_node( GL_PIXEL_MODE_BIT );
  710.     pea    $20.w
  711.     jsr    _new_attrib_node
  712.     addq.w    #4,a7
  713.     move.l    d0,a0
  714. ;      newnode->data = attr;
  715.     move.l    a2,4(a0)
  716. ;      newnode->next = head;
  717.     move.l    -$8(a5),$8(a0)
  718. ;      head = newnode;
  719.     move.l    a0,-$8(a5)
  720. L111
  721. ;   if (mask & GL_POINT_BIT) 
  722.     move.l    d2,d0
  723.     and.l    #2,d0
  724.     beq.b    L113
  725. L112
  726. ;      attr = MALLOC_STRUCT( gl_point_attrib );
  727.     pea    $1E.w
  728.     jsr    _malloc
  729.     addq.w    #4,a7
  730.     move.l    d0,a2
  731. ; attr, &ctx->Poin
  732.     pea    $1E.w
  733.     move.l    $8(a5),a1
  734.     move.l    a1,a0
  735.     add.l    #$D652,a0
  736.     lea    (a0),a0
  737.     move.l    a0,-(a7)
  738.     move.l    a2,-(a7)
  739.     jsr    _memcpy
  740.     add.w    #$C,a7
  741. ;      newnode = new_attrib_node( GL_POINT_BIT );
  742.     pea    2.w
  743.     jsr    _new_attrib_node
  744.     addq.w    #4,a7
  745.     move.l    d0,a0
  746. ;      newnode->data = attr;
  747.     move.l    a2,4(a0)
  748. ;      newnode->next = head;
  749.     move.l    -$8(a5),$8(a0)
  750. ;      head = newnode;
  751.     move.l    a0,-$8(a5)
  752. L113
  753. ;   if (mask & GL_POLYGON_BIT) 
  754.     move.l    d2,d0
  755.     and.l    #$8,d0
  756.     beq.b    L115
  757. L114
  758. ;      attr = MALLOC_STRUCT( gl_polygon_attrib );
  759.     pea    $24.w
  760.     jsr    _malloc
  761.     addq.w    #4,a7
  762.     move.l    d0,a2
  763. ;r, &ctx->Polygon,
  764.     pea    $24.w
  765.     move.l    $8(a5),a1
  766.     move.l    a1,a0
  767.     add.l    #$D670,a0
  768.     lea    (a0),a0
  769.     move.l    a0,-(a7)
  770.     move.l    a2,-(a7)
  771.     jsr    _memcpy
  772.     add.w    #$C,a7
  773. ;      newnode = new_attrib_node( GL_POLYGON_BIT );
  774.     pea    $8.w
  775.     jsr    _new_attrib_node
  776.     addq.w    #4,a7
  777.     move.l    d0,a0
  778. ;      newnode->data = attr;
  779.     move.l    a2,4(a0)
  780. ;      newnode->next = head;
  781.     move.l    -$8(a5),$8(a0)
  782. ;      head = newnode;
  783.     move.l    a0,-$8(a5)
  784. L115
  785. ;   if (mask & GL_POLYGON_STIPPLE_BIT) 
  786.     move.l    d2,d0
  787.     and.l    #$10,d0
  788.     beq.b    L117
  789. L116
  790. ;      stipple = (GLuint *) malloc( 32*sizeof(GLuint) );
  791.     pea    $80.w
  792.     jsr    _malloc
  793.     addq.w    #4,a7
  794.     move.l    d0,a2
  795. ;Y( stipple, ctx->
  796.     pea    $80.w
  797.     move.l    $8(a5),a1
  798.     move.l    a1,a0
  799.     add.l    #$D694,a0
  800.     lea    (a0),a0
  801.     move.l    a0,-(a7)
  802.     move.l    a2,-(a7)
  803.     jsr    _memcpy
  804.     add.w    #$C,a7
  805. ;      newnode = new_attrib_node( GL_POLYGON_STIPPLE_BIT );
  806.     pea    $10.w
  807.     jsr    _new_attrib_node
  808.     addq.w    #4,a7
  809.     move.l    d0,a0
  810. ;      newnode->data = stipple;
  811.     move.l    a2,4(a0)
  812. ;      newnode->next = head;
  813.     move.l    -$8(a5),$8(a0)
  814. ;      head = newnode;
  815.     move.l    a0,-$8(a5)
  816. L117
  817. ;   if (mask & GL_SCISSOR_BIT) 
  818.     move.l    d2,d0
  819.     and.l    #$80000,d0
  820.     beq.b    L119
  821. L118
  822. ;      attr = MALLOC_STRUCT( gl_scissor_attrib );
  823.     pea    $12.w
  824.     jsr    _malloc
  825.     addq.w    #4,a7
  826.     move.l    d0,a2
  827. ;r, &ctx->Scissor,
  828.     pea    $12.w
  829.     move.l    $8(a5),a1
  830.     move.l    a1,a0
  831.     add.l    #$D714,a0
  832.     lea    (a0),a0
  833.     move.l    a0,-(a7)
  834.     move.l    a2,-(a7)
  835.     jsr    _memcpy
  836.     add.w    #$C,a7
  837. ;      newnode = new_attrib_node( GL_SCISSOR_BIT );
  838.     move.l    #$80000,-(a7)
  839.     jsr    _new_attrib_node
  840.     addq.w    #4,a7
  841.     move.l    d0,a0
  842. ;      newnode->data = attr;
  843.     move.l    a2,4(a0)
  844. ;      newnode->next = head;
  845.     move.l    -$8(a5),$8(a0)
  846. ;      head = newnode;
  847.     move.l    a0,-$8(a5)
  848. L119
  849. ;   if (mask & GL_STENCIL_BUFFER_BIT) 
  850.     move.l    d2,d0
  851.     and.l    #$400,d0
  852.     beq.b    L121
  853. L120
  854. ;      attr = MALLOC_STRUCT( gl_stencil_attrib );
  855.     pea    $16.w
  856.     jsr    _malloc
  857.     addq.w    #4,a7
  858.     move.l    d0,a2
  859. ;r, &ctx->Stencil,
  860.     pea    $16.w
  861.     move.l    $8(a5),a1
  862.     move.l    a1,a0
  863.     add.l    #$D726,a0
  864.     lea    (a0),a0
  865.     move.l    a0,-(a7)
  866.     move.l    a2,-(a7)
  867.     jsr    _memcpy
  868.     add.w    #$C,a7
  869. ;      newnode = new_attrib_node( GL_STENCIL_BUFFER_BIT );
  870.     pea    $400.w
  871.     jsr    _new_attrib_node
  872.     addq.w    #4,a7
  873.     move.l    d0,a0
  874. ;      newnode->data = attr;
  875.     move.l    a2,4(a0)
  876. ;      newnode->next = head;
  877.     move.l    -$8(a5),$8(a0)
  878. ;      head = newnode;
  879.     move.l    a0,-$8(a5)
  880. L121
  881. ;   if (mask & GL_TEXTURE_BIT) 
  882.     move.l    d2,d0
  883.     and.l    #$40000,d0
  884.     beq.b    L123
  885. L122
  886. ;      attr = MALLOC_STRUCT( gl_texture_attrib );
  887.     pea    $4D6.w
  888.     jsr    _malloc
  889.     addq.w    #4,a7
  890.     move.l    d0,a2
  891. ;r, &ctx->Texture,
  892.     pea    $4D6.w
  893.     move.l    $8(a5),a1
  894.     move.l    a1,a0
  895.     add.l    #$D73C,a0
  896.     lea    (a0),a0
  897.     move.l    a0,-(a7)
  898.     move.l    a2,-(a7)
  899.     jsr    _memcpy
  900.     add.w    #$C,a7
  901. ;      newnode = new_attrib_node( GL_TEXTURE_BIT );
  902.     move.l    #$40000,-(a7)
  903.     jsr    _new_attrib_node
  904.     addq.w    #4,a7
  905.     move.l    d0,a0
  906. ;      newnode->data = attr;
  907.     move.l    a2,4(a0)
  908. ;      newnode->next = head;
  909.     move.l    -$8(a5),$8(a0)
  910. ;      head = newnode;
  911.     move.l    a0,-$8(a5)
  912. L123
  913. ;   if (mask & GL_TRANSFORM_BIT) 
  914.     move.l    d2,d0
  915.     and.l    #$1000,d0
  916.     beq.b    L125
  917. L124
  918. ;      attr = MALLOC_STRUCT( gl_transform_attrib );
  919.     pea    $6C.w
  920.     jsr    _malloc
  921.     addq.w    #4,a7
  922.     move.l    d0,a2
  923. ;ctx->Transform, s
  924.     pea    $6C.w
  925.     move.l    $8(a5),a1
  926.     move.l    a1,a0
  927.     add.l    #$DC12,a0
  928.     lea    (a0),a0
  929.     move.l    a0,-(a7)
  930.     move.l    a2,-(a7)
  931.     jsr    _memcpy
  932.     add.w    #$C,a7
  933. ;      newnode = new_attrib_node( GL_TRANSFORM_BIT );
  934.     pea    $1000.w
  935.     jsr    _new_attrib_node
  936.     addq.w    #4,a7
  937.     move.l    d0,a0
  938. ;      newnode->data = attr;
  939.     move.l    a2,4(a0)
  940. ;      newnode->next = head;
  941.     move.l    -$8(a5),$8(a0)
  942. ;      head = newnode;
  943.     move.l    a0,-$8(a5)
  944. L125
  945. ;   if (mask & GL_VIEWPORT_BIT) 
  946.     and.l    #$800,d2
  947.     beq.b    L127
  948. L126
  949. ;      attr = MALLOC_STRUCT( gl_viewport_attrib );
  950.     pea    $30.w
  951.     jsr    _malloc
  952.     addq.w    #4,a7
  953.     move.l    d0,a2
  954. ; &ctx->Viewport, 
  955.     pea    $30.w
  956.     move.l    $8(a5),a1
  957.     move.l    a1,a0
  958.     add.l    #$DC7E,a0
  959.     lea    (a0),a0
  960.     move.l    a0,-(a7)
  961.     move.l    a2,-(a7)
  962.     jsr    _memcpy
  963.     add.w    #$C,a7
  964. ;      newnode = new_attrib_node( GL_VIEWPORT_BIT );
  965.     pea    $800.w
  966.     jsr    _new_attrib_node
  967.     addq.w    #4,a7
  968.     move.l    d0,a0
  969. ;      newnode->data = attr;
  970.     move.l    a2,4(a0)
  971. ;      newnode->next = head;
  972.     move.l    -$8(a5),$8(a0)
  973. ;      head = newnode;
  974.     move.l    a0,-$8(a5)
  975. L127
  976. ;   ctx->AttribStack[ctx->AttribStackDepth] = head;
  977.     move.l    $8(a5),a1
  978.     lea    $1E24(a1),a0
  979.     move.l    $8(a5),a1
  980.     move.l    $1E20(a1),d0
  981.     lea    0(a0,d0.l*4),a0
  982.     move.l    -$8(a5),(a0)
  983. ;   ctx->AttribStackDepth++;
  984.     move.l    $8(a5),a0
  985.     move.l    $1E20(a0),d0
  986.     addq.l    #1,d0
  987.     move.l    $8(a5),a0
  988.     move.l    d0,$1E20(a0)
  989.     movem.l    (a7)+,d2/d3/a2
  990.     unlk    a5
  991.     rts
  992.  
  993. L76
  994.     dc.b    'glPushAttrib',0
  995.  
  996.     SECTION "_gl_PopAttrib:0",CODE
  997.  
  998.  
  999. ;void gl_PopAttrib( GLcontext* ctx )
  1000.     XDEF    _gl_PopAttrib
  1001. _gl_PopAttrib
  1002. L170    EQU    -$7C
  1003.     link    a5,#L170
  1004.     movem.l    d2/a2,-(a7)
  1005.     move.l    $8(a5),a2
  1006. L131
  1007. ;   if (INSIDE_BEGIN_END(ctx)) 
  1008.     move.l    a2,a0
  1009.     add.l    #$E08A,a0
  1010.     move.l    (a0),d0
  1011.     cmp.l    #$1A00,d0
  1012.     beq.b    L133
  1013. L132
  1014. ;      gl_error( ctx, GL_INVALID_OPERATION, "glPopAttrib" );
  1015.     move.l    #L129,-(a7)
  1016.     pea    $502.w
  1017.     move.l    a2,-(a7)
  1018.     jsr    _gl_error
  1019.     add.w    #$C,a7
  1020.     movem.l    (a7)+,d2/a2
  1021.     unlk    a5
  1022.     rts
  1023. L133
  1024. ;   if (ctx->AttribStackDepth==0) 
  1025.     move.l    $1E20(a2),d0
  1026.     bne.b    L135
  1027. L134
  1028. ;      gl_error( ctx, GL_STACK_UNDERFLOW, "glPopAttrib" );
  1029.     move.l    #L129,-(a7)
  1030.     pea    $504.w
  1031.     move.l    a2,-(a7)
  1032.     jsr    _gl_error
  1033.     add.w    #$C,a7
  1034.     movem.l    (a7)+,d2/a2
  1035.     unlk    a5
  1036.     rts
  1037. L135
  1038. ;   ctx->AttribStackDepth--;
  1039.     move.l    $1E20(a2),d0
  1040.     subq.l    #1,d0
  1041.     move.l    d0,$1E20(a2)
  1042. ;   attr = ctx->AttribStack[ctx->AttribStackDepth];
  1043.     lea    $1E24(a2),a0
  1044.     move.l    $1E20(a2),d0
  1045.     lea    0(a0,d0.l*4),a0
  1046.     move.l    (a0),-4(a5)
  1047. ;   while (attr) 
  1048.     bra    L168
  1049. L136
  1050. ;      switch (attr->kind)
  1051.     move.l    -4(a5),a0
  1052.     move.l    (a0),d0
  1053.     cmp.l    #$400,d0
  1054.     beq    L162
  1055.     bhi    L171
  1056.     cmp.l    #$20,d0
  1057.     beq    L157
  1058.     bhi.b    L172
  1059.     cmp.l    #4,d0
  1060.     beq    L155
  1061.     bhi.b    L173
  1062.     cmp.l    #1,d0
  1063.     beq    L141
  1064.     cmp.l    #2,d0
  1065.     beq    L158
  1066.     bra    L166
  1067. L173
  1068.     cmp.l    #$8,d0
  1069.     beq    L159
  1070.     cmp.l    #$10,d0
  1071.     beq    L160
  1072.     bra    L166
  1073. L172
  1074.     cmp.l    #$100,d0
  1075.     beq    L142
  1076.     bhi.b    L174
  1077.     cmp.l    #$40,d0
  1078.     beq    L154
  1079.     cmp.l    #$80,d0
  1080.     beq    L152
  1081.     bra    L166
  1082. L174
  1083.     cmp.l    #$200,d0
  1084.     beq.b    L137
  1085.     bra    L166
  1086. L171
  1087.     cmp.l    #$8000,d0
  1088.     beq    L153
  1089.     bhi.b    L175
  1090.     cmp.l    #$2000,d0
  1091.     beq    L143
  1092.     bhi.b    L176
  1093.     cmp.l    #$800,d0
  1094.     beq    L165
  1095.     cmp.l    #$1000,d0
  1096.     beq    L163
  1097.     bra    L166
  1098. L176
  1099.     cmp.l    #$4000,d0
  1100.     beq.b    L138
  1101.     bra    L166
  1102. L175
  1103.     cmp.l    #$40000,d0
  1104.     beq    L164
  1105.     bhi.b    L177
  1106.     cmp.l    #$10000,d0
  1107.     beq    L151
  1108.     cmp.l    #$20000,d0
  1109.     beq    L156
  1110.     bra    L166
  1111. L177
  1112.     cmp.l    #$80000,d0
  1113.     beq    L161
  1114.     bra    L166
  1115. ;     
  1116. L137
  1117. ;>Accum, attr->dat
  1118.     pea    $10.w
  1119.     move.l    -4(a5),a1
  1120.     move.l    4(a1),a0
  1121.     move.l    a0,-(a7)
  1122.     lea    $1E64(a2),a0
  1123.     move.l    a0,-(a7)
  1124.     jsr    _memcpy
  1125.     add.w    #$C,a7
  1126. ;        
  1127.     bra    L167
  1128. L138
  1129. ;        oldDrawBuffer = ctx->Color.DrawBuffer;
  1130.     lea    $1E74(a2),a0
  1131.     move.l    $1E(a0),d2
  1132. ;            sizeof(struct gl_co
  1133.     pea    $52.w
  1134.     move.l    -4(a5),a1
  1135.     move.l    4(a1),a0
  1136.     move.l    a0,-(a7)
  1137.     lea    $1E74(a2),a0
  1138.     move.l    a0,-(a7)
  1139.     jsr    _memcpy
  1140.     add.w    #$C,a7
  1141. ;        if (ctx->Color.DrawBuffer != oldDrawBuffer) 
  1142.     lea    $1E74(a2),a0
  1143.     move.l    $1E(a0),d0
  1144.     cmp.l    d2,d0
  1145.     beq.b    L140
  1146. L139
  1147. ;           gl_DrawBuffer(ctx, ctx->Color.DrawBuffer);
  1148.     lea    $1E74(a2),a0
  1149.     move.l    $1E(a0),d0
  1150.     move.l    d0,-(a7)
  1151.     move.l    a2,-(a7)
  1152.     jsr    _gl_DrawBuffer
  1153.     addq.w    #$8,a7
  1154. L140
  1155. ;        
  1156.     bra    L167
  1157. L141
  1158. ;            sizeof(struct gl_curren
  1159.     pea    $5E.w
  1160.     move.l    -4(a5),a1
  1161.     move.l    4(a1),a0
  1162.     move.l    a0,-(a7)
  1163.     lea    $1EC6(a2),a0
  1164.     move.l    a0,-(a7)
  1165.     jsr    _memcpy
  1166.     add.w    #$C,a7
  1167. ;        
  1168.     bra    L167
  1169. L142
  1170. ;            sizeof(struct gl_de
  1171.     pea    $A.w
  1172.     move.l    -4(a5),a1
  1173.     move.l    4(a1),a0
  1174.     move.l    a0,-(a7)
  1175.     lea    $1F24(a2),a0
  1176.     move.l    a0,-(a7)
  1177.     jsr    _memcpy
  1178.     add.w    #$C,a7
  1179. ;        
  1180.     bra    L167
  1181. L143
  1182. ;        enable = (struct gl_enable_attrib *) attr->data;
  1183.     move.l    -4(a5),a1
  1184.     move.l    4(a1),a0
  1185. ;        ctx->Color.AlphaEnabled = enable->AlphaTest;
  1186.     move.b    (a0),d0
  1187.     move.b    d0,$1E96(a2)
  1188. ;        ctx->Transform.Normalize = enable->AutoNormal;
  1189.     move.b    1(a0),d0
  1190.     move.l    a2,a1
  1191.     add.l    #$DC7D,a1
  1192.     move.b    d0,(a1)
  1193. ;        ctx->Color.BlendEnabled = enable->Blend;
  1194.     move.b    2(a0),d0
  1195.     move.b    d0,$1EA1(a2)
  1196. ;        for (i=0;
  1197.     moveq    #0,d0
  1198.     bra.b    L145
  1199. L144
  1200. ;           ctx->Transform.ClipEnabled[i] = enable->ClipPlane[i];
  1201.     lea    3(a0),a1
  1202.     add.l    d0,a1
  1203.     move.b    (a1),d1
  1204.     move.l    a2,a1
  1205.     add.l    #$DC76,a1
  1206.     lea    (a1),a1
  1207.     add.l    d0,a1
  1208.     move.b    d1,(a1)
  1209.     addq.l    #1,d0
  1210. L145
  1211.     cmp.l    #6,d0
  1212.     blo.b    L144
  1213. L146
  1214. ;        ctx->Light.ColorMaterialEnabled = enable->ColorMaterial;
  1215.     move.b    $9(a0),d0
  1216.     move.l    a2,a1
  1217.     add.l    #$ADB4,a1
  1218.     move.b    d0,(a1)
  1219. ;        ctx->Polygon.CullFlag = enable->CullFace;
  1220.     move.b    $A(a0),d0
  1221.     move.l    a2,a1
  1222.     add.l    #$D67D,a1
  1223.     move.b    d0,(a1)
  1224. ;        ctx->Depth.Test = enable->DepthTest;
  1225.     move.b    $B(a0),d0
  1226.     move.b    d0,$1F2C(a2)
  1227. ;        ctx->Color.DitherFlag = enable->Dither;
  1228.     move.b    $C(a0),d0
  1229.     move.b    d0,$1EC5(a2)
  1230. ;        ctx->Fog.Enabled = enable->Fog;
  1231.     move.b    $D(a0),d0
  1232.     move.b    d0,$1F66(a2)
  1233. ;        ctx->Light.Enabled = enable->Lighting;
  1234.     move.b    $16(a0),d0
  1235.     move.l    a2,a1
  1236.     add.l    #$ADA2,a1
  1237.     move.b    d0,(a1)
  1238. ;        ctx->Line.SmoothFlag = enable->LineSmooth;
  1239.     move.b    $17(a0),d0
  1240.     move.l    a2,a1
  1241.     add.l    #$ADDC,a1
  1242.     move.b    d0,(a1)
  1243. ;        ctx->Line.StippleFlag = enable->LineStipple;
  1244.     move.b    $18(a0),d0
  1245.     move.l    a2,a1
  1246.     add.l    #$ADDD,a1
  1247.     move.b    d0,(a1)
  1248. ;        ctx->Color.IndexLogicOpEnabled = enable->IndexLogicOp;
  1249.     move.b    $19(a0),d0
  1250.     move.b    d0,$1EC2(a2)
  1251. ;        ctx->Color.ColorLogicOpEnabled = enable->ColorLogicOp;
  1252.     move.b    $1A(a0),d0
  1253.     move.b    d0,$1EC3(a2)
  1254. ;        ctx->Eval.Map1Color4 = enable->Map1Color4;
  1255.     move.b    $1B(a0),d0
  1256.     move.b    d0,$1F2E(a2)
  1257. ;        ctx->Eval.Map1Index = enable->Map1Index;
  1258.     move.b    $1C(a0),d0
  1259.     move.b    d0,$1F2F(a2)
  1260. ;        ctx->Eval.Map1Normal = enable->Map1Normal;
  1261.     move.b    $1D(a0),d0
  1262.     move.b    d0,$1F30(a2)
  1263. ;        ctx->Eval.Map1TextureCoord1 = enable->Map1TextureCoord1;
  1264.     move.b    $1E(a0),d0
  1265.     move.b    d0,$1F31(a2)
  1266. ;        ctx->Eval.Map1TextureCoord2 = enable->Map1TextureCoord2;
  1267.     move.b    $1F(a0),d0
  1268.     move.b    d0,$1F32(a2)
  1269. ;        ctx->Eval.Map1TextureCoord3 = enable->Map1TextureCoord3;
  1270.     move.b    $20(a0),d0
  1271.     move.b    d0,$1F33(a2)
  1272. ;        ctx->Eval.Map1TextureCoord4 = enable->Map1TextureCoord4;
  1273.     move.b    $21(a0),d0
  1274.     move.b    d0,$1F34(a2)
  1275. ;        ctx->Eval.Map1Vertex3 = enable->Map1Vertex3;
  1276.     move.b    $22(a0),d0
  1277.     move.b    d0,$1F35(a2)
  1278. ;        ctx->Eval.Map1Vertex4 = enable->Map1Vertex4;
  1279.     move.b    $23(a0),d0
  1280.     move.b    d0,$1F36(a2)
  1281. ;        ctx->Eval.Map2Color4 = enable->Map2Color4;
  1282.     move.b    $24(a0),d0
  1283.     move.b    d0,$1F37(a2)
  1284. ;        ctx->Eval.Map2Index = enable->Map2Index;
  1285.     move.b    $25(a0),d0
  1286.     move.b    d0,$1F38(a2)
  1287. ;        ctx->Eval.Map2Normal = enable->Map2Normal;
  1288.     move.b    $26(a0),d0
  1289.     move.b    d0,$1F39(a2)
  1290. ;        ctx->Eval.Map2TextureCoord1 = enable->Map2TextureCoord1;
  1291.     move.b    $27(a0),d0
  1292.     move.b    d0,$1F3A(a2)
  1293. ;        ctx->Eval.Map2TextureCoord2 = enable->Map2TextureCoord2;
  1294.     move.b    $28(a0),d0
  1295.     move.b    d0,$1F3B(a2)
  1296. ;        ctx->Eval.Map2TextureCoord3 = enable->Map2TextureCoord3;
  1297.     move.b    $29(a0),d0
  1298.     move.b    d0,$1F3C(a2)
  1299. ;        ctx->Eval.Map2TextureCoord4 = enable->Map2TextureCoord4;
  1300.     move.b    $2A(a0),d0
  1301.     move.b    d0,$1F3D(a2)
  1302. ;        ctx->Eval.Map2Vertex3 = enable->Map2Vertex3;
  1303.     move.b    $2B(a0),d0
  1304.     move.b    d0,$1F3E(a2)
  1305. ;        ctx->Eval.Map2Vertex4 = enable->Map2Vertex4;
  1306.     move.b    $2C(a0),d0
  1307.     move.b    d0,$1F3F(a2)
  1308. ;        ctx->Transform.Normalize = enable->Normalize;
  1309.     move.b    $2D(a0),d0
  1310.     move.l    a2,a1
  1311.     add.l    #$DC7D,a1
  1312.     move.b    d0,(a1)
  1313. ;        ctx->Point.SmoothFlag = enable->PointSmooth;
  1314.     move.b    $2E(a0),d0
  1315.     move.l    a2,a1
  1316.     add.l    #$D652,a1
  1317.     move.b    d0,(a1)
  1318. ;        ctx->Polygon.OffsetPoint = enable->PolygonOffsetPoint;
  1319.     move.b    $2F(a0),d0
  1320.     move.l    a2,a1
  1321.     add.l    #$D690,a1
  1322.     move.b    d0,(a1)
  1323. ;        ctx->Polygon.OffsetLine = enable->PolygonOffsetLine;
  1324.     move.b    $30(a0),d0
  1325.     move.l    a2,a1
  1326.     add.l    #$D691,a1
  1327.     move.b    d0,(a1)
  1328. ;        ctx->Polygon.OffsetFill = enable->PolygonOffsetFill;
  1329.     move.b    $31(a0),d0
  1330.     move.l    a2,a1
  1331.     add.l    #$D692,a1
  1332.     move.b    d0,(a1)
  1333. ;        ctx->Polygon.OffsetAny = ctx->Polygon.OffsetPoint ||
  1334.     moveq    #1,d0
  1335.     move.l    a2,a1
  1336.     add.l    #$D670,a1
  1337.     lea    (a1),a1
  1338.     move.b    $20(a1),d1
  1339.     bne.b    L150
  1340. L147
  1341.     move.l    a2,a1
  1342.     add.l    #$D670,a1
  1343.     lea    (a1),a1
  1344.     move.b    $21(a1),d1
  1345.     bne.b    L150
  1346. L148
  1347.     move.l    a2,a1
  1348.     add.l    #$D670,a1
  1349.     lea    (a1),a1
  1350.     move.b    $22(a1),d1
  1351.     bne.b    L150
  1352. L149
  1353.     moveq    #0,d0
  1354. L150
  1355.     move.l    a2,a1
  1356.     add.l    #$D693,a1
  1357.     move.b    d0,(a1)
  1358. ;        ctx->Polygon.SmoothFlag = enable->PolygonSmooth;
  1359.     move.b    $32(a0),d0
  1360.     move.l    a2,a1
  1361.     add.l    #$D686,a1
  1362.     move.b    d0,(a1)
  1363. ;        ctx->Polygon.StippleFlag = enable->PolygonStipple;
  1364.     move.b    $33(a0),d0
  1365.     move.l    a2,a1
  1366.     add.l    #$D687,a1
  1367.     move.b    d0,(a1)
  1368. ;        ctx->Scissor.Enabled = enable->Scissor;
  1369.     move.b    $34(a0),d0
  1370.     move.l    a2,a1
  1371.     add.l    #$D714,a1
  1372.     move.b    d0,(a1)
  1373. ;        ctx->Stencil.Enabled = enable->Stencil;
  1374.     move.b    $35(a0),d0
  1375.     move.l    a2,a1
  1376.     add.l    #$D726,a1
  1377.     move.b    d0,(a1)
  1378. ;        ctx->Texture.Enabled = enable->Texture;
  1379.     move.l    $36(a0),d0
  1380.     move.l    a2,a1
  1381.     add.l    #$D73C,a1
  1382.     move.l    d0,(a1)
  1383. ;        ctx->Texture.TexGenEnabled = enable->TexGen;
  1384.     move.l    $3A(a0),d0
  1385.     move.l    a2,a0
  1386.     add.l    #$D754,a0
  1387.     move.l    d0,(a0)
  1388. ;        
  1389.     bra    L167
  1390. L151
  1391. ;x->Eval, attr->da
  1392.     pea    $38.w
  1393.     move.l    -4(a5),a1
  1394.     move.l    4(a1),a0
  1395.     move.l    a0,-(a7)
  1396.     lea    $1F2E(a2),a0
  1397.     move.l    a0,-(a7)
  1398.     jsr    _memcpy
  1399.     add.w    #$C,a7
  1400. ;        
  1401.     bra    L167
  1402. L152
  1403. ;ctx->Fog, attr->d
  1404.     pea    $26.w
  1405.     move.l    -4(a5),a1
  1406.     move.l    4(a1),a0
  1407.     move.l    a0,-(a7)
  1408.     lea    $1F66(a2),a0
  1409.     move.l    a0,-(a7)
  1410.     jsr    _memcpy
  1411.     add.w    #$C,a7
  1412. ;        
  1413.     bra    L167
  1414. L153
  1415. ;x->Hint, attr->da
  1416.     pea    $14.w
  1417.     move.l    -4(a5),a1
  1418.     move.l    4(a1),a0
  1419.     move.l    a0,-(a7)
  1420.     lea    $1F8C(a2),a0
  1421.     move.l    a0,-(a7)
  1422.     jsr    _memcpy
  1423.     add.w    #$C,a7
  1424. ;        
  1425.     bra    L167
  1426. L154
  1427. ;>Light, attr->dat
  1428.     move.l    #$8E3C,-(a7)
  1429.     move.l    -4(a5),a1
  1430.     move.l    4(a1),a0
  1431.     move.l    a0,-(a7)
  1432.     lea    $1FA0(a2),a0
  1433.     move.l    a0,-(a7)
  1434.     jsr    _memcpy
  1435.     add.w    #$C,a7
  1436. ;        
  1437.     bra    L167
  1438. L155
  1439. ;x->Line, attr->da
  1440.     pea    $C.w
  1441.     move.l    -4(a5),a1
  1442.     move.l    4(a1),a0
  1443.     move.l    a0,-(a7)
  1444.     move.l    a2,a0
  1445.     add.l    #$ADDC,a0
  1446.     lea    (a0),a0
  1447.     move.l    a0,-(a7)
  1448.     jsr    _memcpy
  1449.     add.w    #$C,a7
  1450. ;        
  1451.     bra    L167
  1452. L156
  1453. ;x->List, attr->da
  1454.     pea    4.w
  1455.     move.l    -4(a5),a1
  1456.     move.l    4(a1),a0
  1457.     move.l    a0,-(a7)
  1458.     move.l    a2,a0
  1459.     add.l    #$ADE8,a0
  1460.     lea    (a0),a0
  1461.     move.l    a0,-(a7)
  1462.     jsr    _memcpy
  1463.     add.w    #$C,a7
  1464. ;        
  1465.     bra    L167
  1466. L157
  1467. ;>Pixel, attr->dat
  1468.     pea    $2866.w
  1469.     move.l    -4(a5),a1
  1470.     move.l    4(a1),a0
  1471.     move.l    a0,-(a7)
  1472.     move.l    a2,a0
  1473.     add.l    #$ADEC,a0
  1474.     lea    (a0),a0
  1475.     move.l    a0,-(a7)
  1476.     jsr    _memcpy
  1477.     add.w    #$C,a7
  1478. ;        
  1479.     bra    L167
  1480. L158
  1481. ;>Point, attr->dat
  1482.     pea    $1E.w
  1483.     move.l    -4(a5),a1
  1484.     move.l    4(a1),a0
  1485.     move.l    a0,-(a7)
  1486.     move.l    a2,a0
  1487.     add.l    #$D652,a0
  1488.     lea    (a0),a0
  1489.     move.l    a0,-(a7)
  1490.     jsr    _memcpy
  1491.     add.w    #$C,a7
  1492. ;        
  1493.     bra    L167
  1494. L159
  1495. ;            sizeof(struct gl_polygo
  1496.     pea    $24.w
  1497.     move.l    -4(a5),a1
  1498.     move.l    4(a1),a0
  1499.     move.l    a0,-(a7)
  1500.     move.l    a2,a0
  1501.     add.l    #$D670,a0
  1502.     lea    (a0),a0
  1503.     move.l    a0,-(a7)
  1504.     jsr    _memcpy
  1505.     add.w    #$C,a7
  1506. ;        
  1507.     bra    L167
  1508. L160
  1509. ;ctx->PolygonStipp
  1510.     pea    $80.w
  1511.     move.l    -4(a5),a1
  1512.     move.l    4(a1),a0
  1513.     move.l    a0,-(a7)
  1514.     move.l    a2,a0
  1515.     add.l    #$D694,a0
  1516.     lea    (a0),a0
  1517.     move.l    a0,-(a7)
  1518.     jsr    _memcpy
  1519.     add.w    #$C,a7
  1520. ;        
  1521.     bra    L167
  1522. L161
  1523. ;            sizeof(struct gl_scisso
  1524.     pea    $12.w
  1525.     move.l    -4(a5),a1
  1526.     move.l    4(a1),a0
  1527.     move.l    a0,-(a7)
  1528.     move.l    a2,a0
  1529.     add.l    #$D714,a0
  1530.     lea    (a0),a0
  1531.     move.l    a0,-(a7)
  1532.     jsr    _memcpy
  1533.     add.w    #$C,a7
  1534. ;        
  1535.     bra    L167
  1536. L162
  1537. ;            sizeof(struct gl_stenci
  1538.     pea    $16.w
  1539.     move.l    -4(a5),a1
  1540.     move.l    4(a1),a0
  1541.     move.l    a0,-(a7)
  1542.     move.l    a2,a0
  1543.     add.l    #$D726,a0
  1544.     lea    (a0),a0
  1545.     move.l    a0,-(a7)
  1546.     jsr    _memcpy
  1547.     add.w    #$C,a7
  1548. ;        
  1549.     bra    L167
  1550. L163
  1551. ;            sizeof(struct gl_tran
  1552.     pea    $6C.w
  1553.     move.l    -4(a5),a1
  1554.     move.l    4(a1),a0
  1555.     move.l    a0,-(a7)
  1556.     move.l    a2,a0
  1557.     add.l    #$DC12,a0
  1558.     lea    (a0),a0
  1559.     move.l    a0,-(a7)
  1560.     jsr    _memcpy
  1561.     add.w    #$C,a7
  1562. ;        
  1563.     bra.b    L167
  1564. L164
  1565. ;            sizeof(struct gl_textur
  1566.     pea    $4D6.w
  1567.     move.l    -4(a5),a1
  1568.     move.l    4(a1),a0
  1569.     move.l    a0,-(a7)
  1570.     move.l    a2,a0
  1571.     add.l    #$D73C,a0
  1572.     lea    (a0),a0
  1573.     move.l    a0,-(a7)
  1574.     jsr    _memcpy
  1575.     add.w    #$C,a7
  1576. ;        
  1577.     bra.b    L167
  1578. L165
  1579. ;            sizeof(struct gl_viewp
  1580.     pea    $30.w
  1581.     move.l    -4(a5),a1
  1582.     move.l    4(a1),a0
  1583.     move.l    a0,-(a7)
  1584.     move.l    a2,a0
  1585.     add.l    #$DC7E,a0
  1586.     lea    (a0),a0
  1587.     move.l    a0,-(a7)
  1588.     jsr    _memcpy
  1589.     add.w    #$C,a7
  1590. ;        
  1591.     bra.b    L167
  1592. L166
  1593. ;        gl_problem( ctx, "Bad attrib flag in PopAttrib");
  1594.     move.l    #L130,-(a7)
  1595.     move.l    a2,-(a7)
  1596.     jsr    _gl_problem
  1597.     addq.w    #$8,a7
  1598. ;        
  1599. L167
  1600. ;      next = attr->next;
  1601.     move.l    -4(a5),a0
  1602.     move.l    $8(a0),-$8(a5)
  1603. ;      free( (void *) attr->data );
  1604.     move.l    -4(a5),a1
  1605.     move.l    4(a1),a0
  1606.     move.l    a0,-(a7)
  1607.     jsr    _free
  1608.     addq.w    #4,a7
  1609. ;      free( (void *) attr );
  1610.     move.l    -4(a5),-(a7)
  1611.     jsr    _free
  1612.     addq.w    #4,a7
  1613. ;      attr = next;
  1614.     move.l    -$8(a5),-4(a5)
  1615. L168
  1616.     tst.l    -4(a5)
  1617.     bne    L136
  1618. L169
  1619. ;   ctx->NewState = NEW_ALL;
  1620.     move.l    a2,a0
  1621.     add.l    #$E082,a0
  1622.     move.l    #$F,(a0)
  1623. ;    i++;
  1624.     movem.l    (a7)+,d2/a2
  1625.     unlk    a5
  1626.     rts
  1627.  
  1628. L130
  1629.     dc.b    'Bad attrib flag in PopAttrib',0
  1630. L129
  1631.     dc.b    'glPopAttrib',0
  1632.  
  1633.     SECTION "_gl_PushClientAttrib:0",CODE
  1634.  
  1635.  
  1636. ;void gl_PushClientAttrib( GLcontext *ctx, GLbitfield mask )
  1637.     XDEF    _gl_PushClientAttrib
  1638. _gl_PushClientAttrib
  1639. L188    EQU    -$18
  1640.     link    a5,#L188
  1641.     movem.l    d2/a2,-(a7)
  1642.     move.l    $C(a5),d2
  1643. L179
  1644. ;   if (INSIDE_BEGIN_END(ctx)) 
  1645.     move.l    $8(a5),a0
  1646.     add.l    #$E08A,a0
  1647.     move.l    (a0),d0
  1648.     cmp.l    #$1A00,d0
  1649.     beq.b    L181
  1650. L180
  1651. ;      gl_error( ctx, GL_INVALID_OPERATION, "glPushClientAttrib
  1652.     move.l    #L178,-(a7)
  1653.     pea    $502.w
  1654.     move.l    $8(a5),-(a7)
  1655.     jsr    _gl_error
  1656.     add.w    #$C,a7
  1657.     movem.l    (a7)+,d2/a2
  1658.     unlk    a5
  1659.     rts
  1660. L181
  1661. ;   if (ctx->ClientAttribStackDepth>=MAX_CLIENT_ATTRIB_STACK_DEPTH)
  1662.     move.l    $8(a5),a0
  1663.     add.l    #$DCAE,a0
  1664.     move.l    (a0),d0
  1665.     cmp.l    #$10,d0
  1666.     blo.b    L183
  1667. L182
  1668. ;      gl_error( ctx, GL_STACK_OVERFLOW, "glPushClientAttrib" );
  1669.     move.l    #L178,-(a7)
  1670.     pea    $503.w
  1671.     move.l    $8(a5),-(a7)
  1672.     jsr    _gl_error
  1673.     add.w    #$C,a7
  1674.     movem.l    (a7)+,d2/a2
  1675.     unlk    a5
  1676.     rts
  1677. L183
  1678. ;   head = NULL;
  1679.     clr.l    -$8(a5)
  1680. ;   if (mask & GL_CLIENT_PIXEL_STORE_BIT) 
  1681.     move.l    d2,d0
  1682.     and.l    #1,d0
  1683.     beq    L185
  1684. L184
  1685. ;      attr = MALLOC_STRUCT( gl_pixelstore_attrib );
  1686.     pea    $1A.w
  1687.     jsr    _malloc
  1688.     addq.w    #4,a7
  1689.     move.l    d0,a2
  1690. ;r, &ctx->Pack, si
  1691.     pea    $1A.w
  1692.     move.l    $8(a5),a1
  1693.     move.l    a1,a0
  1694.     add.l    #$DD66,a0
  1695.     lea    (a0),a0
  1696.     move.l    a0,-(a7)
  1697.     move.l    a2,-(a7)
  1698.     jsr    _memcpy
  1699.     add.w    #$C,a7
  1700. ;      newnode = new_attrib_node( GL_CLIENT_PACK_BIT );
  1701.     move.l    #$100000,-(a7)
  1702.     jsr    _new_attrib_node
  1703.     addq.w    #4,a7
  1704.     move.l    d0,a0
  1705. ;      newnode->data = attr;
  1706.     move.l    a2,4(a0)
  1707. ;      newnode->next = head;
  1708.     move.l    -$8(a5),$8(a0)
  1709. ;      head = newnode;
  1710.     move.l    a0,-$8(a5)
  1711. ;      attr = MALLOC_STRUCT( gl_pixelstore_attrib );
  1712.     pea    $1A.w
  1713.     jsr    _malloc
  1714.     addq.w    #4,a7
  1715.     move.l    d0,a2
  1716. ; &ctx->Unpack, si
  1717.     pea    $1A.w
  1718.     move.l    $8(a5),a1
  1719.     move.l    a1,a0
  1720.     add.l    #$DD80,a0
  1721.     lea    (a0),a0
  1722.     move.l    a0,-(a7)
  1723.     move.l    a2,-(a7)
  1724.     jsr    _memcpy
  1725.     add.w    #$C,a7
  1726. ;      newnode = new_attrib_node( GL_CLIENT_UNPACK_BIT );
  1727.     move.l    #$200000,-(a7)
  1728.     jsr    _new_attrib_node
  1729.     addq.w    #4,a7
  1730.     move.l    d0,a0
  1731. ;      newnode->data = attr;
  1732.     move.l    a2,4(a0)
  1733. ;      newnode->next = head;
  1734.     move.l    -$8(a5),$8(a0)
  1735. ;      head = newnode;
  1736.     move.l    a0,-$8(a5)
  1737. L185
  1738. ;   if (mask & GL_CLIENT_VERTEX_ARRAY_BIT) 
  1739.     and.l    #2,d2
  1740.     beq.b    L187
  1741. L186
  1742. ;      attr = MALLOC_STRUCT( gl_array_attrib );
  1743.     pea    $74.w
  1744.     jsr    _malloc
  1745.     addq.w    #4,a7
  1746.     move.l    d0,a2
  1747. ; attr, &ctx->Arra
  1748.     pea    $74.w
  1749.     move.l    $8(a5),a1
  1750.     move.l    a1,a0
  1751.     add.l    #$DCF2,a0
  1752.     lea    (a0),a0
  1753.     move.l    a0,-(a7)
  1754.     move.l    a2,-(a7)
  1755.     jsr    _memcpy
  1756.     add.w    #$C,a7
  1757. ;      newnode = new_attrib_node( GL_CLIENT_VERTEX_ARRAY_BIT );
  1758.     pea    2.w
  1759.     jsr    _new_attrib_node
  1760.     addq.w    #4,a7
  1761.     move.l    d0,a0
  1762. ;      newnode->data = attr;
  1763.     move.l    a2,4(a0)
  1764. ;      newnode->next = head;
  1765.     move.l    -$8(a5),$8(a0)
  1766. ;      head = newnode;
  1767.     move.l    a0,-$8(a5)
  1768. L187
  1769. ;   ctx->ClientAttribStack[ctx->ClientAttribStackDepth] = head;
  1770.     move.l    $8(a5),a1
  1771.     move.l    a1,a0
  1772.     add.l    #$DCB2,a0
  1773.     lea    (a0),a0
  1774.     move.l    $8(a5),a1
  1775.     add.l    #$DCAE,a1
  1776.     move.l    (a1),d0
  1777.     lea    0(a0,d0.l*4),a0
  1778.     move.l    -$8(a5),(a0)
  1779. ;   ctx->ClientAttribStackDepth++;
  1780.     move.l    $8(a5),a0
  1781.     add.l    #$DCAE,a0
  1782.     move.l    (a0),d0
  1783.     addq.l    #1,d0
  1784.     move.l    $8(a5),a0
  1785.     add.l    #$DCAE,a0
  1786.     move.l    d0,(a0)
  1787.     movem.l    (a7)+,d2/a2
  1788.     unlk    a5
  1789.     rts
  1790.  
  1791. L178
  1792.     dc.b    'glPushClientAttrib',0
  1793.  
  1794.     SECTION "_gl_PopClientAttrib:0",CODE
  1795.  
  1796.  
  1797. ;void gl_PopClientAttrib( GLcontext *ctx )
  1798.     XDEF    _gl_PopClientAttrib
  1799. _gl_PopClientAttrib
  1800. L204    EQU    -$1C
  1801.     link    a5,#L204
  1802.     move.l    a2,-(a7)
  1803. L191
  1804. ;   if (INSIDE_BEGIN_END(ctx)) 
  1805.     move.l    $8(a5),a0
  1806.     add.l    #$E08A,a0
  1807.     move.l    (a0),d0
  1808.     cmp.l    #$1A00,d0
  1809.     beq.b    L193
  1810. L192
  1811. ;      gl_error( ctx, GL_INVALID_OPERATION, "glPopClientAttrib"
  1812.     move.l    #L189,-(a7)
  1813.     pea    $502.w
  1814.     move.l    $8(a5),-(a7)
  1815.     jsr    _gl_error
  1816.     add.w    #$C,a7
  1817.     move.l    (a7)+,a2
  1818.     unlk    a5
  1819.     rts
  1820. L193
  1821. ;   if (ctx->ClientAttribStackDepth==0) 
  1822.     move.l    $8(a5),a0
  1823.     add.l    #$DCAE,a0
  1824.     move.l    (a0),d0
  1825.     bne.b    L195
  1826. L194
  1827. ;      gl_error( ctx, GL_STACK_UNDERFLOW, "glPopClientAttrib" );
  1828.     move.l    #L189,-(a7)
  1829.     pea    $504.w
  1830.     move.l    $8(a5),-(a7)
  1831.     jsr    _gl_error
  1832.     add.w    #$C,a7
  1833.     move.l    (a7)+,a2
  1834.     unlk    a5
  1835.     rts
  1836. L195
  1837. ;   ctx->ClientAttribStackDepth--;
  1838.     move.l    $8(a5),a0
  1839.     add.l    #$DCAE,a0
  1840.     move.l    (a0),d0
  1841.     subq.l    #1,d0
  1842.     move.l    $8(a5),a0
  1843.     add.l    #$DCAE,a0
  1844.     move.l    d0,(a0)
  1845. ;   attr = ctx->ClientAttribStack[ctx->ClientAttribStackDepth];
  1846.     move.l    $8(a5),a1
  1847.     move.l    a1,a0
  1848.     add.l    #$DCB2,a0
  1849.     lea    (a0),a0
  1850.     move.l    $8(a5),a1
  1851.     add.l    #$DCAE,a1
  1852.     move.l    (a1),d0
  1853.     lea    0(a0,d0.l*4),a0
  1854.     move.l    (a0),a2
  1855. ;   while (attr) 
  1856.     bra    L202
  1857. L196
  1858. ;      switch (attr->kind)
  1859.     move.l    (a2),d0
  1860.     cmp.l    #$100000,d0
  1861.     beq.b    L197
  1862.     bhi.b    L205
  1863.     cmp.l    #2,d0
  1864.     beq.b    L199
  1865.     bra    L200
  1866. L205
  1867.     cmp.l    #$200000,d0
  1868.     beq.b    L198
  1869.     bra.b    L200
  1870. ;     
  1871. L197
  1872. ;            sizeof(struct gl_pix
  1873.     pea    $1A.w
  1874.     move.l    4(a2),a0
  1875.     move.l    a0,-(a7)
  1876.     move.l    $8(a5),a1
  1877.     move.l    a1,a0
  1878.     add.l    #$DD66,a0
  1879.     lea    (a0),a0
  1880.     move.l    a0,-(a7)
  1881.     jsr    _memcpy
  1882.     add.w    #$C,a7
  1883. ;        
  1884.     bra.b    L201
  1885. L198
  1886. ;            sizeof(struct gl_pix
  1887.     pea    $1A.w
  1888.     move.l    4(a2),a0
  1889.     move.l    a0,-(a7)
  1890.     move.l    $8(a5),a1
  1891.     move.l    a1,a0
  1892.     add.l    #$DD80,a0
  1893.     lea    (a0),a0
  1894.     move.l    a0,-(a7)
  1895.     jsr    _memcpy
  1896.     add.w    #$C,a7
  1897. ;        
  1898.     bra.b    L201
  1899. L199
  1900. ;            sizeof(struct gl_array_at
  1901.     pea    $74.w
  1902.     move.l    4(a2),a0
  1903.     move.l    a0,-(a7)
  1904.     move.l    $8(a5),a1
  1905.     move.l    a1,a0
  1906.     add.l    #$DCF2,a0
  1907.     lea    (a0),a0
  1908.     move.l    a0,-(a7)
  1909.     jsr    _memcpy
  1910.     add.w    #$C,a7
  1911. ;        
  1912.     bra.b    L201
  1913. L200
  1914. ;        gl_problem( ctx, "Bad attrib flag in PopClientAttrib");
  1915.     move.l    #L190,-(a7)
  1916.     move.l    $8(a5),-(a7)
  1917.     jsr    _gl_problem
  1918.     addq.w    #$8,a7
  1919. ;        
  1920. L201
  1921. ;      next = attr->next;
  1922.     move.l    $8(a2),-$8(a5)
  1923. ;      free( (void *) attr->data );
  1924.     move.l    4(a2),a0
  1925.     move.l    a0,-(a7)
  1926.     jsr    _free
  1927.     addq.w    #4,a7
  1928. ;      free( (void *) attr );
  1929.     move.l    a2,-(a7)
  1930.     jsr    _free
  1931.     addq.w    #4,a7
  1932. ;      attr = next;
  1933.     move.l    -$8(a5),a2
  1934. L202
  1935.     cmp.w    #0,a2
  1936.     bne    L196
  1937. L203
  1938. ;   ctx->NewState = NEW_ALL;
  1939.     move.l    $8(a5),a0
  1940.     add.l    #$E082,a0
  1941.     move.l    #$F,(a0)
  1942. ;    i++;
  1943.     move.l    (a7)+,a2
  1944.     unlk    a5
  1945.     rts
  1946.  
  1947. L190
  1948.     dc.b    'Bad attrib flag in PopClientAttrib',0
  1949. L189
  1950.     dc.b    'glPopClientAttrib',0
  1951.  
  1952.     END
  1953.