Subversion Repositories pentevo

Rev

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

Rev 1035 Rev 1186
Line 1... Line 1...
1
 
1
 
2
; LAST UPDATE: 09.11.2022 savelij
2
; LAST UPDATE: 16.02.2025 savelij
3
 
3
 
4
ITSELECTOR      LD HL,FLAGS
4
ITSELECTOR      LD HL,SYSFLAGS
5
                RES B_MOUSE_PRESENT,(HL)        ;ПРИНУДИТЕЛЬНОЕ ОТКЛЮЧЕНИЕ МЫШИ ДЛЯ ТЕКСТМОДА
5
                RES SYSFLAGS.B_MOUSE_PRESENT,(HL); принудительное отключение мыши для текстмода
6
                SET B_VIDEO_MODE,(HL)           ;МЕНЮ ТЕКСТОВОГО ВИДЕОРЕЖИМА
6
                SET SYSFLAGS.B_VIDEO_MODE,(HL)  ; меню текстового видеорежима
7
                LD HL,KEYBOARDS
7
                LD HL,KEYBOARDS
8
                LD (ADR_INT),HL                 ;ПО ПРЕРЫВАНИЯМ БУДЕТ ОПРОС КЛАВИАТУРЫ
8
                LD (ADR_INT),HL                 ; по прерываниям будет опрос клавиатуры
9
                LD (OLD_STACK),SP
9
                LD (OLD_STACK),SP
10
                JR SELECTOR
10
                JR SELECTOR
11
 
11
 
12
ISELECTOR       LD HL,FLAGS
12
ISELECTOR       LD HL,SYSFLAGS
13
                RES B_VIDEO_MODE,(HL)
13
                RES SYSFLAGS.B_VIDEO_MODE,(HL)
14
                CALL DETECTMOUSE
14
                CALL DETECTMOUSE
15
                LD (OLD_STACK),SP
15
                LD (OLD_STACK),SP
16
SELECTOR        EI     
16
SELECTOR        EI     
17
                LD A,(FLAGS)
17
                LD A,(SYSFLAGS)
18
                AND M_MOUSE_PRESENT                     ;ПРОВЕРКА НАЛИЧИЯ МЫШИ
18
                AND SYSFLAGS.M_MOUSE_PRESENT    ; проверка наличия мыши
19
                JR Z,_RULNMO
19
                JR Z,_RULNMO
20
;FIX КОЛЕСО МЫШИ
20
; FIX колесо мыши
21
MKEYPR          EI
21
MKEYPR          EI
22
                LD A,0XFA
22
                LD A,HIGH (MOUSE_KEYS)
23
                IN A,(0XDF)
23
                IN A,(LOW (MOUSE_KEYS))
24
                CPL
24
                CPL
25
                AND 7
25
                AND %00000111
26
                JR NZ,MKEYPR
26
                JR NZ,MKEYPR
27
_RULNMO         CALL SAVE2X2                    ;ЕСЛИ МЕНЮ НАПЕЧАТАЛИ ПОВЕРХ СТРЕЛКИ
27
_RULNMO         CALL SAVE2X2                    ; если меню напечатали поверх стрелки
28
                CALL SET_ADR_ATR                ;УСТАНОВКА НОВОГО АДРЕСА ДЛЯ ЦВЕТНОЙ ПОЛОСКИ
28
                CALL SET_ADR_ATR                ; установка нового адреса для цветной полоски
29
                LD HL,FLAGS_KEY
29
                LD HL,FLAGS_KEY
30
                RES 5,(HL)                      ;НА КЛАВИАТУРЕ НИЧЕГО НЕ НАЖАТО
30
                RES 5,(HL)                      ; на клавиатуре ничего не нажато
31
                JR MAINLOP
31
                JR MAINLOP
32
 
32
 
33
;НАЖАТА СТРЕЛКА ВВЕРХ
33
; нажата стрелка вверх
34
UP              CALL CURSOR_UP                  ;СМЕНИЛИ ТЕКУЩИЙ ПУНКТ НА -1
34
UP              CALL CURSOR_UP                  ; сменили текущий пункт на -1
35
                JR SET_POS1                    
35
                JR SET_POS1                    
36
 
36
 
37
;НАЖАТА СТРЕЛКА ВПРАВО
37
; нажата стрелка вправо
38
RIGHT           BIT 1,(IX+6)                    ;ПРОВЕРКА ПРОСТО МЕНЮ ИЛИ ФАЙЛОВОЕ
38
RIGHT           BIT 1,(IX+_FLAGS)               ; проверка просто меню или файловое
39
                PUSH AF                         ;СОХРАНИЛИ РЕЗУЛЬТАТ ПРОВЕРКИ
39
                PUSH AF                         ; сохранили результат проверки
40
                CALL NZ,PAGEDN                  ;ЕСЛИ ФАЙЛОВОЕ, ТО ЛИСТАНИЕ СТРАНИЧНОЕ
40
                CALL NZ,PAGEDN                  ; если файловое, то листание страничное
41
                POP AF                          ;ВОССТАНОВИЛИ РЕЗУЛЬТАТ ПРОВЕРКИ
41
                POP AF                          ; восстановили результат проверки
42
                JR NZ,SET_POS1                  ;ЕСЛИ ФАЙЛОВОЕ ПРОДОЛЖАЕМ
42
                JR NZ,SET_POS1                  ; если файловое продолжаем
43
                LD A,(IX+0X0A)
43
                LD A,(IX+_NUM_KOL_L)
44
                AND A
44
                AND A
45
                JR Z,SET_POS
45
                JR Z,SET_POS
46
                DEC A                           ;ИНАЧЕ ПЕРЕХОД КУРСОРА НА ПОСЛЕДНИЙ ПУНКТ
46
                DEC A                           ; иначе переход курсора на последний пункт
47
                JR SET_POS                      ;ИЗМЕНЯЕМ ПОЛОЖЕНИЕ КУРСОРА И ПРОДОЛЖАЕМ
47
                JR SET_POS                      ; изменяем положение курсора и продолжаем
48
 
48
 
49
;НАЖАТА СТРЕЛКА ВНИЗ
49
; нажата стрелка вниз
50
DOWN            CALL CURSOR_DOWN                ;СМЕНИЛИ ТЕКУЩИЙ ПУНКТ НА +1
50
DOWN            CALL CURSOR_DOWN                ; сменили текущий пункт на +1
51
                JR SET_POS1
51
                JR SET_POS1
52
 
52
 
53
;НАЖАТА СТРЕЛКА ВЛЕВО
53
; нажата стрелка влево
54
LEFT            BIT 1,(IX+6)                    ;ПРОВЕРКА ПРОСТО МЕНЮ ИЛИ ФАЙЛОВОЕ
54
LEFT            BIT 1,(IX+_FLAGS)               ; проверка просто меню или файловое
55
                PUSH AF                         ;СОХРАНИЛИ РЕЗУЛЬТАТ ПРОВЕРКИ
55
                PUSH AF                         ; сохранили результат проверки
56
                CALL NZ,PAGEUP                  ;ЕСЛИ ФАЙЛОВОЕ, ТО ЛИСТАНИЕ СТРАНИЧНОЕ
56
                CALL NZ,PAGEUP                  ; если файловое, то листание страничное
57
                POP AF                          ;ВОССТАНОВИЛИ РЕЗУЛЬТАТ ПРОВЕРКИ
57
                POP AF                          ; восстановили результат проверки
58
                JR NZ,SET_POS1                  ;ЕСЛИ ФАЙЛОВОЕ ПРОДОЛЖАЕМ
58
                JR NZ,SET_POS1                  ; если файловое продолжаем
59
                XOR A                           ;ИНАЧЕ ПЕРЕХОД КУРСОРА НА ПЕРВЫЙ ПУНКТ
59
                XOR A                           ; иначе переход курсора на первый пункт
60
SET_POS         BIT 7,(IX+7)
60
SET_POS         BIT B_ADR_PUNKT,(IX+_NUM_PKT)
61
                JR Z,SET_POS3
61
                JR Z,SET_POS3
62
                LD L,(IX+8)
62
                LD L,(IX+_TEK_PKT_L)
63
                LD H,(IX+9)
63
                LD H,(IX+_TEK_PKT_H)
64
                LD (HL),A
64
                LD (HL),A
65
                INC HL
65
                INC HL
66
                LD (HL),A
66
                LD (HL),A
67
                INC HL
67
                INC HL
68
                LD (HL),0
68
                LD (HL),0
69
                JR SET_POS1
69
                JR SET_POS1
70
 
70
 
71
SET_POS3        LD (IX+7),A                     ;ИЗМЕНИЛИ ПОЗИЦИЮ КУРСОРА
71
SET_POS3        LD (IX+_NUM_PKT),A              ; изменили позицию курсора
72
                LD (IX+8),A
72
                LD (IX+_TEK_PKT_L),A
73
                LD (IX+9),0                     ;ИЗМЕНИЛИ НОМЕР ВЫБРАННОГО ПУНКТА
73
                LD (IX+_TEK_PKT_H),0            ; изменили номер выбранного пункта
74
SET_POS1        CALL COLOR_CURSOR               ;ПЕРЕРИСОВКА ЦВЕТНОЙ ПОЛОСКИ МЕНЮ
74
SET_POS1        CALL COLOR_CURSOR               ; перерисовка цветной полоски меню
75
MAINLOP         LD HL,FLAGS_KEY
75
MAINLOP         LD HL,FLAGS_KEY
76
                RES 5,(HL)                      ;СБРОС НАЖАТЫХ КНОПОК
76
                RES 5,(HL)                      ; сброс нажатых кнопок
77
                LD A,(FLAGS)
77
                LD A,(SYSFLAGS)
78
                AND M_MOUSE_PRESENT             ;ПРОВЕРКА НАЛИЧИЯ МЫШИ
78
                AND SYSFLAGS.M_MOUSE_PRESENT    ; проверка наличия мыши
79
                JP Z,MAINNMO
79
                JP Z,MAINNMO
80
                LD HL,(ARXY)                    ;СТАРАЯ КООРДИНАТА МЫШИ
80
                LD HL,(ARXY)                    ; старая координата мыши
81
                PUSH HL
81
                PUSH HL
82
                CALL MOUSE                      ;ОПРОС ПОРТОВ МЫШИ
82
                CALL MOUSE                      ; опрос портов мыши
83
                POP BC
83
                POP BC
84
                AND A
84
                AND A
85
                SBC HL,BC
85
                SBC HL,BC
86
                JR Z,NO_SELECT                  ;НЕ БЫЛО ДВИЖЕНИЯ МЫШИ
86
                JR Z,NO_SELECT                  ; не было движения мыши
87
                CALL MOUOPT                     ;ПРОВЕРКА НАВЕДЕНИЯ МЫШИ НА ЗАДАННОЕ ОКНО
87
                CALL MOUOPT                     ; проверка наведения мыши на заданное окно
88
NO_SELECT       LD BC,0XFADF
88
NO_SELECT       LD BC,MOUSE_KEYS
89
                IN A,(C)                        ;ОПРОС НАЖАТИЯ КНОПОК МЫШИ
89
                IN A,(C)                        ; опрос нажатия кнопок мыши
90
                AND 7
90
                AND 7
91
                CP 6
91
                CP 6
92
                JR Z,PRESS_MOUSE                ;ЕСЛИ НАЖАТА ЛЕВАЯ КНОПКА МЫШИ
92
                JR Z,PRESS_MOUSE                ; если нажата левая кнопка мыши
93
                CP 5
93
                CP 5
94
                JP Z,RESTART                    ;ЕСЛИ НАЖАТА ПРАВАЯ КНОПКА МЫШИ
94
                JP Z,RESTART                    ; если нажата правая кнопка мыши
95
                CALL PRINTTIME                  ;ОБНОВИЛИ ВРЕМЯ ЕСЛИ ИЗМЕНИЛОСЬ
95
                CALL PRINTTIME                  ; обновили время если изменилось
96
                EI
96
                EI
97
                CALL REST2X2                    ;ВОССТАНОВИЛИ КУСОК ЭКРАНА ПОД МЫШЬЮ
97
                CALL REST2X2                    ; восстановили кусок экрана под мышью
98
                CALL DRAW_MOUSE                 ;НАРИСОВАЛИ КУРСОР МЫШИ
98
                CALL DRAW_MOUSE                 ; нарисовали курсор мыши
99
                JR MAINQMO                      ;ПРОДОЛЖЕНИЕ ОПРОСА
99
                JR MAINQMO                      ; продолжение опроса
100
 
100
 
101
PRESS_MOUSE     CALL OPMSPL
101
PRESS_MOUSE     CALL OPMSPL
102
                AND A
102
                AND A
103
                JR Z,CP_MOUSE4
103
                JR Z,CP_MOUSE4
104
                LD (LAST_K),A
104
                LD (LAST_K),A
105
                CALL TIMELP
105
                CALL TIMELP
106
                JR SELECT_KEY
106
                JR SELECT_KEY
107
 
107
 
108
CP_MOUSE4       CALL MOUOPT                     ;ПРОВЕРКА ПОПАДАНИЯ МЫШИ В ПРЕДЕЛЫ ТЕКУЩЕГО ОКНА
108
CP_MOUSE4       CALL MOUOPT                     ; проверка попадания мыши в пределы текущего окна
109
                JR C,MAINNMO                    ;НЕ ПОПАЛИ И ЕДЕМ ДАЛЕЕ
109
                JR C,MAINNMO                    ; не попали и едем далее
110
                LD E,(IX+7)                     ;ВЗЯЛИ НОМЕР ПУНКТА КУДА ПОПАЛИ МЫШЬЮ
110
                LD E,(IX+_NUM_PKT)              ; взяли номер пункта куда попали мышью
111
                BIT 7,E
111
                BIT B_ADR_PUNKT,E
112
                JR Z,CP_MOUSE5
112
                JR Z,CP_MOUSE5
113
                LD L,(IX+8)
113
                LD L,(IX+_TEK_PKT_L)
114
                LD H,(IX+9)
114
                LD H,(IX+_TEK_PKT_H)
115
                LD E,(HL)
115
                LD E,(HL)
116
CP_MOUSE5       LD D,0
116
CP_MOUSE5       LD D,0
117
                LD HL,(PRESSEDKEY)              ;АДРЕС СПИСКА ХОТКЕЕВ ТЕКУЩЕГО ОКНА
117
                LD HL,(PRESSEDKEY)              ; адрес списка хоткеев текущего окна
118
                ADD HL,DE                       ;АДРЕС ХОТКЕЯ ВЫБРАННОГО ПУНКТА
118
                ADD HL,DE                       ; адрес хоткея выбранного пункта
119
                LD DE,LAST_K
119
                LD DE,LAST_K
120
                LDI                             ;ИМИТАЦИЯ НАЖАТИЯ ЗАДАННОЙ КНОПКИ
120
                LDI                             ; имитация нажатия заданной кнопки
121
                JR ENTER
121
                JR ENTER
122
               
122
               
123
MAINNMO         CALL PRINTTIME                  ;ОБНОВЛЕНИЕ ВРЕМЕНИ, ЕСЛИ В ОНО ОБНОВИЛОСЬ
123
MAINNMO         CALL PRINTTIME                  ; обновление времени, если в оно обновилось
124
                EI
124
                EI
125
                HALT
125
                HALT
126
MAINQMO         LD A,(FLAGS_KEY)
126
MAINQMO         LD A,(FLAGS_KEY)
127
                BIT 5,A                         ;ПРОВЕРКА НАЖАТИЯ КНОПОК КЛАВИАТУРЫ
127
                BIT 5,A                         ; проверка нажатия кнопок клавиатуры
128
                JP Z,MAINLOP                    ;ПРОДОЛЖАЕМ ОПРОС УПРАВЛЕНИЯ
128
                JP Z,MAINLOP                    ; продолжаем опрос управления
129
                ROMCALL BREAK_KEY,ROM_RST82     ;ПРОВЕРКА НА BREAK
129
        ROMCALL BREAK_KEY,ROM_RST82             ; проверка на BREAK
130
                JR C,SELECT_KEY                 ;ЕСЛИ BREAK НЕ НАЖАТ ПРОДОЛЖАЕМ
130
                JR C,SELECT_KEY                 ; если BREAK не нажат продолжаем
131
RESTART         DI
131
RESTART         DI
-
 
132
                CALL RESTORE_FATVARS            ; восстановление FAT переменных
132
                CALL TRESTORE_CLINE
133
                CALL TRESTORE_CLINE             ; восстановление цвета в меню
133
                LD A,1
134
                LD A,1
134
                RET
135
                RET
135
 
136
 
136
SELECT_KEY      DI
137
SELECT_KEY      DI
137
                LD HL,SET_POS1
138
                LD HL,SET_POS1
138
                PUSH HL
139
                PUSH HL
139
                LD HL,LAST_K
140
                LD HL,LAST_K
140
                LD A,(HL)                       ;ВЗЯЛИ НАЖАТУЮ КЛАВИШУ
141
                LD A,(HL)                       ; взяли нажатую клавишу
141
                LD B,0
142
                LD B,0
142
                LD HL,MAIN_KEYS
143
                LD HL,MAIN_KEYS
143
                LD C,(HL)                       ;КОЛИЧЕСТВО ДОСТУПНЫХ КНОПОК
144
                LD C,(HL)                       ; количество доступных кнопок
144
                LD D,C
145
                LD D,C
145
                INC HL
146
                INC HL
146
                CPIR
147
                CPIR
147
                JR NZ,NOMAINKEYS                ;НИЧЕГО НЕ НАШЛИ, ДАЛЕЕ СМОТРИМ КНОПКИ ТЕКУЩЕГО ОКНА
148
                JR NZ,NOMAINKEYS                ; ничего не нашли, далее смотрим кнопки текущего окна
148
                                                ;НАЖАТО ЧТО-ТО ИЗ ГЛАВНЫХ КНОПОК, ДОСТУПНЫХ ВСЕГДА
149
                                                ; нажато что-то из главных кнопок, доступных всегда
149
                LD HL,ADREXEKEYS
150
                LD HL,ADREXEKEYS
150
                LD A,D                          ;КОЛИЧЕСТВО КНОПОК В ТАБЛИЦЕ -1
151
                LD A,D                          ; количество кнопок в таблице -1
151
                SUB C                           ;ПОЛУЧИЛИ ВЫБРАННЫЙ НОМЕР
152
                SUB C                           ; получили выбранный номер
152
                DEC A
153
                DEC A
153
                ADD A,A
154
                ADD A,A
154
                ADD A,L
155
                ADD A,L
155
                LD L,A
156
                LD L,A
156
                ADC A,H
157
                ADC A,H
Line 160... Line 161...
160
                INC HL
161
                INC HL
161
                LD H,(HL)
162
                LD H,(HL)
162
                LD L,A
163
                LD L,A
163
                JP (HL)
164
                JP (HL)
164
 
165
 
165
;ПРОВЕРКА ХОТКЕЕВ В ТЕКУЩЕМ ОКНЕ
166
; проверка хоткеев в текущем окне
166
NOMAINKEYS      LD L,(IX+0X12)
167
NOMAINKEYS      LD L,(IX+_ADR_HOTKEY_L)
167
                LD H,(IX+0X13)                  ;АДРЕС СПИСКА НАЖАТЫХ КНОПОК ТЕКУЩЕГО ОКНА
168
                LD H,(IX+_ADR_HOTKEY_H)         ; адрес списка нажатых кнопок текущего окна
168
                LD C,A
169
                LD C,A
169
                LD A,H
170
                LD A,H
170
                OR L
171
                OR L
171
                JP Z,MAINLOP                    ;ЕСЛИ СПИСКА НЕТ, ПРОДОЛЖАЕМ ОПРОС
172
                JP Z,MAINLOP                    ; если списка нет, продолжаем опрос
172
                LD A,C
173
                LD A,C
173
                LD C,(IX+2)
174
                LD C,(IX+_V_SIZE)
174
                LD E,(HL)
175
                LD E,(HL)
175
                INC HL
176
                INC HL
176
                DEC C                           ;КОЛИЧЕСТВО КНОПОК
177
                DEC C                           ; количество кнопок
177
                DEC C                           ;ВЫСОТА ОКНА -2
178
                DEC C                           ; высота окна -2
178
                LD D,C
179
                LD D,C
179
                LD B,0
180
                LD B,0
180
                CPIR                            ;СКАНИРОВАНИЕ СПИСКА ЗАДАННЫХ КЛАВИШ
181
                CPIR                            ; сканирование списка заданных клавиш
181
                JR NZ,OSTAT_KEYS
182
                JR NZ,OSTAT_KEYS
182
                LD A,D                          ;ВЫСОТА ОКНА
183
                LD A,D                          ; высота окна
183
                SUB C
184
                SUB C
184
                DEC A                           ;ПОЛУЧИЛИ НОМЕР НАЖАТОЙ КНОПКИ И -1
185
                DEC A                           ; получили номер нажатой кнопки и -1
185
                BIT 7,(IX+7)
186
                BIT B_ADR_PUNKT,(IX+_NUM_PKT)
186
                JR Z,ENTER1
187
                JR Z,ENTER1
187
                LD L,(IX+8)
188
                LD L,(IX+_TEK_PKT_L)
188
                LD H,(IX+9)
189
                LD H,(IX+_TEK_PKT_H)
189
                LD (HL),A
190
                LD (HL),A
190
                INC HL
191
                INC HL
191
                LD (HL),A
192
                LD (HL),A
192
                JR ENTER
193
                JR ENTER
193
 
194
 
194
ENTER1          LD (IX+7),A                     ;НОМЕР ПУНКТА В ОКНЕ
195
ENTER1          LD (IX+_NUM_PKT),A              ; номер пункта в окне
195
                LD (IX+8),A                     ;НОМЕР НАЖАТОЙ КЛАВИШИ ПО УКАЗАННОМУ СПИСКУ
196
                LD (IX+_TEK_PKT_L),A            ; номер нажатой клавиши по указанному списку
196
ENTER           LD A,(FLAGS)
197
ENTER           LD A,(SYSFLAGS)
197
                AND M_MOUSE_PRESENT
198
                AND SYSFLAGS.M_MOUSE_PRESENT
198
                CALL NZ,TIMELP                  ;ОБНОВЛЕНИЕ ВРЕМЕНИ ЕСЛИ ОНО ИЗМЕНИЛОСЬ 
199
                CALL NZ,TIMELP                  ; обновление времени если оно изменилось        
199
                CALL REST2X2                    ;СТЕРЛИ КУРСОР МЫШИ
200
                CALL REST2X2                    ; стерли курсор мыши
200
                LD A,(IX+7)                     ;НОМЕР ИЗ СПИСКА КОТОРЫЙ ВЫЗВАТЬ
201
                LD A,(IX+_NUM_PKT)              ; номер из списка который вызвать
201
                BIT 7,A
202
                BIT B_ADR_PUNKT,A
202
                JR Z,JUMP2HL1
203
                JR Z,JUMP2HL1
203
                LD L,(IX+8)
204
                LD L,(IX+_TEK_PKT_L)
204
                LD H,(IX+9)
205
                LD H,(IX+_TEK_PKT_H)
205
                LD A,(HL)
206
                LD A,(HL)
206
JUMP2HL1        LD L,(IX+0X0E)
207
JUMP2HL1        LD L,(IX+_ADR_PRG_L)
207
                LD H,(IX+0X0F)                  ;ВЗЯЛИ СПИСОК АДРЕСОВ 1 ИЗ КОТОРЫХ БУДЕМ ВЫЗЫВАТЬ
208
                LD H,(IX+_ADR_PRG_H)            ; взяли список адресов 1 из которых будем вызывать
208
JUMP2HL         ADD A,A
209
JUMP2HL         ADD A,A
209
                ADD A,L
210
                ADD A,L
210
                LD L,A
211
                LD L,A
211
                ADC A,H
212
                ADC A,H
212
                SUB L
213
                SUB L
Line 229... Line 230...
229
                SUB C
230
                SUB C
230
                DEC A
231
                DEC A
231
                JR JUMP2HL1
232
                JR JUMP2HL1
232
 
233
 
233
TIMELP          CALL PRINTTIME
234
TIMELP          CALL PRINTTIME
234
                LD A,0XFA
235
                LD A,HIGH (MOUSE_KEYS)
235
                IN A,(0XDF)                     ;КНОПКИ МЫШИ
236
                IN A,(LOW (MOUSE_KEYS))         ; кнопки мыши
236
                CPL
237
                CPL
237
                AND 7
238
                AND 7
238
                JR NZ,TIMELP                    ;ПОКА НЕ ОТПУСТЯТ
239
                JR NZ,TIMELP                    ; пока не отпустят
239
                RET
240
                RET
240
 
241
 
241
CURSOR_UP       LD C,(IX+8)
242
CURSOR_UP       LD C,(IX+_TEK_PKT_L)
242
                LD B,(IX+9)
243
                LD B,(IX+_TEK_PKT_H)
243
                BIT 7,(IX+7)
244
                BIT B_ADR_PUNKT,(IX+_NUM_PKT)
244
                JR Z,CURSOR_UP3
245
                JR Z,CURSOR_UP3
245
                LD L,(IX+8)
246
                LD L,(IX+_TEK_PKT_L)
246
                LD H,(IX+9)
247
                LD H,(IX+_TEK_PKT_H)
247
                INC HL
248
                INC HL
248
                LD C,(HL)
249
                LD C,(HL)
249
                INC HL
250
                INC HL
250
                LD B,(HL)
251
                LD B,(HL)
251
CURSOR_UP3      LD A,B
252
CURSOR_UP3      LD A,B
252
                OR C
253
                OR C
253
                RET Z
254
                RET Z
254
                DEC BC
255
                DEC BC
255
                BIT 7,(IX+7)
256
                BIT B_ADR_PUNKT,(IX+_NUM_PKT)
256
                JR Z,CURSOR_UP2
257
                JR Z,CURSOR_UP2
257
                LD (HL),B
258
                LD (HL),B
258
                DEC HL
259
                DEC HL
259
                LD (HL),C
260
                LD (HL),C
260
                DEC HL
261
                DEC HL
Line 262... Line 263...
262
                AND A
263
                AND A
263
                JR Z,CURSOR_UP1
264
                JR Z,CURSOR_UP1
264
                DEC (HL)
265
                DEC (HL)
265
                RET
266
                RET
266
 
267
 
267
CURSOR_UP2      LD (IX+8),C
268
CURSOR_UP2      LD (IX+_TEK_PKT_L),C
268
                LD (IX+9),B
269
                LD (IX+_TEK_PKT_H),B
269
                LD A,(IX+7)
270
                LD A,(IX+_NUM_PKT)
270
                AND A
271
                AND A
271
                JR Z,CURSOR_UP1
272
                JR Z,CURSOR_UP1
272
                DEC (IX+7)
273
                DEC (IX+_NUM_PKT)
273
                RET
274
                RET
274
 
275
 
275
CURSOR_UP1      CALL REST2X2
276
CURSOR_UP1      CALL REST2X2
276
                CALL RESTORE_CLINE
277
                CALL RESTORE_CLINE
277
                CALL SCRDN
278
                CALL SCRDN
278
                LD E,(IX+1)
279
                LD E,(IX+_Y_COORD)
279
                INC E
280
                INC E
280
DOWN1           LD D,(IX+0)
281
DOWN1           LD D,(IX+_X_COORD)
281
                INC D
282
                INC D
282
                INC D
283
                INC D
283
                EVOPORT WIN_P3,RAM_TEMP2
284
        EVOPORT WIN_P3,RAM_SORTFILES
284
                LD L,(IX+8)
285
                LD L,(IX+_TEK_PKT_L)
285
                LD H,(IX+9)
286
                LD H,(IX+_TEK_PKT_H)
286
                BIT 7,(IX+7)
287
                BIT B_ADR_PUNKT,(IX+_NUM_PKT)
287
                JR Z,DOWN3
288
                JR Z,DOWN3
288
                DEC D
289
                DEC D
289
                INC HL
290
                INC HL
290
                LD A,(HL)
291
                LD A,(HL)
291
                INC HL
292
                INC HL
Line 301... Line 302...
301
                ROMCALL POSTF06,ROM_RST83
302
        ROMCALL POSTF06,ROM_RST83
302
                ROMCALL READ_DIR,ROM_RST83
303
        ROMCALL READ_DIR,ROM_RST83
303
                LD DE,FILES_EXT
304
                LD DE,FILES_EXT
304
                ROMCALL CP_EXT,ROM_RST83
305
        ROMCALL CP_EXT,ROM_RST83
305
                EX AF,AF'
306
                EX AF,AF'
306
                LD BC,0X0B
307
                LD BC,_DIR_Attr
307
                ADD HL,BC
308
                ADD HL,BC
308
                LD A,(HL)
309
                LD A,(HL)
309
                SBC HL,BC
310
                SBC HL,BC
310
                AND 0X10
311
                AND M_DIR_Directory
311
                LD A,BLUE<<3+WHITE+BR_INK
-
 
312
                LD (OUT_NAME_FILE+1),A          ;ЕСЛИ ДИРЕКТОРИЯ ТО ЦВЕТ БЕЛЫЙ
312
                LD A,BLUE << 3 + WHITE + BR_INK ; если директория то цвет белый
313
                JR NZ,DOWN7
313
                JR NZ,DOWN7
-
 
314
; раскраска по заданной таблице
314
                EX AF,AF'
315
                EX AF,AF'
315
                LD L,A
-
 
316
                INC A
-
 
317
                JR Z,DOWN6
-
 
318
                LD A,L
-
 
319
DOWN6           LD HL,COLOR_EXT
316
                LD HL,COLOR_EXT
320
                ADD A,L
317
                ADD A,L
321
                LD L,A
318
                LD L,A
322
                ADC A,H
319
                ADC A,H
323
                SUB L
320
                SUB L
-
 
321
                LD H,A
324
                LD A,(HL)
322
                LD A,(HL)
325
                ADD A,BLUE<<3+BR_INK
323
                ADD A,BLUE << 3 + BR_INK
326
                LD (OUT_NAME_FILE+1),A
324
DOWN7           LD (OUT_NAME_FILE+1),A          ; установка цвета раскраски
327
DOWN7           LD HL,BUF_256
325
                LD HL,BUF_MOVE256
328
                ROMCALL GET_LONGNAME,ROM_RST83
326
        ROMCALL GET_LONGNAME,ROM_RST83
329
                POP DE
327
                POP DE
330
                CALL FILENAME8_3
328
                CALL FILENAME8_3
331
                JP SET_ADR_ATR
329
                JP SET_ADR_ATR
332
 
330
 
333
CURSOR_DOWN     LD L,(IX+0X0A)
331
CURSOR_DOWN     LD L,(IX+_NUM_KOL_L)
334
                LD H,(IX+0X0B)                  ;КОЛИЧЕСТВО ПУНКТОВ
332
                LD H,(IX+_NUM_KOL_H)            ; количество пунктов
335
                BIT 6,(IX+7)
333
                BIT B_ADR_NUMS_PUNKT,(IX+_NUM_PKT)
336
                JR Z,CURSOR_DOWN6
334
                JR Z,CURSOR_DOWN6
337
                LD L,(IX+8)                     ;ПОЛУЧЕНИЕ КОЛИЧЕСТВА ПУНКТОВ           
335
                LD L,(IX+_TEK_PKT_L)            ; получение количества пунктов          
338
                LD H,(IX+9)                     ;ИЗ УКАЗАННОГО АДРЕСА
336
                LD H,(IX+_TEK_PKT_H)            ; из указанного адреса
339
                INC HL
337
                INC HL
340
                INC HL
338
                INC HL
341
                INC HL
339
                INC HL
342
                LD A,(HL)
340
                LD A,(HL)
343
                INC HL
341
                INC HL
344
                LD H,(HL)
342
                LD H,(HL)
345
                LD L,A                          ;КОЛИЧЕСТВО ПУНКТОВ В ЭТОМ МЕНЮ
343
                LD L,A                          ; количество пунктов в этом меню
346
CURSOR_DOWN6    LD A,H
344
CURSOR_DOWN6    LD A,H
347
                OR L
345
                OR L
348
                RET Z
346
                RET Z
349
                BIT 7,(IX+7)
347
                BIT B_ADR_PUNKT,(IX+_NUM_PKT)
350
                JR Z,CURSOR_DOWN2
348
                JR Z,CURSOR_DOWN2
351
                LD E,(IX+8)
349
                LD E,(IX+_TEK_PKT_L)
352
                LD D,(IX+9)                     ;ТЕКУЩИЙ НОМЕР
350
                LD D,(IX+_TEK_PKT_H)            ; текущий номер
353
                EX DE,HL
351
                EX DE,HL
354
                INC HL
352
                INC HL
355
                LD C,(HL)
353
                LD C,(HL)
356
                INC HL
354
                INC HL
357
                LD B,(HL)
355
                LD B,(HL)
358
                EX DE,HL
356
                EX DE,HL
359
                JR CURSOR_DOWN3
357
                JR CURSOR_DOWN3
360
 
358
 
361
CURSOR_DOWN2    LD C,(IX+8)
359
CURSOR_DOWN2    LD C,(IX+_TEK_PKT_L)
362
                LD B,(IX+9)
360
                LD B,(IX+_TEK_PKT_H)
363
CURSOR_DOWN3    SCF
361
CURSOR_DOWN3    SCF
364
                SBC HL,BC
362
                SBC HL,BC
365
                RET Z
363
                RET Z
366
                INC BC
364
                INC BC
367
                BIT 7,(IX+7)
365
                BIT B_ADR_PUNKT,(IX+_NUM_PKT)
368
                JR Z,CURSOR_DOWN4
366
                JR Z,CURSOR_DOWN4
369
                EX DE,HL
367
                EX DE,HL
370
                LD (HL),B
368
                LD (HL),B
371
                DEC HL
369
                DEC HL
372
                LD (HL),C
370
                LD (HL),C
373
                DEC HL
371
                DEC HL
374
                LD A,(IX+2)
372
                LD A,(IX+_V_SIZE)
375
                SUB 3
373
                SUB 3
376
                CP (HL)
374
                CP (HL)
377
                JR Z,CURSOR_DOWN1
375
                JR Z,CURSOR_DOWN1
378
                INC (HL)
376
                INC (HL)
379
                RET
377
                RET
380
 
378
 
381
CURSOR_DOWN4    LD (IX+8),C
379
CURSOR_DOWN4    LD (IX+_TEK_PKT_L),C
382
                LD (IX+9),B
380
                LD (IX+_TEK_PKT_H),B
383
                LD A,(IX+2)
381
                LD A,(IX+_V_SIZE)
384
                SUB 3
382
                SUB 3
385
                CP (IX+7)
383
                CP (IX+_NUM_PKT)
386
                JR Z,CURSOR_DOWN1
384
                JR Z,CURSOR_DOWN1
387
                INC (IX+7)
385
                INC (IX+_NUM_PKT)
388
                RET
386
                RET
389
 
387
 
390
CURSOR_DOWN1    CALL REST2X2
388
CURSOR_DOWN1    CALL REST2X2
391
                CALL RESTORE_CLINE
389
                CALL RESTORE_CLINE
392
                CALL SCRUP
390
                CALL SCRUP
393
                LD A,(IX+1)
391
                LD A,(IX+_Y_COORD)
394
                ADD A,(IX+2)
392
                ADD A,(IX+_V_SIZE)
395
                SUB 2
393
                SUB 2
396
                LD E,A
394
                LD E,A
397
                JP DOWN1
395
                JP DOWN1
398
 
396
 
399
GET_XY          LD L,(IX+8)
397
GET_XY          LD L,(IX+_TEK_PKT_L)
400
                LD H,(IX+9)             ;ТЕКУЩИЙ НОМЕР
398
                LD H,(IX+_TEK_PKT_H)            ; текущий номер
401
                BIT 7,(IX+7)
399
                BIT B_ADR_PUNKT,(IX+_NUM_PKT)
402
                JR Z,GETXY1
400
                JR Z,GETXY1
403
;ПОЛУЧЕНИЕ НОМЕРА ТЕКУЩЕГО ПУНКТА ИЗ УКАЗАТЕЛЯ
401
; получение номера текущего пункта из указателя
404
                INC HL
402
                INC HL
405
                LD E,(HL)
403
                LD E,(HL)
406
                INC HL
404
                INC HL
407
                LD D,(HL)               ;ТЕКУЩИЙ НОМЕР ИЗ УКАЗАННОГО АДРЕСА
405
                LD D,(HL)               ; текущий номер из указанного адреса
408
                EX DE,HL
406
                EX DE,HL
409
                BIT 6,(IX+7)
407
                BIT B_ADR_NUMS_PUNKT,(IX+_NUM_PKT)
410
                JR Z,GETXY1
408
                JR Z,GETXY1
411
;ПОЛУЧЕНИЕ КОЛИЧЕСТВА ПУНКТОВ ИЗ УККАЗАТЕЛЯ
409
; получение количества пунктов из укказателя
412
                EX DE,HL
410
                EX DE,HL
413
                INC HL
411
                INC HL
414
                LD A,(HL)
412
                LD A,(HL)
415
                INC HL
413
                INC HL
416
                LD H,(HL)
414
                LD H,(HL)
417
                LD L,A                  ;КОЛИЧЕСТВО ПУНКТОВ ИЗ УКАЗАННОГО АДРЕСА
415
                LD L,A                  ; количество пунктов из указанного адреса
418
                EX DE,HL
416
                EX DE,HL
419
                JR GETXY2
417
                JR GETXY2
420
 
418
 
421
GETXY1          LD E,(IX+0X0A)
419
GETXY1          LD E,(IX+_NUM_KOL_L)
422
                LD D,(IX+0X0B)          ;КОЛ-ВО ПУНКТОВ
420
                LD D,(IX+_NUM_KOL_H)            ; кол-во пунктов
423
GETXY2          LD A,(IX+2)
421
GETXY2          LD A,(IX+_V_SIZE)
424
                SUB 3
422
                SUB 3
425
                LD C,A                  ;КОЛИЧЕСТВО ПУНКТОВ В ВЫСОТЕ ОКНА
423
                LD C,A                  ; количество пунктов в высоте окна
426
                LD B,0
424
                LD B,0
427
                LD A,D
425
                LD A,D
428
                OR E
426
                OR E
429
                LD A,C
427
                LD A,C
430
                RET
428
                RET
431
 
429
 
432
;ПЕРЕМЕЩЕНИЕ НА СТРАНИЦУ ВВЕРХ
430
; перемещение на страницу вверх
433
PAGEUP          CALL GET_XY
431
PAGEUP          CALL GET_XY
434
                RET Z
432
                RET Z
435
                XOR A
433
                XOR A
436
                SBC HL,BC
434
                SBC HL,BC
437
                EX DE,HL
435
                EX DE,HL
438
                JR NC,PDUN0
436
                JR NC,PDUN0
439
PDU0            LD D,A
437
PDU0            LD D,A
440
                LD E,A
438
                LD E,A
441
                JR PDUN0
439
                JR PDUN0
442
 
440
 
443
;ПЕРЕМЕЩЕНИЕ НА СТРАНИЦУ ВНИЗ
441
; перемещение на страницу вниз
444
PAGEDN          CALL GET_XY
442
PAGEDN          CALL GET_XY
445
                RET Z
443
                RET Z
446
                EX DE,HL
444
                EX DE,HL
447
                AND A
445
                AND A
448
                SBC HL,BC
446
                SBC HL,BC
Line 459... Line 457...
459
                ADD HL,DE
457
                ADD HL,DE
460
                JR Z,PDUN1
458
                JR Z,PDUN1
461
                JR NC,PDUN0
459
                JR NC,PDUN0
462
PDUN1           EX DE,HL
460
PDUN1           EX DE,HL
463
                DEC DE
461
                DEC DE
464
PDUN0           BIT 7,(IX+7)
462
PDUN0           BIT B_ADR_PUNKT,(IX+_NUM_PKT)
465
                JR Z,PDUN2
463
                JR Z,PDUN2
466
                LD L,(IX+8)
464
                LD L,(IX+_TEK_PKT_L)
467
                LD H,(IX+9)
465
                LD H,(IX+_TEK_PKT_H)
468
                LD (HL),A
466
                LD (HL),A
469
                INC HL
467
                INC HL
470
                LD (HL),E
468
                LD (HL),E
471
                INC HL
469
                INC HL
472
                LD (HL),D
470
                LD (HL),D
473
                JR PDUN3
471
                JR PDUN3
474
 
472
 
475
PDUN2           LD (IX+7),A
473
PDUN2           LD (IX+_NUM_PKT),A
476
                LD (IX+8),E
474
                LD (IX+_TEK_PKT_L),E
477
                LD (IX+9),D
475
                LD (IX+_TEK_PKT_H),D
478
PDUN3           CALL RESTORE_CLINE
476
PDUN3           CALL RESTORE_CLINE
479
                JP OUT_TEK_DIR
477
                JP OUT_CURR_DIR
480
 
478
 
481
PRINTTIME       DI
479
PRINTTIME       DI
482
                LD H,0X0C
480
                LD H,CMOS.REG_C
483
                CALL READCMOS
481
                CALL READCMOS
484
                AND 0X10
482
                AND CMOSREG.M_C_RO_UF
485
                RET Z                           ;ЕСЛИ ВРЕМЯ ЕЩЕ НЕ ОБНОВИЛОСЬ, ВЫХОДИМ НИЧЕГО НЕ ВЫВОДЯ
483
                RET Z                           ; если время еще не обновилось, выходим ничего не выводя
486
                LD BC,TXT_TIME                  ;ЧТЕНИЕ И ПРЕОБРАЗОВАНИЕ ВРЕМЕНИ
484
                LD BC,TXT_TIME                  ; чтение и преобразование времени
487
                LD H,4
485
                LD H,CMOS.HOUR
488
                CALL READCMOS                   ;ПРОЧИТАЛИ ЧАСЫ
486
                CALL READCMOS                   ; прочитали часы
489
                CALL BYTE2TXT                   ;СКОНВЕРТИЛИ ЧАСЫ С УКЛАДКОЙ В БУФЕР
487
                CALL BYTE2TXT                   ; сконвертили часы с укладкой в буфер
490
                LD A,(BC)
488
                LD A,(BC)
491
                XOR 0X1A                        ;КОНВЕРСИЯ МИГАЮЩЕГО ДВОЕТОЧИЯ
489
                XOR ':'-' '                     ; конверсия мигающего двоеточия
492
                LD (BC),A
490
                LD (BC),A
493
                INC BC
491
                INC BC
494
                LD H,2
492
                LD H,CMOS.MINUTE
495
                CALL READCMOS                   ;ПРОЧИТАЛИ МИНУТЫ
493
                CALL READCMOS                   ; прочитали минуты
496
                CALL BYTE2TXT                   ;СКОНВЕРТИЛИ ЧАСЫ С УКЛАДКОЙ В БУФЕР
494
                CALL BYTE2TXT                   ; сконвертили часы с укладкой в буфер
497
                LD A,(BC)
495
                LD A,(BC)
498
                XOR ':'-' '                     ;КОНВЕРСИЯ МИГАЮЩЕГО ДВОЕТОЧИЯ
496
                XOR ':'-' '                     ; конверсия мигающего двоеточия
499
                LD (BC),A
497
                LD (BC),A
500
                INC BC
498
                INC BC
501
                LD H,0
499
                LD H,CMOS.SECOND
502
                CALL READCMOS                   ;ПРОЧИТАЛИ СЕКУНДЫ
500
                CALL READCMOS                   ; прочитали секунды
503
                CALL BYTE2TXT
501
                CALL BYTE2TXT
504
                LD BC,TXT_DATA                  ;ДАЛЕЕ ЧТЕНИЕ И ПРЕОБРАЗОВАНИЕ ДАТЫ
502
                LD BC,TXT_DATA                  ; далее чтение и преобразование даты
505
                LD H,7
503
                LD H,CMOS.DAY_MONTH
506
                CALL READCMOS
504
                CALL READCMOS
507
                CALL BYTE2TXT
505
                CALL BYTE2TXT
508
                INC BC
506
                INC BC
509
                LD H,8
507
                LD H,CMOS.MONTH
510
                CALL READCMOS
508
                CALL READCMOS
511
                CALL BYTE2TXT
509
                CALL BYTE2TXT
512
                INC BC
510
                INC BC
513
                LD H,9
511
                LD H,CMOS.YEAR
514
                CALL READCMOS
512
                CALL READCMOS
515
                CALL BYTE2TXT
513
                CALL BYTE2TXT
516
                LD HL,BUFF_TIME                 ;ПЕЧАТАЕМ ВРЕМЯ ИЗ БУФЕРА
514
                LD HL,BUFF_TIME                 ; печатаем время из буфера
517
                JP ITPRINT_MESSAGE
515
                JP ITPRINT_MESSAGE
518
 
516
 
519
;ПЕРЕВОД "A" В ДЕСЯТИЧКУ И В ТЕКСТ
517
; перевод "A" в десятичку и в текст
520
A2TXT           PUSH HL
518
A2TXT           PUSH HL
521
                LD L,A
519
                LD L,A
522
                LD H,0
520
                LD H,0
523
                LD DE,10
521
                LD DE,10
524
                XOR A
522
                XOR A
525
                DEC A
523
                DEC A
526
                INC A
524
.L1             INC A
527
                SBC HL,DE
525
                SBC HL,DE
528
                JR NC,$-3
526
                JR NC,.L1
529
                ADD HL,DE
527
                ADD HL,DE
530
                ADD A,"0"
528
                ADD A,'0'
531
                LD D,A
529
                LD D,A
532
                LD A,L
530
                LD A,L
533
                ADD A,"0"
531
                ADD A,'0'
534
                POP HL
532
                POP HL
535
                LD (HL),D
533
                LD (HL),D
536
                INC HL
534
                INC HL
537
                LD (HL),A
535
                LD (HL),A
538
                INC HL
536
                INC HL
539
                RET
537
                RET
540
 
538
 
541
BYTE2TXT        LD L,A
539
BYTE2TXT        LD L,A
542
                LD H,"0"
540
                LD H,'0'
543
                RRCA
541
                RRCA
544
                RRCA
542
                RRCA
545
                RRCA
543
                RRCA
546
                RRCA
544
                RRCA
547
                AND 0X0F
545
                AND 0x0F
548
                ADD A,H
546
                ADD A,H
549
                LD (BC),A
547
                LD (BC),A
550
                INC BC
548
                INC BC
551
                LD A,L
549
                LD A,L
552
                AND 0X0F
550
                AND 0x0F
553
                ADD A,H
551
                ADD A,H
554
                LD (BC),A
552
                LD (BC),A
555
                INC BC
553
                INC BC
556
                RET
554
                RET
557
 
555
 
558
;ВЫХОД ИЗ MAGIC
556
; выход из MAGIC
559
CONTINUE_PROG   DI
557
CONTINUE_PROG   DI
560
                LD SP,(OLD_STACK)
558
                LD SP,(OLD_STACK)
561
                XOR A
559
                XOR A
562
                RET
560
                RET
563
 
561
 
564
;ПЕРЕЗАПУСК MAGIC МЕНЮ С ПОЛНОЙ ПЕРЕРИСОВКОЙ ЭКРАНА
562
; перезапуск MAGIC меню с полной перерисовкой экрана
565
RESTART_MAIN    DI
563
RESTART_MAIN    DI
566
                LD SP,(OLD_STACK)
564
                LD SP,(OLD_STACK)
567
                LD A,1
565
                LD A,1
568
                RET
566
                RET
569
 
567
 
570
;ВЫХОД ИЗ ОТЛАДЧИКА
568
; выход из отладчика
571
TRACER_DBG      DI
569
TRACER_DBG      DI
572
                LD SP,(OLD_STACK)
570
                LD SP,(OLD_STACK)
573
                LD A,2
571
                LD A,2
574
                RET
572
                RET
575
 
573
 
576
SETUP           LD IX,SETUP_MENU
574
SETUP           LD IX,SETUP_MENU
577
                CALL ITWINW
575
                CALL INT_TXT_WINDOW
578
                JP SET_ADR_ATR
576
                JP SET_ADR_ATR
579
 
577
 
580
;ПЕРЕБОР TURBO РЕЖИМОВ С ЗАПИСЬЮ В CMOS И ИЗМЕНЕНИЕМ ПОСЛЕ ВЫХОДА ИЗ NMI
578
; перебор TURBO режимов с записью в CMOS и изменением после выхода из NMI
581
;0-7MHZ 1-3,5MHZ 2-14,0MHZ
579
; 0-7MHZ 1-3,5MHZ 2-14,0MHZ
582
SET_TURBO       DI
580
SET_TURBO       DI
583
                LD H,CMOS_BYTE_01
581
                LD H,CMOS.BYTE_01
584
                CALL READCMOS
582
                CALL READCMOS
585
                LD E,L                          ;TURBO AND MEMORY MODE
583
                LD E,L                          ; турбо режим и режим памяти
586
                LD H,CMOS_BYTE_00
584
                LD H,CMOS.BYTE_00
587
                CALL READCMOS
585
                CALL READCMOS
588
                LD D,L                          ;TURBO 14
586
                LD D,L                          ; TURBO 14.0
589
                RLCA
587
                RLCA
590
                LD C,A
588
                LD C,A
591
                LD A,E
589
                LD A,E
592
                RLCA
590
                RLCA
593
                LD A,C
591
                LD A,C
594
                RLA
592
                RLA
595
                AND 3
593
                AND 3
596
                INC A                           ;СМЕНИЛИ TURBO РЕЖИМ
594
                INC A                           ; сменили TURBO режим
597
                CP 3
595
                CP 3
598
                JR C,SETTURBO1
596
                JR C,SETTURBO1
599
                XOR A                           ;ЕСЛИ ПЕРЕШЛИ ЧЕРЕЗ 0, ТО ВЫСТАВИЛИ РЕЖИМ 14MHZ
597
                XOR A                           ; если перешли через 0, то выставили режим 14.0
600
SETTURBO1       LD C,A
598
SETTURBO1       LD C,A
601
                PUSH BC
599
                PUSH BC
602
                AND A
600
                AND A
603
                RES 7,E                         ;TURBO 7        0
601
                RES 7,E                         ; TURBO 7       0
604
                RES 7,D                         ;TURBO 14=7MHZ  0
602
                RES 7,D                         ; TURBO 14=7MHZ 0
Line 607... Line 605...
607
                SET 7,E                         ;TURBO 7        1
605
                SET 7,E                         ; TURBO 7       1
608
                RES 7,D                         ;TURBO 14=3,5   0
606
                RES 7,D                         ; TURBO 14=3,5  0
609
                JR Z,SETTURBO3
607
                JR Z,SETTURBO3
610
                RES 7,E                         ;TURBO 7        0
608
                RES 7,E                         ; TURBO 7       0
611
                SET 7,D                         ;TURBO 14=14    1
609
                SET 7,D                         ; TURBO 14=14   1
612
SETTURBO3       LD H,CMOS_BYTE_00
610
SETTURBO3       LD H,CMOS.BYTE_00
613
                LD L,D
611
                LD L,D
614
                PUSH DE
612
                PUSH DE
615
                CALL IWRITECMOS
613
                CALL IWRITECMOS
616
                POP DE
614
                POP DE
617
                LD H,CMOS_BYTE_01
615
                LD H,CMOS.BYTE_01
618
                LD L,E
616
                LD L,E
619
                CALL IWRITECMOS
617
                CALL IWRITECMOS
620
                POP BC
618
                POP BC
621
                LD A,C
619
                LD A,C
622
                AND A
620
                AND A
Line 633... Line 631...
633
                LD A,(N_EFF7)
631
                LD A,(N_EFF7)
634
                AND %11101111
632
                AND %11101111
635
                OR D
633
                OR D
636
                LD (N_EFF7),A
634
                LD (N_EFF7),A
637
SETANDPRINT     CALL SETUP4SEL
635
SETANDPRINT     CALL SETUP4SEL
638
                LD HL,TXT_SETUPMENU
636
                LD HL,SETUP_MENU.TXT_SETUPMENU
639
                JP ITPRINT_MESSAGE
637
                JP ITPRINT_MESSAGE
640
 
638
 
641
;ПЕРЕБОР РЕЖИМОВ ПАМЯТИ С ЗАПИСЬЮ В CMOS И ИЗМЕНЕНИЕМ ПОСЛЕ ВЫХОДА ИЗ NMI
639
; перебор режимов памяти с записью в CMOS и изменением после выхода из NMI
642
SET_MEMORY      DI
640
SET_MEMORY      DI
643
                LD H,CMOS_BYTE_01
641
                LD H,CMOS.BYTE_01
644
                CALL READCMOS
642
                CALL READCMOS
645
                AND 3
643
                AND 3
646
                INC A
644
                INC A
647
                CP 3
645
                CP 3
648
                JR C,SETMEMORY1
646
                JR C,SETMEMORY1
Line 653... Line 651...
653
                OR C
651
                OR C
654
                LD L,A
652
                LD L,A
655
                CALL IWRITECMOS
653
                CALL IWRITECMOS
656
                JR SETANDPRINT
654
                JR SETANDPRINT
657
 
655
 
658
;ВКЛЮЧЕНИЕ/ВЫКЛЮЧЕНИЕ РЕЗИДЕНТА HONEY COMANDER
656
; включение/выключение резидента HONEY COMANDER
659
SET_REZIDENT    DI
657
SET_REZIDENT    DI
660
                LD H,CMOS_BYTE_01
658
                LD H,CMOS.BYTE_01
661
                CALL READCMOS
659
                CALL READCMOS
662
                XOR M_REZIDENT
660
                XOR CMOS_EC.M_REZIDENT
663
                LD L,A
661
                LD L,A
664
                CALL IWRITECMOS
662
                CALL IWRITECMOS
665
                JR SETANDPRINT
663
                JR SETANDPRINT
666
 
664
 
667
KILL_REZID      DI
665
KILL_REZID      DI
668
                LD H,CMOS_BYTE_03
666
                LD H,CMOS.BYTE_03
669
                CALL READCMOS
667
                CALL READCMOS
670
                XOR M_KILL_REZIDENT
668
                XOR CMOS_E9.M_KILL_REZIDENT
671
                LD L,A
669
                LD L,A
672
                CALL IWRITECMOS
670
                CALL IWRITECMOS
673
                JR SETANDPRINT
671
                JR SETANDPRINT
674
 
672
 
675
;ИЗМЕНЕНИЕ ТЕКСТА В МЕНЮ
673
; изменение текста в меню
676
SETUP4SEL       DI
674
SETUP4SEL       DI
677
                LD H,CMOS_BYTE_01
675
                LD H,CMOS.BYTE_01
678
                CALL READCMOS
676
                CALL READCMOS
679
                LD E,L                          ;TURBO AND MEMORY MODE
677
                LD E,L                          ; турбо режим и режим памяти
680
                LD H,CMOS_BYTE_00
678
                LD H,CMOS.BYTE_00
681
                CALL READCMOS
679
                CALL READCMOS
682
                LD D,L                          ;TURBO 14
680
                LD D,L                          ; TURBO 14.0
683
                RLCA
681
                RLCA
684
                LD C,A
682
                LD C,A
685
                LD A,E
683
                LD A,E
686
                RLCA
684
                RLCA
687
                LD A,C
685
                LD A,C
Line 695... Line 693...
695
                LD HL,TXT_TURBO
693
                LD HL,TXT_TURBO
696
                LD C,A
694
                LD C,A
697
                LD B,0
695
                LD B,0
698
                ADD HL,BC
696
                ADD HL,BC
699
                PUSH DE
697
                PUSH DE
700
                LD DE,TURBO_MODE
698
                LD DE,TXT_TURBO_MODE
701
                LDI
699
                LDI
702
                LDI
700
                LDI
703
                LDI
701
                LDI
704
                LDI
702
                LDI
705
                EX DE,HL
703
                EX DE,HL
Line 712... Line 710...
712
                LD B,0
710
                LD B,0
713
                LD HL,TXT_MEMORY
711
                LD HL,TXT_MEMORY
714
                ADD HL,BC
712
                ADD HL,BC
715
                ADD HL,BC
713
                ADD HL,BC
716
                ADD HL,BC
714
                ADD HL,BC
717
                LD DE,MEMORY_MODE
715
                LD DE,TXT_MEMORY_MODE
718
                LDI
716
                LDI
719
                LDI
717
                LDI
720
                LDI
718
                LDI
721
                EX DE,HL
719
                EX DE,HL
722
                LD (HL),2
720
                LD (HL),2
723
                POP DE
721
                POP DE
724
;ДЛЯ РЕЗИДЕНТА HONEY COMANDER
722
; для резидента HONEY COMANDER
725
                LD A,E
723
                LD A,E
726
                AND M_REZIDENT
724
                AND CMOS_EC.M_REZIDENT
727
                LD HL,TXT_ONOFF
725
                LD HL,TXT_ONOFF
728
                JR NZ,.ON
726
                JR NZ,.ON
729
                LD HL,TXT_ONOFF+3
727
                LD HL,TXT_ONOFF+3
730
.ON             LD DE,REZIDENT_MODE
728
.ON             LD DE,TXT_REZIDENT_MODE
731
                LDI
729
                LDI
732
                LDI
730
                LDI
733
                LDI
731
                LDI
734
                EX DE,HL
732
                EX DE,HL
735
                LD (HL),2
733
                LD (HL),2
736
                LD H,CMOS_BYTE_03
734
                LD H,CMOS.BYTE_03
737
                CALL READCMOS
735
                CALL READCMOS
738
                AND M_KILL_REZIDENT
736
                AND CMOS_E9.M_KILL_REZIDENT
739
                LD HL,TXT_ONOFF
737
                LD HL,TXT_ONOFF
740
                JR NZ,.ON1
738
                JR NZ,.ON1
741
                LD HL,TXT_ONOFF+3
739
                LD HL,TXT_ONOFF+3
742
.ON1            LD DE,TXT_KILLREZID
740
.ON1            LD DE,TXT_KILLREZID
743
                LDI
741
                LDI
Line 745... Line 743...
745
                LDI
743
                LDI
746
                EX DE,HL
744
                EX DE,HL
747
                LD (HL),2
745
                LD (HL),2
748
                RET
746
                RET
749
 
747
 
750
;ОЖИДАНИЕ НАЖАТИЯ И ОТПУСКАНИЯ ЛЮБОЙ КЛАВИШИ
748
; ожидание нажатия и отпускания любой клавиши
751
ANY_KEYS        XOR A
749
ANY_KEYS        XOR A
752
                IN A,(0XFE)
750
                IN A,(0xFE)
753
                CPL
751
                CPL
754
                AND 0X1F
752
                AND 0x1F
755
                JR Z,ANY_KEYS
753
                JR Z,ANY_KEYS
756
ANYKEYS1        XOR A
754
ANYKEYS1        XOR A
757
                IN A,(0XFE)
755
                IN A,(0xFE)
758
                CPL
756
                CPL
759
                AND 0X1F
757
                AND 0x1F
760
                JR NZ,ANYKEYS1
758
                JR NZ,ANYKEYS1
761
                RET
759
                RET