;
; Oliver Schmidt, 15.04.2005
;
; unsigned char _sysmkdir (const char* name, ...);
;

        .export         __sysmkdir
        .import		pushname, popname
	.import		addysp, popax

	.include	"zeropage.inc"
	.include	"mli.inc"

__sysmkdir:
        ; Throw away all parameters except the name
        dey
        dey
        jsr	addysp

        ; Get and push name
        jsr	popax
        jsr	pushname
        bne	oserr

        ; Set pushed name
        lda	sp
        ldx	sp+1
        sta	mliparam + MLI::CREATE::PATHNAME
        stx	mliparam + MLI::CREATE::PATHNAME+1

        ; Set all other parameters from template
        ldx	#(MLI::CREATE::CREATE_TIME+1) - (MLI::CREATE::PATHNAME+1) - 1
:       lda	CREATE,x
        sta	mliparam + MLI::CREATE::ACCESS,x
        dex
        bpl	:-

        ; Make directory
        lda	#CREATE_CALL
        ldx	#CREATE_COUNT
        jsr	callmli

        ; Cleanup name
	jsr	popname		; Preserves A

oserr:	rts

        .rodata

CREATE: .byte	%11000011	; ACCESS:	Standard full access
        .byte	$0F		; FILE_TYPE:	Directory file
        .word	$0000		; AUX_TYPE:	N/A
        .byte	$0D		; STORAGE_TYPE:	Linked directory file
        .word	$0000		; CREATE_DATE:	Current date
        .word	$0000		; CREATE_TIME:	Current time
