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

  1.  
  2. ; Storm C Compiler
  3. ; TEMP:Mesa_2_5/src/logic.c
  4.     mc68030
  5.     mc68881
  6.     XREF    _gl_read_color_span
  7.     XREF    _gl_error
  8.     XREF    _gl_problem
  9.     XREF    _gl_read_alpha_pixels
  10.     XREF    _CC
  11.  
  12.     SECTION "_gl_LogicOp:0",CODE
  13.  
  14.  
  15. ;void gl_LogicOp( GLcontext *ctx, GLenum opcode )
  16.     XDEF    _gl_LogicOp
  17. _gl_LogicOp
  18.     move.l    $8(a7),d0
  19.     move.l    4(a7),a0
  20. L319
  21. ;   if (INSIDE_BEGIN_END(ctx)) 
  22.     move.l    a0,a1
  23.     add.l    #$E08A,a1
  24.     move.l    (a1),d1
  25.     cmp.l    #$1A00,d1
  26.     beq.b    L321
  27. L320
  28. ;      gl_error( ctx, GL_INVALID_OPERATION, "glLogicOp" );
  29.     move.l    #L318,-(a7)
  30.     pea    $502.w
  31.     move.l    a0,-(a7)
  32.     jsr    _gl_error
  33.     add.w    #$C,a7
  34.     rts
  35. L321
  36. ;   switch (opcode)
  37.     move.l    d0,d1
  38.     sub.l    #$1500,d1
  39.     cmp.l    #$F,d1
  40.     bhi.b    L323
  41.     move.l    L324(pc,d1.l*4),a1
  42.     jmp    (a1)
  43. L324
  44.     dc.l    L322
  45.     dc.l    L322
  46.     dc.l    L322
  47.     dc.l    L322
  48.     dc.l    L322
  49.     dc.l    L322
  50.     dc.l    L322
  51.     dc.l    L322
  52.     dc.l    L322
  53.     dc.l    L322
  54.     dc.l    L322
  55.     dc.l    L322
  56.     dc.l    L322
  57.     dc.l    L322
  58.     dc.l    L322
  59.     dc.l    L322
  60. ;      
  61. L322
  62. ;     ctx->Color.LogicOp = opcode;
  63.     move.l    d0,$1EBE(a0)
  64. ;        int a = ctx->NewState | NEW_RASTER_OPS;
  65.     move.l    a0,a1
  66.     add.l    #$E082,a1
  67.     move.l    (a1),d0
  68.     or.l    #2,d0
  69. ;        ctx->NewState = a;
  70.     add.l    #$E082,a0
  71.     move.l    d0,(a0)
  72.     rts
  73. L323
  74. ;     gl_error( ctx, GL_INVALID_ENUM, "glLogicOp" );
  75.     move.l    #L318,-(a7)
  76.     pea    $500.w
  77.     move.l    a0,-(a7)
  78.     jsr    _gl_error
  79.     add.w    #$C,a7
  80.     rts
  81.  
  82. L318
  83.     dc.b    'glLogicOp',0
  84.  
  85.     SECTION "_gl_logicop_ci_span:0",CODE
  86.  
  87.     rts
  88.  
  89. ;void gl_logicop_ci_span( GLcontext *ctx, GLuint n, GLint x, GLint y,
  90.     XDEF    _gl_logicop_ci_span
  91. _gl_logicop_ci_span
  92. L420    EQU    -$1904
  93.     link    a5,#L420
  94.     movem.l    d2/d3/a2,-(a7)
  95.     movem.l    $10(a5),d0/d1/a2
  96.     move.l    $C(a5),d2
  97. L326
  98. ;   (*ctx->Driver.ReadIndexSpan)( ctx, n, x, y, dest );
  99.     lea    -$1900(a5),a0
  100.     move.l    a0,-(a7)
  101.     move.l    d1,-(a7)
  102.     move.l    d0,-(a7)
  103.     move.l    d2,-(a7)
  104.     move.l    $8(a5),-(a7)
  105.     move.l    $8(a5),a1
  106.     lea    $8A0(a1),a0
  107.     move.l    $44(a0),a0
  108.     jsr    (a0)
  109.     add.w    #$14,a7
  110. ;   switch (ctx->Color.LogicOp)
  111.     move.l    $8(a5),a1
  112.     lea    $1E74(a1),a0
  113.     move.l    $4A(a0),d0
  114.     sub.l    #$1500,d0
  115.     cmp.l    #$F,d0
  116.     bhi    L418
  117.     move.l    L421(pc,d0.l*4),a0
  118.     jmp    (a0)
  119. L421
  120.     dc.l    L327
  121.     dc.l    L358
  122.     dc.l    L394
  123.     dc.l    L339
  124.     dc.l    L400
  125.     dc.l    L346
  126.     dc.l    L382
  127.     dc.l    L370
  128.     dc.l    L376
  129.     dc.l    L388
  130.     dc.l    L352
  131.     dc.l    L406
  132.     dc.l    L340
  133.     dc.l    L412
  134.     dc.l    L364
  135.     dc.l    L333
  136. ;      
  137. L327
  138. ;     for (i=0;
  139.     moveq    #0,d0
  140.     bra.b    L331
  141. L328
  142. ;        if (mask[i]) 
  143.     move.l    $1C(a5),a1
  144.     lea    0(a1,d0.l),a0
  145.     move.b    (a0),d1
  146.     beq.b    L330
  147. L329
  148. ;           index[i] = 0;
  149.     lea    0(a2,d0.l*4),a0
  150.     clr.l    (a0)
  151. L330
  152.     addq.l    #1,d0
  153. L331
  154.     cmp.l    d2,d0
  155.     blo.b    L328
  156. L332
  157. ;     
  158.     bra    L419
  159. L333
  160. ;     for (i=0;
  161.     moveq    #0,d0
  162.     bra.b    L337
  163. L334
  164. ;        if (mask[i]) 
  165.     move.l    $1C(a5),a1
  166.     lea    0(a1,d0.l),a0
  167.     move.b    (a0),d1
  168.     beq.b    L336
  169. L335
  170. ;           index[i] = 1;
  171.     lea    0(a2,d0.l*4),a0
  172.     move.l    #1,(a0)
  173. L336
  174.     addq.l    #1,d0
  175. L337
  176.     cmp.l    d2,d0
  177.     blo.b    L334
  178. L338
  179. ;     
  180.     bra    L419
  181. L339
  182. ;     
  183.     bra    L419
  184. L340
  185. ;     for (i=0;
  186.     moveq    #0,d0
  187.     bra.b    L344
  188. L341
  189. ;        if (mask[i]) 
  190.     move.l    $1C(a5),a1
  191.     lea    0(a1,d0.l),a0
  192.     move.b    (a0),d1
  193.     beq.b    L343
  194. L342
  195. ;           index[i] = ~index[i];
  196.     lea    0(a2,d0.l*4),a0
  197.     move.l    (a0),d1
  198.     not.l    d1
  199.     lea    0(a2,d0.l*4),a0
  200.     move.l    d1,(a0)
  201. L343
  202.     addq.l    #1,d0
  203. L344
  204.     cmp.l    d2,d0
  205.     blo.b    L341
  206. L345
  207. ;     
  208.     bra    L419
  209. L346
  210. ;     for (i=0;
  211.     moveq    #0,d0
  212.     bra.b    L350
  213. L347
  214. ;        if (mask[i]) 
  215.     move.l    $1C(a5),a1
  216.     lea    0(a1,d0.l),a0
  217.     move.b    (a0),d1
  218.     beq.b    L349
  219. L348
  220. ;           index[i] = dest[i];
  221.     lea    -$1900(a5),a0
  222.     lea    0(a0,d0.l*4),a0
  223.     move.l    (a0),d1
  224.     lea    0(a2,d0.l*4),a0
  225.     move.l    d1,(a0)
  226. L349
  227.     addq.l    #1,d0
  228. L350
  229.     cmp.l    d2,d0
  230.     blo.b    L347
  231. L351
  232. ;     
  233.     bra    L419
  234. L352
  235. ;     for (i=0;
  236.     moveq    #0,d0
  237.     bra.b    L356
  238. L353
  239. ;        if (mask[i]) 
  240.     move.l    $1C(a5),a1
  241.     lea    0(a1,d0.l),a0
  242.     move.b    (a0),d1
  243.     beq.b    L355
  244. L354
  245. ;           index[i] = ~dest[i];
  246.     lea    -$1900(a5),a0
  247.     lea    0(a0,d0.l*4),a0
  248.     move.l    (a0),d1
  249.     not.l    d1
  250.     lea    0(a2,d0.l*4),a0
  251.     move.l    d1,(a0)
  252. L355
  253.     addq.l    #1,d0
  254. L356
  255.     cmp.l    d2,d0
  256.     blo.b    L353
  257. L357
  258. ;     
  259.     bra    L419
  260. L358
  261. ;     for (i=0;
  262.     moveq    #0,d0
  263.     bra.b    L362
  264. L359
  265. ;        if (mask[i]) 
  266.     move.l    $1C(a5),a1
  267.     lea    0(a1,d0.l),a0
  268.     move.b    (a0),d1
  269.     beq.b    L361
  270. L360
  271. ;           index[i] &= dest[i];
  272.     lea    -$1900(a5),a0
  273.     lea    0(a0,d0.l*4),a0
  274.     move.l    (a0),d3
  275.     lea    0(a2,d0.l*4),a0
  276.     move.l    (a0),d1
  277.     and.l    d3,d1
  278.     move.l    d1,(a0)
  279. L361
  280.     addq.l    #1,d0
  281. L362
  282.     cmp.l    d2,d0
  283.     blo.b    L359
  284. L363
  285. ;     
  286.     bra    L419
  287. L364
  288. ;     for (i=0;
  289.     moveq    #0,d0
  290.     bra.b    L368
  291. L365
  292. ;        if (mask[i]) 
  293.     move.l    $1C(a5),a1
  294.     lea    0(a1,d0.l),a0
  295.     move.b    (a0),d1
  296.     beq.b    L367
  297. L366
  298. ;           index[i] = ~(index[i] & dest[i]);
  299.     lea    0(a2,d0.l*4),a0
  300.     move.l    (a0),d1
  301.     lea    -$1900(a5),a0
  302.     lea    0(a0,d0.l*4),a0
  303.     move.l    (a0),d3
  304.     and.l    d3,d1
  305.     not.l    d1
  306.     lea    0(a2,d0.l*4),a0
  307.     move.l    d1,(a0)
  308. L367
  309.     addq.l    #1,d0
  310. L368
  311.     cmp.l    d2,d0
  312.     blo.b    L365
  313. L369
  314. ;     
  315.     bra    L419
  316. L370
  317. ;     for (i=0;
  318.     moveq    #0,d0
  319.     bra.b    L374
  320. L371
  321. ;        if (mask[i]) 
  322.     move.l    $1C(a5),a1
  323.     lea    0(a1,d0.l),a0
  324.     move.b    (a0),d1
  325.     beq.b    L373
  326. L372
  327. ;           index[i] |= dest[i];
  328.     lea    -$1900(a5),a0
  329.     lea    0(a0,d0.l*4),a0
  330.     move.l    (a0),d3
  331.     lea    0(a2,d0.l*4),a0
  332.     move.l    (a0),d1
  333.     or.l    d3,d1
  334.     move.l    d1,(a0)
  335. L373
  336.     addq.l    #1,d0
  337. L374
  338.     cmp.l    d2,d0
  339.     blo.b    L371
  340. L375
  341. ;     
  342.     bra    L419
  343. L376
  344. ;     for (i=0;
  345.     moveq    #0,d0
  346.     bra.b    L380
  347. L377
  348. ;        if (mask[i]) 
  349.     move.l    $1C(a5),a1
  350.     lea    0(a1,d0.l),a0
  351.     move.b    (a0),d1
  352.     beq.b    L379
  353. L378
  354. ;           index[i] = ~(index[i] | dest[i]);
  355.     lea    0(a2,d0.l*4),a0
  356.     move.l    (a0),d1
  357.     lea    -$1900(a5),a0
  358.     lea    0(a0,d0.l*4),a0
  359.     move.l    (a0),d3
  360.     or.l    d3,d1
  361.     not.l    d1
  362.     lea    0(a2,d0.l*4),a0
  363.     move.l    d1,(a0)
  364. L379
  365.     addq.l    #1,d0
  366. L380
  367.     cmp.l    d2,d0
  368.     blo.b    L377
  369. L381
  370. ;     
  371.     bra    L419
  372. L382
  373. ;     for (i=0;
  374.     moveq    #0,d0
  375.     bra.b    L386
  376. L383
  377. ;        if (mask[i]) 
  378.     move.l    $1C(a5),a1
  379.     lea    0(a1,d0.l),a0
  380.     move.b    (a0),d1
  381.     beq.b    L385
  382. L384
  383. ;           index[i] ^= dest[i];
  384.     lea    -$1900(a5),a0
  385.     lea    0(a0,d0.l*4),a0
  386.     move.l    (a0),d3
  387.     lea    0(a2,d0.l*4),a0
  388.     move.l    (a0),d1
  389.     eor.l    d3,d1
  390.     move.l    d1,(a0)
  391. L385
  392.     addq.l    #1,d0
  393. L386
  394.     cmp.l    d2,d0
  395.     blo.b    L383
  396. L387
  397. ;     
  398.     bra    L419
  399. L388
  400. ;     for (i=0;
  401.     moveq    #0,d0
  402.     bra.b    L392
  403. L389
  404. ;        if (mask[i]) 
  405.     move.l    $1C(a5),a1
  406.     lea    0(a1,d0.l),a0
  407.     move.b    (a0),d1
  408.     beq.b    L391
  409. L390
  410. ;           index[i] = ~(index[i] ^ dest[i]);
  411.     lea    0(a2,d0.l*4),a0
  412.     move.l    (a0),d1
  413.     lea    -$1900(a5),a0
  414.     lea    0(a0,d0.l*4),a0
  415.     move.l    (a0),d3
  416.     eor.l    d3,d1
  417.     not.l    d1
  418.     lea    0(a2,d0.l*4),a0
  419.     move.l    d1,(a0)
  420. L391
  421.     addq.l    #1,d0
  422. L392
  423.     cmp.l    d2,d0
  424.     blo.b    L389
  425. L393
  426. ;     
  427.     bra    L419
  428. L394
  429. ;     for (i=0;
  430.     moveq    #0,d0
  431.     bra.b    L398
  432. L395
  433. ;        if (mask[i]) 
  434.     move.l    $1C(a5),a1
  435.     lea    0(a1,d0.l),a0
  436.     move.b    (a0),d1
  437.     beq.b    L397
  438. L396
  439. ;           index[i] = index[i] & ~dest[i];
  440.     lea    0(a2,d0.l*4),a0
  441.     move.l    (a0),d3
  442.     lea    -$1900(a5),a0
  443.     lea    0(a0,d0.l*4),a0
  444.     move.l    (a0),d1
  445.     not.l    d1
  446.     and.l    d1,d3
  447.     lea    0(a2,d0.l*4),a0
  448.     move.l    d3,(a0)
  449. L397
  450.     addq.l    #1,d0
  451. L398
  452.     cmp.l    d2,d0
  453.     blo.b    L395
  454. L399
  455. ;     
  456.     bra    L419
  457. L400
  458. ;     for (i=0;
  459.     moveq    #0,d0
  460.     bra.b    L404
  461. L401
  462. ;        if (mask[i]) 
  463.     move.l    $1C(a5),a1
  464.     lea    0(a1,d0.l),a0
  465.     move.b    (a0),d1
  466.     beq.b    L403
  467. L402
  468. ;           index[i] = ~index[i] & dest[i];
  469.     lea    0(a2,d0.l*4),a0
  470.     move.l    (a0),d1
  471.     not.l    d1
  472.     lea    -$1900(a5),a0
  473.     lea    0(a0,d0.l*4),a0
  474.     move.l    (a0),d3
  475.     and.l    d3,d1
  476.     lea    0(a2,d0.l*4),a0
  477.     move.l    d1,(a0)
  478. L403
  479.     addq.l    #1,d0
  480. L404
  481.     cmp.l    d2,d0
  482.     blo.b    L401
  483. L405
  484. ;     
  485.     bra    L419
  486. L406
  487. ;     for (i=0;
  488.     moveq    #0,d0
  489.     bra.b    L410
  490. L407
  491. ;        if (mask[i]) 
  492.     move.l    $1C(a5),a1
  493.     lea    0(a1,d0.l),a0
  494.     move.b    (a0),d1
  495.     beq.b    L409
  496. L408
  497. ;           index[i] = index[i] | ~dest[i];
  498.     lea    0(a2,d0.l*4),a0
  499.     move.l    (a0),d3
  500.     lea    -$1900(a5),a0
  501.     lea    0(a0,d0.l*4),a0
  502.     move.l    (a0),d1
  503.     not.l    d1
  504.     or.l    d1,d3
  505.     lea    0(a2,d0.l*4),a0
  506.     move.l    d3,(a0)
  507. L409
  508.     addq.l    #1,d0
  509. L410
  510.     cmp.l    d2,d0
  511.     blo.b    L407
  512. L411
  513. ;     
  514.     bra.b    L419
  515. L412
  516. ;     for (i=0;
  517.     moveq    #0,d0
  518.     bra.b    L416
  519. L413
  520. ;        if (mask[i]) 
  521.     move.l    $1C(a5),a1
  522.     lea    0(a1,d0.l),a0
  523.     move.b    (a0),d1
  524.     beq.b    L415
  525. L414
  526. ;           index[i] = ~index[i] | dest[i];
  527.     lea    0(a2,d0.l*4),a0
  528.     move.l    (a0),d1
  529.     not.l    d1
  530.     lea    -$1900(a5),a0
  531.     lea    0(a0,d0.l*4),a0
  532.     move.l    (a0),d3
  533.     or.l    d3,d1
  534.     lea    0(a2,d0.l*4),a0
  535.     move.l    d1,(a0)
  536. L415
  537.     addq.l    #1,d0
  538. L416
  539.     cmp.l    d2,d0
  540.     blo.b    L413
  541. L417
  542. ;     
  543.     bra.b    L419
  544. L418
  545. ;     gl_error( ctx, GL_INVALID_ENUM, "gl_logic error" );
  546.     move.l    #L325,-(a7)
  547.     pea    $500.w
  548.     move.l    $8(a5),-(a7)
  549.     jsr    _gl_error
  550.     add.w    #$C,a7
  551. L419
  552.     movem.l    (a7)+,d2/d3/a2
  553.     unlk    a5
  554.     rts
  555.  
  556. L325
  557.     dc.b    'gl_logic error',0
  558.  
  559.     SECTION "_gl_logicop_ci_pixels:0",CODE
  560.  
  561.  
  562. ;void gl_logicop_ci_pixels( GLcontext *ctx,
  563.     XDEF    _gl_logicop_ci_pixels
  564. _gl_logicop_ci_pixels
  565. L517    EQU    -$4B04
  566.     link    a5,#L517
  567.     movem.l    d2/d3/a2,-(a7)
  568.     movem.l    $C(a5),d2/a1
  569.     move.l    $18(a5),a2
  570. L423
  571. ;   (*ctx->Driver.ReadIndexPixels)( ctx, n, x, y, dest, mask );
  572.     move.l    $1C(a5),-(a7)
  573.     lea    -$4B00(a5),a0
  574.     move.l    a0,-(a7)
  575.     move.l    $14(a5),-(a7)
  576.     move.l    a1,-(a7)
  577.     move.l    d2,-(a7)
  578.     move.l    $8(a5),-(a7)
  579.     move.l    $8(a5),a1
  580.     lea    $8A0(a1),a0
  581.     move.l    $4C(a0),a0
  582.     jsr    (a0)
  583.     add.w    #$18,a7
  584. ;   switch (ctx->Color.LogicOp)
  585.     move.l    $8(a5),a1
  586.     lea    $1E74(a1),a0
  587.     move.l    $4A(a0),d0
  588.     sub.l    #$1500,d0
  589.     cmp.l    #$F,d0
  590.     bhi    L515
  591.     move.l    L518(pc,d0.l*4),a0
  592.     jmp    (a0)
  593. L518
  594.     dc.l    L424
  595.     dc.l    L455
  596.     dc.l    L491
  597.     dc.l    L436
  598.     dc.l    L497
  599.     dc.l    L443
  600.     dc.l    L479
  601.     dc.l    L467
  602.     dc.l    L473
  603.     dc.l    L485
  604.     dc.l    L449
  605.     dc.l    L503
  606.     dc.l    L437
  607.     dc.l    L509
  608.     dc.l    L461
  609.     dc.l    L430
  610. ;      
  611. L424
  612. ;     for (i=0;
  613.     moveq    #0,d0
  614.     bra.b    L428
  615. L425
  616. ;        if (mask[i]) 
  617.     move.l    $1C(a5),a1
  618.     lea    0(a1,d0.l),a0
  619.     move.b    (a0),d1
  620.     beq.b    L427
  621. L426
  622. ;           index[i] = 0;
  623.     lea    0(a2,d0.l*4),a0
  624.     clr.l    (a0)
  625. L427
  626.     addq.l    #1,d0
  627. L428
  628.     cmp.l    d2,d0
  629.     blo.b    L425
  630. L429
  631. ;     
  632.     bra    L516
  633. L430
  634. ;     for (i=0;
  635.     moveq    #0,d0
  636.     bra.b    L434
  637. L431
  638. ;        if (mask[i]) 
  639.     move.l    $1C(a5),a1
  640.     lea    0(a1,d0.l),a0
  641.     move.b    (a0),d1
  642.     beq.b    L433
  643. L432
  644. ;           index[i] = 1;
  645.     lea    0(a2,d0.l*4),a0
  646.     move.l    #1,(a0)
  647. L433
  648.     addq.l    #1,d0
  649. L434
  650.     cmp.l    d2,d0
  651.     blo.b    L431
  652. L435
  653. ;     
  654.     bra    L516
  655. L436
  656. ;     
  657.     bra    L516
  658. L437
  659. ;     for (i=0;
  660.     moveq    #0,d0
  661.     bra.b    L441
  662. L438
  663. ;        if (mask[i]) 
  664.     move.l    $1C(a5),a1
  665.     lea    0(a1,d0.l),a0
  666.     move.b    (a0),d1
  667.     beq.b    L440
  668. L439
  669. ;           index[i] = ~index[i];
  670.     lea    0(a2,d0.l*4),a0
  671.     move.l    (a0),d1
  672.     not.l    d1
  673.     lea    0(a2,d0.l*4),a0
  674.     move.l    d1,(a0)
  675. L440
  676.     addq.l    #1,d0
  677. L441
  678.     cmp.l    d2,d0
  679.     blo.b    L438
  680. L442
  681. ;     
  682.     bra    L516
  683. L443
  684. ;     for (i=0;
  685.     moveq    #0,d0
  686.     bra.b    L447
  687. L444
  688. ;        if (mask[i]) 
  689.     move.l    $1C(a5),a1
  690.     lea    0(a1,d0.l),a0
  691.     move.b    (a0),d1
  692.     beq.b    L446
  693. L445
  694. ;           index[i] = dest[i];
  695.     lea    -$4B00(a5),a0
  696.     lea    0(a0,d0.l*4),a0
  697.     move.l    (a0),d1
  698.     lea    0(a2,d0.l*4),a0
  699.     move.l    d1,(a0)
  700. L446
  701.     addq.l    #1,d0
  702. L447
  703.     cmp.l    d2,d0
  704.     blo.b    L444
  705. L448
  706. ;     
  707.     bra    L516
  708. L449
  709. ;     for (i=0;
  710.     moveq    #0,d0
  711.     bra.b    L453
  712. L450
  713. ;        if (mask[i]) 
  714.     move.l    $1C(a5),a1
  715.     lea    0(a1,d0.l),a0
  716.     move.b    (a0),d1
  717.     beq.b    L452
  718. L451
  719. ;           index[i] = ~dest[i];
  720.     lea    -$4B00(a5),a0
  721.     lea    0(a0,d0.l*4),a0
  722.     move.l    (a0),d1
  723.     not.l    d1
  724.     lea    0(a2,d0.l*4),a0
  725.     move.l    d1,(a0)
  726. L452
  727.     addq.l    #1,d0
  728. L453
  729.     cmp.l    d2,d0
  730.     blo.b    L450
  731. L454
  732. ;     
  733.     bra    L516
  734. L455
  735. ;     for (i=0;
  736.     moveq    #0,d0
  737.     bra.b    L459
  738. L456
  739. ;        if (mask[i]) 
  740.     move.l    $1C(a5),a1
  741.     lea    0(a1,d0.l),a0
  742.     move.b    (a0),d1
  743.     beq.b    L458
  744. L457
  745. ;           index[i] &= dest[i];
  746.     lea    -$4B00(a5),a0
  747.     lea    0(a0,d0.l*4),a0
  748.     move.l    (a0),d3
  749.     lea    0(a2,d0.l*4),a0
  750.     move.l    (a0),d1
  751.     and.l    d3,d1
  752.     move.l    d1,(a0)
  753. L458
  754.     addq.l    #1,d0
  755. L459
  756.     cmp.l    d2,d0
  757.     blo.b    L456
  758. L460
  759. ;     
  760.     bra    L516
  761. L461
  762. ;     for (i=0;
  763.     moveq    #0,d0
  764.     bra.b    L465
  765. L462
  766. ;        if (mask[i]) 
  767.     move.l    $1C(a5),a1
  768.     lea    0(a1,d0.l),a0
  769.     move.b    (a0),d1
  770.     beq.b    L464
  771. L463
  772. ;           index[i] = ~(index[i] & dest[i]);
  773.     lea    0(a2,d0.l*4),a0
  774.     move.l    (a0),d1
  775.     lea    -$4B00(a5),a0
  776.     lea    0(a0,d0.l*4),a0
  777.     move.l    (a0),d3
  778.     and.l    d3,d1
  779.     not.l    d1
  780.     lea    0(a2,d0.l*4),a0
  781.     move.l    d1,(a0)
  782. L464
  783.     addq.l    #1,d0
  784. L465
  785.     cmp.l    d2,d0
  786.     blo.b    L462
  787. L466
  788. ;     
  789.     bra    L516
  790. L467
  791. ;     for (i=0;
  792.     moveq    #0,d0
  793.     bra.b    L471
  794. L468
  795. ;        if (mask[i]) 
  796.     move.l    $1C(a5),a1
  797.     lea    0(a1,d0.l),a0
  798.     move.b    (a0),d1
  799.     beq.b    L470
  800. L469
  801. ;           index[i] |= dest[i];
  802.     lea    -$4B00(a5),a0
  803.     lea    0(a0,d0.l*4),a0
  804.     move.l    (a0),d3
  805.     lea    0(a2,d0.l*4),a0
  806.     move.l    (a0),d1
  807.     or.l    d3,d1
  808.     move.l    d1,(a0)
  809. L470
  810.     addq.l    #1,d0
  811. L471
  812.     cmp.l    d2,d0
  813.     blo.b    L468
  814. L472
  815. ;     
  816.     bra    L516
  817. L473
  818. ;     for (i=0;
  819.     moveq    #0,d0
  820.     bra.b    L477
  821. L474
  822. ;        if (mask[i]) 
  823.     move.l    $1C(a5),a1
  824.     lea    0(a1,d0.l),a0
  825.     move.b    (a0),d1
  826.     beq.b    L476
  827. L475
  828. ;           index[i] = ~(index[i] | dest[i]);
  829.     lea    0(a2,d0.l*4),a0
  830.     move.l    (a0),d1
  831.     lea    -$4B00(a5),a0
  832.     lea    0(a0,d0.l*4),a0
  833.     move.l    (a0),d3
  834.     or.l    d3,d1
  835.     not.l    d1
  836.     lea    0(a2,d0.l*4),a0
  837.     move.l    d1,(a0)
  838. L476
  839.     addq.l    #1,d0
  840. L477
  841.     cmp.l    d2,d0
  842.     blo.b    L474
  843. L478
  844. ;     
  845.     bra    L516
  846. L479
  847. ;     for (i=0;
  848.     moveq    #0,d0
  849.     bra.b    L483
  850. L480
  851. ;        if (mask[i]) 
  852.     move.l    $1C(a5),a1
  853.     lea    0(a1,d0.l),a0
  854.     move.b    (a0),d1
  855.     beq.b    L482
  856. L481
  857. ;           index[i] ^= dest[i];
  858.     lea    -$4B00(a5),a0
  859.     lea    0(a0,d0.l*4),a0
  860.     move.l    (a0),d3
  861.     lea    0(a2,d0.l*4),a0
  862.     move.l    (a0),d1
  863.     eor.l    d3,d1
  864.     move.l    d1,(a0)
  865. L482
  866.     addq.l    #1,d0
  867. L483
  868.     cmp.l    d2,d0
  869.     blo.b    L480
  870. L484
  871. ;     
  872.     bra    L516
  873. L485
  874. ;     for (i=0;
  875.     moveq    #0,d0
  876.     bra.b    L489
  877. L486
  878. ;        if (mask[i]) 
  879.     move.l    $1C(a5),a1
  880.     lea    0(a1,d0.l),a0
  881.     move.b    (a0),d1
  882.     beq.b    L488
  883. L487
  884. ;           index[i] = ~(index[i] ^ dest[i]);
  885.     lea    0(a2,d0.l*4),a0
  886.     move.l    (a0),d1
  887.     lea    -$4B00(a5),a0
  888.     lea    0(a0,d0.l*4),a0
  889.     move.l    (a0),d3
  890.     eor.l    d3,d1
  891.     not.l    d1
  892.     lea    0(a2,d0.l*4),a0
  893.     move.l    d1,(a0)
  894. L488
  895.     addq.l    #1,d0
  896. L489
  897.     cmp.l    d2,d0
  898.     blo.b    L486
  899. L490
  900. ;     
  901.     bra    L516
  902. L491
  903. ;     for (i=0;
  904.     moveq    #0,d0
  905.     bra.b    L495
  906. L492
  907. ;        if (mask[i]) 
  908.     move.l    $1C(a5),a1
  909.     lea    0(a1,d0.l),a0
  910.     move.b    (a0),d1
  911.     beq.b    L494
  912. L493
  913. ;           index[i] = index[i] & ~dest[i];
  914.     lea    0(a2,d0.l*4),a0
  915.     move.l    (a0),d3
  916.     lea    -$4B00(a5),a0
  917.     lea    0(a0,d0.l*4),a0
  918.     move.l    (a0),d1
  919.     not.l    d1
  920.     and.l    d1,d3
  921.     lea    0(a2,d0.l*4),a0
  922.     move.l    d3,(a0)
  923. L494
  924.     addq.l    #1,d0
  925. L495
  926.     cmp.l    d2,d0
  927.     blo.b    L492
  928. L496
  929. ;     
  930.     bra    L516
  931. L497
  932. ;     for (i=0;
  933.     moveq    #0,d0
  934.     bra.b    L501
  935. L498
  936. ;        if (mask[i]) 
  937.     move.l    $1C(a5),a1
  938.     lea    0(a1,d0.l),a0
  939.     move.b    (a0),d1
  940.     beq.b    L500
  941. L499
  942. ;           index[i] = ~index[i] & dest[i];
  943.     lea    0(a2,d0.l*4),a0
  944.     move.l    (a0),d1
  945.     not.l    d1
  946.     lea    -$4B00(a5),a0
  947.     lea    0(a0,d0.l*4),a0
  948.     move.l    (a0),d3
  949.     and.l    d3,d1
  950.     lea    0(a2,d0.l*4),a0
  951.     move.l    d1,(a0)
  952. L500
  953.     addq.l    #1,d0
  954. L501
  955.     cmp.l    d2,d0
  956.     blo.b    L498
  957. L502
  958. ;     
  959.     bra    L516
  960. L503
  961. ;     for (i=0;
  962.     moveq    #0,d0
  963.     bra.b    L507
  964. L504
  965. ;        if (mask[i]) 
  966.     move.l    $1C(a5),a1
  967.     lea    0(a1,d0.l),a0
  968.     move.b    (a0),d1
  969.     beq.b    L506
  970. L505
  971. ;           index[i] = index[i] | ~dest[i];
  972.     lea    0(a2,d0.l*4),a0
  973.     move.l    (a0),d3
  974.     lea    -$4B00(a5),a0
  975.     lea    0(a0,d0.l*4),a0
  976.     move.l    (a0),d1
  977.     not.l    d1
  978.     or.l    d1,d3
  979.     lea    0(a2,d0.l*4),a0
  980.     move.l    d3,(a0)
  981. L506
  982.     addq.l    #1,d0
  983. L507
  984.     cmp.l    d2,d0
  985.     blo.b    L504
  986. L508
  987. ;     
  988.     bra.b    L516
  989. L509
  990. ;     for (i=0;
  991.     moveq    #0,d0
  992.     bra.b    L513
  993. L510
  994. ;        if (mask[i]) 
  995.     move.l    $1C(a5),a1
  996.     lea    0(a1,d0.l),a0
  997.     move.b    (a0),d1
  998.     beq.b    L512
  999. L511
  1000. ;           index[i] = ~index[i] | dest[i];
  1001.     lea    0(a2,d0.l*4),a0
  1002.     move.l    (a0),d1
  1003.     not.l    d1
  1004.     lea    -$4B00(a5),a0
  1005.     lea    0(a0,d0.l*4),a0
  1006.     move.l    (a0),d3
  1007.     or.l    d3,d1
  1008.     lea    0(a2,d0.l*4),a0
  1009.     move.l    d1,(a0)
  1010. L512
  1011.     addq.l    #1,d0
  1012. L513
  1013.     cmp.l    d2,d0
  1014.     blo.b    L510
  1015. L514
  1016. ;     
  1017.     bra.b    L516
  1018. L515
  1019. ;     gl_error( ctx, GL_INVALID_ENUM, "gl_logic_pixels error" );
  1020.     move.l    #L422,-(a7)
  1021.     pea    $500.w
  1022.     move.l    $8(a5),-(a7)
  1023.     jsr    _gl_error
  1024.     add.w    #$C,a7
  1025. L516
  1026.     movem.l    (a7)+,d2/d3/a2
  1027.     unlk    a5
  1028.     rts
  1029.  
  1030. L422
  1031.     dc.b    'gl_logic_pixels error',0
  1032.  
  1033.     SECTION "_gl_logicop_rgba_span:0",CODE
  1034.  
  1035.  
  1036. ;           blue[i]  = ~(blue[i]  |
  1037.     XDEF    _gl_logicop_rgba_span
  1038. _gl_logicop_rgba_span
  1039. L614    EQU    -$191A
  1040.     link    a5,#L614
  1041.     movem.l    d2-d5/a2,-(a7)
  1042.     movem.l    $10(a5),d0/d1/a2
  1043.     move.l    $C(a5),d2
  1044. L520
  1045. ;   gl_read_color_span( ctx, n, x, y, rdest, gdest, bdest, adest );
  1046.     lea    -$1900(a5),a0
  1047.     move.l    a0,-(a7)
  1048.     lea    -$12C0(a5),a0
  1049.     move.l    a0,-(a7)
  1050.     lea    -$C80(a5),a0
  1051.     move.l    a0,-(a7)
  1052.     lea    -$640(a5),a0
  1053.     move.l    a0,-(a7)
  1054.     move.l    d1,-(a7)
  1055.     move.l    d0,-(a7)
  1056.     move.l    d2,-(a7)
  1057.     move.l    $8(a5),-(a7)
  1058.     jsr    _gl_read_color_span
  1059.     add.w    #$20,a7
  1060. ;   switch (ctx->Color.LogicOp)
  1061.     move.l    $8(a5),a1
  1062.     lea    $1E74(a1),a0
  1063.     move.l    $4A(a0),d0
  1064.     sub.l    #$1500,d0
  1065.     cmp.l    #$F,d0
  1066.     bhi    L612
  1067.     move.l    L615(pc,d0.l*4),a0
  1068.     jmp    (a0)
  1069. L615
  1070.     dc.l    L521
  1071.     dc.l    L552
  1072.     dc.l    L588
  1073.     dc.l    L533
  1074.     dc.l    L594
  1075.     dc.l    L540
  1076.     dc.l    L576
  1077.     dc.l    L564
  1078.     dc.l    L570
  1079.     dc.l    L582
  1080.     dc.l    L546
  1081.     dc.l    L600
  1082.     dc.l    L534
  1083.     dc.l    L606
  1084.     dc.l    L558
  1085.     dc.l    L527
  1086. ;      
  1087. L521
  1088. ;     for (i=0;
  1089.     moveq    #0,d0
  1090.     bra.b    L525
  1091. L522
  1092. ;        if (mask[i]) 
  1093.     move.l    $28(a5),a1
  1094.     lea    0(a1,d0.l),a0
  1095.     move.b    (a0),d1
  1096.     beq.b    L524
  1097. L523
  1098. ;           red[i] = green[i] = blue[i] = alpha[i] = 0;
  1099.     move.l    $24(a5),a1
  1100.     lea    0(a1,d0.l),a0
  1101.     clr.b    (a0)
  1102.     move.l    $20(a5),a1
  1103.     lea    0(a1,d0.l),a0
  1104.     clr.b    (a0)
  1105.     move.l    $1C(a5),a1
  1106.     lea    0(a1,d0.l),a0
  1107.     clr.b    (a0)
  1108.     lea    0(a2,d0.l),a0
  1109.     clr.b    (a0)
  1110. L524
  1111.     addq.l    #1,d0
  1112. L525
  1113.     cmp.l    d2,d0
  1114.     blo.b    L522
  1115. L526
  1116. ;     
  1117.     bra    L613
  1118. L527
  1119. ;        GLubyte r = (GLint) ctx->Visual->RedScale;
  1120.     move.l    $8(a5),a1
  1121.     move.l    $898(a1),a0
  1122.     fmove.s    2(a0),fp0
  1123.     fmove.l    fp0,d0
  1124.     move.b    d0,-$1905(a5)
  1125. ;        GLubyte g = (GLint) ctx->Visual->GreenScale;
  1126.     move.l    $8(a5),a1
  1127.     move.l    $898(a1),a0
  1128.     fmove.s    6(a0),fp0
  1129.     fmove.l    fp0,d0
  1130.     move.b    d0,d5
  1131. ;        GLubyte b = (GLint) ctx->Visual->BlueScale;
  1132.     move.l    $8(a5),a1
  1133.     move.l    $898(a1),a0
  1134.     fmove.s    $A(a0),fp0
  1135.     fmove.l    fp0,d0
  1136.     move.b    d0,d4
  1137. ;        GLubyte a = (GLint) ctx->Visual->AlphaScale;
  1138.     move.l    $8(a5),a1
  1139.     move.l    $898(a1),a0
  1140.     fmove.s    $E(a0),fp0
  1141.     fmove.l    fp0,d0
  1142.     move.b    d0,d3
  1143. ;        for (i=0;
  1144.     moveq    #0,d0
  1145.     bra.b    L531
  1146. L528
  1147. ;           if (mask[i]) 
  1148.     move.l    $28(a5),a1
  1149.     lea    0(a1,d0.l),a0
  1150.     move.b    (a0),d1
  1151.     beq.b    L530
  1152. L529
  1153. ;          red[i]   = r;
  1154.     lea    0(a2,d0.l),a0
  1155.     move.b    -$1905(a5),(a0)
  1156. ;          green[i] = g;
  1157.     move.l    $1C(a5),a1
  1158.     lea    0(a1,d0.l),a0
  1159.     move.b    d5,(a0)
  1160. ;          blue[i]  = b;
  1161.     move.l    $20(a5),a1
  1162.     lea    0(a1,d0.l),a0
  1163.     move.b    d4,(a0)
  1164. ;          alpha[i] = a;
  1165.     move.l    $24(a5),a1
  1166.     lea    0(a1,d0.l),a0
  1167.     move.b    d3,(a0)
  1168. L530
  1169.     addq.l    #1,d0
  1170. L531
  1171.     cmp.l    d2,d0
  1172.     blo.b    L528
  1173. L532
  1174. ;     
  1175.     bra    L613
  1176. L533
  1177. ;     
  1178.     bra    L613
  1179. L534
  1180. ;     for (i=0;
  1181.     moveq    #0,d0
  1182.     bra.b    L538
  1183. L535
  1184. ;        if (mask[i]) 
  1185.     move.l    $28(a5),a1
  1186.     lea    0(a1,d0.l),a0
  1187.     move.b    (a0),d1
  1188.     beq.b    L537
  1189. L536
  1190. ;           red[i]   = ~red[i];
  1191.     lea    0(a2,d0.l),a0
  1192.     move.b    (a0),d1
  1193.     and.l    #$FF,d1
  1194.     not.l    d1
  1195.     lea    0(a2,d0.l),a0
  1196.     move.b    d1,(a0)
  1197. ;           green[i] = ~green[i];
  1198.     move.l    $1C(a5),a1
  1199.     lea    0(a1,d0.l),a0
  1200.     move.b    (a0),d1
  1201.     and.l    #$FF,d1
  1202.     not.l    d1
  1203.     move.l    $1C(a5),a1
  1204.     lea    0(a1,d0.l),a0
  1205.     move.b    d1,(a0)
  1206. ;           blue[i]  = ~blue[i];
  1207.     move.l    $20(a5),a1
  1208.     lea    0(a1,d0.l),a0
  1209.     move.b    (a0),d1
  1210.     and.l    #$FF,d1
  1211.     not.l    d1
  1212.     move.l    $20(a5),a1
  1213.     lea    0(a1,d0.l),a0
  1214.     move.b    d1,(a0)
  1215. ;           alpha[i] = ~alpha[i];
  1216.     move.l    $24(a5),a1
  1217.     lea    0(a1,d0.l),a0
  1218.     move.b    (a0),d1
  1219.     and.l    #$FF,d1
  1220.     not.l    d1
  1221.     move.l    $24(a5),a1
  1222.     lea    0(a1,d0.l),a0
  1223.     move.b    d1,(a0)
  1224. L537
  1225.     addq.l    #1,d0
  1226. L538
  1227.     cmp.l    d2,d0
  1228.     blo.b    L535
  1229. L539
  1230. ;     
  1231.     bra    L613
  1232. L540
  1233. ;     for (i=0;
  1234.     moveq    #0,d0
  1235.     bra.b    L544
  1236. L541
  1237. ;        if (mask[i]) 
  1238.     move.l    $28(a5),a1
  1239.     lea    0(a1,d0.l),a0
  1240.     move.b    (a0),d1
  1241.     beq.b    L543
  1242. L542
  1243. ;           red[i]   = rdest[i];
  1244.     lea    -$640(a5),a0
  1245.     add.l    d0,a0
  1246.     move.b    (a0),d1
  1247.     lea    0(a2,d0.l),a0
  1248.     move.b    d1,(a0)
  1249. ;           green[i] = gdest[i];
  1250.     lea    -$C80(a5),a0
  1251.     add.l    d0,a0
  1252.     move.b    (a0),d1
  1253.     move.l    $1C(a5),a1
  1254.     lea    0(a1,d0.l),a0
  1255.     move.b    d1,(a0)
  1256. ;           blue[i]  = bdest[i];
  1257.     lea    -$12C0(a5),a0
  1258.     add.l    d0,a0
  1259.     move.b    (a0),d1
  1260.     move.l    $20(a5),a1
  1261.     lea    0(a1,d0.l),a0
  1262.     move.b    d1,(a0)
  1263. ;           alpha[i] = adest[i];
  1264.     lea    -$1900(a5),a0
  1265.     add.l    d0,a0
  1266.     move.b    (a0),d1
  1267.     move.l    $24(a5),a1
  1268.     lea    0(a1,d0.l),a0
  1269.     move.b    d1,(a0)
  1270. L543
  1271.     addq.l    #1,d0
  1272. L544
  1273.     cmp.l    d2,d0
  1274.     blo.b    L541
  1275. L545
  1276. ;     
  1277.     bra    L613
  1278. L546
  1279. ;     for (i=0;
  1280.     moveq    #0,d0
  1281.     bra.b    L550
  1282. L547
  1283. ;        if (mask[i]) 
  1284.     move.l    $28(a5),a1
  1285.     lea    0(a1,d0.l),a0
  1286.     move.b    (a0),d1
  1287.     beq.b    L549
  1288. L548
  1289. ;           red[i]   = ~rdest[i];
  1290.     lea    -$640(a5),a0
  1291.     add.l    d0,a0
  1292.     move.b    (a0),d1
  1293.     and.l    #$FF,d1
  1294.     not.l    d1
  1295.     lea    0(a2,d0.l),a0
  1296.     move.b    d1,(a0)
  1297. ;           green[i] = ~gdest[i];
  1298.     lea    -$C80(a5),a0
  1299.     add.l    d0,a0
  1300.     move.b    (a0),d1
  1301.     and.l    #$FF,d1
  1302.     not.l    d1
  1303.     move.l    $1C(a5),a1
  1304.     lea    0(a1,d0.l),a0
  1305.     move.b    d1,(a0)
  1306. ;           blue[i]  = ~bdest[i];
  1307.     lea    -$12C0(a5),a0
  1308.     add.l    d0,a0
  1309.     move.b    (a0),d1
  1310.     and.l    #$FF,d1
  1311.     not.l    d1
  1312.     move.l    $20(a5),a1
  1313.     lea    0(a1,d0.l),a0
  1314.     move.b    d1,(a0)
  1315. ;           alpha[i] = ~adest[i];
  1316.     lea    -$1900(a5),a0
  1317.     add.l    d0,a0
  1318.     move.b    (a0),d1
  1319.     and.l    #$FF,d1
  1320.     not.l    d1
  1321.     move.l    $24(a5),a1
  1322.     lea    0(a1,d0.l),a0
  1323.     move.b    d1,(a0)
  1324. L549
  1325.     addq.l    #1,d0
  1326. L550
  1327.     cmp.l    d2,d0
  1328.     blo.b    L547
  1329. L551
  1330. ;     
  1331.     bra    L613
  1332. L552
  1333. ;     for (i=0;
  1334.     moveq    #0,d0
  1335.     bra.b    L556
  1336. L553
  1337. ;        if (mask[i]) 
  1338.     move.l    $28(a5),a1
  1339.     lea    0(a1,d0.l),a0
  1340.     move.b    (a0),d1
  1341.     beq.b    L555
  1342. L554
  1343. ;           red[i]   &= rdest[i];
  1344.     lea    -$640(a5),a0
  1345.     add.l    d0,a0
  1346.     move.b    (a0),d3
  1347.     lea    0(a2,d0.l),a0
  1348.     move.b    (a0),d1
  1349.     and.b    d3,d1
  1350.     move.b    d1,(a0)
  1351. ;           green[i] &= gdest[i];
  1352.     lea    -$C80(a5),a0
  1353.     add.l    d0,a0
  1354.     move.b    (a0),d3
  1355.     move.l    $1C(a5),a1
  1356.     lea    0(a1,d0.l),a0
  1357.     move.b    (a0),d1
  1358.     and.b    d3,d1
  1359.     move.b    d1,(a0)
  1360. ;           blue[i]  &= bdest[i];
  1361.     lea    -$12C0(a5),a0
  1362.     add.l    d0,a0
  1363.     move.b    (a0),d3
  1364.     move.l    $20(a5),a1
  1365.     lea    0(a1,d0.l),a0
  1366.     move.b    (a0),d1
  1367.     and.b    d3,d1
  1368.     move.b    d1,(a0)
  1369. ;           alpha[i] &= adest[i];
  1370.     lea    -$1900(a5),a0
  1371.     add.l    d0,a0
  1372.     move.b    (a0),d3
  1373.     move.l    $24(a5),a1
  1374.     lea    0(a1,d0.l),a0
  1375.     move.b    (a0),d1
  1376.     and.b    d3,d1
  1377.     move.b    d1,(a0)
  1378. L555
  1379.     addq.l    #1,d0
  1380. L556
  1381.     cmp.l    d2,d0
  1382.     blo.b    L553
  1383. L557
  1384. ;     
  1385.     bra    L613
  1386. L558
  1387. ;     for (i=0;
  1388.     moveq    #0,d0
  1389.     bra    L562
  1390. L559
  1391. ;        if (mask[i]) 
  1392.     move.l    $28(a5),a1
  1393.     lea    0(a1,d0.l),a0
  1394.     move.b    (a0),d1
  1395.     beq    L561
  1396. L560
  1397. ;           red[i]   = ~(red[i]   & rdest[i]);
  1398.     lea    0(a2,d0.l),a0
  1399.     move.b    (a0),d1
  1400.     and.l    #$FF,d1
  1401.     lea    -$640(a5),a0
  1402.     add.l    d0,a0
  1403.     move.b    (a0),d3
  1404.     and.l    #$FF,d3
  1405.     and.l    d3,d1
  1406.     not.l    d1
  1407.     lea    0(a2,d0.l),a0
  1408.     move.b    d1,(a0)
  1409. ;           green[i] = ~(green[i] & gdest[i]);
  1410.     move.l    $1C(a5),a1
  1411.     lea    0(a1,d0.l),a0
  1412.     move.b    (a0),d1
  1413.     and.l    #$FF,d1
  1414.     lea    -$C80(a5),a0
  1415.     add.l    d0,a0
  1416.     move.b    (a0),d3
  1417.     and.l    #$FF,d3
  1418.     and.l    d3,d1
  1419.     not.l    d1
  1420.     move.l    $1C(a5),a1
  1421.     lea    0(a1,d0.l),a0
  1422.     move.b    d1,(a0)
  1423. ;           blue[i]  = ~(blue[i]  & bdest[i]);
  1424.     move.l    $20(a5),a1
  1425.     lea    0(a1,d0.l),a0
  1426.     move.b    (a0),d1
  1427.     and.l    #$FF,d1
  1428.     lea    -$12C0(a5),a0
  1429.     add.l    d0,a0
  1430.     move.b    (a0),d3
  1431.     and.l    #$FF,d3
  1432.     and.l    d3,d1
  1433.     not.l    d1
  1434.     move.l    $20(a5),a1
  1435.     lea    0(a1,d0.l),a0
  1436.     move.b    d1,(a0)
  1437. ;           alpha[i] = ~(alpha[i] & adest[i]);
  1438.     move.l    $24(a5),a1
  1439.     lea    0(a1,d0.l),a0
  1440.     move.b    (a0),d1
  1441.     and.l    #$FF,d1
  1442.     lea    -$1900(a5),a0
  1443.     add.l    d0,a0
  1444.     move.b    (a0),d3
  1445.     and.l    #$FF,d3
  1446.     and.l    d3,d1
  1447.     not.l    d1
  1448.     move.l    $24(a5),a1
  1449.     lea    0(a1,d0.l),a0
  1450.     move.b    d1,(a0)
  1451. L561
  1452.     addq.l    #1,d0
  1453. L562
  1454.     cmp.l    d2,d0
  1455.     blo    L559
  1456. L563
  1457. ;     
  1458.     bra    L613
  1459. L564
  1460. ;     for (i=0;
  1461.     moveq    #0,d0
  1462.     bra.b    L568
  1463. L565
  1464. ;        if (mask[i]) 
  1465.     move.l    $28(a5),a1
  1466.     lea    0(a1,d0.l),a0
  1467.     move.b    (a0),d1
  1468.     beq.b    L567
  1469. L566
  1470. ;           red[i]   |= rdest[i];
  1471.     lea    -$640(a5),a0
  1472.     add.l    d0,a0
  1473.     move.b    (a0),d3
  1474.     lea    0(a2,d0.l),a0
  1475.     move.b    (a0),d1
  1476.     or.b    d3,d1
  1477.     move.b    d1,(a0)
  1478. ;           green[i] |= gdest[i];
  1479.     lea    -$C80(a5),a0
  1480.     add.l    d0,a0
  1481.     move.b    (a0),d3
  1482.     move.l    $1C(a5),a1
  1483.     lea    0(a1,d0.l),a0
  1484.     move.b    (a0),d1
  1485.     or.b    d3,d1
  1486.     move.b    d1,(a0)
  1487. ;           blue[i]  |= bdest[i];
  1488.     lea    -$12C0(a5),a0
  1489.     add.l    d0,a0
  1490.     move.b    (a0),d3
  1491.     move.l    $20(a5),a1
  1492.     lea    0(a1,d0.l),a0
  1493.     move.b    (a0),d1
  1494.     or.b    d3,d1
  1495.     move.b    d1,(a0)
  1496. ;           alpha[i] |= adest[i];
  1497.     lea    -$1900(a5),a0
  1498.     add.l    d0,a0
  1499.     move.b    (a0),d3
  1500.     move.l    $24(a5),a1
  1501.     lea    0(a1,d0.l),a0
  1502.     move.b    (a0),d1
  1503.     or.b    d3,d1
  1504.     move.b    d1,(a0)
  1505. L567
  1506.     addq.l    #1,d0
  1507. L568
  1508.     cmp.l    d2,d0
  1509.     blo.b    L565
  1510. L569
  1511. ;     
  1512.     bra    L613
  1513. L570
  1514. ;     for (i=0;
  1515.     moveq    #0,d0
  1516.     bra    L574
  1517. L571
  1518. ;        if (mask[i]) 
  1519.     move.l    $28(a5),a1
  1520.     lea    0(a1,d0.l),a0
  1521.     move.b    (a0),d1
  1522.     beq    L573
  1523. L572
  1524. ;           red[i]   = ~(red[i]   | rdest[i]);
  1525.     lea    0(a2,d0.l),a0
  1526.     move.b    (a0),d1
  1527.     and.l    #$FF,d1
  1528.     lea    -$640(a5),a0
  1529.     add.l    d0,a0
  1530.     move.b    (a0),d3
  1531.     and.l    #$FF,d3
  1532.     or.l    d3,d1
  1533.     not.l    d1
  1534.     lea    0(a2,d0.l),a0
  1535.     move.b    d1,(a0)
  1536. ;           green[i] = ~(green[i] | gdest[i]);
  1537.     move.l    $1C(a5),a1
  1538.     lea    0(a1,d0.l),a0
  1539.     move.b    (a0),d1
  1540.     and.l    #$FF,d1
  1541.     lea    -$C80(a5),a0
  1542.     add.l    d0,a0
  1543.     move.b    (a0),d3
  1544.     and.l    #$FF,d3
  1545.     or.l    d3,d1
  1546.     not.l    d1
  1547.     move.l    $1C(a5),a1
  1548.     lea    0(a1,d0.l),a0
  1549.     move.b    d1,(a0)
  1550. ;           blue[i]  = ~(blue[i]  | bdest[i]);
  1551.     move.l    $20(a5),a1
  1552.     lea    0(a1,d0.l),a0
  1553.     move.b    (a0),d1
  1554.     and.l    #$FF,d1
  1555.     lea    -$12C0(a5),a0
  1556.     add.l    d0,a0
  1557.     move.b    (a0),d3
  1558.     and.l    #$FF,d3
  1559.     or.l    d3,d1
  1560.     not.l    d1
  1561.     move.l    $20(a5),a1
  1562.     lea    0(a1,d0.l),a0
  1563.     move.b    d1,(a0)
  1564. ;           alpha[i] = ~(alpha[i] | adest[i]);
  1565.     move.l    $24(a5),a1
  1566.     lea    0(a1,d0.l),a0
  1567.     move.b    (a0),d1
  1568.     and.l    #$FF,d1
  1569.     lea    -$1900(a5),a0
  1570.     add.l    d0,a0
  1571.     move.b    (a0),d3
  1572.     and.l    #$FF,d3
  1573.     or.l    d3,d1
  1574.     not.l    d1
  1575.     move.l    $24(a5),a1
  1576.     lea    0(a1,d0.l),a0
  1577.     move.b    d1,(a0)
  1578. L573
  1579.     addq.l    #1,d0
  1580. L574
  1581.     cmp.l    d2,d0
  1582.     blo    L571
  1583. L575
  1584. ;     
  1585.     bra    L613
  1586. L576
  1587. ;     for (i=0;
  1588.     moveq    #0,d0
  1589.     bra.b    L580
  1590. L577
  1591. ;        if (mask[i]) 
  1592.     move.l    $28(a5),a1
  1593.     lea    0(a1,d0.l),a0
  1594.     move.b    (a0),d1
  1595.     beq.b    L579
  1596. L578
  1597. ;           red[i]   ^= rdest[i];
  1598.     lea    -$640(a5),a0
  1599.     add.l    d0,a0
  1600.     move.b    (a0),d3
  1601.     lea    0(a2,d0.l),a0
  1602.     move.b    (a0),d1
  1603.     eor.b    d3,d1
  1604.     move.b    d1,(a0)
  1605. ;           green[i] ^= gdest[i];
  1606.     lea    -$C80(a5),a0
  1607.     add.l    d0,a0
  1608.     move.b    (a0),d3
  1609.     move.l    $1C(a5),a1
  1610.     lea    0(a1,d0.l),a0
  1611.     move.b    (a0),d1
  1612.     eor.b    d3,d1
  1613.     move.b    d1,(a0)
  1614. ;           blue[i]  ^= bdest[i];
  1615.     lea    -$12C0(a5),a0
  1616.     add.l    d0,a0
  1617.     move.b    (a0),d3
  1618.     move.l    $20(a5),a1
  1619.     lea    0(a1,d0.l),a0
  1620.     move.b    (a0),d1
  1621.     eor.b    d3,d1
  1622.     move.b    d1,(a0)
  1623. ;           alpha[i] ^= adest[i];
  1624.     lea    -$1900(a5),a0
  1625.     add.l    d0,a0
  1626.     move.b    (a0),d3
  1627.     move.l    $24(a5),a1
  1628.     lea    0(a1,d0.l),a0
  1629.     move.b    (a0),d1
  1630.     eor.b    d3,d1
  1631.     move.b    d1,(a0)
  1632. L579
  1633.     addq.l    #1,d0
  1634. L580
  1635.     cmp.l    d2,d0
  1636.     blo.b    L577
  1637. L581
  1638. ;     
  1639.     bra    L613
  1640. L582
  1641. ;     for (i=0;
  1642.     moveq    #0,d0
  1643.     bra    L586
  1644. L583
  1645. ;        if (mask[i]) 
  1646.     move.l    $28(a5),a1
  1647.     lea    0(a1,d0.l),a0
  1648.     move.b    (a0),d1
  1649.     beq    L585
  1650. L584
  1651. ;           red[i]   = ~(red[i]   ^ rdest[i]);
  1652.     lea    0(a2,d0.l),a0
  1653.     move.b    (a0),d1
  1654.     and.l    #$FF,d1
  1655.     lea    -$640(a5),a0
  1656.     add.l    d0,a0
  1657.     move.b    (a0),d3
  1658.     and.l    #$FF,d3
  1659.     eor.l    d3,d1
  1660.     not.l    d1
  1661.     lea    0(a2,d0.l),a0
  1662.     move.b    d1,(a0)
  1663. ;           green[i] = ~(green[i] ^ gdest[i]);
  1664.     move.l    $1C(a5),a1
  1665.     lea    0(a1,d0.l),a0
  1666.     move.b    (a0),d1
  1667.     and.l    #$FF,d1
  1668.     lea    -$C80(a5),a0
  1669.     add.l    d0,a0
  1670.     move.b    (a0),d3
  1671.     and.l    #$FF,d3
  1672.     eor.l    d3,d1
  1673.     not.l    d1
  1674.     move.l    $1C(a5),a1
  1675.     lea    0(a1,d0.l),a0
  1676.     move.b    d1,(a0)
  1677. ;           blue[i]  = ~(blue[i]  ^ bdest[i]);
  1678.     move.l    $20(a5),a1
  1679.     lea    0(a1,d0.l),a0
  1680.     move.b    (a0),d1
  1681.     and.l    #$FF,d1
  1682.     lea    -$12C0(a5),a0
  1683.     add.l    d0,a0
  1684.     move.b    (a0),d3
  1685.     and.l    #$FF,d3
  1686.     eor.l    d3,d1
  1687.     not.l    d1
  1688.     move.l    $20(a5),a1
  1689.     lea    0(a1,d0.l),a0
  1690.     move.b    d1,(a0)
  1691. ;           alpha[i] = ~(alpha[i] ^ adest[i]);
  1692.     move.l    $24(a5),a1
  1693.     lea    0(a1,d0.l),a0
  1694.     move.b    (a0),d1
  1695.     and.l    #$FF,d1
  1696.     lea    -$1900(a5),a0
  1697.     add.l    d0,a0
  1698.     move.b    (a0),d3
  1699.     and.l    #$FF,d3
  1700.     eor.l    d3,d1
  1701.     not.l    d1
  1702.     move.l    $24(a5),a1
  1703.     lea    0(a1,d0.l),a0
  1704.     move.b    d1,(a0)
  1705. L585
  1706.     addq.l    #1,d0
  1707. L586
  1708.     cmp.l    d2,d0
  1709.     blo    L583
  1710. L587
  1711. ;     
  1712.     bra    L613
  1713. L588
  1714. ;     for (i=0;
  1715.     moveq    #0,d0
  1716.     bra    L592
  1717. L589
  1718. ;        if (mask[i]) 
  1719.     move.l    $28(a5),a1
  1720.     lea    0(a1,d0.l),a0
  1721.     move.b    (a0),d1
  1722.     beq    L591
  1723. L590
  1724. ;           red[i]   = red[i]   & ~rdest[i];
  1725.     lea    0(a2,d0.l),a0
  1726.     move.b    (a0),d1
  1727.     moveq    #0,d3
  1728.     move.b    d1,d3
  1729.     lea    -$640(a5),a0
  1730.     add.l    d0,a0
  1731.     move.b    (a0),d1
  1732.     and.l    #$FF,d1
  1733.     not.l    d1
  1734.     and.l    d1,d3
  1735.     move.b    d3,d1
  1736.     lea    0(a2,d0.l),a0
  1737.     move.b    d1,(a0)
  1738. ;           green[i] = green[i] & ~gdest[i];
  1739.     move.l    $1C(a5),a1
  1740.     lea    0(a1,d0.l),a0
  1741.     move.b    (a0),d1
  1742.     moveq    #0,d3
  1743.     move.b    d1,d3
  1744.     lea    -$C80(a5),a0
  1745.     add.l    d0,a0
  1746.     move.b    (a0),d1
  1747.     and.l    #$FF,d1
  1748.     not.l    d1
  1749.     and.l    d1,d3
  1750.     move.b    d3,d1
  1751.     move.l    $1C(a5),a1
  1752.     lea    0(a1,d0.l),a0
  1753.     move.b    d1,(a0)
  1754. ;           blue[i]  = blue[i]  & ~bdest[i];
  1755.     move.l    $20(a5),a1
  1756.     lea    0(a1,d0.l),a0
  1757.     move.b    (a0),d1
  1758.     moveq    #0,d3
  1759.     move.b    d1,d3
  1760.     lea    -$12C0(a5),a0
  1761.     add.l    d0,a0
  1762.     move.b    (a0),d1
  1763.     and.l    #$FF,d1
  1764.     not.l    d1
  1765.     and.l    d1,d3
  1766.     move.b    d3,d1
  1767.     move.l    $20(a5),a1
  1768.     lea    0(a1,d0.l),a0
  1769.     move.b    d1,(a0)
  1770. ;           alpha[i] = alpha[i] & ~adest[i];
  1771.     move.l    $24(a5),a1
  1772.     lea    0(a1,d0.l),a0
  1773.     move.b    (a0),d1
  1774.     moveq    #0,d3
  1775.     move.b    d1,d3
  1776.     lea    -$1900(a5),a0
  1777.     add.l    d0,a0
  1778.     move.b    (a0),d1
  1779.     and.l    #$FF,d1
  1780.     not.l    d1
  1781.     and.l    d1,d3
  1782.     move.b    d3,d1
  1783.     move.l    $24(a5),a1
  1784.     lea    0(a1,d0.l),a0
  1785.     move.b    d1,(a0)
  1786. L591
  1787.     addq.l    #1,d0
  1788. L592
  1789.     cmp.l    d2,d0
  1790.     blo    L589
  1791. L593
  1792. ;     
  1793.     bra    L613
  1794. L594
  1795. ;     for (i=0;
  1796.     moveq    #0,d0
  1797.     bra    L598
  1798. L595
  1799. ;        if (mask[i]) 
  1800.     move.l    $28(a5),a1
  1801.     lea    0(a1,d0.l),a0
  1802.     move.b    (a0),d1
  1803.     beq    L597
  1804. L596
  1805. ;           red[i]   = ~red[i]   & rdest[i];
  1806.     lea    0(a2,d0.l),a0
  1807.     move.b    (a0),d1
  1808.     and.l    #$FF,d1
  1809.     not.l    d1
  1810.     lea    -$640(a5),a0
  1811.     add.l    d0,a0
  1812.     move.b    (a0),d3
  1813.     and.l    #$FF,d3
  1814.     and.l    d3,d1
  1815.     lea    0(a2,d0.l),a0
  1816.     move.b    d1,(a0)
  1817. ;           green[i] = ~green[i] & gdest[i];
  1818.     move.l    $1C(a5),a1
  1819.     lea    0(a1,d0.l),a0
  1820.     move.b    (a0),d1
  1821.     and.l    #$FF,d1
  1822.     not.l    d1
  1823.     lea    -$C80(a5),a0
  1824.     add.l    d0,a0
  1825.     move.b    (a0),d3
  1826.     and.l    #$FF,d3
  1827.     and.l    d3,d1
  1828.     move.l    $1C(a5),a1
  1829.     lea    0(a1,d0.l),a0
  1830.     move.b    d1,(a0)
  1831. ;           blue[i]  = ~blue[i]  & bdest[i];
  1832.     move.l    $20(a5),a1
  1833.     lea    0(a1,d0.l),a0
  1834.     move.b    (a0),d1
  1835.     and.l    #$FF,d1
  1836.     not.l    d1
  1837.     lea    -$12C0(a5),a0
  1838.     add.l    d0,a0
  1839.     move.b    (a0),d3
  1840.     and.l    #$FF,d3
  1841.     and.l    d3,d1
  1842.     move.l    $20(a5),a1
  1843.     lea    0(a1,d0.l),a0
  1844.     move.b    d1,(a0)
  1845. ;           alpha[i] = ~alpha[i] & adest[i];
  1846.     move.l    $24(a5),a1
  1847.     lea    0(a1,d0.l),a0
  1848.     move.b    (a0),d1
  1849.     and.l    #$FF,d1
  1850.     not.l    d1
  1851.     lea    -$1900(a5),a0
  1852.     add.l    d0,a0
  1853.     move.b    (a0),d3
  1854.     and.l    #$FF,d3
  1855.     and.l    d3,d1
  1856.     move.l    $24(a5),a1
  1857.     lea    0(a1,d0.l),a0
  1858.     move.b    d1,(a0)
  1859. L597
  1860.     addq.l    #1,d0
  1861. L598
  1862.     cmp.l    d2,d0
  1863.     blo    L595
  1864. L599
  1865. ;     
  1866.     bra    L613
  1867. L600
  1868. ;     for (i=0;
  1869.     moveq    #0,d0
  1870.     bra    L604
  1871. L601
  1872. ;        if (mask[i]) 
  1873.     move.l    $28(a5),a1
  1874.     lea    0(a1,d0.l),a0
  1875.     move.b    (a0),d1
  1876.     beq    L603
  1877. L602
  1878. ;           red[i]   = red[i]   | ~rdest[i];
  1879.     lea    0(a2,d0.l),a0
  1880.     move.b    (a0),d1
  1881.     moveq    #0,d3
  1882.     move.b    d1,d3
  1883.     lea    -$640(a5),a0
  1884.     add.l    d0,a0
  1885.     move.b    (a0),d1
  1886.     and.l    #$FF,d1
  1887.     not.l    d1
  1888.     or.l    d1,d3
  1889.     move.b    d3,d1
  1890.     lea    0(a2,d0.l),a0
  1891.     move.b    d1,(a0)
  1892. ;           green[i] = green[i] | ~gdest[i];
  1893.     move.l    $1C(a5),a1
  1894.     lea    0(a1,d0.l),a0
  1895.     move.b    (a0),d1
  1896.     moveq    #0,d3
  1897.     move.b    d1,d3
  1898.     lea    -$C80(a5),a0
  1899.     add.l    d0,a0
  1900.     move.b    (a0),d1
  1901.     and.l    #$FF,d1
  1902.     not.l    d1
  1903.     or.l    d1,d3
  1904.     move.b    d3,d1
  1905.     move.l    $1C(a5),a1
  1906.     lea    0(a1,d0.l),a0
  1907.     move.b    d1,(a0)
  1908. ;           blue[i]  = blue[i]  | ~bdest[i];
  1909.     move.l    $20(a5),a1
  1910.     lea    0(a1,d0.l),a0
  1911.     move.b    (a0),d1
  1912.     moveq    #0,d3
  1913.     move.b    d1,d3
  1914.     lea    -$12C0(a5),a0
  1915.     add.l    d0,a0
  1916.     move.b    (a0),d1
  1917.     and.l    #$FF,d1
  1918.     not.l    d1
  1919.     or.l    d1,d3
  1920.     move.b    d3,d1
  1921.     move.l    $20(a5),a1
  1922.     lea    0(a1,d0.l),a0
  1923.     move.b    d1,(a0)
  1924. ;           alpha[i] = alpha[i] | ~adest[i];
  1925.     move.l    $24(a5),a1
  1926.     lea    0(a1,d0.l),a0
  1927.     move.b    (a0),d1
  1928.     moveq    #0,d3
  1929.     move.b    d1,d3
  1930.     lea    -$1900(a5),a0
  1931.     add.l    d0,a0
  1932.     move.b    (a0),d1
  1933.     and.l    #$FF,d1
  1934.     not.l    d1
  1935.     or.l    d1,d3
  1936.     move.b    d3,d1
  1937.     move.l    $24(a5),a1
  1938.     lea    0(a1,d0.l),a0
  1939.     move.b    d1,(a0)
  1940. L603
  1941.     addq.l    #1,d0
  1942. L604
  1943.     cmp.l    d2,d0
  1944.     blo    L601
  1945. L605
  1946. ;     
  1947.     bra    L613
  1948. L606
  1949. ;     for (i=0;
  1950.     moveq    #0,d0
  1951.     bra    L610
  1952. L607
  1953. ;        if (mask[i]) 
  1954.     move.l    $28(a5),a1
  1955.     lea    0(a1,d0.l),a0
  1956.     move.b    (a0),d1
  1957.     beq    L609
  1958. L608
  1959. ;           red[i]   = ~red[i]   | rdest[i];
  1960.     lea    0(a2,d0.l),a0
  1961.     move.b    (a0),d1
  1962.     and.l    #$FF,d1
  1963.     not.l    d1
  1964.     lea    -$640(a5),a0
  1965.     add.l    d0,a0
  1966.     move.b    (a0),d3
  1967.     and.l    #$FF,d3
  1968.     or.l    d3,d1
  1969.     lea    0(a2,d0.l),a0
  1970.     move.b    d1,(a0)
  1971. ;           green[i] = ~green[i] | gdest[i];
  1972.     move.l    $1C(a5),a1
  1973.     lea    0(a1,d0.l),a0
  1974.     move.b    (a0),d1
  1975.     and.l    #$FF,d1
  1976.     not.l    d1
  1977.     lea    -$C80(a5),a0
  1978.     add.l    d0,a0
  1979.     move.b    (a0),d3
  1980.     and.l    #$FF,d3
  1981.     or.l    d3,d1
  1982.     move.l    $1C(a5),a1
  1983.     lea    0(a1,d0.l),a0
  1984.     move.b    d1,(a0)
  1985. ;           blue[i]  = ~blue[i]  | bdest[i];
  1986.     move.l    $20(a5),a1
  1987.     lea    0(a1,d0.l),a0
  1988.     move.b    (a0),d1
  1989.     and.l    #$FF,d1
  1990.     not.l    d1
  1991.     lea    -$12C0(a5),a0
  1992.     add.l    d0,a0
  1993.     move.b    (a0),d3
  1994.     and.l    #$FF,d3
  1995.     or.l    d3,d1
  1996.     move.l    $20(a5),a1
  1997.     lea    0(a1,d0.l),a0
  1998.     move.b    d1,(a0)
  1999. ;           alpha[i] = ~alpha[i] | adest[i];
  2000.     move.l    $24(a5),a1
  2001.     lea    0(a1,d0.l),a0
  2002.     move.b    (a0),d1
  2003.     and.l    #$FF,d1
  2004.     not.l    d1
  2005.     lea    -$1900(a5),a0
  2006.     add.l    d0,a0
  2007.     move.b    (a0),d3
  2008.     and.l    #$FF,d3
  2009.     or.l    d3,d1
  2010.     move.l    $24(a5),a1
  2011.     lea    0(a1,d0.l),a0
  2012.     move.b    d1,(a0)
  2013. L609
  2014.     addq.l    #1,d0
  2015. L610
  2016.     cmp.l    d2,d0
  2017.     blo    L607
  2018. L611
  2019. ;     
  2020.     bra.b    L613
  2021. L612
  2022. ;     gl_problem(ctx, "Bad function in gl_logicop_rgba_span");
  2023.     move.l    #L519,-(a7)
  2024.     move.l    $8(a5),-(a7)
  2025.     jsr    _gl_problem
  2026.     addq.w    #$8,a7
  2027.     movem.l    (a7)+,d2-d5/a2
  2028.     unlk    a5
  2029.     rts
  2030. L613
  2031. ;     return;
  2032.     movem.l    (a7)+,d2-d5/a2
  2033.     unlk    a5
  2034.     rts
  2035.  
  2036. L519
  2037.     dc.b    'Bad function in gl_logicop_rgba_span',0
  2038.  
  2039.     SECTION "_gl_logicop_rgba_pixels:0",CODE
  2040.  
  2041.  
  2042. ;void gl_logicop_rgba_pixels( GLcontext *ctx,
  2043.     XDEF    _gl_logicop_rgba_pixels
  2044. _gl_logicop_rgba_pixels
  2045. L713    EQU    -$4B20
  2046.     link    a5,#L713
  2047.     movem.l    d2-d5/a2,-(a7)
  2048.     move.l    $C(a5),d2
  2049.     move.l    $18(a5),a2
  2050. L617
  2051. ;   (*ctx->Driver.ReadColorPixels)( ctx, n, x, y, rdest, gdest, bd
  2052.     move.l    $28(a5),-(a7)
  2053.     lea    -$4B00(a5),a0
  2054.     move.l    a0,-(a7)
  2055.     lea    -$3840(a5),a0
  2056.     move.l    a0,-(a7)
  2057.     lea    -$2580(a5),a0
  2058.     move.l    a0,-(a7)
  2059.     lea    -$12C0(a5),a0
  2060.     move.l    a0,-(a7)
  2061.     move.l    $14(a5),-(a7)
  2062.     move.l    $10(a5),-(a7)
  2063.     move.l    d2,-(a7)
  2064.     move.l    $8(a5),-(a7)
  2065.     move.l    $8(a5),a1
  2066.     lea    $8A0(a1),a0
  2067.     move.l    $50(a0),a0
  2068.     jsr    (a0)
  2069.     add.w    #$24,a7
  2070. ;   if (ctx->RasterMask & ALPHABUF_BIT) 
  2071.     move.l    $8(a5),a0
  2072.     add.l    #$E096,a0
  2073.     move.l    (a0),d0
  2074.     and.l    #$100,d0
  2075.     beq.b    L619
  2076. L618
  2077. ;      gl_read_alpha_pixels( ctx, n, x, y, adest, mask );
  2078.     move.l    $28(a5),-(a7)
  2079.     lea    -$4B00(a5),a0
  2080.     move.l    a0,-(a7)
  2081.     move.l    $14(a5),-(a7)
  2082.     move.l    $10(a5),-(a7)
  2083.     move.l    d2,-(a7)
  2084.     move.l    $8(a5),-(a7)
  2085.     jsr    _gl_read_alpha_pixels
  2086.     add.w    #$18,a7
  2087. L619
  2088. ;   switch (ctx->Color.LogicOp)
  2089.     move.l    $8(a5),a1
  2090.     lea    $1E74(a1),a0
  2091.     move.l    $4A(a0),d0
  2092.     sub.l    #$1500,d0
  2093.     cmp.l    #$F,d0
  2094.     bhi    L711
  2095.     move.l    L714(pc,d0.l*4),a0
  2096.     jmp    (a0)
  2097. L714
  2098.     dc.l    L620
  2099.     dc.l    L651
  2100.     dc.l    L687
  2101.     dc.l    L632
  2102.     dc.l    L693
  2103.     dc.l    L639
  2104.     dc.l    L675
  2105.     dc.l    L663
  2106.     dc.l    L669
  2107.     dc.l    L681
  2108.     dc.l    L645
  2109.     dc.l    L699
  2110.     dc.l    L633
  2111.     dc.l    L705
  2112.     dc.l    L657
  2113.     dc.l    L626
  2114. ;      
  2115. L620
  2116. ;     for (i=0;
  2117.     moveq    #0,d0
  2118.     bra.b    L624
  2119. L621
  2120. ;        if (mask[i]) 
  2121.     move.l    $28(a5),a1
  2122.     lea    0(a1,d0.l),a0
  2123.     move.b    (a0),d1
  2124.     beq.b    L623
  2125. L622
  2126. ;           red[i] = green[i] = blue[i] = alpha[i] = 0;
  2127.     move.l    $24(a5),a1
  2128.     lea    0(a1,d0.l),a0
  2129.     clr.b    (a0)
  2130.     move.l    $20(a5),a1
  2131.     lea    0(a1,d0.l),a0
  2132.     clr.b    (a0)
  2133.     move.l    $1C(a5),a1
  2134.     lea    0(a1,d0.l),a0
  2135.     clr.b    (a0)
  2136.     lea    0(a2,d0.l),a0
  2137.     clr.b    (a0)
  2138. L623
  2139.     addq.l    #1,d0
  2140. L624
  2141.     cmp.l    d2,d0
  2142.     blo.b    L621
  2143. L625
  2144. ;     
  2145.     bra    L712
  2146. L626
  2147. ;        GLubyte r = (GLint) ctx->Visual->RedScale;
  2148.     move.l    $8(a5),a1
  2149.     move.l    $898(a1),a0
  2150.     fmove.s    2(a0),fp0
  2151.     fmove.l    fp0,d0
  2152.     move.b    d0,-$4B05(a5)
  2153. ;        GLubyte g = (GLint) ctx->Visual->GreenScale;
  2154.     move.l    $8(a5),a1
  2155.     move.l    $898(a1),a0
  2156.     fmove.s    6(a0),fp0
  2157.     fmove.l    fp0,d0
  2158.     move.b    d0,d5
  2159. ;        GLubyte b = (GLint) ctx->Visual->BlueScale;
  2160.     move.l    $8(a5),a1
  2161.     move.l    $898(a1),a0
  2162.     fmove.s    $A(a0),fp0
  2163.     fmove.l    fp0,d0
  2164.     move.b    d0,d4
  2165. ;        GLubyte a = (GLint) ctx->Visual->AlphaScale;
  2166.     move.l    $8(a5),a1
  2167.     move.l    $898(a1),a0
  2168.     fmove.s    $E(a0),fp0
  2169.     fmove.l    fp0,d0
  2170.     move.b    d0,d3
  2171. ;        for (i=0;
  2172.     moveq    #0,d0
  2173.     bra.b    L630
  2174. L627
  2175. ;           if (mask[i]) 
  2176.     move.l    $28(a5),a1
  2177.     lea    0(a1,d0.l),a0
  2178.     move.b    (a0),d1
  2179.     beq.b    L629
  2180. L628
  2181. ;          red[i]   = r;
  2182.     lea    0(a2,d0.l),a0
  2183.     move.b    -$4B05(a5),(a0)
  2184. ;          green[i] = g;
  2185.     move.l    $1C(a5),a1
  2186.     lea    0(a1,d0.l),a0
  2187.     move.b    d5,(a0)
  2188. ;          blue[i]  = b;
  2189.     move.l    $20(a5),a1
  2190.     lea    0(a1,d0.l),a0
  2191.     move.b    d4,(a0)
  2192. ;          alpha[i] = a;
  2193.     move.l    $24(a5),a1
  2194.     lea    0(a1,d0.l),a0
  2195.     move.b    d3,(a0)
  2196. L629
  2197.     addq.l    #1,d0
  2198. L630
  2199.     cmp.l    d2,d0
  2200.     blo.b    L627
  2201. L631
  2202. ;     
  2203.     bra    L712
  2204. L632
  2205. ;     
  2206.     bra    L712
  2207. L633
  2208. ;     for (i=0;
  2209.     moveq    #0,d0
  2210.     bra.b    L637
  2211. L634
  2212. ;        if (mask[i]) 
  2213.     move.l    $28(a5),a1
  2214.     lea    0(a1,d0.l),a0
  2215.     move.b    (a0),d1
  2216.     beq.b    L636
  2217. L635
  2218. ;           red[i]   = ~red[i];
  2219.     lea    0(a2,d0.l),a0
  2220.     move.b    (a0),d1
  2221.     and.l    #$FF,d1
  2222.     not.l    d1
  2223.     lea    0(a2,d0.l),a0
  2224.     move.b    d1,(a0)
  2225. ;           green[i] = ~green[i];
  2226.     move.l    $1C(a5),a1
  2227.     lea    0(a1,d0.l),a0
  2228.     move.b    (a0),d1
  2229.     and.l    #$FF,d1
  2230.     not.l    d1
  2231.     move.l    $1C(a5),a1
  2232.     lea    0(a1,d0.l),a0
  2233.     move.b    d1,(a0)
  2234. ;           blue[i]  = ~blue[i];
  2235.     move.l    $20(a5),a1
  2236.     lea    0(a1,d0.l),a0
  2237.     move.b    (a0),d1
  2238.     and.l    #$FF,d1
  2239.     not.l    d1
  2240.     move.l    $20(a5),a1
  2241.     lea    0(a1,d0.l),a0
  2242.     move.b    d1,(a0)
  2243. ;           alpha[i] = ~alpha[i];
  2244.     move.l    $24(a5),a1
  2245.     lea    0(a1,d0.l),a0
  2246.     move.b    (a0),d1
  2247.     and.l    #$FF,d1
  2248.     not.l    d1
  2249.     move.l    $24(a5),a1
  2250.     lea    0(a1,d0.l),a0
  2251.     move.b    d1,(a0)
  2252. L636
  2253.     addq.l    #1,d0
  2254. L637
  2255.     cmp.l    d2,d0
  2256.     blo.b    L634
  2257. L638
  2258. ;     
  2259.     bra    L712
  2260. L639
  2261. ;     for (i=0;
  2262.     moveq    #0,d0
  2263.     bra.b    L643
  2264. L640
  2265. ;        if (mask[i]) 
  2266.     move.l    $28(a5),a1
  2267.     lea    0(a1,d0.l),a0
  2268.     move.b    (a0),d1
  2269.     beq.b    L642
  2270. L641
  2271. ;           red[i]   = rdest[i];
  2272.     lea    -$12C0(a5),a0
  2273.     add.l    d0,a0
  2274.     move.b    (a0),d1
  2275.     lea    0(a2,d0.l),a0
  2276.     move.b    d1,(a0)
  2277. ;           green[i] = gdest[i];
  2278.     lea    -$2580(a5),a0
  2279.     add.l    d0,a0
  2280.     move.b    (a0),d1
  2281.     move.l    $1C(a5),a1
  2282.     lea    0(a1,d0.l),a0
  2283.     move.b    d1,(a0)
  2284. ;           blue[i]  = bdest[i];
  2285.     lea    -$3840(a5),a0
  2286.     add.l    d0,a0
  2287.     move.b    (a0),d1
  2288.     move.l    $20(a5),a1
  2289.     lea    0(a1,d0.l),a0
  2290.     move.b    d1,(a0)
  2291. ;           alpha[i] = adest[i];
  2292.     lea    -$4B00(a5),a0
  2293.     add.l    d0,a0
  2294.     move.b    (a0),d1
  2295.     move.l    $24(a5),a1
  2296.     lea    0(a1,d0.l),a0
  2297.     move.b    d1,(a0)
  2298. L642
  2299.     addq.l    #1,d0
  2300. L643
  2301.     cmp.l    d2,d0
  2302.     blo.b    L640
  2303. L644
  2304. ;     
  2305.     bra    L712
  2306. L645
  2307. ;     for (i=0;
  2308.     moveq    #0,d0
  2309.     bra.b    L649
  2310. L646
  2311. ;        if (mask[i]) 
  2312.     move.l    $28(a5),a1
  2313.     lea    0(a1,d0.l),a0
  2314.     move.b    (a0),d1
  2315.     beq.b    L648
  2316. L647
  2317. ;           red[i]   = ~rdest[i];
  2318.     lea    -$12C0(a5),a0
  2319.     add.l    d0,a0
  2320.     move.b    (a0),d1
  2321.     and.l    #$FF,d1
  2322.     not.l    d1
  2323.     lea    0(a2,d0.l),a0
  2324.     move.b    d1,(a0)
  2325. ;           green[i] = ~gdest[i];
  2326.     lea    -$2580(a5),a0
  2327.     add.l    d0,a0
  2328.     move.b    (a0),d1
  2329.     and.l    #$FF,d1
  2330.     not.l    d1
  2331.     move.l    $1C(a5),a1
  2332.     lea    0(a1,d0.l),a0
  2333.     move.b    d1,(a0)
  2334. ;           blue[i]  = ~bdest[i];
  2335.     lea    -$3840(a5),a0
  2336.     add.l    d0,a0
  2337.     move.b    (a0),d1
  2338.     and.l    #$FF,d1
  2339.     not.l    d1
  2340.     move.l    $20(a5),a1
  2341.     lea    0(a1,d0.l),a0
  2342.     move.b    d1,(a0)
  2343. ;           alpha[i] = ~adest[i];
  2344.     lea    -$4B00(a5),a0
  2345.     add.l    d0,a0
  2346.     move.b    (a0),d1
  2347.     and.l    #$FF,d1
  2348.     not.l    d1
  2349.     move.l    $24(a5),a1
  2350.     lea    0(a1,d0.l),a0
  2351.     move.b    d1,(a0)
  2352. L648
  2353.     addq.l    #1,d0
  2354. L649
  2355.     cmp.l    d2,d0
  2356.     blo.b    L646
  2357. L650
  2358. ;     
  2359.     bra    L712
  2360. L651
  2361. ;     for (i=0;
  2362.     moveq    #0,d0
  2363.     bra.b    L655
  2364. L652
  2365. ;        if (mask[i]) 
  2366.     move.l    $28(a5),a1
  2367.     lea    0(a1,d0.l),a0
  2368.     move.b    (a0),d1
  2369.     beq.b    L654
  2370. L653
  2371. ;           red[i]   &= rdest[i];
  2372.     lea    -$12C0(a5),a0
  2373.     add.l    d0,a0
  2374.     move.b    (a0),d3
  2375.     lea    0(a2,d0.l),a0
  2376.     move.b    (a0),d1
  2377.     and.b    d3,d1
  2378.     move.b    d1,(a0)
  2379. ;           green[i] &= gdest[i];
  2380.     lea    -$2580(a5),a0
  2381.     add.l    d0,a0
  2382.     move.b    (a0),d3
  2383.     move.l    $1C(a5),a1
  2384.     lea    0(a1,d0.l),a0
  2385.     move.b    (a0),d1
  2386.     and.b    d3,d1
  2387.     move.b    d1,(a0)
  2388. ;           blue[i]  &= bdest[i];
  2389.     lea    -$3840(a5),a0
  2390.     add.l    d0,a0
  2391.     move.b    (a0),d3
  2392.     move.l    $20(a5),a1
  2393.     lea    0(a1,d0.l),a0
  2394.     move.b    (a0),d1
  2395.     and.b    d3,d1
  2396.     move.b    d1,(a0)
  2397. ;           alpha[i] &= adest[i];
  2398.     lea    -$4B00(a5),a0
  2399.     add.l    d0,a0
  2400.     move.b    (a0),d3
  2401.     move.l    $24(a5),a1
  2402.     lea    0(a1,d0.l),a0
  2403.     move.b    (a0),d1
  2404.     and.b    d3,d1
  2405.     move.b    d1,(a0)
  2406. L654
  2407.     addq.l    #1,d0
  2408. L655
  2409.     cmp.l    d2,d0
  2410.     blo.b    L652
  2411. L656
  2412. ;     
  2413.     bra    L712
  2414. L657
  2415. ;     for (i=0;
  2416.     moveq    #0,d0
  2417.     bra    L661
  2418. L658
  2419. ;        if (mask[i]) 
  2420.     move.l    $28(a5),a1
  2421.     lea    0(a1,d0.l),a0
  2422.     move.b    (a0),d1
  2423.     beq    L660
  2424. L659
  2425. ;           red[i]   = ~(red[i]   & rdest[i]);
  2426.     lea    0(a2,d0.l),a0
  2427.     move.b    (a0),d1
  2428.     and.l    #$FF,d1
  2429.     lea    -$12C0(a5),a0
  2430.     add.l    d0,a0
  2431.     move.b    (a0),d3
  2432.     and.l    #$FF,d3
  2433.     and.l    d3,d1
  2434.     not.l    d1
  2435.     lea    0(a2,d0.l),a0
  2436.     move.b    d1,(a0)
  2437. ;           green[i] = ~(green[i] & gdest[i]);
  2438.     move.l    $1C(a5),a1
  2439.     lea    0(a1,d0.l),a0
  2440.     move.b    (a0),d1
  2441.     and.l    #$FF,d1
  2442.     lea    -$2580(a5),a0
  2443.     add.l    d0,a0
  2444.     move.b    (a0),d3
  2445.     and.l    #$FF,d3
  2446.     and.l    d3,d1
  2447.     not.l    d1
  2448.     move.l    $1C(a5),a1
  2449.     lea    0(a1,d0.l),a0
  2450.     move.b    d1,(a0)
  2451. ;           blue[i]  = ~(blue[i]  & bdest[i]);
  2452.     move.l    $20(a5),a1
  2453.     lea    0(a1,d0.l),a0
  2454.     move.b    (a0),d1
  2455.     and.l    #$FF,d1
  2456.     lea    -$3840(a5),a0
  2457.     add.l    d0,a0
  2458.     move.b    (a0),d3
  2459.     and.l    #$FF,d3
  2460.     and.l    d3,d1
  2461.     not.l    d1
  2462.     move.l    $20(a5),a1
  2463.     lea    0(a1,d0.l),a0
  2464.     move.b    d1,(a0)
  2465. ;           alpha[i] = ~(alpha[i] & adest[i]);
  2466.     move.l    $24(a5),a1
  2467.     lea    0(a1,d0.l),a0
  2468.     move.b    (a0),d1
  2469.     and.l    #$FF,d1
  2470.     lea    -$4B00(a5),a0
  2471.     add.l    d0,a0
  2472.     move.b    (a0),d3
  2473.     and.l    #$FF,d3
  2474.     and.l    d3,d1
  2475.     not.l    d1
  2476.     move.l    $24(a5),a1
  2477.     lea    0(a1,d0.l),a0
  2478.     move.b    d1,(a0)
  2479. L660
  2480.     addq.l    #1,d0
  2481. L661
  2482.     cmp.l    d2,d0
  2483.     blo    L658
  2484. L662
  2485. ;     
  2486.     bra    L712
  2487. L663
  2488. ;     for (i=0;
  2489.     moveq    #0,d0
  2490.     bra.b    L667
  2491. L664
  2492. ;        if (mask[i]) 
  2493.     move.l    $28(a5),a1
  2494.     lea    0(a1,d0.l),a0
  2495.     move.b    (a0),d1
  2496.     beq.b    L666
  2497. L665
  2498. ;           red[i]   |= rdest[i];
  2499.     lea    -$12C0(a5),a0
  2500.     add.l    d0,a0
  2501.     move.b    (a0),d3
  2502.     lea    0(a2,d0.l),a0
  2503.     move.b    (a0),d1
  2504.     or.b    d3,d1
  2505.     move.b    d1,(a0)
  2506. ;           green[i] |= gdest[i];
  2507.     lea    -$2580(a5),a0
  2508.     add.l    d0,a0
  2509.     move.b    (a0),d3
  2510.     move.l    $1C(a5),a1
  2511.     lea    0(a1,d0.l),a0
  2512.     move.b    (a0),d1
  2513.     or.b    d3,d1
  2514.     move.b    d1,(a0)
  2515. ;           blue[i]  |= bdest[i];
  2516.     lea    -$3840(a5),a0
  2517.     add.l    d0,a0
  2518.     move.b    (a0),d3
  2519.     move.l    $20(a5),a1
  2520.     lea    0(a1,d0.l),a0
  2521.     move.b    (a0),d1
  2522.     or.b    d3,d1
  2523.     move.b    d1,(a0)
  2524. ;           alpha[i] |= adest[i];
  2525.     lea    -$4B00(a5),a0
  2526.     add.l    d0,a0
  2527.     move.b    (a0),d3
  2528.     move.l    $24(a5),a1
  2529.     lea    0(a1,d0.l),a0
  2530.     move.b    (a0),d1
  2531.     or.b    d3,d1
  2532.     move.b    d1,(a0)
  2533. L666
  2534.     addq.l    #1,d0
  2535. L667
  2536.     cmp.l    d2,d0
  2537.     blo.b    L664
  2538. L668
  2539. ;     
  2540.     bra    L712
  2541. L669
  2542. ;     for (i=0;
  2543.     moveq    #0,d0
  2544.     bra    L673
  2545. L670
  2546. ;        if (mask[i]) 
  2547.     move.l    $28(a5),a1
  2548.     lea    0(a1,d0.l),a0
  2549.     move.b    (a0),d1
  2550.     beq    L672
  2551. L671
  2552. ;           red[i]   = ~(red[i]   | rdest[i]);
  2553.     lea    0(a2,d0.l),a0
  2554.     move.b    (a0),d1
  2555.     and.l    #$FF,d1
  2556.     lea    -$12C0(a5),a0
  2557.     add.l    d0,a0
  2558.     move.b    (a0),d3
  2559.     and.l    #$FF,d3
  2560.     or.l    d3,d1
  2561.     not.l    d1
  2562.     lea    0(a2,d0.l),a0
  2563.     move.b    d1,(a0)
  2564. ;           green[i] = ~(green[i] | gdest[i]);
  2565.     move.l    $1C(a5),a1
  2566.     lea    0(a1,d0.l),a0
  2567.     move.b    (a0),d1
  2568.     and.l    #$FF,d1
  2569.     lea    -$2580(a5),a0
  2570.     add.l    d0,a0
  2571.     move.b    (a0),d3
  2572.     and.l    #$FF,d3
  2573.     or.l    d3,d1
  2574.     not.l    d1
  2575.     move.l    $1C(a5),a1
  2576.     lea    0(a1,d0.l),a0
  2577.     move.b    d1,(a0)
  2578. ;           blue[i]  = ~(blue[i]  | bdest[i]);
  2579.     move.l    $20(a5),a1
  2580.     lea    0(a1,d0.l),a0
  2581.     move.b    (a0),d1
  2582.     and.l    #$FF,d1
  2583.     lea    -$3840(a5),a0
  2584.     add.l    d0,a0
  2585.     move.b    (a0),d3
  2586.     and.l    #$FF,d3
  2587.     or.l    d3,d1
  2588.     not.l    d1
  2589.     move.l    $20(a5),a1
  2590.     lea    0(a1,d0.l),a0
  2591.     move.b    d1,(a0)
  2592. ;           alpha[i] = ~(alpha[i] | adest[i]);
  2593.     move.l    $24(a5),a1
  2594.     lea    0(a1,d0.l),a0
  2595.     move.b    (a0),d1
  2596.     and.l    #$FF,d1
  2597.     lea    -$4B00(a5),a0
  2598.     add.l    d0,a0
  2599.     move.b    (a0),d3
  2600.     and.l    #$FF,d3
  2601.     or.l    d3,d1
  2602.     not.l    d1
  2603.     move.l    $24(a5),a1
  2604.     lea    0(a1,d0.l),a0
  2605.     move.b    d1,(a0)
  2606. L672
  2607.     addq.l    #1,d0
  2608. L673
  2609.     cmp.l    d2,d0
  2610.     blo    L670
  2611. L674
  2612. ;     
  2613.     bra    L712
  2614. L675
  2615. ;     for (i=0;
  2616.     moveq    #0,d0
  2617.     bra.b    L679
  2618. L676
  2619. ;        if (mask[i]) 
  2620.     move.l    $28(a5),a1
  2621.     lea    0(a1,d0.l),a0
  2622.     move.b    (a0),d1
  2623.     beq.b    L678
  2624. L677
  2625. ;           red[i]   ^= rdest[i];
  2626.     lea    -$12C0(a5),a0
  2627.     add.l    d0,a0
  2628.     move.b    (a0),d3
  2629.     lea    0(a2,d0.l),a0
  2630.     move.b    (a0),d1
  2631.     eor.b    d3,d1
  2632.     move.b    d1,(a0)
  2633. ;           green[i] ^= gdest[i];
  2634.     lea    -$2580(a5),a0
  2635.     add.l    d0,a0
  2636.     move.b    (a0),d3
  2637.     move.l    $1C(a5),a1
  2638.     lea    0(a1,d0.l),a0
  2639.     move.b    (a0),d1
  2640.     eor.b    d3,d1
  2641.     move.b    d1,(a0)
  2642. ;           blue[i]  ^= bdest[i];
  2643.     lea    -$3840(a5),a0
  2644.     add.l    d0,a0
  2645.     move.b    (a0),d3
  2646.     move.l    $20(a5),a1
  2647.     lea    0(a1,d0.l),a0
  2648.     move.b    (a0),d1
  2649.     eor.b    d3,d1
  2650.     move.b    d1,(a0)
  2651. ;           alpha[i] ^= adest[i];
  2652.     lea    -$4B00(a5),a0
  2653.     add.l    d0,a0
  2654.     move.b    (a0),d3
  2655.     move.l    $24(a5),a1
  2656.     lea    0(a1,d0.l),a0
  2657.     move.b    (a0),d1
  2658.     eor.b    d3,d1
  2659.     move.b    d1,(a0)
  2660. L678
  2661.     addq.l    #1,d0
  2662. L679
  2663.     cmp.l    d2,d0
  2664.     blo.b    L676
  2665. L680
  2666. ;     
  2667.     bra    L712
  2668. L681
  2669. ;     for (i=0;
  2670.     moveq    #0,d0
  2671.     bra    L685
  2672. L682
  2673. ;        if (mask[i]) 
  2674.     move.l    $28(a5),a1
  2675.     lea    0(a1,d0.l),a0
  2676.     move.b    (a0),d1
  2677.     beq    L684
  2678. L683
  2679. ;           red[i]   = ~(red[i]   ^ rdest[i]);
  2680.     lea    0(a2,d0.l),a0
  2681.     move.b    (a0),d1
  2682.     and.l    #$FF,d1
  2683.     lea    -$12C0(a5),a0
  2684.     add.l    d0,a0
  2685.     move.b    (a0),d3
  2686.     and.l    #$FF,d3
  2687.     eor.l    d3,d1
  2688.     not.l    d1
  2689.     lea    0(a2,d0.l),a0
  2690.     move.b    d1,(a0)
  2691. ;           green[i] = ~(green[i] ^ gdest[i]);
  2692.     move.l    $1C(a5),a1
  2693.     lea    0(a1,d0.l),a0
  2694.     move.b    (a0),d1
  2695.     and.l    #$FF,d1
  2696.     lea    -$2580(a5),a0
  2697.     add.l    d0,a0
  2698.     move.b    (a0),d3
  2699.     and.l    #$FF,d3
  2700.     eor.l    d3,d1
  2701.     not.l    d1
  2702.     move.l    $1C(a5),a1
  2703.     lea    0(a1,d0.l),a0
  2704.     move.b    d1,(a0)
  2705. ;           blue[i]  = ~(blue[i]  ^ bdest[i]);
  2706.     move.l    $20(a5),a1
  2707.     lea    0(a1,d0.l),a0
  2708.     move.b    (a0),d1
  2709.     and.l    #$FF,d1
  2710.     lea    -$3840(a5),a0
  2711.     add.l    d0,a0
  2712.     move.b    (a0),d3
  2713.     and.l    #$FF,d3
  2714.     eor.l    d3,d1
  2715.     not.l    d1
  2716.     move.l    $20(a5),a1
  2717.     lea    0(a1,d0.l),a0
  2718.     move.b    d1,(a0)
  2719. ;           alpha[i] = ~(alpha[i] ^ adest[i]);
  2720.     move.l    $24(a5),a1
  2721.     lea    0(a1,d0.l),a0
  2722.     move.b    (a0),d1
  2723.     and.l    #$FF,d1
  2724.     lea    -$4B00(a5),a0
  2725.     add.l    d0,a0
  2726.     move.b    (a0),d3
  2727.     and.l    #$FF,d3
  2728.     eor.l    d3,d1
  2729.     not.l    d1
  2730.     move.l    $24(a5),a1
  2731.     lea    0(a1,d0.l),a0
  2732.     move.b    d1,(a0)
  2733. L684
  2734.     addq.l    #1,d0
  2735. L685
  2736.     cmp.l    d2,d0
  2737.     blo    L682
  2738. L686
  2739. ;     
  2740.     bra    L712
  2741. L687
  2742. ;     for (i=0;
  2743.     moveq    #0,d0
  2744.     bra    L691
  2745. L688
  2746. ;        if (mask[i]) 
  2747.     move.l    $28(a5),a1
  2748.     lea    0(a1,d0.l),a0
  2749.     move.b    (a0),d1
  2750.     beq    L690
  2751. L689
  2752. ;           red[i]   = red[i]   & ~rdest[i];
  2753.     lea    0(a2,d0.l),a0
  2754.     move.b    (a0),d1
  2755.     moveq    #0,d3
  2756.     move.b    d1,d3
  2757.     lea    -$12C0(a5),a0
  2758.     add.l    d0,a0
  2759.     move.b    (a0),d1
  2760.     and.l    #$FF,d1
  2761.     not.l    d1
  2762.     and.l    d1,d3
  2763.     move.b    d3,d1
  2764.     lea    0(a2,d0.l),a0
  2765.     move.b    d1,(a0)
  2766. ;           green[i] = green[i] & ~gdest[i];
  2767.     move.l    $1C(a5),a1
  2768.     lea    0(a1,d0.l),a0
  2769.     move.b    (a0),d1
  2770.     moveq    #0,d3
  2771.     move.b    d1,d3
  2772.     lea    -$2580(a5),a0
  2773.     add.l    d0,a0
  2774.     move.b    (a0),d1
  2775.     and.l    #$FF,d1
  2776.     not.l    d1
  2777.     and.l    d1,d3
  2778.     move.b    d3,d1
  2779.     move.l    $1C(a5),a1
  2780.     lea    0(a1,d0.l),a0
  2781.     move.b    d1,(a0)
  2782. ;           blue[i]  = blue[i]  & ~bdest[i];
  2783.     move.l    $20(a5),a1
  2784.     lea    0(a1,d0.l),a0
  2785.     move.b    (a0),d1
  2786.     moveq    #0,d3
  2787.     move.b    d1,d3
  2788.     lea    -$3840(a5),a0
  2789.     add.l    d0,a0
  2790.     move.b    (a0),d1
  2791.     and.l    #$FF,d1
  2792.     not.l    d1
  2793.     and.l    d1,d3
  2794.     move.b    d3,d1
  2795.     move.l    $20(a5),a1
  2796.     lea    0(a1,d0.l),a0
  2797.     move.b    d1,(a0)
  2798. ;           alpha[i] = alpha[i] & ~adest[i];
  2799.     move.l    $24(a5),a1
  2800.     lea    0(a1,d0.l),a0
  2801.     move.b    (a0),d1
  2802.     moveq    #0,d3
  2803.     move.b    d1,d3
  2804.     lea    -$4B00(a5),a0
  2805.     add.l    d0,a0
  2806.     move.b    (a0),d1
  2807.     and.l    #$FF,d1
  2808.     not.l    d1
  2809.     and.l    d1,d3
  2810.     move.b    d3,d1
  2811.     move.l    $24(a5),a1
  2812.     lea    0(a1,d0.l),a0
  2813.     move.b    d1,(a0)
  2814. L690
  2815.     addq.l    #1,d0
  2816. L691
  2817.     cmp.l    d2,d0
  2818.     blo    L688
  2819. L692
  2820. ;     
  2821.     bra    L712
  2822. L693
  2823. ;     for (i=0;
  2824.     moveq    #0,d0
  2825.     bra    L697
  2826. L694
  2827. ;        if (mask[i]) 
  2828.     move.l    $28(a5),a1
  2829.     lea    0(a1,d0.l),a0
  2830.     move.b    (a0),d1
  2831.     beq    L696
  2832. L695
  2833. ;           red[i]   = ~red[i]   & rdest[i];
  2834.     lea    0(a2,d0.l),a0
  2835.     move.b    (a0),d1
  2836.     and.l    #$FF,d1
  2837.     not.l    d1
  2838.     lea    -$12C0(a5),a0
  2839.     add.l    d0,a0
  2840.     move.b    (a0),d3
  2841.     and.l    #$FF,d3
  2842.     and.l    d3,d1
  2843.     lea    0(a2,d0.l),a0
  2844.     move.b    d1,(a0)
  2845. ;           green[i] = ~green[i] & gdest[i];
  2846.     move.l    $1C(a5),a1
  2847.     lea    0(a1,d0.l),a0
  2848.     move.b    (a0),d1
  2849.     and.l    #$FF,d1
  2850.     not.l    d1
  2851.     lea    -$2580(a5),a0
  2852.     add.l    d0,a0
  2853.     move.b    (a0),d3
  2854.     and.l    #$FF,d3
  2855.     and.l    d3,d1
  2856.     move.l    $1C(a5),a1
  2857.     lea    0(a1,d0.l),a0
  2858.     move.b    d1,(a0)
  2859. ;           blue[i]  = ~blue[i]  & bdest[i];
  2860.     move.l    $20(a5),a1
  2861.     lea    0(a1,d0.l),a0
  2862.     move.b    (a0),d1
  2863.     and.l    #$FF,d1
  2864.     not.l    d1
  2865.     lea    -$3840(a5),a0
  2866.     add.l    d0,a0
  2867.     move.b    (a0),d3
  2868.     and.l    #$FF,d3
  2869.     and.l    d3,d1
  2870.     move.l    $20(a5),a1
  2871.     lea    0(a1,d0.l),a0
  2872.     move.b    d1,(a0)
  2873. ;           alpha[i] = ~alpha[i] & adest[i];
  2874.     move.l    $24(a5),a1
  2875.     lea    0(a1,d0.l),a0
  2876.     move.b    (a0),d1
  2877.     and.l    #$FF,d1
  2878.     not.l    d1
  2879.     lea    -$4B00(a5),a0
  2880.     add.l    d0,a0
  2881.     move.b    (a0),d3
  2882.     and.l    #$FF,d3
  2883.     and.l    d3,d1
  2884.     move.l    $24(a5),a1
  2885.     lea    0(a1,d0.l),a0
  2886.     move.b    d1,(a0)
  2887. L696
  2888.     addq.l    #1,d0
  2889. L697
  2890.     cmp.l    d2,d0
  2891.     blo    L694
  2892. L698
  2893. ;     
  2894.     bra    L712
  2895. L699
  2896. ;     for (i=0;
  2897.     moveq    #0,d0
  2898.     bra    L703
  2899. L700
  2900. ;        if (mask[i]) 
  2901.     move.l    $28(a5),a1
  2902.     lea    0(a1,d0.l),a0
  2903.     move.b    (a0),d1
  2904.     beq    L702
  2905. L701
  2906. ;           red[i]   = red[i]   | ~rdest[i];
  2907.     lea    0(a2,d0.l),a0
  2908.     move.b    (a0),d1
  2909.     moveq    #0,d3
  2910.     move.b    d1,d3
  2911.     lea    -$12C0(a5),a0
  2912.     add.l    d0,a0
  2913.     move.b    (a0),d1
  2914.     and.l    #$FF,d1
  2915.     not.l    d1
  2916.     or.l    d1,d3
  2917.     move.b    d3,d1
  2918.     lea    0(a2,d0.l),a0
  2919.     move.b    d1,(a0)
  2920. ;           green[i] = green[i] | ~gdest[i];
  2921.     move.l    $1C(a5),a1
  2922.     lea    0(a1,d0.l),a0
  2923.     move.b    (a0),d1
  2924.     moveq    #0,d3
  2925.     move.b    d1,d3
  2926.     lea    -$2580(a5),a0
  2927.     add.l    d0,a0
  2928.     move.b    (a0),d1
  2929.     and.l    #$FF,d1
  2930.     not.l    d1
  2931.     or.l    d1,d3
  2932.     move.b    d3,d1
  2933.     move.l    $1C(a5),a1
  2934.     lea    0(a1,d0.l),a0
  2935.     move.b    d1,(a0)
  2936. ;           blue[i]  = blue[i]  | ~bdest[i];
  2937.     move.l    $20(a5),a1
  2938.     lea    0(a1,d0.l),a0
  2939.     move.b    (a0),d1
  2940.     moveq    #0,d3
  2941.     move.b    d1,d3
  2942.     lea    -$3840(a5),a0
  2943.     add.l    d0,a0
  2944.     move.b    (a0),d1
  2945.     and.l    #$FF,d1
  2946.     not.l    d1
  2947.     or.l    d1,d3
  2948.     move.b    d3,d1
  2949.     move.l    $20(a5),a1
  2950.     lea    0(a1,d0.l),a0
  2951.     move.b    d1,(a0)
  2952. ;           alpha[i] = alpha[i] | ~adest[i];
  2953.     move.l    $24(a5),a1
  2954.     lea    0(a1,d0.l),a0
  2955.     move.b    (a0),d1
  2956.     moveq    #0,d3
  2957.     move.b    d1,d3
  2958.     lea    -$4B00(a5),a0
  2959.     add.l    d0,a0
  2960.     move.b    (a0),d1
  2961.     and.l    #$FF,d1
  2962.     not.l    d1
  2963.     or.l    d1,d3
  2964.     move.b    d3,d1
  2965.     move.l    $24(a5),a1
  2966.     lea    0(a1,d0.l),a0
  2967.     move.b    d1,(a0)
  2968. L702
  2969.     addq.l    #1,d0
  2970. L703
  2971.     cmp.l    d2,d0
  2972.     blo    L700
  2973. L704
  2974. ;     
  2975.     bra    L712
  2976. L705
  2977. ;     for (i=0;
  2978.     moveq    #0,d0
  2979.     bra    L709
  2980. L706
  2981. ;        if (mask[i]) 
  2982.     move.l    $28(a5),a1
  2983.     lea    0(a1,d0.l),a0
  2984.     move.b    (a0),d1
  2985.     beq    L708
  2986. L707
  2987. ;           red[i]   = ~red[i]   | rdest[i];
  2988.     lea    0(a2,d0.l),a0
  2989.     move.b    (a0),d1
  2990.     and.l    #$FF,d1
  2991.     not.l    d1
  2992.     lea    -$12C0(a5),a0
  2993.     add.l    d0,a0
  2994.     move.b    (a0),d3
  2995.     and.l    #$FF,d3
  2996.     or.l    d3,d1
  2997.     lea    0(a2,d0.l),a0
  2998.     move.b    d1,(a0)
  2999. ;           green[i] = ~green[i] | gdest[i];
  3000.     move.l    $1C(a5),a1
  3001.     lea    0(a1,d0.l),a0
  3002.     move.b    (a0),d1
  3003.     and.l    #$FF,d1
  3004.     not.l    d1
  3005.     lea    -$2580(a5),a0
  3006.     add.l    d0,a0
  3007.     move.b    (a0),d3
  3008.     and.l    #$FF,d3
  3009.     or.l    d3,d1
  3010.     move.l    $1C(a5),a1
  3011.     lea    0(a1,d0.l),a0
  3012.     move.b    d1,(a0)
  3013. ;           blue[i]  = ~blue[i]  | bdest[i];
  3014.     move.l    $20(a5),a1
  3015.     lea    0(a1,d0.l),a0
  3016.     move.b    (a0),d1
  3017.     and.l    #$FF,d1
  3018.     not.l    d1
  3019.     lea    -$3840(a5),a0
  3020.     add.l    d0,a0
  3021.     move.b    (a0),d3
  3022.     and.l    #$FF,d3
  3023.     or.l    d3,d1
  3024.     move.l    $20(a5),a1
  3025.     lea    0(a1,d0.l),a0
  3026.     move.b    d1,(a0)
  3027. ;           alpha[i] = ~alpha[i] | adest[i];
  3028.     move.l    $24(a5),a1
  3029.     lea    0(a1,d0.l),a0
  3030.     move.b    (a0),d1
  3031.     and.l    #$FF,d1
  3032.     not.l    d1
  3033.     lea    -$4B00(a5),a0
  3034.     add.l    d0,a0
  3035.     move.b    (a0),d3
  3036.     and.l    #$FF,d3
  3037.     or.l    d3,d1
  3038.     move.l    $24(a5),a1
  3039.     lea    0(a1,d0.l),a0
  3040.     move.b    d1,(a0)
  3041. L708
  3042.     addq.l    #1,d0
  3043. L709
  3044.     cmp.l    d2,d0
  3045.     blo    L706
  3046. L710
  3047. ;     
  3048.     bra.b    L712
  3049. L711
  3050. ;     gl_problem(ctx, "Bad function in gl_logicop_rgba_pixels");
  3051.     move.l    #L616,-(a7)
  3052.     move.l    $8(a5),-(a7)
  3053.     jsr    _gl_problem
  3054.     addq.w    #$8,a7
  3055.     movem.l    (a7)+,d2-d5/a2
  3056.     unlk    a5
  3057.     rts
  3058. L712
  3059. ;     return;
  3060.     movem.l    (a7)+,d2-d5/a2
  3061.     unlk    a5
  3062.     rts
  3063.  
  3064. L616
  3065.     dc.b    'Bad function in gl_logicop_rgba_pixels',0
  3066.  
  3067.     END
  3068.