Subversion Repositories NedoOS

Rev

Rev 1649 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log

Rev 1649 Rev 1650
Line 2... Line 2...
2
        include "../_sdk/sys_h.asm"
2
        include "../_sdk/sys_h.asm"
3
;COMMANDLINE    EQU #80
3
;COMMANDLINE    EQU #80
4
 
4
 
5
        org PROGSTART
5
        org PROGSTART
6
cmd_begin
6
cmd_begin
7
 
-
 
8
 
-
 
9
                ld hl,COMMANDLINE
7
        ld hl,COMMANDLINE
10
        call skipword
8
        call skipword
-
 
9
        cp 0x00
-
 
10
        jp z, defname
11
        call skipspaces
11
        call skipspaces
-
 
12
        cp 0x00
12
        ld (par1addr),hl
13
        jp z, defname
-
 
14
 
13
                ld de,FILE_NAME
15
        ld de,FILE_NAME
14
                call getname
16
        call getname
15
                inc hl
17
        inc hl
16
                ld (hl),0
18
        ld (hl),0
17
                ld a,0
19
        ld a,0
18
                ld (de),a
20
        ld (de),a
19
;               jr $
-
 
20
 
21
 
-
 
22
defname:
21
        ld de,FILE_NAME
23
        ld de,FILE_NAME
22
        OS_CREATEHANDLE
24
        OS_CREATEHANDLE
23
        or a
25
        or a
24
        jp nz,ERR_EXIT    ;обработка ошибок
26
        jp nz,ERR_EXIT    ;обработка ошибок
25
        ld a,b
27
        ld a,b
26
        ld (handle),a    ;сохраняем дескриптор
28
        ld (handle),a    ;сохраняем дескриптор
27
 
29
 
28
;Заполняю пустотой внутренний мир файла
30
;Заполняю пустотой внутренний мир файла
29
                ld      b,160
31
        ld b,160
30
t1:             push bc
32
t1:     push bc
31
        ld a,(handle)
33
        ld a,(handle)
32
        ld b,a
34
        ld b,a
33
        ld de,Empt
35
        ld de,Empt
34
        ld hl,4096
36
        ld hl,4096
35
        OS_WRITEHANDLE
37
        OS_WRITEHANDLE
36
        or a
38
        or a
37
        jp nz,ERR_EXIT    ;обработка ошибок
39
        jp nz,ERR_EXIT    ;обработка ошибок
38
                pop bc
40
                pop bc
39
 
41
 
40
                djnz t1
42
                djnz t1
41
 
43
 
42
;Ищу в нем своё место
44
;Ищу в нем своё место
43
                ld a, (handle)
45
                ld a, (handle)
44
                ld b,a
46
                ld b,a
45
                ld de,#0000
47
                ld de,#0000
46
                ld hl,#0800
48
                ld hl,#0800
47
                OS_SEEKHANDLE
49
                OS_SEEKHANDLE
48
 
50
 
49
;и заполняю его смыслом
51
;и заполняю его смыслом
50
        ld a,(handle)
52
        ld a,(handle)
51
        ld b,a
53
        ld b,a
52
        ld de, SYSTEM_TRACK
54
        ld de, SYSTEM_TRACK
53
        ld hl,BUF_SIZE
55
        ld hl,BUF_SIZE
54
        OS_WRITEHANDLE
56
        OS_WRITEHANDLE
55
        or a
57
        or a
56
        jp nz,ERR_EXIT    ;обработка ошибок
58
        jp nz,ERR_EXIT    ;обработка ошибок
57
 
59
 
58
CLOSE_ERR_EXIT
60
CLOSE_ERR_EXIT
59
        ld a,(handle)
61
        ld a,(handle)
60
        ld b,a
62
        ld b,a
61
        OS_CLOSEHANDLE
63
        OS_CLOSEHANDLE
Line 97... Line 99...
97
        jr getname
99
        jr getname
98
               
100
               
99
handle:
101
handle:
100
           DEFB 0
102
           DEFB 0
101
 
103
 
102
;Ну проще я не придумал :-(
104
;Ну проще я не придумал :-(
103
;Придумаю переделаю.
105
;Придумаю переделаю.
104
Empt:
106
Empt:
105
        DEFS 16*256
107
        DEFS 16*256
106
 
108
 
107
SYSTEM_TRACK:;системная дорожка
109
SYSTEM_TRACK:;системная дорожка
108
 
110
 
109
BUFF_ADDR:
111
BUFF_ADDR:
110
                DEFB 0
112
                DEFB 0
111
DCU_SEC:
113
DCU_SEC:
112
                DEFS 224
114
                DEFS 224
113
FR_SEC_NEXT:;следующий свободный сектор
115
FR_SEC_NEXT:;следующий свободный сектор
114
                DEFB 0
116
                DEFB 0
115
FR_TRK_NEXT:;следующая свободная дорожка
117
FR_TRK_NEXT:;следующая свободная дорожка
116
                DEFB 1
118
                DEFB 1
117
TYPE_DISC:; тип диска
119
TYPE_DISC:; тип диска
118
                DEFB #10
120
                DEFB #10
119
N_FILES:; количество файлов на диске             
121
N_FILES:; количество файлов на диске            
120
                DEFB 0
122
                DEFB 0
121
; количество свободных секторов на диске 
123
; количество свободных секторов на диске 
122
;(это максимальное количество, будем из него вычитать)
124
;(это максимальное количество, будем из него вычитать)
123
N_FREE_SEC:
125
N_FREE_SEC:
124
                DEFW #09F0
126
                DEFW #09F0
125
MAIN_BYTE:
127
MAIN_BYTE:
126
                DEFB #10
128
                DEFB #10
127
ZERO:  
129
ZERO:  
128
                DEFB 0,0
130
                DEFB 0,0
129
BLANK9:
131
BLANK9:
130
                DEFB #20,#20,#20,#20,#20,#20,#20,#20,#20,0; последний ноль нужен!
132
                DEFB #20,#20,#20,#20,#20,#20,#20,#20,#20,0; последний ноль нужен!
131
N_DEL_FILES:
133
N_DEL_FILES:
132
                DEFB 0
134
                DEFB 0
133
;заголовок диска
135
;заголовок диска
134
DISC_TITLE:
136
DISC_TITLE:
135
                DEFB "RESULT",0,0
137
                DEFB "RESULT",0,0
136
ZERO_N:
138
ZERO_N:
137
                DEFS 3
139
                DEFS 3
138
BUF_SIZE EQU $-SYSTEM_TRACK
140
BUF_SIZE EQU $-SYSTEM_TRACK
139
 
141
       
140
par1addr:
-
 
141
                DEFB 0
-
 
142
par2addr:
-
 
143
                DEFB 0         
-
 
144
FILE_NAME:
142
FILE_NAME:
145
        DEFB "dist.trd"
143
        DEFB "dist.trd"
146
END:    DEFB 0
144
END:    DEFB 0
147
        DEFB 0
145
        DEFB 0
148
 
146