Subversion Repositories pentevo

Rev

Rev 1120 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1120 Rev 1186
Line 1... Line 1...
1
 
1
 
2
; LAST UPDATE: 14.10.2023 savelij
2
; LAST UPDATE: 16.02.2025 savelij
3
 
3
 
4
PAGE   
4
PAGE   
5
        TITLE "rst8service.a80 ROM_RST83"
5
        TITLE "rst8service.a80 ROM_RST83"
6
 
6
 
7
                include ../../macros.a80
7
                include macros.a80
8
                include ../../define.a80
8
                include define.a80
9
                include ../../global_vars.a80
9
                include global_vars.a80
10
                include ../../ports_ide.a80
10
                include ports_ide.a80
11
                include ../../ports_ngs.a80
11
                include ports_ngs.a80
12
                include ../../sdcomand.a80
12
                include sdcomand.a80
13
 
-
 
14
 INIT_VAR BUF_TEKVOL
-
 
15
                include ../../fat_vars.a80
-
 
16
 
-
 
17
                include ../../bootsecfat.a80
13
                include bootsecfat.a80
18
                include ../../evodos_vars.a80
14
                include evodos_vars.a80
19
                include ../../tmpkeys.a80
15
                include tmpkeys.a80
20
                include ../../nums_devices.a80
16
                include nums_devices.a80
21
                include ../../version.a80
17
                include version.a80
22
                include ../../cmd_cdhdd.a80
18
                include cmd_cdhdd.a80
23
                include ../../fat_dir.a80
19
                include fat_dir.a80
24
                include fat/sl811_equ.a80
20
                include fat/sl811_equ.a80
25
                include struct_mount.a80
21
                include struct_mount.a80
-
 
22
FATVAR
-
 
23
 _INIT_VAR BUF_CURRFATVAR
-
 
24
                include fat_vars.a80
26
 
25
 
27
USB_ENABLE      EQU 0
26
USB_ENABLE      EQU 0
28
 
27
 
29
CPU5            EQU CPU1
-
 
30
CPU6            EQU CPU2
-
 
31
WIN_A5          EQU WIN_A1
-
 
32
WIN_A6          EQU WIN_A2
-
 
33
WIN_P5          EQU WIN_P1
-
 
34
WIN_P6          EQU WIN_P2
-
 
35
 
-
 
36
_CMP_FONT       EQU 0
28
_CMP_FONT       EQU 0
37
TXTMODE_DEBUG   EQU 0
29
TXTMODE_DEBUG   EQU 0
38
 
30
 
-
 
31
TXT
39
H_FILES         EQU 60
32
.H_FILES        EQU 60
40
V_FILES         EQU 25
33
.V_FILES        EQU 25
-
 
34
ZX
-
 
35
.H_FILES        EQU 32
-
 
36
.V_FILES        EQU 24
41
 
37
 
42
MAGIC_COLOR     EQU BLUE << 3 + WHITE + BR_INK
38
MAGIC_COLOR     EQU BLUE << 3 + WHITE + BR_INK
43
 
39
 
44
        PHASE 0
40
        PHASE 0
45
                JP $                            ; 0000
41
                JP $                            ; 0000
46
 
42
 
47
                DUPL 0x0008-$,0xFF
43
                DB 0x0008-$ DUP 0xFF
48
                JP $                            ; 0008
44
                JP $                            ; 0008
49
 
45
 
50
                DUPL 0x0010-$,0xFF
46
                DB 0x0010-$ DUP 0xFF
51
                JP $                            ; 0010
47
                JP $                            ; 0010
52
 
48
 
53
                DUPL ADR_SEL_ROM-$,0xFF
49
                DB ADR_SEL_ROM-$ DUP 0xFF
54
                OUT (C),A                       ; 0014
50
                OUT (C),A                       ; 0014
55
                NOP
51
                NOP
56
                RET
52
                RET
57
 
53
 
58
                DUPL 0x0018-$,0xFF
54
                DB 0x0018-$ DUP 0xFF
59
                JP $                            ; 0018
55
                JP $                            ; 0018
60
 
56
 
61
                DUPL 0x001C-$,0xFF
57
                DB 0x001C-$ DUP 0xFF
62
                JP RST8_DOS
58
                JP RST8_DOS
63
 
59
 
64
                DUPL 0x0020-$,0xFF
60
                DB 0x0020-$ DUP 0xFF
65
                JP CALL2RAMPAGE                 ; 0020
61
                JP CALL2RAMPAGE                 ; 0020
66
 
62
 
67
                DUPL 0x0024-$,0xFF
63
                DB 0x0024-$ DUP 0xFF
68
                JP RST8PAGE0                    ; 0024
64
                JP RST8PAGE0                    ; 0024
69
 
65
 
70
                DUPL 0x0028-$,0xFF
66
                DB 0x0028-$ DUP 0xFF
71
                JP $                            ; 0028
67
                JP $                            ; 0028
72
 
68
 
73
                DUPL CONT_RST8-$,0xFF           ; 002C
69
                DB CONT_RST8-$ DUP 0xFF         ; 002C
74
                JP NEXT_RST8
70
                JP NEXT_RST8
75
 
71
 
76
; переход в страницу 4 с возвратом
72
; переход в страницу 4 с возвратом
77
                DUPL 0x0030-$,0xFF
73
                DB 0x0030-$ DUP 0xFF
78
                JP CALL2PAGE                    ; 0030
74
                JP CALL2PAGE                    ; 0030
79
 
75
 
80
; продолжение обработки нажатия MAGIC
76
; продолжение обработки нажатия MAGIC
81
                DUPL CONTINUE_MAGIC-$,0xFF      ; 0034
77
                DB CONTINUE_MAGIC-$ DUP 0xFF    ; 0034
82
                JP CONT_MAGIC
78
                JP CONT_MAGIC
83
 
79
 
84
                DUPL 0x0038-$,0xFF              ; 0038
80
                DB 0x0038-$ DUP 0xFF            ; 0038
85
;               PUSH HL                         ; 11
81
;               PUSH HL                         ; 11
86
;               LD HL,(ADR_INT)                 ; 16
82
;               LD HL,(ADR_INT)                 ; 16
87
;               EX (SP),HL                      ; 19
83
;               EX (SP),HL                      ; 19
88
;               RET                             ; 10=56
84
;               RET                             ; 10=56
89
 
85
 
90
                EI                              ; 4
86
                EI                              ; 4
91
                RET                             ; 10=14
87
                RET                             ; 10=14
92
 
88
 
93
                DUPL 0x003E-$,0xFF
89
                DB 0x003E-$ DUP 0xFF
94
                EI
90
                EI
95
                RET
91
                RET
96
 
92
 
97
; выход из RST8
93
; выход из RST8
98
EXIT_RST8       LD BC,P4_EXIT_RST8              ; адрес возврата в последней странице RAM
94
EXIT_RST8       LD BC,P4_EXIT_RST8              ; адрес возврата в последней странице RAM
Line 109... Line 105...
109
ERST8_DOS       LD BC,WIN_A0
105
ERST8_DOS       LD BC,WIN_A0
110
                LD A,6
106
                LD A,6
111
                JP ADR_SEL_ROM
107
                JP ADR_SEL_ROM
112
 
108
 
113
; обработчик MAGIC
109
; обработчик MAGIC
114
                DUPL 0x0066-$,0xFF
110
                DB 0x0066-$ DUP 0xFF
115
                NOP
111
                NOP
116
CONT_MAGIC      NOP
112
CONT_MAGIC      NOP
117
                DI
113
                DI
118
                LD HL,N_77
114
                LD HL,N_77
119
                CALL CONVERT_BPORT
115
                CALL CONVERT_BPORT
120
                CALL STORE_AY                   ; сохранение состояния регистров и заглушение AY
116
                CALL STORE_AY                   ; сохранение состояния регистров и заглушение AY
121
                LD A,(CPU6+DEBUG_ONOFF)
117
                LD A,(CPU2 + DEBUG_ONOFF)
122
                BIT B_TRACE_DBG,A
118
                BIT DEBUGGER.B_TRACE,A
123
                JP NZ,DEBUGGER                  ; если активен отладчик, то переход на его запуск
119
                JP NZ,NMI_DEBUG                 ; если активен отладчик, то переход на его запуск
124
                LD A,(N_BF)
120
                LD A,(N_BF)
125
                AND M_BREAK_BF
121
                AND M_BREAK_BF
126
                JP Z,CONT_MAGIC2
122
                JP Z,CONT_MAGIC2
127
                LD HL,(NADRRET_L)
123
                LD HL,(NADRRET_L)
128
                LD A,H
124
                LD A,H
Line 131... Line 127...
131
                LD A,L
127
                LD A,L
132
                CP 0x6C
128
                CP 0x6C
133
                JP NC,CONT_MAGIC2
129
                JP NC,CONT_MAGIC2
134
                CP 0x67
130
                CP 0x67
135
                JP C,CONT_MAGIC2
131
                JP C,CONT_MAGIC2
136
 
-
 
137
                CALL MAINPAGE3_TAP
132
                CALL MAINPAGE3_TAP
138
                LD HL,(NREG_IXL)
133
                LD HL,(NREG_IXL)
139
                LD (RREG_IXL),HL
134
                LD (RREG_IXL),HL
140
                LD HL,(NREG_E)
135
                LD HL,(NREG_E)
141
                LD (RREG_E),HL
136
                LD (RREG_E),HL
Line 150... Line 145...
150
                LD (NADRRET_L),HL
145
                LD (NADRRET_L),HL
151
                LD HL,(RREG_F)
146
                LD HL,(RREG_F)
152
                LD (NREG_F),HL
147
                LD (NREG_F),HL
153
                JP CONTMAGIC3
148
                JP CONTMAGIC3
154
 
149
 
155
                DUPL 0x00FF-$,0xFF
150
                DB 0x00FF - $ DUP 0xFF
156
                DW 0x0038
151
                DW 0x0038
157
 
152
 
158
; таблица переходов для RST 8
153
; таблица переходов для RST 8
159
CODE_TABL       DW AY_PRN_INIT_                 ; 40
154
CODE_TABL       DW AY_PRN_INIT_                 ; 40
160
                DW AY_PRN_A__                   ; 41
155
                DW AY_PRN_A__                   ; 41
Line 168... Line 163...
168
                DW SCRUP_                       ; 49
163
                DW SCRUP_                       ; 49
169
                DW SCRDN_                       ; 4A
164
                DW SCRDN_                       ; 4A
170
                DW SET_MODE_                    ; 4B
165
                DW SET_MODE_                    ; 4B
171
                DW MATH                         ; 4C
166
                DW MATH                         ; 4C
172
                DW VERSION_                     ; 4D
167
                DW VERSION_                     ; 4D
173
                DW RESERVED                     ; 4E
168
                DW EXT_FILE_BROWSER_            ; 4E
174
                DW RESERVED                     ; 4F
169
                DW NMI_FB_BLOCK_                ; 4F
175
                DW COM_DEV                      ; 50
170
                DW COM_DEV                      ; 50
176
                DW COM_FAT                      ; 51
171
                DW COM_FAT                      ; 51
177
                DW SORT_FINDFILES               ; 52
172
                DW SORT_FINDFILES               ; 52
178
                DW MOUNTER                      ; 53
173
                DW MOUNTER                      ; 53
179
                DW INST_FATBOOT_                ; 54
174
                DW INST_FATBOOT_                ; 54
Line 184... Line 179...
184
 
179
 
185
;===============
180
;===============
186
 
181
 
187
; вход в основное меню MAGIC если не перехвачено отладчиком
182
; вход в основное меню MAGIC если не перехвачено отладчиком
188
CONT_MAGIC2     LD BC,CONF_128
183
CONT_MAGIC2     LD BC,CONF_128
189
;               LD A,(N_7FFD)
-
 
190
        READ_7FFD
184
        READ_7FFD
191
                AND M_ZX_SCREEN ! 0xFF
185
                AND M_ZX_SCREEN ! 0xFF
192
                OUT (C),A                       ; включение отображения экрана 0
186
                OUT (C),A                       ; включение отображения экрана 0
193
                LD A,(N_77)
187
                LD A,(N_77)
194
                CALL CMP_SCRMODE                ; проверка видеорежима прерванной программы
188
                CALL CMP_SCRMODE                ; проверка видеорежима прерванной программы
Line 203... Line 197...
203
                RLA
197
                RLA
204
                LD (CMP_FONT_FLAG),A
198
                LD (CMP_FONT_FLAG),A
205
        ENDIF
199
        ENDIF
206
;==========времянка
200
;==========времянка
207
        ROMCALL MAGIC_FONT,ROM_RST82            ; установка временного шрифта для MAGIC режима
201
        ROMCALL MAGIC_FONT,ROM_RST82            ; установка временного шрифта для MAGIC режима
208
CONT_MAGIC1     LD A,(CPU6+DEBUG_ONOFF)
202
                LD A,(CPU2 + DEBUG_ONOFF)
209
                BIT B_DBG_ACTIV,A
203
                BIT DEBUGGER.B_ACTIV,A
210
                JP NZ,DEBUGGER                  ; если активен отладчик, то переход на его запуск
204
                JP NZ,NMI_DEBUG                 ; если активен отладчик, то переход на его запуск
-
 
205
        ROMCALL STORE_FATVARS,ROM_RST82         ; сохранили переменные FAT внешнего софта
211
                JP RESTART_NMI
206
RESTART_NMI
-
 
207
        ROMCALL CLS_TXTMODE8,ROM_RST82          ; очистка текстмодного экрана
-
 
208
        EVOPORT WIN_A1,ROM_RST83                ; включение этой страницы ROM в 1 окно проецирования
-
 
209
                LD HL,CPU1 + TEXT_PORTREGS
-
 
210
        ROMCALL PRTT_MSG,ROM_RST82              ; печать текста
-
 
211
                LD A,(SYSFLAGS)
-
 
212
                AND SYSFLAGS.M_NMI_FB_BLOCK
-
 
213
                JR Z,.L3
-
 
214
                LD HL,CPU1 + TXT_FB_BLOCKED
-
 
215
        ROMCALL PRTT_MSG,ROM_RST82              ; печать текста
-
 
216
.L3
-
 
217
        ROMCALL PRT_PORTREGS,ROM_RST82          ; печать содержимого портов считанной конфигурации
-
 
218
;==========времянка
-
 
219
        IF _CMP_FONT=1
-
 
220
                LD HL,CPU1 + TXT_VERIFY_FONT
-
 
221
        ROMCALL PRTT_MSG,ROM_RST82              ; печать текста о проверке шрифта
-
 
222
                LD A,(CMP_FONT_FLAG)
-
 
223
                RRA
-
 
224
                LD HL,CPU1 + TXT_VERIFY_OK      ; текст если все совпало
-
 
225
                JR NC,.L1
-
 
226
                LD HL,CPU1 + TXT_VERIFY_ERR     ; текст если не совпало
-
 
227
.L1
-
 
228
        ROMCALL PRTT_MSG,ROM_RST82              ; печать об ошибке
-
 
229
        ENDIF
-
 
230
;==========времянка
-
 
231
        EVOPORT WIN_A1,ROM_RST81                ; включение дополнений в 1 окно проецирования
-
 
232
                LD IX,MAIN_MENU
-
 
233
        ROMCALL SETUP4SEL,ROM_RST82
-
 
234
        ROMCALL INT_TXT_WINDOW,ROM_RST82        ; вывод окна на текстмодный экран
-
 
235
        ROMCALL ITSELECTOR,ROM_RST82
-
 
236
; восстановление буферов FAT внешнего софта
-
 
237
                AND A
-
 
238
                JP Z,.L2
-
 
239
                DEC A
-
 
240
                JP Z,RESTART_NMI                ; нажат BREAK, перезапускаемся
-
 
241
                DEC A
-
 
242
                JP Z,CONTMAGIC3
-
 
243
; выход из MAGIC
-
 
244
.L2             XOR A
-
 
245
                IN A,(0xFE)
-
 
246
                CPL
-
 
247
                AND 0x1F
-
 
248
                JR NZ,.L2                       ; ждем отпускания кнопок клавиатуры
-
 
249
        ROMCALL RESTORE_TXTMODE,ROM_RST82       ; восстановление текстмодного экрана
-
 
250
        ROMCALL RESTORE_FONT,ROM_RST82          ; восстановление шрифта
-
 
251
        ROMCALL RESTORE_PAL,ROM_RST82           ; восстановление палитры
-
 
252
CONTMAGIC3
-
 
253
;               CALL RESTORE_AY                 ; восстановление рагистров AY
-
 
254
        ROMCALL RESTORE_FATVARS,ROM_RST82       ; восстановили переменные FAT внешнего софта
-
 
255
                LD BC,EXITNMISERVICE
-
 
256
                PUSH BC
-
 
257
                LD BC,WIN_P0
-
 
258
                XOR A
-
 
259
                JP ADR_SEL_ROM
212
 
260
 
213
VERSION_        LD HL,VERSBIN >> 16
261
VERSION_        LD HL,VERSBIN >> 16
214
                LD (RREG_C),HL
262
                LD (RREG_C),HL
215
                LD HL,VERSBIN & 0xFFFF
263
                LD HL,VERSBIN & 0xFFFF
216
                LD (RREG_E),HL
264
                LD (RREG_E),HL
Line 230... Line 278...
230
.L1             LD A,L
278
.L1             LD A,L
231
                LD (RREG_A),A                   ; выставили в A что получилось
279
                LD (RREG_A),A                   ; выставили в A что получилось
232
                OUT (C),H                       ; восстановили текщее значение порта
280
                OUT (C),H                       ; восстановили текщее значение порта
233
                RET
281
                RET
234
 
282
 
-
 
283
NMI_FB_BLOCK_   LD A,(RREG_A)
-
 
284
                LD HL,SYSFLAGS
-
 
285
                RES SYSFLAGS.B_NMI_FB_BLOCK,(HL)
-
 
286
                AND A
-
 
287
                RET Z
-
 
288
                SET SYSFLAGS.B_NMI_FB_BLOCK,(HL)
-
 
289
                RET
-
 
290
 
-
 
291
EXT_FILE_BROWSER_
-
 
292
        ROMCALL EXT_FILE_BROWSER,ROM_RST82
-
 
293
                RET
-
 
294
 
235
SETUP_FONT_
295
SETUP_FONT_
236
        ROMCALL SETUP_FONT,ROM_RST81
296
        ROMCALL SETUP_FONT,ROM_RST81
237
                RET
297
                RET
238
 
298
 
239
SET_MAP_
299
SET_MAP_
Line 267... Line 327...
267
TAPE_EMUL_
327
TAPE_EMUL_
268
        ROMCALL TAPE_EMUL,ROM_RST82
328
        ROMCALL TAPE_EMUL,ROM_RST82
269
                RET
329
                RET
270
 
330
 
271
WINW_
331
WINW_
272
                ROMCALL WINW,ROM_RST82
332
        ROMCALL EXT_ZX_WINDOW,ROM_RST82
273
                RET
333
                RET
274
 
334
 
275
PRINT_MESSAGE_
335
PRINT_MESSAGE_
276
        ROMCALL PRINT_MESSAGE,ROM_RST82
336
        ROMCALL PRINT_MESSAGE,ROM_RST82
277
                RET
337
                RET
Line 308... Line 368...
308
ERST8PAGE0      LD BC,WIN_A0
368
ERST8PAGE0      LD BC,WIN_A0
309
                XOR A
369
                XOR A
310
                JP ADR_SEL_ROM
370
                JP ADR_SEL_ROM
311
 
371
 
312
SELECT_MAPPER  
372
SELECT_MAPPER  
313
;               LD A,(R_7FFD)
-
 
314
        READ_7FFD
373
        READ_7FFD
315
                AND 0x10
374
                AND 0x10
316
                RET NZ
375
                RET NZ
317
                LD A,-8
376
                LD A,-8
318
                ADD A,L
377
                ADD A,L
319
                LD L,A
378
                LD L,A
320
                RET
379
                RET
321
 
380
 
322
RESTART_NMI
-
 
323
        ROMCALL CLS_TXTMODE8,ROM_RST82          ; очистка текстмодного экрана
-
 
324
        EVOPORT WIN_A5,ROM_RST83                ; включение этой страницы ROM во 2 окно проецирования
-
 
325
                LD HL,CPU5+TEXT_PORTREGS
-
 
326
        ROMCALL PRTT_MSG,ROM_RST82              ; печать текста
-
 
327
        ROMCALL PRT_PORTREGS,ROM_RST82          ; печать содержимого портов считанной конфигурации
-
 
328
;==========времянка
-
 
329
        IF _CMP_FONT=1
-
 
330
                LD HL,CPU5+TXT_VERIFY_FONT
-
 
331
        ROMCALL PRTT_MSG,ROM_RST82              ; печать текста о проверке шрифта
-
 
332
                LD A,(CMP_FONT_FLAG)
-
 
333
                RRA
-
 
334
                LD HL,CPU5+TXT_VERIFY_OK        ; текст если все совпало
-
 
335
                JR NC,CONTMAGIC3_
-
 
336
                LD HL,CPU5+TXT_VERIFY_ERR       ; текст если не совпало
-
 
337
CONTMAGIC3_
-
 
338
        ROMCALL PRTT_MSG,ROM_RST82              ; печать об ошибке
-
 
339
        ENDIF
-
 
340
;==========времянка
-
 
341
        EVOPORT WIN_A5,ROM_RST81                ; включение дополнений в 1 окно проецирования
-
 
342
                LD IX,MAIN_MENU
-
 
343
        ROMCALL SETUP4SEL,ROM_RST82
-
 
344
        ROMCALL ITWINW,ROM_RST82                ; вывод окна на текстмодный экран
-
 
345
        ROMCALL ITSELECTOR,ROM_RST82
-
 
346
                AND A
-
 
347
                JR Z,CONTMAGIC2
-
 
348
                DEC A
-
 
349
                JR Z,RESTART_NMI
-
 
350
                DEC A
-
 
351
                JR Z,CONTMAGIC3
-
 
352
CONTMAGIC2      XOR A
-
 
353
                IN A,(0xFE)
-
 
354
                CPL
-
 
355
                AND 0x1F
-
 
356
                JR NZ,CONTMAGIC2                ; ждем отпускания кнопок клавиатуры
-
 
357
        ROMCALL RESTORE_TXTMODE,ROM_RST82       ; восстановление текстмодного экрана
-
 
358
        ROMCALL RESTORE_FONT,ROM_RST82          ; восстановление шрифта
-
 
359
        ROMCALL RESTORE_PAL,ROM_RST82           ; восстановление палитры
-
 
360
CONTMAGIC3
-
 
361
;               CALL RESTORE_AY                 ; восстановление рагистров AY
-
 
362
                LD BC,EXITNMISERVICE
-
 
363
                PUSH BC
-
 
364
                LD BC,WIN_P0
-
 
365
                XOR A
-
 
366
                JP ADR_SEL_ROM
-
 
367
 
-
 
368
; продолжение обработки RST8
381
; продолжение обработки RST8
369
NEXT_RST8       LD HL,EXIT_RST8
382
NEXT_RST8       LD HL,EXIT_RST8
370
NEXT_RST        PUSH HL
383
NEXT_RST        PUSH HL
371
                LD (INTERNAL_SP),SP
384
                LD (INTERNAL_SP),SP
372
                LD HL,R_77
385
                LD HL,R_77
Line 398... Line 411...
398
                JP (HL)
411
                JP (HL)
399
 
412
 
400
; переконфигурация окон проецирования
413
; переконфигурация окон проецирования
401
; страница переменных в окно 1, основная память в зависимости от адреса в окна 2 и 3
414
; страница переменных в окно 1, основная память в зависимости от адреса в окна 2 и 3
402
RESETUP_WINS    EXX
415
RESETUP_WINS    EXX
403
                LD BC,WIN_P5
-
 
404
                XOR A
-
 
405
                OUT (C),A                       ; страница переменных в окно 1
416
        EVOPORT WIN_P1,RAM_NMI                  ; страница переменных в окно 1
406
                LD HL,CPU3
417
                LD HL,CPU3
407
                ADD HL,SP
418
                ADD HL,SP
408
                LD SP,HL                        ; стек тоже в окно 1
419
                LD SP,HL                        ; стек тоже в окно 1
409
                LD HL,B1_CPU0-CPU5              ; для 0 маппера
420
                LD HL,B1_CPU0-CPU1              ; для 0 маппера
410
                CALL SELECT_MAPPER
421
                CALL SELECT_MAPPER
411
RESETUPWINS1    EXX
422
RESETUPWINS1    EXX
412
                LD BC,CPU6                      ; адрес чтения/записи на 0x8000 выше
423
                LD BC,CPU2                      ; адрес чтения/записи на 0x8000 выше
413
                LD A,H                          ; проверка старшего байта адреса
424
                LD A,H                          ; проверка старшего байта адреса
414
                EXX
425
                EXX
415
                CP 0x40
426
                CP 0x40
416
                JR C,RESETUPWINS2               ; установка для окон 0,1
427
                JR C,RESETUPWINS2               ; установка для окон 0,1
417
                INC HL
428
                INC HL
418
                INC HL
429
                INC HL
419
                EXX
430
                EXX
420
                LD BC,CPU5                      ; адрес чтения/записи на 0x4000 выше
431
                LD BC,CPU1                      ; адрес чтения/записи на 0x4000 выше
421
                EXX
432
                EXX
422
                CP 0x80
433
                CP 0x80
423
                JR C,RESETUPWINS2               ; установка для окон 1,2
434
                JR C,RESETUPWINS2               ; установка для окон 1,2
424
                INC HL
435
                INC HL
425
                INC HL
436
                INC HL
Line 431... Line 442...
431
                INC HL
442
                INC HL
432
                INC HL
443
                INC HL
433
                EXX
444
                EXX
434
                LD BC,CPU3                      ; адрес чтения/записи на 0x4000 ниже
445
                LD BC,CPU3                      ; адрес чтения/записи на 0x4000 ниже
435
                EXX
446
                EXX
436
                LD B,HIGH (WIN_A6)              ; старший байт адреса порта окна 2
447
                LD B,HIGH (WIN_A2)              ; старший байт адреса порта окна 2
437
                CALL RESETUPWINS4
448
                CALL RESETUPWINS4
438
                LD DE,0xFFF8
449
                LD DE,0xFFF8
439
                ADD HL,DE                       ; адрес где конфиг страниц основной памяти лежит
450
                ADD HL,DE                       ; адрес где конфиг страниц основной памяти лежит
440
                JR RESETUPWINS5
451
                JR RESETUPWINS5
441
 
452
 
442
RESETUPWINS2    LD B,HIGH (WIN_A6)              ; старший байт адреса порта окна 2
453
RESETUPWINS2    LD B,HIGH (WIN_A2)              ; старший байт адреса порта окна 2
443
                CALL RESETUPWINS4
454
                CALL RESETUPWINS4
444
RESETUPWINS5    LD B,HIGH (WIN_A3)              ; старший байт адреса порта окна 3
455
RESETUPWINS5    LD B,HIGH (WIN_A3)              ; старший байт адреса порта окна 3
445
                CALL RESETUPWINS4
456
                CALL RESETUPWINS4
446
                EXX
457
                EXX
447
                RET
458
                RET
Line 473... Line 484...
473
                LD HL,B1_CPU0                   ; байты и адреса портов 0 маппера
484
                LD HL,B1_CPU0                   ; байты и адреса портов 0 маппера
474
                CALL SELECT_MAPPER
485
                CALL SELECT_MAPPER
475
READ_CPU0_01    LD D,(HL)                       ; байт для записи в порт
486
READ_CPU0_01    LD D,(HL)                       ; байт для записи в порт
476
                INC HL
487
                INC HL
477
                LD A,(HL)                       ; старший байт адреса порта нужной страницы
488
                LD A,(HL)                       ; старший байт адреса порта нужной страницы
478
                AND HIGH (WIN_A5)
489
                AND HIGH (WIN_A1)
479
                OR HIGH (WIN_P5)                ; преобразовали старший байт адреса для включения в 1 окне
490
                OR HIGH (WIN_P1)                ; преобразовали старший байт адреса для включения в 1 окне
480
                LD B,A
491
                LD B,A
481
                LD C,LOW (WIN_A0)               ; BC = адрес порта
492
                LD C,LOW (WIN_A0)               ; BC = адрес порта
482
                LD A,(R_77)
493
                LD A,(R_77)
483
                LD E,0x3F
494
                LD E,0x3F
484
                AND 0x10                        ; определяем DOS или не DOS
495
                AND 0x10                        ; определяем DOS или не DOS
485
                JR Z,READ_CPU0_02
496
                JR Z,READ_CPU0_02
486
                DEC E
497
                DEC E
487
READ_CPU0_02    LD A,D
498
READ_CPU0_02    LD A,D
488
                AND E
499
                AND E
489
                OUT (C),A                       ; включаем пагу BASIC или DOS
500
                OUT (C),A                       ; включаем пагу BASIC или DOS
490
                LD DE,CPU5                      ; смещение до 1 окна проецирования
501
                LD DE,CPU1                      ; смещение до 1 окна проецирования
491
                LD HL,(RADRRET_L)               ; адрес откуда читать
502
                LD HL,(RADRRET_L)               ; адрес откуда читать
492
                ADD HL,DE                       ; читать через 1 окно проецирования
503
                ADD HL,DE                       ; читать через 1 окно проецирования
493
                LD A,(HL)                       ; прочитали байт
504
                LD A,(HL)                       ; прочитали байт
494
                SBC HL,DE                       ; вернули адрес байта
505
                SBC HL,DE                       ; вернули адрес байта
495
                INC HL                          ; увеличили адрес возврата
506
                INC HL                          ; увеличили адрес возврата
Line 509... Line 520...
509
                LD D,0                          ; DE = смещение в таблице байта и старшего байта страницы чтения
520
                LD D,0                          ; DE = смещение в таблице байта и старшего байта страницы чтения
510
                ADD HL,DE
521
                ADD HL,DE
511
                LD D,(HL)                       ; байт для записи в порт
522
                LD D,(HL)                       ; байт для записи в порт
512
                INC HL
523
                INC HL
513
                LD A,(HL)
524
                LD A,(HL)
514
                AND HIGH (WIN_A5)
525
                AND HIGH (WIN_A1)
515
                OR HIGH (WIN_P5)
526
                OR HIGH (WIN_P1)
516
                LD B,A
527
                LD B,A
517
                LD C,LOW (WIN_A5)               ; BC = адрес порта для 1 окна проецирования
528
                LD C,LOW (WIN_A1)               ; BC = адрес порта для 1 окна проецирования
518
                LD HL,(RADRRET_L)               ; адрес откуда читать
529
                LD HL,(RADRRET_L)               ; адрес откуда читать
519
                OUT (C),D                       ; включили страницу для чтения байта
530
                OUT (C),D                       ; включили страницу для чтения байта
520
                LD E,L                          ; младший байт адреса чтения
531
                LD E,L                          ; младший байт адреса чтения
521
                LD A,H
532
                LD A,H
522
                AND HIGH (WIN_A5)
533
                AND HIGH (WIN_A1)
523
                OR HIGH (CPU5)
534
                OR HIGH (CPU1)
524
                LD D,A                          ; старший байт адреса чтения
535
                LD D,A                          ; старший байт адреса чтения
525
                LD A,(DE)                       ; прочитали байт
536
                LD A,(DE)                       ; прочитали байт
526
                INC HL                          ; увеличили адрес возврата
537
                INC HL                          ; увеличили адрес возврата
527
                LD (RADRRET_L),HL               ; вернули адрес возврата
538
                LD (RADRRET_L),HL               ; вернули адрес возврата
528
READBYTE_02     LD (NEXTBYTERST8),A             ; положили прочитанный байт
539
READBYTE_02     LD (NEXTBYTERST8),A             ; положили прочитанный байт
Line 632... Line 643...
632
                LD BC,8
643
                LD BC,8
633
                LD A,C                          ; конвертить 8 байт
644
                LD A,C                          ; конвертить 8 байт
634
                ADD HL,BC
645
                ADD HL,BC
635
                LD BC,B0_CPU0
646
                LD BC,B0_CPU0
636
                LD IYL,HIGH (WIN_A3)&0xF8
647
                LD IYL,HIGH (WIN_A3) & 0xF8
637
CBPORT03        EX AF,AF'
648
.L3             EX AF,AF'
638
                LD A,(HL)
649
                LD A,(HL)
639
                CP 0xC0
650
                CP 0xC0
640
                JR NC,CBPORT01
651
                JR NC,.L1
641
; если число менее, то восстанавливать в порты x7F7
652
; если число менее, то восстанавливать в порты x7F7
642
                LD (BC),A                       ; номер страницы для записи в порт при восстановлении
653
                LD (BC),A                       ; номер страницы для записи в порт при восстановлении
643
                INC BC
654
                INC BC
644
                LD A,IYL
655
                LD A,IYL
645
                ADD A,0x40
656
                ADD A,0x40
Line 647... Line 658...
647
                AND 0xF0
658
                AND 0xF0
648
                SRL E
659
                SRL E
649
                SRL D
660
                SRL D
650
                LD (BC),A                       ; старший байт адреса порта
661
                LD (BC),A                       ; старший байт адреса порта
651
                INC BC
662
                INC BC
652
                JR CBPORT02
663
                JR .L2
653
 
664
 
654
; если число больше, то восстанавливать в порты xFF7
665
; если число больше, то восстанавливать в порты xFF7
655
CBPORT01        LD A,(HL)
666
.L1             LD A,(HL)
656
                RLCA
667
                RLCA
657
                RLCA
668
                RLCA
658
                SRL D
669
                SRL D
659
                RRA
670
                RRA
660
                SRL E
671
                SRL E
Line 664... Line 675...
664
                LD A,IYL
675
                LD A,IYL
665
                ADD A,0x40
676
                ADD A,0x40
666
                LD IYL,A
677
                LD IYL,A
667
                LD (BC),A                       ; старший байт адреса порта
678
                LD (BC),A                       ; старший байт адреса порта
668
                INC BC
679
                INC BC
669
CBPORT02        DEC HL
680
.L2             DEC HL
670
                EX AF,AF'
681
                EX AF,AF'
671
                DEC A
682
                DEC A
672
                JR NZ,CBPORT03
683
                JR NZ,.L3
673
                POP HL
684
                POP HL
674
                LD L,0xBC
685
                LD L,0xBC
675
                LD A,H
686
                LD A,H
676
                AND 0x0F
687
                AND 0x0F
677
                OR 0xA0
688
                OR 0xA0
Line 749... Line 760...
749
;               OUTI
760
;               OUTI
750
;               DEC A
761
;               DEC A
751
;               JP P,.L2
762
;               JP P,.L2
752
;               RET
763
;               RET
753
 
764
 
754
SYMS4SORT       DB ".!#$%&'()-0123456789@ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`{}~",0x7F
-
 
755
                DB "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯЁ",0
-
 
756
 
-
 
757
X_OFFSET        EQU 63
765
X_OFFSET        EQU 63
758
Y_OFFSET        EQU 2
766
Y_OFFSET        EQU 2
759
TEXT_PORTREGS   DB 0x17,MAGIC_COLOR
767
TEXT_PORTREGS   DB 0x17,MAGIC_COLOR
760
                DB 0x16,Y_OFFSET+0x01,X_OFFSET+0,"SP:      PC:"
768
                DB 0x16,Y_OFFSET+0x01,X_OFFSET+0,"SP:      PC:"
761
                DB 0x16,Y_OFFSET+0x02,X_OFFSET+0,"IR:"
769
                DB 0x16,Y_OFFSET+0x02,X_OFFSET+0,"IR:"
Line 775... Line 783...
775
                DB 0x16,Y_OFFSET+0x12,X_OFFSET+0,"  77:   5F:"
783
                DB 0x16,Y_OFFSET+0x12,X_OFFSET+0,"  77:   5F:"
776
                DB 0x16,Y_OFFSET+0x13,X_OFFSET+0,"  BF:   3F:"
784
                DB 0x16,Y_OFFSET+0x13,X_OFFSET+0,"  BF:   3F:"
777
                DB 0x16,Y_OFFSET+0x14,X_OFFSET+0," DOS:   1F:"
785
                DB 0x16,Y_OFFSET+0x14,X_OFFSET+0," DOS:   1F:"
778
                DB 0x16,Y_OFFSET+0x15,X_OFFSET+0,"BREAK: "
786
                DB 0x16,Y_OFFSET+0x15,X_OFFSET+0,"BREAK: "
779
                DB 0x16,Y_OFFSET+0x16,X_OFFSET+0,"TURBO: "
787
                DB 0x16,Y_OFFSET+0x16,X_OFFSET+0,"TURBO: "
780
                DB 0x16,1,0x10,0x17,0x32," EVO Magic Service beta ",0
788
                DB 0x16,1,0x10,0x17,%00110010," EVO Magic Service v"
-
 
789
                DB VERSBIOS,"beta ",0
781
 
790
 
782
TXT_VERIFY_FONT DB 0x16,0x18,0,0x17,0x22,"  VERIFY READING FONT ",0
791
TXT_VERIFY_FONT DB "\x16\x18\x00\x17\x22  VERIFY READING FONT ",0
783
TXT_VERIFY_OK   DB " OK    ",0
792
TXT_VERIFY_OK   DZ " OK    "
784
TXT_VERIFY_ERR  DB "ERROR  ",0
793
TXT_VERIFY_ERR  DZ "ERROR  "
-
 
794
TXT_FB_BLOCKED  DZ "\x16\x17\x08\x17\xBA  File Browser is blocked  "
785
 
795
 
786
; проверка считанного фонта
796
; проверка считанного фонта
787
        IF _CMP_FONT=1
797
        IF _CMP_FONT=1
788
CMP_FONT        LD H,CMOS_BYTE_00
798
CMP_FONT        LD H,CMOS_BYTE_00
789
        ROMCALL READCMOS,ROM_RST82
799
        ROMCALL READCMOS,ROM_RST82
790
                AND M_TYPE_FONT
800
                AND M_TYPE_FONT
791
                LD HL,CP866_FONT
801
                LD HL,CP866_FONT
792
                JR NZ,CMPFONT1
802
                JR NZ,.L1
793
                LD HL,ATM_FONT
803
                LD HL,ATM_FONT
794
CMPFONT1        LD DE,CPU1+OFFSET_BUFSYM
804
.L1             LD DE,CPU1 + OFFSET_BUFSYM
795
                PUSH DE
805
                PUSH DE
796
        ROMCALL UNPACK,ROM_RST80
806
        ROMCALL UNPACK,ROM_RST80
797
                POP DE
807
                POP DE
798
                INC D
808
                INC D
799
                LD BC,0x700
809
                LD BC,0x700
800
                LD HL,CPU1+OFFSET_FNTSAVE+0x100
810
                LD HL,CPU1 + OFFSET_FNTSAVE + 0x100
801
CMPFONT2        LD A,(DE)
811
.L2             LD A,(DE)
802
                INC DE
812
                INC DE
803
                CP (HL)
813
                CP (HL)
804
                SCF
814
                SCF
805
                RET NZ
815
                RET NZ
806
                CPI
816
                CPI
807
                JP PE,CMPFONT2
817
                JP PE,.L2
808
                XOR A
818
                XOR A
809
                RET
819
                RET
810
        ENDIF
820
        ENDIF
811
 
821
 
812
CMP_SCRMODE     LD HL,FLAGS
822
CMP_SCRMODE     LD HL,SYSFLAGS
813
                RES B_VIDEO_MODE,(HL)
823
                RES SYSFLAGS.B_VIDEO_MODE,(HL)
814
                AND 7
824
                AND 7
815
                CP 3
825
                CP 3
816
                RET Z
826
                RET Z
817
                SET B_VIDEO_MODE,(HL)
827
                SET SYSFLAGS.B_VIDEO_MODE,(HL)
818
                RET
828
                RET
819
 
829
 
820
SD_CARD_LOST    LD HL,FLAGS_DRV
830
SD_CARD_LOST    LD HL,DEVMAN_VARS.FLAGS_DRV
821
                LD A,B_NEW_SD
831
                LD A,B_NEW_SD
822
                OR (HL)
832
                OR (HL)
823
                LD (HL),A
833
                LD (HL),A
824
        PEC_ON M_SHADOW_BF
834
        PEC_ON M_SHADOW_BF
825
                CALL MAIN_MEM13
835
                CALL MAIN_MEM13
826
                LD IX,SDCARD_LOST
836
                LD IX,SDCARD_LOST
827
        ROMCALL IWINW,ROM_RST82
837
        ROMCALL INT_ZX_WINDOW,ROM_RST82
828
                JR $
838
                JR $
829
 
839
 
830
                include math.a80
840
                include math.a80
831
                include sortfiles.a80
841
                include sortfiles.a80
832
 
842
 
833
FREE_MAIN       EQU 0x3FF6-$
843
FREE_MAIN       EQU 0x3FF6-$
834
 
844
 
835
                DUPL FREE_MAIN,0xFF
845
                DB FREE_MAIN DUP 0xFF
836
                DW FREE_MAIN                    ; размер свободного места
846
                DW FREE_MAIN                    ; размер свободного места
837
                DB "RST_08"
847
                DB "RST_08"
838
                DW DATA_VERS
848
                DW DATA_VERS
839
        DEPHASE
849
        DEPHASE
840
 
850