From 2c825f2bb3e9146489cf5a3933b7b55f205466e8 Mon Sep 17 00:00:00 2001 From: izydorst Date: Fri, 2 May 2003 20:16:32 +0000 Subject: [PATCH] support for arguments (with DeskTop drag&drop feature) git-svn-id: svn://svn.cc65.org/cc65/trunk@2133 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- libsrc/geos/devel/mainargs.s | 58 +++++++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/libsrc/geos/devel/mainargs.s b/libsrc/geos/devel/mainargs.s index ebe6d0348..1f61fec48 100644 --- a/libsrc/geos/devel/mainargs.s +++ b/libsrc/geos/devel/mainargs.s @@ -1,21 +1,77 @@ ; ; Ullrich von Bassewitz, 2003-03-07 +; Maciej Witkowiak, 2003-05-02 ; ; Setup arguments for main ; - +; There is always either 1 or 3 arguments: +; ,0 +; or +; , , , 0 +; the 2nd case is when using DeskTop user drags an icon of a file and drops it +; on icon of your application +; .constructor initmainargs, 24 .import __argc, __argv + .include "../inc/const.inc" + .include "../inc/geossym.inc" ;--------------------------------------------------------------------------- ; Setup arguments for main .proc initmainargs +; Setup a pointer to our argv vector + + lda #argv + sta __argv+1 + +; Copy program name + + ldy #0 +@fn_loop: + lda dirEntryBuf+OFF_FNAME,y + cmp #$a0 + beq @fn_end + sta argv0,y + iny + cpy #16 + bne @fn_loop +@fn_end: + lda #0 + sta argv0,y + sta __argc+1 + +; Check if there are any more arguments + + lda dataFileName + bne @threeargs + ldx #0 ; no dataFileName - NULL the 2nd argument + stx argv+2 + stx argv+3 + inx ; there is only one argument + bne @setargc +@threeargs: + ldx #3 ; there are three arguments +@setargc: + stx __argc rts .endproc +;--------------------------------------------------------------------------- +; Data + +.data + +argv: .word argv0 ; Pointer to program name + .word dataFileName ; dataFileName or NULL if last one + .word dataDiskName ; dataDiskName + .word $0000 ; last one must be NULL +.bss +argv0: .res 17 ; Program name -- 2.39.5