Subversion Repositories pentevo

Rev

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

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