	org$15000
	load$15000
Derrel:

;	-------------------------------------------------------------------
;	-------------------------------------------------------------------
;	Versuchstext ausschalten
;	Dsk_Start, Dsk_end und Fi_laden einschalten
;	In `DELAYER` steht Verzögerungszeit für Menuscrolling
;	-------------------------------------------------------------------
;	-------------------------------------------------------------------

DMACON = $DFF096	;	DMA-CONTROLLREGISTER
DMACONR= $02		;	DMA-CONTROLLREGISTER LESEN
INTENAR = $DFF01C  	;	INTERRUPTENABLE-REGISTER LESEN
INTREQ = $DFF09C	;	INTERRUPTANFORDERUNG
INTREQR = $DFF01E	; 	INTERRUPTANFORDERUNG LESEN
;	-------------------------------------------------------------------
BLTCON0= $40	;	BLITTERCONTROLLREGISTER 0
BLTCON1= $42 	; 	BLITTERCONTROLLREGISTER 1
BLTAFWM= $44	;	MASKE ERSTES WORT
BLTALWM= $46	;	MASKE LSTZTES WORT	
BLTCPTH= $48	;	STARTADRESSE BLITVORGANG QUELLE C
BLTCPTL= $4A	
BLTBPTH= $4C	;	STARTADRESSE BLITVORGANG QUELLE B
BLTBPTL= $4E	
BLTAPTH= $50	;	STARTADRESSE BLITVORGANG QUELLE A
BLTAPTL= $52	
BLTDPTH= $54	;	STARTADRESSE BLITVORGANG ZIEL D
BLTDPTL= $56	
BLTSIZE= $58	;	BLITFENSTERGROESSE
BLTCMOD= $60	;	MODULOWERT QUELLE C
BLTBMOD= $62	;	MODULOWERT QUELLE B	
BLTAMOD= $64	;	MODULOWERT QUELLE A
BLTDMOD= $66	;	MODULOWERT ZIEL	  D	
COPLST2= $84
;	-------------------------------------------------------------------
;	-------------------------------------------------------------------
		move.w	#$4000,$dff09a
		MOVE.L	#COPPERLISTE,$dff084
		bset	#1,$bfe001

;	-------------------------------------------------------------------
;	--- Neues Interrupt -----------------
;	-------------------------------------

	move.w	$dff01c,d0
	ori	#$8000,d0
	move	d0,intena
	move	#$7fff,$dff09a
	move.l	104,Vector2
	move.l	108,Vector3
	move.l	#Inkey,104
	move.l	#Interrupt,108
	move.w	#$c028,$dff09a

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

	MOVE.W	#%1000011111010000,DMACON			
;	MOVE.W	#%0000010000100000,DMACON
;	-------------------------------------------------------------------
	move.l	#0,a0
	move.l	#0,a1
	move.l	#0,a2
	move.l	#0,a3
	move.l	#0,a4
	move.l	#0,a5
	move.l	#0,a6
	move.l	#0,d0
	move.l	#0,d1
	move.l	#0,d2
	move.l	#0,d3
	move.l	#0,d4
	move.l	#0,d5
	move.l	#0,d6
	move.l	#0,d7

;	-------------------------------------------------------------------
;	--- Sprite-Zeiger positionieren	-----
;	-------------------------------------
	move.w	#127,SpriteX
	move.w	#250,SpriteY		
	move.b	#00,Aussteigen
	move.b	#0,Nicht_gefunden
	move.l	#0,NSeite
;	-------------------------------------
;	--- Init für Artikelnummereingabe ---
;	-------------------------------------
	move.l	#0,Stelle
	move.l	#101,Waiter
	bclr	#0,Einmal
	bclr	#1,Einmal
	bclr	#2,Einmal
	lea	Hl_Name,a0
	move.b	#"0",6(a0)
	move.b	#"0",7(a0)
	move.b	#"1",8(a0)
	bsr.w	Artikel_Zahl
;	-------------------------------------


;	-------------------------------------------------------------------
;	--- Maße des Menuscreens ------------
;	-------------------------------------
Breite  = 640
Hoehe   = 67
Planes  = 4
Farben  = 16
bs = Breite/8*Hoehe
Farblaenge = Farben*2


;	-------------------------------------------------------------------
;	--- Initialisierungen ---------------
;	-------------------------------------
	move.b	#0,MGd_G
	bset	#0,Wahl
	bclr	#0,MenuUntenMaus
	move.b	#0,NichtBL

	jsr	mt_init
	move.l	#Interrupt,$6c
	move.l	#Copperliste,$dff084

		jsr	ClearScreen		; Textscreen
		move.l	#Screen,d0
		move.l	#00,AddBitPl
		move.w	#$00,$dff102
		bsr	M_init_bitplanes
	jsr	init_bitplanes			; Menuscreen
	jsr	color1
	jsr	ClearScreen
	movem.l	d0-d7/a0-a6,-(a7)
	jsr	Dsk_Start
	movem.l	(a7)+,d0-d7/a0-a6

;	-------------------------------------------------------------------
;	--- SpriteDatas in Copperliste eintragen --- 
;	--------------------------------------------
	lea	Sprites,a0		 
	move.l	#SpriteData,d0
	add.l	#6,a0
	move.w	d0,(a0)
	sub.l	#4,a0
	swap	d0
	move.w	d0,(a0)
	jsr	D_MausAbfrage	; Mauszeiger gleich richtig setzen


;	-------------------------------------------------------------------
;	--- LOOOP: Hier laufen alle Mausabfragen ohne Interrupt --- 
;	-----------------------------------------------------------
	move.l	#10,Delayer
	bset	#1,MGd_G
	bset	#0,MenuUntenMaus
	move.w	#32800,dmacon
LOOOP:	


		btst	#0,Wahl
		beq.w	M_Abfrage
	Nicht_Menu:	

		btst	#0,MenuUntenMaus
		bne.s	D_M_Nicht
		jsr	D_MausAbfrage
	D_M_Nicht:

	btst	#0,Aussteigen
	bne.s	RuptEin

	btst	#0,MGd_G
	bne.s	MG_Laden
   After_MG_L:

	btst	#1,MGd_G
	bne.s	Init_Menu
   After_I_M:	

;	btst	#10,$dff016	;	Sicherheitsausgang
	bra.s	LOOOP
;	bra.s	RuptEin
;	-----------------------------------
MG_Laden:
	bsr.w	MGd_Gewaehlt
	bra.s	After_MG_L

Init_Menu:
	jsr	Make_Menu
	bra.s	After_I_M
	
;	-------------------------------------------------------------------
;	--- Interrupts wiederherstellen ----
;	------------------------------------
RuptEin:			
	move.w	#$7fff,$dff09a
	move.l	Vector2,104
	move.l	Vector3,108
	move.w	intena,$dff09a

	bsr.w	Dsk_end
	jsr	mt_end
	move.l	#0,d0	
	move.l	#0,d1
	bclr	#1,$bfe001
	rts			

;	--------------------------------
	Intena:		dc.l 0
	Vector2:	dc.l 0
	Vector3:	dc.l 0
	KeyFl:		dc.b 0
	KeyCode:	dc.b 0
		even
	RuptReg:	dc.w 0
	Rupt6c:		dc.l 0
	NSeite:		dc.l 0
	Blaettern:	dc.b 0
			even
;	--------------------------------


;	-------------------------------------------------------------------
;	--- Neues Interrupt -----------------
;	-------------------------------------
Interrupt:
	movem.l	d0-d7/a0-a6,-(a7)	

	btst	#0,MenuUntenMaus
	bne.s	R_A_Nicht
	jsr	Restaurieren
	bsr.w	Abfrage	
	bsr.w	Tasten
	R_A_Nicht:

	btst	#0,IsMusic
	bne.w	No
		movem.l	d0-d7/a0-a6,-(a7)	
	jsr	Mt_Music
		movem.l	(a7)+,d0-d7/a0-a6
	No:

	bsr.w	Time
	bsr.w	Seite

;	bchg	#1,$bfe001

	movem.l	(a7)+,d0-d7/a0-a6
	move.w	#$0020,intreq
	bclr	#0,KeyFl
	move.b	#0,KeyCode
	rte		

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

Inkey:
	movem.l	d0-d7/a0-a6,-(a7)
	move	#8,$dff09c		; Interruptrequestbit
	btst	#3,$bfed01
	bne.s	Inkey2
	move.b	$bfec01,d0
	ror.b	#1,d0
	eori.b	#$ff,d0
	bmi.w	inkey1
	bset	#0,Keyfl
	move.b	d0,KeyCode

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

Inkey1:
	move.b	#$ff,$bfec01
	bset	#6,$bfee01
	bclr	#6,$bfee01

Inkey2:
	move.b	$bfed01,d0
	movem.l	(a7)+,d0-d7/a0-a6
	bchg	#1,$bfe001
	rte

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

;	----------------------
MGd_G:	dc.b 0
	even	
;	-----------------------------------------------
;	--- Artikelnummerneingabe über 10er Block -----
;	-----------------------------------------------

Tasten:	bsr.w	WelcheTa
	cmp.l	#1,Stelle
	beq.s	Einer		; Einerstelle beschreiben
	cmp.l	#2,Stelle
	beq.s	Zehner		; Einer nach Zehner; Einer neu beschreiben
	cmp.l	#3,Stelle
	beq.s	Hunderter	; Ein. nach Zeh.; Zeh. nach Hund.; Einer neu 
	cmp.l	#3,Stelle
	bgt.w	Enter		; Nach 3 Zahlen kann man noch mit DEL löschen, 
	rts			; 4.Taste ist autom. ENTER	

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

Einer:	
	btst	#2,Einmal
	bne.s	Nicht_Einer
	lea	Hl_Name(pc),a0
	move.l	d1,d2
	add.l	#48,d2
	move.b	d2,8(a0)
;	move.b	#48,8(a0)
	bset	#2,Einmal
	bsr.w	Artikel_Zahl
Nicht_Einer:
	rts

Zehner: 
	btst	#0,Einmal
	bne.s	Nicht_Zehner
	lea	Hl_Name(pc),a0
	move.b	8(a0),7(a0)
	move.l	d1,d2
	add.l	#48,d2
	move.b	d2,8(a0)
	bset	#0,Einmal
	bsr.w	Artikel_Zahl
Nicht_Zehner:
	rts

Hunderter:
	btst	#1,Einmal
	bne.s	Nicht_Hunderter
	lea	Hl_Name(pc),a0
	move.b	7(a0),6(a0)
	move.b	8(a0),7(a0)
	move.l	d1,d2
	add.l	#48,d2
	move.b	d2,8(a0)
	bset	#1,Einmal
	bsr.w	Artikel_Zahl
Nicht_Hunderter:
	rts

Enter:				; Angaben OK -> Artikel laden
;	move.b	#$0f0,$dff180
;	bclr	#1,$bfe001
	move.l	#0,Stelle
	bclr	#0,Einmal
	bclr	#1,Einmal
	bclr	#2,Einmal
	bset	#0,MGd_G
	bset	#0,MenuUntenMaus

	lea	Hl_Name(pc),a0
		move.l	#0,d0
		move.l	#0,d1
		move.l	#0,d2
	move.b	6(a0),d0
	move.b	7(a0),d1
	move.b	8(a0),d2
	sub.b	#$30,d0
	sub.b	#$30,d1
	sub.b	#$30,d2
	
	mulu	#100,d0
	mulu	#10,d1
	add.l	d2,d0
	add.l	d1,d0

	move.l	#2,d1
	cmp.l	d1,d0
	blt.s	Artikel000

	move.l	AnzArt,d1
	cmp.l	d1,d0
	bgt.s	COlor
	rts		

COlor:
	move.l	AnzArt,d0
	add.l	#1,d0	
	bra.w	Init_Art

Artikel000:
;	move.w	#$f0f,$dff180
	move.l	#001,d0
	bra.w	Init_Art
;-----------------------------------------------

WelcheTa:
	btst	#0,KeyFl
	beq.w	Nix_da	

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

	cmp.b	#$1d,KeyCode
	beq.w	Eins
	cmp.b	#$1e,KeyCode
	beq.w	Zwei
	cmp.b	#$1f,KeyCode
	beq.w	Drei
	cmp.b	#$2d,KeyCode
	beq.w	Vier
	cmp.b	#$2e,KeyCode
	beq.w	Fuenf
	cmp.b	#$2f,KeyCode
	beq.w	Sechs
	cmp.b	#$3d,KeyCode
	beq.w	Sieben
	cmp.b	#$3e,KeyCode
	beq.w	Acht
	cmp.b	#$3f,KeyCode
	beq.w	Neun
	cmp.b	#$0f,KeyCode
	beq.w	Null
	cmp.b	#$46,KeyCode		; löscht alles Eingegebene (Delete)
	beq.w	Neuer_Anfang
	cmp.b	#$43,KeyCode		; Eingabe abgeschlossen (Enter)
	beq.w	Enter		

	cmp.b	#$4c,KeyCode		; Softscrolling nach oben
	beq.w	PfeilOben
	cmp.b	#$4d,KeyCode		; Softscrolling nach unten
	beq.w	PfeilUnten
	cmp.b	#$4e,KeyCode		; Plus 1 Artikel
	beq.w	PfeilRechts
	cmp.b	#$4f,KeyCode		; Minus 1 Artikel
	beq.w	PfeilLinks

	cmp.b	#$5f,KeyCode		; Menu anfordern
	beq.w	Menu_Will
	cmp.b	#$45,KeyCode		; Aussteigen	!!!!!
	beq.w	Weg_da					

	bclr	#0,KeyFl
	move.b	#0,KeyCode
Nix_da:
	rts

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

Eins:	move.l	#1,d1
	bra.s	Allgemein	
Zwei:	move.l	#2,d1
	bra.s	Allgemein	
Drei:	move.l	#3,d1
	bra.s	Allgemein	
Vier:	move.l	#4,d1
	bra.s	Allgemein	
Fuenf:	move.l	#5,d1
	bra.s	Allgemein	
Sechs:	move.l	#6,d1
	bra.s	Allgemein	
Sieben:	move.l	#7,d1
	bra.s	Allgemein	
Acht:	move.l	#8,d1
	bra.s	Allgemein	
Neun:	move.l	#9,d1
	bra.w	Allgemein
Null:	move.l	#0,d1
	bra.w	Allgemein
Allgemein:
	add.l	#1,Stelle
	move.b	#0,KeyCode
	bclr	#0,KeyFl
	rts

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

PfeilOben:
	move.l	#42,BobOffset
	jsr	Put

	move.l	#72,Welche
	jsr	Copy_Message

	move.l	AddBitPl,d0
	cmp.l	#1,d0
	blt.s	PFComment4

	cmp.l	#0,AddBitPl
	blt.s	PfeilO

	sub.l	#400,AddBitPl
	move.l	#Screen,d0
	bsr	M_init_bitplanes

	PfeilO:
	rts
		
PfComment4:
	move.l	#336,Welche
	jsr	Copy_Message
	move.l	#00,AddBitPl
	move.l	#Screen,d0
	bsr	M_init_bitplanes
	bra.s	PfeilO

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

PfeilUnten:		

	move.l	#52,BobOffset
	jsr	Put

	move.l	#96,Welche
	jsr	Copy_Message

	move.l	AddBitPl,d0
	move.l	MerkEnde,d1
	sub.l	#16000,d1
	cmp.l	d1,d0
	bgt.s	PFComment5

	add.l	#400,AddBitPl
	move.l	#Screen,d0
	bsr	M_init_bitplanes
	
	PfeilU:
	rts

PFComment5:
	move.l	#360,Welche
	jsr	Copy_Message
	bra.s	PfeilU
		
;	------------------------------------


PfeilLinks:
	move.l	#12,BobOffset
	jsr	Put

	move.l	#0,Welche
	jsr	Copy_Message

	bclr	#0,SubAdd
	bset	#0,MGd_G
	bset	#0,MenuUntenMaus
	jsr	Suicid
	rts

;	------------------------------------
SubAdd:	dc.b 0
	even
;	------------------------------------

PfeilRechts:
	move.l	#22,BobOffset
	jsr	Put

	move.l	#24,Welche
	jsr	Copy_Message

	bset	#0,SubAdd
	bset	#0,MGd_G
	bset	#0,MenuUntenMaus
	jsr	Suicid
	rts

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

Menu_Will:
	bset	#1,MGd_G
	bset	#0,MenuUntenMaus
	move.l	#1,d0
	bsr.w	Init_Art
	rts

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

Weg_da:
	bset	#0,Aussteigen
	rts

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

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

Neuer_Anfang:
	move.l	#0,Stelle
	bsr.w	Artikel_Zahl
	lea	Hl_Name(pc),a0
	move.b	#"0",6(a0)
	move.b	#"0",7(a0)
	move.b	#"1",8(a0)
	bclr	#0,Einmal
	bclr	#1,Einmal
	bclr	#2,Einmal
;	bclr	#1,$bfe001
	rts
		
;----------------------------------
Stelle:		dc.l 0
Waiter:		dc.l 0
Einmal:		dc.b 0
		even
;----------------------------------



;----------------------------------------------------------------------
;--- Artikel gewählt -> ausblenden & laden & Artikelnummer kopieren ---
;----------------------------------------------------------------------
M_Gewaehlt:
	bsr.w	Ausblenden
	
	move.l	#HL_page,HL_dest	; Zieladresse in HL_dest !!!!!!
	bsr.w	Fi_Laden		;   Hl_Name
	bsr	Lade_Message

	btst	#0,Nicht_gefunden
	bne.s	Nicht_da1

	movem.l	d0-d7/a0-a6,-(a7)
	jsr	ClearScreen
	move.l	#HL_Page,Source
	move.l	#Screen,Destin
	add.l	#80,Destin
	jsr	Write
	movem.l	(a7)+,d0-d7/a0-a6
;---------------------------------------
	move.l	MerkEnde,d0
	divu	#400,d0
	and.l	#$0000ffff,d0
	addq.l	#1,d0
	mulu	#400,d0
	move.l	d0,MerkEnde
;---------------------------------------
		move.l	#Screen,d0
		move.l	#00,AddBitPl
		bsr	M_init_bitplanes

Nicht_da1:

	bsr.w	EinblendenText

	bset	#0,Wahl			; Abfrage des Bitplanescrollings
					; deaktivieren
	bclr	#0,MenuUntenMaus	; Mausabfrage unten einschalten

	bsr.w	Artikel_Zahl

	move.l	#288,Welche
	bsr.w	Copy_Message

	rts

;-----------------------
Nicht_gefunden:	dc.b 0
		even
;-----------------------

;------------------------------------------------------------------------------
;--- Artikel mit Gadget gewählt -> ausblenden & laden & Artikelnr. kopieren ---
;------------------------------------------------------------------------------
MGd_Gewaehlt:

	btst	#0,NichtBL
	bne.w	ExtremArtikel

	bsr.w	AusblendenText
	
	move.l	#HL_page,HL_dest	; Zieladresse in HL_dest !!!!!!
	bsr.w	Fi_Laden		;   Hl_Name
	bsr	Lade_Message

	btst	#0,Nicht_gefunden
	bne.s	Nicht_da2

	movem.l	d0-d7/a0-a6,-(a7)
	jsr	ClearScreen
	move.l	#HL_Page,Source
	move.l	#Screen,Destin
	add.l	#80,Destin
	jsr	Write
	movem.l	(a7)+,d0-d7/a0-a6
;---------------------------------------
	move.l	MerkEnde,d0
	divu	#400,d0
	and.l	#$0000ffff,d0
	addq.l	#1,d0
	mulu	#400,d0
	move.l	d0,MerkEnde
;---------------------------------------

		move.l	#Screen,d0
		move.l	#00,AddBitPl
		bsr	M_init_bitplanes

Nicht_da2:
	bsr.w	EinblendenText

	bset	#0,Wahl			; Abfrage des Bitplanescrollings
					; deaktivieren
	bclr	#0,MenuUntenMaus	; Mausabfrage unten einschalten

	bsr.s	Artikel_Zahl

	move.l	#288,Welche
	bsr.w	Copy_Message

	bclr	#0,MGd_G
	rts

ExtremArtikel:
	bclr	#0,NichtBL
	bset	#0,MGd_G
	bclr	#0,MGd_G
					; deaktivieren
	bclr	#0,MenuUntenMaus	; Mausabfrage unten einschalten
;	bsr.s	Artikel_Zahl

	move.l	#312,Welche
	bsr.w	Copy_Message
;	move.w	#$00f,$dff180
	rts

;------------------------------------------------------------------------------
;--- Artikelnummer in Screen kopieren -----------------------------------------
;------------------------------------------------------------------------------
Artikel_Zahl:
	lea	Hl_name(pc),a2
	move.l	#0,d0
	move.l	#0,d1
	move.l	#0,d2
	
	move.b	6(a2),d0
	move.b	7(a2),d1
	move.b	8(a2),d2

	sub.b	#33,d0
	sub.b	#33,d1
	sub.b	#33,d2

	lea	Menu,a0		; 1.Artikel Zahl (Hunderter)
	add.l	#4200,a0
	lea	Font2,a1	
	add.l	d0,a1		
	bsr.w	Copy_Zahl

	lea	Menu,a0		; 2.Artikel Zahl (Zehner)
	add.l	#4201,a0
	lea	Font2,a1	
	add.l	d1,a1		
	bsr.w	Copy_Zahl

	lea	Menu,a0		; 3.Artikel Zahl (Einer)
	add.l	#4202,a0
	lea	Font2,a1	
	add.l	d2,a1		
	bsr.w	Copy_Zahl
	rts

;------------------------------------------------------------------------------
;--- Seite ausrechnen und Zahl in Screen kopieren -----------------------------
;------------------------------------------------------------------------------
S_Zahl:	dc.l 0	
;----------------------------------
Seite:
	move.l	#16000,S_Zahl
	move.l	AddBitPl,d1
	add.l	d1,S_Zahl
	move.l	S_Zahl,d0
	divu	#16000,d0
	move.l	#0,d4
	move.b	d0,d4
;	move.b	#136,d4

	move.l	#0,d0
	move.l	#0,d1
	move.l	#0,d2

	divu	#10,d4
	swap	d4
	move.b	d4,d2		; Einer
	swap	d4
	and.l	#$0000ffff,d4
	divu	#10,d4
	move.b	d4,d0		; Hunderter
	swap	d4
	move.b	d4,d1		; Zehner


	add.b	#15,d0
	add.b	#15,d1
	add.b	#15,d2

	lea	Menu,a0		; 1.Artikel Zahl (Hunderter)
	add.l	#4209,a0
	lea	Font2,a1	
	add.l	d0,a1		
	bsr.w	Copy_Zahl

	lea	Menu,a0		; 2.Artikel Zahl (Zehner)
	add.l	#4210,a0
	lea	Font2,a1	
	add.l	d1,a1		
	bsr.w	Copy_Zahl

	lea	Menu,a0		; 3.Artikel Zahl (Einer)
	add.l	#4211,a0
	lea	Font2,a1	
	add.l	d2,a1		
	bsr.w	Copy_Zahl

	rts

;--------------------------------------------------------
;--- Hardware File Loader -------------------------------
;--------------------------------------------------------


HL_namelength=9


Lade_Message:
	btst	#0,Nicht_gefunden
	beq.s	NeinS
	bra.s	Ja

NeinS:
	move.l	#240,Welche
	bsr.w	Copy_Message
	rts

Ja:
	move.l	#264,Welche
	bsr.w	Copy_Message
	rts


;	----------------------------------------------------------------
;	----------------------------------------------------------------
;		bsr.s	Write
;	----------------------------------------------------------------
Source:	dc.l 0
Destin:	dc.l 0
;	----------------------------------------------------------------

Write:
	move.l	#-2,Wort
	move.l	#0,ZeichenCounter
	move.l	#0,WeiterText
	move.b	#0,SpaceTwo

Naechster:
	btst	#0,SpaceTwo
	beq.w	AddWort2
	move.l	Source,a3
	move.l	#0,d0
	move.l	#0,d1
	add.l	WeiterText,a3
	move.b	(a3)+,d0
	move.b	(a3)+,d1
	add.l	#2,WeiterText
	addq.l	#1,ZeichenCounter
	cmp.l	#42,ZeichenCounter
	bgt.s	AddWort
	AfterWort:

	cmp.b	#-1,d0
	beq.w	Fertig
	cmp.b	#-1,d1
	beq.w	Fertig

	cmp.b	#10,d0		; Return
	beq.w	AddWort2.1
	cmp.b	#10,d1
	beq.w	TwoSpace2

	cmp.b	#9,d0		; Tabulator
	beq.w	Tab1
	cmp.b	#9,d1
	beq.w	Tab

	cmp.b	#32,d0
	beq.w	Space1
	AfterSpace1:
	cmp.b	#32,d1
	beq.w	TwoSpace
	AfterSpace2:

	sub.l	#33,d0
	sub.l	#33,d1

	add.l	#2,Wort		; Mit Blitter 1 Wort weiter
 Los:
	move.l	d0,d2
	divu	#2,d2
	swap	d2		
	and.l	#$0000ffff,d2
	tst.w	d2
	bne.w	Zahl1Gerade
	beq.w	Zahl1Ungerade
;	----------------------------------------------------------------
;	----- Zweite Byte ist ein Space -----
TwoSpace2:
	bchg	#0,SpaceTwo
TwoSpace:
	bsr.w	Space2
	bra.s	Los
;	----------------------------------------------------------------
AddWort:
	add.l	#720,Wort
	move.l	#1,ZeichenCounter
	add.l	#0,WeiterText
	bra.w	Naechster

AddWort2.1:
	sub.l	#1,WeiterText
	bra.s	AddW
AddWort2:
	bset	#0,SpaceTwo
AddW:	add.l	#720,Wort
	move.l	#1,ZeichenCounter
	move.l	Wort,d0
	move.l	d0,d1
	divu	#80,d0
	and.l	#$0000ffff,d0
	add.l	#1,d0
	mulu	#80,d0
	sub.l	d1,d0
	add.l	d0,Wort	
	sub.l	#2,Wort
	bra.w	Naechster


Tab1:
	sub.l	#1,WeiterText
Tab:
	add.l	#8,Wort
	bra.w	Naechster
;	----------------------------------------------------------------
ZeichenCounter:	dc.l 0
WeiterText:	dc.l 0
SpaceTwo:	dc.b 0
		even
;	----------------------------------------------------------------
Space1:
	move.l	#61,d0
	add.l	#2,Wort
	cmp.b	#32,d1
	beq.w	Space3
	sub.l	#33,d1
	bra.w	Los
Space3:
	move.l	#61,d1
	bra.w	Los


Space2:
	sub.l	#33,d0
	move.l	#61,d1
	add.l	#2,Wort
	rts
;	----------------------------------------------------------------


;	----------------------------------------------------------------
;	----------------------------------------------------------------
;	--- Zahl 1 ist ungerade ----------------------------------------
;	----------------------------------------------------------------
;	----------------------------------------------------------------
Zahl1Ungerade:
	move.l	d1,d2
	divu	#2,d2
	swap	d2		
	and.l	#$0000ffff,d2
	tst.w	d2
	bne.w	Zahl2Gerade1
	beq.w	Zahl2Ungerade1
;	--------------------------------------------
;	--- Zahl 1 ungerade; Zahl 2 ist gerade -----
;	--------------------------------------------
Zahl2Gerade1:
	move.l	d0,FontOffset2
	lea	$dff000,a6
	move.w	#1,d7
	lea	Font,a0
	move.l	Destin,a1
	add.l	FontOffset2,a0
	add.l	Wort,a1

CopyZG1:
	move.l	a0,bltapth(a6)
	move.l	a1,bltdpth(a6)
	move.l	#$ffffff00,bltafwm(a6)
	move.w	#92,bltamod(a6)
	move.w	#78,bltdmod(a6)
	clr.w	bltcon1(a6)
	move.w	#$09f0,bltcon0(a6)
	move.w	#9*64+1,bltsize(a6)
BltZG1:
	btst	#14,dmaconr(a6)
	bne.s	BltZG1
	add.l	#846,a0
	add.l	#M_bs,a1
	dbra	d7,CopyZG1

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

	move.l	d1,FontOffset2
	lea	$dff000,a6
	move.w	#1,d7
	lea	Font2,a0
	lea	Font,a1
	move.l	Destin,a2
	add.l	FontOffset2,a0
	add.l	FontOffset2,a1
	add.l	Wort,a2

CopyZG2:
	move.l	a0,bltapth(a6)
	move.l	a1,bltbpth(a6)
	move.l	a2,bltcpth(a6)
	move.l	a2,bltdpth(a6)
	move.l	#$ffff00ff,bltafwm(a6)
	move.w	#92,bltamod(a6)
	move.w	#92,bltbmod(a6)
	move.w	#78,bltcmod(a6)
	move.w	#78,bltdmod(a6)
	clr.w	bltcon1(a6)
	move.w	#$0fca,bltcon0(a6)
	move.w	#9*64+1,bltsize(a6)

BltZG2:

	btst	#14,dmaconr(a6)
	bne.s	BltZG2
	add.l	#846,a1
	add.l	#M_bs,a2
	dbra	d7,CopyZG2	
	bra.w	Naechster
	
;	--------------------------------------------
;	--- Zahl 1 ungerade; Zahl 2 ist ungerade ---
;	--------------------------------------------
Zahl2Ungerade1:

	move.l	d0,FontOffset2
	lea	$dff000,a6
	move.w	#1,d7
	lea	Font,a0
	move.l	Destin,a1
	add.l	FontOffset2,a0
	add.l	Wort,a1

CopyZG3:
	move.l	a0,bltapth(a6)
	move.l	a1,bltdpth(a6)
	move.l	#$ffffff00,bltafwm(a6)
	move.w	#92,bltamod(a6)
	move.w	#78,bltdmod(a6)
	clr.w	bltcon1(a6)
	move.w	#$09f0,bltcon0(a6)
	move.w	#9*64+1,bltsize(a6)
BltZG3:
	btst	#14,dmaconr(a6)
	bne.s	BltZG3
	add.l	#846,a0
	add.l	#M_bs,a1
	dbra	d7,CopyZG3

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

	move.l	d1,FontOffset2
	lea	$dff000,a6
	move.w	#1,d7
	lea	Font2,a0
	lea	Font,a1
	move.l	Destin,a2
	add.l	FontOffset2,a0
	add.l	FontOffset2,a1
	add.l	Wort,a2

CopyZG4:
	move.l	a0,bltapth(a6)
	move.l	a1,bltbpth(a6)
	move.l	a2,bltcpth(a6)
	move.l	a2,bltdpth(a6)
	move.l	#$ffffff00,bltafwm(a6)
	move.w	#92,bltamod(a6)
	move.w	#92,bltbmod(a6)
	move.w	#78,bltcmod(a6)
	move.w	#78,bltdmod(a6)
	move.w	#$8000,bltcon1(a6)
	move.w	#$8fca,bltcon0(a6)
	move.w	#9*64+1,bltsize(a6)
BltZG4:
	btst	#14,dmaconr(a6)
	bne.s	BltZG4
	add.l	#846,a1
	add.l	#M_bs,a2
	dbra	d7,CopyZG4

	bra.w	Naechster



;	----------------------------------------------------------------
;	----------------------------------------------------------------
;	--- Zahl 1 ist gerade ------------------------------------------
;	----------------------------------------------------------------
;	----------------------------------------------------------------
Zahl1Gerade:
	move.l	d1,d2
	divu	#2,d2
	swap	d2		
	and.l	#$0000ffff,d2
	tst.w	d2
	bne.w	Zahl2Gerade2
	beq.w	Zahl2Ungerade2
;	--------------------------------------------
;	--- Zahl 2 gerade; Zahl 2 ist ungerade -----
;	--------------------------------------------
Zahl2Ungerade2:
	move.l	d0,FontOffset2
	lea	$dff000,a6
	move.w	#1,d7
	lea	Font2,a0
	lea	Font,a1
	move.l	Destin,a2
	add.l	FontOffset2,a0
	add.l	FontOffset2,a1
	add.l	Wort,a2
	sub.l	#80,a2

CopyZG7:
	move.l	a0,bltapth(a6)
	move.l	a1,bltbpth(a6)
	move.l	a2,bltcpth(a6)
	move.l	a2,bltdpth(a6)
	move.l	#$ffff00ff,bltafwm(a6)
	move.w	#92,bltamod(a6)
	move.w	#92,bltbmod(a6)
	move.w	#78,bltcmod(a6)
	move.w	#78,bltdmod(a6)
	move.w	#$8000,bltcon1(a6)
	move.w	#$8fca,bltcon0(a6)
	move.w	#9*64+1,bltsize(a6)
BltZG7:
	btst	#14,dmaconr(a6)
	bne.s	BltZG7
	add.l	#846,a1
	add.l	#M_bs,a2
	dbra	d7,CopyZG7

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

	move.l	d1,FontOffset2
	lea	$dff000,a6
	move.w	#1,d7
	lea	Font2,a0
	lea	Font,a1
	move.l	Destin,a2
	add.l	FontOffset2,a0
	add.l	FontOffset2,a1
	add.l	Wort,a2
;	sub.l	#80,a2
;	add.l	#640,a2

CopyZG8:
	move.l	a0,bltapth(a6)
	move.l	a1,bltbpth(a6)
	move.l	a2,bltcpth(a6)
	move.l	a2,bltdpth(a6)
	move.l	#$ffffff00,bltafwm(a6)
	move.w	#92,bltamod(a6)
	move.w	#92,bltbmod(a6)
	move.w	#78,bltcmod(a6)
	move.w	#78,bltdmod(a6)
	move.w	#$8000,bltcon1(a6)
	move.w	#$8fca,bltcon0(a6)
	move.w	#9*64+1,bltsize(a6)
BltZG8:
	btst	#14,dmaconr(a6)
	bne.s	BltZG8
	add.l	#846,a1
	add.l	#M_bs,a2
	dbra	d7,CopyZG8

	bra.w	Naechster

;	--------------------------------------------
;	--- Zahl 1 gerade; Zahl 2 ist gerade -------
;	--------------------------------------------
Zahl2Gerade2:

	move.l	d1,FontOffset2
	lea	$dff000,a6
	move.w	#1,d7
	lea	Font,a0
	move.l	Destin,a1
	add.l	FontOffset2,a0
	add.l	Wort,a1

CopyZG5:
	move.l	a0,bltapth(a6)
	move.l	a1,bltdpth(a6)
	move.l	#$ffff00ff,bltafwm(a6)
	move.w	#92,bltamod(a6)
	move.w	#78,bltdmod(a6)
	clr.w	bltcon1(a6)
	move.w	#$09f0,bltcon0(a6)
	move.w	#9*64+1,bltsize(a6)
BltZG5:
	btst	#14,dmaconr(a6)
	bne.s	BltZG5
	add.l	#846,a0
	add.l	#M_bs,a1
	dbra	d7,CopyZG5

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

	move.l	d0,FontOffset2
	lea	$dff000,a6
	move.w	#1,d7
	lea	Font2,a0
	lea	Font,a1
	move.l	Destin,a2
	add.l	FontOffset2,a0
	add.l	FontOffset2,a1
	add.l	Wort,a2
	sub.l	#80,a2

CopyZG6:
	move.l	a0,bltapth(a6)
	move.l	a1,bltbpth(a6)
	move.l	a2,bltcpth(a6)
	move.l	a2,bltdpth(a6)
	move.l	#$ffff00ff,bltafwm(a6)
	move.w	#92,bltamod(a6)
	move.w	#92,bltbmod(a6)
	move.w	#78,bltcmod(a6)
	move.w	#78,bltdmod(a6)
	move.w	#$8000,bltcon1(a6)
	move.w	#$8fca,bltcon0(a6)
	move.w	#9*64+1,bltsize(a6)
BltZG6:
	btst	#14,dmaconr(a6)
	bne.s	BltZG6
	add.l	#846,a1
	add.l	#M_bs,a2
	dbra	d7,CopyZG6


	bra.w	Naechster


Fertig:
	move.l	Wort,MerkEnde
	move.l	#00,AddBitPl
	rts
;	----------------------------------------------------------------
FontOffset:	dc.l 0
;	----------------------------------------------------------------
Wort:	dc.l 0
Double:	dc.b 0
	even	
;	----------------------------------------------------------------

;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
;	--------------------------
Time_Count:	dc.l 0
Sek:		dc.l 0
Min:		dc.l 0
EZ:		dc.l 0
ZZ:		dc.l 0
;	--------------------------
;--------------------------------------------------------
;--- Zeit ausrechnen und ins Menu kopieren --------------
;--------------------------------------------------------
Time:	
	addq.l	#1,Time_Count
	cmp.l	#50,Time_Count
	beq.s	Sekunde
	rts

Sekunde:

	move.l	#0,Time_Count
	add.l	#1,Sek
	cmp.l	#60,Sek
	beq.s	Minute
	bra.s	Copy_Zeit

Minute:
	sub.l	#60,Sek
	add.l	#1,Min	
	cmp.l	#60,Min
	beq.s	Stunde	
	bra.s	Copy_Zeit
	
Stunde:
	move.l	#0,Min
	bra.w	Copy_Zeit
	



;---------------------------------------
;--- Sekunden umrechnen & kopieren -----
;---------------------------------------
Copy_Zeit:
	move.l	Sek,d0
	divu	#10,d0
	move.w	d0,d2
	and.l	#$0000ffff,d2
	move.l	d2,ZZ
	swap	d0
	and.l	#$0000ffff,d0
	move.l	d0,EZ	

	move.l	#0,d1			; EZ Sekunde
	lea	Menu,a0
	add.l	#4222,a0
	lea	Font2,a1
	move.l	#48,d1
	add.l	EZ,d1
	sub.l	#33,d1
	add.l	d1,a1
	bsr.w	Copy_Zahl

	move.l	#0,d1			; ZZ Sekunde
	lea	Menu,a0
	add.l	#4221,a0
	lea	Font2,a1
	move.l	#48,d1
	add.l	ZZ,d1
	sub.l	#33,d1
	add.l	d1,a1
	bsr.w	Copy_Zahl

;---------------------------------------
;--- Doppelpunkt -----------------------
;---------------------------------------
	move.l	#0,d1			; :
	lea	Menu,a0
	add.l	#4220,a0
	lea	Font2,a1
	add.l	#25,a1
	bsr.w	Copy_Zahl


;---------------------------------------
;--- Minuten umrechnen & kopieren ------
;---------------------------------------

	move.l	Min,d0
	divu	#10,d0
	move.w	d0,d2
	and.l	#$0000ffff,d2
	move.l	d2,ZZ
	swap	d0
	and.l	#$0000ffff,d0
	move.l	d0,EZ


	move.l	#0,d1			; EZ Minute
	lea	Menu,a0
	add.l	#4219,a0
	lea	Font2,a1
	move.l	#48,d1
	add.l	EZ,d1
	sub.l	#33,d1
	add.l	d1,a1
	bsr.s	Copy_Zahl

	move.l	#0,d1			; ZZ Minute
	lea	Menu,a0
	add.l	#4218,a0
	lea	Font2,a1
	move.l	#48,d1
	add.l	ZZ,d1
	sub.l	#33,d1
	add.l	d1,a1
	bsr.s	Copy_Zahl

	rts



Copy_Zahl:
	move.l	#7,d6	
Gush:
	move.b	(a1),(a0)
	add.l	#94,a1			; Font Offset
	add.l	#80,a0			; Screen Offset
	dbra	d6,Gush		
	rts

;	-------------------------------------------------------------------
;	--- MENU - Routine ------------------------------------------------
;	-------------------------------------------------------------------
M_Breite  = 640
M_Hoehe   = 1200
M_Planes  = 2
M_Farben  = 4
M_bs = M_Breite/8*M_Hoehe
M_Farblaenge = M_Farben*2
;	-------------------------------------------------------------------
;	--- Initialisieren und Text in Bitplane schreiben -----------------
;	-------------------------------------------------------------------

	
;	-------------------------------------------------------------------
;	--- Lesetext einblenden --------------------------------------------
;	-------------------------------------------------------------------
 EinBlenden:
	lea	M_ColorsX(pc),a0
	lea	M_ColorsY(pc),a2
	
    Ein:
	cmp.b	#$a0,$dff006
	bne.s	Ein
	addq.l	#1,Blenden
	cmp.l	#8,Blenden
	blt.s	Ein
	lea	M_Colors(pc),a1		; in Copperliste
	add.l	#2,a1			
	lea	M_Balken(pc),a3
	add.l	#2,a3
	move.l	#0,Blenden	
	move.w	#3,d7
    Aendern:
	move.w	(a0)+,d0
	cmp.w	#-1,d0
	beq.w	Fertig1
	move.w	d0,(a1)
	add.l	#4,a1

	move.w	(a2)+,(a3)
	add.l	#8,a3	

	dbra	d7,Aendern
	bra.s	Ein
  Fertig1:
	move.l	#0,Blenden
	rts

;øøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøø
M_ColorsX:	dc.w	$000,$210,$100,$000 ;Hintergrund:
		dc.w	$000,$420,$300,$100	1.Spalte und 2.Block
		dc.w	$000,$640,$500,$300
		dc.w	$000,$860,$720,$510
		dc.w	$000,$a80,$940,$720
		dc.w	$000,$b90,$a50,$820
		dc.w	$000,$ca0,$b60,$930
		dc.w	$000,$ec0,$d80,$b40
		dc.w	-1,-1,-1
;øøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøø
M_ColorsY:	dc.w	$001,$001,$000,$000
		dc.w	$003,$003,$001,$000
		dc.w	$005,$005,$002,$000
		dc.w	$007,$006,$003,$000
		dc.w	$019,$007,$003,$000
		dc.w	$02b,$008,$004,$000
		dc.w	$03d,$009,$004,$000
		dc.w	$04f,$00a,$005,$000
;øøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøø

;	-------------------------------------------------------------------
;	--- Ausblenden ----------------------------------------------------
;	-------------------------------------------------------------------
 AusBlenden:
	lea	M_ColorsX2(pc),a0
	lea	M_ColorsY2(pc),a2
	
    Aus:
	cmp.b	#$a0,$dff006
	bne.s	Aus
	addq.l	#1,Blenden
	cmp.l	#8,Blenden
	blt.w	Aus
	lea	M_Colors(pc),a1		; in Copperliste
	add.l	#2,a1			
	lea	M_Balken(pc),a3
	add.l	#2,a3
	move.l	#0,Blenden	
	move.w	#3,d7
    AendernA:
	move.w	(a0)+,d0
	cmp.w	#-1,d0
	beq.s	FertigA
	move.w	d0,(a1)
	add.l	#4,a1

	move.w	(a2)+,(a3)
	add.l	#8,a3	

	dbra	d7,AendernA
	bra.s	Aus
  FertigA:
	move.l	#0,Blenden
	rts

;øøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøø
M_ColorsX2:
		dc.w	$000,$ec0,$d80,$b40
		dc.w	$000,$ca0,$b60,$930
		dc.w	$000,$b90,$a50,$820
		dc.w	$000,$a80,$940,$720
		dc.w	$000,$860,$720,$510
		dc.w	$000,$640,$500,$300
		dc.w	$000,$420,$300,$100
		dc.w	$000,$000,$000,$000
		dc.w	-1,-1,-1
;øøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøø
M_ColorsY2:	
		dc.w	$04f,$00a,$005,$000
		dc.w	$03d,$009,$004,$000
		dc.w	$02b,$008,$004,$000
		dc.w	$019,$007,$003,$000
		dc.w	$007,$006,$003,$000
		dc.w	$005,$005,$002,$000
		dc.w	$003,$003,$001,$000
		dc.w	$000,$000,$000,$000
;øøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøø
Blenden:	dc.l 0
		even
;øøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøø


;	-------------------------------------------------------------------
;	--- Einblenden ----------------------------------------------------
;	-------------------------------------------------------------------
 EinBlendenText:
	lea	M_ColorsText(pc),a0
	lea	M_ColorsTextB(pc),a2
	
    EinT:
	cmp.b	#$a0,$dff006
	bne.s	EinT
	addq.l	#1,Blenden
	cmp.l	#8,Blenden
	blt.s	EinT
	lea	M_Colors(pc),a1		; in Copperliste
	add.l	#2,a1			
	lea	M_Balken(pc),a3
	add.l	#2,a3
	move.l	#0,Blenden	
	move.w	#3,d7
    AendernT:
	move.w	(a0)+,d0
	cmp.w	#-1,d0
	beq.w	Fertig1T
	move.w	d0,(a1)
	add.l	#4,a1

	move.w	(a2)+,(a3)
	add.l	#8,a3	

	dbra	d7,AendernT
	bra.s	EinT
  Fertig1T:
	move.l	#0,Blenden
	rts

;øøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøø	; Lesetext
M_ColorsText:
		dc.w	$000,$000,$000,$000
		dc.w	$000,$222,$222,$111
		dc.w	$001,$444,$333,$222
		dc.w	$111,$666,$444,$222
		dc.w	$112,$888,$555,$333
		dc.w	$112,$aaa,$666,$444
		dc.w	$223,$ccc,$888,$555
		dc.w	$223,$eee,$aaa,$666	;0ec 0d8 0b4
		dc.w	-1,-1,-1
;øøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøø
M_ColorsTextB:	
		dc.w	$000,$000,$000,$000
		dc.w	$000,$000,$000,$000
		dc.w	$001,$001,$001,$001
		dc.w	$111,$111,$111,$111
		dc.w	$112,$112,$112,$112
		dc.w	$112,$112,$112,$112
		dc.w	$223,$223,$223,$223
		dc.w	$223,$223,$223,$223
;øøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøø

;	-------------------------------------------------------------------
;	--- Lesetext ausblenden ------------------------------------------
;	-------------------------------------------------------------------
 AusBlendenText:
	lea	M_ColorsTextaus(pc),a0
	lea	M_ColorsTextausB(pc),a2
	
    AusA:
	cmp.b	#$a0,$dff006
	bne.s	AusA
	addq.l	#1,Blenden
	cmp.l	#8,Blenden
	blt.w	AusA
	lea	M_Colors(pc),a1		; in Copperliste
	add.l	#2,a1			
	lea	M_Balken(pc),a3
	add.l	#2,a3
	move.l	#0,Blenden	
	move.w	#3,d7
    AendernAA:
	move.w	(a0)+,d0
	cmp.w	#-1,d0
	beq.s	FertigAA
	move.w	d0,(a1)
	add.l	#4,a1

	move.w	(a2)+,(a3)
	add.l	#8,a3	

	dbra	d7,AendernAA
	bra.s	AusA
  FertigAA:
	move.l	#0,Blenden
	rts

;øøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøø
M_ColorsTextaus:			
		dc.w	$223,$eee,$aaa,$666	;0ec 0d8 0b4
		dc.w	$223,$ccc,$888,$555
		dc.w	$112,$aaa,$666,$444
		dc.w	$112,$888,$555,$333
		dc.w	$111,$666,$444,$222
		dc.w	$001,$444,$333,$222
		dc.w	$000,$222,$222,$111
		dc.w	$000,$000,$000,$000
		dc.w	-1,-1,-1

;øøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøø
M_ColorsTextausB:			
		dc.w	$223,$223,$223,$223
		dc.w	$223,$223,$223,$223
		dc.w	$112,$112,$112,$112
		dc.w	$112,$112,$112,$112
		dc.w	$111,$111,$111,$111
		dc.w	$001,$001,$001,$001
		dc.w	$000,$000,$000,$000
		dc.w	$000,$000,$000,$000


M_Abfrage:	

	move.b	$dff00a,d0
	cmp.b	#$4c,KeyCode		
	beq.w	M_Up
	cmp.b	#$4d,KeyCode		
	beq.w	M_Down
	move.b	Merky1,d1
	move.b	d0,MerkY1
	cmp.b	d0,d1
	beq.s	M_Rauf
	blt.s	M_Down
	bgt.w	M_Up
	M_Rauf:
	cmp.b	#$5f,KeyCode		
	beq.w	Waehlen
	move.b	#0,KeyCode
	btst	#6,$bfe001
	beq.w	Waehlen
	bra.w	Nicht_Menu
;øøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøø
Waehlen:
	jsr	M_Gewaehlt
	bra.w	Nicht_Menu
M_Down:
	subq.l	#1,Delayer
	cmp.l	#1,Delayer
	bgt.s	M_Danach

	move.l	MerkEnde,d0
	add.l	#8800,d0
	sub.l	#13840,d0
	move.l	AddBitPl,d1
	cmp.l	d0,d1
	bgt.w	M_Danach
	add.l	#800,AddBitPl		;
	move.l	#Screen,d0
	bsr	M_init_bitplanes
	
	bset	#0,SubAdd
	bsr.s	Suicid
	move.l	#15,Delayer
   M_Danach:
	bclr	#0,KeyFl
	move.b	#0,KeyCode
	bra.w	M_Rauf
;øøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøø
Delayer:	dc.l	0
;-------

M_Up:
	subq.l	#1,Delayer
	cmp.l	#1,Delayer
	bgt.s	M_DanachO

	cmp.l	#80,AddBitPl
	blt.w	M_DanachO
	sub.l	#800,AddBitPl		;
	move.l	#Screen,d0
	bsr	M_init_bitplanes
	Nein:

	bclr	#0,SubAdd
	bsr.s	Suicid
	move.l	#15,Delayer
   M_DanachO:
	bclr	#0,KeyFl
	move.b	#0,KeyCode
	bra.w	M_Rauf

;øøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøø
Suicid:
	lea	Hl_Name(pc),a0
		move.l	#0,d0
		move.l	#0,d1
		move.l	#0,d2
	move.b	6(a0),d0
	move.b	7(a0),d1
	move.b	8(a0),d2
	sub.b	#$30,d0
	sub.b	#$30,d1
	sub.b	#$30,d2
	
	mulu	#100,d0
	mulu	#10,d1
	add.l	d2,d0
	add.l	d1,d0


	btst	#0,SubAdd
	beq.s	S_Runter
	bne.w	S_Rauf
	rts



S_Runter:

	cmp.l	#1,d0
	beq.s	MessyUnten
	sub.l	#1,d0

	move.l	d0,d4
	divu	#10,d4
	swap	d4
	move.b	d4,8(a0)
	add.b	#$30,8(a0)
	swap	d4
	and.l	#$0000ffff,d4
	divu	#10,d4
	move.b	d4,6(a0)
	add.b	#$30,6(a0)
	swap	d4
	move.b	d4,7(a0)
	add.b	#$30,7(a0)
  Go_On2:	
	bsr.w	Artikel_Zahl
	rts

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

MessyUnten:
	move.l	#312,Welche
	jsr	Copy_Message
;	move.w	#$0f0,$dff180
	bset	#0,NichtBL
	bra.s	Go_On2

;===================================

S_Rauf:
	cmp.l	AnzArt,d0
	bgt.s	MessyOben
	add.l	#1,d0
   Init_Art:
	lea	Hl_Name(pc),a0
	move.l	d0,d4
	divu	#10,d4
	swap	d4
	move.b	d4,8(a0)
	add.b	#$30,8(a0)
	swap	d4
	and.l	#$0000ffff,d4
	divu	#10,d4
	move.b	d4,6(a0)
	add.b	#$30,6(a0)
	swap	d4
	move.b	d4,7(a0)
	add.b	#$30,7(a0)
  Go_On1:
	bsr.w	Artikel_Zahl
	rts

;-----------------------------------
	
MessyOben:
	move.l	#312,Welche
	jsr	Copy_Message
;	move.w	#$f00,$dff180
	bset	#0,NichtBL
	bra.s	Go_On1


;øøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøø
Hl_Name:	dc.b	"Suicid000",0
		even
NichtBL:	dc.b 0
		even
;øøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøø
TextCount:	dc.l 0
Position:	dc.l 0
ScreenOffset:	dc.l 0
AddBitPl:	dc.l 0
FontOffset2:	dc.l 0
MerkEnde:	dc.l 0
NameCounter:	dc.l 0
Schonfertig:	dc.b 0
Wahl:		dc.b 0
MenuUntenMaus:	dc.b 0
		even
;øøøøøøøøøøøøøøøøøøøøøøøøøø

M_Init_Bitplanes:
	move.l	#M_BitPlanes,a0
	add.l	AddBitPl,d0
	move.w	#M_Planes-1,d7
M_GFX_Loop:
	add.l	#6,a0		; $E2 zuerst
	move.w	d0,(a0)		; Lo Wert
	sub.l	#4,a0		; $e0 danach
	swap 	d0		; Swap
	move.w	d0,(a0)		; High Wert
	add.l	#6,a0		; In Copperliste weiter
	swap	d0		; Swap
	add.l	#M_bs,d0		; Eine Bitplanes dazu
	dbra	d7,M_GFX_Loop	; Jump zurück
	rts			; RTS

M_color1:
	move.w	#$180,d0			; Wert der 1. Farbe
	move.l	#Fontend-M_farblaenge,a0	; Adresse in Bilddaten
	move.l  #M_farbe,a1			; Adresse in Copperliste
M_init:	move.w	(a0)+,d1			; Farbcode 
	move.w	d0,(a1)+
	move.w	d1,(a1)+
	addq.w	#2,d0
	cmp.w	#$188,d0  ; $1a0 = 16F. || $190 = 8F.
	bne.s	M_init
	rts



;	----------------------------------------------------------------
;	--- Abfrage der MausKoordinaten --------------------------------
;	----------------------------------------------------------------
Abfrage:
	cmp.w	#$8021,$dff00e
	beq.w	Keine_Kolli

	addq.l	#1,NSeite

	cmp.w	#241,SpriteY
	blt.w	AfterGd1
	cmp.w	#177,SpriteX		; Runter		| 1
	blt.w	AfterGd1
	cmp.w	#206,SpriteX
	bgt.w	AfterGd1
	cmp.w	#271,SpriteY
	blt.w	Gedrueckt1
	AfterGd1:	

	cmp.w	#241,SpriteY
	blt.w	AfterGd2
	cmp.w	#217,SpriteX		; Rauf			| 2
	blt.w	AfterGd2
	cmp.w	#246,SpriteX
	bgt.w	AfterGd2
	cmp.w	#271,SpriteY
	blt.w	Gedrueckt2
	AfterGd2:	
	
	cmp.w	#241,SpriteY
	blt.w	AfterGd3
	cmp.w	#257,SpriteX		; 3 links		| 3
	blt.w	AfterGd3
	cmp.w	#286,SpriteX
	bgt.w	AfterGd3
	cmp.w	#271,SpriteY
	blt.w	Gedrueckt3
	AfterGd3:	

	cmp.w	#241,SpriteY
	blt.w	AfterGd4
	cmp.w	#297,SpriteX		; 1links		| 4
	blt.w	AfterGd4
	cmp.w	#326,SpriteX
	bgt.w	AfterGd4
	cmp.w	#271,SpriteY
	blt.w	Gedrueckt4
	AfterGd4:	

	cmp.w	#241,SpriteY
	blt.w	AfterGd5
	cmp.w	#337,SpriteX		; 1 rechts		| 5
	blt.s	AfterGd5
	cmp.w	#366,SpriteX
	bgt.w	AfterGd5
	cmp.w	#271,SpriteY
	blt.w	Gedrueckt5
	AfterGd5:	

	cmp.w	#241,SpriteY
	blt.w	AfterGd6
	cmp.w	#377,SpriteX		; 3 rechts		| 6
	blt.s	AfterGd6
	cmp.w	#406,SpriteX
	bgt.w	AfterGd6

	cmp.w	#271,SpriteY
	blt.w	Gedrueckt6
	AfterGd6:	

	cmp.w	#241,SpriteY
	blt.w	AfterGd7
	cmp.w	#417,SpriteX		; Menu 			| 7
	blt.s	AfterGd7
	cmp.w	#447,SpriteX
	bgt.w	AfterGd7
	cmp.w	#271,SpriteY
	blt.w	Gedrueckt7
	AfterGd7:	

	cmp.w	#286,SpriteY		; Exit
	blt.w	AfterGd8		
	cmp.w	#299,SpriteY		; Exit
	bgt.w	AfterGd8		
	cmp.w	#150,SpriteX		
	blt.w	Gedrueckt8
	AfterGd8:

	cmp.w	#286,SpriteY		; Music On 
	blt.w	AfterGd9		
	cmp.w	#299,SpriteY		
	bgt.w	AfterGd9		
	cmp.w	#397,SpriteX		
	blt.w	AfterGd9
	cmp.w	#419,SpriteX		
	blt.w	Gedrueckt9
	AfterGd9:

	cmp.w	#286,SpriteY		; Music Off 
	blt.w	AfterGd10		
	cmp.w	#299,SpriteY		
	bgt.w	AfterGd10		
	cmp.w	#425,SpriteX		
	blt.w	AfterGd10
	cmp.w	#447,SpriteX		
	blt.w	Gedrueckt10
	AfterGd10:
	After:

	Keine_Kolli:
			rts


;	----------------------------------------------------------------
;	--- Was passiert wenn MT auf Grafik gedrückt ? -----------------
;	----------------------------------------------------------------
Gedrueckt1:
	btst	#6,$bfe001
	bne.s	Back1

	move.l	#12,BobOffset
	bsr.w	Put

	move.l	#0,Welche
	bsr.w	Copy_Message


	bclr	#0,SubAdd
	bset	#0,MGd_G
	bset	#0,MenuUntenMaus
	jsr	Suicid
   Back1:
	bra.w	Keine_Kolli

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

Gedrueckt2:
	btst	#6,$bfe001
	bne.w	Back2

	move.l	#22,BobOffset
	bsr.w	Put

	move.l	#24,Welche
	bsr.w	Copy_Message

	bset	#0,SubAdd
	bset	#0,MGd_G
	bset	#0,MenuUntenMaus
	jsr	Suicid
   Back2:
	bra.w	Keine_Kolli

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

Gedrueckt3:
	btst	#6,$bfe001
	bne.s	Back3

	cmp.l	#10,NSeite
	blt.s	Back3

	move.l	#32,BobOffset
	bsr.w	Put

	move.l	#48,Welche
	bsr.w	Copy_Message

	move.l	AddBitPl,d0
	cmp.l	#16000,d0
	blt.s	GanzO

	sub.l	#16000,AddBitPl
	move.l	#Screen,d0
	bsr	M_init_bitplanes

	move.l	#0,NSeite		; Wait

	Back3:
	bra.w	AfterGd3

	GanzO:
		move.l	#0,AddBitPl
		move.l	#Screen,d0
		bsr	M_init_bitplanes
		bra.s	Back3			

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

Gedrueckt4:
	btst	#6,$bfe001
	bne.s	Back4

	move.l	#42,BobOffset
	bsr.w	Put

	move.l	#72,Welche
	bsr.w	Copy_Message


	move.l	AddBitPl,d0
	cmp.l	#1,d0
	blt.s	Comment4

	cmp.l	#0,AddBitPl
	blt.s	Back4

	sub.l	#400,AddBitPl
	move.l	#Screen,d0
	bsr	M_init_bitplanes

	Back4:
	bra.w	AfterGd4
		
Comment4:
	move.l	#336,Welche
	bsr.w	Copy_Message
	move.l	#00,AddBitPl
	move.l	#Screen,d0
	bsr	M_init_bitplanes
	bra.s	Back4
;	------------------------------------

Gedrueckt5:		
	btst	#6,$bfe001
	bne.s	Back5

	move.l	#52,BobOffset
	bsr.w	Put

	move.l	#96,Welche
	bsr.w	Copy_Message


	move.l	AddBitPl,d0
	move.l	MerkEnde,d1
	sub.l	#16000,d1
	cmp.l	d1,d0
	bgt.s	Comment5

	add.l	#400,AddBitPl
	move.l	#Screen,d0
	bsr	M_init_bitplanes
	
	Back5:
	bra.w	AfterGd5

Comment5:
	move.l	#360,Welche
	bsr.w	Copy_Message
	bra.s	Back5
		
;	------------------------------------

Gedrueckt6:			
	btst	#6,$bfe001
	bne.s	Back6

	cmp.l	#10,NSeite
	blt.s	Back6

	move.l	#62,BobOffset
	bsr.w	Put

	move.l	#120,Welche
	bsr.w	Copy_Message



	move.l	MerkEnde,d0
	cmp.l	#16000,d0
	blt.s	Back6


	move.l	AddBitPl,d0
	move.l	MerkEnde,d1
	sub.l	#32000,d1
	cmp.l	d1,d0
	bgt.s	GanzU


	add.l	#16000,AddBitPl
	move.l	#Screen,d0
	bsr	M_init_bitplanes

	move.l	#0,NSeite

	Back6:
	bra.w	AfterGd6

	GanzU:
		move.l	MerkEnde,d0
		sub.l	#15600,d0
		move.l	d0,AddBitPl
		move.l	#Screen,d0
		bsr	M_init_bitplanes
;		add.l	#40,AddBitPl
		bra.s	Back6			
		
;	------------------------------------

Gedrueckt7:				; Menu
	btst	#6,$bfe001
	bne.w	Back7

	move.l	#72,BobOffset
	bsr.w	Put

	move.l	#144,Welche
	bsr.w	Copy_Message

	bset	#1,MGd_G
	bset	#0,MenuUntenMaus

	move.l	#1,d0
	bsr.w	Init_Art

	Back7:
	bra.w	Keine_Kolli

;---------------------------------------------------
;--- Wenn MENU Gadget gedrückt wird ----------------
;---------------------------------------------------
Make_Menu:

	bsr.w	AusblendenText

	movem.l	d0-d7/a0-a6,-(a7)
		jsr	ClearScreen
	move.l	#Text,Source
	move.l	#Screen,Destin
	add.l	#1920,Destin
		jsr	Write
	movem.l	(a7)+,d0-d7/a0-a6

	move.l	#00,AddBitPl
	move.l	#Screen,d0
	bsr	M_init_bitplanes

	bsr.w	Einblenden
	bclr	#0,Wahl			; Abfrage des Bitplanescrollings
					; aktivieren
	bset	#0,MenuUntenMaus	; Mausabfrage unten ausschalten
	move.l	#0,NameCounter
	bclr	#1,MGd_G
	
	rts

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

Gedrueckt8:			
	btst	#6,$bfe001
	bne.s	Back8

	bset	#0,MenuUntenMaus	; Maus sperren

	move.l	#168,Welche
	bsr.w	Copy_Message

	move.l	#0,d0
	move.l	#0,d1

	bset	#0,Aussteigen

	Back8:
	bra.w	AfterGd8

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

Gedrueckt9:		
	btst	#6,$bfe001
	bne.s	Back9
	
	move.l	#0,OnOff
	bsr.w	Put_Music
	bclr	#0,Ismusic

	move.l	#192,Welche
	bsr.w	Copy_Message

	Back9:
	bra.w	AfterGd9

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

Gedrueckt10:		
	btst	#6,$bfe001
	bne.s	Back10

	move.l	#224,OnOff
	bsr.w	Put_Music
	bset	#0,Ismusic

	move.l	#216,Welche
	bsr.w	Copy_Message

	movem.l	d0-d7/a0-a6,-(a7)
	jsr	mt_end
	movem.l	(a7)+,d0-d7/a0-a6
		
	Back10:
	bra.w	AfterGd10

;	----------------------------------------------------------------
BobOffset:	dc.l 0
Welche:		dc.l 0
Messy_Rein:	dc.l 0
Aussteigen:	dc.b 0
IsMusic:	dc.b 0	
		even	

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

Copy_Message:
	move.l	#0,Messy_Rein
	lea	Menu,a0
	add.l	#4171,a0
	lea	Font2,a1
	lea	Messages(pc),a2
	add.l	Welche,a2
	move.w	#23,d7

Gosh:
	move.l	#0,d0
	move.b	(a2)+,d0
	cmp.b	#32,d0
	beq.s	Leer
	AFterLeer:
	sub.l	#33,d0
	add.l	d0,a1
	bsr.w	Copy_Zahl
	lea	Menu,a0
	add.l	#4171,a0
	addq.l	#1,Messy_Rein
	add.l	Messy_Rein,a0
	lea	Font2,a1
	dbra	d7,Gosh
	rts

Leer:
	move.l	#94,d0
	bra.s	AfterLeer

Messages:
	dc.b	"Hello! I am Derrel.     "
	dc.b	"Cool it man.            "
	dc.b	"Alcohol is our petrol!  "
	dc.b	"Want new stuff eh ?     "
	dc.b	"You re going down!      "
	dc.b	"Beer is our elixier!    "
	dc.b	"I like this menu !!!    "
	dc.b	"SUCKER, LOOSER,...!!!!!!"
	dc.b	"Nice music, isn`t it?   "
	dc.b	"Don`t turn it off !!!   "
	dc.b	"Loading OK.             "	; Messages + 240
	dc.b	"DISK ERROR!             "	; Messages + 264
	dc.b	"Enjoy reading !!!       "      ; Messages + 288
	dc.b	"There`s no article left!"	; Messages + 312
	dc.b	"Fuck off, looser !!!    "	; Messages + 336
	dc.b	"Didn`t ya check the end?"	; Messages + 360
	dc.b	" ",0	
	even
;	----------------------------------------------------------------
;	--- Grafik über Position des MPoiner blitten -------------------
;	----------------------------------------------------------------
Put:
	lea	$dff000,a6
	lea	Drueber,a0
	lea	Menu,a1
	add.l	#240,a1
	add.l	BobOffset,a1
	sub.l	#12,BobOffset
	add.l	BobOffset,a0
	move.w	#3,d7
	
Wait:
	btst	#14,dmaconr(a6)
	bne.s	Wait

	move.l	#$ffffffff,bltafwm(a6)
	move.w	#62,bltamod(a6)
	move.w	#72,bltdmod(a6)

Go_on:	
	move.l	a0,bltapth(a6)
	move.l	a1,bltdpth(a6)
	clr.w	bltcon1(a6)
	move.w	#$09f0,bltcon0(a6)
	move.w	#32*64+4,bltsize(a6)

Wait2:
	btst	#14,dmaconr(a6)
	bne.s	Wait2

	add.l	#2240,a0
	add.l	#bs,a1
	dbra	d7,Go_on	
	rts		

;	----------------------------------------------------------------
;	--- Textscreen löschen -----------------------------------------
;	----------------------------------------------------------------
ClearScreen:
	lea	Screen,a0
	lea	$dff000,a6
	move.w	#1,d7
	move.l	#$ffffffff,bltafwm(a6)
	move.w	#0,bltdmod(a6)
 CS:
 	move.l	a0,bltdpth(a6)
 	clr.w	bltcon1(a6)
 	move.w	#$0100,bltcon0(a6)	
	move.w	#1000*64+40,bltsize(a6)
WaitCS:
	btst	#14,dmaconr(a6)
	bne.s	WaitCS

	add.l	#M_bs,a0
	dbra	d7,CS
;--------------------------------------
	lea	Screen,a0
	add.l	#80000,a0
	lea	$dff000,a6
	move.w	#1,d7
	move.l	#$ffffffff,bltafwm(a6)
	move.w	#0,bltdmod(a6)
 CS1:
 	move.l	a0,bltdpth(a6)
 	clr.w	bltcon1(a6)
 	move.w	#$0100,bltcon0(a6)	
	move.w	#200*64+40,bltsize(a6)
WaitCS1:
	btst	#14,dmaconr(a6)
	bne.s	WaitCS1

	add.l	#M_bs,a0
	dbra	d7,CS1
	rts


;	----------------------------------------------------------------
;	--- Jedes Interrupt Kopie der Menugrafik in Screen blitten -----
;	----------------------------------------------------------------
Restaurieren:
	lea	$dff000,a6
	lea	SaveMenu,a0
	lea	Menu,a1
	add.l	#252,a1
	add.l	#252,a0
	move.w	#3,d7
	
Wait5:
	btst	#14,dmaconr(a6)
	bne.s	Wait5

	move.l	#$ffffffff,bltafwm(a6)
	move.w	#12,bltamod(a6)
	move.w	#12,bltdmod(a6)

Gon_on2:	
	move.l	a0,bltapth(a6)
	move.l	a1,bltdpth(a6)
	clr.w	bltcon1(a6)
	move.w	#$09f0,bltcon0(a6)
	move.w	#32*64+34,bltsize(a6)

Wait6:
	btst	#14,dmaconr(a6)
	bne.s	Wait6

	add.l	#bs,a0
	add.l	#bs,a1
	dbra	d7,Gon_on2	
	rts		
;	----------------------------------------------------------------
OnOff:	dc.l 0
;	----------------------------------------------------------------



;	----------------------------------------------------------------
;	--- Music on/off toggle hinblitten -----------------------------
;	----------------------------------------------------------------
Put_Music:
	lea	$dff000,a6
	lea	Music,a0
	add.l	OnOff,a0
	lea	Menu,a1
	add.l	#66,a1
	add.l	#3600,a1
	add.l	#240,a1
	move.w	#3,d7
	
Waitm:
	btst	#14,dmaconr(a6)
	bne.s	Waitm

	move.l	#$ffffffff,bltafwm(a6)
	move.w	#0,bltamod(a6)
	move.w	#66,bltdmod(a6)

Go_onm:	
	move.l	a0,bltapth(a6)
	move.l	a1,bltdpth(a6)
	clr.w	bltcon1(a6)
	move.w	#$09f0,bltcon0(a6)
	move.w	#16*64+7,bltsize(a6)

Wait2m:
	btst	#14,dmaconr(a6)
	bne.s	Wait2m

	add.l	#448,a0
	add.l	#bs,a1
	dbra	d7,Go_onm	
	rts		
	
;	----------------------------------------------------------------
	SpriteY:	dc.w 0
	SpriteX:	dc.w 0	
	Pointset:	dc.l 12040
	even



;	----------------------------------------------------------------
;	--- Sprite-Mausabfrage -----------------------------------------
;	----------------------------------------------------------------
D_Mausabfrage:
;	-------------------------------
;	--- Rechts & Links ------------
;	-------------------------------
	move.l	#0,d0
	move.w	$dff00a,d0

	move.b	MerkX,d1
	move.b	d0,MerkX

	cmp.b	d0,d1
	blt.s	Rechts
	bgt.s	Links
   AfterRL:


;	-------------------------------
;	--- Oben & Unten --------------
;	-------------------------------
	move.b	$dff00a,d0

	move.b	MerkY,d1
	move.b	d0,MerkY

	cmp.b	d0,d1
	bgt.w	Oben	
	blt.s	Unten
	AfterOU:

	rts
;-------------------------------
MerkX:	dc.b 0
MerkY:	dc.b 0
MerkY1:	dc.b 0
	even
;-------------------------------

Oben:
		cmp.w	#237,SpriteY
		blt.s	Nix1
		sub.w	#1,SpriteY
	Nix1:
		bsr.s	Put_Sprite
		bra.s	AfterOU

Unten:
		cmp.w	#299,SpriteY
		bgt.s	Nix2
		add.w	#1,SpriteY
	Nix2:
		bsr.s	Put_Sprite
		bra.s	AfterOU

Rechts:
		cmp.w	#446,SpriteX
		bgt.s	Nix3	
		add.w	#1,SpriteX
	Nix3:
		bsr.s	Put_Sprite
		bra.s	AfterRL

Links:
		cmp.w	#129,SpriteX
		blt.s	Nix4	
		sub.w	#1,SpriteX
	Nix4:
		bsr.s	Put_Sprite
		bra.s	AfterRL



;	-------------------------------------------------------------------
;	--- Spritekoordinaten initialisieren ------------------------------
;	-------------------------------------------------------------------
Put_Sprite:
	move.w	SpriteX,d0
	move.w	SpriteY,d1
	move.w	d1,d2
	add.w	#16,d2
	lea	SpriteData(pc),a0
	move.b	d1,(a0)
	ror.w	#1,d0
	move.b	d0,1(a0)
	move.b	d2,2(a0)
	rol.w	#1,d0
	and.b	#1,d0

	btst	#8,d1
	beq.s	Nicht_Erste
	bset	#2,d0
	Nicht_Erste:
	btst	#8,d2
	beq.s	Nicht_Zweite
	bset	#1,d0
	Nicht_Zweite:
	move.b	d0,3(a0)
	rts



;	----------------------------------------------------------------
;	--- Was ist das wohl ? -----------------------------------------
;	----------------------------------------------------------------

Copperliste:
	dc.w	$180,$000
;	----------------------------------------------------------------

Sprites:
	dc.w	$120,0,$122,0,$124,0,$126,0,$128,0,$12a,0,$12c,0,$12e,0
	dc.w	$130,0,$132,0,$134,0,$136,0,$138,0,$13a,0,$13c,0,$13e,0

;	----------------------------------------------------------------
	dc.w	$1d07,-2
	dc.w	$180,$008


	dc.w	$2007,-2
M_BitPlanes:
	dc.w	$e0,0,$e2,0	; 1 Plane
	dc.w	$e4,0,$e6,0	; 2 Planes
;	dc.w	$e8,0,$ea,0	; 3 Planes
;	dc.w	$ec,0,$ee,0	; 4 Planes
;	dc.w	$f0,0,$f2,0	; 5 Planes
;	--------------------------------------------------
	dc.w	$8e,$2081,$90,$e7c1,$92,$3c,$94,$d4  ;Spezialreg.
	dc.w	$108,0,$10a,0 
	dc.w 	$100,$a200		; bplcon0


M_Colors:
	dc.w	$180,000,$182,000,$184,000,$186,000
			

	dc.w	$6e07,-2
M_Balken:
	dc.w	$180,$0
	dc.w	$6f07,-2
	dc.w	$180,$0
	dc.w	$7907,-2
	dc.w	$180,$0
	dc.w	$7a07,-2
	dc.w	$180,$0

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

;	dc.w	$e607,-2				
;	dc.w	$180,$004	;,$182,$0ca,$184,$0b6,$188,$093
;	dc.w	$e707,-2				
;	dc.w	$180,$003	;,$182,$0b9,$184,$0a5,$188,$082
;	dc.w	$e807,-2				
;	dc.w	$180,$002	;,$182,$0a8,$184,$094,$188,$072
;	dc.w	$e907,-2					
;	dc.w	$180,$001	;,$182,$064,$184,$050,$188,$030
;	dc.w	$ea07,-2		
;	dc.w	$180,$000	;,$182,$042,$184,$030,$188,$010

	dc.w	$e807,-2
;	dc.w	$180,$008

;	-------------------------------------------------------------------
	dc.w	$eb07,-2
BitPlanes:	
	dc.w	$e0,0,$e2,0	; 1 Plane
	dc.w	$e4,0,$e6,0	; 2 Planes
	dc.w	$e8,0,$ea,0	; 3 Planes
	dc.w	$ec,0,$ee,0	; 4 Planes
;	dc.w	$f0,0,$f2,0	; 5 Planes
;	--------------------------------------------------
Farbe:
	blk.w	32,0	
;	--------------------------------------------------
	dc.w	$8e,$ec81,$90,$2fc1,$92,$3c,$94,$d4  ;Spezialreg.
	dc.w	$108,0,$10a,0 
	dc.w 	$100,$C200		; bplcon0
	dc.w	$180,0
	dc.w	$102,$00

	dc.w	$1a0,$000
	dc.w	$1a2,$00a
	dc.w	$1a4,$006
	dc.w	$1a6,$00f
	

	dc.w	$ffe1,-2

	dc.w	$2007,-2
	dc.w	$180,$000	
	dc.w	$182,$bbb	



	dc.w	$ffff,-2


;	-------------------------------------------------------------------
M_Farbe:
	blk.w	8,0	
;	-------------------------------------------------------------------


;	-------------------------------------------------------------------
;	--- Bitplanes des Mauspointers ------------------------------------
;	-------------------------------------------------------------------
SpriteData:
	dc.w	$a05a,$b000
	dc.w	%1111111111111111,%1111111111111111
	dc.w	%0111111111111110,%1000000000000000
	dc.w	%0111111111111100,%1000000000000000
	dc.w	%0111111111111000,%1000000000000000		
	dc.w	%0111111111110000,%1000000000000000			
	dc.w	%0111111111100000,%1000000000100000		
	dc.w	%0111111111110000,%1000000000010000
	dc.w	%0111111111111000,%1000000000001000	
	dc.w	%0111111111111100,%1000000000000100
	dc.w	%0111111111111100,%1000000000000000	
	dc.w	%0111101111111000,%1000010000000000	
	dc.w	%0111100111110000,%1000001000000000		
	dc.w	%0111000011100000,%1000000100000000		
	dc.w	%0110000001000000,%1000000010000000
	dc.w	%0100000000000000,%1000000000000000
	dc.w	%0000000000000000,%0000000000000000
	dc.w	0,0



;	-------------------------------------------------------------------
;	--- Screen in Copperliste eintragen -------------------------------
;	-------------------------------------------------------------------
Init_Bitplanes:
	move.l	#BitPlanes,a0
	move.l	#Menu,d0
	move.w	#Planes-1,d7
GFX_Loop:
	add.l	#6,a0		; $E2 zuerst
	move.w	d0,(a0)		; Lo Wert
	sub.l	#4,a0		; $e0 danach
	swap 	d0		; Swap
	move.w	d0,(a0)		; High Wert
	add.l	#6,a0		; In Copperliste weiter
	swap	d0		; Swap
	add.l	#bs,d0		; Eine Bitplanes dazu
	dbra	d7,GFX_Loop	; Jump zurück
	rts			; RTS



;	-------------------------------------------------------------------
;	--- Farben initialisieren -----------------------------------------
;	-------------------------------------------------------------------
color1:
	move.w	#$180,d0			; Wert der 1. Farbe
	move.l	#MenuEnd-farblaenge,a0	; Adresse in Bilddaten
	move.l  #farbe,a1			; Adresse in Copperliste
init:	move.w	(a0)+,d1			; Farbcode 
	move.w	d0,(a1)+
	move.w	d1,(a1)+
	addq.w	#2,d0
	cmp.w	#$1a0,d0  ; $1a0 = 16F. || $190 = 8F.
	bne.s	init
	rts

	even
;-------------------------------------------
;----- Soundtracker V2.4 - playroutine -----
;-------------------------------------------
; call 'mt_init' to initialize the playroutine

mt_init:lea	mt_data,a0
	add.l	#$03b8,a0
	moveq	#$7f,d0
	moveq	#0,d1
mt_init1:
	move.l	d1,d2
	subq.w	#1,d0
mt_init2:
	move.b	(a0)+,d1
	cmp.b	d2,d1
	bgt.s	mt_init1
	dbf	d0,mt_init2
	addq.b	#1,d2

mt_init3:
	lea	mt_data,a0
	lea	mt_sample1(pc),a1
	asl.l	#8,d2
	asl.l	#2,d2
	add.l	#$438,d2
	add.l	a0,d2
	moveq	#$1e,d0
mt_init4:
	move.l	d2,(a1)+
	moveq	#0,d1
	move.w	42(a0),d1
	asl.l	#1,d1
	add.l	d1,d2
	add.l	#$1e,a0
	dbf	d0,mt_init4

	lea	mt_sample1(PC),a0
	moveq	#0,d0
mt_clear:
	move.l	(a0,d0.w),a1
	clr.l	(a1)
	addq.w	#4,d0
	cmp.w	#$7c,d0
	bne.s	mt_clear

	clr.w	$dff0a8
	clr.w	$dff0b8
	clr.w	$dff0c8
	clr.w	$dff0d8
	clr.l	mt_partnrplay
	clr.l	mt_partnote
	clr.l	mt_partpoint

	move.b	mt_data+$3b6,mt_maxpart+1
	rts

; call 'mt_end' to switch the sound off

mt_end:	clr.w	$dff0a8
	clr.w	$dff0b8
	clr.w	$dff0c8
	clr.w	$dff0d8
	move.w	#$f,$dff096
	rts

; the playroutine - call this every frame

mt_music:
	addq.w	#1,mt_counter
mt_cool:cmp.w	#6,mt_counter
	bne.s	mt_notsix
	clr.w	mt_counter
	bra	mt_rout2

mt_notsix:
	lea	mt_aud1temp(PC),a6
	tst.b	3(a6)
	beq.s	mt_arp1
	lea	$dff0a0,a5		
	bsr.s	mt_arprout
mt_arp1:lea	mt_aud2temp(PC),a6
	tst.b	3(a6)
	beq.s	mt_arp2
	lea	$dff0b0,a5
	bsr.s	mt_arprout
mt_arp2:lea	mt_aud3temp(PC),a6
	tst.b	3(a6)
	beq.s	mt_arp3
	lea	$dff0c0,a5
	bsr.s	mt_arprout
mt_arp3:lea	mt_aud4temp(PC),a6
	tst.b	3(a6)
	beq.s	mt_arp4
	lea	$dff0d0,a5
	bra.s	mt_arprout
mt_arp4:rts

mt_arprout:
	move.b	2(a6),d0
	and.b	#$0f,d0
	tst.b	d0
	beq	mt_arpegrt
	cmp.b	#$01,d0
	beq.s	mt_portup
	cmp.b	#$02,d0
	beq.s	mt_portdwn
	cmp.b	#$0a,d0
	beq.s	mt_volslide
	rts

mt_portup:
	moveq	#0,d0
	move.b	3(a6),d0
	sub.w	d0,22(a6)
	cmp.w	#$71,22(a6)
	bpl.s	mt_ok1
	move.w	#$71,22(a6)
mt_ok1:	move.w	22(a6),6(a5)
	rts

mt_portdwn:
	moveq	#0,d0
	move.b	3(a6),d0
	add.w	d0,22(a6)
	cmp.w	#$538,22(a6)
	bmi.s	mt_ok2
	move.w	#$538,22(a6)
mt_ok2:	move.w	22(a6),6(a5)
	rts

mt_volslide:
	moveq	#0,d0
	move.b	3(a6),d0
	lsr.b	#4,d0
	tst.b	d0
	beq.s	mt_voldwn
	add.w	d0,18(a6)
	cmp.w	#64,18(a6)
	bmi.s	mt_ok3
	move.w	#64,18(a6)
mt_ok3:	move.w	18(a6),8(a5)
	rts
mt_voldwn:
	moveq	#0,d0
	move.b	3(a6),d0
	and.b	#$0f,d0
	sub.w	d0,18(a6)
	bpl.s	mt_ok4
	clr.w	18(a6)
mt_ok4:	move.w	18(a6),8(a5)
	rts

mt_arpegrt:
	move.w	mt_counter(PC),d0
	cmp.w	#1,d0
	beq.s	mt_loop2
	cmp.w	#2,d0
	beq.s	mt_loop3
	cmp.w	#3,d0
	beq.s	mt_loop4
	cmp.w	#4,d0
	beq.s	mt_loop2
	cmp.w	#5,d0
	beq.s	mt_loop3
	rts

mt_loop2:
	moveq	#0,d0
	move.b	3(a6),d0
	lsr.b	#4,d0
	bra.s	mt_cont
mt_loop3:
	moveq	#$00,d0
	move.b	3(a6),d0
	and.b	#$0f,d0
	bra.s	mt_cont
mt_loop4:
	move.w	16(a6),d2
	bra.s	mt_endpart
mt_cont:
	add.w	d0,d0
	moveq	#0,d1
	move.w	16(a6),d1
	and.w	#$fff,d1
	lea	mt_arpeggio(PC),a0
mt_loop5:
	move.w	(a0,d0),d2
	cmp.w	(a0),d1
	beq.s	mt_endpart
	addq.l	#2,a0
	bra.s	mt_loop5
mt_endpart:
	move.w	d2,6(a5)
	rts

mt_rout2:
	lea	mt_data,a0
	move.l	a0,a3
	add.l	#$0c,a3
	move.l	a0,a2
	add.l	#$3b8,a2
	add.l	#$43c,a0
	move.l	mt_partnrplay(PC),d0
	moveq	#0,d1
	move.b	(a2,d0),d1
	asl.l	#8,d1
	asl.l	#2,d1
	add.l	mt_partnote(PC),d1
	move.l	d1,mt_partpoint
	clr.w	mt_dmacon

	lea	$dff0a0,a5
	lea	mt_aud1temp(PC),a6
	bsr	mt_playit
	lea	$dff0b0,a5
	lea	mt_aud2temp(PC),a6
	bsr	mt_playit
	lea	$dff0c0,a5
	lea	mt_aud3temp(PC),a6
	bsr	mt_playit
	lea	$dff0d0,a5
	lea	mt_aud4temp(PC),a6
	bsr	mt_playit
	move.w	#$01f4,d0
mt_rls:	dbf	d0,mt_rls

	move.w	#$8000,d0
	or.w	mt_dmacon,d0
	move.w	d0,$dff096

	lea	mt_aud4temp(PC),a6
	cmp.w	#1,14(a6)
	bne.s	mt_voice3
	move.l	10(a6),$dff0d0
	move.w	#1,$dff0d4
mt_voice3:
	lea	mt_aud3temp(PC),a6
	cmp.w	#1,14(a6)
	bne.s	mt_voice2
	move.l	10(a6),$dff0c0
	move.w	#1,$dff0c4
mt_voice2:
	lea	mt_aud2temp(PC),a6
	cmp.w	#1,14(a6)
	bne.s	mt_voice1
	move.l	10(a6),$dff0b0
	move.w	#1,$dff0b4
mt_voice1:
	lea	mt_aud1temp(PC),a6
	cmp.w	#1,14(a6)
	bne.s	mt_voice0
	move.l	10(a6),$dff0a0
	move.w	#1,$dff0a4
mt_voice0:
	move.l	mt_partnote(PC),d0
	add.l	#$10,d0
	move.l	d0,mt_partnote
	cmp.l	#$400,d0
	bne.s	mt_stop
mt_higher:
	clr.l	mt_partnote
	addq.l	#1,mt_partnrplay
	moveq	#0,d0
	move.w	mt_maxpart(PC),d0
	move.l	mt_partnrplay(PC),d1
	cmp.l	d0,d1
	bne.s	mt_stop
	clr.l	mt_partnrplay
mt_stop:tst.w	mt_status
	beq.s	mt_stop2
	clr.w	mt_status
	bra.s	mt_higher
mt_stop2:
	rts

mt_playit:
	move.l	(a0,d1.l),(a6)
	addq.l	#4,d1
	moveq	#0,d2
	move.b	2(a6),d2
	and.b	#$f0,d2
	lsr.b	#4,d2

	move.b	(a6),d0
	and.b	#$f0,d0
	or.b	d0,d2
	tst.b	d2
	beq.s	mt_nosamplechange

	moveq	#0,d3
	lea	mt_samples(PC),a1
	move.l	d2,d4
	asl.l	#2,d2
	mulu	#$1e,d4
	move.l	(a1,d2),4(a6)
	move.w	(a3,d4.l),8(a6)
	move.w	2(a3,d4.l),18(a6)
	move.w	4(a3,d4.l),d3
	tst.w	d3
	beq.s	mt_displace
	move.l	4(a6),d2
	add.l	d3,d2
	move.l	d2,4(a6)
	move.l	d2,10(a6)
	move.w	6(a3,d4.l),8(a6)
	move.w	6(a3,d4.l),14(a6)
	move.w	18(a6),8(a5)
	bra.s	mt_nosamplechange

mt_displace:
	move.l	4(a6),d2
	add.l	d3,d2
	move.l	d2,10(a6)
	move.w	6(a3,d4.l),14(a6)
	move.w	18(a6),8(a5)
mt_nosamplechange:
	move.w	(a6),d0
	and.w	#$fff,d0
	tst.w	d0
	beq.s	mt_retrout
	move.w	(a6),16(a6)
	move.w	20(a6),$dff096
	move.l	4(a6),(a5)
	move.w	8(a6),4(a5)
	move.w	(a6),d0
	and.w	#$fff,d0
	move.w	d0,6(a5)
	move.w	20(a6),d0
	or.w	d0,mt_dmacon

mt_retrout:
	tst.w	(a6)
	beq.s	mt_nonewper
	move.w	(a6),22(a6)

mt_nonewper:
	move.b	2(a6),d0
	and.b	#$0f,d0
	cmp.b	#$0b,d0
	beq.s	mt_posjmp
	cmp.b	#$0c,d0
	beq.s	mt_setvol
	cmp.b	#$0d,d0
	beq.s	mt_break
	cmp.b	#$0e,d0
	beq.s	mt_setfil
	cmp.b	#$0f,d0
	beq.s	mt_setspeed
	rts

mt_posjmp:
	not.w	mt_status
	moveq	#0,d0
	move.b	3(a6),d0
	subq.b	#1,d0
	move.l	d0,mt_partnrplay
	rts

mt_setvol:
	move.b	3(a6),8(a5)
	rts

mt_break:
	not.w	mt_status
	rts

mt_setfil:
	moveq	#0,d0
	move.b	3(a6),d0
	and.b	#1,d0
	rol.b	#1,d0
	and.b	#$fd,$bfe001
	or.b	d0,$bfe001
	rts

mt_setspeed:
	move.b	3(a6),d0
	and.b	#$0f,d0
	beq.s	mt_back
	clr.w	mt_counter
	move.b	d0,mt_cool+3
mt_back:rts

mt_aud1temp:
	blk.w	10,0
	dc.w	1
	blk.w	2,0
mt_aud2temp:
	blk.w	10,0
	dc.w	2
	blk.w	2,0
mt_aud3temp:
	blk.w	10,0
	dc.w	4
	blk.w	2,0
mt_aud4temp:
	blk.w	10,0
	dc.w	8
	blk.w	2,0

mt_partnote:	dc.l	0
mt_partnrplay:	dc.l	0
mt_counter:	dc.w	0
mt_partpoint:	dc.l	0
mt_samples:	dc.l	0
mt_sample1:	blk.l	31,0
mt_maxpart:	dc.w	0
mt_dmacon:	dc.w	0
mt_status:	dc.w	0

mt_arpeggio:
	dc.w $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c
	dc.w $023a,$021a,$01fc,$01e0,$01c5,$01ac,$0194,$017d
	dc.w $0168,$0153,$0140,$012e,$011d,$010d,$00fe,$00f0
	dc.w $00e2,$00d6,$00ca,$00be,$00b4,$00aa,$00a0,$0097
	dc.w $008f,$0087,$007f,$0078,$0071,$0000,$0000,$0000


;------------------------------------------------------------------------------
;----- Kopf auf Track fahren --------------------------------------------------
;------------------------------------------------------------------------------
;--- jsr Dsk_start     vor 1.Benutzung
;--- jsr Dsk_move      Tracknr. in d0.b
;--- jsr Dsk_end       nach letzter Benutzung
;------------------------------------------------------------------------------
HL_Drive	= 0
HL_DskPt	= $dff020
HL_DskLen	= $dff024
HL_DskSync	= $dff07e
HL_AdkCon	= $dff09e
HL_AdkConr	= $dff010
HL_DmaCon	= $dff096

Dsk_start:
	movem.l	d0-d1,-(a7)
	move.w	#%1000000000010000,HL_DmaCon
	move.w	#%0001011100000000,HL_AdkCon	; Diskformatparameter setzen
	move.w	#%1001110100000000,HL_AdkCon
	move.w	#$4489,HL_DskSync
   ; Motor ein
	bset	#HL_Drive+3,$bfd100
	bclr	#7,$bfd100
	bsr.w	HL_sel
   ; Track 0 suchen
	bset	#1,$bfd100
	clr.l	d0
       HL_Track:
	move.w	#$1000,d1		; Seekdelay		
       HL_Track2:
	dbra	d1,HL_Track2
	btst	#4,$bfe001
	beq.s	HL_TrackEnd
	bclr	#0,$bfd100
	nop
	nop
	bset	#0,$bfd100
	add.l	#1,d0
	bra.s	HL_Track
       HL_TrackEnd:
	move.b	d0,HL_oldcyl
	move.b	#0,HL_cyl
HL_rootfalsch:
	move.w	#880,d0		; Rootblock laden
	lea	HL_root(PC),a1
	bsr.w	BL_Laden
	cmp.l	#1,HL_root+508	; Rootblock wirklich geladen
	beq.s	HL_rootstimmt
	move.b	#99,HL_oldtrack
	bra.s	HL_rootfalsch
HL_rootstimmt:
	movem.l	(a7)+,d0-d1
	rts
Dsk_move:
	movem.l	d0-d1,-(a7)
	and.l	#$ff,d0
	move.b	HL_cyl,d1
	move.b	d0,HL_cyl
	bset	#1,$bfd100
	sub.b	d0,d1
	bpl.s	HL_dm1
	bclr	#1,$bfd100
	neg.b	d1
       HL_dm1:
	tst.b	d1
	beq.s	HL_dm3
	move.w	#$1000,d0
       HL_dm2:
	dbra	d0,HL_dm2
	bclr	#0,$bfd100
	nop
	nop
	bset	#0,$bfd100
	subq.b	#1,d1
	bra.s	HL_dm1
       HL_dm3:
	movem.l	(a7)+,d0-d1
	rts	
Dsk_end:
	movem.l	d0,-(a7)
	move.b	HL_oldcyl(PC),d0
	bsr.b	Dsk_move
	bset	#HL_Drive+3,$bfd100
	bset	#7,$bfd100
	bclr	#HL_Drive+3,$bfd100
	movem.l	(a7)+,d0
	rts
HL_sel:
	or.b	#%01111000,$bfd100
	bclr	#HL_Drive+3,$bfd100
;	btst	#5,$bfe001
;	HL_Waitready:
;	bne.s	HL_Waitready
	rts
	
	even
HL_Adkmerken:	dc.w	0
HL_cyl:		dc.b	0
HL_oldcyl:	dc.b	0

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



;------------------------------------------------------------------------------
;----- Track lesen ------------------------------------------------------------
;------------------------------------------------------------------------------
;--- jsr Tr_read	a0  Puffer fuer Daten
;---			d0.b  Head (0=unten)
;------------------------------------------------------------------------------
Tr_Drive	= 0
Tr_DskPt	= $dff020
Tr_DskLen	= $dff024
Tr_DskSync 	= $dff07e
Tr_AdkCon	= $dff09e
Tr_intreq  	= $dff09c
Tr_intreqr 	= $dff01e
Tr_MFMLen	= 12774

Tr_read:
	movem.l	a0/d0-d1,-(a7)
	btst	#0,d0
	bne.s	Tr_unten
	bset	#2,$bfd100
	bra.s	Tr_head
	Tr_unten:
	bclr	#2,$bfd100
	Tr_head:
       	move.w	#%0000000000000010,Tr_Intreq
	move.l	a0,Tr_DskPt
	move.w	#$0000,Tr_DskLen
	move.w	#(Tr_MFMLen)/2+$8000,d0	; lesen
	move.w	d0,Tr_DskLen
	move.w	d0,Tr_DskLen
	move.b	$bfe801,d1
	add.b	#60,d1	
Tr_WaitBlock:
	move.w	Tr_intreqr,d0
       	and.w	#%0000000000000010,d0
	bne.s	Tr_ReadTrackOk
	cmp.b	$bfe801,d1
	bpl.s	Tr_WaitBlock
	move.l	#1,d0
	bra.s	Tr_ReadTrackEnd
Tr_ReadTrackOk:
	move.l	#0,d0
Tr_ReadTrackEnd:
	move.w	#$0000,Tr_DskLen
	move.w	#%0000000000000010,Tr_intreq
	movem.l	(a7)+,a0/d0-d1
	rts	

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


;------------------------------------------------------------------------------
;----- Track MFM Dekodieren ---------------------------------------------------
;------------------------------------------------------------------------------
;--- jsr MFM_Decode	a0 Codierte daten -------------------------------------
;---			a1 Decodierte Daten -----------------------------------
;---			d0.b Sector (0-10) ------------------------------------
;------------------------------------------------------------------------------
MFM_Decode:
	movem.l	a0-a2/d0-d2,-(a7)
	cmp.w	#$4489,(a0)
	beq.s	HL_zweisync
	subq.l	#2,a0
       HL_zweisync:
	subq.l	#6,a0		; 2 Worte $aaaa und 1 Sync nicht gelesen
	move.w	10(a0),d1
	move.w	14(a0),d2
	and.w	#$5555,d1
	and.w	#$5555,d2
	lsl.w	#1,d1
	or.w	d2,d1		; Anz.Sekt. bis Gap in d1		
	move.w	d1,d2
	lsr.w	#8,d2		; Sektornr. in d2

	cmp.b	d2,d0
	beq.w	MFM_L1

	bgt.s	MFM_groesser
	add.b	#11,d0
	MFM_groesser:
	sub.b	d2,d0
	and.l	#$ff,d0

	cmp.b	d0,d1
	bgt.s	HL_nixgap
	beq.s	HL_erstersec

	sub.b	d1,d0
	and.l	#$ff,d1
	mulu	#1088,d1
	add.l	d1,a0
	HL_suchen2:
	cmp.l	#hl_raw+12774-1088,a0	; falls Sync nicht gefunden
	bne.s	HL_gehtnoch2	
	move.l	#$12345678,(a1)
	movem.l	(a7)+,a0-a1/d0-d2
	rts
	HL_gehtnoch2:
	cmp.w	#$4489,(a0)+
	bne.s	HL_suchen2
	cmp.w	#$4489,(a0)
	beq.s	HL_einer2
	subq.l	#2,a0
	HL_einer2:					
	subq.l	#6,a0
	mulu	#1088,d0
	add.l	d0,a0
	bra.s	MFM_L1
       HL_nixgap:
	mulu	#1088,d0
	add.l	d0,a0
	bra.s	MFM_L1
       HL_erstersec:
	mulu	#1088,d0
	add.l	d0,a0
	HL_suchen:
	cmp.l	#hl_raw+12774-1088,a0	; falls Sync nicht gefunden
	bne.s	HL_gehtnoch
	move.l	#$12345678,(a1)
	movem.l	(a7)+,a0-a1/d0-d2
	rts
	HL_gehtnoch:
	cmp.w	#$4489,(a0)+
	bne.s	HL_suchen
	cmp.w	#$4489,(a0)
	beq.s	HL_einer
	subq.l	#2,a0
	HL_einer:					
	subq.l	#6,a0

       MFM_L1:
	add.l	#64,a0		; Block dekodieren
	move.l	a0,a2
	add.l	#1024/2,a2
	move.w	#512/4,d3
       MFM_DecodeL1:
	move.l	(a0)+,d1
	move.l	(a2)+,d2
	and.l	#$55555555,d1
	and.l	#$55555555,d2
	lsl.l	#1,d1
	or.l	d2,d1
	move.l	d1,(a1)+
	dbra	d3,MFM_DecodeL1

	movem.l	(a7)+,a0-a2/d0-d2
	rts

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


;------------------------------------------------------------------------------
;----- Block laden ------------------------------------------------------------
;------------------------------------------------------------------------------
;--- jsr BL_Laden	d0.w Blocknr. -----------------------------------------
;------------------------------------------------------------------------------
BL_Laden:
	movem.l	d0-d4/a0-a1,-(a7)
	ext.l	d0
	move.l	d0,d1		; Blocknr. in THS umrechnen
	divu.w	#22,d1	;Track
	move.l	d1,d2
	mulu.w	#22,d2
	sub.w	d2,d0
	cmp.b	#10,d0
	bgt.s	HW_groesser
	move.b	#0,d2
	bra.s	HW_umrend
       HW_groesser:
	sub.b	#11,d0
	move.b	#1,d2
       HW_umrend:
	move.b	d0,d3

	move.b	HL_oldtrack,d4
	cmp.b	d1,d4
	beq.s	HL_nichtnochmal
	move.b	d1,HL_oldtrack
	move.b	d1,d0	; Track
	jsr 	Dsk_move
	bra.s	HL_muss
       HL_nichtnochmal:
	move.b	HL_oldhead,d4
	cmp.b	d2,d4
	beq.s	HL_auchnicht
       HL_muss:
	move.b	d2,HL_oldhead
	lea	HL_raw(PC),a0
	move.b	d2,d0	; Head
	jsr	Tr_read
       HL_auchnicht:
	lea	HL_raw(PC),a0	; dec.Adr in a1!
	move.b	d3,d0	; Sector
	jsr	MFM_Decode
	movem.l	(a7)+,d0-d4/a0-a1

	movem.l	d0-d1/a1,-(a7)		; fehlerfrei geladen ?
	cmp.l	#0,(a1)
	beq.s	HL_falsch
	move.l	#0,d1
	move	#127,d0
	HL_plus:
	add.l	(a1)+,d1
	dbra	d0,HL_plus
	tst.l	d1
	beq.s	HL_richtig
	HL_falsch:
	movem.l	(a7)+,d0-d1/a1
	move.b	#99,HL_oldtrack
	bra.w	BL_Laden
	HL_richtig:
	movem.l	(a7)+,d0-d1/a1
	rts

HL_oldtrack:	dc.b	99
HL_oldhead:	dc.b	99

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


;------------------------------------------------------------------------------
;----- File laden -------------------------------------------------------------
;------------------------------------------------------------------------------
;--- jsr Fi_Laden 	Name ab HL_name: --------------------------------------
;------------------------------------------------------------------------------
Fi_laden:
	movem.l	d0-d5/a0-a2,-(a7)
	move.l	HL_dest,a2
	bset	#HL_Drive+3,$bfd100	; Motor ein 
	bclr	#7,$bfd100
	bsr.w	HL_sel
	move.l	#HL_namelength,d1	; Hash berechnen
	move.l	#HL_Name,a1
	move.w	d1,d3
	subq.l	#1,d3
       HL_loop:
	mulu	#13,d1
	move.w	#0,d2
	move.b	(a1)+,d2
	cmp.b	#"a",d2
	blo.s	HL_ok
	cmp.b	#"z",d2
	bhi.s	HL_ok
	sub.b	#32,d2
       HL_ok:
	add.w	d2,d1
	and.w	#$7ff,d1
	dbra	d3,HL_loop
	divu	#72,d1
	swap	d1
	addq.w	#6,d1
	and.l	#$ffff,d1
	lsl.l	#2,d1

	lea	HL_root(PC),a0	; 1.Block mit richtigem Hash
	add.l	d1,a0
	move.l	(a0),d0
	tst.l	d0
	bne.s	HL_gef
	bset	#0,Nicht_gefunden
	bra.w	HL_fend		; Datei nicht gefunden
       HL_gef:
	move.l	a2,a1
	bsr.w	BL_Laden
	cmp.l	4(a2),d0 ; richtiger Block ?
	beq.s	HL_ja1
	move.b	#99,HL_oldtrack	
	bra.s	HL_gef
	HL_ja1:

       HL_v:
	move.w	#HL_namelength-1,d0 ; Kontrolle ob richtiger Header
	lea	HL_name(PC),a0
	move.l	a2,a1
	add.l	#433,a1
       HL_vergleich:
	move.b	(a1)+,d1
	cmp.b	#"a",d1
	blo.s	HL_ok2
	cmp.b	#"z",d1
	bhi.s	HL_ok2
	sub.b	#32,d1
       HL_ok2:
	move.b	(a0)+,d2
	cmp.b	#"a",d2
	blo.s	HL_ok3
	cmp.b	#"z",d2
	bhi.s	HL_ok3
	sub.b	#32,d2
       HL_ok3:
	cmp.b	d1,d2
	bne.s	HL_wrongHe
	dbra	d0,HL_vergleich
	bra.s	HL_databfound

       HL_wrongHe:		; naechsten Header versuchen
	move.l	496(a2),d0
	tst.l	d0
	bne.s	HL_nochmehr
	bset	#0,Nicht_gefunden
	bra.w	HL_fend		; Datei nicht gefunden
       HL_nochmehr:
	move.l	a2,a1
	bsr.w	BL_Laden
	cmp.l	4(a2),d0 ; richtiger Block ?
	beq.s	HL_ja2
	move.b	#99,HL_oldtrack	
	bra.s	HL_nochmehr
	HL_ja2:
	bra.s	HL_v

       HL_databfound:
	move.l	4(a2),d4 ; Fileheaderblock
	move.l	#1,d5	; Blocknr. der Datei
	move.l	308(a2),d0
	move.l	a2,a1
	HL_lade1:
	bsr.w	BL_Laden
	cmp.l	4(a2),d4 ; richtiger Block ?
	bne.s	HL_nein1
	cmp.l	8(a2),d5
	bne.s	HL_nein1
	addq.l	#1,d5
	bra.s	HL_ja3
	HL_nein1:
	move.b	#99,HL_oldtrack
	bra.s	HL_lade1
	HL_ja3:

	move.l	a2,a0
       HL_nextblock:
	move.l	16(a0),d2	; Naechster Block
	move.l	12(a0),d3	; Anz.Bytes in Block
	move.l	a0,a1
	add.l	#24,a1
	move.w	#488-1,d0
       HL_kopier:
	move.b	(a1)+,d1
  btst	#0,FCodieren
  bne.s	NichtFC1							
  ror.b	#3,d1			; Decodieren (nur bei Suicide-Artikeln)
 NichtFC1:
	move.b	d1,(a0)+						
	dbra	d0,HL_kopier
	tst.l	d2
	bne.s	HL_nocheiner
  btst		#0,FCodieren
  bne.s		NichtFC2							
  move.l	#488,d2			; Endmarkierung (nur bei Suicide-Artikeln)
  sub.l		d3,d2
  sub.l		d2,a0
  move.b	#$ff,(a0)+
  move.b	#$ff,(a0)+
  move.b	#$ff,(a0)+
  move.b	#$ff,(a0)+
 NichtFC2:
	bclr	#0,Nicht_gefunden
 bra.s	HL_fend	
       HL_nocheiner:
	move.l	d2,d0
	move.l	a0,a1
	HL_lade2:
	bsr.w	BL_Laden
	cmp.l	4(a1),d4 ; richtiger Block ?
	bne.s	HL_nein2
	cmp.l	8(a1),d5
	bne.s	HL_nein2
	addq.l	#1,d5
	bra.s	HL_nextblock
	HL_nein2:
	move.b	#99,HL_oldtrack
	bra.s	HL_lade2


HL_fend:
	bset	#HL_Drive+3,$bfd100
	bset	#7,$bfd100
	bclr	#HL_Drive+3,$bfd100
	movem.l	(a7)+,d0-d5/a0-a2
	rts


;------------------------------------------------------------------------------
FCodieren:
	dc.b	0
	even
HL_dest:
	dc.l	0
HL_root:
	blk.b	544,0
HL_raw:
	blk.b	12774,0
HL_page:
;	blk.b	1885,0
;	dc.b	-1,-1,-1,-1
	blk.b	10500,$20
;>Extern "df0:Externs/Versuchstext1",HL_page,1885
	even				

Mt_data:
	blk.b	91906,0
>extern "df0:Externs/Music",mt_Data,91906
		
;
;	-------------------------------------------------------------------
;	-------------------------------------------------------------------
AnzArt:	dc.l 95 	; max. Anzahl minus 1		
		
;	-------------------------------------------------------------------
;	--- Extern Files --------------------------------------------------
;	-------------------------------------------------------------------
;	--- Grafik für Menubalken unten -----
;	-------------------------------------
Menu:
	blk.b	21472,0
	MenuEnd:
>extern "df0:Externs/Dmenu2.prev.RAW",Menu,21472
>extern "df0:Externs/Dmenu2.prev.RAW",SaveMenu,21472
									

;	-------------------------------------------------------------------
;	--- Grafik für aktivierte Gadgets ---
;	-------------------------------------

Drueber:
	blk.b	8992,0
>extern "df0:Externs/Dm.dueber2.RAW",Drueber,8992
										

;	-------------------------------------------------------------------
;	--- Platz für Kopie der Menugrafik --
;	-------------------------------------
SaveMenu:
	blk.b	21472,0


;	-------------------------------------------------------------------
;	--- Grafik für ON/OFF toggle --------
;	-------------------------------------
Music:
	blk.b	1824,0
>extern "df0:Externs/DmMusic2.RAW",Music,1824
								

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

Font:
	blk.b	1700,0
	Fontend:													
>extern "df0:Externs/DMFont.RAW",Font,1700

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

Font2:		
	blk.b	752,0
>extern "df0:Externs/DMFont1Pl.RAW",Font2,752

;	-------------------------------------------------------------------
Text:
	blk.b	7511,0			
	dc.b	-1,-1,-1,-1
>extern "df0:Externs/Menu",Text,7511
					
			
;	-------------------------------------------------------------------
								
Screen:
	blk.b	192000,$00

	
;	-------------------------------------------------------------------
Grace:
