Rev 831 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 831 | Rev 1186 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | 1 | ||
2 | ;LAST UPDATE: 30.06.2019 savelij |
2 | ; LAST UPDATE: 16.02.2025 savelij |
- | 3 | ||
- | 4 | EXT_FILE_BROWSER |
|
- | 5 | ROMCALL P5_READ_BYTE,ROM_RST83 |
|
- | 6 | ; LD A,(NEXTBYTERST8) |
|
- | 7 | LD HL,SYSFLAGS |
|
- | 8 | SET SYSFLAGS.B_NMI_FB_BLOCK,(HL); блокируем FILE BROWSER на NMI |
|
- | 9 | SET SYSFLAGS.B_FB_INT_EXT,(HL) |
|
- | 10 | JR FILE_BROWSER.L1 |
|
3 | 11 | ||
4 | FILE_BROWSER DI |
12 | FILE_BROWSER DI |
- | 13 | LD HL,SYSFLAGS |
|
- | 14 | BIT SYSFLAGS.B_NMI_FB_BLOCK,(HL) |
|
- | 15 | RET NZ |
|
5 | LD IYL,INTERNAL |
16 | .L1 LD IYL,INTERNAL |
6 | ROMCALL DEVFIND,ROM_RST83 ;ПОИСК УСТРОЙСТВ ЕСЛИ НЕ БЫЛИ НАЙДЕНЫ |
17 | ROMCALL DEVFIND,ROM_RST83 ; поиск устройств |
7 | LD A,E |
18 | LD A,E |
8 | AND A |
19 | AND A |
9 | JR NZ,FILEBROWSE1 |
20 | JR NZ,FILEBROWSE |
10 | ;ЕСЛИ НИ ОДНОГО УСТРОЙСТВА НЕ НАЙДЕНО, ТО ВЫВОДИМ ОШИБКУ |
21 | ; если ни одного устройства не найдено, то выводим ошибку |
11 | LD IX,DEV_NOTFOUND |
22 | LD IX,DEV_NOTFOUND |
- | 23 | ERROR |
|
12 | ERROR EVOPORT WIN_A5,ROM_RST81 |
24 | EVOPORT WIN_A1,ROM_RST81 |
13 | CALL ITWINW |
25 | CALL INT_TXT_WINDOW |
14 | CALL ANY_KEYS |
26 | CALL ANY_KEYS |
- | 27 | CALL RESTORE_FATVARS |
|
15 | JP RESTART_MAIN |
28 | JP RESTART_MAIN |
16 | 29 | ||
17 | FILEBROWSE1 DI |
30 | FILEBROWSE DI |
18 | EVOPORT WIN_A5,ROM_RST81 |
31 | EVOPORT WIN_A1,ROM_RST81 |
19 | LD HL,FILES_EXT_ALL |
32 | LD HL,FILES_EXT |
20 | LD DE,EXT4FOUND |
33 | LD DE,EXT4FOUND |
21 | LD BC,EFILES_EXT-FILES_EXT |
34 | LD BC,EFILES_EXT-FILES_EXT |
22 | LDIR ;УСТАНОВКА МАСКИ РАСШИРЕНИЙ ДЛЯ ПОИСКА |
35 | LDIR ; установка маски расширений для поиска |
23 | ROMCALL FIND_FILEITEM,ROM_RST83 ;ПОИСК |
36 | ROMCALL FIND_FILEITEM,ROM_RST83 ; поиск |
24 | LD A,B |
37 | LD A,B |
25 | OR C ;ЗДЕСЬ КОЛИЧЕСТВО НАЙДЕННЫХ ОПИСАТЕЛЕЙ В HL |
38 | OR C ; здесь количество найденных описателей |
26 | JR NZ,SEARCHF1 |
39 | JR NZ,SEARCHFILES |
27 | LD IX,NOFILES |
40 | LD IX,NOFILES |
28 | CALL ITWINW |
41 | CALL INT_TXT_WINDOW |
29 | JP SELECT_DRIVE |
42 | JP SELECT_DRIVE |
30 | 43 | ||
31 | SEARCHF1 PUSH BC |
44 | SEARCHFILES LD (FOUND_FAT_FILES),BC |
32 | ROMCALL SORT_FINDFILES,ROM_RST83 |
45 | ROMCALL SORT_FINDFILES,ROM_RST83 |
- | 46 | .L1 |
|
33 | EVOPORT WIN_A5,ROM_RST81 |
47 | EVOPORT WIN_A1,ROM_RST81 |
34 | LD IX,LEGEND_EXT |
48 | LD IX,LEGEND_EXT ; окошко с подсказкой по цветам файлов |
35 | CALL ITWINW |
49 | CALL INT_TXT_WINDOW |
36 | POP BC |
- | |
37 | FBR00 PUSH BC |
50 | EVOPORT WIN_A1,ROM_RST81 |
38 | LD IX,FILESBROWSER |
51 | LD IX,FILESBROWSER ; окно файлового браузера |
39 | CALL ITWINW |
52 | CALL INT_TXT_WINDOW |
40 | EVOPORT WIN_P3,RAM_TEMP2 |
53 | EVOPORT WIN_P3,RAM_SORTFILES |
41 | POP BC |
54 | LD BC,(FOUND_FAT_FILES) |
42 | BIT 7,(IX+7) |
55 | BIT B_ADR_PUNKT,(IX+_NUM_PKT) |
43 | JR NZ,FBR02 |
56 | JR NZ,FBR02 |
44 | LD (IX+0X0A),C |
57 | LD (IX+_NUM_KOL_L),C |
45 | LD (IX+0X0B),B ;КОЛИЧЕСТВО ПУНКТОВ |
58 | LD (IX+_NUM_KOL_H),B ; количество пунктов |
46 | LD L,(IX+8) |
59 | LD L,(IX+_TEK_PKT_L) |
47 | LD H,(IX+9) ;ПОЛУЧИЛИ НОМЕР ТЕКУЩЕЙ ПОЗИЦИИ |
60 | LD H,(IX+_TEK_PKT_H) ; получили номер текущей позиции |
48 | LD E,(IX+7) ;ПОЛУЧИЛИ ПОЗИЦИЮ КУРСОРА В ОКНЕ |
61 | LD E,(IX+_NUM_PKT) ; получили позицию курсора в окне |
49 | JR FBR06 |
62 | JR FBR06 |
50 | 63 | ||
51 | OUT_TEK_DIR BIT 3,(IX+6) ;ЕСЛИ МЕНЮ ТО ПЕРЕХОД НА ПРОДОЛЖЕНИЕ |
64 | OUT_CURR_DIR BIT B_MENU_FILE,(IX+_FLAGS) ; если меню то переход на продолжение |
52 | JP Z,OTF1 |
65 | JP Z,SET_ADR_ATR |
53 | ;ИНАЧЕ ПОКАЗ ФАЙЛОВ |
66 | ; иначе показ файлов |
54 | EVOPORT WIN_P3,RAM_TEMP2 |
67 | EVOPORT WIN_P3,RAM_SORTFILES |
55 | LD E,(IX+7) |
68 | LD E,(IX+_NUM_PKT) |
56 | LD L,(IX+8) |
69 | LD L,(IX+_TEK_PKT_L) |
57 | LD H,(IX+9) |
70 | LD H,(IX+_TEK_PKT_H) |
58 | LD C,(IX+0X0A) |
71 | LD C,(IX+_NUM_KOL_L) |
59 | LD B,(IX+0X0B) |
72 | LD B,(IX+_NUM_KOL_H) |
60 | BIT 6,E |
73 | BIT B_ADR_NUMS_PUNKT,E |
61 | JR Z,FBR06 |
74 | JR Z,FBR06 |
62 | LD A,(HL) |
75 | LD A,(HL) |
63 | INC HL |
76 | INC HL |
64 | LD E,(HL) |
77 | LD E,(HL) |
65 | INC HL |
78 | INC HL |
Line 70... | Line 83... | ||
70 | LD B,(HL) |
83 | LD B,(HL) |
71 | EX DE,HL |
84 | EX DE,HL |
72 | LD E,A |
85 | LD E,A |
73 | JR FBR06 |
86 | JR FBR06 |
74 | 87 | ||
75 | FBR02 LD L,(IX+8) |
88 | FBR02 LD L,(IX+_TEK_PKT_L) |
76 | LD H,(IX+9) ;УКАЗАТЕЛЬ НА ТЕКУЩИЙ ПУНКТ |
89 | LD H,(IX+_TEK_PKT_H) ; указатель на текущий пункт |
77 | LD A,(HL) |
90 | LD A,(HL) |
78 | INC HL |
91 | INC HL |
79 | LD E,(HL) |
92 | LD E,(HL) |
80 | INC HL |
93 | INC HL |
81 | LD D,(HL) |
94 | LD D,(HL) |
Line 85... | Line 98... | ||
85 | LD (HL),B |
98 | LD (HL),B |
86 | EX DE,HL |
99 | EX DE,HL |
87 | LD E,A |
100 | LD E,A |
88 | FBR06 XOR A |
101 | FBR06 XOR A |
89 | LD D,A |
102 | LD D,A |
90 | SBC HL,DE ;ВЫЧИСЛИЛИ ПОЗИЦИЮ ФАЙЛА С КОТОРОГО БУДЕМ ВЫВОДИТЬ |
103 | SBC HL,DE ; вычислили позицию файла с которого будем выводить |
91 | LD DE,CPU3 |
104 | LD DE,CPU3 |
92 | ADD HL,HL |
105 | ADD HL,HL |
93 | ADD HL,DE |
106 | ADD HL,DE |
94 | LD D,(IX+0) |
107 | LD D,(IX+_X_COORD) |
95 | LD E,(IX+1) |
108 | LD E,(IX+_Y_COORD) |
96 | INC D |
109 | INC D |
97 | INC E ;ВЫЧИСЛИЛИ ПОЗИЦИЮ ВЫВОДА НА ЭКРАН |
110 | INC E ; вычислили позицию вывода на экран |
98 | LD A,B |
111 | LD A,B |
99 | AND A |
112 | AND A |
100 | JR NZ,FBR07 |
113 | JR NZ,FBR07 |
101 | LD A,C |
114 | LD A,C |
102 | CP V_FILES-2 |
115 | CP TXT.V_FILES-2 |
103 | JR C,OTF2 |
116 | JR C,OTF2 |
104 | FBR07 LD C,V_FILES-2 |
117 | FBR07 LD C,TXT.V_FILES-2 |
105 | OTF2 PUSH BC |
118 | OTF2 PUSH BC |
106 | LD C,(HL) |
119 | LD C,(HL) |
107 | INC HL |
120 | INC HL |
108 | LD B,(HL) |
121 | LD B,(HL) |
109 | INC HL |
122 | INC HL |
110 | PUSH HL |
123 | PUSH HL |
111 | PUSH DE |
124 | PUSH DE |
112 | ROMCALL POSTF06,ROM_RST83 |
125 | ROMCALL POSTF06,ROM_RST83 |
113 | LD HL,BUF_256 |
126 | LD HL,BUF_MOVE256 |
114 | ROMCALL READ_DIR,ROM_RST83 |
127 | ROMCALL READ_DIR,ROM_RST83 |
115 | LD DE,FILES_EXT;SUPPORT_EXT |
128 | LD DE,FILES_EXT |
116 | ROMCALL CP_EXT,ROM_RST83 |
129 | ROMCALL CP_EXT,ROM_RST83 |
117 | EX AF,AF' |
130 | EX AF,AF' ; прячем номер расширения |
118 | POP DE |
131 | POP DE |
119 | PUSH DE |
132 | PUSH DE |
120 | LD BC,0X0B |
133 | LD BC,_DIR_Attr |
121 | ADD HL,BC |
134 | ADD HL,BC |
122 | LD A,(HL) |
135 | LD A,(HL) |
123 | SBC HL,BC |
136 | SBC HL,BC |
124 | AND 0X10 |
137 | AND M_DIR_Directory |
125 | LD A,BLUE<<3+WHITE+BR_INK |
138 | LD A,BLUE << 3 + WHITE + BR_INK |
126 | LD (OUT_NAME_FILE+1),A ;ЕСЛИ ДИРЕКТОРИЯ ТО ЦВЕТ БЕЛЫЙ |
139 | LD (OUT_NAME_FILE+1),A ; если директория то цвет белый |
127 | JR NZ,OTF9 |
140 | JR NZ,OTF9 |
128 | EX AF,AF' |
141 | EX AF,AF' ; возвращаем номер расширения |
129 | LD L,A |
- | |
130 | INC A |
- | |
131 | JR Z,OTF8 |
- | |
132 | LD A,L |
- | |
133 | OTF8 LD HL,COLOR_EXT |
142 | LD HL,COLOR_EXT |
134 | ADD A,L |
143 | ADD A,L |
135 | LD L,A |
144 | LD L,A |
136 | ADC A,H |
145 | ADC A,H |
137 | SUB L |
146 | SUB L |
138 | LD A,(HL) |
147 | LD H,A |
- | 148 | LD A,(HL) ; взяли цвет из таблицы |
|
139 | ADD A,BLUE<<3+BR_INK |
149 | ADD A,BLUE << 3 + BR_INK ; добавили цвет фона окна |
140 | LD (OUT_NAME_FILE+1),A |
150 | LD (OUT_NAME_FILE+1),A |
141 | OTF9 LD HL,BUF_256 |
151 | OTF9 LD HL,BUF_MOVE256 |
142 | ROMCALL GET_LONGNAME,ROM_RST83 |
152 | ROMCALL GET_LONGNAME,ROM_RST83 |
143 | POP DE |
153 | POP DE |
144 | PUSH DE |
154 | PUSH DE |
145 | CALL FILENAME8_3 |
155 | CALL FILENAME8_3 |
146 | POP DE |
156 | POP DE |
147 | POP HL |
157 | POP HL |
148 | POP BC |
158 | POP BC |
149 | INC E |
159 | INC E |
150 | DEC C |
160 | DEC C |
151 | JR NZ,OTF2 |
161 | JR NZ,OTF2 |
152 | OTF1 EVOPORT WIN_P3,VMODE7_0 |
- | |
153 | JP SET_ADR_ATR |
162 | JP SET_ADR_ATR |
154 | 163 | ||
155 | FILENAME8_3 LD C,A |
164 | FILENAME8_3 LD C,A |
156 | LD B,0 |
165 | LD B,0 |
157 | EX DE,HL |
166 | EX DE,HL |
158 | LD (OUT_NAME_FILET),HL |
167 | LD (OUT_NAME_FILET),HL |
159 | LD HL,BUF_256 |
168 | LD HL,BUF_MOVE256 |
160 | LD A,H_FILES-3 |
169 | LD A,TXT.H_FILES-3 |
161 | CP C |
170 | CP C |
162 | JR Z,OTF7 |
171 | JR Z,OTF7 |
163 | JR NC,OTF6 |
172 | JR NC,OTF6 |
164 | EX DE,HL |
173 | EX DE,HL |
165 | LD HL,H_FILES-3 |
174 | LD HL,TXT.H_FILES-3 |
166 | ADD HL,DE |
175 | ADD HL,DE |
167 | LD (HL),">" |
176 | LD (HL),'>' |
168 | INC HL |
177 | INC HL |
169 | LD (HL),0 |
178 | LD (HL),0 |
170 | JR OTF7 |
179 | JR OTF7 |
171 | 180 | ||
172 | OTF6 SUB C |
181 | OTF6 SUB C |
173 | ADD HL,BC |
182 | ADD HL,BC |
174 | LD C,A |
183 | LD C,A |
175 | LD D,H |
184 | LD D,H |
176 | LD E,L |
185 | LD E,L |
177 | INC DE |
186 | INC DE |
178 | LD (HL)," " |
187 | LD (HL),' ' |
179 | LDIR |
188 | LDIR |
180 | XOR A |
189 | XOR A |
181 | LD (DE),A |
190 | LD (DE),A |
182 | OTF7 LD HL,OUT_NAME_FILE |
191 | OTF7 LD HL,OUT_NAME_FILE |
183 | CALL ITPRINT_MESSAGE |
192 | CALL ITPRINT_MESSAGE |
184 | LD HL,BUF_256 |
193 | LD HL,BUF_MOVE256 |
185 | JP ITPRINT_MESSAGE |
194 | JP ITPRINT_MESSAGE |
186 | 195 | ||
187 | ;ВЫБОР ФАЙЛА ИЛИ ХОЖДЕНИЕ ПО ДИРЕКТОРИЯМ |
196 | ; выбор файла или хождение по директориям |
188 | SELECT_FILE DI |
197 | SELECT_FILE DI |
189 | EVOPORT WIN_P3,RAM_TEMP2 |
198 | EVOPORT WIN_P3,RAM_SORTFILES |
190 | LD L,(IX+8) |
199 | LD L,(IX+_TEK_PKT_L) |
191 | LD H,(IX+9) ;ВЗЯЛИ НОМЕР ФАЙЛА/ДИРЫ ИЛИ АДРЕС ГДЕ ЭТО ЛЕЖИТ |
200 | LD H,(IX+_TEK_PKT_H) ; взяли номер файла/диры или адрес где это лежит |
192 | BIT 7,(IX+7) |
201 | BIT B_ADR_PUNKT,(IX+_NUM_PKT) |
193 | JR Z,SELFILES01 |
202 | JR Z,.L1 |
194 | INC HL |
203 | INC HL |
195 | LD E,(HL) |
204 | LD E,(HL) |
196 | INC HL |
205 | INC HL |
197 | LD D,(HL) ;ЕСЛИ АДРЕС ТО ИЗВЛЕКЛИ ОТТУДА НОМЕР |
206 | LD D,(HL) ; если адрес то извлекли оттуда номер |
198 | EX DE,HL |
207 | EX DE,HL |
199 | SELFILES01 LD DE,CPU3 |
208 | .L1 LD DE,CPU3 |
200 | ADD HL,HL |
209 | ADD HL,HL |
201 | ADD HL,DE |
210 | ADD HL,DE |
202 | LD C,(HL) |
211 | LD C,(HL) |
203 | INC HL |
212 | INC HL |
204 | LD B,(HL) ;ВЗЯЛИ РЕАЛЬНЫЙ НОМЕР ФАЙЛА/ДИРЫ |
213 | LD B,(HL) ; взяли реальный номер файла/диры |
205 | ROMCALL POSTF06,ROM_RST83 ;УСТАНОВИЛИ ПОЗИЦИЮ |
214 | ROMCALL POSTF06,ROM_RST83 ; установили позицию |
206 | LD HL,BUF_256 |
215 | LD HL,BUF_MOVE256 |
207 | ROMCALL READ_DIR,ROM_RST83 ;ПОЛУЧИЛИ АДРЕС ОТКУДА ОПИСАТЕЛЬ ВЗЯТЬ |
216 | ROMCALL READ_DIR,ROM_RST83 ; получили адрес откуда описатель взять |
208 | PUSH HL |
217 | PUSH HL |
209 | LD DE,BUF_FILEITEM |
218 | LD DE,BUF_FILEITEM |
210 | LD BC,0X20 |
219 | LD BC,_DIR_StructSize |
211 | LDIR ;ПЕРЕНЕСЛИ ОПИСАТЕЛЬ В БУФЕР |
220 | LDIR ; перенесли описатель в буфер |
212 | POP HL |
221 | POP HL |
213 | LD DE,0X0B |
222 | LD DE,_DIR_Attr |
214 | ADD HL,DE |
223 | ADD HL,DE |
215 | LD A,(HL) |
224 | LD A,(HL) |
216 | SBC HL,DE |
225 | SBC HL,DE |
217 | AND 0X10 ;ПРОВЕРЯЕМ ФАЙЛ ИЛИ ДИРА |
226 | AND M_DIR_Directory ; проверяем файл или дира |
218 | JP Z,SELFILES03 ;ВЫБРАН ФАЙЛ ИДЕМ ДАЛЕЕ |
227 | JP Z,.L5 ; выбран файл, идем далее |
219 | ;ВЫБРАНА ДИРА |
228 | ; выбрана дира |
220 | ROMCALL ENTER_DIR,ROM_RST83 ;ВХОДИМ В ДИРУ |
229 | ROMCALL ENTER_DIR,ROM_RST83 ; входим в диру |
221 | LD HL,BUF_PATH |
230 | LD HL,BUF_MOVE256 |
222 | ROMCALL GET_PATH,ROM_RST83 ;ПОЛУЧАЕМ ПУТЬ ПОСЛЕ ВХОДА |
231 | ROMCALL GET_PATH,ROM_RST83 ; получаем путь после входа |
223 | EVOPORT WIN_A5,ROM_RST81 |
232 | EVOPORT WIN_A1,ROM_RST81 |
- | 233 | EVOPORT WIN_P3,RAM_FATVARS |
|
224 | LD A,(HL) |
234 | LD A,(HL) |
225 | SUB "E" |
235 | SUB 'E' |
226 | LD H,A |
236 | LD H,A |
227 | LD L,0 |
237 | LD L,0 |
228 | SRL H |
238 | SRL H |
229 | RR L |
239 | RR L |
230 | SRL H |
240 | SRL H |
231 | RR L |
241 | RR L ; * 0x40 |
232 | LD DE,BUF_WINPATH |
242 | LD DE,FATVARS.WINPOS |
233 | ADD HL,DE |
243 | ADD HL,DE |
234 | LD A,(BUF_FILEITEM) |
244 | LD A,(BUF_FILEITEM) |
235 | CP "." |
245 | CP '.' |
236 | JP NZ,SELFILES02 ;ВХОД В ДИРЕКТОРИЮ |
246 | JP NZ,.L3 ; вход в директорию |
237 | ;ВЫХОД ИЗ ДИРЕКТОРИИ, ВОССТАНОВЛЕНИЕ УСТАНОВОК ОКНА ПРЕДЫДУЩЕГО УРОВНЯ |
247 | ; выход из директории, восстановление установок окна предыдущего уровня |
238 | LD A,(HL) |
248 | LD A,(HL) |
239 | ADD A,A |
249 | ADD A,A |
240 | ADD A,(HL) |
250 | ADD A,(HL) |
241 | LD C,A |
251 | LD C,A |
242 | LD B,0 |
252 | LD B,0 |
243 | DEC (HL) ;ПЕРЕШЛИ НА ПРЕДЫДУЩУЮ ПОЗИЦИЮ |
253 | DEC (HL) ; перешли на предыдущую позицию |
244 | INC HL |
254 | INC HL |
245 | ADD HL,BC |
255 | .REREAD_WIN ADD HL,BC |
246 | DEC HL |
256 | DEC HL |
247 | LD B,(HL) |
257 | LD B,(HL) |
248 | DEC HL |
258 | DEC HL |
249 | LD C,(HL) |
259 | LD C,(HL) |
250 | DEC HL |
260 | DEC HL |
251 | LD A,(HL) |
261 | LD A,(HL) |
252 | BIT 7,(IX+7) |
262 | BIT B_ADR_PUNKT,(IX+_NUM_PKT) |
253 | JR NZ,SELFILES04 |
263 | JR NZ,.L2 |
254 | LD (IX+7),A |
264 | LD (IX+_NUM_PKT),A |
255 | LD (IX+8),C |
265 | LD (IX+_TEK_PKT_L),C |
256 | LD (IX+9),B |
266 | LD (IX+_TEK_PKT_H),B |
257 | ROMCALL FIND_FILEITEM,ROM_RST83 |
267 | ROMCALL FIND_FILEITEM,ROM_RST83 |
258 | LD (IX+0X0A),C |
268 | LD (IX+_NUM_KOL_L),C |
259 | LD (IX+0X0B),B |
269 | LD (IX+_NUM_KOL_H),B |
260 | JR SELFILES05 |
270 | JP SEARCHFILES |
261 | 271 | ||
262 | SELFILES04 LD L,(IX+8) |
272 | .L2 LD L,(IX+_TEK_PKT_L) |
263 | LD H,(IX+9) |
273 | LD H,(IX+_TEK_PKT_H) |
264 | LD (HL),A |
274 | LD (HL),A |
265 | INC HL |
275 | INC HL |
266 | LD (HL),C |
276 | LD (HL),C |
267 | INC HL |
277 | INC HL |
268 | LD (HL),B |
278 | LD (HL),B |
Line 273... | Line 283... | ||
273 | LD C,L |
283 | LD C,L |
274 | POP HL |
284 | POP HL |
275 | LD (HL),C |
285 | LD (HL),C |
276 | INC HL |
286 | INC HL |
277 | LD (HL),B |
287 | LD (HL),B |
278 | SELFILES05 PUSH BC |
- | |
279 | ROMCALL SORT_FINDFILES,ROM_RST83 |
- | |
280 | POP BC |
- | |
281 | JP FBR00 |
288 | JP SEARCHFILES |
282 | 289 | ||
283 | ;ВХОД В ДИРЕКТОРИЮ, СОХРАНЕНИЕ ТЕКУЩИХ УСТАНОВОК ОКНА |
290 | ; вход в директорию, сохранение текущих установок окна |
284 | SELFILES02 LD A,(HL) |
291 | .L3 LD A,(HL) |
285 | CP 0X10 |
292 | CP 64 / 3;0x10 |
286 | RET NC |
293 | RET NC |
287 | LD A,(HL) |
294 | LD A,(HL) |
288 | ADD A,A |
295 | ADD A,A |
289 | ADD A,(HL) |
296 | ADD A,(HL) |
290 | INC (HL) |
297 | INC (HL) |
291 | INC HL |
298 | INC HL |
292 | LD C,A |
299 | LD C,A |
293 | LD B,0 |
300 | LD B,0 |
294 | ADD HL,BC |
301 | ADD HL,BC |
295 | BIT 7,(IX+7) |
302 | BIT B_ADR_PUNKT,(IX+_NUM_PKT) |
296 | JR NZ,SELFILES06 |
303 | JR NZ,.L4 |
297 | LD A,(IX+7) |
304 | LD A,(IX+_NUM_PKT) |
298 | LD (HL),A |
305 | LD (HL),A |
299 | INC HL |
306 | INC HL |
300 | LD A,(IX+8) |
307 | LD A,(IX+_TEK_PKT_L) |
301 | LD (HL),A |
308 | LD (HL),A |
302 | INC HL |
309 | INC HL |
303 | LD A,(IX+9) |
310 | LD A,(IX+_TEK_PKT_H) |
304 | LD (HL),A |
311 | LD (HL),A |
305 | INC HL |
312 | INC HL |
306 | ROMCALL FIND_FILEITEM,ROM_RST83 |
313 | ROMCALL FIND_FILEITEM,ROM_RST83 |
307 | XOR A |
314 | XOR A |
308 | LD (IX+7),A |
315 | LD (IX+_NUM_PKT),A |
309 | LD (IX+8),A |
316 | LD (IX+_TEK_PKT_L),A |
310 | LD (IX+9),A |
317 | LD (IX+_TEK_PKT_H),A |
311 | LD (IX+0X0A),L |
318 | LD (IX+_NUM_KOL_L),L |
312 | LD (IX+0X0B),H |
319 | LD (IX+_NUM_KOL_H),H |
313 | LD B,H |
320 | LD B,H |
314 | LD C,L |
321 | LD C,L |
315 | JP SELFILES05 |
322 | JP SEARCHFILES |
316 | 323 | ||
317 | SELFILES06 LD E,(IX+8) |
324 | .L4 LD E,(IX+_TEK_PKT_L) |
318 | LD D,(IX+9) |
325 | LD D,(IX+_TEK_PKT_H) |
319 | EX DE,HL |
326 | EX DE,HL |
320 | LDI |
327 | LDI |
321 | LDI |
328 | LDI |
322 | LDI |
329 | LDI |
323 | ROMCALL FIND_FILEITEM,ROM_RST83 |
330 | ROMCALL FIND_FILEITEM,ROM_RST83 |
324 | LD L,(IX+8) |
331 | LD L,(IX+_TEK_PKT_L) |
325 | LD H,(IX+9) |
332 | LD H,(IX+_TEK_PKT_H) |
326 | XOR A |
333 | XOR A |
327 | LD (HL),A |
334 | LD (HL),A |
328 | INC HL |
335 | INC HL |
329 | LD (HL),A |
336 | LD (HL),A |
330 | INC HL |
337 | INC HL |
331 | LD (HL),A |
338 | LD (HL),A |
332 | JP SELFILES05 |
339 | JP SEARCHFILES |
333 | 340 | ||
- | 341 | ; выбран файл |
|
334 | SELFILES03 LD HL,BUF_FILEITEM |
342 | .L5 LD HL,BUF_FILEITEM |
335 | LD DE,FILES_EXT;SUPPORT_EXT |
343 | LD DE,FILES_EXT |
336 | ROMCALL CP_EXT,ROM_RST83 |
344 | ROMCALL CP_EXT,ROM_RST83 |
337 | CP _SPG ;ТОЛЬКО ОБРАЗЫ TRD,SCL,FDI,TAP |
345 | ; только образы TRD,SCL,FDI,TAP |
338 | RET NC |
- | |
339 | LD (EXT_TYPE),A |
346 | LD (EXT_TYPE),A |
340 | CP _TAP |
347 | CP _TAP |
341 | JR Z,SEL_TAP |
348 | JR Z,SEL_TAP |
342 | CP _TRD |
349 | CP _TRD |
- | 350 | JR Z,SEL_TRD |
|
- | 351 | CP _SCL |
|
343 | JR NZ,LOADIMAGES |
352 | JR Z,SEL_SCLFDI |
- | 353 | CP _FDI |
|
- | 354 | JR Z,SEL_SCLFDI |
|
- | 355 | RET |
|
- | 356 | ||
344 | LD IX,SEL_MOUNT ;ВЫВОД МЕНЮ МОНТИРОВАНИЯ ИЛИ ЗАГРУЗКИ В РАМДИСК |
357 | SEL_SCLFDI LD IX,WIN_SEL_MOUNT ; вывод меню монтирования или загрузки в рамдиск |
- | 358 | CALL INT_TXT_WINDOW |
|
- | 359 | JP SET_ADR_ATR |
|
- | 360 | ||
- | 361 | SEL_TRD LD IX,WIN_SEL_TRD |
|
345 | CALL ITWINW |
362 | CALL INT_TXT_WINDOW |
346 | JP SET_ADR_ATR |
363 | JP SET_ADR_ATR |
347 | 364 | ||
348 | ;ЕСЛИ ВЫБРАН TAP ТО ПРИНУДИТЕЛЬНОЕ ВКЛЮЧЕНИЕ ЭМУЛЯЦЦИИ ЛЕНИЫ |
365 | ; если выбран tap то принудительное включение эмуляции ленты |
349 | SEL_TAP LD H,CMOS_BYTE_00 |
366 | SEL_TAP LD H,CMOS.BYTE_00 |
350 | CALL READCMOS |
367 | CALL READCMOS |
351 | OR M_EMUL_TAPE |
368 | OR CMOS_ED.M_EMUL_TAPE |
352 | LD L,A |
369 | LD L,A |
353 | CALL IWRITECMOS |
370 | CALL IWRITECMOS |
- | 371 | ; загрузка образа |
|
- | 372 | LOADIMAGES |
|
354 | LOADIMAGES ROMCALL LOADIMAGE,ROM_RST83 |
373 | ROMCALL LOADIMAGE,ROM_RST83 |
355 | JP C,ERROR |
374 | JP C,ERROR |
356 | JP RESTART_MAIN |
375 | JP RESTART_MAIN |
357 | 376 | ||
- | 377 | ; монтирование образа TRD на A |
|
358 | MOUNT_A XOR A |
378 | MOUNT_A XOR A |
359 | JR MOUNT_TRD |
379 | JR MOUNT_D.L1 |
360 | 380 | ||
- | 381 | ; монтирование образа TRD на B |
|
361 | MOUNT_B LD A,1 |
382 | MOUNT_B LD A,1 |
362 | JR MOUNT_TRD |
383 | JR MOUNT_D.L1 |
363 | 384 | ||
- | 385 | ; монтирование образа TRD на C |
|
364 | MOUNT_C LD A,2 |
386 | MOUNT_C LD A,2 |
365 | JR MOUNT_TRD |
387 | JR MOUNT_D.L1 |
366 | 388 | ||
- | 389 | ; монтирование образа TRD на D |
|
367 | MOUNT_D LD A,3 |
390 | MOUNT_D LD A,3 |
- | 391 | .L1 PUSH AF |
|
368 | MOUNT_TRD ROMCALL OPEN_MOUNT_INT,ROM_RST83 |
392 | ROMCALL OPEN_MOUNT_INT,ROM_RST83 |
- | 393 | POP AF |
|
- | 394 | ROMCALL SET_VIRTREAL.NUMDRV,ROM_RST83 |
|
369 | JP RESTART_MAIN |
395 | JP RESTART_MAIN |
370 | 396 | ||
- | 397 | ; загрузка образа TRD в рамдиск и переключение его на D |
|
- | 398 | TRD2RAMDISKD LD A,3 |
|
- | 399 | JR TRD2RAMDISKA.L1 |
|
- | 400 | ||
- | 401 | ; загрузка образа TRD в рамдиск и переключение его на C |
|
- | 402 | TRD2RAMDISKC LD A,2 |
|
- | 403 | JR TRD2RAMDISKA.L1 |
|
- | 404 | ||
- | 405 | ; загрузка образа TRD в рамдиск и переключение его на B |
|
- | 406 | TRD2RAMDISKB LD A,1 |
|
- | 407 | JR TRD2RAMDISKA.L1 |
|
- | 408 | ||
- | 409 | ; загрузка образа TRD в рамдиск и переключение его на A |
|
- | 410 | TRD2RAMDISKA XOR A |
|
- | 411 | .L1 |
|
- | 412 | ROMCALL SET_VIRTREAL.NUMDRV,ROM_RST83 |
|
- | 413 | JR LOADIMAGES |
|
- | 414 | ||
- | 415 | ; сохранение буферов FAT внешнего софта |
|
- | 416 | STORE_FATVARS |
|
- | 417 | EVOPORT WIN_P3,RAM_FATVARS |
|
- | 418 | LD HL,BUF_DIRCEP |
|
- | 419 | LD DE,FATVARS.COPY_VARS_EXT |
|
- | 420 | LD BC,FATVARS.COPY_VARS_INT_Size |
|
- | 421 | LDIR ; сохранили буфера FAT внешнего софта |
|
- | 422 | LD HL,FATVARS.COPY_VARS_INT |
|
- | 423 | LD DE,BUF_DIRCEP |
|
- | 424 | LD BC,FATVARS.COPY_VARS_INT_Size |
|
- | 425 | LDIR ; восстановили буфера FAT внутреннего софта |
|
- | 426 | LD HL,FATVARSFLAGS |
|
- | 427 | RES FATVARSFLAGS.B_INT,(HL) |
|
- | 428 | SET FATVARSFLAGS.B_EXT,(HL) |
|
- | 429 | SET FATVARSFLAGS.B_TYPE,(HL) |
|
- | 430 | RET |
|
- | 431 | ||
- | 432 | ; восстановление FAT переменных |
|
- | 433 | RESTORE_FATVARS LD A,(FATVARSFLAGS) |
|
- | 434 | BIT FATVARSFLAGS.B_TYPE,A |
|
- | 435 | RET Z |
|
- | 436 | EVOPORT WIN_P3,RAM_FATVARS |
|
- | 437 | LD HL,BUF_DIRCEP |
|
- | 438 | LD DE,FATVARS.COPY_VARS_INT |
|
- | 439 | LD BC,FATVARS.COPY_VARS_INT_Size |
|
- | 440 | LDIR ; сохранили буфера FAT внутреннего софта |
|
- | 441 | LD HL,FATVARS.COPY_VARS_EXT |
|
- | 442 | LD DE,BUF_DIRCEP |
|
- | 443 | LD BC,FATVARS.COPY_VARS_INT_Size |
|
- | 444 | LDIR ; восстановили буфера FAT внешнего софта |
|
- | 445 | LD HL,FATVARSFLAGS |
|
- | 446 | SET FATVARSFLAGS.B_EXT,(HL) |
|
- | 447 | RES FATVARSFLAGS.B_INT,(HL) |
|
- | 448 | RES FATVARSFLAGS.B_TYPE,(HL) |
|
- | 449 | RET |
|
- | 450 | ||
371 | ;СМЕНА ДИСКА/РАЗДЕЛА |
451 | ; смена диска/раздела |
372 | SELECT_DRIVE DI |
452 | SELECT_DRIVE DI |
373 | LD IX,ENMI_SERVICE ;ОПИСАТЕЛЬ ОКНА ВЫБОРА ДИСКА/РАЗДЕЛА |
453 | LD IX,ENMI_SERVICE ; описатель окна выбора диска/раздела |
374 | LD HL,SEL_DRIVE |
454 | LD HL,SEL_DRIVE |
375 | LD D,IXH |
455 | LD D,IXH |
376 | LD E,IXL |
456 | LD E,IXL |
377 | LD BC,ESEL_DRIVE-SEL_DRIVE |
457 | LD BC,ESEL_DRIVE-SEL_DRIVE |
378 | LDIR |
458 | LDIR |
379 | LD BC,0X14-(ESEL_DRIVE-SEL_DRIVE) |
459 | LD BC,0x14-(ESEL_DRIVE-SEL_DRIVE) |
380 | EX DE,HL |
460 | EX DE,HL |
381 | ADD HL,BC |
461 | ADD HL,BC |
382 | LD (IX+0X0C),L |
462 | LD (IX+_ADR_TXT_L),L |
383 | LD (IX+0X0D),H |
463 | LD (IX+_ADR_TXT_H),H |
384 | EX DE,HL |
464 | EX DE,HL |
385 | LD BC,ETXT_SELDRIVES-TXT_SELDRIVES |
465 | LD BC,ETXT_SELDRIVES-TXT_SELDRIVES |
386 | LDIR |
466 | LDIR |
387 | LD A,(SETDVOL) ;НОМЕР ТЕКУЩЕГО ДИСКА/РАЗДЕЛА |
467 | LD A,(DEVMAN_VARS.SETDVOL) ; номер текущего диска/раздела |
388 | LD (IX+7),A |
468 | LD (IX+_NUM_PKT),A |
389 | LD (IX+8),A |
469 | LD (IX+_TEK_PKT_L),A |
390 | LD (IX+9),0 |
470 | LD (IX+_TEK_PKT_H),0 |
391 | LD A,(KOLDVOL) ;КОЛИЧЕСТВО РАЗДЕЛОВ |
471 | LD A,(DEVMAN_VARS.KOLDVOL) ; количество разделов |
392 | LD (IX+0X0A),A |
472 | LD (IX+_NUM_KOL_L),A |
393 | LD (IX+0X0B),0 |
473 | LD (IX+_NUM_KOL_H),0 |
394 | LD B,A |
474 | LD B,A |
395 | ADD A,2 |
475 | ADD A,2 |
396 | LD (IX+2),A ;УСТАНОВИЛИ ВЫСОТУ ОКНА |
476 | LD (IX+_V_SIZE),A ; установили высоту окна |
397 | PUSH DE |
477 | PUSH DE |
398 | LD DE,6 |
478 | LD DE,6 |
399 | LD HL,BUF_TABLVOL |
479 | LD HL,BUF_VOLUMES;BUF_TABLVOL |
400 | EXX |
480 | EXX |
401 | POP HL |
481 | POP HL |
402 | EXX |
482 | EXX |
403 | SELECTDRIVE1 EXX |
483 | .L1 EXX |
404 | LD (HL),0X0D |
484 | LD (HL),0x0D |
405 | INC HL |
485 | INC HL |
406 | LD (HL)," " |
486 | LD (HL),' ' |
407 | INC HL |
487 | INC HL |
408 | EXX |
488 | EXX |
409 | LD A,(HL) |
489 | LD A,(HL) |
410 | INC HL |
490 | INC HL |
411 | LD C,(HL) |
491 | LD C,(HL) |
Line 421... | Line 501... | ||
421 | EX DE,HL |
501 | EX DE,HL |
422 | LD HL,TXT4MENU_DEVICE |
502 | LD HL,TXT4MENU_DEVICE |
423 | LD C,A |
503 | LD C,A |
424 | LD B,0 |
504 | LD B,0 |
425 | ADD HL,BC |
505 | ADD HL,BC |
426 | LD BC,0X10 |
506 | LD BC,0x10 |
427 | EXX |
507 | EXX |
428 | LD A,L |
508 | LD A,L |
429 | EXX |
509 | EXX |
430 | RRCA |
510 | RRCA |
431 | RRCA |
511 | RRCA |
432 | RRCA |
512 | RRCA |
433 | AND 0X1F |
513 | AND 0x1F |
434 | ADD A,"E" |
514 | ADD A,'E' |
435 | LD (DE),A |
515 | LD (DE),A |
436 | INC DE |
516 | INC DE |
437 | LDIR |
517 | LDIR |
438 | EXX |
518 | EXX |
439 | LD A,(HL) |
519 | LD A,(HL) |
Line 448... | Line 528... | ||
448 | LD C,5 |
528 | LD C,5 |
449 | LDIR |
529 | LDIR |
450 | EX DE,HL |
530 | EX DE,HL |
451 | EXX |
531 | EXX |
452 | ADD HL,DE |
532 | ADD HL,DE |
453 | DJNZ SELECTDRIVE1 |
533 | DJNZ .L1 |
454 | EXX |
534 | EXX |
455 | LD (HL),0 |
535 | LD (HL),0 |
456 | INC HL |
536 | INC HL |
457 | LD B,(IX+2) |
537 | LD B,(IX+_V_SIZE) |
458 | DEC B |
538 | DEC B |
459 | DEC B |
539 | DEC B |
460 | LD C,B |
540 | LD C,B |
461 | LD A,"e" |
541 | LD A,'e' |
462 | LD (IX+0X12),L |
542 | LD (IX+_ADR_HOTKEY_L),L |
463 | LD (IX+0X13),H ;УСТАНОВКА АДРЕСА ГОРЯЧИХ КЛАВИШ МЕНЮ |
543 | LD (IX+_ADR_HOTKEY_H),H ; установка адреса горячих клавиш меню |
464 | LD (HL),B |
544 | LD (HL),B |
465 | INC HL |
545 | INC HL |
466 | SELECTDRIVE2 LD (HL),A |
546 | .L2 LD (HL),A |
467 | INC HL |
547 | INC HL |
468 | INC A |
548 | INC A |
469 | DJNZ SELECTDRIVE2 |
549 | DJNZ .L2 |
470 | LD (IX+0X0E),L |
550 | LD (IX+_ADR_PRG_L),L |
471 | LD (IX+0X0F),H ;УСТАНОВКА АДРЕСА СПИСКА ПОДПРОГРАММ |
551 | LD (IX+_ADR_PRG_H),H ; установка адреса списка подпрограмм |
472 | LD B,C |
552 | LD B,C |
473 | SELECTDRIVE3 LD (HL),LOW (SELDRIVE) |
553 | .L3 LD (HL),LOW (SELDRIVE) |
474 | INC HL |
554 | INC HL |
475 | LD (HL),HIGH (SELDRIVE) |
555 | LD (HL),HIGH (SELDRIVE) |
476 | INC HL |
556 | INC HL |
477 | DJNZ SELECTDRIVE3 |
557 | DJNZ .L3 |
478 | LD A,C |
558 | LD A,C |
479 | EXX |
559 | EXX |
480 | DEC A |
560 | DEC A |
481 | CALL ITWINW |
561 | CALL INT_TXT_WINDOW |
482 | JP SET_ADR_ATR |
562 | JP SET_ADR_ATR |
483 | 563 | ||
484 | SELDRIVE LD A,(IX+7) |
564 | SELDRIVE LD A,(IX+_NUM_PKT) |
485 | ROMCALL SET_VOL,ROM_RST83 |
565 | ROMCALL SET_VOL,ROM_RST83 |
- | 566 | IF 0 |
|
- | 567 | LD IX,FILESBROWSER |
|
- | 568 | LD HL,BUF_PATH |
|
- | 569 | ROMCALL GET_PATH,ROM_RST83 ; получаем путь после входа |
|
- | 570 | EVOPORT WIN_A1,ROM_RST81 |
|
- | 571 | LD A,(HL) |
|
- | 572 | SUB 'E' |
|
- | 573 | LD H,A |
|
- | 574 | LD L,0 |
|
- | 575 | SRL H |
|
- | 576 | RR L |
|
- | 577 | SRL H |
|
- | 578 | RR L |
|
- | 579 | LD DE,BUF_WINPATH |
|
- | 580 | ADD HL,DE |
|
- | 581 | LD A,(HL) |
|
- | 582 | ADD A,A |
|
- | 583 | ADD A,(HL) |
|
- | 584 | LD C,A |
|
- | 585 | LD B,0 |
|
- | 586 | JP SELECT_FILE.REREAD_WIN |
|
- | 587 | ELSE |
|
486 | JP FILEBROWSE1 |
588 | JP FILEBROWSE |
- | 589 | ENDIF |