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

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

*-----------------------------------------------------------------------------*
;	INCDIR	HD1:CODE/INCLUDE/
;	INCLUDE	MACROS.i

_LVOForbid			equ	-132
_LVOPermit			equ	-138
_LVOAllocMem			equ	-198
_LVOAllocAbs			equ	-204
_LVOFreeMem			equ	-210
_LVOCloseLibrary		equ	-414
_LVOOpenLibrary			equ	-552
_LVOLoadView			equ	-222
_LVOWaitTOF			equ	-270
_LVOSupervisor			equ	-30

*-----------------------------------------------------------------------------*
	section	a,code_p

START	movem.l	d0-a6,-(sp)

	move.l	4.w,a6
	moveq	#0,d0
	btst	d0,297(a6)
	beq.s	.68000

	lea	.Movec(pc),a5
	jsr	_LVOSupervisor(a6)
.68000	move.l	d0,VBR

	jsr	_LVOForbid(a6)

	moveq	#0,d0
	lea	GfxName(pc),a1
	jsr	_LVOOpenLibrary(a6)

	move.l	d0,GfxBase
	move.l	d0,a6
	move.l	$22(a6),Temp_ActiView
	move.l	$26(a6),Temp_CopList1
	move.l	$32(a6),Temp_CopList2

	sub.l	a1,a1
	jsr	_LVOLoadView(a6)

	jsr	_LVOWaitTOF(a6)
	jsr	_LVOWaitTOF(a6)

	lea	$dff000,a6
	move.w	$02(a6),Temp_DMACON
	move.w	$10(a6),Temp_ADKCON
	move.w	$1c(a6),Temp_INTENA

	move.w	#$7fff,$96(a6)
	move.w	#$7fff,$9a(a6)
	move.w	#$7fff,$9c(a6)
	move.w	#$7f00,$9e(a6)

	move.l	VBR(pc),a5
	move.l	$6c(a5),Temp_Lev3Int

	lea	Lev3_Interrupt(PC),a0
;	move.l	a0,$6c(a5)

	move.w	#%1000001111000000,$96(a6)
	move.w	#%1100000000100000,$9a(a6)

	lea	planes(pc),a0
	move.l	#Empty,d0
	move.w	d0,6(a0)
	swap	d0
	move.w	d0,2(a0)
	swap	d0
	add.l	#40*256,d0
	move.w	d0,14(a0)
	swap	d0
	move.w	d0,10(a0)

	lea	COpLIST,a0
	move.l	a0,$80(a6)
;	tst.w	$88(a6)

	lea	$dff000,a6

.Main	cmp.b	#$f0,$dff006
	bne.s	.Main
	
;	move.w	#$f0,$dff180
	bsr.w	Mouse
	bsr.w	Clear
	bsr.w	Siide
;	move.w	#$00,$dff180

	btst	#6,$bfe001
	bne.s	.Main

*-----------------------------------------------------------------------------*

.exit	move.l	Temp_ActiView(pc),a1
	move.l	GfxBase(pc),a6
	jsr	_LVOLoadView(a6)

	lea	$dff000,a6
	move.w	#$7fff,$96(a6)
	move.w	#$7fff,$9a(a6)
	move.w	#$7fff,$9e(a6)

	move.l	Temp_CopList1(pc),$80(a6)
	move.l	Temp_CopList2(pc),$84(a6)

	move.l	VBR(pc),a5
	move.l	Temp_Lev3Int(pc),$6c(a5)

	move.w	Temp_ADKCON(pc),d0
	or.w	#$8000,d0
	move.w	d0,$9e(a6)

	move.w	Temp_DMACON(pc),d0
	or.w	#$8000,d0
	move.w	d0,$96(a6)

	move.w	Temp_INTENA(pc),d0
	or.w	#$c000,d0
	move.w	d0,$9a(a6)

	move.l	$4.w,a6
	move.l	GfxBase(pc),a1
	jsr	_LVOCloseLibrary(a6)

	jsr	_LVOPermit(a6)

	movem.l	(sp)+,d0-a6
	moveq	#0,d0
	rts

.Movec	dc.l	$4E7A0801			MOVEC	VBR,d0
	rte

*-----------------------------------------------------------------------------*
VBR		dc.l	0
Temp_ADKCON	dc.w	0
Temp_DMACON	dc.w	0
Temp_INTENA	dc.w	0
Temp_CopList1	dc.l	0
Temp_CopList2	dc.l	0
Temp_Lev3Int	dc.l	0
Temp_ActiView	dc.l	0

GfxBase		dc.l	0
Time4		dc.l	0

GfxName		dc.b	'graphics.library',0
		even

*-----------------------------------------------------------------------------*
LEV3_INTERRUPT
	movem.l	d0-a6,-(SP)

	movem.l	(SP)+,d0-a6
	move.w	#%0000000000100000,$dff09c
	rte

Siide	lea	Spic2(pc),a1
	lea	Empty+96*40+16(pc),a2	

	moveq	#64-1,d0
	moveq	#2-1,d1
.cl1	move.l	(a1)+,(a2)+
	move.l	(a1)+,(a2)+
	lea	32(a2),a2
	dbf	d0,.cl1
	moveq	#64-1,d0
	lea	7680(a2),a2
	dbf	d1,.cl1


	lea	Empty(pc),a2	
	lea	Spic2(pc),a1
	lea	Y_pos(pc),a3
	move.w	(a3),d4

	mulu	#40,d4
	add.w	#16,d4
	ext.l	d4
	add.l	d4,a2
	
	moveq	#64-1,d0
	moveq	#2-1,d1
.cl2	move.l	(a1)+,d2
	or.l	d2,(a2)+
	move.l	(a1)+,d2
	or.l	d2,(a2)+
	lea	32(a2),a2
	dbf	d0,.cl2
	moveq	#64-1,d0
	lea	7680(a2),a2
	dbf	d1,.cl2

	rts


;----------mouse---------------

; up & down

mouse	move.b	mousedata(pc),d0
	sub.b	$dff00a,d0
	beq.w	.ei
	bpl.s	.vah
	addq.w	#2,y_pos
.ei	move.b	$dff00a,mousedata
	bra.s	.mouse
	
.vah	subq.w	#2,y_pos
	move.b	$dff00a,mousedata
	bra.w	.mouse

; left & right

.mouse	move.b	mousedata1(pc),d0
	sub.b	$dff00b,d0
	beq.w	.ei1
	bpl.s	.vah1
	addq.w	#2,x_pos
.ei1	move.b	$dff00b,mousedata1
	rts
		
.vah1	subq.w	#2,x_pos
	move.b	$dff00b,mousedata1
	rts
	
mousedata	dc.b	0
mousedata1	dc.b	0

X_pos		dc.w	160
Y_pos		dc.w	128

Clear	lea	$dff000,a6
	move.l	#Empty,$54(a6)
	move.l	#$01f00000,$40(a6)
	move.l	#$ffffffff,$44(a6)
	move.l	#$00000000,$64(a6)
	move.w	#512*64+20,$58(a6)

.wait	btst	#6,$2(a6)
	bne.s	.wait
	rts
	

Coplist
	dc.w	$0120,$0000,$0122,$0000,$0124,$0000,$0126,$0000
	dc.w	$0128,$0000,$012a,$0000,$012c,$0000,$012e,$0000
	dc.w	$0130,$0000,$0132,$0000,$0134,$0000,$0136,$0000
	dc.w	$0138,$0000,$013a,$0000,$013c,$0000,$013e,$0000

	dc.w 	$008e,$1871,$0090,$28d1
	dc.w 	$0092,$0038,$0094,$00d0
	dc.w 	$0108,$0000,$010a,$0000	
	dc.w 	$0102,$0000,$0104,$0000
		
	dc.w	$0180,$0286,$0182,$0aa8,$0184,$0444,$0186,$0aa8

	dc.w	$2801,$fffe,$0100,%0010000000000000
planes	dc.w	$00e0,$0000,$00e2,$0000,$00e4,$0000,$00e6,$0000
	
	dc.w	$ff01,$fffe,$0100,$0000

	dc.w	$ffff,$fffe

Empty	blk.b	40*256*2,0

	incdir	df1:
Spic2	incbin	test.raw5
