***********************************************************
* This demo was originally an absolute-address, stomp-on-system,
* go-out-of-our-way-to-break-the-rules, sort of demo.  I went through
* it and took out all of the clears to custom chip regs, optimized it a
* bit, and fixed his startup code.
*
* This uses my TakeSystem and ResotreSystem routines that I now use
* in all my demos.  I am spreading them in hopes to get rid of the
* crapy coding pracitces that people have had since the C64 days.
* I'd like to thank Comrade J for his excelent "howtocode" files.
* A lot of the stuff here is based on his words of wisdom. :^).  Anyway,
* these routines, as of version 3.0, handle the following:
*		Getting the VBR.
*		Saving DMACON.
*		Saving and reseting WB view modes.
*		Owning/Disowning the blitter.
*		Pal/Ntsc/AGA modes.
*		Killing multitasking.
*		Killing interrupts.
*
* If you have any questions/comments/suggestions, PLEASE contact me at
* either:
*		idr@rigel.cs.pdx.edu		(internet)
*	- or -
*		Epsilon
*		P.O.B.	1914
*		Beaverton, OR  97075-1914
*		U.S.A.
*
* Many of you may not like the fact that I use includes and system calls,
* I know I don't :), but it is the ONLY SAFE WAY TO TAKE THE SYSTEM!  To
* insure that your demo will work on any system, it's what you have to do.
*
***********************************************************
* Includes
***********************************************************
		incdir	'df1:StartupCode/'
		include	'custom.i'

		incdir	"DevpacAm:include/"
		include	"exec/exec_lib.i"
		include	"exec/execbase.i"
		include	"graphics/gfxbase.i"
		include	"graphics/graphics_lib.i"

***********************************************************
* Other Macros
***********************************************************

CALL		MACRO
		jsr	_LVO\1(a6)
		ENDM

WaitVblank	MACRO
.\@:		move.l	$4-2(a5),d0
		andi.l	#$3ff00,d0
		cmpi.l	#$0f400,d0
		bne.b	.\@
		ENDM

***********************************************************
* Other Equates
***********************************************************

 IFND	gb_ActiView
gb_ActiView	EQU	32
 ENDIF

 IFND	gb_CopInit
gb_CopInit	EQU	36
 ENDIF

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

BEGINish:	movem.l	d0-d7/a0-a6,-(a7)
		bsr.b	TakeSystem
		bsr.w	FixSineList
		bsr.w	Copperinit

		lea	screen,a0
		move.w	#$d00,d0
		bsr	blitclear

		move.l #copper,$80-2(a5)

TestButton:	WaitBlit

		bsr.w	copperfuck
		bsr.w	Texta
		bsr.w	Bitch

		btst.b	#6,$bfe001
		bne.b	TestButton

		bsr.w	RestoreSystem
		movem.l	(a7)+,d0-d7/a0-a6
		rts

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

TakeSystem:	movea.l	4.w,a6		; exec base
		lea	$dff002,a5	; custom chip base + 2

		lea	GraphicsName,a1	; "graphics.library"
		moveq	#0,d0		; any version
		CALL	OpenLibrary	; open it.
		move.l	d0,gfx_base	; save pointer to gfx base
		beq.b	.exit		; if we got a NULL, then exit
		move.l	d0,a6		; for later callls...

		move.l  gb_ActiView(a6),OldView	; save old view

		move.w	#0,a1		; clears full long-word
		CALL	LoadView	; Open a NULL view (resets display
					;   on any Amiga)

		CALL	WaitTOF		; Wait twice so that an interlace
		CALL	WaitTOF		;   display can reset.

		CALL	OwnBlitter	; take over the blitter and...
		CALL	WaitBlit	;   wait for it to finish so we
					;   safely use it as we please.

		movea.l	4.w,a6		; exec base
		CALL	Forbid		; kill multitasking
		CALL	Disable		; kill interrupts so that we can
					;   safely install our own.

		cmpi.b	#50,VblankFrequency(a6)	; is vblank rate pal?
		beq.b	.pal		; yup.
		st	ntsc		; set NTSC flag.

.pal:		move.w	$7c-2(a5),d0	; AGA register...
		cmpi.b	#$f8,d0		; are we AGA?
		bne.b	.not_aga	; nope.
		st	AGA		; set the AGA flag.

.not_aga:	bsr.b	GetVBR		; get the vector base pointer
		move.l	d0,VectorBase	; save it for later.

		move.w	dmaconr-2(a5),d0	; old DMACON bits
		ori.w	#$8000,d0	; or it set bit for restore
		move.w	d0,OldDMACon	; save it
.exit:		rts

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

RestoreSystem:	lea	$dff002,a5	; custom chip base + 2
		move.w	OldDMACon,dmacon-2(a5)	; restore old dma bits

		move.l	OldView,a1	; old Work Bench view
		move.l	gfx_base,a6	; gfx base
		CALL	LoadView	; Restore the view
		CALL	DisOwnBlitter	; give blitter back to the system.

		move.l	gb_CopInit(a6),$80-2(a5) ; restore system clist
		move.l	a6,a1
		movea.l	4.w,a6		; exec base
		CALL	CloseLibrary

		movea.l	4.w,a6		; exec base
		CALL	Enable		; restore ints.
		CALL	Permit	 	; restart multitasking
		rts

***********************************************************
* This function provides a method of obtaining a pointer to the base of the
* interrupt vector table on all Amigas.  After getting this pointer, use
* the vector address as an offset.  For example, to install a level three
* interrupt you would do the following:
*
*		bsr	_GetVBR
*		move.l	d0,a0
*		move.l	$6c(a0),OldIntSave
*		move.l	#MyIntCode,$6c(a0)
*
***********************************************************
* Inputs: none
* Output: d0 contains vbr.

GetVBR:		move.l	a5,-(sp)		; save it.
		moveq	#0,d0			; clear
		movea.l	4.w,a6			; exec base
		btst.b	#AFB_68010,AttnFlags+1(a6); are we at least a 68010?
		beq.b	.1			; nope.
		lea.l	vbr_exception(pc),a5	; addr of function to get VBR
		jsr	_LVOSuperVisor(a6)	; supervisor state
.1:		move.l	(sp)+,a5		; restore it.
		rts				; return

vbr_exception:
	; movec vbr,Xn is a priv. instr.  You must be supervisor to execute!
;		movec   vbr,d0
	; many assemblers don't know the VBR, if yours doesn't, then use this
	; line instead.
		dc.w	$4e7a,$0801
		rte				; back to user state code

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

Bitch:		lea	Screen+[141*40]+34,a0
		lea	intVector,a1
		move.l	(a1)+,(a0)
		move.l	(a1)+,40(a0)
		move.l	(a1)+,80(a0)
		move.l	(a1)+,120(a0)
		move.l	(a1)+,160(a0)
		rts

;---------------------------------------------------------------
clear:		clr.b	(a0)+
		cmp.l	a0,a1
		bne.s	clear
		rts
;---------------------------------------------------------------

blitclear:	WaitBlit
		move.l	a0,$54-2(a5)
		move.w	#$100,$40-2(a5)
		move.w	#0,$42-2(a5)
		move.l	#0,$44-2(a5)
		move.l	#-1,$64-2(a5)
		move.w	d0,$58-2(a5)
		rts

;---------------------------------------------------------------

TEXTA:		cmp.w	#1,Wait
		bne.s	Noclear
		lea	screen,a0
		move.w	#$b00,d0
		bsr	blitclear

Noclear:	tst.w	Wait
		beq.s	NoHalt
		subq.w	#1,Wait
		rts

NoHalt:		move.l	TextP,a0
		tst.b	(a0)
		bne.s	NoEndLine
		move.w	#0,Xpos
		addq.w	#1,Ypos
		addq.l	#1,TextP
		rts

NoEndLine:	cmp.b	#$1,(a0)
		bne.s	NoEnd
		move.w	#0,Xpos
		move.w	#0,Ypos
		move.w	#400,Wait

		addq.l	#1,Textp
		move.l	textp,a0
		cmp.b	#2,(a0)
		bne.s	MorePages
		move.l	#text,TextP
MorePages:	rts

NoEnd:		moveq	#0,d0
		moveq	#0,d1
		move.b	(a0),d0
		sub.b	#32,d0
		lsl.w	#1,d0
		move.w	d0,d1
		divu	#40,d0
		mulu	#11*40,d0
		add.l	d0,d1
		lea	font,a0
		lea	(a0,d1.w),a0

		lea	Screen,a1
		move.w	Xpos,d0
		lea	(a1,d0.w),a1
		move.w	Ypos,d0
		mulu	#12*40,d0
		lea	(a1,d0.w),a1

		moveq	#11,d7
CopyChar:	move.w	(a0),(a1)
		lea	40(a0),a0
		lea	40(a1),a1
		dbf	d7,Copychar

		addq.l	#1,TextP
		add.w	#2,Xpos
		rts

;---------------------------------------------------------------
CopLines=126
CopInst=48

copperfuck:	cmp.l	#sineEnd,SinePos
		blt.s	MoreList
		sub.l	#sinesize/2,sinepos
MoreList:	cmp.l	#colsEnd,ColsPos
		blt.s	Morecollist
		sub.l	#collistsize,colspos
MoreColList:	lea	CopperBlock+6,a0
		move.l	ColsPos,a1
		move.l	SinePos,a2
		move.w	#copLines-1,d7
DoDisplay:	move.w	(a2)+,d1
		lea	(a1,d1.w),a3

WaitCrap:	WaitBlit

		move.l	a3,$50-2(a5)
		move.l	a0,$54-2(a5)
		move.l	#$09f00000,$40-2(a5)
		move.l	#$00000002,$64-2(a5)
		move.l	#-1,$44-2(a5)
		move.w	#(copinst-2)*64+1,$58-2(a5)

		add.l	#(copinst-2)*2,a3
;		addq.l	#2,a1
		lea	CopInst*4(a0),a0
		dbf	d7,DoDisplay

		tst.w	ChangeWait
		beq.s	NextPattern
		move.l	sineadd,d0
		move.l	colsadd,d1
		add.l	d0,SinePos
		add.l	d1,ColsPos
		subq.w	#1,changewait
		rts

NextPattern:	move.l	ChangeAdr,a0
		cmp.b	#-1,(a0)
		bne.L	Morechg

		tst.w	Op1
		beq.s	NoAdd
		addq.l	#2,a1
Noadd:		move.l	#changelist,Changeadr
		bra.s	NextPattern
Morechg:	moveq	#0,d0
		moveq	#0,d1
		moveq	#0,d2
		move.b	(a0)+,d0
		move.b	(a0)+,d1
		move.b	(a0)+,d2
		move.w	d2,Op1
		move.l	d0,sineadd
		move.l	d1,colsadd
		move.w	#300,Changewait
		addq.l	#3,changeadr
		rts

;---------------------------------------------------------------

copperinit:	lea	CopperBlock,a0
		move.w	#copLines-1,d7
		move.w	#$772f,d0
DoDisplay2:	move.w	d0,(a0)+
		move.w	#$fffe,(a0)+

		moveq	#Copinst-3,d6
DoLine2:	move.l	#$01800000,(a0)+
		dbf	d6,DoLine2
		add.w	#$0100,d0

		move.l	#$01800000,(a0)+
		dbf	d7,DoDisplay2

		lea	bmapptrs+2,a0
		move.l	#Logo,d0
		move.w	d0,4(a0)
		swap	d0
		move.w	d0,(a0)

		move.l	#Logo+$be0,d0
		move.w	d0,12(a0)
		swap	d0
		move.w	d0,8(a0)

		move.l	#Logo+(2*$be0),d0
		move.w	d0,20(a0)
		swap	d0
		move.w	d0,16(a0)

		move.l	#Logo+(3*$be0),d0
		move.w	d0,28(a0)
		swap	d0
		move.w	d0,24(a0)

		move.l	#Logo+(4*$be0),d0
		move.w	d0,36(a0)
		swap	d0
		move.w	d0,32(a0)

		lea	textptrs+2,a0
		move.l	#screen+$190,d0
		move.w	d0,4(a0)
		swap	d0
		move.w	d0,(a0)

		move.l	#screen+$190+$28,d0
		move.w	d0,12(a0)
		swap	d0
		move.w	d0,8(a0)
		rts

;----------------------------------------------------------------

FixSineList:	lea	SineList,a0
		move.w	#sineSize/2-1,d7
FixPos:		moveq	#0,d0
		move.w	(a0),d0
		sub.b	#$69,d0
		lsl.w	#1,d0
		move.w	d0,(a0)+
		dbf	d7,FixPos
		rts

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

		section	spam,data

GraphicsName:	dc.b	"graphics.library",0
		even

Wait:		dc.w	1

ChangeAdr:	dc.l	Changelist

ChangeList:	dc.b	2,2,0,4,2,0,6,2,0,8,2,0
		dc.b	2,4,0,4,4,0,6,4,0,8,4,0
		dc.b	2,2,1,4,2,1,6,2,1,8,2,1
		dc.b	2,4,1,4,4,1,6,4,1,8,4,1
		dc.b	-1
		even

SinePos:	dc.l	SineList

SineList:
 dc.w	$69,$69,$69,$69,$69,$69,$69,$69,$6a,$6a,$6a,$6b,$6b,$6b,$6c,$6c
 dc.w	$6d,$6d,$6e,$6e,$6f,$70,$70,$71,$71,$72,$73,$74,$74,$75,$76,$77
 dc.w	$77,$78,$79,$7a,$7b,$7c,$7c,$7d,$7e,$7f,$80,$81,$82,$82,$83,$84
 dc.w	$85,$86,$86,$87,$88,$89,$8a,$8b,$8b,$8c,$8d,$8e,$8f,$8f,$90,$91
 dc.w	$92,$92,$93,$94,$94,$95,$96,$96,$97,$97,$98,$98,$99,$99,$9a,$9a
 dc.w	$9a,$9b,$9b,$9b,$9b,$9b,$9c,$9c,$9c,$9c,$9c,$9c,$9c,$9c,$9c,$9b
 dc.w	$9b,$9b,$9b,$9b,$9a,$9a,$9a,$99,$99,$98,$98,$97,$97,$96,$96,$95
 dc.w	$94,$94,$93,$92,$92,$91,$90,$8f,$8f,$8e,$8d,$8c,$8b,$8b,$8a,$89
 dc.w	$88,$87,$86,$86,$85,$84,$83,$82,$82,$81,$80,$7f,$7e,$7d,$7c,$7c
 dc.w	$7b,$7a,$79,$78,$77,$77,$76,$75,$74,$74,$73,$72,$71,$71,$70,$70
 dc.w	$6f,$6e,$6e,$6d,$6d,$6c,$6c,$6b,$6b,$6b,$6a,$6a,$6a,$69,$69,$69
 dc.w	$69,$69,$69,$69,$69
SineEnd:
 dc.w	$69,$69,$69,$69,$69,$69,$69,$69,$6a,$6a,$6a,$6b,$6b,$6b,$6c,$6c
 dc.w	$6d,$6d,$6e,$6e,$6f,$70,$70,$71,$71,$72,$73,$74,$74,$75,$76,$77
 dc.w	$77,$78,$79,$7a,$7b,$7c,$7c,$7d,$7e,$7f,$80,$81,$82,$82,$83,$84
 dc.w	$85,$86,$86,$87,$88,$89,$8a,$8b,$8b,$8c,$8d,$8e,$8f,$8f,$90,$91
 dc.w	$92,$92,$93,$94,$94,$95,$96,$96,$97,$97,$98,$98,$99,$99,$9a,$9a
 dc.w	$9a,$9b,$9b,$9b,$9b,$9b,$9c,$9c,$9c,$9c,$9c,$9c,$9c,$9c,$9c,$9b
 dc.w	$9b,$9b,$9b,$9b,$9a,$9a,$9a,$99,$99,$98,$98,$97,$97,$96,$96,$95
 dc.w	$94,$94,$93,$92,$92,$91,$90,$8f,$8f,$8e,$8d,$8c,$8b,$8b,$8a,$89
 dc.w	$88,$87,$86,$86,$85,$84,$83,$82,$82,$81,$80,$7f,$7e,$7d,$7c,$7c
 dc.w	$7b,$7a,$79,$78,$77,$77,$76,$75,$74,$74,$73,$72,$71,$71,$70,$70
 dc.w	$6f,$6e,$6e,$6d,$6d,$6c,$6c,$6b,$6b,$6b,$6a,$6a,$6a,$69,$69,$69
 dc.w	$69,$69,$69,$69,$69
xxx:
SineSize=xxx-SineList

textp:		 dc.l	text
IntVector:	 dc.l	$0739e791,$08451451,$087d144a
		 dc.l	$08451444,$0745e784

;---------------------------------------------------------------
;- EACH LINE MUST END WITH A ZERO, PAGE ENDS WITH 1,0
;- END OF TEXT ENDS WITH 1,2 - EACH LINE CAN BE ANYLENGTH...
;- PAGES ARE 10 LINES LONG
Text:
		dc.b	0
		dc.b	"** M A S T E R S **",0
		dc.b	0
		dc.b	0
		dc.b	"   ARE HERE WITH",0
		dc.b	0
		dc.b	"  ANOTHER RELEASE",0
		dc.b	0
		dc.b	0
		dc.b	0
		dc.b	"FIRST WITH THE BEST",1,0

		dc.b	" CALL THESE BOARDS ",0
		dc.b	" ----------------- ",0
		dc.b	"MASTER'S WHQ   ",0
		dc.b	"       XXXXXXXX",0,0
		dc.b	"CRYPTIC DEAD   ",0
		dc.b	"       BLA BLA",0,0
		dc.b	"TEMPEST BBS:   ",0
		dc.b	"       -----------",1,0

		dc.b	"OPTICAL ILLUSION",0
		dc.b	"       DEPARTED ",0,0
		dc.b	"PRIME TIME",0
		dc.b	"       ----------",0,0
		dc.b	"CHERNOBYL BBS",0
		dc.b	"      +++++++++++++",0
		dc.b	"                   ",0
		dc.b	" ALL BOARDS R 9600+ ",1,0

		dc.b	" MINI CREDITS:     ",0
		dc.b	" -------------     ",0
		dc.b	" CODING-     CADDY ",0
		dc.b	"                   ",0
		dc.b	" LOGO-  METALLIKAT ",0
		dc.b	"                   ",0
		dc.b	" FONT-   DIGIT/PNS ",0
		dc.b	"                   ",0
		dc.b	" MUSIC-  DIGIT/PNS ",0
		dc.b	" SAY GOODNIGHT BILL",1,2
		even

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

		section	gfx,data_c

;----------------------------------------------------------------
; dc.w	000,010,020,030,040,050,060,070,080,090,0a0,0b0,0c0,0d0,0e0,0f0
; dc.w	0f0,1f0,2f0,3f0,4f0,5f0,6f0,7f0,8f0,9f0,af0,bf0,cf0,df0,ef0,ff0
; dc.w	ff0,fe1,fd2,fc3,fb4,fa5,f96,f87,f78,f69,f5a,f4b,f3c,f2d,f1e,f0f
; dc.w	f0f,e0e,d0d,c0c,b0b,a0a,909,808,707,606,505,404,303,202,101,000
;----------------------------------------------------------------
ColsPos:	 dc.l	CopperCols
CopperCols:
 dc.w	$ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
 dc.w	$f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0
 dc.w	$ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
 dc.w	$f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0

 dc.w	$ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
 dc.w	$f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0
 dc.w	$ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
 dc.w	$f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0
xxxx:
CollistSize=xxxx-coppercols

ColsEnd:
 dc.w	$ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
 dc.w	$f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0
 dc.w	$ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
 dc.w	$f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0
 dc.w	$ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
 dc.w	$f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0
 dc.w	$ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
 dc.w	$f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0

 dc.w	$ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
 dc.w	$f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0
 dc.w	$ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
 dc.w	$f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0
 dc.w	$ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
 dc.w	$f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0
 dc.w	$ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
 dc.w	$f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0

copper:		dc.l	$00960020		; kill sprites
		dc.l	$01440000,$01460000,$014c0000,$014e0000,$01540000
		dc.l	$01560000,$015c0000,$015e0000,$01640000,$01660000
		dc.l	$016c0000,$016e0000,$01740000,$01760000,$017c0000
		dc.l	$017e0000
		dc.l	$008e2071,$009030c8
		dc.l	$00920038,$009400d0
		dc.l	$01020000,$01800000,$01040003
		dc.l	$01080000,$010a0000,$01000000
bmapptrs:	dc.l	$00e00000,$00e20000
		dc.l	$00e40000,$00e60000
		dc.l	$00e80000,$00ea0000
		dc.l	$00ec0000,$00ee0000
		dc.l	$00f00000,$00f20000

		dc.w	$0180,$0000,$0182,$0fff,$0184,$0fc6,$0186,$0e94
		dc.w	$0188,$0d96,$018a,$0fca,$018c,$0fea,$018e,$0731
		dc.w	$0190,$0a36,$0192,$0814,$0194,$0c05,$0196,$0c26
		dc.w	$0198,$0d48,$019a,$0d79,$019c,$0e9b,$019e,$0a15
		dc.w	$01a0,$0620,$01a2,$0e52,$01a4,$0a52,$01a6,$0a53
		dc.w	$01a8,$000d,$01aa,$011d,$01ac,$023d,$01ae,$044d
		dc.w	$01b0,$0226,$01b2,$066e,$01b4,$088e,$01b6,$099e
		dc.w	$01b8,$0aae,$01ba,$0ccf,$01bc,$0ddf,$01be,$044b

		dc.l	$260ffffe,$01005000,$720ffffe,$01000000
textptrs:	dc.l	$00e00000,$00e20000,$00e40000,$00e60000
		dc.l	$01820000,$01840fff,$01860fff

		dc.l	$730ffffe,$01800000,$740ffffe,$01800099
		dc.l	$750ffffe,$018000cc,$760ffffe,$018000ff
		dc.l	$770ffffe,$01002000,$01020089,$01800000

CopperBlock:	blk.l	Coplines*copInst,-1
endblock:	dc.l	$f50ffffe,$018000ff,$f60ffffe,$018000cc
		dc.l	$f70ffffe,$01800099,$f80ffffe,$01800000,$01001000
		dc.l	$fa0ffffe,$01820fff,$fb0ffffe,$01820eee
		dc.l	$fc0ffffe,$01820ddd,$fd0ffffe,$01820ccc
		dc.l	$fe0ffffe,$01820bbb,$ff0ffffe,$01000000
		dc.l	$fffffffe,$fffffffe	; some revs of the copper
						;   skip the first end.

		incdir	''
Logo:		incbin "df1:masters/katlogo.b"
Font:		incbin "df1:masters/digfont.b"

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

		section	textscreen,bss_c

screen:		ds.b	$5000

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

		section	OldPointers_and_such,bss

gfx_base	ds.l	1		; pointer to graphics base
OldView		ds.l    1		; old Work Bench view addr.
VectorBase:	ds.l	1		; pointer to the Vector Base

OldDMACon:	ds.w	1		; old dmacon bits

ntsc:		ds.b	1		; 0 = pal, 1 = ntsc
AGA:		ds.b	1		; 0 = ESC/standard, 1 = AGA

SineAdd:	ds.l	1
Colsadd:	ds.l	1
Op1:		ds.w	1
Xpos:		ds.w	1
Ypos:		ds.w	1
ChangeWait:	ds.w	1

