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: 12.02.2024 savelij |
2 | ; LAST UPDATE: 16.02.2025 savelij |
3 | 3 | ||
4 | TITLE "addon1.a80 ROM_RST81" |
4 | TITLE "addon1.a80 ROM_RST81" |
5 | 5 | ||
6 | PHASE CPU0 |
6 | PHASE CPU0 |
7 | JP $ |
7 | JP $ |
8 | 8 | ||
9 | DUPL 0x0008 - $,0xFF |
9 | DB 0x0008 - $ DUP 0xFF |
10 | JP $ |
10 | JP $ |
11 | 11 | ||
12 | DUPL 0x0010 - $,0xFF |
12 | DB 0x0010 - $ DUP 0xFF |
13 | JP $ |
13 | JP $ |
14 | 14 | ||
15 | DUPL ADR_SEL_ROM - $,0xFF |
15 | DB ADR_SEL_ROM - $ DUP 0xFF |
16 | OUT (C),A ; 0014 |
16 | OUT (C),A ; 0014 |
17 | NOP |
17 | NOP |
18 | RET |
18 | RET |
19 | 19 | ||
20 | DUPL 0x0018 - $,0xFF |
20 | DB 0x0018 - $ DUP 0xFF |
21 | JP $ |
21 | JP $ |
22 | 22 | ||
23 | DUPL 0x0020 - $,0xFF |
23 | DB 0x0020 - $ DUP 0xFF |
24 | JP $ |
24 | JP $ |
25 | 25 | ||
26 | DUPL 0x0028 - $,0xFF |
26 | DB 0x0028 - $ DUP 0xFF |
27 | JP $ |
27 | JP $ |
28 | 28 | ||
29 | DUPL 0x0030 - $,0xFF |
29 | DB 0x0030 - $ DUP 0xFF |
30 | JP CALL2PAGE |
30 | JP CALL2PAGE |
31 | 31 | ||
32 | DUPL ADR_PERFECT - $,0xFF |
32 | DB ADR_PERFECT - $ DUP 0xFF |
33 | DW PERFECTCOM |
33 | DW PERFECTCOM |
34 | 34 | ||
35 | DUPL 0x0038 - $,0xFF ; 0038 |
35 | DB 0x0038 - $ DUP 0xFF ; 0038 |
36 | EI |
36 | EI |
37 | RET |
37 | RET |
38 | 38 | ||
39 | DUPL 0x003E - $,0xFF |
39 | DB 0x003E - $ DUP 0xFF |
40 | EI |
40 | EI |
41 | RET |
41 | RET |
42 | 42 | ||
43 | DUPL 0x0040 - $,0xFF |
43 | DB 0x0040 - $ DUP 0xFF |
44 | JP INSTALL_NMIRST ; установка обработчиков NMI и RST |
44 | JP INSTALL_NMIRST ; установка обработчиков NMI и RST |
45 | 45 | ||
46 | DUPL 0x0080 - $,0xFF |
46 | DB 0x0080 - $ DUP 0xFF |
47 | binclude ../../dec40.bin |
47 | binclude ../../dec40.bin |
48 | 48 | ||
49 | DUPL 0x00FF - $,0xFF |
49 | DB 0x00FF - $ DUP 0xFF |
50 | DW 0x0038 |
50 | DW 0x0038 |
51 | 51 | ||
52 | PHASE $ + 0x4000 |
52 | PHASE $ + 0x4000 |
53 | include rst8_data.a80 |
53 | include rst8_data.a80 |
54 | 54 | ||
55 | PHASE $ & 0x3FFF |
55 | PHASE $ & 0x3FFF |
56 | 56 | ||
57 | DUPL (HIGH ($) + 1) * 0x100 - $,0xFF |
57 | DB (HIGH ($) + 1) * 0x100 - $ DUP 0xFF |
58 | BUF_CRC16_TABL DB 0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x81,0x91,0xA1,0xB1,0xC1,0xD1,0xE1,0xF1 |
58 | BUF_CRC16_TABL DB 0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x81,0x91,0xA1,0xB1,0xC1,0xD1,0xE1,0xF1 |
59 | DB 0x12,0x02,0x32,0x22,0x52,0x42,0x72,0x62,0x93,0x83,0xB3,0xA3,0xD3,0xC3,0xF3,0xE3 |
59 | DB 0x12,0x02,0x32,0x22,0x52,0x42,0x72,0x62,0x93,0x83,0xB3,0xA3,0xD3,0xC3,0xF3,0xE3 |
60 | DB 0x24,0x34,0x04,0x14,0x64,0x74,0x44,0x54,0xA5,0xB5,0x85,0x95,0xE5,0xF5,0xC5,0xD5 |
60 | DB 0x24,0x34,0x04,0x14,0x64,0x74,0x44,0x54,0xA5,0xB5,0x85,0x95,0xE5,0xF5,0xC5,0xD5 |
61 | DB 0x36,0x26,0x16,0x06,0x76,0x66,0x56,0x46,0xB7,0xA7,0x97,0x87,0xF7,0xE7,0xD7,0xC7 |
61 | DB 0x36,0x26,0x16,0x06,0x76,0x66,0x56,0x46,0xB7,0xA7,0x97,0x87,0xF7,0xE7,0xD7,0xC7 |
62 | DB 0x48,0x58,0x68,0x78,0x08,0x18,0x28,0x38,0xC9,0xD9,0xE9,0xF9,0x89,0x99,0xA9,0xB9 |
62 | DB 0x48,0x58,0x68,0x78,0x08,0x18,0x28,0x38,0xC9,0xD9,0xE9,0xF9,0x89,0x99,0xA9,0xB9 |
Line 97... | Line 97... | ||
97 | EXX |
97 | EXX |
98 | PUSH HL |
98 | PUSH HL |
99 | LD DE,BUF_CRC16_TABL |
99 | LD DE,BUF_CRC16_TABL |
100 | LD C,0 |
100 | LD C,0 |
101 | EXX |
101 | EXX |
102 | CRC16F0 LD A,(IX) |
102 | .L1 LD A,(IX) |
103 | XOR H |
103 | XOR H |
104 | INC IX |
104 | INC IX |
105 | EXX |
105 | EXX |
106 | LD L,A |
106 | LD L,A |
107 | LD H,C |
107 | LD H,C |
Line 116... | Line 116... | ||
116 | EXX |
116 | EXX |
117 | LD L,A |
117 | LD L,A |
118 | DEC BC |
118 | DEC BC |
119 | LD A,B |
119 | LD A,B |
120 | OR C |
120 | OR C |
121 | JP NZ,CRC16F0 |
121 | JP NZ,.L1 |
122 | EXX |
122 | EXX |
123 | POP HL |
123 | POP HL |
124 | EXX |
124 | EXX |
125 | RET |
125 | RET |
126 | 126 | ||
127 | ; установка обработчиков RST 8 и NMI, инициализация переменных |
127 | ; установка обработчиков RST 8 и NMI, инициализация переменных |
128 | INSTALL_NMIRST |
128 | INSTALL_NMIRST |
129 | ATMPORT WIN_A3,0x40 ; сняли зависимость от порта 7FFD |
129 | ATMPORT WIN_A3,0x40 ; сняли зависимость от порта 7FFD |
130 | EVOPORT WIN_P6,0 ; включили страницу переменных |
130 | EVOPORT WIN_P2,RAM_NMI ; включили страницу переменных |
- | 131 | LD HL,ADR_MAGIC | CPU2 ; восстановление обработчика NMI |
|
- | 132 | LD (HL),0xC3 |
|
- | 133 | INC HL |
|
- | 134 | LD (HL),LOW (NMI_SERVICE) |
|
- | 135 | INC HL |
|
- | 136 | LD (HL),HIGH (NMI_SERVICE) |
|
131 | LD BC,FDD_EMU_PORT |
137 | LD BC,FDD_EMU_PORT |
132 | XOR A |
138 | XOR A |
133 | OUT (C),A ; сброс виртуальных дисководов |
139 | OUT (C),A ; сброс виртуальных дисководов |
134 | LD (B_PORT_VIRT),A |
140 | LD (B_PORT_VIRT),A |
135 | LD A,0xEF |
141 | LD A,0xEF |
136 | IN A,(0xFE) |
142 | IN A,(0xFE) |
137 | RRCA |
143 | RRCA |
138 | JR NC,.L2 |
144 | JR NC,.L2 |
- | 145 | ; если нажат '0' принудительные инит страницы |
|
139 | LD IX,CPU2+STACK_NMI |
146 | LD IX,CPU2+STACK_NMI |
140 | LD HL,0x40 |
147 | LD HL,0x40 |
141 | CALL CRC16_FAST ; считаем CRC на месте обработчика |
148 | CALL CRC16_FAST ; считаем CRC на месте обработчика |
142 | PUSH HL ; сохранили CRC |
149 | PUSH HL ; сохранили CRC |
143 | LD IX,CODE_NMIRST + STACK_NMI |
150 | LD IX,CODE_NMIRST + STACK_NMI |
144 | LD HL,0x40 |
151 | LD HL,0x40 |
145 | CALL CRC16_FAST |
152 | CALL CRC16_FAST |
146 | POP BC ; вернули ранее посчитанное CRC |
153 | POP BC ; вернули ранее посчитанное CRC |
147 | XOR A |
154 | XOR A |
148 | SBC HL,BC ; сравнили |
155 | SBC HL,BC ; сравнили |
149 | JR Z,.L1 ; если совпало больше ничего не делаем |
156 | JR Z,.L1 ; если CRC совпало больше ничего не делаем |
150 | EVOPORT WIN_P3,RAM_PROFROM |
- | |
151 | LD HL,CPU0 |
- | |
152 | CALL FILL_MEM ; очистка страницы ОЗУ PROFROM |
- | |
153 | ; не совпало, первый запуск после включения питания или обработчики были испорчены |
157 | ; не совпало, первый запуск после включения питания или обработчики были испорчены |
- | 158 | .L2 |
|
- | 159 | EVOPORT WIN_P3,RAM_FATVARS |
|
- | 160 | LD HL,CPU0 |
|
- | 161 | CALL FILL_MEM ; зачистка страницы переменных FAT |
|
- | 162 | EVOPORT WIN_P3,RAM_MOUNTER ; включили страницу монтировщика образов |
|
- | 163 | LD HL,CPU0 |
|
- | 164 | CALL FILL_MEM ; зачистка страницы монтировщика образов |
|
154 | .L2 LD A,(HDDTIMEOUT) ; сохраняем ячейку вне зависимости от содежимого |
165 | LD A,(HDDTIMEOUT) ; сохраняем ячейку вне зависимости от содержимого |
155 | LD HL,CPU3 |
166 | LD HL,CPU3 |
156 | CALL FILL_MEM ; очистка последней страницы RAM |
167 | CALL FILL_MEM ; зачистка последней страницы RAM |
157 | LD (HDDTIMEOUT),A ; восстанавливаем ячейку |
168 | LD (HDDTIMEOUT),A ; восстанавливаем ячейку |
158 | LD HL,CODE_NMIRST |
169 | LD HL,CODE_NMIRST |
159 | LD DE,CPU6 |
170 | LD DE,CPU2 |
160 | LD BC,ENMI_SERVICE - ADR_SEL_ROM - CPU6 |
171 | LD BC,ENMI_SERVICE - ADR_SEL_ROM - CPU2 |
161 | LDIR ; установили обработчики |
172 | LDIR ; установили обработчики |
162 | LD (BUF_TABLVOL + 0xFE),BC ; сброс CRC таблицы найденных разделов |
173 | LD (BUF_VOLUMES + 0xFE),BC ; сброс CRC таблицы найденных разделов |
163 | EVOPORT WIN_P3,RAM_MOUNTER ; включили страницу монтировщика образов |
- | |
164 | LD HL,CPU0 |
- | |
165 | CALL FILL_MEM ; очистка страницы монтировщика образов |
- | |
166 | XOR A |
174 | XOR A |
167 | LD (CPU6 + DEBUG_ONOFF),A ; 0 - DEBUGGER OFF |
175 | LD (CPU2 + DEBUG_ONOFF),A ; 0 - DEBUGGER OFF |
168 | LD (FLAGS_DRV),A ; сброс флагов драйверов |
176 | LD (DEVMAN_VARS.FLAGS_DRV),A ; сброс флагов драйверов |
- | 177 | LD (FATVARSFLAGS),A |
|
169 | LD A,CMOS_BYTE_00 |
178 | LD A,CMOS.BYTE_00 |
170 | LD BC,CMOSD_SET_ADR |
179 | LD BC,CMOSD_SET_ADR |
171 | OUT (C),A |
180 | OUT (C),A |
172 | LD BC,CMOSD_RD_WR |
181 | LD BC,CMOSD_RD_WR |
173 | IN A,(C) |
182 | IN A,(C) |
174 | CALL LD_SET_FONT |
183 | CALL LD_SET_FONT |
175 | LD A,VIRT_REAL_DRIVE |
184 | LD A,CMOS.VIRT_REAL_DRIVE |
176 | LD BC,CMOSD_SET_ADR |
185 | LD BC,CMOSD_SET_ADR |
177 | OUT (C),A |
186 | OUT (C),A |
178 | LD BC,CMOSD_RD_WR |
187 | LD BC,CMOSD_RD_WR |
179 | IN A,(C) |
188 | IN A,(C) |
180 | LD (CPU2 + VIRT_BITS),A ; при ините монтируем только рамдиск |
189 | LD (CPU2 + VIRT_BITS),A ; при ините монтируем только рамдиск |
Line 191... | Line 200... | ||
191 | LD DE,OFFSET_USBDRV + CPU3 ; адрес работы |
200 | LD DE,OFFSET_USBDRV + CPU3 ; адрес работы |
192 | LD BC,ECOMUSBF - COMUSBF |
201 | LD BC,ECOMUSBF - COMUSBF |
193 | LDIR |
202 | LDIR |
194 | EVOPORT WIN_P6,0 |
203 | EVOPORT WIN_P6,0 |
195 | ENDIF |
204 | ENDIF |
- | 205 | ROMCALL RESTORE_FATVARS,ROM_RST82 |
|
196 | LD BC,0xFF << 8 + PN_1F7 |
206 | LD BC,0xFF << 8 + PN_1F7 |
197 | IN A,(C) |
207 | IN A,(C) |
198 | CP 0x50 |
208 | CP 0x50 |
199 | LD A,1 |
209 | LD A,1 |
200 | JR Z,.L3 |
210 | JR Z,.L3 |
201 | LD A,(HDDTIMEOUT) |
211 | LD A,(HDDTIMEOUT) |
202 | DEC A |
212 | DEC A |
203 | JR Z,.L5 ; если ячейка равна 1 задержку из CMOS игнорируем |
213 | JR Z,.L5 ; если ячейка равна 1 задержку из CMOS игнорируем |
204 | LD H,HDD_TIMEOUT |
214 | LD H,CMOS.HDD_TIMEOUT |
205 | ROMCALL READCMOS,ROM_RST82 |
215 | ROMCALL READCMOS,ROM_RST82 |
206 | AND A |
216 | AND A |
207 | LD A,1 |
217 | LD A,1 |
208 | JR Z,.L3 |
218 | JR Z,.L3 |
209 | XOR A |
219 | XOR A |
Line 215... | Line 225... | ||
215 | LD (TEKPAGE),HL |
225 | LD (TEKPAGE),HL |
216 | LD HL,READ_KEYS |
226 | LD HL,READ_KEYS |
217 | LD (ADR_INT),HL |
227 | LD (ADR_INT),HL |
218 | LD BC,WIN_A0 |
228 | LD BC,WIN_A0 |
219 | XOR A |
229 | XOR A |
220 | LD (CPU6 + FOR_RET),A |
230 | LD (CPU2 + FOR_RET),A |
221 | JP ADR_SEL_ROM |
231 | JP ADR_SEL_ROM |
222 | 232 | ||
223 | FILL_MEM EX DE,HL |
233 | FILL_MEM EX DE,HL |
224 | LD HL,0 |
234 | LD HL,0 |
225 | ADD HL,SP |
235 | ADD HL,SP |
Line 246... | Line 256... | ||
246 | DEC A |
256 | DEC A |
247 | RET NZ |
257 | RET NZ |
248 | LD HL,(RREG_L) |
258 | LD HL,(RREG_L) |
249 | JR SET_FONT1 |
259 | JR SET_FONT1 |
250 | 260 | ||
251 | SET4RESETFONT LD A,CMOS_BYTE_00 |
261 | SET4RESETFONT LD A,CMOS.BYTE_00 |
252 | LD BC,CMOSD_SET_ADR |
262 | LD BC,CMOSD_SET_ADR |
253 | OUT (C),A |
263 | OUT (C),A |
254 | LD BC,CMOSD_RD_WR |
264 | LD BC,CMOSD_RD_WR |
255 | IN A,(C) |
265 | IN A,(C) |
256 | LD L,A |
266 | LD L,A |
257 | AND M_RELOAD_FONT |
267 | AND CMOS_ED.M_RELOAD_FONT |
258 | RET NZ ; если 1, то шрифт не перезагружаем |
268 | RET NZ ; если 1, то шрифт не перезагружаем |
259 | LD A,L |
269 | LD A,L |
260 | LD_SET_FONT AND M_TYPE_FONT ; определение выбранного шрифта |
270 | LD_SET_FONT AND CMOS_ED.M_TYPE_FONT ; определение выбранного шрифта |
261 | LD HL,ATM_FONT ; 0 = шрифт ATM |
271 | LD HL,ATM_FONT ; 0 = шрифт ATM |
262 | JR Z,SET_FONT1 |
272 | JR Z,SET_FONT1 |
263 | LD HL,CP866_FONT ; 1 = шрифт CP866 |
273 | LD HL,CP866_FONT ; 1 = шрифт CP866 |
264 | SET_FONT1 LD DE,CPU3 + OFFSET_BUFSYM |
274 | SET_FONT1 LD DE,CPU3 + OFFSET_BUFSYM |
265 | EVOPORT WIN_P3,RAM_SCR_FONT |
275 | EVOPORT WIN_P3,RAM_SCR_FONT |
Line 281... | Line 291... | ||
281 | PHASE $ + CurrAdr |
291 | PHASE $ + CurrAdr |
282 | PERFECTCOM binclude perfpack_pack.bin |
292 | PERFECTCOM binclude perfpack_pack.bin |
283 | 293 | ||
284 | FREE_ADDON1 EQU 0x3FF6 - $ |
294 | FREE_ADDON1 EQU 0x3FF6 - $ |
285 | 295 | ||
286 | DUPL FREE_ADDON1,0xFF |
296 | DB FREE_ADDON1 DUP 0xFF |
287 | DW FREE_ADDON1 ; размер свободного места |
297 | DW FREE_ADDON1 ; размер свободного места |
288 | DB "ADDON1" |
298 | DB "ADDON1" |
289 | DW DATA_VERS |
299 | DW DATA_VERS |
- | 300 | DEPHASE |