; ColorCycle

ExecBase=   4                      ;ROM-entry
OpenLib=    -552                   ;Open een library
LoadRGB=    -192                   ;Laden van de kleuren
CloseLib=   -414                   ;Sluiten library

Cycle: movem.l   d0-d7/a0-a6,-(sp) ;Alles op de stack
       move.l    ExecBase,a6       ;4 Naar pointer
       lea       GFXName,a1        ;Naam van Graphics.library
       moveq     #0,d0             ;
       jsr       OpenLib(a6)       ;Open de Graphics.library
       tst.l     d0                ;Test of het gelukt is
       beq       Exit              ;Nee, dan stoppen
       move.l    d0,a6             ;Pointer opslaan in A6
       move.l    64(sp),a0         ;Window(7) van stack pakken
       move.l    46(a0),a0         ;x
       add.l     #44,a0            ;x uitrekenen van de plaats
       move.l    4(a0),a1          ;x van de kleur-tabel
       move.l    4(a1),a1          ;x
       lea       CTab,a2           ;Eigen kleur-tabel
       moveq     #15,d0            ;15 longs

CopyCT:
       move.l    (a1)+,(a2)+       ;Sla kleurentabel van het
       dbra      d0,CopyCT         ;  scherm op voor later
       movem.l   68(sp),d0-d1      ;Haal start en eind van stack
       andi.w    #31,d0            ;And met 31 van start
       andi.w    #31,d1            ;And met 31 van eind
       lsl.b     #1,d0             ;Maal 2
       lsl.b     #1,d1             ;Maal 2
       lea       CTab,a1           ;Adres eigen tabel
       move.w    (a1,d1.w),d2      ;Bekijk of het omhoog of
       cmp.b     d0,d1             ;  omlaag moet lopen
       beq       ClLib             ;
       bgt       Up                ;Omhoog

Down:                              ;Omlaag
       move.w    2(a1,d1.w),(a1,d1.w)  ;Verplaats
       addq.b    #2,d1             ;2 Verder
       cmp.b     d0,d1             ;Al klaar ?
       bne       Down              ;Nee, dan verder
       bra       SetLC             ;Ja, dan zetten van de kleuren

Up:                                ;Omhoog
       move.w    -2(a1,d1.w),(a1,d1.w) ;Verplaats
       subq.b    #2,d1             ;2 Minder
       cmp.b     d0,d1             ;Al klaar ?
       bne       Up                ;Nee, dan verder

SetLC:                             ;Klaar
       move.w    d2,(a1,d1.w)      ;Verplaats tabel
       moveq     #32,d0            ;32 woorden
       jsr       LoadRGB(a6)       ;Initialiseer de kleuren

ClLib:                             ;Sluit de library
       move.l    a6,a1             ;Pak de pointer in A1
       move.l    ExecBase,a6       ;ROM-pointer in A6
       jsr       CloseLib(a6)      ;Sluiten

Exit:                              ;Einde
       movem.l   (sp)+,d0-d7/a0-a6 ;Alles van de stack af
       rts

GFXName:
       dc.b      'graphics.library',0,0 ;GFX-naam

CTab:
       dc.w      32                ;Buffer van 32 woorden
