&&------------------------------------------------------------------------------
COPPER-CURSUS                                                       LISTING6.S
------------------------------------------------------------------------------

org     $40000
load    $40000

BS=     330*60

x:      move   #$4000,$DFF09A      ; Multitask uitzetten
        move.l #cop,$DFF084        ; Eigen Copperlist aanzetten
        bsr.s  InitC               ; Initialiseer de kleuren

Lus:    cmp.b  #$80,$DFF006        ; Op regel 80 wachten
        bne.s  Lus
        bsr    MakeE               ; Wiebelen
        btst   #6,$BFE001          ; Wachten op de muistoets
        bne.s  Lus
        rts
&&InitC:  lea    Pic+[5*BS],A0       ; Einde bitplanes berekenen
        lea    Col,A1
        move   #$180,D0            ; Eerste kleur
        moveq  #31,D7              ; Aantal kleuren
C1:     move   D0,(A1)+
        move   (A0)+,(A1)+
        addq   #2,D0
        dbf    D7,C1

InitP:  move.l #Pic,D0             ; Startadres van plane
        lea    Adr+2(pc),A0        ; Adres in Copperlist schrijven
        moveq  #5-1,D7             ; Aantal bitplanes

Lus1:   move   D0,4(A0)            ; Low-word
        swap   D0
        move   D0,(A0)             ; High-word
        swap   D0
        add.l  #BS,D0              ; Lengte van een plane
        addq.l #8,A0
        dbf    D7,Lus1
        rts

Tabel:  DC.w   0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,13,12,11
        DC.w   10,9,8,7,6,5,4,3,2,1,-1
&&Start:  Dc.w   0
even

MakeE:  lea    Eff(pc),A0          ; EFF staat in de Copperlist
        lea    Tabel(pc),A1
        move.l #$2FE1FFFE,D0       ; Eerste wacht-kommando
        move   Start(pc),D1        ; Tabelwaarde ophogen
        addq   #2,D1
        cmp    #Start-Tabel-2,D1
        blo.s  Ok1
        clr    D1

Ok1:    move   D1,Start
        move   #256-1,D7           ; Effekt op 256 lijnen

E1:     move.l D0,(A0)+            ; Wachten op de juiste lijn
        move   #$102,(A0)+         ; BPLCON1

Again:  move   (A1,D1.w),D2
        bpl.s  Ok2
        moveq  #0,D1
        bra.s  Again
&&Ok2:    move   D2,(A0)             ; Even planes
        lsl    #4,D2
        or     D2,(A0)+            ; Oneven planes
        add.l  #$01000000,D0       ; Volgende regel
        addq   #2,D1               ; Volgende tabel-waarde
        dbf    D7,E1
        rts

cop:    DC.w   $96,$20
        DC.w   $8E,$3081,$90,$30C1,$92,$38,$94,$D0 ; Schermmaat
        DC.w   $108,20,$10A,20                     ; Modulo
        DC.w   $100,$5200                          ; Grafische mode
Col:    BLK.l  32                                  ; Kleuren
Adr:    DC.w   $E0,,$E2,,$E4,,$E6,,$E8,,$EA,,$EC,,$EE,,$F0,,$F2,0
Eff:    BLK.l  2*256
        DC.l   $FFFFFFFE

Even
Pic:    BLK.b  99100
Einde:  DC.l   0
;
; RI
; PIC5.RAW
; Pic
;

------------------------------------------------------------------------------
&&
