	section lame,code_c

>EXTERN"df0:DOUBLE",FONTY

FONTY=$54000
;PLANE	$68000-$70000

Trap_vec0  = $80
Execbase   = $4
Oldopen    = -$198
Intenar    = $01c
Intena     = $09a
Dmaconr    = $002
Dmacon     = $096
Cop1lch    = $080
Copjmp1    = $088
Vposr      = $004

	Move.l	#Start,$80.w	; Trap vector 0
	Trap	#0		; Execute trap 0 to give full control of the
	Rts			; 68000, needs an RTE to return.

Start:
	bsr	KillSys
	bsr	main
	bsr	setupsys

	Rte		; Return from exception 
		

*****************************************************************************
;Killsys - Disable operating system and interrupts
*****************************************************************************
Killsys:
	Move.l	$4.w,a6		; Execbase vector
	Lea	Gfxname(pc),a1	; Pointer to "graphics.library" into a1
	Jsr	Oldopen(a6)	; Open this library
	Lea	$dff000,a6	; Pointer to custom chips
	Move.l	d0,a0		; Address of the graphics library
	Move.l	38(a0),Sys_copl		; Remember the System copperlist
	Move	Intenar(a6),Int_set	; System interrupts
	Move	#$7fff,Intena(a6)	; Now switch off all interrupts
	Move.l	$6c.w,Vbl_vec		; System vertical blanking int.
	Move	Dmaconr(a6),Dma_set	; System DMA
	Move	#$7fff,Dmacon(a6)	; Clear all DMA
	Move	#$87c0,Dmacon(a6)	; Now set the required DMA channels

	Move.l	#COP,Cop1lch(a6)	; Init. our own copperlist
	Clr	Copjmp1(a6)

	Rts

Gfxname:		dc.b "graphics.library",0
	Even
*****************************************************************************
;Sysreturn - Re-enable operating system and interrupts
*****************************************************************************
Setupsys:
	Lea	$dff000,a6
	Move	#$7fff,Intena(a6)	; Clear all interrupts
	Move.l	Vbl_vec,$6c.w	; Restore VBL interrupt
	Move	Int_set,d0
	Or	#$c000,d0
	Move	d0,Intena(a6)		; Restore system interrupts
	Move	#$7fff,Dmacon(a6)
	Move	Dma_set,d0
	Or	#$8200,d0
	Move	d0,Dmacon(a6)		; Restore system DMA
	Move.l	Sys_copl,Cop1lch(a6)	; Restore system copperlist
	Clr	Copjmp1(a6)
	Rts

Vbl_vec:          	dc.l 0
Int_set:          	dc.l 0
Dma_set:          	dc.l 0
Sys_copl:          	dc.l 0


Main:
	Move.l	4(A6),d0
	And.l	#$1ff00,d0
	Cmp.l	#$04100,d0	; Wait for vertical position 1
	Bne.s	Main

	BSR	UPDOWN
	BSR	LEFT
	; ROUTINE ;
	Btst	#6,$bfe001	; Check the left mouse button
	Bne.s	Main

	Rts

BACK=$68000	;+$2000

PLANE1:			dc.L	$6A000
PLANE2:			dc.L	$6D000

TEXTPO:			dc.L	TEXT
SINPOI:			dc.L	SINUS

TA:			dc.W	$0000
TC:			dc.W	$0020


TEXT:		dc.B	"TRAX IS PROUD TO PRESENT:    "
		dc.B	"MEGACRACK s  ",0
	EVEN


UPDOWN:	MOVE.L	PLANE1(PC),D0
	MOVE.L	PLANE2(PC),PLANE1
	MOVE.L	D0,PLANE2
	MOVE.W	D0,COPPLANE		;IN COPPER (BUFFER)
	MOVE.L	PLANE2(PC),D0
	MOVE.L	D0,D1
	SUB.L	#[48*4],D1
	MOVE.W	D1,COPPLANE2
	ADD.L	#$00000400,D0
	BSR	WAITBLIT
	MOVE.L	D0,$54(A6)
	MOVE.L	#$01000000,$40(A6)
	MOVE.L	#0,$44(A6)
	MOVE.L	#0,$64(A6)
	MOVE.W	#$1000,$58(A6)
	MOVE.L	#2,D0
	ADDQ.L	#1,D0
	MOVE.L	#$00000020,D1
	MOVE.L	#$00000030,D2
	CLR.L	D3
	MOVE.W	TC,D3		
	MOVE.L	#0,D4
	LEA	BACK+2,A0		;zwisch
	MOVE.L	#11,D7
	LSL.W	#6,D1
	OR.W	D0,D1
	MOVE.L	SINPOI(PC),A4
	MOVE.L	#SINEND,A5
	BSR	WAITBLIT
	MOVE.L	#$002A002A,$62(A6)
	MOVE.W	#$002A,$66(A6)
	MOVE.L	#$FFFF0000,$44(A6)
	MOVE.W	#0,$42(A6)
DATALOOP:
	MOVE.L	PLANE2(PC),A1
	SUBQ.L	#1,A1
	MOVE.L	#0,D4
	CMP.L	A4,A5
	BGT	NEXT
	SUB.L	#$00000168,A4
NEXT:	MOVE.W	(A4),D4
	AND.W	#$00FF,D4
	ADD.W	#$0047,D4
	LSR.W	#1,D4
	ADD.L	#$00000010,A4
	MOVE.W	D3,D5
	MOVE.W	D3,D6
	ASR.W	#4,D5
	ASL.W	#1,D5
	MULU	D2,D4
	ADD.W	D5,D4
	AND.W	#15,D6
	ADD.L	D4,A1
	ROR.W	#4,D6
	OR.W	#$0DFC,D6
	BSR	WAITBLIT
	MOVE.W	D6,$40(A6)
	MOVE.L	A0,$50(A6)
	MOVE.L	A1,$54(A6)
	MOVE.L	A1,$4C(A6)
	MOVE.W	D1,$58(A6)
	ADD.L	#4,A0
	ADD.W	#$0020,D3
	DBRA	D7,DATALOOP
	ADDQ.L	#2,SINPOI		;inpointer
	MOVE.L	SINPOI(PC),A0
	LEA	SINEND,A1
	CMP.L	A0,A1
	BGT	l162
	SUB.L	#$00000168,SINPOI
l162:	RTS	


LEFT:	TST.W	TA			;---
	BEQ	YEP
	SUB.W	#1,TA			;---
	RTS	
 
YEP:	SUB.W	#2,TC			;---
	BNE	ZERONOW
	MOVE.W	#$0020,TC		;---
	ADD.L	#$00000010,SINPOI	
	LEA	SINEND(PC),A0
	MOVE.L	SINPOI(PC),A1
	CMP.L	A1,A0
	BGT	SINOLD
	MOVE.L	#SINUS,SINPOI	;sintab
SINOLD:	BSR	WAITBLIT
	MOVE.L	#BACK,$50(A6)	;zwisch
	MOVE.L	#BACK-4,$54(A6)
	MOVE.L	#0,$64(A6)
	MOVE.L	#$09F00000,$40(A6)
	MOVE.L	#$FFFFFFFF,$44(A6)
	MOVE.W	#$0340,$58(A6)
	MOVE.L	TEXTPO(PC),A0
	MOVE.L	#0,D3
	ADDQ.L	#1,TEXTPO		;textpoint
	MOVE.B	(A0),D3
	BNE	OLDTEXT
	MOVE.L	#TEXT,TEXTPO
	MOVE.B	#$20,D3
OLDTEXT:
	CMP.B	#$73,D3
	BNE	SSTOP
	MOVE.W	#$00C0,TA		;---
	MOVE.B	#$20,D3
SSTOP:	SUB.B	#$20,D3
	MOVE.L	D3,D4
	ASL.W	#2,D3
	DIVU	#10,D4
	MULU	#$04D8,D4
	ADD.L	D3,D4
	ADD.L	#FONTY,D4		;font
	BSR	WAITBLIT
	MOVE.L	D4,$50(A6)
	MOVE.L	#BACK+$2E,$54(A6)	;zwisch
	MOVE.L	#$09F00000,$40(A6)
	MOVE.L	#$FFFFFFFF,$44(A6)
	MOVE.L	#$0024002C,$64(A6)
	MOVE.W	#$0802,$58(A6)
ZERONOW:
	RTS	
		
WAITBLIT:	
	BTST	#$E,$DFF002
	BNE	WAITBLIT
	RTS


COP:		dc.W	$0102,$0037,$00E0,$0006,$00E2
COPPLANE:	
		dc.W	$D000
		dc.W	$00e4,$0006,$00e6
COPPLANE2:
		dc.W	$D000+[48*4]
		dc.W	$0180,$0000,$0182,$00F0,$0108,$0002
		dc.W	$0184,$0080,$0186,$00F0
		dc.W	$010A,$0002,$0092,$0028,$0094,$00DC
		dc.W	$008E,$2181,$0090,$7FC7,$0100,$2200
		dc.W	$E001,$FFFE
		dc.W	$0180,$0000,$0182,$0080
		dc.W	$0184,$0040,$0186,$0080
		dc.W	$010A,-94-48,$0108,-94-48
		dc.W	$EC01,$FFFE
		dc.W	$0180,$0000,$0182,$0070
		dc.W	$0184,$0040,$0186,$0070
		dc.W	$010A,-94,$0108,-94
		dc.W	$F801,$FFFE
		dc.W	$0180,$0000,$0182,$0060
		dc.W	$0184,$0030,$0186,$0060
		dc.W	$010A,-94-48,$0108,-94-48
		dc.W	$FFDF,$FFFE,$0001,$FFFE
		dc.W	$0180,$0000,$0182,$0050
		dc.W	$0184,$0030,$0186,$0050
		dc.W	$010A,-94,$0108,-94
		dc.W	$1001,$FFFE
		dc.W	$0180,$0000,$0182,$0040
		dc.W	$0184,$0020,$0186,$0040
		dc.W	$010A,-94-48,$0108,-94-48
		dc.W	$1801,$FFFE
		dc.W	$0180,$0000,$0182,$0030
		dc.W	$0184,$0020,$0186,$0030
		dc.W	$010A,-94,$0108,-94
		dc.W	$2401,$FFFE
		dc.W	$0180,$0000,$0182,$0020
		dc.W	$0184,$0010,$0186,$0020
		dc.W	$010A,-94-48,$0108,-94-48
		dc.W	$3201,$FFFE
		dc.W	$0180,$0000,$0182,$0010
		dc.W	$0184,$0000,$0186,$0010
		dc.W	$010A,-94,$0108,-94
		dc.W	$FFFF,$FFFE

SINUS:
	dc.L	$008B008E,$00910095,$0098009B,$009F00A2,$00A500A8,$00AB00AE
	dc.L	$00B200B5,$00B800BB,$00BE00C0,$00C300C6,$00C900CB,$00CE00D0
	dc.L	$00D300D5,$00D700D9,$00DB00DD,$00DF00E1,$00E200E4,$00E500E7
	dc.L	$00E800E9,$00EA00EA,$00EB00EC,$00EC00EC,$00EC00EC,$00EC00EC
	dc.L	$00EC00EC,$00EB00EA,$00EA00E9,$00E800E7,$00E500E4,$00E200E1
	dc.L	$00DF00DD,$00DB00D9,$00D700D5,$00D300D0,$00CE00CB,$00C900C6
	dc.L	$00C300C0,$00BE00BB,$00B800B5,$00B200AE,$00AB00A8,$00A500A2
	dc.L	$009F009B,$00980095,$0091008E,$008B0088,$00850081,$007E007B
	dc.L	$00770074,$0071006E,$006B0068,$00640061,$005E005B,$00580056
	dc.L	$00530050,$004D004B,$00480046,$00430041,$003F003D,$003B0039
	dc.L	$00370035,$00340032,$0031002F,$002E002D,$002C002C,$002B002A
	dc.L	$002A002A,$002A002A,$002A002A,$002A002A,$002B002C,$002C002D
	dc.L	$002E002F,$00310032,$00340035,$00370039,$003B003D,$003F0041
	dc.L	$00430046,$0048004B,$004D0050,$00530056,$0058005B,$005E0061
	dc.L	$00640068,$006B006E,$00710074,$0077007B,$007E0081,$00850088
SINEND:
