home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Assembler / dse-src5.dms / in.adf / copper.S < prev    next >
Encoding:
Text File  |  1990-05-07  |  1.8 KB  |  130 lines

  1.     jmp     start
  2.  
  3. intena=    $9a
  4. dmacon=    $96
  5. color00=    $180
  6. cop1lc=    $80
  7. cop2lc=    $84
  8. copjmp1=    $88
  9. copjmp2=    $8a
  10. ciaapra=    $bfe001
  11. openlibrary=    -30-522
  12. forbid=    -30-102
  13. permit=    -30-108
  14. allocmem=    -30-168
  15. freemem=    -30-180
  16. startlist=    38
  17. execbase=    4
  18. chip=    2
  19.  
  20. sl:    dc.l    0
  21. cladr:    dc.l    0
  22. grname:    dc.b    "graphics.library",0
  23. p:    dc.b    7
  24. dp:    dc.b    1
  25. dx:    dc.b    -1
  26.     even
  27.  
  28. clstart:
  29.     dc.w    color00,$0000
  30.     dc.w    $800f,$fffe
  31.     dc.w    color00,$0508
  32.     dc.w    $810f,$fffe
  33.     dc.w    color00,$0908
  34.     dc.w    $820f,$fffe
  35.     dc.w    color00,$0f08
  36.     dc.w    $850f,$fffe
  37.     dc.w    color00,$0908
  38.     dc.w    $860f,$fffe
  39.     dc.w    color00,$0508
  40.     dc.w    $870f,$fffe
  41.     dc.w    color00,$0000
  42.     dc.w    $ffff,$fffe
  43. clend:
  44. clsize=    clend - clstart
  45.  
  46. start:
  47.     jsr    initialize
  48. s1:    btst    #6,ciaapra
  49.     beq    end
  50.     move.b    p,d0
  51. s2:    move.l    $dff004,d2
  52.     and.l    #$0001ff00,d2
  53.     cmp.l    #$00001000,d2
  54.     bne    s2
  55.     sub.b    #1,d0
  56.     bne    s2
  57.     jsr    calc_offset
  58.     jsr    new_cop
  59.     jmp    s1
  60.  
  61. calc_offset:
  62.     move.b    dp,d0    
  63.     add.b    d0,p
  64.     cmp.b    #1,p
  65.     bne    c1
  66.     move.b    #1,dp
  67. c1:    cmp.b    #11,p
  68.     bne    c2
  69.     move.b    #-1,dp
  70.     cmp.b    #1,dx
  71.     bne    c3
  72.     move.b    #-1,dx
  73.     jmp    c2
  74. c3:    cmp.b    #-1,dx
  75.     bne    c2
  76.     move.b    #1,dx
  77. c2:    rts
  78.  
  79. new_cop:
  80.     move.l    cladr,a6
  81.     move.b    dx,d0
  82.     sub.b    d0,04(a6)
  83.     sub.b    d0,12(a6)
  84.     sub.b    d0,20(a6)
  85.     add.b    d0,28(a6)
  86.     add.b    d0,36(a6)
  87.     add.b    d0,44(a6)
  88.     rts
  89.  
  90. initialize:
  91.     move.l    execbase,a6
  92.     moveq    #clsize,d0
  93.     moveq    #chip,d1
  94.     jsr    allocmem(a6)
  95.     move.l    d0,cladr
  96.     beq.s    ende
  97.     lea    clstart,a0
  98.     move.l    cladr,a1
  99.     moveq    #clsize-1,d0
  100. clcopy:    move.b    (a0)+,(a1)+
  101.     dbf    d0,clcopy
  102.     jsr    forbid(a6)
  103.     lea    $dff000,a5
  104.     move.w    #$03a0,dmacon(a5)
  105.     move.l    cladr,cop1lc(a5)
  106.     clr.w    copjmp1(a5)
  107.     move.w    #$8280,dmacon(a5)
  108.     move.l    #grname,a1
  109.     clr.l    d0
  110.     jsr    openlibrary(a6)
  111.     move.l    d0,a4
  112.     move.l    startlist(a4),sl
  113.     rts
  114.  
  115. end:
  116.     move.l    execbase,a6
  117.     move.l    #$dff000,a5
  118.     move.l    sl,cop1lc(a5)
  119.     clr.w    copjmp1(a5)
  120.     move.w    #$8310,dmacon(a5)
  121.     jsr    permit(a6)
  122.     move.l    cladr,a1
  123.     moveq    #clsize,d0
  124.     jsr    freemem(a6)
  125. ende:    clr.l    d0
  126.     rts
  127.  
  128.  
  129.  
  130.