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

  1. ;Dual Playfield demo.
  2. ;Eksempel på hvordan du kan ha to uavhengige
  3. ;playfields.
  4.  
  5. intena=        $9a
  6. intreqr=    $1e
  7. dmacon=        $96
  8. color00=    $180
  9. vposr=        $4
  10.  
  11. cop1lc=        $80
  12. cop2lc=        $84
  13. copjmp1=    $88
  14. copjmp2=    $8a
  15.  
  16. bplcon0=    $100
  17. bplcon1=    $102
  18. bplcon2=    $104
  19. bpl1pth=    $0e0
  20. bpl1ptl=    $0e2
  21. bpl1mod=    $108
  22. bpl2mod=    $10a
  23. diwstrt=    $08e
  24. diwstop=    $090
  25. ddfstrt=    $092
  26. ddfstop=    $094
  27.  
  28. ciaapra=    $bfe001
  29.  
  30. openlibrary=    -30-522
  31. forbid=        -30-102
  32. permit=        -30-108
  33. allocmem=    -30-168
  34. freemem=    -30-180
  35.  
  36. startlist=    38
  37.  
  38. execbase=    4
  39. planesize=    52*345
  40. planewith=    52
  41. CLsize=        5*4
  42. chip=        2
  43. clear=        chip+$10000
  44.  
  45. start:
  46.     move.l    execbase,a6        ;reserverer hukommelse
  47.     move.l    #planesize*2,d0        ;for bitplanes og
  48.     move.l    #clear,d1        ;copper-liste
  49.     jsr    allocmem(a6)
  50.     move.l    d0,planeadr
  51.     beq    ende
  52.     moveq    #clsize,d0
  53.     moveq    #chip,d1
  54.     jsr    allocmem(a6)
  55.     move.l    d0,CLadr
  56.     beq    freeplane
  57.  
  58.     moveq    #1,d4            ;Setter opp copper-
  59.     move.l    d0,a0            ;liste.....
  60.     move.l    planeadr,d1
  61.     move.w    #bpl1pth,d3    
  62. makeCL:    move.w    d3,(a0)+
  63.     addq.w    #2,d3
  64.     swap    d1
  65.     move.w    d1,(a0)+
  66.     move.w    d3,(a0)+
  67.     addq.w    #2,d3
  68.     swap     d1
  69.     move.w    d1,(a0)+
  70.     add.l    #planesize,d1
  71.     dbf    d4,makeCL
  72.     move.l    #$fffffffe,(a0)
  73.  
  74.     jsr    forbid(a6)        ;...and initialize
  75.     lea    $dff000,a5        ;the copper-list
  76.     move.w    #$01e0,dmacon(a5)
  77.     move.l    CLadr,cop1lc(a5)
  78.     clr.w    copjmp1(a5)
  79.  
  80.     move.w    #0,color00(a5)        ;initialze the graphics
  81.     move.w    #$0f00,color00+2(a5)    ;screen
  82.     move.w    #$000f,color00+18(a5)
  83.     move.w    #$1a64,diwstrt(a5)    ;vert,hor start = $1a,$64
  84.     move.w    #$39d1,diwstop(a5)    ;vert,hor end = $139,$1d1
  85.     move.w    #$0020,ddfstrt(a5)
  86.     move.w    #$00d8,ddfstop(a5)
  87.     move.w    #%0010011000000000,bplcon0(a5) 
  88.     clr.w    bplcon1(a5)
  89.     clr.w    bplcon2(a5)
  90.     move.w    #4,bpl1mod(a5)
  91.     move.w    #4,bpl2mod(a5)
  92.     move.w    #$8180,dmacon(a5)    
  93.  
  94.     move.l    planeadr,a0
  95.     move.w    #planesize/2-1,d0
  96.     move.w    #13*16,d1
  97.     move.l    #$ffff0000,d2
  98.     move.w    d1,d3
  99.  
  100. fill:                ;make chessboard pattern
  101.     move.l    d2,(a0)+
  102.     subq.w    #1,d3
  103.     bne.s    continue
  104.     swap    d2
  105.     move    d1,d3
  106.  
  107. continue:
  108.     dbf    d0,fill
  109.  
  110.     clr.l    d0
  111.     clr.l    d1
  112.     move.l    CLadr,a1
  113.     move.l    planeadr,a0
  114.  
  115. wait:    move.l    vposr(a5),d2    ;Denne rutinen får datamaskinen
  116.     and.l    #$0001ff00,d2    ;til å vente til 
  117.     cmp.l    #$00001000,d2    ;vert raster pos = $10
  118. ;              ^^
  119.                 ;Svært nyttig i mange situasjoner
  120.  
  121.     bne.s    wait
  122.  
  123.     addq.b    #2,d0
  124.     cmp.w    #$80,d0
  125.     bne.s    novover
  126.     clr.l    d0
  127. novover:move.l    d0,d2
  128.     lsr.w    #2,d2
  129.     mulu    #52,d2
  130.     add.l    a0,d2
  131.     add.l    #planesize,d2
  132.     move    d2,14(a1)
  133.     swap    d2
  134.     move    d2,10(a1)
  135.  
  136.     addq.b    #1,d1
  137.     cmp.w    #$80,d1
  138.     bne.s    nohover
  139.     clr.l    d1
  140. nohover:move.l    d1,d2
  141.     lsr    #2,d2
  142.     move.l    d2,d3
  143.     and    #$fff0,d2
  144.     sub    d2,d3
  145.     move    d4,bplcon1(a5)
  146.     move    d3,d4
  147.     lsr    #3,d2
  148.     add.l    a0,d2
  149.     move    d2,6(a1)
  150.     swap    d2
  151.     move    d2,2(a1)
  152.     btst    #6,ciaapra
  153.     bne.s    wait
  154.  
  155.     move.l    #grname,a1
  156.     clr.l    d0
  157.     jsr    openlibrary(a6)
  158.     move.l    d0,a4
  159.     move.l    startlist(a4),cop1lc(a5)
  160.     clr    copjmp1(a5)
  161.     move.w    #$83e0,dmacon(a5)
  162.     jsr    permit(a6)
  163.  
  164.     move.l    CLadr,a1
  165.     moveq    #CLsize,d0
  166.     jsr    freemem(a6)
  167.  
  168. freeplane:
  169.     move.l    planeadr,a1
  170.     move.l    #planesize*2,d0
  171.     jsr    freemem(a6)
  172.  
  173. ende:
  174.     clr.l    d0
  175.     rts
  176.  
  177. CLadr:        dc.l    0
  178. planeadr:    dc.l    0
  179. test:        dc.l    0
  180. GRname:        dc.b    'graphics.library',0
  181.  
  182.