]> git.sur5r.net Git - cc65/blob - libsrc/geos/devel/mainargs.s
Fixed key definitions (were removed from apple2.h)
[cc65] / libsrc / geos / devel / 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        "../inc/const.inc"
19         .include        "../inc/geossym.inc"
20
21 ;---------------------------------------------------------------------------
22 ; Setup arguments for main
23
24 .proc   initmainargs
25
26 ; Setup a pointer to our argv vector
27
28         lda     #<argv
29         sta     __argv
30         lda     #>argv
31         sta     __argv+1
32
33 ; Copy program name
34
35         ldy     #0
36 @fn_loop:
37         lda     dirEntryBuf+OFF_FNAME,y
38         cmp     #$a0
39         beq     @fn_end
40         sta     argv0,y
41         iny
42         cpy     #16+1
43         bne     @fn_loop
44 @fn_end:
45         lda     #0
46         sta     argv0,y
47         sta     __argc+1
48
49 ; Check if there are any more arguments
50
51         lda     dataFileName
52         bne     @threeargs
53         ldx     #0              ; no dataFileName - NULL the 2nd argument
54         stx     argv+2
55         stx     argv+3
56         inx                     ; there is only one argument
57         bne     @setargc
58 @threeargs:
59         ldx     #3              ; there are three arguments
60 @setargc:
61         stx     __argc
62         rts
63
64 .endproc
65
66 ;---------------------------------------------------------------------------
67 ; Data
68
69 .data
70
71 argv:   .word   argv0           ; Pointer to program name
72         .word   dataFileName    ; dataFileName or NULL if last one
73         .word   dataDiskName    ; dataDiskName
74         .word   $0000           ; last one must be NULL
75
76 .bss
77 argv0:  .res    17              ; Program name