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 |