NOINTS	= 1		; Turn off interrupts
DTIME	= 0		; Display rastertime
NSTARS	= 880		; Number of stars
PFACT	= $FF00		; Perspective factor
ZSPEED	= -1		; Speed of Z-movement
BUFW	= 44		; Buffer width in bytes
BUFH	= 272		; Buffer height in lines
BOXW	= 44		; Starfield width in bytes
BOXH	= 272		; Starfield height in lines
_LVODisable		= -120	; exec.library function offsets
_LVOEnable		= -126
_LVOCloseLibrary	= -414
_LVOOpenLibrary		= -552
_LVOLoadView		= -222	; grapics.library function offsets
_LVOWaitBlit		= -228
_LVOWaitTOF		= -270
_LVOOwnBlitter		= -456
_LVODisownBlitter	= -462
ib_ViewLord		= 34	; System structures attributes
gb_copinit		= 38
ExecBas		= $00000004
CustomBas		= $00DFF000
CIAA		= $00BFE001

VHPOSR		= $006	; Custom registers
BLTCON0		= $040
BLTDPTH		= $054
BLTSIZE		= $058
BLTDMOD		= $066
COP1LCH		= $080
COPJMP1		= $088
COLOR00		= $180

;-------------------------------------------------------------------------
; MACROS
;-------------------------------------------------------------------------

CALL:	MACRO				; Call a library function
	move.l	\1Bas,a6
	jsr	_LVO\2(a6)
	ENDM

RND:	MACRO				; Construct a 'random' byte in d0
	move.b	(a1),d0
	move.b	(a2),d1
	move.b	(a3),d2
	eor.b	d2,d0
	eor.b	d1,d0
	add.b	d0,(a3)			; Remove one or both of these
	add.b	d7,d0			; for 'constellations' of stars
	ENDM

;-------------------------------------------------------------------------
; PROGRAM START
;-------------------------------------------------------------------------

	SECTION	Code,CODE

StartProgram:

	lea	GfxName,a1	;Open graphics.library
	moveq	#0,d0
	CALL	Exec,OpenLibrary
	move.l	d0,GfxBas
	beq.w	.Exit

	lea	IntName,a1		; Open intuition.library
	moveq	#0,d0
	CALL	Exec,OpenLibrary
	move.l	d0,IntBas
	beq.w	.Exit

	sub.l	a1,a1			; Grab display
	CALL	Gfx,LoadView
	CALL	Gfx,WaitTOF
	CALL	Gfx,WaitTOF

	CALL	Gfx,OwnBlitter		; Grab blitter
	CALL	Gfx,WaitBlit

	IFNE	NOINTS
	CALL	Exec,Disable		; Disable interrupts
	ENDC

	bsr	Initialization
	bsr	MainLoop

	IFNE	NOINTS
	CALL	Exec,Enable		; Enable interrupts
	ENDC

	CALL	Gfx,DisownBlitter	; Free blitter

	move.l	IntBas,a0		; Restore display
	lea	ib_ViewLord(a0),a1
	CALL	Gfx,LoadView
	CALL	Gfx,WaitTOF
	CALL	Gfx,WaitTOF
	lea	CustomBas,a0
	move.l	GfxBas,a6
	move.l	gb_copinit(a6),COP1LCH(a0)
	move.w	#0,COPJMP1(a0)

.Exit:	move.l	IntBas,a1		; Close intuition.library
	cmp.l	#0,a1
	beq.s	.NoInt
	CALL	Exec,CloseLibrary

.NoInt:	move.l	GfxBas,a1		; Close graphics.library
	cmp.l	#0,a1
	beq.s	.NoGfx
	CALL	Exec,CloseLibrary

.NoGfx:	moveq	#0,d0		; Exit program
	rts

;-------------------------------------------------------------------------
; MAINLOOP
;-------------------------------------------------------------------------

MainLoop:

	lea	CustomBas,a0		; Wait for line 255
.Wait:	cmp.b	#255,VHPOSR(a0)
	bne.s	.Wait

	IFNE	DTIME
	move.w	#$336,CustomBas+COLOR00
	ENDC

	bsr	DrawStars

	IFNE	DTIME
	move.w	#$000,CustomBas+COLOR00
	ENDC

	btst	#6,CIAA		; Loop until LMB is pressed
	bne.s	MainLoop
	rts

;-------------------------------------------------------------------------
; INITIALIZATION
;-------------------------------------------------------------------------

Initialization:

	bsr	InitBSS
	bsr	InitCopper
	bsr	InitCoords
	bsr	InitPerspective
	REPT	3
	bsr	StarBuffer
	bsr	StarClear
	ENDR
	rts

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

InitBSS:

	lea	Blanks,a0		; Init BSS-sections
	move.l	#(256/4)-1,d7
.1:	clr.l	(a0)+
	dbf	d7,.1

	lea	StarBuffer1,a0
	lea	StarBuffer2,a1
	lea	StarBuffer3,a2
	move.l	#(BUFW*BUFH/2)-1,d7
.2:	clr.l	(a0)+
	clr.l	(a1)+
	clr.l	(a2)+
	dbf	d7,.2
	rts

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

InitCopper:

	lea	CopSprites+2,a0		; Init sprite-pointers
	move.l	#Blanks,d0
	move.l	d0,d1
	swap	d1
	moveq	#7,d7
.Loop:	move.w	d1,(a0)
	move.w	d0,4(a0)
	addq.w	#8,a0
	dbf	d7,.Loop

	lea	CopBplPtr,a0		; Init bitplane-pointers
	move.l	StarBufPtr,d0
	move.l	StarBufPtr,d1
	add.l	#BUFW,d1
	move.w	d0,6(a0)
	move.w	d1,14(a0)
	swap	d0
	swap	d1
	move.w	d0,2(a0)
	move.w	d1,10(a0)

	lea	CustomBas,a0		; Start new copperlist
	move.l	#CopperList,COP1LCH(a0)
	move.w	#0,COPJMP1(a0)
	rts

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

InitCoords:				; Randomize coordinates

	lea	StarCoords,a0
	lea	$DFF007,a1		; Horizontal beam pos
	lea	$BFD800,a2		; Horizontal blank counter
	lea	RndStore,a3
	move.w	#NSTARS-1,d7
.Loop:	RND
	and.l	#$FF,d0
	move.w	d0,(a0)+		; Store X-coord
	RND
	and.l	#$FF,d0
	move.w	d0,(a0)+		; Store Y-coord
	RND
	lsl.l	#8,d0
	and.l	#$FF00,d0
	move.w	d0,(a0)+		; Store Z-coord
	dbf	d7,.Loop
	rts

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

InitPerspective:			; Calculate perspective-tables

	lea	PerTabX,a0
	lea	PerTabB,a1
	lea	PerTabY,a2
	move.l	#BOXW*4,a3
	move.l	#BOXH/2,a4
	move.l	#((BOXW*4)<<16)-1,a5
	move.l	#((BOXH/2)<<16)-1,a6
	movem.l	Blanks,d0-d4
	move.l	#$7FFF,d5
	move.l	#255,d6
.1:	moveq	#0,d7
.2:	move.w	d7,d3
	move.w	d7,d4
	mulu	#(BOXW*4)<<8,d3
	add.l	d3,d3
	swap	d3
	mulu	#(BOXH/2)<<8,d4
	add.l	d4,d4
	swap	d4
	sub.w	a3,d3
	muls	d5,d3
	add.l	d3,d3
	add.l	a5,d3
	swap	d3
	sub.w	a4,d4
	muls	d5,d4
	add.l	d4,d4
	add.l	a6,d4
	swap	d4
	move.l	d3,d0
	move.l	d3,d1
	move.l	d4,d2
	lsr.w	#3,d0
	and.w	#7,d1
	sub.w	#7,d1
	neg.w	d1
	mulu	#BUFW*2,d2
	cmp.w	#100,d6
	bgt.s	.3
	add.w	#BUFW,d2
.3:	add.b	#(BUFW-BOXW)/2,d0
	add.w	#(BUFH-BOXH)*BUFW,d2
	move.b	d0,(a0)+
	move.b	d1,(a1)+
	move.w	d2,(a2)+
	addq.w	#1,d7
	cmp.w	#256,d7
	bne.s	.2
	mulu	#PFACT,d5
	swap	d5
	and.l	#$FFFF,d5
	dbf	d6,.1
	rts

;-------------------------------------------------------------------------
; ROUTINES
;-----------------------------------------------------------------------------

DrawStars:

	bsr	StarBuffer
	bsr	StarClear
	bsr	StarMove

	lea	PerTabX,a0		; Perspective tables
	lea	PerTabB,a1
	lea	PerTabY,a2
	lea	StarCoords,a3		; Coordinates
	move.l	StarBufPtr+4,a4		; Bitplane pointer
	movem.l	Blanks,d0-d7
	move.w	StarAddX,d3		; Movement offsets
	move.w	StarAddY,d4
	move.w	StarAddZ,d5
	move.l	#$FF,d6

	move.w	#(NSTARS/20)-1,d7
AD	SET	0
.Loop:
	REPT	20		; Loop only for each 20 stars
	lea	(a4),a5
	movem.w	AD(a3),d0-d2		; Fetch coord (x,y,z)
	add.w	d5,d2		; Calc Z
	add.w	d4,d1		; Calc Y
	and.l	d6,d1
	or.w	d2,d1
	add.l	d1,d1
	add.w	(a2,d1.l),a5
	add.w	d3,d0			; Calc X
	and.l	d6,d0
	or.w	d2,d0
	move.b	(a0,d0.l),d2
	and.w	d6,d2
	move.b	(a1,d0.l),d0		; Calc bit
	bset	d0,(a5,d2.w)		; Plot pixel
AD	SET	AD+6
	ENDR
	lea	120(a3),a3
	dbf	d7,.Loop
	rts
;-----------------------------------------------------------------------------

StarClear:			; Clear a buffer with blitter
	CALL	Gfx,WaitBlit
	lea	CustomBas,a0
	move.l	StarBufPtr+8,BLTDPTH(a0)
	move.w	#0,BLTDMOD(a0)
	move.l	#$01000000,BLTCON0(a0)
	move.w	#BUFH*64+BUFW,BLTSIZE(a0)
	rts

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

StarBuffer:

	lea	StarBufPtr,a0		; Triple buffering
	movem.l	(a0),d0-d2
	exg	d0,d1
	exg	d1,d2
	movem.l	d0-d2,(a0)

	lea	CopBplPtr,a0		; Update bitplane-pointers
	move.l	StarBufPtr,d0
	move.l	StarBufPtr,d1
	add.l	#BUFW,d1
	move.w	d0,6(a0)
	move.w	d1,14(a0)
	swap	d0
	swap	d1
	move.w	d0,2(a0)
	move.w	d1,10(a0)
	rts

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

StarMove:				; Move stars around

	lea	SineTable,a0		; Use sine in X and Y direction
	move.w	SinPosX,d0
	move.w	SinPosY,d1
	add.w	SinSpdX,d0
	add.w	SinSpdY,d1
	and.w	#$FFE,d0
	and.w	#$FFE,d1
	move.w	d0,SinPosX
	move.w	d1,SinPosY
	move.w	(a0,d0.w),d0
	move.w	(a0,d1.w),d1
	move.w	d0,StarAddX
	move.w	d1,StarAddY
	add.w	#ZSPEED<<8,StarAddZ
	and.w	#$FF00,StarAddZ
	rts

;-------------------------------------------------------------------------
; PUBLICMEM DATA
;-------------------------------------------------------------------------

	SECTION PubBSS,BSS

GfxBas:	ds.l	1
IntBas:	ds.l	1
PerTabX:	ds.b	256*256	; Perspective tables
PerTabB:	ds.b	256*256
PerTabY:	ds.w	256*256

;-------------------------------------------------------------------------
	SECTION PubData,DATA
RndStore:	dc.w	0	; Random value

StarAddX:	dc.w	0	; Star movement offsets
StarAddY:	dc.w	0
StarAddZ:	dc.w	0

SinPosX:	dc.w	0	; Sine positions
SinPosY:	dc.w	$136

SinSpdX:	dc.w	4	; Sine speeds
SinSpdY:	dc.w	-2

StarBufPtr:	dc.l	StarBuffer1	; Buffer pointers
		dc.l	StarBuffer2
		dc.l	StarBuffer3

StarCoords:	ds.w	3*NSTARS	; Star coordinates

GfxName:	dc.b	"graphics.library",0
IntName:	dc.b	"intuition.library",0
	even
SineTable:	dc.w	$0200,$0202,$0203,$0205,$0206,$0208,$0209,$020B
	dc.w	$020D,$020E,$0210,$0211,$0213,$0214,$0216,$0218
	dc.w	$0219,$021B,$021C,$021E,$021F,$0221,$0223,$0224
	dc.w	$0226,$0227,$0229,$022A,$022C,$022D,$022F,$0231
	dc.w	$0232,$0234,$0235,$0237,$0238,$023A,$023C,$023D
	dc.w	$023F,$0240,$0242,$0243,$0245,$0246,$0248,$024A
	dc.w	$024B,$024D,$024E,$0250,$0251,$0253,$0254,$0256
	dc.w	$0258,$0259,$025B,$025C,$025E,$025F,$0261,$0262
	dc.w	$0264,$0265,$0267,$0269,$026A,$026C,$026D,$026F
	dc.w	$0270,$0272,$0273,$0275,$0276,$0278,$0279,$027B
	dc.w	$027C,$027E,$027F,$0281,$0282,$0284,$0286,$0287
	dc.w	$0289,$028A,$028C,$028D,$028F,$0290,$0292,$0293
	dc.w	$0295,$0296,$0298,$0299,$029B,$029C,$029E,$029F
	dc.w	$02A1,$02A2,$02A4,$02A5,$02A7,$02A8,$02AA,$02AB
	dc.w	$02AC,$02AE,$02AF,$02B1,$02B2,$02B4,$02B5,$02B7
	dc.w	$02B8,$02BA,$02BB,$02BD,$02BE,$02C0,$02C1,$02C2
	dc.w	$02C4,$02C5,$02C7,$02C8,$02CA,$02CB,$02CD,$02CE
	dc.w	$02CF,$02D1,$02D2,$02D4,$02D5,$02D7,$02D8,$02D9
	dc.w	$02DB,$02DC,$02DE,$02DF,$02E1,$02E2,$02E3,$02E5
	dc.w	$02E6,$02E8,$02E9,$02EA,$02EC,$02ED,$02EF,$02F0
	dc.w	$02F1,$02F3,$02F4,$02F6,$02F7,$02F8,$02FA,$02FB
	dc.w	$02FC,$02FE,$02FF,$0300,$0302,$0303,$0305,$0306
	dc.w	$0307,$0309,$030A,$030B,$030D,$030E,$030F,$0311
	dc.w	$0312,$0313,$0315,$0316,$0317,$0319,$031A,$031B
	dc.w	$031C,$031E,$031F,$0320,$0322,$0323,$0324,$0326
	dc.w	$0327,$0328,$0329,$032B,$032C,$032D,$032E,$0330
	dc.w	$0331,$0332,$0334,$0335,$0336,$0337,$0339,$033A
	dc.w	$033B,$033C,$033D,$033F,$0340,$0341,$0342,$0344
	dc.w	$0345,$0346,$0347,$0348,$034A,$034B,$034C,$034D
	dc.w	$034E,$0350,$0351,$0352,$0353,$0354,$0356,$0357
	dc.w	$0358,$0359,$035A,$035B,$035C,$035E,$035F,$0360
	dc.w	$0361,$0362,$0363,$0364,$0366,$0367,$0368,$0369
	dc.w	$036A,$036B,$036C,$036D,$036E,$0370,$0371,$0372
	dc.w	$0373,$0374,$0375,$0376,$0377,$0378,$0379,$037A
	dc.w	$037B,$037C,$037D,$037F,$0380,$0381,$0382,$0383
	dc.w	$0384,$0385,$0386,$0387,$0388,$0389,$038A,$038B
	dc.w	$038C,$038D,$038E,$038F,$0390,$0391,$0392,$0393
	dc.w	$0394,$0395,$0396,$0397,$0397,$0398,$0399,$039A
	dc.w	$039B,$039C,$039D,$039E,$039F,$03A0,$03A1,$03A2
	dc.w	$03A3,$03A4,$03A4,$03A5,$03A6,$03A7,$03A8,$03A9
	dc.w	$03AA,$03AB,$03AB,$03AC,$03AD,$03AE,$03AF,$03B0
	dc.w	$03B1,$03B1,$03B2,$03B3,$03B4,$03B5,$03B6,$03B6
	dc.w	$03B7,$03B8,$03B9,$03BA,$03BA,$03BB,$03BC,$03BD
	dc.w	$03BD,$03BE,$03BF,$03C0,$03C1,$03C1,$03C2,$03C3
	dc.w	$03C4,$03C4,$03C5,$03C6,$03C6,$03C7,$03C8,$03C9
	dc.w	$03C9,$03CA,$03CB,$03CB,$03CC,$03CD,$03CD,$03CE
	dc.w	$03CF,$03D0,$03D0,$03D1,$03D1,$03D2,$03D3,$03D3
	dc.w	$03D4,$03D5,$03D5,$03D6,$03D7,$03D7,$03D8,$03D8
	dc.w	$03D9,$03DA,$03DA,$03DB,$03DB,$03DC,$03DD,$03DD
	dc.w	$03DE,$03DE,$03DF,$03DF,$03E0,$03E0,$03E1,$03E2
	dc.w	$03E2,$03E3,$03E3,$03E4,$03E4,$03E5,$03E5,$03E6
	dc.w	$03E6,$03E7,$03E7,$03E8,$03E8,$03E9,$03E9,$03E9
	dc.w	$03EA,$03EA,$03EB,$03EB,$03EC,$03EC,$03ED,$03ED
	dc.w	$03ED,$03EE,$03EE,$03EF,$03EF,$03EF,$03F0,$03F0
	dc.w	$03F1,$03F1,$03F1,$03F2,$03F2,$03F3,$03F3,$03F3
	dc.w	$03F4,$03F4,$03F4,$03F5,$03F5,$03F5,$03F6,$03F6
	dc.w	$03F6,$03F6,$03F7,$03F7,$03F7,$03F8,$03F8,$03F8
	dc.w	$03F8,$03F9,$03F9,$03F9,$03F9,$03FA,$03FA,$03FA
	dc.w	$03FA,$03FB,$03FB,$03FB,$03FB,$03FC,$03FC,$03FC
	dc.w	$03FC,$03FC,$03FD,$03FD,$03FD,$03FD,$03FD,$03FD
	dc.w	$03FE,$03FE,$03FE,$03FE,$03FE,$03FE,$03FE,$03FE
	dc.w	$03FF,$03FF,$03FF,$03FF,$03FF,$03FF,$03FF,$03FF
	dc.w	$03FF,$03FF,$0400,$0400,$0400,$0400,$0400,$0400
	dc.w	$0400,$0400,$0400,$0400,$0400,$0400,$0400,$0400
	dc.w	$0400,$0400,$0400,$0400,$0400,$0400,$0400,$0400
	dc.w	$0400,$0400,$0400,$0400,$0400,$0400,$0400,$03FF
	dc.w	$03FF,$03FF,$03FF,$03FF,$03FF,$03FF,$03FF,$03FF
	dc.w	$03FF,$03FE,$03FE,$03FE,$03FE,$03FE,$03FE,$03FE
	dc.w	$03FE,$03FD,$03FD,$03FD,$03FD,$03FD,$03FD,$03FC
	dc.w	$03FC,$03FC,$03FC,$03FC,$03FB,$03FB,$03FB,$03FB
	dc.w	$03FA,$03FA,$03FA,$03FA,$03F9,$03F9,$03F9,$03F9
	dc.w	$03F8,$03F8,$03F8,$03F8,$03F7,$03F7,$03F7,$03F6
	dc.w	$03F6,$03F6,$03F6,$03F5,$03F5,$03F5,$03F4,$03F4
	dc.w	$03F4,$03F3,$03F3,$03F3,$03F2,$03F2,$03F1,$03F1
	dc.w	$03F1,$03F0,$03F0,$03EF,$03EF,$03EF,$03EE,$03EE
	dc.w	$03ED,$03ED,$03ED,$03EC,$03EC,$03EB,$03EB,$03EA
	dc.w	$03EA,$03E9,$03E9,$03E9,$03E8,$03E8,$03E7,$03E7
	dc.w	$03E6,$03E6,$03E5,$03E5,$03E4,$03E4,$03E3,$03E3
	dc.w	$03E2,$03E2,$03E1,$03E0,$03E0,$03DF,$03DF,$03DE
	dc.w	$03DE,$03DD,$03DD,$03DC,$03DB,$03DB,$03DA,$03DA
	dc.w	$03D9,$03D8,$03D8,$03D7,$03D7,$03D6,$03D5,$03D5
	dc.w	$03D4,$03D3,$03D3,$03D2,$03D1,$03D1,$03D0,$03D0
	dc.w	$03CF,$03CE,$03CD,$03CD,$03CC,$03CB,$03CB,$03CA
	dc.w	$03C9,$03C9,$03C8,$03C7,$03C6,$03C6,$03C5,$03C4
	dc.w	$03C4,$03C3,$03C2,$03C1,$03C1,$03C0,$03BF,$03BE
	dc.w	$03BD,$03BD,$03BC,$03BB,$03BA,$03BA,$03B9,$03B8
	dc.w	$03B7,$03B6,$03B6,$03B5,$03B4,$03B3,$03B2,$03B1
	dc.w	$03B1,$03B0,$03AF,$03AE,$03AD,$03AC,$03AB,$03AB
	dc.w	$03AA,$03A9,$03A8,$03A7,$03A6,$03A5,$03A4,$03A4
	dc.w	$03A3,$03A2,$03A1,$03A0,$039F,$039E,$039D,$039C
	dc.w	$039B,$039A,$0399,$0398,$0397,$0397,$0396,$0395
	dc.w	$0394,$0393,$0392,$0391,$0390,$038F,$038E,$038D
	dc.w	$038C,$038B,$038A,$0389,$0388,$0387,$0386,$0385
	dc.w	$0384,$0383,$0382,$0381,$0380,$037F,$037D,$037C
	dc.w	$037B,$037A,$0379,$0378,$0377,$0376,$0375,$0374
	dc.w	$0373,$0372,$0371,$0370,$036E,$036D,$036C,$036B
	dc.w	$036A,$0369,$0368,$0367,$0366,$0364,$0363,$0362
	dc.w	$0361,$0360,$035F,$035E,$035C,$035B,$035A,$0359
	dc.w	$0358,$0357,$0356,$0354,$0353,$0352,$0351,$0350
	dc.w	$034E,$034D,$034C,$034B,$034A,$0348,$0347,$0346
	dc.w	$0345,$0344,$0342,$0341,$0340,$033F,$033D,$033C
	dc.w	$033B,$033A,$0339,$0337,$0336,$0335,$0334,$0332
	dc.w	$0331,$0330,$032E,$032D,$032C,$032B,$0329,$0328
	dc.w	$0327,$0326,$0324,$0323,$0322,$0320,$031F,$031E
	dc.w	$031C,$031B,$031A,$0319,$0317,$0316,$0315,$0313
	dc.w	$0312,$0311,$030F,$030E,$030D,$030B,$030A,$0309
	dc.w	$0307,$0306,$0305,$0303,$0302,$0300,$02FF,$02FE
	dc.w	$02FC,$02FB,$02FA,$02F8,$02F7,$02F5,$02F4,$02F3
	dc.w	$02F1,$02F0,$02EF,$02ED,$02EC,$02EA,$02E9,$02E8
	dc.w	$02E6,$02E5,$02E3,$02E2,$02E1,$02DF,$02DE,$02DC
	dc.w	$02DB,$02D9,$02D8,$02D7,$02D5,$02D4,$02D2,$02D1
	dc.w	$02CF,$02CE,$02CD,$02CB,$02CA,$02C8,$02C7,$02C5
	dc.w	$02C4,$02C2,$02C1,$02C0,$02BE,$02BD,$02BB,$02BA
	dc.w	$02B8,$02B7,$02B5,$02B4,$02B2,$02B1,$02AF,$02AE
	dc.w	$02AC,$02AB,$02AA,$02A8,$02A7,$02A5,$02A4,$02A2
	dc.w	$02A1,$029F,$029E,$029C,$029B,$0299,$0298,$0296
	dc.w	$0295,$0293,$0292,$0290,$028F,$028D,$028C,$028A
	dc.w	$0289,$0287,$0286,$0284,$0282,$0281,$027F,$027E
	dc.w	$027C,$027B,$0279,$0278,$0276,$0275,$0273,$0272
	dc.w	$0270,$026F,$026D,$026C,$026A,$0269,$0267,$0265
	dc.w	$0264,$0262,$0261,$025F,$025E,$025C,$025B,$0259
	dc.w	$0258,$0256,$0254,$0253,$0251,$0250,$024E,$024D
	dc.w	$024B,$024A,$0248,$0246,$0245,$0243,$0242,$0240
	dc.w	$023F,$023D,$023C,$023A,$0238,$0237,$0235,$0234
	dc.w	$0232,$0231,$022F,$022D,$022C,$022A,$0229,$0227
	dc.w	$0226,$0224,$0223,$0221,$021F,$021E,$021C,$021B
	dc.w	$0219,$0218,$0216,$0214,$0213,$0211,$0210,$020E
	dc.w	$020D,$020B,$0209,$0208,$0206,$0205,$0203,$0202
	dc.w	$0200,$01FE,$01FD,$01FB,$01FA,$01F8,$01F7,$01F5
	dc.w	$01F3,$01F2,$01F0,$01EF,$01ED,$01EC,$01EA,$01E8
	dc.w	$01E7,$01E5,$01E4,$01E2,$01E1,$01DF,$01DD,$01DC
	dc.w	$01DA,$01D9,$01D7,$01D6,$01D4,$01D3,$01D1,$01CF
	dc.w	$01CE,$01CC,$01CB,$01C9,$01C8,$01C6,$01C4,$01C3
	dc.w	$01C1,$01C0,$01BE,$01BD,$01BB,$01BA,$01B8,$01B6
	dc.w	$01B5,$01B3,$01B2,$01B0,$01AF,$01AD,$01AC,$01AA
	dc.w	$01A8,$01A7,$01A5,$01A4,$01A2,$01A1,$019F,$019E
	dc.w	$019C,$019B,$0199,$0197,$0196,$0194,$0193,$0191
	dc.w	$0190,$018E,$018D,$018B,$018A,$0188,$0187,$0185
	dc.w	$0184,$0182,$0181,$017F,$017E,$017C,$017A,$0179
	dc.w	$0177,$0176,$0174,$0173,$0171,$0170,$016E,$016D
	dc.w	$016B,$016A,$0168,$0167,$0165,$0164,$0162,$0161
	dc.w	$015F,$015E,$015C,$015B,$0159,$0158,$0156,$0155
	dc.w	$0154,$0152,$0151,$014F,$014E,$014C,$014B,$0149
	dc.w	$0148,$0146,$0145,$0143,$0142,$0140,$013F,$013E
	dc.w	$013C,$013B,$0139,$0138,$0136,$0135,$0133,$0132
	dc.w	$0131,$012F,$012E,$012C,$012B,$0129,$0128,$0127
	dc.w	$0125,$0124,$0122,$0121,$011F,$011E,$011D,$011B
	dc.w	$011A,$0118,$0117,$0116,$0114,$0113,$0111,$0110
	dc.w	$010F,$010D,$010C,$010A,$0109,$0108,$0106,$0105
	dc.w	$0104,$0102,$0101,$0100,$00FE,$00FD,$00FB,$00FA
	dc.w	$00F9,$00F7,$00F6,$00F5,$00F3,$00F2,$00F1,$00EF
	dc.w	$00EE,$00ED,$00EB,$00EA,$00E9,$00E7,$00E6,$00E5
	dc.w	$00E4,$00E2,$00E1,$00E0,$00DE,$00DD,$00DC,$00DA
	dc.w	$00D9,$00D8,$00D7,$00D5,$00D4,$00D3,$00D2,$00D0
	dc.w	$00CF,$00CE,$00CC,$00CB,$00CA,$00C9,$00C7,$00C6
	dc.w	$00C5,$00C4,$00C3,$00C1,$00C0,$00BF,$00BE,$00BC
	dc.w	$00BB,$00BA,$00B9,$00B8,$00B6,$00B5,$00B4,$00B3
	dc.w	$00B2,$00B0,$00AF,$00AE,$00AD,$00AC,$00AA,$00A9
	dc.w	$00A8,$00A7,$00A6,$00A5,$00A4,$00A2,$00A1,$00A0
	dc.w	$009F,$009E,$009D,$009C,$009A,$0099,$0098,$0097
	dc.w	$0096,$0095,$0094,$0093,$0092,$0090,$008F,$008E
	dc.w	$008D,$008C,$008B,$008A,$0089,$0088,$0087,$0086
	dc.w	$0085,$0084,$0083,$0081,$0080,$007F,$007E,$007D
	dc.w	$007C,$007B,$007A,$0079,$0078,$0077,$0076,$0075
	dc.w	$0074,$0073,$0072,$0071,$0070,$006F,$006E,$006D
	dc.w	$006C,$006B,$006A,$0069,$0069,$0068,$0067,$0066
	dc.w	$0065,$0064,$0063,$0062,$0061,$0060,$005F,$005E
	dc.w	$005D,$005C,$005C,$005B,$005A,$0059,$0058,$0057
	dc.w	$0056,$0055,$0055,$0054,$0053,$0052,$0051,$0050
	dc.w	$004F,$004F,$004E,$004D,$004C,$004B,$004A,$004A
	dc.w	$0049,$0048,$0047,$0046,$0046,$0045,$0044,$0043
	dc.w	$0043,$0042,$0041,$0040,$003F,$003F,$003E,$003D
	dc.w	$003C,$003C,$003B,$003A,$003A,$0039,$0038,$0037
	dc.w	$0037,$0036,$0035,$0035,$0034,$0033,$0033,$0032
	dc.w	$0031,$0030,$0030,$002F,$002F,$002E,$002D,$002D
	dc.w	$002C,$002B,$002B,$002A,$0029,$0029,$0028,$0028
	dc.w	$0027,$0026,$0026,$0025,$0025,$0024,$0023,$0023
	dc.w	$0022,$0022,$0021,$0021,$0020,$0020,$001F,$001E
	dc.w	$001E,$001D,$001D,$001C,$001C,$001B,$001B,$001A
	dc.w	$001A,$0019,$0019,$0018,$0018,$0017,$0017,$0017
	dc.w	$0016,$0016,$0015,$0015,$0014,$0014,$0013,$0013
	dc.w	$0013,$0012,$0012,$0011,$0011,$0011,$0010,$0010
	dc.w	$000F,$000F,$000F,$000E,$000E,$000D,$000D,$000D
	dc.w	$000C,$000C,$000C,$000B,$000B,$000B,$000A,$000A
	dc.w	$000A,$000A,$0009,$0009,$0009,$0008,$0008,$0008
	dc.w	$0008,$0007,$0007,$0007,$0007,$0006,$0006,$0006
	dc.w	$0006,$0005,$0005,$0005,$0005,$0004,$0004,$0004
	dc.w	$0004,$0004,$0003,$0003,$0003,$0003,$0003,$0003
	dc.w	$0002,$0002,$0002,$0002,$0002,$0002,$0002,$0002
	dc.w	$0001,$0001,$0001,$0001,$0001,$0001,$0001,$0001
	dc.w	$0001,$0001,$0000,$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0001
	dc.w	$0001,$0001,$0001,$0001,$0001,$0001,$0001,$0001
	dc.w	$0001,$0002,$0002,$0002,$0002,$0002,$0002,$0002
	dc.w	$0002,$0003,$0003,$0003,$0003,$0003,$0003,$0004
	dc.w	$0004,$0004,$0004,$0004,$0005,$0005,$0005,$0005
	dc.w	$0006,$0006,$0006,$0006,$0007,$0007,$0007,$0007
	dc.w	$0008,$0008,$0008,$0008,$0009,$0009,$0009,$000A
	dc.w	$000A,$000A,$000A,$000B,$000B,$000B,$000C,$000C
	dc.w	$000C,$000D,$000D,$000D,$000E,$000E,$000F,$000F
	dc.w	$000F,$0010,$0010,$0011,$0011,$0011,$0012,$0012
	dc.w	$0013,$0013,$0013,$0014,$0014,$0015,$0015,$0016
	dc.w	$0016,$0017,$0017,$0017,$0018,$0018,$0019,$0019
	dc.w	$001A,$001A,$001B,$001B,$001C,$001C,$001D,$001D
	dc.w	$001E,$001E,$001F,$0020,$0020,$0021,$0021,$0022
	dc.w	$0022,$0023,$0023,$0024,$0025,$0025,$0026,$0026
	dc.w	$0027,$0028,$0028,$0029,$0029,$002A,$002B,$002B
	dc.w	$002C,$002D,$002D,$002E,$002F,$002F,$0030,$0030
	dc.w	$0031,$0032,$0033,$0033,$0034,$0035,$0035,$0036
	dc.w	$0037,$0037,$0038,$0039,$003A,$003A,$003B,$003C
	dc.w	$003C,$003D,$003E,$003F,$003F,$0040,$0041,$0042
	dc.w	$0043,$0043,$0044,$0045,$0046,$0046,$0047,$0048
	dc.w	$0049,$004A,$004A,$004B,$004C,$004D,$004E,$004F
	dc.w	$004F,$0050,$0051,$0052,$0053,$0054,$0055,$0055
	dc.w	$0056,$0057,$0058,$0059,$005A,$005B,$005C,$005C
	dc.w	$005D,$005E,$005F,$0060,$0061,$0062,$0063,$0064
	dc.w	$0065,$0066,$0067,$0068,$0069,$0069,$006A,$006B
	dc.w	$006C,$006D,$006E,$006F,$0070,$0071,$0072,$0073
	dc.w	$0074,$0075,$0076,$0077,$0078,$0079,$007A,$007B
	dc.w	$007C,$007D,$007E,$007F,$0080,$0081,$0083,$0084
	dc.w	$0085,$0086,$0087,$0088,$0089,$008A,$008B,$008C
	dc.w	$008D,$008E,$008F,$0090,$0092,$0093,$0094,$0095
	dc.w	$0096,$0097,$0098,$0099,$009A,$009C,$009D,$009E
	dc.w	$009F,$00A0,$00A1,$00A2,$00A4,$00A5,$00A6,$00A7
	dc.w	$00A8,$00A9,$00AB,$00AC,$00AD,$00AE,$00AF,$00B0
	dc.w	$00B2,$00B3,$00B4,$00B5,$00B6,$00B8,$00B9,$00BA
	dc.w	$00BB,$00BC,$00BE,$00BF,$00C0,$00C1,$00C3,$00C4
	dc.w	$00C5,$00C6,$00C7,$00C9,$00CA,$00CB,$00CC,$00CE
	dc.w	$00CF,$00D0,$00D2,$00D3,$00D4,$00D5,$00D7,$00D8
	dc.w	$00D9,$00DA,$00DC,$00DD,$00DE,$00E0,$00E1,$00E2
	dc.w	$00E4,$00E5,$00E6,$00E7,$00E9,$00EA,$00EB,$00ED
	dc.w	$00EE,$00EF,$00F1,$00F2,$00F3,$00F5,$00F6,$00F7
	dc.w	$00F9,$00FA,$00FB,$00FD,$00FE,$0100,$0101,$0102
	dc.w	$0104,$0105,$0106,$0108,$0109,$010B,$010C,$010D
	dc.w	$010F,$0110,$0111,$0113,$0114,$0116,$0117,$0118
	dc.w	$011A,$011B,$011D,$011E,$011F,$0121,$0122,$0124
	dc.w	$0125,$0127,$0128,$0129,$012B,$012C,$012E,$012F
	dc.w	$0131,$0132,$0133,$0135,$0136,$0138,$0139,$013B
	dc.w	$013C,$013E,$013F,$0140,$0142,$0143,$0145,$0146
	dc.w	$0148,$0149,$014B,$014C,$014E,$014F,$0151,$0152
	dc.w	$0154,$0155,$0156,$0158,$0159,$015B,$015C,$015E
	dc.w	$015F,$0161,$0162,$0164,$0165,$0167,$0168,$016A
	dc.w	$016B,$016D,$016E,$0170,$0171,$0173,$0174,$0176
	dc.w	$0177,$0179,$017A,$017C,$017E,$017F,$0181,$0182
	dc.w	$0184,$0185,$0187,$0188,$018A,$018B,$018D,$018E
	dc.w	$0190,$0191,$0193,$0194,$0196,$0198,$0199,$019B
	dc.w	$019C,$019E,$019F,$01A1,$01A2,$01A4,$01A5,$01A7
	dc.w	$01A8,$01AA,$01AC,$01AD,$01AF,$01B0,$01B2,$01B3
	dc.w	$01B5,$01B6,$01B8,$01BA,$01BB,$01BD,$01BE,$01C0
	dc.w	$01C1,$01C3,$01C4,$01C6,$01C8,$01C9,$01CB,$01CC
	dc.w	$01CE,$01CF,$01D1,$01D3,$01D4,$01D6,$01D7,$01D9
	dc.w	$01DA,$01DC,$01DD,$01DF,$01E1,$01E2,$01E4,$01E5
	dc.w	$01E7,$01E8,$01EA,$01EC,$01ED,$01EF,$01F0,$01F2
	dc.w	$01F3,$01F5,$01F7,$01F8,$01FA,$01FB,$01FD,$01FE

;-------------------------------------------------------------------------
; CHIPMEM DATA
;-------------------------------------------------------------------------

	SECTION "ChipBSS",BSS_C

Blanks:	ds.b	256	; 256 null-bytes

StarBuffer1:	ds.b	2*BUFW*BUFH	; Starfield buffers
StarBuffer2:	ds.b	2*BUFW*BUFH
StarBuffer3:	ds.b	2*BUFW*BUFH

;-------------------------------------------------------------------------
; COPPERLIST
;-------------------------------------------------------------------------

	SECTION "ChipData",DATA_C

CopperList:	dc.w	$008E,$2471,$0090,$34D1	; Display area
	dc.w	$0092,$0030,$0094,$00D8

CopSprites:	dc.w	$0120,$0000,$0122,$0000	; Sprite-pointers
	dc.w	$0124,$0000,$0126,$0000
	dc.w	$0128,$0000,$012A,$0000
	dc.w	$012C,$0000,$012E,$0000
	dc.w	$0130,$0000,$0132,$0000
	dc.w	$0134,$0000,$0136,$0000
	dc.w	$0138,$0000,$013A,$0000
	dc.w	$013C,$0000,$013E,$0000

	IFNE	DTIME			; Palette
	dc.w	$0182,$0000
	ELSE
	dc.w	$0180,$0000
	ENDC
	dc.w	$0182,$0EEF
	dc.w	$0184,$0778
	dc.w	$0186,$0EEF

	dc.w	$0102,$0000
	dc.w	$0108,$002C,$010A,$002C	; Modulos
CopBplPtr:	dc.w	$00E0,$0000,$00E2,$0000	; Bitplane-pointers
	dc.w	$00E4,$0000,$00E6,$0000

	dc.w	$2407,$FFFE,$0100,$2200	; Turn on planes on line $24

	dc.w	$FFDF,$FFFE		; Wait for line $100

	dc.w	$3407,$FFFE,$0100,$0000	; Turn off planes on line $134
	dc.w	$FFFF,$FFFE

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

