Rev 1031 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1031 | Rev 1120 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | 1 | ||
2 | ; LAST UPDATE: 22.10.2022 savelij |
2 | ; LAST UPDATE: 12.02.2024 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 $ |
Line 133... | Line 133... | ||
133 | OUT (C),A ; сброс виртуальных дисководов |
133 | OUT (C),A ; сброс виртуальных дисководов |
134 | LD (B_PORT_VIRT),A |
134 | LD (B_PORT_VIRT),A |
135 | LD A,0xEF |
135 | LD A,0xEF |
136 | IN A,(0xFE) |
136 | IN A,(0xFE) |
137 | RRCA |
137 | RRCA |
138 | JR NC,INSTALLNMIRST2 |
138 | JR NC,.L2 |
139 | LD IX,CPU2+STACK_NMI |
139 | LD IX,CPU2+STACK_NMI |
140 | LD HL,0x40 |
140 | LD HL,0x40 |
141 | CALL CRC16_FAST ; считаем CRC на месте обработчика |
141 | CALL CRC16_FAST ; считаем CRC на месте обработчика |
142 | PUSH HL ; сохранили CRC |
142 | PUSH HL ; сохранили CRC |
143 | LD IX,CODE_NMIRST + STACK_NMI |
143 | LD IX,CODE_NMIRST + STACK_NMI |
144 | LD HL,0x40 |
144 | LD HL,0x40 |
145 | CALL CRC16_FAST |
145 | CALL CRC16_FAST |
146 | POP BC ; вернули ранее посчитанное CRC |
146 | POP BC ; вернули ранее посчитанное CRC |
147 | XOR A |
147 | XOR A |
148 | SBC HL,BC ; сравнили |
148 | SBC HL,BC ; сравнили |
149 | JR Z,INSTALLNMIRST1 ; если совпало больше ничего не делаем |
149 | JR Z,.L1 ; если совпало больше ничего не делаем |
150 | EVOPORT WIN_P3,RAM_PROFROM |
150 | EVOPORT WIN_P3,RAM_PROFROM |
151 | LD HL,CPU0 |
151 | LD HL,CPU0 |
152 | CALL FILL_MEM ; очистка страницы ОЗУ PROFROM |
152 | CALL FILL_MEM ; очистка страницы ОЗУ PROFROM |
153 | ; не совпало, первый запуск после включения питания или обработчики были испорчены |
153 | ; не совпало, первый запуск после включения питания или обработчики были испорчены |
- | 154 | .L2 LD A,(HDDTIMEOUT) ; сохраняем ячейку вне зависимости от содежимого |
|
154 | INSTALLNMIRST2 LD HL,CPU3 |
155 | LD HL,CPU3 |
155 | CALL FILL_MEM ; очистка последней страницы RAM |
156 | CALL FILL_MEM ; очистка последней страницы RAM |
- | 157 | LD (HDDTIMEOUT),A ; восстанавливаем ячейку |
|
156 | LD HL,CODE_NMIRST |
158 | LD HL,CODE_NMIRST |
157 | LD DE,CPU6 |
159 | LD DE,CPU6 |
158 | LD BC,ENMI_SERVICE - ADR_SEL_ROM - CPU6 |
160 | LD BC,ENMI_SERVICE - ADR_SEL_ROM - CPU6 |
159 | LDIR ; установили обработчики |
161 | LDIR ; установили обработчики |
160 | LD (BUF_TABLVOL + 0xFE),BC ; сброс CRC таблицы найденных разделов |
162 | LD (BUF_TABLVOL + 0xFE),BC ; сброс CRC таблицы найденных разделов |
Line 174... | Line 176... | ||
174 | LD BC,CMOSD_SET_ADR |
176 | LD BC,CMOSD_SET_ADR |
175 | OUT (C),A |
177 | OUT (C),A |
176 | LD BC,CMOSD_RD_WR |
178 | LD BC,CMOSD_RD_WR |
177 | IN A,(C) |
179 | IN A,(C) |
178 | LD (CPU2 + VIRT_BITS),A ; при ините монтируем только рамдиск |
180 | LD (CPU2 + VIRT_BITS),A ; при ините монтируем только рамдиск |
179 | INSTALLNMIRST1 |
181 | .L1 |
180 | IF BUILD_DEBUG=1 |
182 | IF BUILD_DEBUG=1 |
181 | ROMCALL UNPACK_STS,ROM_RST80 |
183 | ROMCALL UNPACK_STS,ROM_RST80 |
182 | ENDIF |
184 | ENDIF |
183 | ROMCALL INIT_CMOS,ROM_RST82 ; проверка и инициализация CMOS при ошибке CRC |
185 | ROMCALL INIT_CMOS,ROM_RST82 ; проверка и инициализация CMOS при ошибке CRC |
184 | CALL SET4RESETFONT |
186 | CALL SET4RESETFONT |
Line 193... | Line 195... | ||
193 | ENDIF |
195 | ENDIF |
194 | LD BC,0xFF << 8 + PN_1F7 |
196 | LD BC,0xFF << 8 + PN_1F7 |
195 | IN A,(C) |
197 | IN A,(C) |
196 | CP 0x50 |
198 | CP 0x50 |
197 | LD A,1 |
199 | LD A,1 |
- | 200 | JR Z,.L3 |
|
198 | JR Z,INSTALLNMIRST3 |
201 | LD A,(HDDTIMEOUT) |
- | 202 | DEC A |
|
- | 203 | JR Z,.L5 ; если ячейка равна 1 задержку из CMOS игнорируем |
|
199 | LD H,HDD_TIMEOUT |
204 | LD H,HDD_TIMEOUT |
200 | ROMCALL READCMOS,ROM_RST82 |
205 | ROMCALL READCMOS,ROM_RST82 |
201 | AND A |
206 | AND A |
202 | LD A,1 |
207 | LD A,1 |
203 | JR Z,INSTALLNMIRST3 |
208 | JR Z,.L3 |
204 | XOR A |
209 | XOR A |
205 | INSTALLNMIRST4 ADD A,25 |
210 | .L4 ADD A,25 |
206 | DEC L |
211 | DEC L |
207 | JR NZ,INSTALLNMIRST4 |
212 | JR NZ,.L4 |
208 | INSTALLNMIRST3 LD (HDDTIMEOUT),A |
213 | .L3 LD (HDDTIMEOUT),A |
209 | LD HL,STEK_PAGES |
214 | .L5 LD HL,STEK_PAGES |
210 | LD (TEKPAGE),HL |
215 | LD (TEKPAGE),HL |
211 | LD HL,READ_KEYS |
216 | LD HL,READ_KEYS |
212 | LD (ADR_INT),HL |
217 | LD (ADR_INT),HL |
213 | LD BC,WIN_A0 |
218 | LD BC,WIN_A0 |
214 | XOR A |
219 | XOR A |