Subversion Repositories pentevo

Rev

Rev 1120 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
573 savelij 1
 
1186 savelij 2
; LAST UPDATE: 16.02.2025 savelij
573 savelij 3
 
961 savelij 4
; ᫥⥫쭮  RST 8
5
;  ⥪   HL AF BC RF ADR_RET DE  ->
6
; ->  ⥪ HL(    BF) DE(RAMNROM  DOS7FFD) BC' DE' HL' IX IY AF' ->
7
; -> ⥭ 䨣
573 savelij 8
 
1026 savelij 9
REG_R_CORRECT   EQU 0x0D
761 savelij 10
 
573 savelij 11
CODE_NMIRST
1031 savelij 12
 
1186 savelij 13
        PHASE 0
665 savelij 14
 
961 savelij 15
                JP CALL2PAGE                    ; 맮   㣮 ࠭ ROM
801 savelij 16
 
961 savelij 17
                JP CALL2RAMPAGE                 ; 맮   㣮 ࠭ RAM
831 savelij 18
 
1186 savelij 19
                DB ADR_SEL_ROM-$ DUP 0
961 savelij 20
                OUT (C),A                       ; ४祭 ࠭  室
573 savelij 21
                NOP
22
FOR_RET         NOP
23
                JP RAMSEL1
24
 
1026 savelij 25
OUT_NMI         OUT (0xBE),A
573 savelij 26
                RETN
27
 
1186 savelij 28
                DB 0x0038-$ DUP 0xFF
573 savelij 29
IM_EI_RET       EI
30
                RET
31
 
961 savelij 32
VIRT_BITS       DB 0                            ;  7-4 ਬ஢ ᪨,
33
                                                ;  3-2  ॠ쭮 ᪠
34
                                                ;  1-0  㠫쭮 ᪠
764 savelij 35
 
1186 savelij 36
                DB 0x0066-$ DUP 0xFF
573 savelij 37
                NOP
736 savelij 38
                NOP
573 savelij 39
ADR_MAGIC       JP NMI_SERVICE
40
ADR_NMI_JUMP    EQU $-2
41
 
1186 savelij 42
        PHASE $+CPU2
961 savelij 43
; ⠭ 䨣 ⮢  RST 8
1026 savelij 44
R_BF            DB 0xFF
45
R_77            DB 0xFF
46
R_EFF7          DB 0xFF
47
R_7FFD          DB 0xFF
48
R_DOS7FFD       DB 0xFF
49
R_RAMNROM       DB 0xFF
50
R_1WINA3        DB 0xFF
51
R_1WINA2        DB 0xFF
52
R_1WINA1        DB 0xFF
53
R_1WINA0        DB 0xFF
54
R_0WINA3        DB 0xFF
55
R_0WINA2        DB 0xFF
56
R_0WINA1        DB 0xFF
57
R_0WINA0        DB 0xFF
573 savelij 58
 
961 savelij 59
; ⠭ 䨣 ⮢  NMI
1026 savelij 60
N_BF            DB 0xFF
61
N_77            DB 0xFF
62
N_EFF7          DB 0xFF
63
N_7FFD          DB 0xFF
64
N_DOS7FFD       DB 0xFF
65
N_RAMNROM       DB 0xFF
66
N_1WINA3        DB 0xFF
67
N_1WINA2        DB 0xFF
68
N_1WINA1        DB 0xFF
69
N_1WINA0        DB 0xFF
70
N_0WINA3        DB 0xFF
71
N_0WINA2        DB 0xFF
72
N_0WINA1        DB 0xFF
73
N_0WINA0        DB 0xFF
1186 savelij 74
N_TEK_PALS      DB 0x10 DUP 0xFF
573 savelij 75
 
961 savelij 76
; ࠭ ॣ  맮 RST 8
1026 savelij 77
RREG_FI         DB 0xFF
78
RREG_I          DB 0xFF                         ; IF
79
RREG_FF         DB 0xFF
80
RREG_AA         DB 0xFF                         ; AF'
81
RREG_IYL        DB 0xFF
82
RREG_IYH        DB 0xFF                         ; IY
83
RREG_IXL        DB 0xFF
84
RREG_IXH        DB 0xFF                         ; IX
85
RREG_LL         DB 0xFF
86
RREG_HH         DB 0xFF                         ; HL'
87
RREG_EE         DB 0xFF
88
RREG_DD         DB 0xFF                         ; DE'
89
RREG_CC         DB 0xFF
90
RREG_BB         DB 0xFF                         ; BC'
91
RDOS7FFD        DB 0xFF                         ;  DOS7FFD । 맮
92
RRAMNROM        DB 0xFF                         ;  RAMNROM । 맮
93
RPBF_CALL       DB 0xFF                         ; ᮤন  BF । 맮
94
RPAGE_CALL      DB 0xFF                         ;  ࠭ 㤠 諨
95
RREG_E          DB 0xFF
96
RREG_D          DB 0xFF                         ; DE
97
RADRRET_L       DB 0xFF
98
RADRRET_H       DB 0xFF                         ; ADR_RET
99
REI_DI          DB 0xFF
100
R_R             DB 0xFF                         ; RF
101
RREG_C          DB 0xFF
102
RREG_B          DB 0xFF                         ; BC
103
RREG_F          DB 0xFF
104
RREG_A          DB 0xFF                         ; AF
105
RREG_L          DB 0xFF
106
RREG_H          DB 0xFF                         ; HL
107
RST8_SAVE_SP    DW 0xFF
573 savelij 108
 
961 savelij 109
; ࠭ ॣ  맮 NMI
110
; ADR_RET AF' IY IX BC' DE' HL' BC DE RF IF AF HL
1026 savelij 111
NADRRET_L       DB 0xFF                         ; ADR RET
112
NADRRET_H       DB 0xFF
113
NREG_FF         DB 0xFF                         ; AF'
114
NREG_AA         DB 0xFF
115
NREG_IYL        DB 0xFF                         ; IY
116
NREG_IYH        DB 0xFF
117
NREG_IXL        DB 0xFF                         ; IX
118
NREG_IXH        DB 0xFF
119
NREG_CC         DB 0xFF                         ; BC'
120
NREG_BB         DB 0xFF                
121
NREG_EE         DB 0xFF                         ; DE'
122
NREG_DD         DB 0xFF
123
NREG_LL         DB 0xFF                         ; HL'
124
NREG_HH         DB 0xFF
125
NREG_C          DB 0xFF                         ; BC
126
NREG_B          DB 0xFF
127
NREG_E          DB 0xFF                         ; DE
128
NREG_D          DB 0xFF
129
NREG_EI_DI_2    DB 0xFF                         ; RF
130
NREG_R          DB 0xFF
131
NREG_EI_DI_1    DB 0xFF                         ; IF
132
NREG_I          DB 0xFF
133
NREG_F          DB 0xFF                         ; AF
134
NREG_A          DB 0xFF
135
NREG_L          DB 0xFF                         ; HL
136
NREG_H          DB 0xFF
137
NMI_SAVE_SP     DW 0xFF                         ;  ࠭ ⥪ ணࠬ ࢠ  NMI
138
NUM_IM          DB 0xFF                         ; ० 뢠: 0-IM 1, 1-IM 2
139
INT_MODE        DB 0xFF                         ; 뢠 0-襭, 1-ࠧ襭
140
INTERNAL_SP     DW 0xFF                         ;  ࠭ ⥪  ࠡ ࢨᮢ
573 savelij 141
 
1026 savelij 142
B0_CPU0         DB 0xFF                         ;    0  0 
143
P0_CPU0         DB 0xFF                         ; 訩      0  0 
144
B0_CPU1         DB 0xFF                         ;    1  0 
145
P0_CPU1         DB 0xFF                         ; 訩      1  0 
146
B0_CPU2         DB 0xFF                         ;    2  0 
147
P0_CPU2         DB 0xFF                         ; 訩      2  0 
148
B0_CPU3         DB 0xFF                         ;    3  0 
149
P0_CPU3         DB 0xFF                         ; 訩      3  0 
150
B1_CPU0         DB 0xFF                         ;    0  0 
151
P1_CPU0         DB 0xFF                         ; 訩      0  0 
152
B1_CPU1         DB 0xFF                         ;    1  0 
153
P1_CPU1         DB 0xFF                         ; 訩      1  0 
154
B1_CPU2         DB 0xFF                         ;    2  0 
155
P1_CPU2         DB 0xFF                         ; 訩      2  0 
156
B1_CPU3         DB 0xFF                         ;    3  0 
157
P1_CPU3         DB 0xFF                         ; 訩      3  0 
158
B_PORT77        DB 0xFF                         ;   뢮   77
159
P_PORT77        DB 0xFF                         ; 訩    77
961 savelij 160
B_PORT_VIRT     DB 0xFF                         ; ⥪饥 ﭨ   ᪮
573 savelij 161
 
1186 savelij 162
        PHASE $ & 0x3FFF
163
                DB HIGH ($) * 0x100 + 0xFF - $ DUP 0xFF
573 savelij 164
                DW IM_EI_RET
165
 
1186 savelij 166
                DB HIGH ($) * 0x100 + 0x80 - $ DUP 0xFF
573 savelij 167
STACK_RST
168
 
1186 savelij 169
                DB (HIGH ($) + 1) * 0x100 - $ DUP 0xFF
573 savelij 170
STACK_NMI
171
 
585 savelij 172
                JP NMI_EXIT_DBG
173
 
961 savelij 174
; 室  RST 8
1186 savelij 175
RAMSEL1         LD (RST8_SAVE_SP-CPU2),SP       ; ࠭  ⥪
176
                LD SP,RREG_E-CPU2
961 savelij 177
                PUSH HL                         ;  ࠭ 㤠 諨  ᮤন  BF
178
                PUSH DE                         ;  RAMNROM+DOS7FFD
585 savelij 179
                EXX
961 savelij 180
                PUSH BC                         ; BC'
181
                PUSH DE                         ; DE'
182
                PUSH HL                         ; HL'
585 savelij 183
                EXX
961 savelij 184
                PUSH IX                         ; IX
185
                PUSH IY                         ; IY
585 savelij 186
                EX AF,AF'
961 savelij 187
                PUSH AF                         ; AF'
585 savelij 188
                LD A,I
961 savelij 189
                PUSH AF                         ; IF
1031 savelij 190
; ⠭   室  ࠡ稪 NMI
191
                LD HL,ADR_MAGIC
192
                LD DE,TMP_ADR_0068 - CPU2
193
                LDI
194
                LDI
195
                LDI
1026 savelij 196
                LD A,0xC9
573 savelij 197
                LD (FOR_RET),A
198
                XOR A
199
                LD I,A
1186 savelij 200
                LD HL,(RST8_SAVE_SP-CPU2)
201
                LD DE,RREG_E-CPU2
573 savelij 202
                LD BC,RREG_H-RPAGE_CALL
203
                LDIR
1186 savelij 204
                LD HL,R_77-CPU2
573 savelij 205
                LD BC,RD_77
206
                INIR
207
                INI
961 savelij 208
                LD BC,FDD_EMU_PORT
209
                IN A,(C)
210
                LD (B_PORT_VIRT & 0x3FFF),A
211
                XOR A
212
                OUT (C),A
1186 savelij 213
                LD HL,(RDOS7FFD-CPU2)
214
                LD (R_DOS7FFD-CPU2),HL
573 savelij 215
                LD SP,STACK_RST
1186 savelij 216
                LD A,(R_77-CPU2)
573 savelij 217
                AND 7
1035 savelij 218
                OR 0xA0                         ; 몫祭 ࡮ 14 
1026 savelij 219
                LD BC,0xFF77
573 savelij 220
                OUT (C),A
1026 savelij 221
        PEC_OFF M_SHADOW_BF
573 savelij 222
                LD BC,PENT_CONF
1186 savelij 223
                LD A,(R_EFF7-CPU2)
605 savelij 224
                AND %11101111
961 savelij 225
                OUT (C),A                       ; 祭 ࡮ 7 
1026 savelij 226
        PEC_ON M_SHADOW_BF
1186 savelij 227
                LD A,(R_7FFD-CPU2)
1026 savelij 228
                AND 0x10
1186 savelij 229
                LD HL,R_0WINA0-CPU2
573 savelij 230
                JR Z,RAMSEL3
1186 savelij 231
                LD HL,R_1WINA0-CPU2
232
RAMSEL3         LD A,(RPAGE_CALL-CPU2)
573 savelij 233
                LD (HL),A
1026 savelij 234
        ATMPORT WIN_A3,0x40
1186 savelij 235
                LD BC,WIN_P2
573 savelij 236
                XOR A
237
                OUT (C),A
238
                LD BC,WIN_A0
736 savelij 239
                LD A,ROM_RST83
1186 savelij 240
                LD HL,CPU2
573 savelij 241
                ADD HL,SP
242
                LD SP,HL
961 savelij 243
                LD HL,CONT_RST8                 ;  த ࠡ⪨ RST 8
573 savelij 244
                PUSH HL
245
                JP ADR_SEL_ROM
246
 
961 savelij 247
; 室  ࠡ稪 RST 8
1031 savelij 248
P4_EXIT_RST8
249
; ࠭塞   室  ࠡ稪 NMI
250
                LD HL,TMP_ADR_0068 - CPU2
251
                LD DE,ADR_MAGIC
252
                LDI
253
                LDI
254
                LDI
585 savelij 255
                XOR A
256
                LD (FOR_RET),A
1026 savelij 257
        PEC_OFF M_SHADOW_BF
585 savelij 258
                LD BC,PENT_CONF
1186 savelij 259
                LD A,(R_EFF7-CPU2)
585 savelij 260
                OUT (C),A
1026 savelij 261
        PEC_ON M_SHADOW_BF
1186 savelij 262
                LD C,LOW (WIN_A1)
263
                LD A,(R_7FFD-CPU2)
1026 savelij 264
                AND 0x10
665 savelij 265
                LD HL,B0_CPU1-CPU2
1035 savelij 266
                JR Z,.L11
573 savelij 267
                LD HL,B1_CPU1-CPU2
1035 savelij 268
.L11            LD A,3
269
.L12            EX AF,AF'
961 savelij 270
                LD E,(HL)                       ;     
573 savelij 271
                INC HL
961 savelij 272
                LD D,(HL)                       ; 訩   
573 savelij 273
                INC HL
274
                LD A,D
665 savelij 275
                OR 7
573 savelij 276
                LD B,A
665 savelij 277
                OUT (C),E
573 savelij 278
                EX AF,AF'
279
                DEC A
1035 savelij 280
                JR NZ,.L12
1026 savelij 281
        IFDEF DOS_FE
961 savelij 282
                LD BC,FDD_EMU_PORT
283
                LD A,(B_PORT_VIRT & 0x3FFF)
284
                OUT (C),A
1026 savelij 285
        ENDIF
1186 savelij 286
                LD HL,RST8_SAVE_SP-(RREG_H-RPAGE_CALL)-CPU2
287
                LD DE,(RST8_SAVE_SP-CPU2)
573 savelij 288
                LD BC,RREG_H-RPAGE_CALL
289
                LDIR
1186 savelij 290
                LD BC,(B_PORT77-CPU2)
573 savelij 291
                LD A,C
1026 savelij 292
                LD C,0x77
573 savelij 293
                OUT (C),A
1186 savelij 294
                LD SP,RREG_FI-CPU2
573 savelij 295
                POP AF
296
                LD I,A
297
                POP AF
298
                EX AF,AF'
299
                POP IY
300
                POP IX
301
                POP HL
302
                POP DE
303
                POP BC
304
                EXX
305
                POP DE
306
                POP HL
1186 savelij 307
                LD SP,(RST8_SAVE_SP-CPU2)       ; ⠭ ⥪ 맢襩 ணࠬ
961 savelij 308
                LD BC,ADR_RST8END               ;  
573 savelij 309
                PUSH BC
665 savelij 310
                LD C,LOW (WIN_A0)
1186 savelij 311
                LD A,(R_7FFD-CPU2)
1026 savelij 312
                AND 0x10
1186 savelij 313
                LD DE,(B0_CPU0-CPU2)
1035 savelij 314
                JR Z,.L13
1186 savelij 315
                LD DE,(B1_CPU0-CPU2)
1035 savelij 316
.L13            LD A,D
665 savelij 317
                OR 7
573 savelij 318
                LD B,A
961 savelij 319
                LD A,E                          ; ࠭ ROM 㤠 
573 savelij 320
                JP ADR_SEL_ROM
321
 
961 savelij 322
; 室  NMI
1186 savelij 323
NMI_SERVICE     LD (NMI_SAVE_SP-CPU2),SP        ; ࠭ ⥪
324
                LD SP,NMI_SAVE_SP-CPU2          ;  ⥪
961 savelij 325
                PUSH HL                         ; ࠭ HL
326
                PUSH AF                         ; ࠭ AF
573 savelij 327
                LD A,I
961 savelij 328
                PUSH AF                         ; ࠭ I, 䫠  ० 뢠
573 savelij 329
                LD A,R
961 savelij 330
                PUSH AF                         ; ࠭ R
331
                PUSH DE                         ; ࠭ DE
332
                PUSH BC                         ; ࠭ BC
573 savelij 333
                EXX
961 savelij 334
                PUSH HL                         ; ࠭  HL
335
                PUSH DE                         ; ࠭  DE
336
                PUSH BC                         ; ࠭  BC
337
                PUSH IX                         ; ࠭ IX
338
                PUSH IY                         ; ࠭ IY
573 savelij 339
                EX AF,AF'
961 savelij 340
                PUSH AF                         ; ࠭  AF
1026 savelij 341
                LD A,0x80-REG_R_CORRECT
1186 savelij 342
                LD HL,NREG_R-CPU2
761 savelij 343
                SLA (HL)
344
                RLA
345
                ADD A,(HL)
346
                RRCA
961 savelij 347
                LD (HL),A                       ; ४ ॣ R
1031 savelij 348
; ࠭塞   室  ࠡ稪 NMI
349
                LD HL,ADR_MAGIC
350
                LD DE,TMP_ADR_0068 - CPU2
351
                LDI
352
                LDI
353
                LDI
1186 savelij 354
                LD HL,(NMI_SAVE_SP-CPU2)
573 savelij 355
                LD E,(HL)
356
                INC HL
357
                LD D,(HL)
1186 savelij 358
                LD HL,(NREG_F-CPU2)
678 savelij 359
                AND A
360
                SBC HL,DE
1035 savelij 361
                JR NZ,.L005
1186 savelij 362
                LD HL,(NMI_SAVE_SP-CPU2)
678 savelij 363
                INC HL
364
                INC HL
1186 savelij 365
                LD (NMI_SAVE_SP-CPU2),HL
678 savelij 366
                LD E,(HL)
367
                INC HL
368
                LD D,(HL)
1035 savelij 369
.L005           PUSH DE
573 savelij 370
                LD SP,STACK_NMI
371
                LD HL,OUT_NMI
372
                LD (ADR_NMI_JUMP),HL
1026 savelij 373
                LD A,0xC9
961 savelij 374
                LD (FOR_RET),A                  ; RET  ४祭 ࠭ ROM/RAM
1186 savelij 375
                LD HL,N_BF-CPU2                 ;  ࠭ ⠭ ॣ஢ 䨣樨
573 savelij 376
                IN A,(PEVO_CONF)
377
                LD (HL),A
378
                INC HL
379
                LD BC,RD_77
961 savelij 380
                INIR
573 savelij 381
                INI
961 savelij 382
                LD BC,FDD_EMU_PORT
383
                IN A,(C)
384
                LD (B_PORT_VIRT & 0x3FFF),A
385
                XOR A
1035 savelij 386
                OUT (C),A                       ; 塞  樨 
961 savelij 387
                LD B,1                          ; 뢠 ࠧ襭
761 savelij 388
                LD A,R
1035 savelij 389
                JP PE,.L001
761 savelij 390
                LD A,R
1035 savelij 391
                JP PE,.L001
961 savelij 392
                DEC B                           ; 뢠 饭
1035 savelij 393
.L001           XOR A
961 savelij 394
                LD I,A                          ; ࠡ稪 뢠 ⠢   00FF
836 savelij 395
                CALL GET_NUM_IM
1026 savelij 396
        PEC_OFF M_SHADOW_BF
836 savelij 397
                LD A,(N_EFF7-CPU2)
398
                AND %11101111
399
                LD BC,PENT_CONF
400
                OUT (C),A
1026 savelij 401
        PEC_ON M_SHADOW_BF
836 savelij 402
                LD A,(N_77-CPU2)
403
                AND %11110111
1026 savelij 404
                LD BC,0xFF77
961 savelij 405
                OUT (C),A                       ; ⠭ 7.0Mhz  NMI ࢨ
761 savelij 406
                PUSH DE
1186 savelij 407
                LD BC,WIN_P2
573 savelij 408
                XOR A
961 savelij 409
                OUT (C),A                       ; 稫 ᫥ ࠭ 
585 savelij 410
                LD B,HIGH (WIN_A3)
1026 savelij 411
                LD A,0x40
961 savelij 412
                OUT (C),A                       ; 﫨 ᨬ 3    7FFD
1186 savelij 413
                LD DE,CPU2
585 savelij 414
                ADD HL,DE
415
                LD (ADR_PALITRA),HL
1186 savelij 416
                LD HL,CPU2
573 savelij 417
                ADD HL,SP
418
                LD SP,HL
419
                LD B,HIGH (WIN_A0)
736 savelij 420
                LD A,ROM_RST83
573 savelij 421
                OUT (C),A
761 savelij 422
                POP HL
423
                LD (NUM_IM),HL
1186 savelij 424
PEREHVAT        DB 3 DUP 0
1026 savelij 425
                LD A,(DEBUG_ONOFF)
426
                AND A
427
                JR NZ,IN_DEBUG
585 savelij 428
                LD HL,CONTINUE_MAGIC
429
                PUSH HL
573 savelij 430
                JP OUT_NMI
431
 
1026 savelij 432
IN_DEBUG        XOR A
433
                IN A,(0xFE)
434
                CPL
435
                AND 0x1F
436
                JR NZ,IN_DEBUG
1186 savelij 437
                LD HL,NMI_DEBUG
1026 savelij 438
                PUSH HL
439
                JP OUT_NMI
585 savelij 440
 
1031 savelij 441
; 室  NMI
573 savelij 442
EXITNMISERVICE  LD HL,ADR_MAGIC
1026 savelij 443
                LD (HL),0xC9                    ; 誠  MAGIC
573 savelij 444
                IN A,(PEVO_CONF)
761 savelij 445
                OR M_NMI_BF
573 savelij 446
                OUT (PEVO_CONF),A
1026 savelij 447
                AND M_NMI_BF!0xFF
573 savelij 448
                OUT (PEVO_CONF),A
961 savelij 449
                HALT                            ;  ࠡ뢠 MAGIC 
1031 savelij 450
; ⠭   室  ࠡ稪 NMI
451
                LD HL,TMP_ADR_0068 - CPU2
452
                LD DE,ADR_MAGIC
453
                LDI
454
                LDI
455
                LDI
573 savelij 456
                LD C,LOW (WIN_A0)
1186 savelij 457
                LD A,(N_7FFD-CPU2)
1026 savelij 458
                AND 0x10
1186 savelij 459
                LD HL,B0_CPU0-CPU2
1035 savelij 460
                JR Z,.L11
1186 savelij 461
                LD HL,B1_CPU0-CPU2
1035 savelij 462
.L11            LD A,4
463
.L12            EX AF,AF'
961 savelij 464
                LD E,(HL)                       ;     
573 savelij 465
                INC HL
961 savelij 466
                LD D,(HL)                       ; 訩   
573 savelij 467
                INC HL
468
                LD A,D
1026 savelij 469
                OR 0x3F
573 savelij 470
                LD B,A
471
                BIT 3,D
1035 savelij 472
                JR NZ,.L15
573 savelij 473
                LD A,D
474
                AND 3
475
                RRCA
476
                RRCA
477
                OUT (C),A
478
                RES 3,B
1035 savelij 479
.L15            OUT (C),E
573 savelij 480
                EX AF,AF'
481
                DEC A
1035 savelij 482
                JR NZ,.L12
1026 savelij 483
        IFDEF DOS_FE
961 savelij 484
                LD BC,FDD_EMU_PORT
485
                LD A,(B_PORT_VIRT & 0x3FFF)
486
                OUT (C),A
1026 savelij 487
        ENDIF
488
        PEC_OFF M_SHADOW_BF
573 savelij 489
                LD BC,PENT_CONF
1186 savelij 490
                LD A,(N_EFF7-CPU2)
573 savelij 491
                OUT (C),A
1026 savelij 492
        PEC_ON M_SHADOW_BF
1186 savelij 493
                LD BC,(B_PORT77-CPU2)
573 savelij 494
                LD A,C
1026 savelij 495
                LD C,0x77
573 savelij 496
                OUT (C),A
1186 savelij 497
                LD A,(N_BF-CPU2)
573 savelij 498
                OUT (PEVO_CONF),A
605 savelij 499
                LD BC,CONF_128
1186 savelij 500
                LD A,(N_7FFD-CPU2)
573 savelij 501
                OUT (C),A
502
                LD HL,NMI_SERVICE
503
                LD (ADR_NMI_JUMP),HL
504
                XOR A
505
                LD (FOR_RET),A
1186 savelij 506
                LD SP,NADRRET_L-CPU2
507
                LD HL,(NMI_SAVE_SP-CPU2)
678 savelij 508
                POP DE
509
                LD (HL),E
510
                INC HL
961 savelij 511
                LD (HL),D                       ; ⠭  
573 savelij 512
                POP AF
513
                EX AF,AF'
514
                POP IY
515
                POP IX
516
                POP BC
517
                POP DE
518
                POP HL
519
                EXX
520
                POP BC
521
                POP DE
522
                POP AF
1035 savelij 523
                JP PO,.L1
573 savelij 524
                EI
1035 savelij 525
.L1             LD A,0x80+3-REG_R_CORRECT
1186 savelij 526
                LD HL,NREG_R-CPU2
585 savelij 527
                SLA (HL)
528
                RLA
529
                ADD A,(HL)
530
                RRCA
531
                LD R,A
532
                POP AF
573 savelij 533
                LD I,A
534
                POP AF
535
                POP HL
1186 savelij 536
                LD SP,(NMI_SAVE_SP-CPU2)
1026 savelij 537
                OUT (0xBE),A
573 savelij 538
                RETN
539
 
1186 savelij 540
LDIR__BYTES     LD HL,CPU2
573 savelij 541
                ADD HL,SP
542
                LD SP,HL
1186 savelij 543
                LD A,(R_7FFD-CPU2)
1026 savelij 544
                AND 0x10
573 savelij 545
                LD HL,B0_CPU1-CPU2
1035 savelij 546
                JR Z,.L5
573 savelij 547
                LD HL,B1_CPU1-CPU2
1035 savelij 548
.L5             LD C,LOW (WIN_A0)
573 savelij 549
                LD A,3
1035 savelij 550
.L3             EX AF,AF'
961 savelij 551
                LD E,(HL)                       ;     
573 savelij 552
                INC HL
961 savelij 553
                LD D,(HL)                       ; 訩   
573 savelij 554
                INC HL
555
                LD A,D
1026 savelij 556
                OR 0x3F
573 savelij 557
                LD B,A
558
                BIT 3,D
1035 savelij 559
                JR NZ,.L4
573 savelij 560
                LD A,D
561
                AND 3
562
                RRCA
563
                RRCA
564
                OUT (C),A
565
                RES 3,B
1035 savelij 566
.L4             OUT (C),E
573 savelij 567
                EX AF,AF'
568
                DEC A
1035 savelij 569
                JR NZ,.L3
573 savelij 570
                EXX
571
                LDIR
1186 savelij 572
                LD BC,WIN_P2
573 savelij 573
                XOR A
574
                OUT (C),A
1186 savelij 575
                LD HL,CPU2
573 savelij 576
                ADD HL,SP
577
                LD SP,HL
578
                LD BC,WIN_A0
736 savelij 579
                LD A,ROM_RST83
585 savelij 580
                JP ADR_SEL_ROM
573 savelij 581
 
761 savelij 582
NUM_IM2         LD A,1
583
                RET
665 savelij 584
 
761 savelij 585
GET_NUM_IM      PUSH HL
961 savelij 586
                LD D,B                          ; INT ON/OFF
1026 savelij 587
                LD HL,0x0038
588
                LD (HL),0xAF
589
                LD L,0xFF
761 savelij 590
                LD (HL),LOW (NUM_IM2)
591
                INC HL
592
                LD (HL),HIGH (NUM_IM2)
593
                EI
594
                HALT
595
                DI
961 savelij 596
                LD E,A                          ; 0-IM 1, 1-IM 2
1026 savelij 597
                LD HL,0x0038
598
                LD (HL),0xFB
599
                LD L,0xFF
761 savelij 600
                LD (HL),LOW (IM_EI_RET)
601
                INC HL
602
                LD (HL),HIGH (IM_EI_RET)
603
                POP HL
604
                RET
605
 
1186 savelij 606
        PHASE $ + CPU2
961 savelij 607
; 맮 ணࠬ  㣨 ࠭ ROM
585 savelij 608
CALL2PAGE       EX (SP),HL
609
                PUSH BC
610
                PUSH AF
831 savelij 611
                LD BC,WIN_A0
612
.L1             LD (PORTCALL),BC
585 savelij 613
                LD C,(HL)
614
                INC HL
615
                LD B,(HL)
616
                INC HL
617
                LD (ADRCALL),BC
618
                LD BC,RD_7FFD
619
                IN A,(C)
1026 savelij 620
                AND 0x10
585 savelij 621
                LD BC,RD_0WINA0
1035 savelij 622
                JR Z,.L2
585 savelij 623
                LD BC,RD_1WINA0
1035 savelij 624
.L2             IN A,(C)
1026 savelij 625
                AND 0x3F
585 savelij 626
                LD BC,STEK_PAGES
627
TEKPAGE         EQU $-2
628
                LD (BC),A
629
                INC BC
630
                LD (TEKPAGE),BC
631
                LD A,(HL)
632
                INC HL
633
                LD BC,WIN_A0
831 savelij 634
PORTCALL        EQU $-2
585 savelij 635
                OUT (C),A
636
                POP AF
637
                POP BC
638
                EX (SP),HL
639
                CALL 0
640
ADRCALL         EQU $-2
641
                PUSH BC
642
                PUSH AF
643
                LD BC,(TEKPAGE)
644
                DEC BC
645
                LD A,(BC)
646
                LD (TEKPAGE),BC
647
                LD BC,WIN_A0
648
                OUT (C),A
649
                POP AF
650
                POP BC
651
                RET
652
 
831 savelij 653
CALL2RAMPAGE    EX (SP),HL
654
                PUSH BC
655
                PUSH AF
656
                LD BC,WIN_P0
657
                JR CALL2PAGE.L1
658
 
961 savelij 659
; 室  ⫠稪
1186 savelij 660
NMI_DEBUG       DI
661
                LD HL,CPU2 + DEBUG_ONOFF
662
                BIT DEBUGGER.B_ACTIV,(HL)
663
                JR Z,.L1
961 savelij 664
; ਭ㤨⥫ 室  ⫠稪  ⮬  ᭮  NMI
761 savelij 665
                LD HL,DBG2MAINMENU
585 savelij 666
                PUSH HL
1186 savelij 667
                JR .L2
585 savelij 668
 
961 savelij 669
; 室  ⫠稪  ᭮  NMI
1186 savelij 670
.L1             LD HL,RESTART_MAIN
585 savelij 671
                PUSH HL
672
                LD HL,EXIT_DEBUG
673
                PUSH HL
1186 savelij 674
                LD HL,CPU2+DEBUG_ONOFF
675
                SET DEBUGGER.B_ACTIV,(HL)
676
.L2             LD HL,CONTINUE_PROG
585 savelij 677
                LD DE,NADRRET_L
1026 savelij 678
        EVOPORT WIN_P3,RAM_STS                  ; 稫 ࠭  ⠭ STS
585 savelij 679
                LD BC,N_BF
605 savelij 680
                LD A,(N_77)
681
                EX AF,AF'
585 savelij 682
                LD A,NO_EXIT_DEBUG-EXIT_DEBUG
683
                JP START_STS
684
 
961 savelij 685
; ଠ 室  ⫠稪
1186 savelij 686
EXIT_DEBUG      LD HL,CPU2+DEBUG_ONOFF
687
                RES DEBUGGER.B_ACTIV,(HL)
961 savelij 688
; 室  ⫠稪  ᭮  NMI
1026 savelij 689
NO_EXIT_DEBUG
690
        EVOPORT WIN_A0,ROM_RST82
1186 savelij 691
                LD HL,CPU2+DEBUG_ONOFF
692
                LD A,DEBUGGER.M_TRACE
585 savelij 693
                AND (HL)
694
                RET Z
695
                LD HL,TRACER_DBG
696
                EX (SP),HL
697
                RET
698
 
961 savelij 699
; 室  ⫠稪  ᭮  NMI
1186 savelij 700
DBG2MAINMENU    LD HL,CPU2+DEBUG_ONOFF
701
                RES DEBUGGER.B_ACTIV,(HL)
1026 savelij 702
        EVOPORT WIN_A0,ROM_RST83
1186 savelij 703
                LD A,DEBUGGER.M_TRACE
761 savelij 704
                AND (HL)
705
                JP NZ,CONTMAGIC3
706
                JP RESTART_NMI
707
 
961 savelij 708
;   NMI  ⫠稪.  ⠭:
709
; , 䮭, ०
1026 savelij 710
NMI_EXIT_DBG
711
        EVOPORT WIN_A0,ROM_RST82
1035 savelij 712
;       ROMCALL RESTORE_AY,ROM_RST83            ; ⠭ ॣ஢ AY
585 savelij 713
                LD HL,ADR_MAGIC
1026 savelij 714
                LD (HL),0xC9                    ; 誠  MAGIC
585 savelij 715
                IN A,(PEVO_CONF)
761 savelij 716
                OR M_NMI_BF
585 savelij 717
                OUT (PEVO_CONF),A
1026 savelij 718
                AND M_NMI_BF!0xFF
585 savelij 719
                OUT (PEVO_CONF),A
961 savelij 720
                HALT                            ;  ࠡ뢠 MAGIC 
585 savelij 721
                LD HL,ADR_MAGIC
1026 savelij 722
                LD (HL),0xC3                    ; ࠧ襭 ࠡ稪 MAGIC । 室
585 savelij 723
                LD C,LOW (WIN_A0)
1186 savelij 724
                LD A,(N_7FFD-CPU2)
1026 savelij 725
                AND 0x10
1186 savelij 726
                LD HL,B0_CPU0-CPU2
1035 savelij 727
                JR Z,.L11
1186 savelij 728
                LD HL,B1_CPU0-CPU2
1035 savelij 729
.L11            LD A,4
730
.L12            EX AF,AF'
961 savelij 731
                LD E,(HL)                       ;     
585 savelij 732
                INC HL
961 savelij 733
                LD D,(HL)                       ; 訩   
585 savelij 734
                INC HL
735
                LD A,D
1026 savelij 736
                OR 0x3F
585 savelij 737
                LD B,A
738
                BIT 3,D
1035 savelij 739
                JR NZ,.L15
585 savelij 740
                LD A,D
741
                AND 3
742
                RRCA
743
                RRCA
744
                OUT (C),A
745
                RES 3,B
1035 savelij 746
.L15            OUT (C),E
585 savelij 747
                EX AF,AF'
748
                DEC A
1035 savelij 749
                JR NZ,.L12
1026 savelij 750
        PEC_OFF M_SHADOW_BF
585 savelij 751
                LD BC,PENT_CONF
1186 savelij 752
                LD A,(N_EFF7-CPU2)
585 savelij 753
                OUT (C),A
1026 savelij 754
        PEC_ON M_SHADOW_BF
1186 savelij 755
;               LD BC,(B_PORT77-CPU2)
585 savelij 756
;               LD A,C
1026 savelij 757
;               LD C,0x77
585 savelij 758
;               OUT (C),A
1186 savelij 759
                LD A,(N_BF-CPU2)
585 savelij 760
                OUT (PEVO_CONF),A
605 savelij 761
                LD BC,CONF_128
1186 savelij 762
                LD A,(N_7FFD-CPU2)
585 savelij 763
                OUT (C),A
764
                LD HL,NMI_SERVICE
765
                LD (ADR_NMI_JUMP),HL
766
                XOR A
767
                LD (FOR_RET),A
1186 savelij 768
                LD SP,NADRRET_L-CPU2
961 savelij 769
                POP AF                          ;   
585 savelij 770
                POP AF
771
                EX AF,AF'
772
                POP IY
773
                POP IX
774
                POP BC
775
                POP DE
776
                POP HL
777
                EXX
778
                POP BC
779
                POP DE
780
                POP AF
781
                JP PO,ENMIDBGSERV1
782
                EI
1026 savelij 783
ENMIDBGSERV1    LD A,0x80+3-REG_R_CORRECT
1186 savelij 784
                LD HL,NREG_R-CPU2
585 savelij 785
                SLA (HL)
786
                RLA
787
                ADD A,(HL)
788
                RRCA
789
                LD R,A
790
                POP AF
791
                LD I,A
792
                POP AF
793
                POP HL
1186 savelij 794
                LD SP,(NMI_SAVE_SP-CPU2)
1026 savelij 795
                OUT (0xBE),A
585 savelij 796
                RETN
797
 
831 savelij 798
        IF 0
799
TO_USBDRV       EX AF,AF'
800
                LD (.L3),A
801
                LD A,IYL
802
                AND A
803
                LD A,(NEXTBYTERST8)
804
                JR Z,.L1
805
                EX (SP),HL
806
                LD A,(HL)
807
                INC HL
808
                EX (SP),HL
809
.L1             PUSH BC
810
                PUSH AF
811
                LD BC,WIN_P0
812
                LD A,RAM_SCR_FONT
813
                OUT (C),A
814
                POP AF
815
                POP BC
816
                LD (.OLD_SP_USB),SP
817
                LD SP,CPU1
818
                ADD A,A
819
                PUSH HL
820
                LD HL,COMUSBF.RET4USBF
821
                EX (SP),HL
822
                PUSH HL
823
                LD HL,COMUSBF.TBLUSBF
824
                ADD A,L
825
                LD L,A
826
                ADC A,H
827
                SUB L
828
                LD H,A
829
                LD A,(HL)
830
                INC HL
831
                LD H,(HL)
832
                LD L,A
833
                LD A,0
834
.L3             EQU $-1
835
                EX AF,AF'
836
                EX (SP),HL
837
                JP COMUSBF.IN_USBF
838
 
839
.RET_USBF       LD SP,0
840
.OLD_SP_USB     EQU $-2
841
                RET
842
        ENDIF
843
 
961 savelij 844
; ६  USB ࠩ
831 savelij 845
vars
1026 savelij 846
.bFlags         DW 0xFF
847
.xferLen        DB 0xFF
848
.data0          DB 0xFF
849
.data1          DB 0xFF
850
.cmd            DB 0xFF
851
.intr           DB 0xFF
852
.result         DB 0xFF
853
.remainder      DB 0xFF
854
.dataX          DB 0xFF
855
.bufLen         DB 0xFF
856
.addr           DB 0xFF
857
.timeout        DB 0xFF
831 savelij 858
 
1186 savelij 859
.SL_OUT         DB 8 dup (0xFF)
860
.DBUF           DB 64 dup (0xFF)
861
.T_OUT          DB 32 dup (0xFF)
831 savelij 862
 
863
uDev            pUSBDEV
864
usbstack        PKG
865
 
1186 savelij 866
F_INTEXT_DRV    DB 0xFF                         ; 䫠  譨/७ 맮 ࠩ஢
867
TMP_NUMHDD      DB 0xFF
868
TMP_ADR_0068    DD 0xFFFFFFFF                   ; ࠭  墠稪 NMI
869
NUMSEC_LBA48    DQ 0xFFFFFFFFFFFFFFFF           ;  ᥪ  ⥭/
870
VARS_TXT_DEC    DB "281474976710655\0"          ; ᫮  48 
871
ADR_SP_COMFAT   DW 0xFF
872
STEK_PAGES      DB 0x10 DUP 0xFF                ; 10 ⥪ ࠭ 뢮  ROM
1026 savelij 873
RST_FLAGS       DB 0xFF                         ; 1
874
TXT_COLOR       DB 0xFF                         ; 1
875
COORD_XY        DW 0xFF                         ; 2
1186 savelij 876
COLBUF          DB 0x50 DUP 0xFF                ; 50  ࠭ ப 梥  ࠭
877
MOUSE_BUFF      DB 0x10 DUP 0xFF                ; 10  ࠭  ࠭  ஬ 
1026 savelij 878
PRESSEDKEY      DW 0xFFFF                       ; 2  ᯨ᪠   ᫥ 뢮 
1186 savelij 879
SYSFLAGS        DB 0xFF                         ; 1 ⥬ 䫠
880
 _BITMASK VIDEO_MODE,           7               ; =1-TXT, =0-ZX SCREEN MODE
881
 _BITMASK FB_INT_EXT,           6               ; =1-譨 맮 FILE BROWSER, =0-७
882
 _BITMASK NMI_FB_BLOCK,         5               ; =1- ᪠ File Browser  NMI
883
 _BITMASK WIN_INT_EXT,          4               ; =1-譥 , =0-७ 
884
 _BITMASK RUN_FAT_DSK,          3               ; =1-  FAT, =0-  ᪥
885
 _BITMASK CLOCK_PRESENT,        2               ; =1- , =0-
886
 _BITMASK MOUSE_PRESENT,        1               ; =1- , =0-
887
 _BITMASK CURSOR_NUM,           0               ;   ᮢ,  
888
FATVARSFLAGS    DB 0xFF                         ; 䫠  ६ FAT
889
 _BITMASK TYPE,                 2               ; =1- ࠡ  ७ ,0-譥
890
 _BITMASK INT,                  1               ; =1- FAT 譥  ࠭
891
 _BITMASK EXT,                  0               ; =1- FAT ७  ࠭
1026 savelij 892
NEXTBYTERST8    DB 0xFF                         ; 1 ᫥騩  ᫥ 맮 RST 8,   맮 ࠩ
893
OLD_STACK       DW 0xFFFF                       ; 2
1186 savelij 894
FOUND_FAT_FILES DW 0xFFFF                       ; ⢮  䠩
1026 savelij 895
ADR_INT         DW 0xFFFF                       ; 2
896
ADR_PALITRA     DW 0xFFFF                       ; 2
897
XNEW            DB 0xFF                         ; 1
898
ADRSTR_Y        DB 0xFF                         ; 1
899
ADRSTR_X        DB 0xFF                         ; 1
900
TXNEW           DB 0xFF                         ; 1
901
TADRSTR_Y       DB 0xFF                         ; 1
902
TADRSTR_X       DB 0xFF                         ; 1
903
NO_INW          DB 0xFF                         ; 1
904
COLOR4SYM       DB 0xFF                         ; 1
1186 savelij 905
PAGE4READ       DB 0xFF                         ; 1 ࠭   ⥭  譥 
1026 savelij 906
PAGE4SCR        DB 0xFF                         ; 1
1186 savelij 907
DAT_MAIN_MENU   DB 3 DUP 0                      ; 3
908
DAT_SETUP_MENU  DB 3 DUP 0                      ; 3
909
DAT_FILEBROWS   DB 5 DUP 0                      ; 5
910
DAT_MOUNT       DB 3 DUP 0                      ; 3
911
DAT_LOAD        DB 3 DUP 0                      ; 3
912
WIN_DEV         DB 0x30 DUP 0                   ; 30
1026 savelij 913
COL_CURSOR      DW 0xFFFF                       ; 2
914
_MORG           DB 0xFF                         ; 1
915
ARXY            DW 0xFFFF                       ; 2
916
ADR_REST        DW 0xFFFF                       ; 2
917
MOUPOS          DW 0xFFFF                       ; 2
918
TEK_MODES       DB 0xFF                         ; 1
919
CMP_FONT_FLAG   DB 0xFF                         ; 1
1186 savelij 920
BUFF4TXT        DB 0x2B DUP 0xFF                ; 2B
921
EXT4FOUND       DB 0x10*3+1 DUP 0xFF            ; 10*3+1
922
CMOS4CRC16      DB ECMOS_DEFAULT-CMOS_DEFAULT DUP 0xFF
1026 savelij 923
KSTATE0         DB 0xFF                         ; 1 |
961 savelij 924
KSTATE1         DB 0                            ; 1 |
925
KSTATE2         DB 0                            ; 1 |
926
KSTATE3         DB 0                            ; 1 |
1026 savelij 927
KSTATE4         DB 0xFF                         ; 1 |    
961 savelij 928
KSTATE5         DB 0                            ; 1 |    BASIC
929
KSTATE6         DB 0                            ; 1 |    ६
930
KSTATE7         DB 0                            ; 1 |    
931
LAST_K          DB 0                            ; 1 |    
1026 savelij 932
REPDEL          DB 0x10                         ; 1 |
961 savelij 933
REPPER          DB 1                            ; 1 |
934
FLAGS_KEY       DB 0                            ; 1 |
1026 savelij 935
FLAGS_KEY1      DB 0x10                         ; 1 |
936
MOUNT_SYM       DB 0xFF                         ; 1  㬮 ᪠
937
EXT_TYPE        DB 0xFF                         ; 1
938
OST_HWOST       DW 0xFFFF                       ; 2
939
KUDA_HWOST      DW 0xFFFF                       ; 2
940
SCROLL_MODE     DB 0xFF                         ; 1
941
NEXT4PAGE       DW 0xFFFF                       ; 2
942
OSTAT_SECT      DW 0xFFFF                       ; 2
943
NACH_SECT       DW 0xFFFF                       ; 2
944
START_DATA      DW 0xFFFF                       ; 2
1186 savelij 945
;AY_REGS1       DB 0x0E DUP 0xFF                ; D
946
;AY_REGS2       DB 0x0E DUP 0xFF                ; D
1026 savelij 947
TEKBUFTSC       DW 0xFFFF                       ; 2
948
TEK_TEXT        DW 0xFFFF                       ; 2
1186 savelij 949
TXT_TURBO_MODE  DB 5 DUP 0xFF                   ; 5
950
TXT_MEMORY_MODE DB 4 DUP 0xFF                   ; 3
961 savelij 951
;  १ HONEY COMANDER
1186 savelij 952
TXT_REZIDENT_MODE       DB 4 DUP 0xFF                   ; 4
953
TXT_KILLREZID   DB 4 DUP 0xFF                   ; 4
1026 savelij 954
BUFF_TIME       DB 0x16,0x00,0x48,0x17,CYAN<<3+BLUE+0xC0
955
TXT_TIME        DB "00:00:00",0x16,0x01,0x48
956
TXT_DATA        DB "00.00.00",0x17,0xFF,0
585 savelij 957
EBUFF_TIME
1120 savelij 958
TXT_FREQ        DZ "14.0"
959
                DZ "7.0 "
960
                DZ "3.5 "
1186 savelij 961
NAME_RAMDISK    DB 0x20 DUP 0
962
FILE_DEST       DB 0x20 DUP 0xFF                ; 20 ⥫ ⮣ 䠩
963
FB_EXT          DB 0x0B DUP 0xFF                ; B  8.3  ᪠ 
1026 savelij 964
SAVE_IY         DW 0xFFFF                       ; 2 ७ ࠭ ॣ஢  쭥襣 ᯮ짮
965
ADR_MASK_EXT    DW 0xFFFF                       ; 2  ७ 䠩  ᪠
966
ADR_SKLAD       DW 0xFFFF                       ; 2  ᪫஢ 
967
ADR_SKLAD_NAME  DW 0xFFFF                       ; 2
968
MAKS_ADR        DB 0xFF                         ; 1 訩  ᨬ쭮   ᪫஢
969
KOL_FOUNDED     DW 0xFFFF                       ; 2 ⢮  ⥫
1186 savelij 970
OUT_NAME_FILE   DB 0x17,0xFF,0x16
971
OUT_NAME_FILET  DB 0,0,0
972
BUF_FILEITEM    DB 0x20 DUP 0xFF                ; 20
973
EXTERN_PAL      DB 0x10 DUP 0xFF                ; 10
585 savelij 974
ENMI_SERVICE
1186 savelij 975
HDDTIMEOUT      EQU $;EXTERN_PAL+0x10           ; 1
573 savelij 976
 
1186 savelij 977
        DEPHASE