
;     Copper Programmierung
;  © 1988 by Julian Rautenberg

allocmem = -198
openlib = -408
closelib = -414
openscr = -198
openwin = -204
closescr = -66
closewin = -72
rtdisplay = -390
viewportadd = -300
cbump = -366
cmove = -372
cwait = -378

 move.l 4,a6       ; Speicher-
 move.l #65538,d1  ; reservierung
 moveq #12,d0      ; für User-
 jsr allocmem(a6)  ; Copper-Liste
 move.l d0,ucl
 lea intnam,a1
 jsr openlib(a6)
 move.l d0,intbas
 lea granam,a1
 jsr openlib(a6)   ; öffnen der
 move.l d0,grabas  ; Libraries,
 move.l intbas,a6  ; des Screens
 lea scrdef,a0     ; und des
 jsr openscr(a6)   ; Windows
 move.l d0,scrhd
 lea windef,a0
 jsr openwin(a6)
 move.l d0,winhd

; Aufbauen der CopperListe
 move.l grabas,a6
 move.l #256,d4    ; y dbra-Wert
 move.l #384,a4    ; Farbregister
xloop:
 moveq #7,d3       ; x dbra-Wert
yloop:
 moveq #7,d2       ; Errechnung
 sub.l d3,d2       ; der Farbe in
 move.l d2,d7      ; d7, des X-
 asl #8,d7         ; Werts in d1,
 asl #1,d7         ; des y-Werts
 move.l d2,d1      ; in d0
 asl #4,d1
 sub.l d2,d1
 asl #3,d2
 add.l d2,d1
 addi.l #45,d1
 move.l #256,d0
 sub.l d4,d0
 add.l d0,d7
 move.l ucl,a1
 jsr cwait(a6)     ; Wait und move-
 move.l ucl,a1     ; befehl in
 jsr cbump(a6)     ; liste über-
 move.l ucl,a1     ; tragen
 move.l a4,d0
 move.l d7,d1
 jsr cmove(a6)
 move.l ucl,a1
 jsr cbump(a6)

 dbra d3,yloop
 dbra d4,xloop

; Initialisierung der CopperListe
 move.l ucl,a1
 move.l #10000,d0
 move.l #256,d1
 jsr cwait(a6)
 move.l winhd,a0
 move.l intbas,a6
 jsr viewportadd(a6)
 move.l d0,a0
 move.l ucl,20(a0)
 jsr rtdisplay(a6)

; Warteschleife
wait:
 btst #6,$bfe001   ; testen des
 bne wait          ; Mousebuttons

; Ende
 move.l intbas,a6
 move.l winhd,a0   ; Schließen der
 jsr closewin(a6)  ; Librarys, des
 move.l scrhd,a0   ; Screens und
 jsr closescr(a6)  ; des Windows
 move.l 4,a6
 move.l intbas,a1
 jsr closelib(a6)
 move.l grabas,a1
 jsr closelib(a6)
 rts

; Variablen und Strukturen
intbas: dc.l 0
grabas: dc.l 0
winhd:  dc.l 0
ucl:    dc.l 0
scrdef:
 dc.w 0,0,640,266,1,0,$8002,15
 dc.l 0,0,0,0
windef:
 dc.w 588,0,52,10,0
 dc.l 0,$10000 ,0,0,0
scrhd: dc.l 0
 dc.w 0,0,0,0,52,20,15
intnam: dc.b "intuition.library",0
granam: dc.b "graphics.library",0,0
