home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 6 / AACD06.ISO / AACD / Emulation / Atari800 / amiga_asm.s next >
Text File  |  1997-04-03  |  3KB  |  187 lines

  1. .globl _amiga_aga_colour
  2. .globl _amiga_aga_bw
  3. .globl _antic_e_test
  4.  
  5. /*
  6.     D0    outer count & inner count
  7.     D1    colour
  8.     D2    Bits for bitplane  0
  9.     D3    Bits for bitplane  1
  10.     D4    Bits for bitplanes 2 & 3
  11.     D5    Bits for bitplane  4
  12.     D6    Bits for bitplane  5
  13.     D7    Bits for bitplane  6 & 7
  14.     A0    pointer to atari_screen
  15.     A1    pointer to bitmap 0
  16.     A2    pointer to bitmap 4
  17. */
  18. _amiga_aga_colour:
  19.     moveml    d0-d7/a0-a2,-(sp)
  20.  
  21.     movel    48(sp),a0
  22.     movel    52(sp),a1
  23.     lea    46080(a1),a2
  24.  
  25.     movew    #5760-1,d0
  26.  
  27. aga_colour_outer:
  28.     swap    d0
  29.     movew    #15,d0
  30.  
  31. aga_colour_inner:
  32.     moveb    (a0)+,d1
  33.  
  34.     roxrw    #1,d1    /* Bit for bitplane 0 */
  35.     roxlw    #1,d2
  36.  
  37.     roxrw    #1,d1    /* Bit for bitplane 1 */
  38.     roxlw    #1,d3
  39.  
  40.     roxrw    #1,d1    /* Bit for bitplane 2 */
  41.     roxlw    #1,d4
  42.     swap    d4
  43.  
  44.     roxrw    #1,d1    /* Bit for bitplane 3 */
  45.     roxlw    #1,d4
  46.     swap    d4
  47.  
  48.     roxrw    #1,d1    /* Bit for bitplane 4 */
  49.     roxlw    #1,d5
  50.  
  51.     roxrw    #1,d1    /* Bit for bitplane 5 */
  52.     roxlw    #1,d6
  53.  
  54.     roxrw    #1,d1    /* Bit for bitplane 6 */
  55.     roxlw    #1,d7
  56.     swap    d7
  57.  
  58.     roxrw    #1,d1    /* Bit for bitplane 7 */
  59.     roxlw    #1,d7
  60.     swap    d7
  61.  
  62.     dbra    d0,aga_colour_inner
  63.  
  64.     movew    d3,11520(a1)
  65.     movew    d4,23040(a1)
  66.     swap    d4
  67.     movew    d4,34560(a1)
  68.     movew    d2,(a1)+
  69.  
  70.     movew    d6,11520(a2)
  71.     movew    d7,23040(a2)
  72.     swap    d7
  73.     movew    d7,34560(a2)
  74.     movew    d5,(a2)+
  75.  
  76.     swap    d0
  77.     dbra    d0,aga_colour_outer
  78.  
  79.     moveml    (sp)+,d0-d7/a0-a2
  80.  
  81.     rts
  82. /*
  83.     D0    outer count & inner count
  84.     D1    colour
  85.     D2    Bits for bitplane  0
  86.     D3    Bits for bitplane  1
  87.     D4    Bits for bitplanes 2
  88.     D5    Bits for bitplane  3
  89.     A0    pointer to atari_screen
  90.     A1    pointer to bitmap 0
  91.     A2    pointer to bitmap 4
  92. */
  93. _amiga_aga_bw:
  94.     moveml    d0-d7/a0-a2,-(sp)
  95.  
  96.     movel    48(sp),a0
  97.     movel    52(sp),a1
  98.     lea    46080(a1),a2
  99.  
  100.     movew    #5760-1,d0
  101.  
  102. aga_bw_outer:
  103.     swap    d0
  104.     movew    #15,d0
  105.  
  106. aga_bw_inner:
  107.     moveb    (a0)+,d1
  108.  
  109.     roxrw    #1,d1    /* Bit for bitplane 0 */
  110.     roxlw    #1,d2
  111.  
  112.     roxrw    #1,d1    /* Bit for bitplane 1 */
  113.     roxlw    #1,d3
  114.  
  115.     roxrw    #1,d1    /* Bit for bitplane 2 */
  116.     roxlw    #1,d4
  117.  
  118.     roxrw    #1,d1    /* Bit for bitplane 3 */
  119.     roxlw    #1,d5
  120.  
  121.     dbra    d0,aga_bw_inner
  122.  
  123.     movew    d3,11520(a1)
  124.     movew    d4,23040(a1)
  125.     movew    d5,34560(a1)
  126.     movew    d2,(a1)+
  127.  
  128.     clrw    11520(a2)
  129.     clrw    23040(a2)
  130.     clrw    34560(a2)
  131.     clrw    (a2)+
  132.  
  133.     swap    d0
  134.     dbra    d0,aga_bw_outer
  135.  
  136.     moveml    (sp)+,d0-d7/a0-a2
  137.  
  138.     rts
  139.  
  140. _antic_e_test:
  141.  
  142.     moveml d0-d2/a0-a1,-(sp)
  143.  
  144.     movel 24(sp),d0
  145.     movel    28(sp),a0
  146.     movel    32(sp),a1
  147.  
  148. antic_e_loop:
  149.     moveb (a0)+,d1
  150.     beq antic_e_blank
  151.  
  152.     rorw #6,d1
  153.     andb #3,d1
  154.     moveb d1,(a1)+
  155.     moveb d1,(a1)+
  156.  
  157.     rolw #2,d1
  158.     andb #3,d1
  159.     moveb d1,(a1)+
  160.     moveb d1,(a1)+
  161.  
  162.     rolw #2,d1
  163.     andb #3,d1
  164.     moveb d1,(a1)+
  165.     moveb d1,(a1)+
  166.  
  167.     rolw #2,d1
  168.     andb #3,d1
  169.     moveb d1,(a1)+
  170.     moveb d1,(a1)+
  171.  
  172.     dbra d0,antic_e_loop
  173.  
  174.     moveml (sp)+,d0-d2/a0-a1
  175.     rts
  176.  
  177. antic_e_blank:
  178.     clrl (a1)+
  179.     clrl (a1)+
  180.  
  181.     dbra d0,antic_e_loop
  182.  
  183.     moveml (sp)+,d0-d2/a0-a1
  184.     rts
  185.  
  186.  
  187.