]> git.sur5r.net Git - cc65/blob - libsrc/geos-common/system/mainargs.s
Moved non-driver files from 'geos-cbm/devel' to 'geos-common/system' which are believ...
[cc65] / libsrc / geos-common / system / mainargs.s
1 ;
2 ; Ullrich von Bassewitz, 2003-03-07
3 ; Maciej Witkowiak, 2003-05-02
4 ;
5 ; Setup arguments for main
6 ;
7 ; There is always either 1 or 3 arguments:
8 ; <program name>,0
9 ; or
10 ; <program name>, <data file name>, <data disk name>, 0
11 ; the 2nd case is when using DeskTop user drags an icon of a file and drops it
12 ; on icon of your application
13 ;
14
15         .constructor    initmainargs, 24
16         .import         __argc, __argv
17
18         .include        "const.inc"
19         .include        "geossym.inc"
20
21 ;---------------------------------------------------------------------------
22 ; Setup arguments for main
23
24 .segment        "INIT"
25
26 .proc   initmainargs
27
28 ; Setup a pointer to our argv vector
29
30         lda     #<argv
31         sta     __argv
32         lda     #>argv
33         sta     __argv+1
34
35 ; Copy program name
36
37         ldy     #0
38 @fn_loop:
39         lda     dirEntryBuf+OFF_FNAME,y
40 .ifdef  __GEOS_CBM__
41         cmp     #$a0
42 .else
43         cmp     #0
44 .endif
45         beq     @fn_end
46         sta     argv0,y
47         iny
48         cpy     #16+1
49         bne     @fn_loop
50 @fn_end:
51         lda     #0
52         sta     argv0,y
53         sta     __argc+1
54
55 ; Check if there are any more arguments
56
57         lda     dataFileName
58         bne     @threeargs
59         ldx     #0              ; no dataFileName - NULL the 2nd argument
60         stx     argv+2
61         stx     argv+3
62         inx                     ; there is only one argument
63         bne     @setargc
64 @threeargs:
65         ldx     #3              ; there are three arguments
66 @setargc:
67         stx     __argc
68         rts
69
70 .endproc
71
72 ;---------------------------------------------------------------------------
73 ; Data
74
75 .data
76
77 argv:   .word   argv0           ; Pointer to program name
78         .word   dataFileName    ; dataFileName or NULL if last one
79         .word   dataDiskName    ; dataDiskName
80         .word   $0000           ; last one must be NULL
81
82 .bss
83 argv0:  .res    17              ; Program name