**********************************************************************
*	Copperdemo.ASM (Test, test, 1, 2, Flodder )
*
*
*	Demonstration der Befehle zur direkten Programmierung von
*	Copper-Befehlslisten
*
*	Tabulator-Größe : 08

_custom	=	$DFF000

	INCDIR	"MAXON ASM VOL.2:Includes"
	Include	lvo.i			; Offsets
	Include	exec/types.i		; Typ-Defs
	Include	graphics/gfxbase.i 	; Gfx-Base
	Include	hardware/Custom.i	; Custom-Chip-Offsets
 
CALL	MACRO
	IFEQ	NARG-2
	  IFC	\2,Exec
	    move.l Exec.w,a6
	  ELSE
	    move.l \2Base,a6
          ENDIF
        ENDIF
        jsr	_LVO\1(a6)
	ENDM

	; Rekursives Macro, erzeugt Copperliste

COLTAB	MACRO
	CWAIT	CNT,0
	CMOVE	#CNT-$2C&$00F,$180
CNT	SET	CNT+1
	IFCC	CNT,255
	COLTAB
	ENDIF
	ENDM

**********************************************************************
* CLI/WB Startup
	INCLUDE	"MAXON ASM 1.1:Demos/Startup.ASM"
**********************************************************************
	lea	GfxName,a1	;Gfx-Lib
	moveq	#0,d0
	Call	OpenLibrary,Exec	;öffnen
	move.l	d0,_GfxBase		;merken
	beq	Exit			;Fehler !

	Call	Forbid			;Task-Switching verbieten

	lea	_custom,a5		;Custom Basisadresse $DFF000
	move.w	#$7FFF,DMACON(a5)	;DMAs abschalten
	move.w	#$7FFF,INTENA(a5)	;Interrupts abschalten
	move.w	#$7FFF,INTREQ(a5)

	bsr	Main			;Hauptprogramm

	move.w	#$7FFF,DMACON(a5)	;DMAs abschalten
	move.w	#$7FFF,INTENA(a5)	;Interrupts abschalten
	move.w	#$7FFF,INTREQ(a5)

	move.l	_GfxBase,a2		;Gfx
	move.l	gb_copinit(a2),COP1LC(a5)	;Copperliste des
						;Betriebssystems
	move.w	#0,COPJMP1(a5)		;starten
	move.w	#$87F0,DMACON(A5)	;Sys-DMAs
	move.w	#$E02C,INTENA(a5)	;Sys-Interrupts

	Call	Permit			;Task-Switching erlauben

	move.l	a2,a1			;GfxBase nach a1
	Call	CloseLibrary		;Lib schließen
Exit
	moveq	#0,d0
	rts				;fertig !!!

**********************************************************************
*	Hauptprogramm

Main
	lea	CopList,a0
	move.l	a0,COP1LC(a5)		;die neue Copperliste
	move.w	#0,COPJMP1(a5)		;starten

	move.w	#$8280,DMACON(a5)	;Copper-DMA erlauben

Wait	btst	#6,$BFE001		;auf LMB
	bne.s	Wait			;warten
	rts

GfxName	CString	'graphics.library'
	even
_GfxBase	dc.l	0
**********************************************************************
*	Copperliste

	SECTION	"COP",DATA,CHIP	;muß im CHIP-RAM liegen !!!
CopList

	COPPER

CNT	SET	$2C		;erste Zeile
	COLTAB			;Liste erstellen
	CEND			;END-Befehl

	ENDCOP

**********************************************************************






