	section lame,code_c

DATA=$30000
;PLANE $66000-$79000

>EXTERN"DF0:BIGFNT",DATA

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:	
	LEA	$00066000,A1
	MOVE.W	#$4AC4,D0
lbC1A:	CLR.L	(A1)+
	DBRA	D0,lbC1A
	LEA	DATA,A0	;INVERS
	MOVE.W	#$016F,D0
lbC2A:	NOT.W	(A0)+
	DBRA	D0,lbC2A

	LEA	$00DFF000,A6


ROUT:	Move.l	Vposr(a6),d0
	And.l	#$1ff00,d0
	Cmp.l	#$00100,d0	; Wait for vertical position 1
	Bne.s	ROUT

	BSR	FIAT



ROUT2:	Move.l	Vposr(a6),d0
	And.l	#$1ff00,d0
	Cmp.l	#$0F100,d0	; Wait for vertical position 1
	Bne.s	ROUT2

	; ROUTINE ;


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

	RTS	


 
FIAT:	SUB.W	#$0066,ZHLER5C		;speed
	BPL.L	NOTJET

	ADD.W	#$00FF,ZHLER5C

	MOVE.L	#$09F00000,$0040(A6)
	MOVE.L	#$FFFFFFFF,$0044(A6)
	MOVE.L	#$00000056,$0064(A6)
	MOVE.L	POINTER(PC),A0		
	MOVE.L	#$00066000,D1		;PLANE
	MOVE.W	PLANE(PC),D1	
	MOVEQ	#$10,D0
lbCA0:	MOVEQ	#0,D2
	MOVE.B	(A0),D2
	ASL.W	#5,D2
	ADD.L	#DATA,D2		
	MOVE.L	D2,$0050(A6)
	MOVE.L	D1,$0054(A6)
	MOVE.W	#$0401,$0058(A6)
	ADD.W	#$002C,D1
	MOVE.L	D2,$0050(A6)
	MOVE.L	D1,$0054(A6)
	MOVE.W	#$0401,$0058(A6)
	ADD.W	#$0554,D1
	ADD.W	#$0011,A0
	DBRA	D0,lbCA0
	ADDQ.W	#2,PLANE			
	CMP.W	#$602C,PLANE		;PLANE&$FFFF
	BNE.S	lbC100
	MOVE.W	#$6000,PLANE		;PLANE&$FFFF
lbC100:	ADDQ.W	#1,POINTER+2	
	SUBQ.B	#1,ZHLER5E		
	BNE	lbC1E2
lbC110:	MOVE.L	TEXTPOINTER(PC),A0		
	ADDQ.W	#1,A0
	MOVE.B	(A0),D1
	BNE.S	lbC124
	LEA	TEXT(PC),A0
	MOVE.B	(A0),D1
lbC124:	MOVE.L	A0,TEXTPOINTER		
	MOVE.B	#$11,ZHLER5E		
 
lbC1B6:	CMP.B	#$20,D1
	BNE.S	lbC1C4
	MOVE.B	#10,ZHLER5E		
lbC1C4:	LEA	ABC(PC),A0	
	MOVEQ	#0,D2
lbC1CC:	ADDQ.W	#1,D2
	CMP.B	(A0)+,D1
	BNE.S	lbC1CC
	MULU	#$121,D2
	ADD.L	#DATA+$1FF,D2	
	MOVE.L	D2,POINTER
NOTJET:
lbC1E2:	MOVE.W	ZHLER5C(PC),SET
	RTS

	

ZHLER5C:	DC.W	$00ff
ZHLER5E:	DC.W	$0101
POINTER:	DC.L	data+$1ff+[$121*28]	;SPACE
TEXTPOINTER:	DC.L	TEXT
TEXT:		DC.B	"*!abcdefghijklmnopqrstuvwxyz",0
		EVEN
ABC:		DC.B	"abcdefghijklmnopqrstuvwxyz 128!/.:,*%<>",0

COP:
		DC.W	$008E,$2081,$0090,$2EC1,$0092,$0028
		DC.W	$0094,$00D0,$0096,$87F0,$0096,$0020
		DC.W	$00E0,$0006,$00E2
PLANE:		DC.W	$6000
		DC.W	$0108,$002C,$010A,$002C,$0102
SET:		DC.W	$0090
		DC.W	$0100,$1200
		DC.W	$0180,$0000,$0182,$0F00
		DC.W	$FFFF,$FFFE

