&&
------------------------------------------------------------------------------
                  CURSUS ASSEMBLER  -  FADEINOUTTYPE DEEL 2
------------------------------------------------------------------------------

Dit is deel 2, lees eerst deel 1.

; De kleuren moeten weer terug.

FW:
       cmp.l   #$12345678,WhiteCode     ; Werd white-option gekozen?
       bne     FadeIn                   ; Nee, normaal terugzetten.
       jsr     FadeWhite                ; Ja, met effect terugzetten.

FadeIn:
       lea     ChanColArea,a0           ; Kleurentabel naar A0.
       lea     ColorMemory,a2           ; Tabel van de opgeslagen oude waarde.
       moveq   #15,d5                   ; 16 Keer.

FadeInLoop:
       move.l  a0,a1                    ; A0 tussenopslaan.
       move.l  a2,a3                    ; A2 tussenopslaan.
       moveq   #3,d6                    ; 4 Keer lus doorlopen.
&&
Blauw2:
       move.w  (a1),d7                  ; Byte voor de blauw-waarde.
       andi.w  #$000f,d7                ;
       move.w  (a3),d4                  ;
       andi.w  #$000f,d4                ;
       cmp.w   d4,d7                    ; Al wat die moet zijn?
       beq     Groen2                   ; Ja, verder.
       cmp.l   #$12345678,WhiteCode     ; Nee, verder met de volgende.
       bne     BIn                      ;
       jsr     BlauwDecr                ; Waarde verminderen.
       jmp     Groen2                   ; of
BIn:   jsr     BlauwIncr                ; Waarde verhogen.

Groen2:
       move.w  (a1),d7                  ; Byte voor de groen-waarde.
       andi.w  #$00f0,d7                ;
       move.w  (a3),d4                  ;
       andi.w  #$00f0,d4                ;
       cmp.w   d4,d7                    ;
       beq     Rood2                    ;
       cmp.l   #$12345678,WhiteCode     ;
       bne     GIn                      ;
       jsr     GroenDecr                ;
       jmp     Rood2                    ;
GIn:   jsr     GroenIncr                ;
&&
Rood2:
       move.w  (a1),d7                  ; Byte voor de rood-waarde.
       andi.w  #$0f00,d7                ;
       move.w  (a3),d4                  ;
       andi.w  #$0f00,d4                ;
       cmp.w   d4,d7                    ;
       beq     ContFadeIn               ;
       cmp.l   #$12345678,WhiteCode     ;
       bne     RIn                      ;
       jsr     RoodDecr                 ;
       jmp     ContFadeIn               ;
RIn:   jsr     RoodIncr                 ;

; De wachtlus van 2/50e van een sekonde tussen elke kleur.

ContFadeIn:
       add.l   #2,a1                    ; A1 naar de volgende tabel-waarde.
       add.l   #2,a3                    ; A2 naar de volgende tabel-waarde.
       dbra    d6,Blauw2                ; Einde binnenste lus.
       movem.l a0-a6/d0-d7,-(a7)        ; Registers redden.
       move.l  GraphicsBase,a6          ; GraphicsBase naar A6.
       jsr     WriteColorMap            ; Kleuren-tabel naar ColorMap.
       move.l  DosBase,a6               ; DosBase naar A6.
       move.l  #2,d1                    ; Tijd 2/50e sekonde.
       jsr     Delay(a6)                ; Wachten.
       movem.l (a7)+,a0-a6/d0-d7        ; Registers terugzetten.
       dbra    d5,FadeInLoop            ; Einde buitenste lus.
&&
; Sluiten van alle libraries en het programma stoppen.

Graphics_Sluiten:
       move.l  ExecBase,a6              ; ExecBase naar A6.
       move.l  GraphicsBase,a1          ; GraphicsBase naar A1.
       jsr     CloseLibrary(a6)         ; Graphics.Library Sluiten.
Dos_Sluiten:
       move.l  DosBase,a1               ; DosBase naar A1.
       jsr     CloseLibrary(a6)         ; Dos.Library Sluiten.
End:
       clr.l   d0                       ; D0 wissen.
       rts                              ; Einde.

; De diversie kleur-aanpas-routines.

BlauwIncr:
       add.w   #1,(a1)                  ; Blauw-Waarde verhogen.
       rts

GroenIncr:
       add.w   #16,(a1)                 ; Groen-Waarde verhogen.
       rts

RoodIncr:
       add.w   #256,(a1)                ; Rood-Waarde verhogen.
       rts
&&
BlauwDecr:
       sub.w   #1,(a1)                  ; Blauw-Waarde verlagen.
       rts

GroenDecr:
       sub.w   #16,(a1)                 ; Groen-Waarde verlagen.
       rts

RoodDecr:
       sub.w   #256,(a1)                ; Rood-Waarde verlagen.
       rts

FadeWhite:
       lea     ChanColArea,a0           ; A0 naar de tabel laten wijzen.
       moveq   #15,d5                   ; 16 Keer lus doorlopen.

FadeWhiteLoop:
       move.l  a0,a1                    ; A0 even opslaan.
       moveq   #3,d6                    ; 4 Keer 2e lus.

WhiteBlauw:
       move.w  (a1),d7                  ; Byte voor de blauw-waarde.
       andi.w  #$000f,d7                ; Isoleren.
       cmp.w   #$f,d7                   ; Al $F ?
       beq     WhiteGroen               ; Ja, dan verder.
       jsr     BlauwIncr
&&
WhiteGroen:
       move.w  (a1),d7                  ; Byte voor de groen-waarde.
       andi.w  #$00f0,d7                ;
       cmp.w   #$f0,d7                  ;
       beq     WhiteRood                ;
       jsr     GroenIncr

WhiteRood:
       move.w  (a1),d7                  ; Byte voor de rood-waarde.
       andi.w  #$0f00,d7                ;
       cmp.w   #$f00,d7                 ;
       beq     WhiteContFadeOut         ;
       jsr     RoodIncr

; Weer die wachtlus.

WhiteContFadeOut:
       add.l   #2,a1                    ; A1 op de volgende kleur-waarde.
                                        ; In tabel zetten.
       dbra    d6,WhiteBlauw            ; Einde binnenste lus.

       movem.l a0-a6/d0-d7,-(a7)        ; Registers redden.
       move.l  GraphicsBase,a6          ; GraphicsBase naar A6.
       jsr     WriteColorMap            ; ColorMap beschrijven.
&&
       move.l  DosBase,a6               ; DosBase naar A6.
       move.l  #2,d1                    ; Tijd 2/50e sekonde.
       jsr     Delay(a6)                ; Wachten.
       movem.l (a7)+,a0-a6/d0-d7        ; Registers terug zetten.
       dbra    d5,FadeWhiteLoop         ; Einde buitenste lus.
       rts

Dit is het einde van deel 2, lees nu deel 3.


















- EINDE DEEL 2 ---------------------------------------------------------------
&&
