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 |
|