Subversion Repositories pentevo

Rev

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