File: ART_CYCL.S - Tab length: 1 2 4 8 - Lines: on off - No wrap: on off

;rockyone   pour MI-3  
;
;
; CYCLE COULEURS  : ART DIRECTOR : ART  ( basse r�solution )
; ------------------------------------------------------------
;
;Anime  buffer 512 octets
; +0    8 palette 16 words colors
; +256  8 octets   1 octet par palette valeur 0 � 9
    nombre de vbl pour chaque palette
;    0 = pal not display
;    
; +287  1 byte    numero de la palette de l'image   0 � 8
;                        
;       +288 a +512     inutilis�
;    
;    call Art_cycle( L Anime)
;  
;        
;------------------------------------------------------------------------
 movem.l d0-d7/a0-a6,-(a7)
 move.l 64(sp),a5

 lea.l 256(a5),a6 ; Adresse des nombres de vbl par palette
 moveq.l #0,d6
 move.b 287(a5),d6 ; Num�ro de la palette affich� 0 a 7
 move.w d6,d7
 
 lsl.b #5,d7  ; *32
 adda.w d7,a5  ; addresse de la palette a l'�cran

* d4          ; Compteur vbl
 move.b d6,d3  ; Compteur palette
 moveq.l #9,d7  ; Stop en fin de cycle quand  d7 = d3  
;    ; apr�s barre espace
;
;........................................................................
next_pal:
 lea.l 32(a5),a5 ; Adresse Palette suivante
 addq.b #1,d3  ; Conpteur palette +1
 cmpi.b #8,d3  ; Derniere palette du buffer ?
 bne.s nb_vbl

first_pal:
 moveq.l #0,d3  ; Compteur palette sur premi�re palette
 move.l 64(sp),a5 ; Adresse premi�re palette du buffer

nb_vbl:
 moveq.l #0,d4
 move.b 0(a6,d3.w),d4 ; Nombre de VBL pour cette palette
 beq.s next_pal ; 0 = not display this palettte

 lsl.b #1,d4  ;
 subq.b #1,d4  ; -1 pour dbra
           
 moveq.l #7,d5  ; 16 couleurs
 movea.l #$ffff8240,a3
 pal_display:
 move.l (a5)+,(a3)+
 dbra.w d5,pal_display
 suba.l #32,a5

 move.b $fffffc02.w,d0
 cmp.b #$39,d0  : barre espace ?
 bne.s  no_key
 move.b d6,d7  ; Force fin cycle
no_key:
 cmp.b d3,d7  ; Fin cycle ?
 beq.s end_prg

vsync:
 move.w #37,-(sp)
 trap #14
 addq.l #2,sp
 dbra.w d4,vsync

 bra.s next_pal

;..............................
end_prg:
 movem.l (a7)+,d0-d7/a0-a6
 rts

 end
;-------------------------------------------------------------------------