*
* NODELETE.asm
*
* Traps all Delete()-Calls, asking user to
* validate them...
*
* (C) 1990 Oliver Wagner
*
* non-commercial-distribution permited
*
*
* SNAIL to:
* Oliver Wagner
* Landsberge 5
* 4322 Sprockhövel
* West Germany
*
* a68k nodelete.asm
* blink nodelete.o to nodelete lib lib:amiga.lib SD SC ND
*  don't use small.lib; BLINK will then create an additional
*  empty DSEG (does anybody know why????)
*
* V1.1 - slight changes in program layout (488 Byte fight... :-)
*	 modified for visible color on one bitplane screens
*	 requester displayed in active window
*	 keypress (VANILLAKEY) mapped as "SKIP"
*

call	MACRO
	xref	_LVO\1
	jsr	_LVO\1(a6)
	ENDM

	SECTION "text",CODE

	move.l	4,a6
	lea	intname(pc),a1
	call	OldOpenLibrary
	lea	intbase(pc),a0
	move.l	d0,(a0)
	lea	dosname(pc),a1
	call	OldOpenLibrary
	move.l	d0,a6
	call	Output
	move.l	d0,d1
	beq.s	noout
	lea	intro(pc),a0
	move.l	a0,d2
	moveq	#eoi-intro,d3
	call	Write
noout:
	move.l	a6,a5
	move.l	4,a6
	cmp.w	#$4ef9,-72(a5)
	beq.s	return
	move.w	#endofpatch-newdelete+1,d0
	move.l	d0,d4
	moveq	#0,d1
	call	AllocMem
	move.l	d0,d7
	beq.s	return
	move.l	a5,a1
	lea	-68(a1),a4
	move.w	#-72,a0
	call	SetFunction
	lea	olddel(pc),a1
	add.l	a4,d0
	move.l	d0,2(a1)
	move.l	d7,a1
	lea	newdelete(pc),a0
	move.l	d4,d0
	call	CopyMem
return:
	move.l	$114(a6),a0
	tst.l	$ac(a0)
	bne.s	cli
	lea	$5c(a0),a0
	call	WaitPort
	move.l	d0,a1
	call	ReplyMsg
cli:
	moveq	#0,d0
	rts

newdelete:
	movem.l d1-d7/a0-a6,-(sp)
	lea	not(pc),a3
	lea	notx(pc),a5
	move.l	a5,12(a3)
	lea	yest(pc),a2
	lea	yestx(pc),a5
	move.l	a5,12(a2)
	lea	l1t(pc),a1
	addq.l	#7,a5
	move.l	a5,12(a1)
	lea	l2t(pc),a0
	move.l	a0,16(a1)
	move.l	d1,12(a0)
	moveq	#0,d0
	moveq	#$20,d1
	swap	d1
	move.w	#320,d2
	moveq	#62,d3
	move.l	intbase(pc),a6
	move.l	$34(a6),a0           ; ActiveWindow
	call	AutoRequest
	movem.l (sp)+,d1-d7/a0-a6
	tst.l	d0
	bne.s	old
	moveq	#-1,d0
	rts
old:
	moveq	#-9,d0
olddel:
	dc.w	$4ef9
	dc.l	'Olli'
notx:
	dc.b	"Skip"
not:
	dc.b	0,0
	dc.w	0,6,3
	dc.l	0,0
yest:
	dc.b	0,0
	dc.w	0,6,3
	dc.l	0,0
l2t:
	dc.b	0,0
	dc.w	0,15,15
	dc.l	0,0
l1t:
	dc.b	0,0
	dc.w	0,15,5
	dc.l	0,0,0
intbase:
	dc.l	'Olli'
yestx:
	dc.b	"Delete",0
l1tx:
	dc.b	"Delete file",0
endofpatch:
intro:
	dc.b	10,9,$9b,"33;3;4m NODELETE 1.1 ",$9b,"0;1m  © by Oliver Wagner",$9b,"0m",10,10
eoi:
intname:
	dc.b	"intuition.library",0
dosname:
	dc.b	"dos.library",0

	END
