RSzacki

Amiga System User Copper List Example (Rainbow)

Mar 14th, 2016
134
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2.         incdir  'includes:'
  3.         include 'intuition/screens.i'
  4.         include 'graphics/copper.i'
  5.         include 'graphics/videocontrol.i'
  6.         include 'exec/memory.i'
  7.         include 'lvo/graphics_lib.i'
  8.         include 'lvo/exec_lib.i'
  9.         include 'lvo/intuition_lib.i'
  10.  
  11. ; Poczatek programu
  12. start
  13. ; Biblioteki
  14.         lea     (intname,pc),a1
  15.         moveq   #36,d0
  16.         movea.l (4).w,a6
  17.         jsr     (_LVOOpenLibrary,a6)
  18.         move.l  d0,(intbase)
  19.         beq     .noint
  20.  
  21.         lea     (gfxname,pc),a1
  22.         moveq   #36,d0
  23.         movea.l (4).w,a6
  24.         jsr     (_LVOOpenLibrary,a6)
  25.         move.l  d0,(gfxbase)
  26.         beq     .nogfx
  27.  
  28. ; Ekran
  29.         suba.l  a0,a0
  30.         lea     (stags,pc),a1
  31.         movea.l (intbase,pc),a6
  32.         jsr     (_LVOOpenScreenTagList,a6)
  33.         move.l  d0,(screen)
  34.         beq     .noscr
  35.  
  36.         move.l  #ucl_SIZEOF,d0
  37.         move.l  #MEMF_PUBLIC!MEMF_CLEAR,d1
  38.         movea.l (4).w,a6
  39.         jsr     (_LVOAllocMem,a6)
  40.         move.l  d0,(ucopl)
  41.         beq     .nomem
  42.  
  43.         bsr     test
  44.  
  45. .nomem movea.l (screen,pc),a0
  46.         movea.l (intbase,pc),a6
  47.         jsr     (_LVOCloseScreen,a6)
  48.  
  49. .noscr movea.l (gfxbase,pc),a1
  50.         movea.l (4).w,a6
  51.         jsr     (_LVOCloseLibrary,a6)
  52.  
  53. .nogfx movea.l (intbase,pc),a1
  54.         movea.l (4).w,a6
  55.         jsr     (_LVOCloseLibrary,a6)
  56.  
  57. .noint moveq   #0,d0
  58.         rts
  59.  
  60. ; Test
  61. test
  62.        movea.l (ucopl,pc),a2
  63.  
  64.         movea.l a2,a0
  65.         moveq   #16,d0
  66.         movea.l (gfxbase,pc),a6
  67.         jsr     (_LVOUCopperListInit,a6)
  68.  
  69.         movea.l a2,a1
  70.         move.w  #0,d0
  71.         move.w  #0,d1
  72.         jsr     (_LVOCWait,a6)
  73.  
  74.         movea.l a2,a1
  75.         jsr     (_LVOCBump,a6)
  76.  
  77.         movea.l a2,a1
  78.         move.w  #$180,d0
  79.         move.w  #$bbf,d1
  80.         jsr     (_LVOCMove,a6)
  81.  
  82.         movea.l a2,a1
  83.         jsr     (_LVOCBump,a6)
  84.  
  85.         movea.l a2,a1
  86.         move.w  #50,d0
  87.         move.w  #0,d1
  88.         jsr     (_LVOCWait,a6)
  89.  
  90.         movea.l a2,a1
  91.         jsr     (_LVOCBump,a6)
  92.  
  93.         movea.l a2,a1
  94.         move.w  #$180,d0
  95.         move.w  #$ccf,d1
  96.         jsr     (_LVOCMove,a6)
  97.  
  98.         movea.l a2,a1
  99.         jsr     (_LVOCBump,a6)
  100.  
  101.         movea.l a2,a1
  102.         move.w  #100,d0
  103.         move.w  #0,d1
  104.         jsr     (_LVOCWait,a6)
  105.  
  106.         movea.l a2,a1
  107.         jsr     (_LVOCBump,a6)
  108.  
  109.         movea.l a2,a1
  110.         move.w  #$180,d0
  111.         move.w  #$ddf,d1
  112.         jsr     (_LVOCMove,a6)
  113.  
  114.         movea.l a2,a1
  115.         jsr     (_LVOCBump,a6)
  116.  
  117.         movea.l a2,a1
  118.         move.w  #150,d0
  119.         move.w  #0,d1
  120.         jsr     (_LVOCWait,a6)
  121.  
  122.         movea.l a2,a1
  123.         jsr     (_LVOCBump,a6)
  124.  
  125.         movea.l a2,a1
  126.         move.w  #$180,d0
  127.         move.w  #$eef,d1
  128.         jsr     (_LVOCMove,a6)
  129.  
  130.         movea.l a2,a1
  131.         jsr     (_LVOCBump,a6)
  132.         movea.l a2,a1
  133.         move.w  #200,d0
  134.         move.w  #0,d1
  135.         jsr     (_LVOCWait,a6)
  136.  
  137.         movea.l a2,a1
  138.         jsr     (_LVOCBump,a6)
  139.  
  140.         movea.l a2,a1
  141.         move.w  #$180,d0
  142.         move.w  #$fff,d1
  143.         jsr     (_LVOCMove,a6)
  144.  
  145.         movea.l a2,a1
  146.         jsr     (_LVOCBump,a6)
  147.  
  148.         movea.l a2,a1
  149.         move.w  #10000,d0
  150.         move.w  #255,d1
  151.         jsr     (_LVOCWait,a6)
  152.  
  153.         movea.l (screen,pc),a3
  154.         lea     (sc_ViewPort,a3),a3
  155.  
  156.         movea.l (4).w,a6
  157.         jsr     (_LVOForbid,a6)
  158.  
  159.         move.l  a2,(vp_UCopIns,a3)
  160.  
  161.         movea.l (4).w,a6
  162.         jsr     (_LVOPermit,a6)
  163.  
  164.         movea.l (vp_ColorMap,a3),a0
  165.         lea     (utags,pc),a1
  166.         movea.l (gfxbase,pc),a6
  167.         jsr     (_LVOVideoControl,a6)
  168.  
  169.         movea.l (intbase,pc),a6
  170.         jsr     (_LVORethinkDisplay,a6)
  171.  
  172.         move.w  #300-1,d2
  173. .loop  movea.l (gfxbase),a6
  174.         jsr     (_LVOWaitTOF,a6)
  175.         dbra    d2,.loop
  176.  
  177.         movea.l a3,a0
  178.         movea.l (gfxbase,pc),a6
  179.         jsr     (_LVOFreeVPortCopLists,a6)
  180.  
  181.         movea.l (intbase,pc),a6
  182.         jsr     (_LVORemakeDisplay,a6)
  183.  
  184.         rts
  185.  
  186. ; Dane
  187.  
  188. intbase dc.l    0
  189. gfxbase dc.l    0
  190. screen dc.l    0
  191. stags  dc.l    SA_Width,       320
  192.         dc.l    SA_Height,      256
  193.         dc.l    SA_Depth,       4
  194.         dc.l    SA_Quiet,       1
  195.         dc.l    SA_Colors,      cols
  196.         dc.l    TAG_DONE,       0
  197.  
  198. utags  dc.l    VTAG_USERCLIP_SET,      0
  199.         dc.l    VTAG_END_CM,            0
  200.  
  201. ucopl  dc.l    0
  202.  
  203. cols   dc.w    0,      $a,     $a,     $f
  204.         dc.w    -1,     0,      0,      0
  205.  
  206. intname dc.b    'intuition.library',0
  207. gfxname dc.b    'graphics.library',0
RAW Paste Data