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 |
|