	section lame,code_c

>EXTERN"df0:fonta",font

;tRAX oF fALCON iN 1991

font=$60000
plane=$50000


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.l	#irq,$6c
	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	#$0020,Dmacon(a6)
	move	#$c020,$dff09a

	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:

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

	Rts

irq:
	

	bsr	left
	bsr	sin

	move.w	#$0020,$dff09c
	rte

zhler:	dc.w 8
timer:	dc.w 0

LEFT:	TST.W	TIMER
	BEQ	GOON
	SUBQ.W	#1,TIMER
	RTS
GOON:
	BSR	blitwait
	MOVE.L	#plane,$0054(A6)
	MOVE.L	#plane+2,$0050(A6)
	MOVE.L	#$E9F00000,$0040(A6)
	MOVE.L	#$FFFFFFFF,$0044(A6)
	CLR.L	$0064(A6)
	MOVE.W	#$0555,$0058(A6)
	MOVE.W	zhler(PC),D0
	SUBQ.W	#1,D0
	BEQ	TEXTOUT
	MOVE.W	D0,zhler	
	RTS	

TEXTOUT:
	MOVE.W	#8,zhler
	MOVE.L	textpointer(PC),A0
	MOVEQ	#0,D0
	MOVE.B	(A0)+,D0
	CMP.B	#1,(A0)
	BNE.S	LSD
	MOVE.W	#200,TIMER
	MOVE.W	#$20,D0
	ADDQ.L	#1,A0
LSD:
	CMP.B	#0,(A0)
	BNE.S	lbC22

	LEA	text(PC),A0
lbC22:	MOVE.L	A0,textpointer
 
lbC34:	CMP.B	#$49,D0
	BNE.S	lbC42
	MOVE.W	#5,zhler
lbC42:	SUB.B	#$20,D0
	DIVU	#$14,D0
	MOVE.W	D0,D1
	CLR.W	D0
	SWAP	D0
	MULU	#$348,D1
	LSL.W	#1,D0
	LEA	font,A0 ;font
	ADD.L	D0,A0
	ADD.L	D1,A0
	LEA	plane+$2a,A1   ;pos
	MOVE.W	#$0013,D0
lbC6A:	MOVE.L	(A0),(A1)
	LEA	$002C(A1),A1
	LEA	$0028(A0),A0
	DBRA	D0,lbC6A
	RTS	


sin:	BCHG	#1,flag
	BNE.S	lbC16
	MOVE.l	#plane+$3000-84,D3	;w
	MOVE.L	#plane+$3000,D6
	BRA.S	lbC20
 
lbC16:	MOVE.l	#plane+$1000-84,D3  ;low
	MOVE.L	#plane+$1000,D6	    ;high
lbC20:	MOVE.W	D3,cop1
	ADD.W	#$0054,D3
	MOVE.W	D3,cop2
	BSR	blitwait
	MOVE.L	D6,$0054(A6)
	SUBQ.L	#2,D6
	MOVE.W	#$0100,$0040(A6)
	MOVE.W	#2,$0066(A6)
	MOVE.W	#$2B94+256,$0058(A6)
	MOVEQ	#$14,D3
	MOVE.L	#plane,D2
	MOVE.L	sinpointer(PC),A2
	
	BSR	blitwait
	
	MOVE.W	#$0DFC,$0040(A6)
	MOVE.W	#$0028,$0066(A6)
	MOVE.L	#$0028002A,$0062(A6)
	MOVE.W	#$8400,$0096(A6)
	MOVE.L	#tab2,D7  
	MOVE.W	#$0501,D1
lbC90:	MOVE.W	#$8000,D0
	MOVEQ	#15,D5
lbC96:	MOVEQ	#0,D4
	MOVE.B	(A2)+,D4
	MOVE.L	D7,A0
	ADD.W	D4,A0
	ADD.W	D4,A0
	MOVE.W	(A0),D4
	ADD.W	D4,D6
	MOVE.L	D6,$004C(A6)
	MOVE.L	D2,$0050(A6)
	MOVE.L	D6,$0054(A6)
	SUB.L	D4,D6
	MOVE.W	D0,$0046(A6)
	MOVE.W	D1,$0058(A6)
	ROR.W	#1,D0
	DBRA	D5,lbC96
	ADDQ.L	#2,D2
	ADDQ.L	#2,D6
	DBRA	D3,lbC90
	MOVE.W	#$0400,$0096(A6)
	CMP.L	#sintab,sinpointer  ;sintab
	BEQ.S	lbCE2
	SUBQ.L	#1,sinpointer
	RTS	
 
lbCE2:	ADD.L	#$0000013F,sinpointer
	RTS	
	
blitwait:
	BTST	#14,2(A6)
	BNE.S	blitwait
	RTS

textpointer:	dc.l text
sinpointer:	dc.l sintab+$13f
flag:	dc.w 0

text:	dc.b"    TRAX# (IN 1991)   ",01," @948 10 69   SWITZERLAND !!!",0
	even


sintab:	DC.W	$4E50,$5153,$5456,$5759,$5A5C,$5D5F,$6062,$6365
	DC.W	$6668,$696B,$6C6D,$6F70,$7273,$7476,$7778,$7A7B
	DC.W	$7C7D,$7F80,$8182,$8384,$8687,$8889,$8A8B,$8C8D
	DC.W	$8E8E,$8F90,$9192,$9293,$9495,$9596,$9797,$9898
	DC.W	$9999,$9A9A,$9A9B,$9B9B,$9C9C,$9C9C,$9C9C,$9D9D
	DC.W	$9D9D,$9D9C,$9C9C,$9C9C,$9C9B,$9B9B,$9A9A,$9A99
	DC.W	$9998,$9897,$9796,$9595,$9493,$9292,$9190,$8F8E
	DC.W	$8E8D,$8C8B,$8A89,$8887,$8684,$8382,$8180,$7F7D
	DC.W	$7C7B,$7A78,$7776,$7473,$7270,$6F6D,$6C6B,$6968
	DC.W	$6665,$6362,$605F,$5D5C,$5A59,$5756,$5453,$5150
	DC.W	$4E4C,$4B49,$4846,$4543,$4240,$3F3D,$3C3A,$3937
	DC.W	$3634,$3331,$302F,$2D2C,$2A29,$2826,$2524,$2221
	DC.W	$201F,$1D1C,$1B1A,$1918,$1615,$1413,$1211,$100F
	DC.W	$0E0E,$0D0C,$0B0A,$0A09,$0807,$0706,$0505,$0404
	DC.W	$0303,$0202,$0201,$0101,$0100,$0000,$0000,$0000
	DC.W	$0000,$0000,$0000,$0000,$0101,$0101,$0202,$0203
	DC.W	$0304,$0405,$0506,$0707,$0809,$0A0A,$0B0C,$0D0E
	DC.W	$0E0F,$1011,$1213,$1415,$1618,$191A,$1B1C,$1D1F
	DC.W	$2021,$2224,$2526,$2829,$2A2C,$2D2F,$3031,$3334
	DC.W	$3637,$393A,$3C3D,$3F40,$4243,$4546,$4849,$4B4C
	DC.W	$4E50,$5153,$5456,$5759,$5A5C,$5D5F,$6062,$6365
	DC.W	$6668,$696B,$6C6D,$6F70,$7273,$7476,$7778,$7A7B
	DC.W	$7C7D,$7F80,$8182,$8384,$8687,$8889,$8A8B,$8C8D
	DC.W	$8E8E,$8F90,$9192,$9293,$9495,$9596,$9797,$9898
	DC.W	$9999,$9A9A,$9A9B,$9B9B,$9C9C,$9C9C,$9C9C,$9D9D
	DC.W	$9D9D,$9D9C,$9C9C,$9C9C,$9C9B,$9B9B,$9A9A,$9A99
	DC.W	$9998,$9897,$9796,$9595,$9493,$9292,$9190,$8F8E
	DC.W	$8E8D,$8C8B,$8A89,$8887,$8684,$8382,$8180,$7F7D
	DC.W	$7C7B,$7A78,$7776,$7473,$7270,$6F6D,$6C6B,$6968
	DC.W	$6665,$6362,$605F,$5D5C,$5A59,$5756,$5453,$5150
	DC.W	$4E4C,$4B49,$4846,$4543,$4240,$3F3D,$3C3A,$3937
	DC.W	$3634,$3331,$302F,$2D2C,$2A29,$2826,$2524,$2221
	DC.W	$201F,$1D1C,$1B1A,$1918,$1615,$1413,$1211,$100F
	DC.W	$0E0E,$0D0C,$0B0A,$0A09,$0807,$0706,$0505,$0404
	DC.W	$0303,$0202,$0201,$0101,$0100,$0000,$0000,$0000
	DC.W	$0000,$0000,$0000,$0000,$0101,$0101,$0202,$0203
	DC.W	$0304,$0405,$0506,$0707,$0809,$0A0A,$0B0C,$0D0E
	DC.W	$0E0F,$1011,$1213,$1415,$1618,$191A,$1B1C,$1D1F
	DC.W	$2021,$2224,$2526,$2829,$2A2C,$2D2F,$3031,$3334
	DC.W	$3637,$393A,$3C3D,$3F40,$4243,$4546,$4849,$4B4C
	DC.W	$4E50,$5153,$5456,$5759,$5A5C,$5D5F,$6062,$6365
	DC.W	$6668,$696B,$6C6D,$6F70,$7273,$7476,$7778,$7A7B
	DC.W	$7C7D,$7F80,$8182,$8384,$8687,$8889,$8A8B,$8C8D
	DC.W	$8E8E,$8F90,$9192,$9293,$9495,$9596,$9797,$9898
	DC.W	$9999,$9A9A,$9A9B,$9B9B,$9C9C,$9C9C,$9C9C,$9D9D
	DC.W	$9D9D,$9D9C,$9C9C,$9C9C,$9C9B,$9B9B,$9A9A,$9A99
	DC.W	$9998,$9897,$9796,$9595,$9493,$9292,$9190,$8F8E
	DC.W	$8E8D,$8C8B,$8A89,$8887,$8684,$8382,$8180,$7F7D
	DC.W	$7C7B,$7A78,$7776,$7473,$7270,$6F6D,$6C6B,$6968
	DC.W	$6665,$6362,$605F,$5D5C,$5A59,$5756,$5453,$5150
	DC.W	$4E4C,$4B49,$4846,$4543,$4240,$3F3D,$3C3A,$3937
	DC.W	$3634,$3331,$302F,$2D2C,$2A29,$2826,$2524,$2221
	DC.W	$201F,$1D1C,$1B1A,$1918,$1615,$1413,$1211,$100F
	DC.W	$0E0E,$0D0C,$0B0A,$0A09,$0807,$0706,$0505,$0404
	DC.W	$0303,$0202,$0201,$0101,$0100,$0000,$0000,$0000
	DC.W	$0000,$0000,$0000,$0000,$0101,$0101,$0202,$0203
	DC.W	$0304,$0405,$0506,$0707,$0809,$0A0A,$0B0C,$0D0E
	DC.W	$0E0F,$1011,$1213,$1415,$1618,$191A,$1B1C,$1D1F
	DC.W	$2021,$2224,$2526,$2829,$2A2C,$2D2F,$3031,$3334
	DC.W	$3637,$393A,$3C3D,$3F40,$4243,$4546,$4849,$4B4C

tab2:	DC.W	$0000,$002A,$0054,$007E,$00A8,$00D2,$00FC,$0126
	DC.W	$0150,$017A,$01A4,$01CE,$01F8,$0222,$024C,$0276
	DC.W	$02A0,$02CA,$02F4,$031E,$0348,$0372,$039C,$03C6
	DC.W	$03F0,$041A,$0444,$046E,$0498,$04C2,$04EC,$0516
	DC.W	$0540,$056A,$0594,$05BE,$05E8,$0612,$063C,$0666
	DC.W	$0690,$06BA,$06E4,$070E,$0738,$0762,$078C,$07B6
	DC.W	$07E0,$080A,$0834,$085E,$0888,$08B2,$08DC,$0906
	DC.W	$0930,$095A,$0984,$09AE,$09D8,$0A02,$0A2C,$0A56
	DC.W	$0A80,$0AAA,$0AD4,$0AFE,$0B28,$0B52,$0B7C,$0BA6
	DC.W	$0BD0,$0BFA,$0C24,$0C4E,$0C78,$0CA2,$0CCC,$0CF6
	DC.W	$0D20,$0D4A,$0D74,$0D9E,$0DC8,$0DF2,$0E1C,$0E46
	DC.W	$0E70,$0E9A,$0EC4,$0EEE,$0F18,$0F42,$0F6C,$0F96
	DC.W	$0FC0,$0FEA,$1014,$103E,$1068,$1092,$10BC,$10E6
	DC.W	$1110,$113A,$1164,$118E,$11B8,$11E2,$120C,$1236
	DC.W	$1260,$128A,$12B4,$12DE,$1308,$1332,$135C,$1386
	DC.W	$13B0,$13DA,$1404,$142E,$1458,$1482,$14AC,$14D6
	DC.W	$1500,$152A,$1554,$157E,$15A8,$15D2,$15FC,$1626
	DC.W	$1650,$167A,$16A4,$16CE,$16F8,$1722,$174C,$1776
	DC.W	$17A0,$17CA,$17F4,$181E,$1848,$1872,$189C,$18C6
	DC.W	$18F0,$191A,$1944,$196E,$1998,$19C2,$19EC,$1A16
	DC.W	$1A40,$1A6A,$1A94,$1ABE,$1AE8,$1B12,$1B3C,$1B66
	DC.W	$1B90,$1BBA,$1BE4,$1C0E,$1C38,$1C62,$1C8C,$1CB6
	DC.W	$1CE0,$1D0A,$1D34,$1D5E,$1D88,$1DB2,$1DDC,$1E06
	DC.W	$1E30,$1E5A,$1E84,$1EAE,$1ED8,$1F02,$1F2C,$1F56
	DC.W	$1F80,$1FAA,$1FD4,$1FFE,$2028,$2052,$207C,$20A6
	DC.W	$20D0,$20FA,$2124,$214E,$2178,$21A2,$21CC,$21F6
	DC.W	$2220,$224A,$2274,$229E,$22C8,$22F2,$231C,$2346
	DC.W	$2370,$239A,$23C4,$23EE,$2418,$2442,$246C,$2496
	DC.W	$24C0,$24EA,$2514,$253E,$2568,$2592,$25BC,$25E6
	DC.W	$2610,$263A,$2664,$268E,$26B8,$26E2,$270C,$2736
	DC.W	$2760,$278A,$27B4,$27DE,$2808,$2832,$285C,$2886
	DC.W	$28B0,$28DA,$2904,$292E,$2958,$2982,$29AC,$29D6


cop:	DC.W	$008E,$2c81,$0090,$44c1,$0092,$0038
	DC.W	$0094,$00d0,$0100,$0000,$0102,$0045
	DC.W	$0108,2,$010A,2
	DC.W	$0180,$0000,$0182,$000f,$0184,$0007
	DC.W	$0186,$000b
	DC.W	$00E0,$0005,$00E2
cop1:	DC.W	$2000
	DC.W	$00E4,$0005,$00E6
cop2:	DC.W	$2054
	DC.W	$2001,$FFFE,$0100,$2200
	DC.W	$E001,$FFFE
	DC.W	$0108,-82,$010a,-82
	DC.W	$0182,$0008,$0184,$0003,$0186,$0006
	DC.W	$FFFF,$FFFE
