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 |