home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 109 / EnigmaAmiga109CD.iso / software / testi / corsoasm / sorgenti7 / lezione11g3.s < prev    next >
Text File  |  1995-09-29  |  6KB  |  150 lines

  1.  
  2. ; Lezione11g3.s -  Uso della caratteristica del copper di richiedere 8 pixel
  3. ;           orizzontali per eseguire un suo "MOVE".
  4.  
  5.     Section    coppuz,CODE
  6.  
  7. ;    Include    "DaWorkBench.s"    ; togliere il ; prima di salvare con "WO"
  8.  
  9. *****************************************************************************
  10.     include    "startup2.s"    ; salva interrupt, dma eccetera.
  11. *****************************************************************************
  12.  
  13. ; Con DMASET decidiamo quali canali DMA aprire e quali chiudere
  14.  
  15.         ;5432109876543210
  16. DMASET    EQU    %1000001010000000    ; copper DMA abilitato
  17.  
  18. WaitDisk    EQU    30    ; 50-150 al salvataggio (secondo i casi)
  19.  
  20. START:
  21.     BSR.W    MAKE_IT        ; Prepara la copperlist
  22.  
  23.     MOVE.W    #DMASET,$96(a5)        ; DMACON - abilita bitplane, copper
  24.                     ; e sprites.
  25.     move.l    #COPLIST,$80(a5)    ; Puntiamo la nostra COP
  26.     move.w    d0,$88(a5)        ; Facciamo partire la COP
  27.     move.w    #0,$1fc(a5)        ; Disattiva l'AGA
  28.     move.w    #$c00,$106(a5)        ; Disattiva l'AGA
  29.     move.w    #$11,$10c(a5)        ; Disattiva l'AGA
  30. MOUSE:
  31.     BTST    #$06,$BFE001    ; Aspetta la presisone del mouse
  32.     BNE.S    MOUSE
  33.     RTS
  34.  
  35. *************************************************************************
  36. *   Questa routine crea una copperlist con 52 registri COLOR0 per    *
  37. *   Linea, per cui, dato che ogni move della copperlist impiega 8    *
  38. *   pixel (lowres) di tempo per essere eseguita, il color0 viene    *
  39. *   cambiato 52 volte ORIZZONTALMENTE a scatti di 8 pixel lowres    *
  40. *************************************************************************
  41.  
  42. ;      .:::::.
  43. ;     ¦:::·:::¦
  44. ;     |· _ - ·|
  45. ;    C|  o °  l)
  46. ;     ¡_ (_) _|
  47. ;     |\_____/|
  48. ;     l_l±±±|_!
  49. ;      `-----'xCz
  50.  
  51. LINSTART    EQU    $8021fffe    ; Cambiare "$80" per iniziare ad un
  52.                     ; altra linea verticale.
  53. LINUM        EQU    80        ; Numero di linee da fare.
  54.  
  55. MAKE_IT:
  56.     lea    cols(pc),a0    ; Indirizzo tabella con i colori in a0
  57.     lea    CopBuf,a1    ; Indirizzo spazio in copperlist
  58.     move.l    #LINSTART,d0    ; Primo "wait"
  59.     move.w    #LINUM-1,d1    ; Numero di linee da fare
  60.     move.w    #$180,d3    ; Word per il registro color0 in coplist
  61.     move.l    #$01000000,d4    ; Valore da "addare" al wait per farlo waitare
  62.                 ; alla linea successiva.
  63.     moveq    #9,d6        ; e metti il contatore a 9
  64. colcon1:
  65.     move.w    #52-1,d2    ; 52 colori per linea
  66.     move.l    d0,(a1)+    ; Metti il WAIT in copperlist
  67. colcon2:
  68.     move.w    d3,(a1)+    ; Metti il registro COLOR0 ($180)
  69.     move.w    (a0)+,(a1)+    ; Metti il valore del COLOR0 (dalla tabella)
  70.     dbra    d2,colcon2    ; Esegui tutta una linea
  71.     add.l    d4,d0        ; Fai "waitare" alla linea sotto (+$01000000)
  72.     subq.b    #1,d6        ; segna che abbiamo fatto una linea
  73.     bne.s    NonRipartire    ; se ne abbiamo fatte 8, d6=0, allora occorre
  74.                 ; ripartire dal primo colore nella tabella.
  75.     lea    cols(pc),a0    ; tab colori in a0 - riparti col colori.
  76.     moveq    #9,d6        ; e metti il contatore a 8
  77. NonRipartire:
  78.     dbra    d1,colcon1    ; ripeti per il numero di linee da fare
  79.     rts
  80.  
  81.  
  82. ;    Tabella con i 52*9 colori di una linea orizzontale.
  83.  
  84. cols:
  85.     dc.w    $26F,$27E,$28D,$29C,$2AB,$2BA,$2C9,$2D8,$2E7,$2F6
  86.     dc.w    $4E7,$6D8,$8C9,$ABA,$CAA,$D9A,$E8A,$F7A,$F6C,$F5C
  87.     dc.w    $D6D,$B6E,$96F,$76F,$56F,$36F,$26F,$27E,$28D,$29C
  88.     dc.w    $2AB,$2BA,$2C9,$2D8,$2E7,$2F6,$4E7,$6D8,$8C9,$ABA
  89.     dc.w    $CAA,$D9A,$E8A,$F7A,$F6B,$F5C,$D6D,$B6E,$96F,$76F
  90.     dc.w    $56F,$36F,$36F,$37E,$38D,$39C,$3AB,$3BA,$3C9,$3D8
  91.     dc.w    $3E7,$3F6,$4E7,$7D8,$9C9,$BBA,$DAA,$E9A,$F8A,$F7A
  92.     dc.w    $F6C,$F5C,$E6D,$C6E,$A6F,$86F,$66F,$46F,$36F,$37E
  93.     dc.w    $38D,$39C,$3AB,$3BA,$3C9,$3D8,$3E7,$3F6,$5E7,$7D8
  94.     dc.w    $9C9,$BBA,$DAA,$E9A,$F8A,$F7A,$F6B,$F5C,$E6D,$C6E
  95.     dc.w    $A6F,$86F,$46F,$46F,$36E,$37D,$38C,$39B,$3AA,$3B9
  96.     dc.w    $3C8,$3D7,$3E6,$3F5,$4E6,$7D7,$9C8,$BB9,$DA9,$E99
  97.     dc.w    $F89,$F79,$F6B,$F5B,$E6C,$C6D,$A6E,$86E,$66E,$46E
  98.     dc.w    $36E,$37D,$38C,$39B,$3AA,$3B9,$3C8,$3D7,$3E6,$3F5
  99.     dc.w    $5E6,$7D7,$9C8,$BB9,$DA9,$E99,$F89,$F79,$F6A,$F5B
  100.     dc.w    $E6C,$C6E,$A6E,$86E,$46E,$46E,$46E,$47D,$48C,$49B
  101.     dc.w    $4AA,$4B9,$4C8,$4D7,$4E6,$4F5,$5E6,$8D7,$AC8,$CB9
  102.     dc.w    $EA9,$F99,$F89,$F79,$F6B,$F5B,$F6C,$D6D,$B6E,$96E
  103.     dc.w    $76E,$56E,$46E,$47D,$48C,$49B,$4AA,$4B9,$4C8,$4D7
  104.     dc.w    $4E6,$4F5,$6E6,$8D7,$AC8,$CB9,$EA9,$F99,$F89,$F79
  105.     dc.w    $F6A,$F5B,$F6C,$D6E,$B6E,$96E,$56E,$56E,$45E,$46D
  106.     dc.w    $47C,$48B,$49A,$4A9,$4B8,$4C7,$4D6,$4E5,$5D6,$8C7
  107.     dc.w    $AB8,$CA9,$E99,$F89,$F79,$F69,$F5B,$F4B,$F5C,$D5D
  108.     dc.w    $B5E,$95E,$75E,$55E,$45E,$46D,$47C,$48B,$49A,$4A9
  109.     dc.w    $4B8,$4C7,$4D6,$4E5,$6D6,$8C7,$AB8,$CA9,$E99,$F89
  110.     dc.w    $F79,$F69,$F5A,$F4B,$F5C,$D5E,$B5E,$95E,$55E,$55E
  111.     dc.w    $44D,$45C,$46B,$47A,$489,$498,$4A7,$4B6,$4C5,$4D4
  112.     dc.w    $5C5,$8B6,$AA7,$C98,$E88,$F78,$F68,$F68,$F59,$F4A
  113.     dc.w    $F4B,$D4C,$B4D,$94D,$74D,$54D,$44D,$45C,$46B,$47A
  114.     dc.w    $489,$498,$4A7,$4B6,$4C5,$4D4,$6C5,$8B6,$AA7,$C98
  115.     dc.w    $E88,$F78,$F68,$F58,$F49,$F3A,$F4B,$D4D,$B4D,$94D
  116.     dc.w    $54D,$54D,$44C,$45B,$46A,$479,$488,$499,$4A6,$4B5
  117.     dc.w    $4C4,$4D3,$5C4,$8B5,$AA6,$C97,$E87,$F77,$F67,$F67
  118.     dc.w    $F58,$F49,$F4C,$D4B,$B4C,$94C,$74C,$54C,$44C,$45B
  119.     dc.w    $46A,$479,$488,$497,$4A6,$4B5,$4C4,$4D3,$6C4,$8B5
  120.     dc.w    $AA6,$C97,$E87,$F77,$F67,$F57,$F48,$F39,$F4A,$D4C
  121.     dc.w    $B4C,$94C,$54C,$54C,$44B,$45A,$469,$478,$487,$498
  122.     dc.w    $4A5,$4B4,$4C3,$4D2,$5C3,$8B4,$AA5,$C96,$E86,$F76
  123.     dc.w    $F66,$F66,$F57,$F48,$F4B,$D4A,$B4B,$94B,$74B,$54B
  124.     dc.w    $44B,$45A,$469,$478,$487,$496,$4A5,$4B4,$4C3,$4D2
  125.     dc.w    $6C3,$8B4,$AA5,$C96,$E86,$F76,$F66,$F56,$F47,$F38
  126.     dc.w    $F49,$D4B,$B4B,$94B,$54B,$54B,$44A,$459,$468,$477
  127.     dc.w    $486,$497,$4A4,$4B3,$4C2,$4D1,$5C2,$8B3,$AA4,$C95
  128.     dc.w    $E85,$F75,$F65,$F65,$F56,$F47,$F4A,$D49,$B4A,$94A
  129.     dc.w    $74A,$54A,$44A,$459,$468,$477,$486,$495,$4A4,$4B3
  130.     dc.w    $4C2,$4D1,$6C2,$8B3,$AA4,$C95,$E85,$F75,$F65,$F55
  131.     dc.w    $F46,$F37,$F48,$D4A,$B4A,$94A,$54A,$54A
  132.  
  133. *****************************************************************************
  134.  
  135.     section    coppa,data_C
  136.  
  137. COPLIST:
  138.     DC.W    $100,$200    ; BplCon0 - no bitplanes
  139.     DC.W    $180,$003    ; Color0 - blu
  140. CopBuf:
  141.     dcb.w    (52*2)*LINUM+(2*linum),0    ; Spazio per la copperlist.
  142.  
  143.     DC.W    $180,$003    ; Color0 - blu
  144.     dc.w    $ffff,$fffe    ; Fine copperlist
  145.  
  146.     END
  147.  
  148. Sempre piu' colorato, ma in sostanza non e' cambiato niente da Lezione11g1.s
  149.  
  150.