&&------------------------------------------------------------------------------
COPPER-CURSUS DEEL 7                                    PLAATJES VIA DE COPPER
------------------------------------------------------------------------------

Het volgende programma heeft wel ruimte nodig voor een plaatje, maar er hoeft
geen plaatje te worden geladen. Het programma zet eerst alle bits van het
plaatje op 0, het scherm wordt leeg gemaakt. Daarna veranderen we een paar
bytes in de bitmap. Meteen zien we die verandering op het scherm.

Laten we de listing eens bekijken :

LISTING2

org     $40000
load    $40000

x:      move   #$4000,$DFF09A      ; Multitask uitzetten
        move.l #cop,$DFF084        ; Eigen Copperlist aanzetten
        bsr.s  CPic                ; Maak scherm schoon in sub
        bsr.s  Paint               ; Tekenen in plaatje

Wacht:  btst   #6,$BFE001          ; Wachten op de muistoets
        bne.s  Wacht
        rts
&&De sub-routine die het scherm schoon maakt. In BS staat het aantal bytes dat
het bit-plane groot is. Omdat we met lange woorden, = 4 bytes, kunnen werken
delen we dat getal door 4. We schrijven er dan 0 in om alle puntjes te wissen.

CPic:   lea    Pic,A0              ; Adres van het plaatje
        move   #BS/4-1,D7          ; Lengte plaatje gedeeld door 4

Lus:    clr.l  (A0)+               ; Wissen van 4 bytes tegelijk
        dbf    D7,Lus
        rts

We zetten het adres van het bit-plane in register A0 en schrijven een vijftal
bytes ergens in het bit-plane.

Paint:  lea    Pic,A0              ; Adres van het plaatje
        move.l #%10101010101010101010101010101010,(A0)
        move.l #%11111111111111111111111111111111,5*40+10(A0)
        move.l #%10000000000000000000000000000001,6*40+10(A0)
        move.l #%10000000000000000000000000000001,7*40+10(A0)
        move.l #%11111111111111111111111111111111,8*40+10(A0)
        rts
&&cop:    DC.w   $96,$20
        DC.w   $8E,$3081,$90,$30C1,$92,$38,$94,$D0
        DC.w   $100,$1200
        DC.w   $180,0,$182,$FFF
        DC.w   $E0,Pic/$10000,$E2,Pic&$FFFF
        DC.l   $FFFFFFFE

Even
BS=     10240
Pic:    BLK.b  10250
Einde:  DC.l   0

De listing, LISTING2.S, staat in de sub-directory REGISTERS. U moet het nog
wel assembleren. U start het daarna met jx.

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