Subversion Repositories pentevo

Rev

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