
*****************************************************************
*   Computer Aided Playefield Design by ADAM of WOT             *
*****************************************************************

>extern "menu.raw",$70000
>extern "diskop.raw",$60000
>extern "yesno.raw",$64754
>extern "char",$7c800

	even	
	jsr	clearfilebuffer	;löschen des file buffers
	bsr	takeoldcop	;nehmen des alten coppers
	bsr	instirq		;instalieren des irqs
	bsr	instcop1	;installieren des coppers
	move.l	#menu1mask,mousemask ;maske installieren
	
capd:
	dc.w	$4ef9
routadd:
	dc.l	norout_j1
norout_j1:
	btst	#7,$bfe001
	bne	capd

capdend:
	bsr	instoldirq	;reinstalieren des irqs
	bsr	instoldcop	;reinstalieren des alten cops
	move.l	$70000,d0
	rts

*********** Reservieren des Speichers ***************************

allocmem:
	move.l	4,a6		;Execbase
	moveq	#2,d1		;CHIP-Mem
	move.l	#153600,d0	;länge
	move.l	d0,baselenght	;länge retten
	jsr	-198(a6)	;allocmem
	move.l	d0,basemem	;basisadresse-retten
	move.l	d0,menumem1	;Robmem1 adresse
	add.l	#51200,d0	;addiere robpiclänge
	move.l	d0,robsmem2	;Robmem2 adresse
	add.l	#51200,d0	;addiere robpiclänge
	move.l	d0,robsmem3	;Robmem3 adresse
	rts			;tschüüs

	
Basemem:	dc.l	0	;Basismem Zeiger
Baselenght:	dc.l	0	;Länge des allocted Mems
menumem1:	dc.l	$70000	;Zeiger auf 1.Robsmem
menumem2:	dc.l	$60000
menumem3:	dc.l	$64754
menubuf2:	dc.l	$65000
menubuf3:	dc.l	$69754
Robsmem2:	dc.l	0	;Zeiger auf 2.Robsmem
Robsmem3:	dc.l	0	;Zeiger auf 3.RObsmem
charmem1:	dc.l	$7c800

************* Freigeben des Speichers ***************************

freemem:
	move.l	baselenght,d0	;länge
	move.l	basemem,a1	;Block
	move.l	4,a6		;Exec
	jsr	-210(a6)	;freemem
	rts			;tschüüs

********************* ende **************************************





*************** lesen eines bildes und repacken ***************

readpic:
	clr.w	error_mode	;lösche error pointer
	bsr	opendoslib	;öffnen des dos.library
	bsr	openfile	;öffnen der Datei
	bsr	suckfile	;file auslesen
	bsr	closefile	;schliessen der Datei
	rts

*************** öffnen der dos lib ****************************

opendoslib:
	move.l	4,a6		;Exec
	lea	dosname,a1	;Name nach a1
	moveq	#0,d0		;Version egal
	jsr	-552(a6)	;öffne nun
	move.l	d0,dosbase	;Basis Adresse retten
	tst.l	d0		;teste
	beq	opendos_er	;wenn fehler
	rts			;tschüüs
opendos_er:
	move.w	#$fff,$dff180	;kurzes bildschirm flashen
	move.w	#1,error_mode	;error speziefizieren
	rts			;tschüüs	

Dosbase:	dc.l	0	;BasisAdresse von Dos
Dosname:	dc.b	"dos.library",0

*************** öffnen des Files ******************************

openfile:
	move.l	dosbase,a6	;dosbase nach a6
	move.l	#robfilename,d1 ;name des bildes
	move.l	#1005,d2	;nur lesen / alte datei
	jsr	-30(a6)		;öffne
	move.l	d0,handle	;handle retten
	tst.l	d0		;teste ob fehler
	beq	openfile_er	;dann error
	rts			;tschüüs
openfile_er:
	move.w	#$fff,$dff180	;kurzes bildschirm flashen
	move.w	#2,error_mode	;error speziefizieren
	rts			;tschüüs	

handle:		dc.l	0	;handle des files
error_mode:	dc.w	0	;error pointer	
robfilename:	dc.b	"robspic1",0
;		        ^                              ^
	even
*************** schliessen der datei ***************************

closefile:
	move.l	dosbase,a6	;dosbasis nach a6
	move.l	handle,d1	;handle nach d1
	jsr	-36(a6)		;schliesse
	rts			;tschüüs	

**************** auslesen der datei ****************************

suckfile:	
	move.l	dosbase,a6	;dosbasis
	moveq	#40,d3		;länge der bytes
	move.l	#buffer,d2	;nach buffer
	jsr	picread		;lese
	cmp.l	#"FORM",buffer  ;ist es ein pic
	bne	nopic_er1	;dann nicht
	cmp.l	#"ILBM",buffer+8 ;richtige structur
	bne	nopic_er1	;dann nicht
	cmp.l	#"BMHD",buffer+12 ;bitmap structur ex
	bne	nopic_er2	;dann nicht
	cmp.w	#320,buffer+20  ;richtige breite
	bne	nopic_er3	;wenn nicht
	cmp.w	#200,buffer+22	;richtige höhe
	beq	highok		;dann höhe ok	
	cmp.w	#256,buffer+22	;wenigstens das
	bne	nopic_er3	;dann nicht
highok:	cmp.b	#5,buffer+28	;richtige bitplane tiefe
	bne	nopic_er4	;dann fehler
	cmp.b	#1,buffer+30	;gapackt
	bne	nopic_er5	;dann fehler	
	move.l	buffer+4,piclenght ;länge eintragen
	move.w	buffer+22,pichigh  ;höhe eintragen

	moveq	#104,d3		;länge der bytes
	move.l	#buffer,d2	;nach buffer
	jsr	picread		;lese
	cmp.l	#"CMAP",buffer  ;cmap exists ?
	bne	nopic_er6	;wenn nicht
	bsr	recodecolors	;farben auscodieren
	clr.l	d3		;Müll löschen
nochnicht:
	moveq	#1,d3		;1 bytes
	move.l	#buffer,d2	;nach buffer
	jsr	picread		;lese es
	cmp.b	#"B",buffer	;suche nach B
	bne	nochnicht	;wenn nicht
	moveq	#1,d3		;1 bytes
	move.l	#buffer,d2	;nach buffer
	jsr	picread		;lese es
	cmp.b	#"O",buffer	;suche nach O
	bne	nochnicht	;wenn nicht
	moveq	#1,d3		;1 bytes
	move.l	#buffer,d2	;nach buffer
	jsr	picread		;lese es
	cmp.b	#"D",buffer	;suche nach D
	bne	nochnicht	;wenn nicht
	moveq	#1,d3		;1 bytes
	move.l	#buffer,d2	;nach buffer
	jsr	picread		;lese es
	cmp.b	#"Y",buffer	;suche nach Y
	bne	nochnicht	;wenn nicht

	moveq	#4,d3		;4 bytes
	move.l	#buffer,d2	;nach buffer
	jsr	picread		;lese es
	bsr	repack		;repackit
	rts			;tschüss

repack:
	move.l	picmem,d6	;nehme add des
	move.w	pichigh,d0	;ziel bildschirmes
	and.l	#$ffff,d0	;und mache daraus
	mulu	#5*40,d0	;die end
	add.l	d0,d6		;adresse
	move.l	picmem,a3	;nehme zielscreen
nextline:
	cmp.l	d6,a3		;vergleiche ob schon fertig	
	beq	repacked	;wenn ja
	moveq	#1,d3		;1 bytes
	move.l	#buffer,d2	;nach buffer
	jsr	picread		;lese es
	cmp.b	#128,buffer	;ist es kleiner als 128 
	bcs	under		;dann verzweige
	cmp.b	#128,buffer	;grösser
	bcc	upper		;dann verzweige
	jmp	nextline	;ansonsten nähste linie
repacked:
	rts			;das ende tschüüs
upper:
	clr.l	d4		;lösche müll
	not.b	buffer		;inventiere
	add.b	#1,buffer	;addiere eins dazu
	move.b	buffer,d4	;nach d4
	moveq	#1,d3		;1 bytes
	move.l	#buffer,d2	;nach buffer
	jsr	picread		;lese es
upper_l: move.b	buffer,(a3)+	;stecke es in den mem
	dbra	d4,upper_l	;schon genug wenn nicht dann ...
	jmp	nextline	;nächste linie

under:	clr.l	d3		;lösche müll
	add.b	#1,buffer	;addiere eins zum buffer
	move.b	buffer,d3	;anzahl der bytes nach d3
	move.l	d3,d4		;und nach d4
	move.l	a3,d2		;buffer nach d2	
	jsr	picread		;lese es
	add.l	d4,a3		;erhöhe nachste adresse
	jmp	nextline	;nächste linie

recodecolors:
	lea	buffer,a0	;nehme add von buffer	
	lea	colors,a1	;nehme add von farben buffer
	add.l	#8,a0		;addiere 8 wegen cmap etc.
	moveq	#31,d0		;32 farben
makecolorsok:
	clr.w	d1		;lösche diesem Müll
	clr.w	d2		;lösche diesem Müll
	clr.w	d3		;lösche diesem Müll
	move.b	(a0)+,d1	;nehme rot
	move.b	(a0)+,d2	;nehme grün
	move.b	(a0)+,d3	;und blau
	lsl.w	#4,d1		;farbe rot nach links
	lsr.w	#4,d3		;farbe blau nach rechts
	or.w	d2,d1		;verbinden
	or.w	d3,d1		;verbinden
	move.w	d1,(a1)+	;rein damit
	dbra	d0,makecolorsok ;zurück	
	rts			;tschüüs
		
nopic_er1:
	move.w	#$f00,$dff180
	move.w	#3,error_mode	;kein bild error
	rts			;tschüüs
nopic_er2:
	move.w	#$f0f,$dff180
	move.w	#4,error_mode	;kein bitmapheader
	rts			;tschüüs
nopic_er3:
	move.w	#$fff,$dff180
	move.w	#5,error_mode	;größe stimmt nicht
	rts			;tschüüs
nopic_er4:
	move.w	#$f,$dff180
	move.w	#6,error_mode	;bitplanes stimmen nicht
	rts			;tschüüs
nopic_er5:
	move.w	#$f0,$dff180
	move.w	#7,error_mode	;keine gepackte datei
	rts			;tschüüs
nopic_er6:
	move.w	#$f0,$dff180
	move.w	#8,error_mode	;keine cmap gefunden
	rts			;tschüüs
picread:
	move.l	handle,d1	;handle nehmen
	jsr	-42(a6)		;lese es
	rts

buffer:		blk.b	104	;platz
piclenght:	dc.l	0	;bildlänge
pichigh:	dc.w	0	;bildgrösse
picmem:		dc.l	$70000	;da soll das bild hin
colors:		blk.b	64	;colors of pic

*********************** Dir rout ****************************

dir_loaddir:
	lea	$7d000,a3		;nehmen des file buffers
	lea	$7cb00,a4		;nehmen des index buffers
	clr.w	dir_errors		;errorhandler löschen
	bsr	dir_opendos		;doslib öffnen
	bsr	dir_takekey		;ist drive da	?
	tst.w	dir_errors		;schon fehler
	bne	dir_thats		;wenn ja dann abbruch
	bsr	dir_currentdir
	bsr	dir_suckdir		;auslesen	
	tst.w	dir_errors		;schon fehler
	bne	dir_thats		;wenn ja dann abbruch
	bsr	dir_takedirname		;nehmen des dir namens
	bsr	dir_takefilename
	rts
dir_thats:
	move.w	#$fff,$dff180		;flesh
	rts
	
************* öffnen der dos.library ************************

dir_opendos:
	lea	dir_dosname,a1		;dosname nach a1
	moveq	#0,d0			;version egal
	move.l	4,a6			;execbase nach a6
	jsr	-552(a6)		;öffne
	move.l	d0,dir_dosbase		;dosbase sichern
	rts				;tschüss

************* nehmen des keys für das drive ****************

dir_takekey:
	move.l	dir_dosbase,a6		;dosbase nehmen
	move.l	#dir_path,d1		;path nehmen
	move.l	#-2,d2			;lesen
	jsr	-$54(a6)		;lock
	move.l	d0,dir_filelock		;sicher des locks
	bne	dir_takekey_ok1		;ungleich 0 dann ok
	move.w	#1,dir_errors		;error einschreiben
dir_takekey_ok1:
	rts				;und tschüss

*************** current dir ********************************

dir_currentdir:
	move.l	dir_dosbase,a6		;dosbase nehmen
	move.l	dir_filelock,d1		;lock nehmen
	jsr	-126(a6)		;lock
	rts
	
************** auslesen der dir ****************************

dir_suckdir:
	move.l	dir_dosbase,a6		;dosbase nehmen
	move.l	dir_filelock,d1		;filelock nehmen
	move.l	#dir_fileinfoblock,d2   ;add des fileinfoblocks
	jsr	-$66(a6)		;takeit
	tst.l	d0			;error ?
	bne	dir_suck_dir_ok1	;kein fehler dann jmp
	move.w	#1,dir_errors	
dir_suck_dir_ok1:
	rts

************** nehmen des dir namens ************************

dir_takedirname:
	add.w	#1,dir_filecounter
	clr.w	d0			;zähler killen
	lea	dir_fileinfoblock,a2	;nehmen der add
	add.l	#6,a2
	cmp.w	#0,(a2)
	bne	dir_takedirname_l2
	add.l	#2,a2			;addiere an die richtige stelle
dir_takedirname_l2:
	cmp.l	#-3,112(a2)
	bne	dir_takedirname_e2
	move.b	#"F",(a4)+
	bra	dir_takedirname_l1
dir_takedirname_e2:
	move.b	#"D",(a4)+	
dir_takedirname_l1:
	cmp.b	#0,(a2)			;wenn im namen 0 dann raus
	beq	dir_takedirname_e1	
	move.b	(a2)+,(a3)+		;copiere von a2 nach a3
	add.w	#1,d0			;zähler erhöhen
	bra	dir_takedirname_l1	;zurück
dir_takedirname_e1:
	move.b	#0,(a3)+
	rts				;fertig ? tschüss
			
************** nehmen der restlichen namen ******************

dir_takefilename:
	move.l	dir_dosbase,a6		;dosbase nehmen
	move.l	dir_filelock,d1		;filelock nehmen
	move.l	#dir_fileinfoblock,d2	;add des fileinfoblocks
	jsr	-$6c(a6)		;takeit
	tst.l	d0			;ende ?
	beq	dir_takefiles_e1	;wenn ja 
	bsr	dir_takedirname		;richtig copy
	bra	dir_takefilename	;nächstes
dir_takefiles_e1:
	rts				;wenn ende dann tschüss

***************** diverse zeiger & datas ********************

dir_filelock:		dc.l	0
dir_errors:		dc.w	0
dir_FileInfoBlock:	blk.b	260,0
dir_dosbase:		dc.l	0
dir_dosname:		dc.b	"dos.library",0
dir_path:		dc.b	"df0:",0
			blk.b	16,0
	even
dir_filecounter:	dc.w	0
	even


************************ sort routine *************************

sortfiles:
	move.w	dir_filecounter,d3	;anzahl
	lea	$7d000,a0		;anfangadresse
	lea	$7d800,a1		;ziel
sortfilesnext:
	move.w	#0,d0			;höhstens 19 zeichen
copynextletter:
	cmp.b	#0,(a0)			;ist schon ende
	beq	addmore			;wenn dan tue was anderes
	move.b	(a0)+,(a1)+		;copiere
	add.w	#1,d0			;ist es
	cmp.w	#19,d0			;schon 19 letter breit
	bne	copynextletter		;nächstes zeichen
maketonull:
	cmp.b	#0,(a0)+
	bne	maketonull
	sub.l	#1,a0
	bra	addnothing
addmore:
	move.w	#18,d1			;nehme 19
	sub.w	d0,d1			;subtrahiere
	cmp.w	#0,d1			;vergleiche null ?
	beq	addnothing		;wenn ja nur eine null
next32:
	move.b	#32,(a1)+		;ansonstens fülle mit
	dbf	d1,next32		;nullen den rest aus
addnothing:
	move.b	#0,(a1)+		;hinten noch eine null
	sub.w	#1,d3			;sind es schon alle ?
	beq	aus			;wenn ja dann raus
	add.l	#1,a0			;ansonsten
	bra	sortfilesnext		;subtrahiere um ein und zurück
aus:
	rts				;tschüss
		

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


************************* key device ***********************

*********************************
*  key routine aufrufen         *
*  der code ist in d0           *
*********************************

keyrout:
	move.b	$bfec01,d0		;code einlesen
	ror.b	#1,d0			;rechts schieben	
	not.b	d0			;inventieren
	cmp.b	#$61,d0
	bne	ganzn			;* prüfern ob shift taste 
	move.l	#`shft`,keymode		; gedrückt oder losgelassen
ganzn:	cmp.b	#$60,d0
	bne	ganzn3
	move.l	#`shft`,keymode
ganzn3:	
	cmp.b	#$61+$80,d0
	bne	ganzn2
	clr.l	keymode
ganzn2:	cmp.b	#$60+$80,d0
	bne	ganzn4
	clr.l	keymode
ganzn4:	
	btst	#7,d0
	bne	ganzn5
	clr.b	oldkey
ganzn5:	and.b	#%01111111,d0
	lea	keys,a0			;adresse der keys nehmen
	cmp.l	#`shft`,keymode		;vorher shift gedrückt
	bne	noshift			;wenn kein shift gedrückt
	lea	shiftkeys,a0		;wenn shift dann nehme shift codes
noshift:
	and.l	#$ff,d0			;schrott weg
	add.w	d0,a0			;keys dazuaddieren
	move.b	(a0),d0			;und zeigen
	cmp.b	#8,d0			; diverse sheisse
	beq	keyrout			; wenn shift
	move.b	oldkey,d1		;gedrückt dann
	move.b	d0,oldkey		;nicht raus
	cmp.b	d0,d1
	beq	keyrout
	move.l	#40000,d2
ganzn7:	dbf	d2,ganzn7
	rts	
	
	
keymode:	dc.l	0
oldkey:		dc.b	$b
	
keys:
	dc.b	"`1234567890ß \  qwertzuiopü+"
	dc.b	" 123asdfghjklöä#"
	dc.b	" 456<yxcvbnm,.- .789"
	dc.b	" ",$c," ",$b,$a,2,3,"  +-*",4,5,6,7
	dc.b	"                ",8,8,9,"      "
shiftkeys:
	dc.b	"`!",34,"§$%&/()=ß \  QWERTZUIOPÜ*"
	dc.b	" 123ASDFGHJKLÖÄ#"
	dc.b	" 456>YXCVBNM;:_ .789"
	dc.b	" ",$c," ",$b,$a,2,3,"  +-*",4,5,6,7
	dc.b	"                ",8,8,9,"      "

*********************************************************************
	even
	

************** copper-control ************************

instcop1:

********* sprites installieren ***********************

	move.l	#mousecursor,d0
	lea	spr5h,a0
	bsr	moveitin

********* bitplanes installieren *********************

	
	move.l	menumem1,d0
	lea	btp1h,a0
	bsr	moveitin
	add.l	#40,d0
	lea	btp2h,a0
	bsr	moveitin
	add.l	#40,d0
	lea	btp3h,a0
	bsr	moveitin
	add.l	#40,d0
	lea	btp4h,a0
	bsr	moveitin
	add.l	#40,d0
	lea	btp5h,a0
	bsr	moveitin
		
	move.w	#4*40,btmod1+2		;modulo werte rein
	move.w	#4*40,btmod2+2		;modulo werte rein

	move.l	#copperlist,$dff080
	rts



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

moveitin:
	swap	d0		;longword rotate
	move.w	d0,2(a0)	;lowword in 
	swap	d0		;richtig biegen
	move.w	d0,6(a0)	;lowword in
	rts			;tschüss

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

copperlist:

********************** bigwindow 

spr1h:	dc.w	$120,0
spr1l:	dc.w	$122,0
spr2h:	dc.w	$124,0
spr2l:	dc.w	$126,0
spr3h:	dc.w	$128,0
spr3l:	dc.w	$12a,0
spr4h:	dc.w	$12c,0
spr4l:	dc.w	$12e,0
spr5h:	dc.w	$130,0
spr5l:	dc.w	$132,0
spr6h:	dc.w	$134,0
spr6l:	dc.w	$136,0
spr7h:	dc.w	$138,0
spr7l:	dc.w	$13a,0
spr8h:	dc.w	$13c,0
spr8l:	dc.w	$13e,0
col0:	dc.w	$180,0
col1:	dc.w	$182,0
col2:	dc.w	$184,0
col3:	dc.w	$186,0
col4:	dc.w	$188,0
col5:	dc.w	$18a,0
col6:	dc.w	$18c,0
col7:	dc.w	$18e,0
col8:	dc.w	$190,0
col9:	dc.w	$192,0
col10:	dc.w	$194,0
col11:	dc.w	$196,0
col12:	dc.w	$198,0
col13:	dc.w	$19a,0
col14:	dc.w	$19c,0
col15:	dc.w	$19e,0
col16:	dc.w	$1a0,0
col17:	dc.w	$1a2,0
col18:	dc.w	$1a4,0
col19:	dc.w	$1a6,0
col20:	dc.w	$1a8,0
col21:	dc.w	$1aa,0
col22:	dc.w	$1ac,0
col23:	dc.w	$1ae,0
col24:	dc.w	$1b0,$505
col25:	dc.w	$1b2,$a00
col26:	dc.w	$1b4,$c00
col27:	dc.w	$1b6,$800
col28:	dc.w	$1b8,$eb0
col29:	dc.w	$1ba,$444
col30:	dc.w	$1bc,$555
col31:	dc.w	$1be,$777
diwstr: dc.w	$008e,$3081
diwstp:	dc.w	$0090,$30c1
ddfstr: dc.w	$0092,$0038
ddfstp: dc.w	$0094,$00d0
btp1h:	dc.w	$00e0,$0000
btp1l:	dc.w	$00e2,$0000
btp2h:	dc.w	$00e4,$0000
btp2l:	dc.w	$00e6,$0000
btp3h:	dc.w	$00e8,$0000
btp3l:	dc.w	$00ea,$0000
btp4h:	dc.w	$00ec,$0000
btp4l:	dc.w	$00ee,$0000
btp5h:	dc.w	$00f0,$0000
btp5l:	dc.w	$00f2,$0000
btcon0:	dc.w	$100,$5200
btcon1:	dc.w	$102,$0000
btcon2:	dc.w	$104,$00df
btmod1:	dc.w	$108,$0000
btmod2:	dc.w	$10a,$0000
	
	dc.w	$ffe1,$fffe
	dc.w	$0a09,$fffe

*************************** small window

btp1h2:	dc.w	$00e0,$0000
btp1l2:	dc.w	$00e2,$0000
btp2h2:	dc.w	$00e4,$0000
btp2l2:	dc.w	$00e6,$0000
btp3h2:	dc.w	$00e8,$0000
btp3l2:	dc.w	$00ea,$0000
btp4h2:	dc.w	$00ec,$0000
btp4l2:	dc.w	$00ee,$0000
btp5h2:	dc.w	$00f0,$0000
btp5l2:	dc.w	$00f2,$0000
bt1cn0:	dc.w	$100,$0000

	dc.w	$ffff,$fffe

********************* irq	**********************************

instirq:
	move.l	$6c,oldirq		;altes irq retten
	move.l	#newirq,$6c		;neuesirq rein
	rts				;tschüss

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

instoldirq:				
	move.l	oldirq,$6c		;altenirq nach irq
	rts				;zurück
	
******************************************************************

newirq:
	movem.l	d0-d7/a0-a6,-(a7)	;register retten
	bsr	takemcoos		;irq1
	movem.l	(a7)+,d0-d7/a0-a6	;register zurück
	dc.w	$4ef9			;code für jmp
oldirq:	dc.l	0			;adresse des alten irqs

********************* take old copper ****************************

takeoldcop:
	move.l	4,a6			;nehmen der exec
	lea	gfxname,a1		;nehmen des gfxnames
	moveq	#0,d0			;version egal
	jsr	-552(a6)		;open it
	move.l	d0,gfxbase		;sicher
	add.l	#38,d0			;auf richtige adresse biegen
	move.l	d0,a0			;nach a0
	move.l	(a0),oldcop		;alte copperlist
	rts				;tschüss
	
gfxbase:	dc.l	0
oldcop:		dc.l	0
gfxname:	dc.b	"graphics.library",0
	even	
******************************************************************

instoldcop:
	move.l	oldcop,$dff080		;alten copper wieder rein
	rts
	
******************** mouse rout **********************************

takemcoos:
	move.b	$dff00a,d0
	lea	oldxmpos(pc),a0
	move.b	(a0),d1
	move.b	d0,(a0)
	sub.b	d0,d1
	beq	mouseback
	bmi	mouseup
	bpl	mousedown
mouseback:
	move.b	$dff00b,d0
	lea	oldympos(pc),a0
	move.b	(a0),d1
	move.b	d0,(a0)
	sub.b	d0,d1
	beq	mouseback2
	bmi	mouseleft
	bpl	mouseright
mouseback2:
	btst	#6,$bfe001		;prüfen des buttons
	bne	nobutton		;wenn nicht
	move.l	mousecursor,$70000
	move.l	mousemask,a0		;welche maske
backcoos:
	cmp.l	#-1,(a0)		;schon ende
	beq	nobutton		;wenn ja dann raus
	move.w	mousecursor,d0		;nehmen der aktuellen mouse coos
	move.w	(a0),d1			;nehmen der zu prüfenden coos
	cmp.b	d1,d0			;vergleichen
	bcs	add8			;stimmt nicht 
	lsr.w	#8,d0			;zwei stellen nach 
	lsr.w	#8,d1			;rechts schieben
	cmp.b	d1,d0			;vergleichen
	bcs	add8			;wenn nicht
	move.w	mousecursor,d0		;nehmen der aktuellen mouse coos
	move.w	2(a0),d1		;nehmen der zu prüfenden coos
	cmp.b	d1,d0			;vergleichen
	bcc	add8			;stimmt nicht 
	lsr.w	#8,d0			;zwei stellen nach 
	lsr.w	#8,d1			;rechts schieben
	cmp.b	d1,d0			;vergleichen
	bcc	add8			;wenn nicht
	move.l	4(a0),routadd		;alles klar ? dann dahin
nobutton:
	rts				;tschüss
add8:
	add.l	#8,a0			;addiere neu
	bra	backcoos		;zurück


mouseup:
	cmp.b	#"n",mode_1
	beq	mouseup_e2
	cmp.b	#$2e,mousecursor
	bcs	mouseup_e2
	move.b	#$2f,mousecursor
	bra	mouseback
mouseup_e2:
	neg	d1
	add.b	d1,mousecursor
	bcc	mouseup_e0
	bset	#2,mousecursor+3
	bset	#1,mousecursor+3
	move.b	#"o",mode_1
mouseup_e0:
	cmp.b	#$f8,mousecursor
	bcs	mouseup_e1
	bset	#1,mousecursor+3
mouseup_e1:

	move.b	mousecursor,d1
	add.b	#8,d1
	move.b	d1,mousecursor+2
	bra	mouseback


mousedown:
	cmp.b	#"o",mode_1
	beq	mousedown_e2
	cmp.b	#$31,mousecursor
	bcc	mousedown_e2
	move.b	#$30,mousecursor
	move.b	#$38,mousecursor+2
	bra	mouseback
mousedown_e2:
	sub.b	d1,mousecursor
	bcc	mousedown_e0
	bclr	#2,mousecursor+3
	move.b	#"n",mode_1
mousedown_e0:
	cmp.b	#"n",mode_1
	bne	mousedown_e1
	cmp.b	#$f8,mousecursor
	bcc	mousedown_e1
	bclr	#1,mousecursor+3
mousedown_e1:
	move.b	mousecursor,d1
	add.b	#8,d1
	move.b	d1,mousecursor+2
	bra	mouseback

mouseleft:
	neg.b	d1
	and.l	#$ff,d1
	ror.w	#1,d1
	add.b	d1,mousecursor+1
	and.l	#$ff00,d1
	rol.w	#1,d1
	bne	notever
	bset	#0,mousecursor+3
	bra	mouseback2
notever: bchg	#0,mousecursor+3
	bne	rightye
	bra	mouseback2
rightye: add.b	#1,mousecursor+1
	bra	mouseback2

mouseright:
	and.l	#$ff,d1
	ror.w	#1,d1
	sub.b	d1,mousecursor+1
	and.l	#$ff00,d1
	rol.w	#1,d1
	bne	notever2
	bset	#0,mousecursor+3
	bra	mouseback2
notever2: bchg	#0,mousecursor+3
	beq	rightye2
	bra	mouseback2
rightye2: sub.b	#1,mousecursor+1
	bra	mouseback2


oldxmpos:	dc.b	0
oldympos:	dc.b	0
mousemask:	dc.l	0
mode_1:		dc.b	"n"
	
	even


mousecursor:
	dc.w	$8080,$8800
	dc.w	%1000000000000000,%1111110000000000
	dc.w	%1111000000000000,%1000100000000000
	dc.w	%1110000000000000,%1001000000000000
	dc.w	%1111000000000000,%1010100000000000
	dc.w	%1101100000000000,%1101010000000000
	dc.w	%1000100000000000,%1000100000000000
	dc.w	%0000000000000000,%0000000000000000
	dc.w	%0000000000000000,%0000000000000000
	dc.w	%0000000000000000,%0000000000000000
	dc.w	0,0
mousecursor2:
	dc.w	$8080,$8200
	dc.w	0,%1111110000000000
	dc.w	%1111110000000000,0
	dc.w	0,0
	
********************** print routine **************************

************** printen des strings *****************************

printit:
	movem.l	d0-d7/a0-a6,-(a7)
	and.l	#$ffff,d0	;weg anden
	and.l	#$ffff,d1	;weg anden
	move.l	menumem1,a1 ;nehmen der menu adresse
	add.l	d0,a1		;zu anfangs adresse
	mulu	#5*40,d1	;multiplizieren
	add.l	d1,a1		;addieren
letter_loop:
	move.b	(a0)+,d0	;nehmen des ersten buchstaben
	cmp.b	#0,d0		;solange keine null gefunden
	beq	printit_end	;dann weiter sonst ende
	bsr	researchchar	;suchen des richtigen chars
	bsr	copychar	;copieren des chars	
	add.l	#1,a1		;addieren eins zum ziel
	bra	letter_loop 	;nächstes
printit_end:
	movem.l	(a7)+,d0-d7/a0-a6
	rts			;tschüüs


researchchar:
	move.l	charmem1,a3	;nehmen der zeichensatz adresse
	lea	charmask,a2	;nehmen der zeichensatz maske
nextletter:
	move.b	(a2),d1		;nehmen des buchstaben in der
	cmp.b	d0,d1		;maske - vergleichen
	beq	charfound	;wenn gefunden dann ok
	cmp.b	#$ff,d1		;vergleiche maske mit $ff
	bne	no_ff		;wenn nicht ..	
	sub.l	#40,a3
	add.l	#6*40,a3	;startadresse für char
	add.l	#1,a2		;addieren eins zum add
	bra	nextletter	;nähster buchstabe
no_ff:	cmp.b	#0,d1		;schon ende ?
	beq	charfound	;egal was hauptsache raus
	add.l	#1,a2		;eins zu a2
	add.l	#1,a3		;und zu a1 addieren
	bra	nextletter 	;nähster buchstabe
charfound:
	rts			;wenn buchstabe gefunden	dann tschüüs
copychar:
	jsr	blitterwait
	move.b	000(a3),d3
	eor.b	#$ff,d3
	move.b	d3,000*5+40(a1)	
	move.b	d3,000*5+80(a1)	
	move.b	040(a3),d3
	eor.b	#$ff,d3
	move.b	d3,040*5+40(a1) 
	move.b	d3,040*5+80(a1)	
	move.b	080(a3),d3
	eor.b	#$ff,d3
	move.b	d3,080*5+40(a1)
	move.b	d3,080*5+80(a1)	
	move.b	120(a3),d3
	eor.b	#$ff,d3
	move.b	d3,120*5+40(a1)
	move.b	d3,120*5+80(a1)	
	move.b	160(a3),d3
	eor.b	#$ff,d3
	move.b	d3,160*5+40(a1)
	move.b	d3,160*5+80(a1)	
	move.b	200(a3),d3
	eor.b	#$ff,d3
	move.b	d3,200*5+40(a1)
	move.b	d3,200*5+80(a1)	
	rts	
	
charmask:
	dc.b	"abcdefghijklmnopqrstuvwxyz0123456789:/_.",$ff
	dc.b	"?!",34,"$()=+*><,;#`ABCDEFGHIJKLMNOPQRSTUVWXY",$ff
	dc.b	"Z ",0

****************************** ende **************************************

	even
	
******************** masken ***********************************

menu1mask:
	dc.l	$31b939df,point	
	dc.l	$3cb944df,line
	dc.l	$47b94fdf,box
	dc.l	$52b95adf,circle
	dc.l	$5db965df,diskopr
	dc.l	$68b970df,diskopm
	dc.l	$73b97bdf,pic1
	dc.l	$7eb986df,pic2
	dc.l	$89b991df,edit
	dc.l	$94b99cdf,size
	dc.l	$9fb9a7df,clear
	dc.l	$aab9b2df,about
	dc.l	$b5b9bddf,exit
	dc.l	$c0d5c8d9,pfxup
	dc.l	$c0dbc8df,pfxdown
	dc.l	$cbd5d3d9,pfyup
	dc.l	$cbdbd3df,pfydown
	dc.l	-1		
menu2mask:
	dc.l	$ca51d269,m2_load
	dc.l	$ca6bd283,m2_save
	dc.l	$d551dd69,m2_delete
	dc.l	$d56bdd83,m2_cancle
	dc.l	$ca85d293,m2_df0
	dc.l	$ca94d299,m2_df1
	dc.l	$ca9bd2a0,m2_df2
	dc.l	$caa1d2a6,m2_df3
	dc.l	$d585dd95,m2_ram					
	dc.l	$d596dda6,m2_dh0
	dc.l	$b463bca6,m2_path
	dc.l	$bf63c7a6,m2_file
	dc.l	$3ca244a6,m2_up
	dc.l	$a9a2b1a6,m2_down
	dc.l	$49544f9e,m2_file1
	dc.l	$5054569e,m2_file2
	dc.l	$57545d9e,m2_file3
	dc.l	$5e54649e,m2_file4
	dc.l	$65546b9e,m2_file5
	dc.l	$6c54729e,m2_file6
	dc.l	$7354799e,m2_file7
	dc.l	$7a54809e,m2_file8
	dc.l	$8154879e,m2_file9
	dc.l	$88548e9e,m2_file10
	dc.l	$8f54959e,m2_file11
	dc.l	$96549c9e,m2_file12
	dc.l	$9d54a39e,m2_file13
	dc.l	$a454aa9e,m2_file14
	dc.l	$ab54b19e,m2_file15
	dc.l	-1
menu3mask:
	dc.l	$7981819f,m3_yea
	dc.l	$79a081be,m3_oops
	dc.l	-1
			
********************* routinen1 ********************************

********************* copy routine ****************************

copydiskop:
	lea	$dff000,a5
	bsr	blitterwait		;blitter fertig ?
	move.w	#$09f0,$40(a5)		;bltcon0
	move.w	#$0000,$42(a5)		;bltcon1
	move.w	#$ffff,$44(a5)		;begin mask
	move.w	#$ffff,$46(a5)		;end mask
	move.l	menumem2,$50(a5)	;quelle
	move.l	menumem1,a0		;ziel
	add.l	#10*40*5+4,a0		;richtig 
	move.l	a0,$54(a5)		;destation
	move.w	#00,$64(a5)		;modulo für source
	move.w	#18,$66(a5)		;modulo für des
	move.w	#166*5*64+11,$58(a5)	;start	
	rts				;tschüss

savediskop:
	lea	$dff000,a5
	bsr	blitterwait		;blitter fertig ?
	move.w	#$09f0,$40(a5)		;bltcon0
	move.w	#$0000,$42(a5)		;bltcon1
	move.w	#$ffff,$44(a5)		;begin mask
	move.w	#$ffff,$46(a5)		;end mask
	move.l	menubuf2,$54(a5)	;ziel
	move.l	menumem1,a0		;quelle
	add.l	#10*40*5+4,a0		;richtig 
	move.l	a0,$50(a5)		;destation
	move.w	#18,$64(a5)		;modulo für source
	move.w	#0,$66(a5)		;modulo für des
	move.w	#166*5*64+11,$58(a5)	;start	
	rts				;tschüss

copysavediskop:
	lea	$dff000,a5
	bsr	blitterwait		;blitter fertig ?
	move.w	#$09f0,$40(a5)		;bltcon0
	move.w	#$0000,$42(a5)		;bltcon1
	move.w	#$ffff,$44(a5)		;begin mask
	move.w	#$ffff,$46(a5)		;end mask
	move.l	menubuf2,$50(a5)	;quelle
	move.l	menumem1,a0		;ziel
	add.l	#10*40*5+4,a0		;richtig 
	move.l	a0,$54(a5)		;destation
	move.w	#00,$64(a5)		;modulo für source
	move.w	#18,$66(a5)		;modulo für des
	move.w	#166*5*64+11,$58(a5)	;start	
	rts				;tschüss

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

copyyesno:
	lea	$dff000,a5
	bsr	blitterwait		;blitter fertig ?
	move.w	#$09f0,$40(a5)		;bltcon0
	move.w	#$0000,$42(a5)		;bltcon1
	move.w	#$ffff,$44(a5)		;begin mask
	move.w	#$ffff,$46(a5)		;end mask
	move.l	menumem3,$50(a5)	;quelle
	move.l	menumem1,a0		;ziel
	add.l	#60*40*5+16,a0		;richtig 
	move.l	a0,$54(a5)		;destation
	move.w	#00,$64(a5)		;modulo für source
	move.w	#24,$66(a5)		;modulo für des
	move.w	#24*5*64+8,$58(a5)	;start	
	rts				;tschüss

saveyesno:
	lea	$dff000,a5
	bsr	blitterwait		;blitter fertig ?
	move.w	#$09f0,$40(a5)		;bltcon0
	move.w	#$0000,$42(a5)		;bltcon1
	move.w	#$ffff,$44(a5)		;begin mask
	move.w	#$ffff,$46(a5)		;end mask
	move.l	menubuf3,$54(a5)	;ziel
	move.l	menumem1,a0		;quelle
	add.l	#60*40*5+16,a0		;richtig 
	move.l	a0,$50(a5)		;destation
	move.w	#24,$64(a5)		;modulo für source
	move.w	#0,$66(a5)		;modulo für des
	move.w	#24*5*64+8,$58(a5)	;start	
	rts				;tschüss

copysaveyesno:
	lea	$dff000,a5
	bsr	blitterwait		;blitter fertig ?
	move.w	#$09f0,$40(a5)		;bltcon0
	move.w	#$0000,$42(a5)		;bltcon1
	move.w	#$ffff,$44(a5)		;begin mask
	move.w	#$ffff,$46(a5)		;end mask
	move.l	menubuf3,$50(a5)	;quelle
	move.l	menumem1,a0		;ziel
	add.l	#60*40*5+16,a0		;richtig 
	move.l	a0,$54(a5)		;destation
	move.w	#00,$64(a5)		;modulo für source
	move.w	#24,$66(a5)		;modulo für des
	move.w	#24*5*64+8,$58(a5)	;start	
	rts				;tschüss
	
********************* warten bis blitter fertig ***************
	
blitterwait:
	btst	#14,$dff002
	bne	blitterwait
	rts

********************* warten bis maus losgelassen *************

mousewait:
	btst	#6,$bfe001
	beq	mousewait
	rts
			
********************* mousepointer 2 aus machen ***************

mousepointer2out:
	move.l	#0,d0				;schreiben
	lea	spr6h,a0			;schreiben
	bsr	moveitin			;machen
	rts
	
********************* point routine ***************************
point:
	move.w	#$f00,$dff180
	move.l	#norout_j1,routadd

	jmp	capd

********************* line routine ****************************
line:
********************* box routine *****************************
box:
********************* circle routine **************************
circle:
********************* diskopr routine *************************
diskopr:
	bsr	savediskop
	bsr	copydiskop
	jsr	reprodevicename
	jsr	reprofileandpath
	jsr	reprofiles
	move.l	#menu2mask,mousemask ;maske installieren
	move.l	#norout_j1,routadd

	jmp	capd

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

pathopr:	dc.b	"                ",0
fileopr:	dc.b	"                ",0
	even
********************* repro path and file *********************

reprodevicename:
	
	move.w	#5,d0
	move.w	#14,d1
	lea	$7d800,a0
	jsr	printit
	rts
	
reprofileandpath:

	move.w	#9,d0
	move.w	#134,d1
	lea	pathopr,a0
	jsr	printit
	move.w	#9,d0
	move.w	#145,d1
	lea	fileopr,a0
	jsr	printit
	rts

reprof:	macro	
	move.w	d2,d1
	move.w	#5,d0
	jsr	printit
	add.l	#20,a0
	add.l	#7,d2
	endm
	
	
reprofiles:
	movem.l	d0-d7/a0-a6,-(a7)
	clr.l	d0
	move.w	reprop,d0	;repropointer nehmen
	mulu	#20,d0		;mal 30
	lea	$7d800+20,a0	;adresse der files
	add.l	d0,a0		;plusnehmen
	move.w	#25,d2
	reprof
	reprof
	reprof
	reprof
	reprof
	reprof
	reprof
	reprof
	reprof
	reprof
	reprof
	reprof
	reprof
	reprof
	reprof
	movem.l	(a7)+,d0-d7/a0-a6	
	rts
clearfilebuffer:
	move.l	#16,d0			;sechszehn mal müßten reichen !
	lea	$7d800,a1		;destation
nextblanco:
	lea	blancobuffer,a0		;buffer nehmen	
	move.l	(a0)+,(a1)+		;copieren von 4
	move.l	(a0)+,(a1)+		;nächstes
	move.l	(a0)+,(a1)+		;dann wieder
	move.l	(a0)+,(a1)+		;und das letze
	move.l	(a0)+,(a1)+		;und das letze
	dbf	d0,nextblanco		;nächstes
	rts
		
***************************************************************

reprop:		dc.w	0
blancobuffer:	dc.b	"                   ",0

********************* diskopm routine *************************
diskopm:
********************* 1.pic routine ***************************
pic1:
********************* 2.pic routine ***************************
pic2:
********************* edit routine ****************************
edit:
********************* size routine ****************************
size:
********************* clear routine ***************************
clear:
********************* about routine ***************************
about:
********************* exit routine ****************************
exit:
	move.l	#"exit",yesnomode
	bsr	saveyesno
	bsr	copyyesno
	move.l 	#menu3mask,mousemask
	move.l	#norout_j1,routadd
	jmp	capd
	
********************* pfx verstell routine ********************
pfxup:
pfxdown:
********************* pfy verstell routine ********************
pfyup:
pfydown:
rts		

********************* routinen 2 ******************************

********************* lade routine ****************************
m2_load:
********************* save routine ****************************
m2_save:
********************* lösch routine ***************************
m2_delete:
********************* raus routine ****************************

m2_cancle:
	jsr	mousepointer2out		;pointeraus
	move.l	#norout_j1,routadd
	move.l	#menu1mask,mousemask ;maske installieren
	bsr	copysavediskop
	jmp	capd

********************* df0 *************************************
m2_df0:
	move.l	#`df0:`,dir_path
	move.b	#0,dir_path+4
	clr.w	dir_filecounter
	clr.w	reprop
	jsr	mousewait
	jsr	clearfilebuffer
	move.l	#`df0:`,pathopr
	move.l	#`    `,pathopr+4
	move.l	#`    `,pathopr+8
	move.l	#`    `,pathopr+12
	jsr	reprofileandpath
	move.l	#norout_j1,routadd
	move.l	#menu2mask,mousemask ;maske installieren
	jsr	dir_loaddir
	jsr	sortfiles
	jsr	reprodevicename
	jsr	reprofiles
	jmp	capd
	
********************* df1 *************************************
m2_df1:
********************* df2 *************************************
m2_df2:
********************* df3 *************************************
m2_df3:
********************* ram *************************************
m2_ram:
********************* dh0 *************************************
m2_dh0:
********************* path routine ****************************

m2_path:
	move.l	#$bb64bd00,mousecursor2		;mouse cursor positionieren
	move.l	#mousecursor2,d0		;schreiben
	lea	spr6h,a0			;schreiben
	bsr	moveitin			;machen
	lea	pathopr,a6			;nehmen der des addresse
m2_path_l1:
	jsr	keyrout				;keyroutine
	cmp.b	#$a,d0				;return ?
	beq	m2_path_j1			;wenn ja dann raus
	cmp.b	#$c,d0				;backspace ?
	bne	m2_path_j3			;wenn ja dann
	move.b	#32,(a6)			;leerzeichen
	cmp.l	#pathopr,a6			;zu weit links
	beq	m2_path_j3			;wenn nein
	sub.b	#4,mousecursor2+1		;dann mousecursor nach
	sub.l	#1,a6				;links und pointer tiefer
m2_path_j3:
	cmp.b	#$f,d0				;ist es ein sondercode <f
	bcs	m2_path_j2			;wenn nicht
	move.b	d0,(a6)				;zeichen rein moven
	cmp.l	#pathopr+15,a6			;end schon erreicht
	beq	m2_path_j2			;wenn nicht
	add.l	#1,a6				;dann mousecursor um eins
	add.b	#4,mousecursor2+1		;erhöhen und pointer höher
m2_path_j2:	
	jsr	reprofileandpath		;reproducieren des files und p.
	bra	m2_path_l1			;nächstes zeichen nehmen
m2_path_j1:
	jsr	mousepointer2out		;pointeraus
	move.l	#norout_j1,routadd		;adress auf nichts zeigen
	move.l	#menu2mask,mousemask 		;maske installieren
	jmp	capd				;raus
	
********************* file routine ****************************
m2_file:
	move.l	#$c664c800,mousecursor2		;mouse cursor positionieren
	move.l	#mousecursor2,d0		;schreiben
	lea	spr6h,a0			;schreiben
	bsr	moveitin			;machen
	lea	fileopr,a6			;nehmen der des addresse
m2_file_l1:
	jsr	keyrout				;keyroutine
	cmp.b	#$a,d0				;return ?
	beq	m2_file_j1			;wenn ja dann raus
	cmp.b	#$c,d0				;backspace ?
	bne	m2_file_j3			;wenn ja dann
	move.b	#32,(a6)			;leerzeichen
	cmp.l	#fileopr,a6			;zu weit links
	beq	m2_file_j3			;wenn nein
	sub.b	#4,mousecursor2+1		;dann mousecursor nach
	sub.l	#1,a6				;links und pointer tiefer
m2_file_j3:
	cmp.b	#$f,d0				;ist es ein sondercode <f
	bcs	m2_file_j2			;wenn nicht
	move.b	d0,(a6)				;zeichen rein moven
	cmp.l	#fileopr+15,a6			;end schon erreicht
	beq	m2_file_j2			;wenn nicht
	add.l	#1,a6				;dann mousecursor um eins
	add.b	#4,mousecursor2+1		;erhöhen und pointer höher
m2_file_j2:	
	jsr	reprofileandpath		;reproducieren des files und p.
	bra	m2_file_l1			;nächstes zeichen nehmen
m2_file_j1:
	jsr	mousepointer2out		;pointeraus
	move.l	#norout_j1,routadd		;adress auf nichts zeigen
	move.l	#menu2mask,mousemask 		;maske installieren
	jmp	capd				;raus

********************* up routine ******************************
m2_up:
	cmp.w	#0,reprop
	beq	nom2_up
	
	sub.w	#1,reprop
	jsr	reprofiles
nom2_up:
	move.l	#norout_j1,routadd
	move.l	#menu2mask,mousemask ;maske installieren
	jmp	capd
	
********************* down routine ****************************
m2_down:
	move.w	reprop,d0
	move.w	dir_filecounter,d1
	add.w	#17,d0
	cmp.w	d0,d1
	bcs	nom2_down
	
	add.w	#1,reprop
	jsr	reprofiles
nom2_down:
	move.l	#norout_j1,routadd
	move.l	#menu2mask,mousemask ;maske installieren
	jmp	capd

********************* die files *******************************

m2_file1:
	move.w	#1,d2			;index 
	move.w	reprop,d3
	add.w	d2,d3
	lea	$7cb00,a0
	cmp.b	#"D",(a0,d3.w)
	beq	m2_file1_j1
	jsr	m2_files_jmpin
	bra	m2_file1_j2
m2_file1_j1:
	jsr	m2_paths_jmpin
m2_file1_j2:
	move.l	#norout_j1,routadd
	move.l	#menu2mask,mousemask ;maske installieren
	jmp	capd
m2_file2:
	move.w	#2,d2			;index 
	move.w	reprop,d3
	add.w	d2,d3
	lea	$7cb00,a0
	cmp.b	#"D",(a0,d3.w)
	beq	m2_file2_j1
	jsr	m2_files_jmpin
	bra	m2_file2_j2
m2_file2_j1:
	jsr	m2_paths_jmpin
m2_file2_j2:
	move.l	#norout_j1,routadd
	move.l	#menu2mask,mousemask ;maske installieren
	jmp	capd
m2_file3:
	move.w	#3,d2			;index 
	move.w	reprop,d3
	add.w	d2,d3
	lea	$7cb00,a0
	cmp.b	#"D",(a0,d3.w)
	beq	m2_file3_j1
	jsr	m2_files_jmpin
	bra	m2_file3_j2
m2_file3_j1:
	jsr	m2_paths_jmpin
m2_file3_j2:
	move.l	#norout_j1,routadd
	move.l	#menu2mask,mousemask ;maske installieren
	jmp	capd
m2_file4:
	move.w	#4,d2			;index 
	move.w	reprop,d3
	add.w	d2,d3
	lea	$7cb00,a0
	cmp.b	#"D",(a0,d3.w)
	beq	m2_file4_j1
	jsr	m2_files_jmpin
	bra	m2_file4_j2
m2_file4_j1:
	jsr	m2_paths_jmpin
m2_file4_j2:
	move.l	#norout_j1,routadd
	move.l	#menu2mask,mousemask ;maske installieren
	jmp	capd
m2_file5:
	move.w	#5,d2			;index 
	move.w	reprop,d3
	add.w	d2,d3
	lea	$7cb00,a0
	cmp.b	#"D",(a0,d3.w)
	beq	m2_file5_j1
	jsr	m2_files_jmpin
	bra	m2_file5_j2
m2_file5_j1:
	jsr	m2_paths_jmpin
m2_file5_j2:
	move.l	#norout_j1,routadd
	move.l	#menu2mask,mousemask ;maske installieren
	jmp	capd
m2_file6:
	move.w	#6,d2			;index 
	move.w	reprop,d3
	add.w	d2,d3
	lea	$7cb00,a0
	cmp.b	#"D",(a0,d3.w)
	beq	m2_file6_j1
	jsr	m2_files_jmpin
	bra	m2_file6_j2
m2_file6_j1:
	jsr	m2_paths_jmpin
m2_file6_j2:
	move.l	#norout_j1,routadd
	move.l	#menu2mask,mousemask ;maske installieren
	jmp	capd
m2_file7:
	move.w	#7,d2			;index 
	move.w	reprop,d3
	add.w	d2,d3
	lea	$7cb00,a0
	cmp.b	#"D",(a0,d3.w)
	beq	m2_file7_j1
	jsr	m2_files_jmpin
	bra	m2_file7_j2
m2_file7_j1:
	jsr	m2_paths_jmpin
m2_file7_j2:
	move.l	#norout_j1,routadd
	move.l	#menu2mask,mousemask ;maske installieren
	jmp	capd
m2_file8:
	move.w	#8,d2			;index 
	move.w	reprop,d3
	add.w	d2,d3
	lea	$7cb00,a0
	cmp.b	#"D",(a0,d3.w)
	beq	m2_file8_j1
	jsr	m2_files_jmpin
	bra	m2_file8_j2
m2_file8_j1:
	jsr	m2_paths_jmpin
m2_file8_j2:
	move.l	#norout_j1,routadd
	move.l	#menu2mask,mousemask ;maske installieren
	jmp	capd
m2_file9:
	move.w	#9,d2			;index 
	move.w	reprop,d3
	add.w	d2,d3
	lea	$7cb00,a0
	cmp.b	#"D",(a0,d3.w)
	beq	m2_file9_j1
	jsr	m2_files_jmpin
	bra	m2_file9_j2
m2_file9_j1:
	jsr	m2_paths_jmpin
m2_file9_j2:
	move.l	#norout_j1,routadd
	move.l	#menu2mask,mousemask ;maske installieren
	jmp	capd
m2_file10:
	move.w	#10,d2			;index 
	move.w	reprop,d3
	add.w	d2,d3
	lea	$7cb00,a0
	cmp.b	#"D",(a0,d3.w)
	beq	m2_file10_j1
	jsr	m2_files_jmpin
	bra	m2_file10_j2
m2_file10_j1:
	jsr	m2_paths_jmpin
m2_file10_j2:
	move.l	#norout_j1,routadd
	move.l	#menu2mask,mousemask ;maske installieren
	jmp	capd
m2_file11:
	move.w	#11,d2			;index 
	move.w	reprop,d3
	add.w	d2,d3
	lea	$7cb00,a0
	cmp.b	#"D",(a0,d3.w)
	beq	m2_file11_j1
	jsr	m2_files_jmpin
	bra	m2_file11_j2
m2_file11_j1:
	jsr	m2_paths_jmpin
m2_file11_j2:
	move.l	#norout_j1,routadd
	move.l	#menu2mask,mousemask ;maske installieren
	jmp	capd
m2_file12:
	move.w	#12,d2			;index 
	move.w	reprop,d3
	add.w	d2,d3
	lea	$7cb00,a0
	cmp.b	#"D",(a0,d3.w)
	beq	m2_file12_j1
	jsr	m2_files_jmpin
	bra	m2_file12_j2
m2_file12_j1:
	jsr	m2_paths_jmpin
m2_file12_j2:
	move.l	#norout_j1,routadd
	move.l	#menu2mask,mousemask ;maske installieren
	jmp	capd
m2_file13:
	move.w	#13,d2			;index 
	move.w	reprop,d3
	add.w	d2,d3
	lea	$7cb00,a0
	cmp.b	#"D",(a0,d3.w)
	beq	m2_file13_j1
	jsr	m2_files_jmpin
	bra	m2_file13_j2
m2_file13_j1:
	jsr	m2_paths_jmpin
m2_file13_j2:
	move.l	#norout_j1,routadd
	move.l	#menu2mask,mousemask ;maske installieren
	jmp	capd
m2_file14:
	move.w	#14,d2			;index 
	move.w	reprop,d3
	add.w	d2,d3
	lea	$7cb00,a0
	cmp.b	#"D",(a0,d3.w)
	beq	m2_file14_j1
	jsr	m2_files_jmpin
	bra	m2_file14_j2
m2_file14_j1:
	jsr	m2_paths_jmpin
m2_file14_j2:
	move.l	#norout_j1,routadd
	move.l	#menu2mask,mousemask ;maske installieren
	jmp	capd
m2_file15:
	move.w	#15,d2			;index 
	move.w	reprop,d3
	add.w	d2,d3
	lea	$7cb00,a0
	cmp.b	#"D",(a0,d3.w)
	beq	m2_file15_j1
	jsr	m2_files_jmpin
	bra	m2_file15_j2
m2_file15_j1:
	jsr	m2_paths_jmpin
m2_file15_j2:
	move.l	#norout_j1,routadd
	move.l	#menu2mask,mousemask ;maske installieren
	jmp	capd


m2_files_jmpin:				;einsprungadresse für andere
	lea	fileopr,a1
	lea	$7d800,a0		;da stehen die files
	moveq	#15,d1			;max. 16 letter
	clr.l	d0			;müll raus
	move.w	reprop,d0		;position
	add.w	d2,d0			;+15 datei
	mulu	#20,d0			;mal zwanzig
	add.l	d0,a0			;dazuaddieren
m2_files_l1:
	move.b	(a0)+,(a1)+		;copier es
	dbf	d1,m2_files_l1		;jetzt
	jsr	reprofileandpath	;refresh
	rts				;tschüss

m2_paths_jmpin:				;einsprungadresse für andere
	lea	pathopr,a1
	lea	$7d800,a0		;da stehen die files
	moveq	#11,d1			;max. 16 letter
	clr.l	d0			;müll raus
	move.w	reprop,d0		;position
	add.w	d2,d0			;+15 datei
	mulu	#20,d0			;mal zwanzig
	add.l	d0,a0			;dazuaddieren
m2_paths_l1:
	move.b	(a0)+,(a1)+		;copier es
	dbf	d1,m2_paths_l1		;jetzt
	jsr	reprofileandpath	;refresh

	lea	dir_path,a0		;da soll es rein
	lea	pathopr,a1		;von da
m2_paths_l2:
	cmp.b	#32,(a1)		;schon ende
	beq	m2_paths_e1		;dann raus aus der schleife
	move.b	(a1)+,(a0)+		;copier
	bra	m2_paths_l2		;loop		
m2_paths_e1:
	move.b	#0,(a0)			;eine null hinterher

	clr.w	dir_filecounter
	clr.w	reprop
	jsr	mousewait
	jsr	clearfilebuffer
	jsr	reprofileandpath
	move.l	#norout_j1,routadd
	move.l	#menu2mask,mousemask ;maske installieren
	jsr	dir_loaddir
	jsr	sortfiles
	jsr	reprodevicename
	jsr	reprofiles
	rts				;tschüss

********************** routinen 3 *****************************

yesnomode:	dc.l	0

********************** ja *************************************
m3_yea:
	cmp.l	#"exit",yesnomode	;exit	?
	beq	m3_yea_exit		;raus

	move.w	#$fff,$dff180
			
	jsr	mousewait	     ;warte bis mauslosgelassen
	move.l	#norout_j1,routadd   ;adresse auf nichts zeigen
	move.l	#menu1mask,mousemask ;maske installieren
	bsr	copysaveyesno        ;abgesaved
	jmp	capd		     ;ret
m3_yea_exit:
	jsr	copysaveyesno	     ;abgesaved
	jmp	capdend              ;ende

********************** nein ***********************************

m3_oops:
	jsr	mousewait	     ;warte bis maus losgelassen
	move.l	#norout_j1,routadd   ;adressen auf nichts zeigen
	move.l	#menu1mask,mousemask ;maske installieren
	bsr	copysaveyesno	     ;abgesaved
	jmp	capd                 ;ret

********************** ende ***********************************

