; ; 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 "const.inc" .include "geossym.inc" .segment "ONCE" ; Setup arguments for main 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 .ifdef __GEOS_CBM__ cmp #$a0 .else cmp #0 .endif beq @fn_end sta argv0,y iny cpy #16+1 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 .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 .segment "INIT" argv0: .res 17 ; Program name