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

  1.  
  2. ;  Lezione11i5.s - Una modifica alla solita barra....
  3.  
  4. ; Tasto destro per abbassare la barra; si potrebbe fare una tabella per
  5. ; farla rimbalzare in alto e in basso
  6.  
  7.     SECTION    Coppex,CODE
  8.  
  9. ;    Include    "DaWorkBench.s"    ; togliere il ; prima di salvare con "WO"
  10.  
  11. *****************************************************************************
  12.     include    "startup2.s" ; Salva Copperlist Etc.
  13. *****************************************************************************
  14.  
  15.         ;5432109876543210
  16. DMASET    EQU    %1000001010000000    ; solo copper DMA
  17.  
  18. WaitDisk    EQU    30    ; 50-150 al salvataggio (secondo i casi)
  19.  
  20. START:
  21.     lea    $dff000,a5
  22.     MOVE.W    #DMASET,$96(a5)        ; DMACON - abilita bitplane, copper
  23.                     ; e sprites.
  24.  
  25.     move.l    #COPPERLIST,$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.  
  31. mouse:
  32.     MOVE.L    #$1ff00,d1    ; bit per la selezione tramite AND
  33.     MOVE.L    #$12c00,d2    ; linea da aspettare = $12c
  34. Waity1:
  35.     MOVE.L    4(A5),D0    ; VPOSR e VHPOSR - $dff004/$dff006
  36.     ANDI.L    D1,D0        ; Seleziona solo i bit della pos. verticale
  37.     CMPI.L    D2,D0        ; aspetta la linea $12c
  38.     BNE.S    Waity1
  39. Aspetta:
  40.     MOVE.L    4(A5),D0    ; VPOSR e VHPOSR - $dff004/$dff006
  41.     ANDI.L    D1,D0        ; Seleziona solo i bit della pos. verticale
  42.     CMPI.L    D2,D0        ; aspetta la linea $12c
  43.     BEQ.S    Aspetta
  44.  
  45.     btst    #2,$dff016    ; tasto destro del mouse?
  46.     bne.s    NonAbbassare
  47.     cmp.b    #$c0,OrizzCoord    ; barra gia' abbastanza bassa?
  48.     bhi.s    NonAbbassare
  49.     addq.b    #1,OrizzCoord
  50.  
  51. NonAbbassare:
  52.     bsr.s    CoolRaster
  53.  
  54.     btst    #6,$bfe001    ; mouse premuto?
  55.     bne.s    mouse
  56.     rts
  57.  
  58. *****************************************************************************
  59. ;    routine principale
  60. *****************************************************************************
  61.  
  62. CoolRaster:
  63.     ADDQ.W    #2,OrizzCoord
  64.     BSR.S    CoolEffetto
  65.     BSR.S    ScorriColori    ; fai scorrere i colori della tab
  66.     rts
  67.  
  68.  
  69. *****************************************************************************
  70. ;    Routine di scorrimento dei colori della parte rossa dell'effetto
  71. ;    i colori sono fatti scorrere direttamente nella ColorTab1
  72. *****************************************************************************
  73.  
  74. ScorriColori:
  75.     LEA    ColorTab1(PC),A0
  76.     MOVE.W    (A0),30*2(A0)        ; salva il primo colore in fondo
  77.     LEA    ColorTab1+2(PC),A1    ; indirizzo secondo colore
  78.     MOVEQ    #31-1,D1        ; 30 colori da "spostare"
  79. ScorriTAB:
  80.     MOVE.W    (A1)+,(A0)+        ; colore 2 in colore 1, colore 3 in
  81.     DBRA    D1,ScorriTAB        ; colore 2 eccetera.
  82.     RTS
  83.  
  84. *****************************************************************************
  85.  
  86. ;           _ ____   ____ _
  87. ;                 \ /
  88. ;       .:::::::::: ::::::::::.
  89. ;    ( :::        + +        ::: )
  90. ;       `:::::::::: ::::::::::'
  91. ;           /__  /  \\  __\
  92. ;           \_\ (_____) /_/ 
  93. ;        _/    \_ ___ _/    \_
  94. ;        |       V   V       |
  95. ;       /|\                 /|\
  96. ;       |||                 |||
  97. ;
  98.  
  99. CoolEffetto:
  100.     LEA    CopperBuffer1,A0
  101.     LEA    ColorTab1(PC),A1    ; tabella colori 1
  102.     LEA    ColorTab2(PC),A2    ; tabella colori 2
  103.  
  104.     MOVEQ    #29-1,D0    ; 29 linee per l'effetto
  105.     MOVE.W    OrizzCoord(PC),D1    ; attuale wait orizzontale e vert.in d1
  106. WRITEBOTHLINES:
  107.     MOVE.W    D1,(A0)+    ; mettila in copperlist
  108.     MOVE.W    #$FFFE,(A0)+    ; seguito dal $FFFE
  109.     MOVE.W    #$0180,(A0)+    ; Color0
  110.     MOVE.W    (A1)+,(A0)+    ; metti il colore dalla tab1
  111.     ADD.W    #$0020,D1    ; sposta il wait 20 passi piu' avanti
  112.     MOVE.W    D1,(A0)+    ; e mettilo in copperlist
  113.     MOVE.W    #$FFFE,(A0)+    ; seguito dal $FFFE
  114.     MOVE.W    #$0180,(A0)+    ; color0
  115.     MOVE.W    (A2)+,(A0)+    ; metti il colore dalla tab2
  116.     ADD.W    #$0020,D1    ; sposta il wait 20 passi piu' avanti
  117.     DBRA    D0,WRITEBOTHLINES
  118.     RTS
  119.  
  120.  
  121. ;    Tabella della sfumatura rossa
  122.  
  123. ColorTab1:    ; 30 valori.w RGB per il color0 in copperlist
  124.  
  125.     dc.W    $100,$200,$300
  126.     dc.W    $400,$500,$600,$700,$800,$900,$A00,$B00,$C00,$D00,$E00,$F00
  127.     dc.W     $E00,$D00,$C00,$B00,$A00,$900,$800,$700,$600,$500,$400,$300
  128.     dc.W    $200,$100,$101
  129.  
  130.  
  131.  
  132. ;    Tabella della sfumatura grigia
  133.  
  134. ColorTab2:    ; 30 valori.w RGB per il color0 in copperlist
  135.  
  136.     dc.W    $000
  137.     dc.W    $111,$222,$333,$444,$555,$666,$777,$888,$999,$AAA,$BBB,$CCC
  138.     dc.W    $DDD,$EEE,$DDD,$CCC,$BBB
  139.     dc.W    $AAA,$999,$888,$777,$666,$555,$444,$333,$222,$111,$000
  140.     dc.w    $000
  141.  
  142. ;    Questo e' il wait iniziale
  143.  
  144. OrizzCoord:
  145.      dc.W $3A07
  146.  
  147.  
  148. *****************************************************************************
  149. ;    Copperlist
  150. *****************************************************************************
  151.  
  152.     SECTION    COP,DATA_C
  153.  
  154. COPPERLIST:
  155.     dc.w    $100,$200    ; bplcon0 - no bitplanes
  156.     DC.W    $0180,$0000    ; color0 nero
  157.     DC.W    $2B07,$FFFE    ; wait linea $2b
  158. CopperBuffer1:
  159.      dcb.W    29*8,0
  160.  
  161.     dc.W    $0180,$000    ; color0 nero
  162.  
  163.  
  164.     dc.w    $d007,$fffe    ; Wait linea $d0
  165.     dc.w    $180,$035
  166.     dc.w    $d207,$fffe    ; Wait linea $d0
  167.     dc.w    $180,$047
  168.     dc.w    $d607,$fffe    ; Wait linea $d0
  169.     dc.w    $180,$059
  170.  
  171.     dc.W    $FFFF,$FFFE    ; fine della copperlist
  172.  
  173.     end
  174.  
  175.