;
; Christian Groessler, Aug-2003
;
; int remove (const char* name);
;

	.include "atari.inc"
	.include "errno.inc"
	.import	findfreeiocb
	.importzp tmp4
.ifdef	UCASE_FILENAME
	.importzp tmp3
	.import	addysp
	.import	ucase_fn
.endif
	.export	__sysremove

.proc	__sysremove

	pha			; save input parameter
	txa
	pha

	jsr	findfreeiocb
	beq	iocbok		; we found one

	pla
	pla			; fix up stack

	lda	#TMOF		; too many open files
	rts

iocbok:	stx	tmp4		; remember IOCB index
	pla
	tax
	pla			; get argument again

.ifdef	UCASE_FILENAME

	jsr	ucase_fn
	bcc	ucok1

	lda	#182		; see oserror.s
	rts
ucok1:

.endif	; defined UCASE_FILENAME

	ldy	tmp4		; IOCB index
	sta	ICBAL,y		; store pointer to filename
	txa
	sta	ICBAH,y
	tya
	tax
	lda	#DELETE
	sta	ICCOM,x
	lda	#0
	sta	ICAX1,x
	sta	ICAX2,x
	sta	ICBLL,x
	sta	ICBLH,x
	jsr	CIOV

.ifdef	UCASE_FILENAME
	tya
	pha
	ldy	tmp3		; get size
	jsr	addysp		; free used space on the stack
	pla
	tay
.endif	; defined UCASE_FILENAME

	bmi	cioerr
	lda	#0
	rts
cioerr:	tya
	rts

.endproc	; __sysremove
