Subversion Repositories pentevo

Rev

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