Subversion Repositories pentevo

Rev

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

Rev Author Line No. Line
802 savelij 1
 
1065 savelij 2
; LAST UPDATE: 15.02.2023 savelij
802 savelij 3
 
1026 savelij 4
; ((out&0ffff)==37f7)&&((val&0ff)==1)
5
; ((out&0ffff)==77f7)&&((val&0ff)==1)
6
; ((out&0ffff)==0b7f7)&&((val&0ff)==1)
7
; ((out&0ffff)==0f7f7)&&((val&0ff)==1)
8
; ((M(5CF4)==2)&&(M(5CF5)==1B))
9
; (((M(5CF4)==2)&&(M(5CF5)==1B))&&(SP<4000))
10
; ((OUT&0FFFF)==1F)|((OUT&0FFFF)==3F)|((OUT&0FFFF)==7F)
11
 
802 savelij 12
                include ../../macros.a80
13
                include ../../global_vars.a80
14
                include ../../define.a80
15
                include ../../evodos_vars.a80
16
 
1026 savelij 17
STACK           EQU 0x0DFF
802 savelij 18
 
19
OLD_IF          EQU STACK-WORD*2
20
OLD_AF          EQU STACK-WORD
21
 
999 savelij 22
;  室  室  ࠡ稪
802 savelij 23
JP_EMU          MACRO ADDRESS
1026 savelij 24
                DUPL ADDRESS-$,0
802 savelij 25
                OUT (EXIT_PORT),A
26
                JP ADR_ADDRESS
27
                ENDM
28
 
999 savelij 29
;  ᮢ  ⠡
802 savelij 30
LABEL_GEN       MACRO ADDRESS
1026 savelij 31
_ADDRESS        EQU ($ - TABLE_VIRT) / 4
32
                DW ADDRESS,ADR_ADDRESS.WORK
802 savelij 33
                ENDM
34
 
999 savelij 35
; 室  ࠡ稪   
802 savelij 36
EMU_JUMP        MACRO ADDRESS
37
ADR_ADDRESS     EQU $
1026 savelij 38
                LD (OLD_AF + 1),A
802 savelij 39
                LD A,_ADDRESS
40
                JP WORKER
41
 
42
.WORK           EQU $
43
                ENDM
44
 
45
                ORG 0
1026 savelij 46
                DUPL 0x0038 - $,0
802 savelij 47
                EI
48
                RET
49
 
1026 savelij 50
                DUPL 0x006F - $,0
802 savelij 51
                JP (HL)
52
 
1026 savelij 53
        JP_EMU 0x02BE                           ; OUT      (0xFF), A
802 savelij 54
 
1026 savelij 55
                DUPL 0x0801 - $,0
56
;⠡ ᮢ 墠  뢠 ࠡ稪
999 savelij 57
TABLE_VIRT
1026 savelij 58
        LABEL_GEN 0x02BE                        ; OUT      (0xFF), A
59
        LABEL_GEN 0x1E3A                        ; OUT      (0x3F), A
60
        LABEL_GEN 0x1FDD                        ; IN    A, (0x1F)
61
        LABEL_GEN 0x1FF3                        ; OUT      (0xFF), A
62
        LABEL_GEN 0x2000                        ; OUT      (0x1F), A
63
        LABEL_GEN 0x2076                        ; IN    A, (0x1F)
64
        LABEL_GEN 0x2085                        ; OUT      (0x3F), A
65
        LABEL_GEN 0x208D                        ; OUT      (0x5F), A
66
        LABEL_GEN 0x2093                        ; OUT      (0x1F), A
67
        LABEL_GEN 0x2099                        ; IN    A, (0x1F)
68
        LABEL_GEN 0x20B1                        ; IN    A, (0xFF)
69
        LABEL_GEN 0x20B8                        ; OUT      (C),    D
70
        LABEL_GEN 0x2740                        ; IN    A, (0x1F)
71
        LABEL_GEN 0x2748                        ; OUT      (0x7F), A
72
        LABEL_GEN 0x2A53                        ; OUT      (C),    A
73
        LABEL_GEN 0x2A71                        ; OUT      (0xFF), A MAGIC
74
        LABEL_GEN 0x2A77                        ; IN    A, (0x1F)    MAGIC
75
        LABEL_GEN 0x2AD9                        ; OUT      (OxFF), A MAGIC
76
        LABEL_GEN 0x2B25                        ; IN    A, (0x5F)    MAGIC
77
        LABEL_GEN 0x2C07                        ; IN    A, (0x5F)    MAGIC
78
        LABEL_GEN 0x2CD8                        ; IN    A, (0x5F)    MAGIC
79
        LABEL_GEN 0x2D75                        ; OUT      (0x5F), A MAGIC
80
        LABEL_GEN 0x2D80                        ; OUT      (0x1F), A MAGIC
81
        LABEL_GEN 0x2D87                        ; IN    A, (0x1F)    MAGIC
82
        LABEL_GEN 0x2F0C                        ; OUT      (0xFF), A MAGIC
83
        LABEL_GEN 0x2F1D                        ; OUT      (0x5F), A MAGIC
84
        LABEL_GEN 0x2F28                        ; OUT      (0x1F), A MAGIC
85
        LABEL_GEN 0x2F2F                        ; IN    A, (0x1F)    MAGIC
86
        LABEL_GEN 0x2F3C                        ; OUT      (0xFF), A MAGIC
87
        LABEL_GEN 0x2F4D                        ; OUT      (0xFF), A MAGIC
88
        LABEL_GEN 0x2F50                        ; OUT      (0x7F), A MAGIC
89
        LABEL_GEN 0x2F57                        ; OUT      (0x1F), A MAGIC
90
        LABEL_GEN 0x2F59                        ; IN    A, (0xFF)
91
        LABEL_GEN 0x2FB1                        ; OUT      (0xFF), A
92
        LABEL_GEN 0x2FC3                        ; OUT      (0x1F), A
93
        LABEL_GEN 0x3C30                        ; IN    A, (0x1F)
94
        LABEL_GEN 0x3D4D                        ; OUT      (0xFF), A
95
        LABEL_GEN 0x3D9A                        ; OUT      (0x1F), A
96
        LABEL_GEN 0x3DA6                        ; IN    A, (0xFF)
97
        LABEL_GEN 0x3DB5                        ; IN    A, (0x1F)
98
        LABEL_GEN 0x3DBA                        ; IN    A, (0x1F)
99
        LABEL_GEN 0x3DD5                        ; OUT      (0xFF), A
100
        LABEL_GEN 0x3E30                        ; IN    A, (0x1F)
101
        LABEL_GEN 0x3E3A                        ; IN    A, (0x1F)
102
        LABEL_GEN 0x3E44                        ; OUT      (0x7F), A
103
        LABEL_GEN 0x3E4C                        ; OUT      (0x7F), A
104
        LABEL_GEN 0x3E50                        ; IN    A, (0x3F)
105
        LABEL_GEN 0x3E78                        ; IN    A, (0x3F)
106
        LABEL_GEN 0x3E7E                        ; OUT      (0x3F), A
107
        LABEL_GEN 0x3E87                        ; IN    A, (0x3F)
108
        LABEL_GEN 0x3E95                        ; OUT      (0x3F), A
109
        LABEL_GEN 0x3EB5                        ; IN    A, (0x1F)
110
        LABEL_GEN 0x3EBC                        ; IN    A, (0x3F)
111
        LABEL_GEN 0x3EC9                        ; OUT      (0x1F), A
112
        LABEL_GEN 0x3ECE                        ; IN    A, (0xFF)
113
        LABEL_GEN 0x3EDF                        ; OUT      (0x1F), A
114
        LABEL_GEN 0x3EF3                        ; IN    H, (C)
115
        LABEL_GEN 0x3EF5                        ; IN    A, (0xFF)
116
        LABEL_GEN 0x3EFE                        ; IN    A, (0x7F)
117
        LABEL_GEN 0x3F1B                        ; OUT      (0x5F), A
118
        LABEL_GEN 0x3F25                        ; OUT      (0x1F), A
119
        LABEL_GEN 0x3F33                        ; IN    A, (0x1F)
120
        LABEL_GEN 0x3F4D                        ; OUT      (0x1F), A
121
        LABEL_GEN 0x3F55                        ; IN    A, (0x3F)
122
        LABEL_GEN 0x3F5A                        ; Ix    A, (0x5F)
123
        LABEL_GEN 0x3F69                        ; IN    A, (0x3F)
124
        LABEL_GEN 0x3F72                        ; IN    A, (0x5F)
125
        LABEL_GEN 0x3FBC                        ; IN    A, (0xFF)
126
        LABEL_GEN 0x3FCA                        ; IN    A, (0xFF)
127
        LABEL_GEN 0x3FD1                        ; OUTI
128
        LABEL_GEN 0x3FD7                        ; IN    A, (0xFF)
129
        LABEL_GEN 0x3FE5                        ; IN    A, (0xFF)
130
        LABEL_GEN 0x3FEC                        ; INI
131
        LABEL_GEN 0x3FF0                        ; OUT      (C),    A
132
        LABEL_GEN 0x3FF3                        ; IN    A, (C)
802 savelij 133
 
999 savelij 134
; 뢠 墠
1026 savelij 135
        EMU_JUMP 0x02BE                         ; OUT (0xFF),A
802 savelij 136
                JP OUT_FF
137
 
1026 savelij 138
        EMU_JUMP 0x1E3A                         ; OUT (0x3F),A
802 savelij 139
                JP OUT_3F
140
 
1026 savelij 141
        EMU_JUMP 0x1FDD                         ; IN A,(0x1F)
802 savelij 142
                JP IN_1F
143
 
1026 savelij 144
        EMU_JUMP 0x1FF3                         ; OUT (0xFF),A
802 savelij 145
                JP OUT_FF
146
 
1026 savelij 147
        EMU_JUMP 0x2000                         ; OUT (0x1F),A
802 savelij 148
                JP OUT_1F
149
 
1026 savelij 150
        EMU_JUMP 0x2076                         ; IN A,(0x1F)
802 savelij 151
                JP IN_1F
152
 
1026 savelij 153
        EMU_JUMP 0x2085                         ; OUT (0x3F),A
802 savelij 154
                JP OUT_3F
155
 
1026 savelij 156
        EMU_JUMP 0x208D                         ; OUT (0x5F),A
802 savelij 157
                JP OUT_5F
158
 
1026 savelij 159
        EMU_JUMP 0x2093                         ; OUT (0x1F),A
802 savelij 160
                JP OUT_1F
161
 
1026 savelij 162
        EMU_JUMP 0x2099                         ; IN A,(0x1F)
802 savelij 163
                JP IN_1F
164
 
1026 savelij 165
        EMU_JUMP 0x20B1                         ; IN A,(0xFF)
802 savelij 166
                JP IN_FF
167
 
1026 savelij 168
        EMU_JUMP 0x20B8                         ; OUT (C),D
802 savelij 169
                JP OUT_C_D
170
 
1026 savelij 171
        EMU_JUMP 0x2740                         ; IN A,(0x1F)
802 savelij 172
                JP IN_1F
173
 
1026 savelij 174
        EMU_JUMP 0x2748                         ; OUT (0x7F),A
802 savelij 175
                JP OUT_7F
176
 
1026 savelij 177
        EMU_JUMP 0x2A53                         ; OUT (C),A
802 savelij 178
                JP OUT_C_A
179
 
1026 savelij 180
        EMU_JUMP 0x2A71                         ; OUT (0xFF),A
802 savelij 181
                JP OUT_FF
182
 
1026 savelij 183
        EMU_JUMP 0x2A77                         ; IN A,(0x1F)
802 savelij 184
                JP IN_1F
185
 
1026 savelij 186
        EMU_JUMP 0x2AD9                         ; OUT (0xFF),A
802 savelij 187
                JP OUT_FF
188
 
1026 savelij 189
        EMU_JUMP 0x2B25                         ; IN A,(0x5F)
802 savelij 190
                JP IN_5F
191
 
1026 savelij 192
                DUPL 0x09FF - $,0
193
                DW 0xFFFF
194
 
195
        EMU_JUMP 0x2C07                         ;IN A,(0x5F)
802 savelij 196
                JP IN_5F
197
 
1026 savelij 198
        EMU_JUMP 0x2CD8                         ; IN A,(0x5F)
802 savelij 199
                JP IN_5F
200
 
1026 savelij 201
        EMU_JUMP 0x2D75                         ; OUT (0x5F),A
802 savelij 202
                JP OUT_5F
203
 
1026 savelij 204
        EMU_JUMP 0x2D80                         ; OUT (0x1F),A
802 savelij 205
                JP OUT_1F
206
 
1026 savelij 207
        EMU_JUMP 0x2D87                         ; IN A,(0x1F)
802 savelij 208
                JP IN_1F
209
 
1026 savelij 210
        EMU_JUMP 0x2F0C                         ; OUT (0xFF),A
802 savelij 211
                JP OUT_FF
212
 
1026 savelij 213
        EMU_JUMP 0x2F1D                         ; OUT (0x5F),A
802 savelij 214
                JP OUT_5F
215
 
1026 savelij 216
        EMU_JUMP 0x2F28                         ; OUT (0x1F),A
802 savelij 217
                JP OUT_1F
218
 
1026 savelij 219
        EMU_JUMP 0x2F2F                         ; IN A,(0x1F)
802 savelij 220
                JP IN_1F
221
 
1026 savelij 222
        EMU_JUMP 0x2F3C                         ; OUT (0xFF),A
802 savelij 223
                JP OUT_FF
224
 
1026 savelij 225
        EMU_JUMP 0x2F4D                         ; OUT (0xFF),A
802 savelij 226
                JP OUT_FF
227
 
1026 savelij 228
        EMU_JUMP 0x2F50                         ; OUT (0x7F),A
802 savelij 229
                JP OUT_7F
230
 
1026 savelij 231
        EMU_JUMP 0x2F57                         ; OUT (0x1F),A
802 savelij 232
                JP OUT_1F
233
 
1026 savelij 234
        EMU_JUMP 0x2F59                         ; IN A,(0xFF)
802 savelij 235
                CALL IN_FF
1026 savelij 236
                LD HL,EXIT_0x2F59
802 savelij 237
                LD (ADR_EXIT),HL
238
                JP UPDATE_AF
239
 
1026 savelij 240
        EMU_JUMP 0x2FB1                         ; OUT (0xFF),A
802 savelij 241
                JP OUT_FF
242
 
1026 savelij 243
        EMU_JUMP 0x2FC3                         ; OUT (0x1F),A
802 savelij 244
                JP OUT_1F
245
 
1026 savelij 246
        EMU_JUMP 0x3C30                         ; IN A,(0x1F)
802 savelij 247
                JP IN_1F
248
 
1026 savelij 249
        EMU_JUMP 0x3D4D                         ; OUT (0xFF),A
802 savelij 250
                JP OUT_FF
251
 
1026 savelij 252
        EMU_JUMP 0x3D9A                         ; OUT (0x1F),A
802 savelij 253
                JP OUT_1F
254
 
1026 savelij 255
        EMU_JUMP 0x3DA6                         ; IN A,(0xFF)
802 savelij 256
                JP IN_FF
257
 
1026 savelij 258
        EMU_JUMP 0x3DB5                         ; IN A,(0x1F)
802 savelij 259
                JP IN_1F
260
 
1026 savelij 261
        EMU_JUMP 0x3DBA                         ; IN A,(0x1F)
802 savelij 262
                JP IN_1F
263
 
1026 savelij 264
        EMU_JUMP 0x3DD5                         ; OUT (0xFF),A
802 savelij 265
                JP OUT_FF
266
 
1026 savelij 267
        EMU_JUMP 0x3E30                         ; IN A,(0x1F)
802 savelij 268
                JP IN_1F
269
 
1026 savelij 270
        EMU_JUMP 0x3E3A                         ; IN A,(0x1F)
802 savelij 271
                JP IN_1F
272
 
1026 savelij 273
        EMU_JUMP 0x3E44                         ; OUT (0x7F),A
802 savelij 274
                JP OUT_7F
275
 
1026 savelij 276
        EMU_JUMP 0x3E4C                         ; OUT (0x7F),A
802 savelij 277
                JP OUT_7F
278
 
1026 savelij 279
        EMU_JUMP 0x3E50                         ; IN A,(0x3F)
802 savelij 280
                JP IN_3F
281
 
1026 savelij 282
        EMU_JUMP 0x3E78                         ; IN A,(0x3F)
802 savelij 283
                JP IN_3F
284
 
1026 savelij 285
        EMU_JUMP 0x3E7E                         ; OUT (0x3F),A
802 savelij 286
                JP OUT_3F
287
 
1026 savelij 288
        EMU_JUMP 0x3E87                         ; IN A,(0x3F)
802 savelij 289
                JP IN_3F
290
 
1026 savelij 291
        EMU_JUMP 0x3E95                         ; OUT (0x3F),A
802 savelij 292
                JP OUT_3F
293
 
1026 savelij 294
        EMU_JUMP 0x3EB5                         ; IN A,(0x1F)
802 savelij 295
                JP IN_1F
296
 
1026 savelij 297
        EMU_JUMP 0x3EBC                         ; IN A,(0x3F)
802 savelij 298
                JP IN_3F
299
 
1026 savelij 300
        EMU_JUMP 0x3EC9                         ; OUT (0x1F),A
802 savelij 301
                JP OUT_1F
302
 
1026 savelij 303
        EMU_JUMP 0x3ECE                         ; IN A,(0xFF)
802 savelij 304
                JP IN_FF
305
 
1026 savelij 306
        EMU_JUMP 0x3EDF                         ; OUT (0x1F),A
802 savelij 307
                JP OUT_1F
308
 
1026 savelij 309
        EMU_JUMP 0x3EF3                         ; IN H,(C)
802 savelij 310
                JP IN_H_C
311
 
1026 savelij 312
        EMU_JUMP 0x3EF5                         ; IN A,(0xFF)
802 savelij 313
                CALL IN_FF
1026 savelij 314
                LD HL,EXIT_0x3EF5
802 savelij 315
                LD (ADR_EXIT),HL
1026 savelij 316
UPDATE_AF       LD A,(OLD_AF + 1)
317
                AND 0xC0
802 savelij 318
                PUSH AF
319
                POP HL
320
                LD (OLD_AF),HL
321
                RET
322
 
1026 savelij 323
        EMU_JUMP 0x3EFE                         ; IN A,(0x7F)
324
                CALL OUT_1F.INFF_BIT6
802 savelij 325
                JP IN_7F
326
 
1026 savelij 327
        EMU_JUMP 0x3F1B                         ; OUT (0x5F),A
802 savelij 328
                JP OUT_5F
329
 
1026 savelij 330
        EMU_JUMP 0x3F25                         ; OUT (0x1F),A
802 savelij 331
                JP OUT_1F
332
 
1026 savelij 333
        EMU_JUMP 0x3F33                         ; IN A,(0x1F)
802 savelij 334
                JP IN_1F
335
 
1026 savelij 336
        EMU_JUMP 0x3F4D                         ; OUT (0x1F),A
802 savelij 337
                JP OUT_1F
338
 
1026 savelij 339
        EMU_JUMP 0x3F55                         ; IN A,(0x3F)
802 savelij 340
                JP IN_3F
341
 
1026 savelij 342
        EMU_JUMP 0x3F5A                         ; IN A,(0x5F)
802 savelij 343
                JP IN_5F
344
 
1026 savelij 345
        EMU_JUMP 0x3F69                         ; IN A,(0x3F)
802 savelij 346
                JP IN_3F
347
 
1026 savelij 348
        EMU_JUMP 0x3F72                         ; IN A,(0x5F)
802 savelij 349
                JP IN_5F
350
 
1026 savelij 351
        EMU_JUMP 0x3FBC                         ; IN A,(0xFF)   ;  ᥪ
802 savelij 352
                JP WRITE_SECTOR
353
 
1026 savelij 354
        EMU_JUMP 0x3FCA                         ; IN A,(0xFF)   ;  ᥪ
802 savelij 355
                JP WRITE_SECTOR
356
 
1026 savelij 357
        EMU_JUMP 0x3FD1                         ; OUTI          ;  ᥪ
802 savelij 358
                JP WRITE_SECTOR
359
 
1027 savelij 360
        EMU_JUMP 0x3FD7                         ; IN A,(0xFF)   ; ⥭ ᥪ
361
                JP READ_SECTOR
1028 savelij 362
;       EMU_JUMP 0x3FD7                         ;  ⮢ ⥭
363
;               JP WAIT_READ
802 savelij 364
 
1026 savelij 365
        EMU_JUMP 0x3FE5                         ; IN A,(0xFF)   ; ⥭ ᥪ
802 savelij 366
                JP READ_SECTOR
367
 
1026 savelij 368
        EMU_JUMP 0x3FEC                         ; INI           ; ⥭ ᥪ
802 savelij 369
                JP IN_INI
370
 
1026 savelij 371
        EMU_JUMP 0x3FF0                         ; OUT (C),A
802 savelij 372
                LD BC,(OLD_BC)
373
                LD A,(OLD_AF+1)
888 savelij 374
                LD D,A
375
                JP WR_C_D
802 savelij 376
 
1026 savelij 377
        EMU_JUMP 0x3FF3                         ; IN A,(C)
802 savelij 378
                LD BC,(OLD_BC)
379
                IN A,(C)
380
                PUSH AF
381
                POP HL
382
                LD (OLD_AF),HL
383
                RET
384
 
999 savelij 385
; ⥪  ࠡ稪
1026 savelij 386
                DUPL STACK - $,0
802 savelij 387
                DW INT_BREAK
388
 
1026 savelij 389
                DUPL STACK + 0x41 - $,0
802 savelij 390
INT_BREAK       PUSH AF
391
                PUSH HL
392
                PUSH DE
393
                LD A,(FLAG_RW_BREAK)
394
                AND A
395
                JR NZ,IB1
396
                LD HL,(OLD_IF)
1026 savelij 397
                LD L,0xFF
802 savelij 398
                LD E,(HL)
399
                INC HL
400
                LD D,(HL)
401
                LD HL,(OLD_SP)
402
                DEC HL
403
                LD (HL),D
404
                DEC HL
405
                LD (HL),E
406
                LD (OLD_SP),HL
407
                POP DE
408
                POP HL
409
                POP AF
410
                EI
411
                RET
412
 
413
IB1             PUSH BC
414
                LD (INT_SP),SP
415
                CALL READ_TMP_CPU12
416
                CALL WRITE_CPU12
417
                LD A,(OLD_PORT_BF)
418
                OUT (PEVO_CONF),A
1026 savelij 419
                LD A,(OLD_IF + 1)
802 savelij 420
                LD I,A
421
                LD HL,(OLD_AF)
422
                PUSH HL
423
                POP AF
424
                LD HL,(OLD_SP)
1027 savelij 425
                LD DE,0x2A71                    ;    ࠡ稪 뢠 譥 ண १ OUT (0xFF),A
802 savelij 426
                DEC HL
427
                LD (HL),D
428
                DEC HL
429
                LD (HL),E
430
                DEC HL
431
                EX DE,HL
1026 savelij 432
                LD HL,OLD_IF + 1
802 savelij 433
                LD H,(HL)
1026 savelij 434
                LD L,0xFF
802 savelij 435
                LD C,(HL)
436
                INC HL
437
                LD B,(HL)
438
                EX DE,HL
439
                LD (HL),B
440
                DEC HL
441
                LD (HL),C
442
                LD SP,HL
443
                LD HL,(OLD_HL)
444
                LD DE,(OLD_DE)
445
                LD BC,(OLD_BC)
1027 savelij 446
                LD A,(WR_FF)                    ; ⨪   १  OUT (0xFF),A
802 savelij 447
                EI
1026 savelij 448
                JP 0x2A53
802 savelij 449
 
450
INT_RET         LD SP,0
451
INT_SP          EQU $-2
452
                IN A,(PEVO_CONF)
888 savelij 453
                LD (OLD_PORT_BF),A
802 savelij 454
                OR 1
455
                OUT (PEVO_CONF),A
456
                LD A,HIGH (STACK)
457
                LD I,A
458
                CALL WRITE_TMP_CPU12
459
                POP BC
460
                POP DE
461
                POP HL
462
                POP AF
463
                RET
464
 
999 savelij 465
; 室  ࠡ稪
802 savelij 466
EXIT_PAGE_FE    LD A,(OLD_PORT_BF)
999 savelij 467
                OUT (PEVO_CONF),A               ; ⠭  0xBF
1026 savelij 468
                LD A,(OLD_IF + 1)
802 savelij 469
                LD I,A
470
                LD HL,(OLD_AF)
471
                PUSH HL
472
                POP AF
999 savelij 473
                LD HL,0                         ; ⠭ HL
802 savelij 474
OLD_HL          EQU $-2
999 savelij 475
                LD DE,0                         ; ⠭ DE
802 savelij 476
OLD_DE          EQU $-2
999 savelij 477
                LD BC,0                         ; ⠭ BC
802 savelij 478
OLD_BC          EQU $-2
999 savelij 479
                LD SP,0                         ; ⠭ SP
802 savelij 480
OLD_SP          EQU $-2
481
                JP 0
482
ADR_EXIT        EQU $-2        
483
 
1026 savelij 484
                DUPL STACK + 0x101 - $,0
999 savelij 485
; 室  ࠡ稪
802 savelij 486
WORKER          LD (NUM_ADR),A
487
                LD (OLD_SP),SP
488
                LD SP,STACK-WORD
952 savelij 489
                PUSH AF
490
                EX (SP),HL
491
                LD A,L
492
                LD (OLD_AF),A
493
                POP HL
802 savelij 494
                LD A,I
495
                JP PE,WORKER1
496
                LD A,I
999 savelij 497
WORKER1         PUSH AF                         ; IF
802 savelij 498
                IN A,(PEVO_CONF)
999 savelij 499
                LD (OLD_PORT_BF),A              ;  BF
802 savelij 500
                OR 1
501
                OUT (PEVO_CONF),A
502
                LD A,HIGH (STACK)
503
                LD I,A
504
                LD (OLD_HL),HL
505
                LD (OLD_DE),DE
506
                LD (OLD_BC),BC
507
                LD HL,0
508
NUM_ADR         EQU $-2
509
                ADD HL,HL
510
                ADD HL,HL
511
                LD DE,TABLE_VIRT
512
                ADD HL,DE
513
                LD E,(HL)
514
                INC HL
999 savelij 515
                LD D,(HL)                       ; DE-   ࠡ稪
802 savelij 516
                INC HL
517
                LD (ADR_EXIT),DE
518
                LD E,(HL)
519
                INC HL
999 savelij 520
                LD D,(HL)                       ; DE- ࠡ稪
802 savelij 521
                PUSH DE
999 savelij 522
                LD HL,EXIT_PAGE_FE              ;  室  ࠡ稪
802 savelij 523
                EX (SP),HL
524
                JP (HL)
525
 
999 savelij 526
; ⥭/ ਬ஢ ᪠
1026 savelij 527
MOUNT_RW        DI
802 savelij 528
                LD A,(RDWR_MODE)
1026 savelij 529
                AND 0x80
802 savelij 530
                LD L,A
531
                LD A,(WR_FF)
532
                AND 3
533
                OR L
534
                BIT 7,A
535
                PUSH AF
1026 savelij 536
                LD HL,0x2A77
802 savelij 537
                PUSH HL
538
                LD HL,MNT_RW
539
                PUSH HL
1030 savelij 540
                JR Z,.L1
541
; 㥬 ᥪ  㤥 뢠  ᬮ஢ ࠧ
802 savelij 542
                LD HL,(OLD_HL)
1026 savelij 543
                LD DE,MNT_SECTOR
802 savelij 544
                CALL COPY_BLOCK
545
                LD (OLD_HL),HL
1030 savelij 546
; ४砥   ࠡ  ⮬
547
.L1             PUSH AF
548
                LD BC,WIN_A1
549
                LD A,0x40
550
                OUT (C),A
551
                LD B,HIGH (WIN_P1)
552
                LD A,RAM_EVODOS
553
                OUT (C),A
554
                POP AF
555
; ⠢塞 ⥪
556
                LD HL,0x4000
557
                ADD HL,SP
558
                LD SP,HL
1026 savelij 559
                JP 0x2A53
802 savelij 560
 
1026 savelij 561
        PHASE $ + 0x4000
562
 
802 savelij 563
MNT_RW          LD L,A
1026 savelij 564
                LD A,(PORT_3F + 0x4000)         ; 﫨  ४
999 savelij 565
                ADD A,A                         ; ஭ 2
802 savelij 566
                LD D,A
1026 savelij 567
                LD A,(WR_FF + 0x4000)
568
                AND 0x10                        ; ஢ઠ  ஭ ᪠
802 savelij 569
                JR NZ,WRRDSECM1
999 savelij 570
                INC D                           ;  ஭ 1
1026 savelij 571
WRRDSECM1       LD A,(PORT_5F + 0x4000)         ; 﫨  ᥪ
999 savelij 572
                LD E,A                          ; D-४, E-ᥪ
802 savelij 573
                LD A,L
1026 savelij 574
                LD HL,MNT_SECTOR + 0x4000
999 savelij 575
        RST8 _MOUNTER,_RDWR_MOUNT
1026 savelij 576
                JP 0x3D2F
802 savelij 577
 
1026 savelij 578
        DEPHASE
579
 
580
RET_MNT_RW
581
                LD HL,-0x4000
802 savelij 582
                ADD HL,SP
583
                LD SP,HL
584
                CALL WRITE_CPU12
1026 savelij 585
                LD HL,(OLD_IF)
586
                PUSH HL
802 savelij 587
                POP AF
1026 savelij 588
                JP PO,.DI_MODE                  ; 뢠 ࠧ襭?
589
                CP 0x3F
590
                JR Z,.DI_MODE
591
                EI
592
.DI_MODE        POP AF
802 savelij 593
                RET NZ
1026 savelij 594
                LD HL,MNT_SECTOR
802 savelij 595
                LD DE,(OLD_HL)
596
                CALL COPY_BLOCK
597
                LD (OLD_HL),DE
598
                RET
599
 
999 savelij 600
;   ᮧ 9 ᥪ  ᪠
1026 savelij 601
DSKINFO         DB 0                            ; + 0xE1 -  ࢮ ᢮ ᥪ
602
                DB 1                            ; + 0xE2 -  ࢮ ᢮ ४
603
                DB 0x16                         ; + 0xE3 - ⨯ ᪥
604
                DB 0                            ; + 0xE4 - ⢮ 䠩  ᪥
605
SECFREE         DW 2544                         ; + 0xE5 - ⢮ ᢮ ᥪ஢
606
                DB 0x10                         ; + 0xE7 - 䨪樮  TRDOS
607
                DW 0                            ; + 0xE8 - 2  0
608
                DUPL 9," "                      ; + 0xEA - 9  0x20
609
                DB 0                            ; + 0xF3 - 1  0
610
                DB 0                            ; + 0xF4 - ⢮ 㤠 䠩
611
                DB "RAMDISKO"                   ; + 0xF5 -  ᪥
802 savelij 612
DSK_END
613
 
1026 savelij 614
                DUPL LOW (-$),0
615
MNT_SECTOR
802 savelij 616
 
999 savelij 617
;  墠
1026 savelij 618
        JP_EMU 0x1E3A                           ; OUT      (0x3F), A
619
        JP_EMU 0x1FDD                           ; IN    A, (0x1F)
620
        JP_EMU 0x1FF3                           ; OUT      (0xFF), A
621
        JP_EMU 0x2000                           ; OUT      (0x1F), A
622
        JP_EMU 0x2076                           ; IN    A, (0x1F)
623
        JP_EMU 0x2085                           ; OUT      (0x3F), A
624
        JP_EMU 0x208D                           ; OUT      (0x5F), A
625
        JP_EMU 0x2093                           ; OUT      (0x1F), A
626
        JP_EMU 0x2099                           ; IN    A, (0x1F)
627
        JP_EMU 0x20B1                           ; IN    A, (0xFF)
628
        JP_EMU 0x20B8                           ; OUT      (C),    D
629
        JP_EMU 0x2740                           ; IN    A, (0x1F)
630
        JP_EMU 0x2748                           ; OUT      (0x7F), A
631
        JP_EMU 0x2A53                           ; OUT      (C),    A
802 savelij 632
 
999 savelij 633
; ࢠ   ࠡ稪 MAGIC     FE
1026 savelij 634
;       JP_EMU 0x2A71                           ; OUT      (0xFF), A
635
                DUPL 0x2A71 - $,0
636
                OUT (EXIT_PORT),A
999 savelij 637
                JP INT_RET                      ; 饭  ࠡ稪 INT
802 savelij 638
 
1026 savelij 639
;       JP_EMU 0x2A77                           ; IN    A, (0x1F)
640
                DUPL 0x2A77 - $,0
641
                OUT (EXIT_PORT),A
999 savelij 642
                JP RET_MNT_RW                   ; 饭 ᫥ 맮 RST 8
802 savelij 643
 
1026 savelij 644
        JP_EMU 0x2AD9                           ; OUT      (0xFF), A
645
        JP_EMU 0x2B25                           ; IN    A, (0x5F)
646
        JP_EMU 0x2C07                           ; IN    A, (0x5F)
647
        JP_EMU 0x2CD8                           ; IN    A, (0x5F)
648
        JP_EMU 0x2D75                           ; OUT      (0x5F), A
649
        JP_EMU 0x2D80                           ; OUT      (0x1F), A
650
        JP_EMU 0x2D87                           ; IN    A, (0x1F)
651
        JP_EMU 0x2F0C                           ; OUT      (0xFF), A
652
        JP_EMU 0x2F1D                           ; OUT      (0x5F), A
802 savelij 653
 
1026 savelij 654
                DUPL 0x2F24 - $,0               ;   0x2F4D
655
                JP ADR_0x2F4D
802 savelij 656
 
1026 savelij 657
        JP_EMU 0x2F28                           ; OUT      (0x1F), A
658
        JP_EMU 0x2F2F                           ; IN    A, (0x1F)
659
        JP_EMU 0x2F3C                           ; OUT      (0xFF), A
802 savelij 660
 
1026 savelij 661
                DUPL 0x2F4D - $,0               ; OUT      (0xFF), A
802 savelij 662
                OUT (EXIT_PORT),A
1026 savelij 663
                DB 0x18                         ; JR 0x2F24
802 savelij 664
 
1026 savelij 665
        JP_EMU 0x2F50                           ; OUT      (0x7F), A
802 savelij 666
 
1026 savelij 667
                DUPL 0x2F57 - $,0               ; OUT      (0x1F), A
802 savelij 668
                OUT (EXIT_PORT),A
1026 savelij 669
                JR JUMP_0x2F57
888 savelij 670
 
1026 savelij 671
                JR JUMP_0x2F59                  ; IN    A, (0xFF)
888 savelij 672
 
1026 savelij 673
EXIT_0x2F59     OUT (EXIT_PORT),A
674
JUMP_0x2F59     JP ADR_0x2F59
888 savelij 675
 
1026 savelij 676
JUMP_0x2F57     JP ADR_0x2F57
802 savelij 677
 
1026 savelij 678
        JP_EMU 0x2FB1                           ; OUT      (0xFF), A
679
        JP_EMU 0x2FC3                           ; OUT      (0x1F), A
802 savelij 680
 
1026 savelij 681
                DUPL 0x32A2 - $,0
999 savelij 682
; ࠡ稪 ⥭/ ⮢
1026 savelij 683
;  "A"   0x1F
684
OUT_1F          LD A,(OLD_AF + 1)
802 savelij 685
                LD (WR_1F),A
1026 savelij 686
 
687
                AND %11110000
688
                RRCA
689
                RRCA
690
                RRCA
691
                ADD A,LOW (.TABL_CMD)
692
                LD L,A
693
                ADC A,HIGH (.TABL_CMD)
694
                SUB L
695
                LD H,A
696
                LD A,(HL)
697
                INC HL
698
                LD H,(HL)
699
                LD L,A
700
                JP (HL)
701
 
702
.TABL_CMD       DW .CMD_00
703
                DW .CMD_10
704
                DW .CMD_20
705
                DW .CMD_30
706
                DW .CMD_40
707
                DW .CMD_50
708
                DW .CMD_60
709
                DW .CMD_70
710
                DW .CMD_80
711
                DW .CMD_90
712
                DW .CMD_A0
713
                DW .CMD_B0
714
                DW .CMD_C0
715
                DW .CMD_D0
716
                DW .CMD_E0
717
                DW .CMD_F0
718
 
999 savelij 719
; 00-0F  ⠭
1026 savelij 720
.CMD_00         XOR A
802 savelij 721
                LD (PORT_3F),A
1026 savelij 722
                JR .INFF_BIT6
802 savelij 723
 
999 savelij 724
; 10-1F  ᪠
1026 savelij 725
.CMD_10         LD A,(PORT_7F)
802 savelij 726
                LD (PORT_3F),A
727
                CALL DISK_NONE
1026 savelij 728
                LD A,0x80
729
                JR C,.INFF_BIT6_1
730
.INFF_BIT6      XOR A
731
.INFF_BIT6_1    LD (RD_1F),A
732
                LD A,0xBF
802 savelij 733
                LD (RD_FF),A
734
                RET
735
 
999 savelij 736
; 20-3F  蠣  ।饬 ࠢ
1026 savelij 737
.CMD_20
738
.CMD_30         LD A,(PORT_3F)
739
.NAPRAVL        INC A
802 savelij 740
                LD (PORT_3F),A
1026 savelij 741
                JR .INFF_BIT6
802 savelij 742
 
999 savelij 743
; 40-5F  蠣 ।
1026 savelij 744
.CMD_40
745
.CMD_50         LD A,(PORT_3F)
802 savelij 746
                INC A
747
                LD (PORT_3F),A
1026 savelij 748
                LD A,0x3C                       ; INC A
749
                LD (.NAPRAVL),A
750
                JR .INFF_BIT6
802 savelij 751
 
999 savelij 752
; 60-7F  蠣 
1026 savelij 753
.CMD_60
754
.CMD_70         LD A,(PORT_3F)
802 savelij 755
                DEC A
756
                LD (PORT_3F),A
1026 savelij 757
                LD A,0x3D                       ; DEC A
758
                LD (.NAPRAVL),A
802 savelij 759
 
999 savelij 760
; 80-9F  ⥭ ᥪ
1026 savelij 761
.CMD_80
1027 savelij 762
.CMD_90
802 savelij 763
 
999 savelij 764
; A0-BF   ᥪ
1026 savelij 765
.CMD_A0
1027 savelij 766
.CMD_B0
802 savelij 767
 
999 savelij 768
; C0-CF ⥭ 
1026 savelij 769
.CMD_C0         JR .INFF_BIT6
802 savelij 770
 
999 savelij 771
; D0-DF ਭ㤨⥫쭮 뢠
1026 savelij 772
.CMD_D0         LD A,0xBF
802 savelij 773
                LD (RD_FF),A
774
                RET
775
 
999 savelij 776
; E0-EF ⥭ ஦
1026 savelij 777
.CMD_E0
778
.CMD_F0         JR .INFF_BIT6
802 savelij 779
 
1026 savelij 780
;  "A"   0x3F
781
OUT_3F          LD A,(OLD_AF + 1)
802 savelij 782
                LD (PORT_3F),A
783
                RET
784
 
1026 savelij 785
;  "A"   0x5F
786
OUT_5F          LD A,(OLD_AF + 1)
802 savelij 787
                LD (PORT_5F),A
788
                RET
789
 
1026 savelij 790
;  "A"   0x7F
791
OUT_7F          LD A,(OLD_AF + 1)
802 savelij 792
                LD (PORT_7F),A
793
                RET
794
 
1026 savelij 795
;  "A"   0xFF
796
OUT_FF          LD A,(OLD_AF + 1)
802 savelij 797
                LD (WR_FF),A
888 savelij 798
                LD D,A
1026 savelij 799
                LD BC,0x00FF
888 savelij 800
                JR WR_C_D
802 savelij 801
 
999 savelij 802
;  "A"   (C)
1026 savelij 803
OUT_C_A         LD A,(OLD_AF + 1)
802 savelij 804
WRCA1           LD D,A
999 savelij 805
                LD BC,(OLD_BC)                  ; ᫨   TR-DOS
802 savelij 806
                LD A,C
999 savelij 807
; ।           
1026 savelij 808
                CP 0x1F
802 savelij 809
                JP Z,OUT_1F
1026 savelij 810
                CP 0x3F
802 savelij 811
                JR Z,OUT_3F
1026 savelij 812
                CP 0x5F
802 savelij 813
                JR Z,OUT_5F
1026 savelij 814
                CP 0x7F
802 savelij 815
                JR Z,OUT_7F
1026 savelij 816
                CP 0xFF
802 savelij 817
                JR Z,OUT_FF
818
                CP LOW (WIN_A0)
819
                JR Z,WRCA3
888 savelij 820
WR_C_D          PUSH BC
821
                LD BC,FDD_EMU_PORT
822
                IN E,(C)
823
                XOR A
824
                OUT (C),A
825
                POP BC
826
                OUT (C),D
827
                LD BC,FDD_EMU_PORT
828
                OUT (C),E
802 savelij 829
                RET
830
 
999 savelij 831
;    ATM/PENTEVO
802 savelij 832
WRCA3           LD A,B
833
                LD HL,BB_CPU1
834
                CP HIGH (WIN_A1)
835
                JR Z,WRCA2
836
                CP HIGH (WIN_P2)
837
                JR Z,WRCA2
838
                LD HL,BB_CPU2
839
                CP HIGH (WIN_A2)
840
                JR Z,WRCA2
841
                CP HIGH (WIN_P2)
888 savelij 842
                JR NZ,WR_C_D
802 savelij 843
WRCA2           LD E,B
844
                PUSH DE
845
                PUSH HL
846
                CALL READ_CPU12
847
                POP HL
848
                POP DE
849
                LD (HL),D
850
                INC HL
851
                LD (HL),E
852
                JP WRITE_CPU12
853
 
999 savelij 854
;  "D"   (C)
1026 savelij 855
OUT_C_D         LD A,(OLD_DE + 1)
802 savelij 856
                JR WRCA1
857
 
999 savelij 858
; । ,  OUTI
802 savelij 859
OUT_OUTI        LD HL,(BUFF_SECT)
860
                EXX
861
                LD A,(HL)
862
                INC HL
863
                EXX
864
                LD (HL),A
865
                INC HL
866
                LD (BUFF_SECT),HL
867
                RET
868
 
1026 savelij 869
; ⥭  0x1F
802 savelij 870
IN_1F           LD A,(WR_1F)
1026 savelij 871
                AND %11110000
872
                CP 0x10
1065 savelij 873
                JR C,.L1                        ; 00-0F  ⠭
1026 savelij 874
                CP 0x20
1065 savelij 875
                JR C,.L3                        ; 10-1F  ᪠
1026 savelij 876
                CP 0x80
1065 savelij 877
                JR C,.L5                        ; 20-7F  蠣 
878
                CP 0xC0
879
                JR C,.L8                        ; 80-BF  ⥭/
1026 savelij 880
                CP 0xD0
1065 savelij 881
                JR Z,.L7                        ; D0-DF  ਭ㤨⥫쭮 뢠
802 savelij 882
                XOR A
1026 savelij 883
                JR .L2
802 savelij 884
 
1065 savelij 885
; ஢ઠ 室  80 ஦
886
.L8             LD A,(PORT_3F)
887
                CP 80
888
                LD A,0
889
                JR C,.L2
890
                LD A,%00010000                  ;  室  80 ஦ 뤠 訡 "ᨢ  "
891
                JR .L2
892
 
1027 savelij 893
.L7             LD A,0x80
894
                JR .L2
1026 savelij 895
 
896
.L5             LD A,(PORT_3F)
897
                AND A
898
                JR NZ,.L1
899
                LD A,%00100100
900
                JR .L6
901
 
902
.L3             LD A,(.INDEX)
802 savelij 903
                XOR %00000100
1026 savelij 904
                JR .L4
802 savelij 905
 
1026 savelij 906
.L1             LD A,%00100100
907
.INDEX          EQU $-1
908
.L4             XOR %00000010
909
.L6             LD (.INDEX),A
910
.L2             LD (RD_1F),A
911
                LD (OLD_AF + 1),A
802 savelij 912
                RET
913
 
1026 savelij 914
; ⥭  0x3F
802 savelij 915
IN_3F           LD A,(PORT_3F)
1026 savelij 916
                LD (OLD_AF + 1),A
802 savelij 917
                RET
918
 
1026 savelij 919
; ⥭  0x5F
802 savelij 920
IN_5F           LD A,(PORT_5F)
1026 savelij 921
                LD (OLD_AF + 1),A
802 savelij 922
                RET
923
 
1026 savelij 924
; ⥭  0x7F
802 savelij 925
IN_7F           LD A,(PORT_7F)
1026 savelij 926
                LD (OLD_AF + 1),A
802 savelij 927
                RET
928
 
1026 savelij 929
; ⥭  0xFF
802 savelij 930
IN_FF           LD A,(RD_FF)
1026 savelij 931
                LD (OLD_AF + 1),A
802 savelij 932
                RET
933
 
999 savelij 934
; ⥭  "H"  ()
802 savelij 935
IN_H_C          LD A,(OLD_BC)
999 savelij 936
; ।    ⥭
1026 savelij 937
                CP 0x1F
1027 savelij 938
                JR NZ,.L2
802 savelij 939
                LD A,(RD_1F)
1026 savelij 940
                LD (OLD_HL + 1),A
802 savelij 941
                RET
942
 
1027 savelij 943
.L2             CP 0x3F
944
                JR NZ,.L3
802 savelij 945
                LD A,(PORT_3F)
1026 savelij 946
                LD (OLD_HL + 1),A
802 savelij 947
                RET
1027 savelij 948
 
949
.L3             CP 0x5F
950
                JR NZ,.L4
802 savelij 951
                LD A,(PORT_5F)
1026 savelij 952
                LD (OLD_HL + 1),A
802 savelij 953
                RET
1027 savelij 954
 
955
.L4             CP 0x7F
956
                JR NZ,.L5
802 savelij 957
                LD A,(PORT_7F)
958
                LD (OLD_HL+1),A
959
                RET
1027 savelij 960
 
961
.L5             CP 0xFF
962
                JR NZ,.L6
802 savelij 963
                LD A,(RD_FF)
1026 savelij 964
                LD (OLD_HL + 1),A
802 savelij 965
                RET
966
 
1027 savelij 967
.L6             LD BC,(OLD_BC)
802 savelij 968
                IN A,(C)
1026 savelij 969
                LD (OLD_HL + 1),A
802 savelij 970
                RET
971
 
999 savelij 972
; ⥭ INI
1026 savelij 973
IN_INI          LD HL,(OLD_HL)
952 savelij 974
                LD A,H
975
                CP 0x40
976
                JR C,.L1
802 savelij 977
                DEC HL
952 savelij 978
                LD A,(RD_1F)
802 savelij 979
                LD (HL),A
952 savelij 980
; ६,  뫠
1026 savelij 981
;               LD A,0xD3
982
;               LD (0x3FD7),A
952 savelij 983
; ६,  뫠
1028 savelij 984
.L1             LD HL,0x2A53
802 savelij 985
                LD (ADR_EXIT),HL
1026 savelij 986
                JP OUT_1F.INFF_BIT6
802 savelij 987
 
1028 savelij 988
WAIT_READ       LD A,(WR_1F)
989
                AND 0xF0
990
                CP 0x80
991
                JP C,OUT_1F.INFF_BIT6
992
                CP 0xC0
993
                JR NC,READ_SECTOR.L1
994
                CALL READ_CPU12                 ; ࠭ ⥪饩 䨣樨  ஥஢ 1,2
995
                CALL FIND_SECTOR                ; ஢塞 稥 ᥪ
996
                PUSH AF
997
                CALL WRITE_CPU12                ; ⠭ 䨣樨  ஥஢ 1,2
998
                POP AF
999
                JR NC,READ_SECTOR_1
1000
; ᥪ ,  
1001
                LD A,0x3C
1002
                JP OUT_1F.INFF_BIT6_1
1003
 
1026 savelij 1004
; ⥭ ᥪ  ⮢
802 savelij 1005
READ_SECTOR     LD A,(WR_1F)
1026 savelij 1006
                AND 0xF0
1007
                CP 0x80
1008
                JP C,OUT_1F.INFF_BIT6
1009
                CP 0xC0
1028 savelij 1010
                JR C,READ_SECTOR_1
1041 savelij 1011
.L1             CALL READ_CPU12                 ; ⥭ ⥪饩 
1012
                LD BC,WIN_A1
1013
                LD A,0x40
1014
                OUT (C),A
1015
                LD B,HIGH (WIN_P1)
1016
                LD A,RAM_RAMDISK
1017
                OUT (C),A                       ; ࠭  ࠬ᪠
1018
                LD A,(PORT_3F)                  ; 﫨  ४
1019
                ADD A,A                         ; ஭ 2
1020
                LD C,A
1021
                LD A,(WR_FF)
1022
                AND 0x10                        ; ஢ઠ  ஭ ᪠
1023
                JR NZ,.L2
1024
                INC C                           ;  ஭ 1
1025
.L2             LD B,HIGH (CPU1) + 2            ;  砫   ᥪ  ஦
1026
                LD A,0                          ; ⥪騩  ᥪ
1027
.CURR_SEC       EQU $-1
1028
                INC A
1029
                AND %00001111
1030
                LD (.CURR_SEC),A
1031
                ADD A,A
1032
                ADD A,HIGH (CPU1) + 2
1033
                LD B,A
1034
                LD A,(PORT_3F)                  ;  ஦
1035
                LD C,A
1036
                LD A,(BC)                       ; ந⠫  ᥪ
1037
                PUSH AF
1038
                CALL WRITE_CPU12                ; ⠭ 
1039
                LD A,(PORT_3F)
802 savelij 1040
                LD HL,(OLD_HL)
1026 savelij 1041
                LD (HL),A                       ;  ஦
802 savelij 1042
                INC HL
1026 savelij 1043
                LD (HL),0                       ;  ஭
802 savelij 1044
                INC HL
1041 savelij 1045
                POP AF
1026 savelij 1046
                LD (HL),A                       ;  ᥪ
802 savelij 1047
                INC HL
1026 savelij 1048
                LD (HL),0                       ; ࠧ ᥪ
802 savelij 1049
                INC HL
1026 savelij 1050
                LD (HL),0                       ;  CRC
802 savelij 1051
                INC HL
1026 savelij 1052
                LD (HL),0                       ;  CRC
802 savelij 1053
                INC HL
1054
                LD (OLD_HL),HL
1026 savelij 1055
                LD HL,OLD_BC + 1
802 savelij 1056
                LD A,(HL)
1026 savelij 1057
                SUB 6                           ; REG B - 6
802 savelij 1058
                LD (HL),A
1026 savelij 1059
                LD HL,0x2A53
802 savelij 1060
                LD (ADR_EXIT),HL
1026 savelij 1061
                JP OUT_1F.INFF_BIT6
802 savelij 1062
 
999 savelij 1063
; ⥭ ᥪ
802 savelij 1064
READ_SECTOR_1   XOR A
1065
                JR WRITE_SECTOR_1
1066
 
999 savelij 1067
;  ᥪ
1026 savelij 1068
WRITE_SECTOR    LD A,0xFF
802 savelij 1069
WRITE_SECTOR_1  LD (RDWR_MODE),A
1070
                LD A,1
1071
                LD (FLAG_RW_BREAK),A
1072
                LD HL,(OLD_IF)
1073
                PUSH HL
1074
                POP AF
1026 savelij 1075
                JP PO,.DI_MODE                  ; 뢠 ࠧ襭?
1076
                CP 0x3F
1077
                JR Z,.DI_MODE
999 savelij 1078
                HALT                            ; ࠧ襭,  ࠡ稪 뢠
1026 savelij 1079
.DI_MODE        CALL READ_CPU12                 ; ࠭ ⥪饩 䨣樨  ஥஢ 1,2
802 savelij 1080
                CALL W_WR_RD_SECT
1081
                XOR A
1082
                LD (FLAG_RW_BREAK),A
1026 savelij 1083
                LD HL,0x8090
999 savelij 1084
                LD (OLD_AF),HL                  ;  䫠 ᯥ譮 ⥭/ ᥪ
1026 savelij 1085
                LD HL,0x2A53
802 savelij 1086
                LD (ADR_EXIT),HL
999 savelij 1087
                JP WRITE_CPU12                  ; ⠭ 䨣樨  ஥஢ 1,2
802 savelij 1088
 
1028 savelij 1089
;  ᥪ  ⠡
1027 savelij 1090
FIND_SECTOR     LD BC,WIN_A1
1026 savelij 1091
                LD A,0x40
802 savelij 1092
                OUT (C),A
1093
                LD B,HIGH (WIN_P1)
1094
                LD A,RAM_RAMDISK
999 savelij 1095
                OUT (C),A                       ; ࠭  ࠬ᪠
1096
                LD A,(PORT_3F)                  ; 﫨  ४
1097
                ADD A,A                         ; ஭ 2
802 savelij 1098
                LD C,A
1099
                LD A,(WR_FF)
1026 savelij 1100
                AND 0x10                        ; ஢ઠ  ஭ ᪠
1101
                JR NZ,.L2
999 savelij 1102
                INC C                           ;  ஭ 1
1026 savelij 1103
.L2             LD B,HIGH (CPU1) + 2            ;  砫   ᥪ  ஦
1104
                LD HL,(PORT_5F)                 ; 﫨  ᥪ
802 savelij 1105
                LD H,0
1026 savelij 1106
.L1             LD A,(BC)
999 savelij 1107
                LD D,A                          ; 﫨  ᥪ
802 savelij 1108
                INC B
1109
                LD A,(BC)
999 savelij 1110
                LD E,A                          ; 﫨 ࠧ ᥪ
802 savelij 1111
                INC B
1026 savelij 1112
                LD A,D
1113
                AND A
1114
                SCF
1115
                RET Z                           ; 訡, ᥪ  
802 savelij 1116
                LD A,L
1117
                CP D
1026 savelij 1118
                RET Z                           ; ᥪ 
802 savelij 1119
                LD A,E
1120
                ADD A,H
1121
                LD H,A
1026 savelij 1122
                JR .L1
802 savelij 1123
 
1026 savelij 1124
; ⥭   ᥪ ࠬ᪠
1125
W_WR_RD_SECT    LD A,(WR_FF)
1126
                AND 3
1127
                INC A
1128
                LD B,A
1129
                LD A,%10000000
1130
.L1             RLCA
1131
                DJNZ .L1
1132
                LD B,A
1133
                LD A,(COPY_VIRT_BITS)
1134
                AND B
1135
                JP NZ,MOUNT_RW                  ; ࠡ  ਬ஢ ࠧ
1027 savelij 1136
                CALL FIND_SECTOR
1137
                JR NC,.L2
1138
; ᥪ  ,  室
1026 savelij 1139
                LD A,0x10
1140
                JP IN_1F.L2
1141
 
1031 savelij 1142
; ᥪ , ⠥/襬
1027 savelij 1143
.L2             LD A,E
802 savelij 1144
                RRCA
999 savelij 1145
                LD (SECTOR_SIZE),A              ; ࠧ  ᥪ
802 savelij 1146
                LD L,0
1147
                LD E,L
1148
                SRL H
1026 savelij 1149
                RR L                            ; HL = ᬥ饭     ᥪ
802 savelij 1150
                LD B,HIGH (CPU1)
1151
                LD A,(BC)
1152
                LD D,A
1026 savelij 1153
                ADD HL,DE                       ; HL = ᬥ饭  砫 ࠭  
802 savelij 1154
                INC B
1155
                LD A,(BC)
999 savelij 1156
                LD C,A                          ; ᬥ饭  ࠭  砫 ࠬ᪠
802 savelij 1157
                LD A,H
1158
                CP HIGH (CPU1)
1027 savelij 1159
                JR C,.L5
1026 savelij 1160
                SUB 0x40
802 savelij 1161
                LD H,A
1162
                INC C
1026 savelij 1163
; HL = ᬥ饭  ࠭  砫 ᥪ
1027 savelij 1164
.L5             LD A,C                          ; ᬥ饭   ࠭,  㪠 ᥪ 稭
999 savelij 1165
                ADD A,RAM_DATARAMD              ; ਡ  砫 ࠬ  +1.  0 ࠭ ࠬ᪠ ⥫ ᥪ஢
1166
                LD (RDWR_PAGE),A                ; ࠭  ᫥ ࠭
802 savelij 1167
                LD DE,(OLD_HL)
1168
                LD BC,(BB_CPU1)
1169
                LD A,C
1170
                LD C,LOW (WIN_A0)
999 savelij 1171
                OUT (C),A                       ; 㫨 ⠭ 5 ࠭
1027 savelij 1172
.S9             LD A,D                          ; ஢ઠ ࠭ 㤠/㤠 ஢
802 savelij 1173
                CP HIGH (CPU2)
1174
                PUSH DE
1026 savelij 1175
                LD DE,CPU1 + HIGH (WIN_P1)
999 savelij 1176
                LD BC,WIN_A1                    ; ᫨ 孨 32 ,  㦭   1  ஥஢
1027 savelij 1177
                JR NC,.S1
1026 savelij 1178
                LD DE,CPU2 + HIGH (WIN_P2)
999 savelij 1179
                LD B,HIGH (WIN_A2)              ; ᫨  32 ,  㦭   2  ஥஢
1027 savelij 1180
.S1             LD A,0x40
802 savelij 1181
                OUT (C),A
1182
                LD B,E
999 savelij 1183
                LD A,(RDWR_PAGE)                ;  ᫥ ࠭ 
1184
                OUT (C),A                       ; 稫 ᫥ ࠭
1185
                LD B,D                          ; 訩   砫 祭 ࠭
802 savelij 1186
                POP DE
1187
                LD A,B
1188
                ADD A,H
1189
                LD H,A
1190
                LD A,(RDWR_MODE)
1191
                AND A
1027 savelij 1192
                JR NZ,.I1
802 savelij 1193
                LD A,D
1194
                INC A
1027 savelij 1195
                JR NZ,.I1
802 savelij 1196
                LD A,E
1197
                AND A
1027 savelij 1198
                JR Z,.I1
1199
                NEG
802 savelij 1200
                LD C,A
1201
                LD B,0
1202
                LDIR
1203
                NEG
1204
                LD C,A
1027 savelij 1205
.I2             EX DE,HL
802 savelij 1206
                ADD HL,BC
1207
                EX DE,HL
1208
                ADD HL,BC
1209
                LD A,(SECTOR_SIZE)
1027 savelij 1210
                JP .S8_
802 savelij 1211
 
1027 savelij 1212
.I1             LD A,D
802 savelij 1213
                CP HIGH (CPU1)
1027 savelij 1214
                JR NC,.I3
802 savelij 1215
                LD A,(SECTOR_SIZE)
1216
                AND A
1026 savelij 1217
                LD BC,0x80
1027 savelij 1218
                JR Z,.I2
1026 savelij 1219
                LD BC,0x100
1027 savelij 1220
                JR .I2
802 savelij 1221
 
1027 savelij 1222
.I3             CP HIGH (CPU2)                  ; ஢ઠ 室 ࠭ ࠭
1223
                JP NC,.S3                       ; ᫨   ࠧ 㥬
1026 savelij 1224
                CP HIGH (CPU2) - 1
1027 savelij 1225
                JP C,.S3                        ; ᫨  ⠪  ࠧ 㥬
802 savelij 1226
                LD A,E
999 savelij 1227
                AND A                           ; ᫨ ᥪ  㪫뢥  ࠭,  ࠧ 㥬
1027 savelij 1228
                JR Z,.S3                        ;  ਭ㤨⥫쭮 㥬   ਥ
999 savelij 1229
                LD A,(RDWR_MODE)                ; ⥭  ?
802 savelij 1230
                AND A
999 savelij 1231
                LD A,E                          ; 訩    
1027 savelij 1232
                JR Z,.S4
999 savelij 1233
                EX DE,HL                        ;   塞 ࠢ
1027 savelij 1234
.S4             NEG
999 savelij 1235
                LD C,A                          ; 㥬 ⮪   
802 savelij 1236
                LD B,0
1237
                LDIR
1238
                NEG
999 savelij 1239
                PUSH AF                         ; ⠫ ᪮쪮 ⠫ ஢  砫 ᫥饣 
802 savelij 1240
                LD BC,(BB_CPU2)
1241
                LD A,C
1242
                LD C,LOW (WIN_A0)
1243
                OUT (C),A
1244
                LD B,HIGH (WIN_A1)
1026 savelij 1245
                LD A,0x40
802 savelij 1246
                OUT (C),A
1247
                LD B,HIGH (WIN_P1)
1248
                LD A,(RDWR_PAGE)
999 savelij 1249
                OUT (C),A                       ; ᫥ ࠭ 砥  1  ஥஢
1250
                LD A,(RDWR_MODE)                ; ⥭  
802 savelij 1251
                AND A
1027 savelij 1252
                JR Z,.S5
999 savelij 1253
                LD A,D                          ;  
1026 savelij 1254
                SUB 0x40                        ;   㤠 ஢  㣮  ஥஢
802 savelij 1255
                LD D,A
1027 savelij 1256
                JR .S6
802 savelij 1257
 
1027 savelij 1258
.S5             LD A,H                          ;  ⥭
1026 savelij 1259
                SUB 0x40                        ;   㤠 ஢  㣮  ஥஢ 
802 savelij 1260
                LD H,A
1027 savelij 1261
.S6             POP AF
999 savelij 1262
                LD C,A                          ; ᪮쪮 ⠫ ᪮஢ 
802 savelij 1263
                LD B,0
1264
                LDIR
1265
                LD A,(SECTOR_SIZE)
1027 savelij 1266
                JR .S8_
802 savelij 1267
 
1027 savelij 1268
.S3             LD A,(RDWR_MODE)                ; ⥭  
802 savelij 1269
                AND A
1027 savelij 1270
                JR Z,.S7
999 savelij 1271
                EX DE,HL                        ;   塞 ࠢ
1027 savelij 1272
.S7             LD A,(SECTOR_SIZE)
802 savelij 1273
                AND A
1027 savelij 1274
                JR NZ,.S8
999 savelij 1275
                CALL COPYHBLOCK                 ;  ᥪ ࠧ஬ 128  㥬   室
1027 savelij 1276
.ECOPY_BLOCK    LD A,(RDWR_MODE)
802 savelij 1277
                AND A
1027 savelij 1278
                JR Z,.ECOPY_BLOCK1
802 savelij 1279
                EX DE,HL
1027 savelij 1280
.ECOPY_BLOCK1   LD (OLD_HL),DE
802 savelij 1281
                RET
1282
 
1027 savelij 1283
.S8             CALL COPY_BLOCK                 ;  ᥪ 256  㥬   室
1284
.S8_            DEC A
1285
                JR Z,.ECOPY_BLOCK
802 savelij 1286
                LD (SECTOR_SIZE),A
1287
                LD A,(RDWR_MODE)
1288
                AND A
1027 savelij 1289
                JR Z,.S0
802 savelij 1290
                EX DE,HL
1027 savelij 1291
.S0             LD A,0x3F
802 savelij 1292
                AND H
1293
                LD H,A
1027 savelij 1294
                JP .S9
802 savelij 1295
 
999 savelij 1296
COPY_BLOCK
1297
        REPT 128
802 savelij 1298
                LDI
999 savelij 1299
        ENDM
1300
COPYHBLOCK
1301
        REPT 128
802 savelij 1302
                LDI
999 savelij 1303
        ENDM
802 savelij 1304
                RET
1305
 
999 savelij 1306
; ஢ઠ  થ ࠬ᪠
802 savelij 1307
CMP_RAM_DISK    CALL READ_CPU12
1308
                LD BC,WIN_P1
1309
                LD A,RAM_RAMDISK
1310
                OUT (C),A
1026 savelij 1311
                LD HL,CPU1 + 0x3FFF
802 savelij 1312
                LD D,(HL)
1313
                DEC H
999 savelij 1314
                LD E,(HL)                       ; 﫨   ஢ન થ
802 savelij 1315
                CALL WRITE_CPU12
1316
                LD HL,"RD"
1317
                AND A
1318
                SBC HL,DE
999 savelij 1319
                RET Z                           ; ᫨ થ  ,  ࠬ᪠  ᮧ
1320
; ᮧ ⮣ ࠬ᪠
802 savelij 1321
CREATE_TRDTABL  LD BC,WIN_P1
999 savelij 1322
                LD A,RAM_RAMDISK                ; 㦭 ࠭ 砫 ࠬ᪠,  㤥 ⠡ ⥫
802 savelij 1323
                OUT (C),A
1324
                LD HL,CPU1
1325
                PUSH HL
1026 savelij 1326
                LD DE,CPU1 + 1
1327
                LD BC,0x3FFF
802 savelij 1328
                LD (HL),L
999 savelij 1329
                LDIR                            ; ⨫ ࠭
1330
                POP DE                          ;  砫 ࠭
1331
                LD HL,0                         ; ᬥ饭    ࠭
1026 savelij 1332
                LD A,0xA0
802 savelij 1333
ELT2            PUSH AF
1026 savelij 1334
                LD BC,0x1000                    ; 稪 ஢ ᥪ஢   
802 savelij 1335
                LD A,L
1336
                RRCA
1337
                RRCA
999 savelij 1338
                LD (DE),A                       ; ᬥ饭   ஦  ࠭
802 savelij 1339
                INC D
1340
                LD A,H
999 savelij 1341
                LD (DE),A                       ; ᬥ饭  ࠭  ஦
802 savelij 1342
                INC D
1343
ELT1            INC C
1344
                LD A,C
999 savelij 1345
                LD (DE),A                       ;  ᥪ
802 savelij 1346
                INC D
1347
                LD A,2
999 savelij 1348
                LD (DE),A                       ; ࠧ ᥪ
802 savelij 1349
                INC D
999 savelij 1350
                DJNZ ELT1                       ; ᨬ  ⠡   ᥪ஢  ࠧࠬ
1351
                LD D,HIGH (CPU1)                ; 㫨 㪠⥫  砫
1352
                INC E                           ;  ᫥饩 ஦
1026 savelij 1353
                LD BC,0x40
999 savelij 1354
                ADD HL,BC                       ; 室  ᫥饩 ஦
802 savelij 1355
                POP AF
1356
                DEC A
999 savelij 1357
                JR NZ,ELT2                      ; 塞   ஦
1026 savelij 1358
                LD HL,CPU1 + 0x3FFF
999 savelij 1359
                LD (HL),"R"                     ; ᨬ થ ࠬ᪠
802 savelij 1360
                DEC H
1361
                LD (HL),"D"
1362
                LD BC,WIN_P1
1363
                LD A,RAM_DATARAMD
1364
                OUT (C),A
1365
                LD HL,CPU1
1026 savelij 1366
                LD DE,CPU1 + 1
1367
                LD BC,0x0FFF
802 savelij 1368
                LD (HL),L
1369
                LDIR
1370
                LD HL,DSKINFO
1026 savelij 1371
                LD DE,CPU1 + 0x08E1
1372
                LD BC,DSK_END - DSKINFO
802 savelij 1373
                LDIR
999 savelij 1374
; ⠭ 䨣樨  ஥஢ 1,2
802 savelij 1375
WRITE_CPU12     LD BC,(BB_CPU1)
1376
                LD A,C
1377
                LD C,LOW (WIN_A0)
1378
                OUT (C),A
1379
                LD BC,(BB_CPU2)
1380
                LD A,C
1381
                LD C,LOW (WIN_A0)
1382
                OUT (C),A
1383
                RET
1384
 
999 savelij 1385
; ⥭ ⥪饣 䨣 ࠭ ஥஢ 1,2
802 savelij 1386
READ_TMP_CPU12  LD HL,(BB_CPU1)
1387
                PUSH HL
1388
                LD HL,(BB_CPU2)
1389
                PUSH HL
1390
                CALL READ_CPU12
1391
                LD HL,(BB_CPU1)
1392
                LD (TMP_BB_CPU1),HL
1393
                LD HL,(BB_CPU2)
1394
                LD (TMP_BB_CPU2),HL
1395
                POP HL
1396
                LD (BB_CPU2),HL
1397
                POP HL
1398
                LD (BB_CPU1),HL
1399
                JR WRITE_CPU12
1400
 
999 savelij 1401
; ⠭ ⥪饩 䨣樨 ࠭ ஥஢ 1,2
802 savelij 1402
WRITE_TMP_CPU12 LD BC,0
1403
TMP_BB_CPU1     EQU $-2
1404
                LD A,C
1405
                LD C,LOW (WIN_A0)
1406
                OUT (C),A
1407
                LD BC,0
1408
TMP_BB_CPU2     EQU $-2
1409
                LD A,C
1410
                LD C,LOW (WIN_A0)
1411
                OUT (C),A
1412
                RET
1413
 
999 savelij 1414
; ⥭ 䨣樨  ஥஢ 1,2
802 savelij 1415
READ_CPU12      LD BC,RD_RAMNROM
999 savelij 1416
                IN L,(C)                        ;  RAM & ROM
802 savelij 1417
                INC B
999 savelij 1418
                IN H,(C)                        ;  DOS & 7FFD
802 savelij 1419
                ADD HL,HL
1420
                LD B,HIGH (RD_1WINA1)
1421
                IN A,(C)
1026 savelij 1422
                CP 0xC0
1423
                JR NC,.L1
802 savelij 1424
                LD E,A
1425
                LD D,HIGH (WIN_P1)
1026 savelij 1426
                JR .L2
802 savelij 1427
 
1026 savelij 1428
.L1             RLCA
802 savelij 1429
                RLCA
1430
                SLA L
1431
                RRA
1432
                SLA H
1433
                RRA
1434
                LD E,A
1435
                LD D,HIGH (WIN_A1)
1026 savelij 1436
.L2             LD (BB_CPU1),DE
802 savelij 1437
                INC B
1438
                IN A,(C)
1026 savelij 1439
                CP 0xC0
1440
                JR NC,.L3
802 savelij 1441
                LD E,A
1442
                LD D,HIGH (WIN_P2)
1026 savelij 1443
                JR .L4
802 savelij 1444
 
1026 savelij 1445
.L3             RLCA
802 savelij 1446
                RLCA
1447
                SLA L
1448
                RRA
1449
                SLA H
1450
                RRA
1451
                LD E,A
1452
                LD D,HIGH (WIN_A2)
1026 savelij 1453
.L4             LD (BB_CPU2),DE
802 savelij 1454
                RET
1455
 
999 savelij 1456
; ஢ઠ  㠫쭮 ᪠
802 savelij 1457
DISK_NONE       PUSH HL
1458
                PUSH BC
1459
                CALL READ_CPU12
1460
                LD BC,WIN_A1
1026 savelij 1461
                LD A,0x40
802 savelij 1462
                OUT (C),A
1463
                LD B,HIGH (WIN_P1)
1464
                LD A,RAM_RAMDISK
1465
                OUT (C),A
1026 savelij 1466
                LD HL,CPU1 + 0x3FFF
802 savelij 1467
                LD A,(HL)
1468
                DEC H
1469
                CP "R"
1470
                SCF
1471
                JR NZ,DISK_NONE1
1472
                LD A,(HL)
1473
                CP "D"
1474
                SCF
1475
                JR NZ,DISK_NONE1
1476
                XOR A
1477
DISK_NONE1      PUSH AF
1478
                CALL WRITE_CPU12
1479
                POP AF
1480
                POP BC
1481
                POP HL
1482
                RET
1483
 
999 savelij 1484
;  室: H- 祩
1026 savelij 1485
;           L-⠭ 祭
802 savelij 1486
READCMOS        PUSH BC
1487
                LD BC,CMOSD_SET_ADR
1488
                OUT (C),H
1489
                LD B,HIGH (CMOSD_RD_WR)
1490
                IN L,(C)
1491
                POP BC
1492
                LD A,L
1493
                AND A
1494
                RET
1495
 
1026 savelij 1496
        JP_EMU 0x3C30                           ; IN    A, (0x1F)
802 savelij 1497
 
1026 savelij 1498
                DUPL 0x3D2F - $,0
802 savelij 1499
                NOP
1500
                RET
1501
 
1026 savelij 1502
        JP_EMU 0x3D4D                           ; OUT      (0xFF), A
1503
        JP_EMU 0x3D9A                           ; OUT      (0x1F), A
1504
        JP_EMU 0x3DA6                           ; IN    A, (0xFF)
1505
        JP_EMU 0x3DB5                           ; IN    A, (0x1F)
1506
        JP_EMU 0x3DBA                           ; IN    A, (0x1F)
1507
        JP_EMU 0x3DD5                           ; OUT      (0xFF), A
1508
        JP_EMU 0x3E30                           ; IN    A, (0x1F)
1509
        JP_EMU 0x3E3A                           ; IN    A, (0x1F)
1510
        JP_EMU 0x3E44                           ; OUT      (0x7F), A
802 savelij 1511
 
1026 savelij 1512
                DUPL 0x3E49 - $,0
1513
                JP ADR_0x3E4C                   ;   0x3E4C
802 savelij 1514
 
1026 savelij 1515
;               JP_EMU 0x3E4C                   ; OUT      (0x7F), A
1516
                DUPL 0x3E4C - $,0
802 savelij 1517
                OUT (EXIT_PORT),A
1026 savelij 1518
                JR 0x3E49
802 savelij 1519
 
1026 savelij 1520
        JP_EMU 0x3E50                           ; IN    A, (0x3F)
1521
        JP_EMU 0x3E78                           ; IN    A, (0x3F)
1522
        JP_EMU 0x3E7E                           ; OUT      (0x3F), A
1523
        JP_EMU 0x3E87                           ; IN    A, (0x3F)
1524
        JP_EMU 0x3E95                           ; OUT      (0x3F), A
1525
        JP_EMU 0x3EB5                           ; IN    A, (0x1F)
1526
        JP_EMU 0x3EBC                           ; IN    A, (0x3F)
1527
        JP_EMU 0x3EC9                           ; OUT      (0x1F), A
1528
        JP_EMU 0x3ECE                           ; IN    A, (0xFF)
1529
        JP_EMU 0x3EDF                           ; OUT      (0x1F), A
802 savelij 1530
 
1026 savelij 1531
                DUPL 0x3EF3 - $,0               ; IN    H, (C)
802 savelij 1532
                OUT (EXIT_PORT),A
1026 savelij 1533
                JR JUMP_0x3EF3
999 savelij 1534
 
1026 savelij 1535
                JR JUMP_0x3EF5                  ; IN    A, (0xFF)
999 savelij 1536
 
1026 savelij 1537
EXIT_0x3EF5     OUT (EXIT_PORT),A
1538
JUMP_0x3EF5     JP ADR_0x3EF5
802 savelij 1539
 
1026 savelij 1540
;       JP_EMU 0x3EF5                           ; IN    A, (0xFF)
1541
        JP_EMU 0x3EFE                           ; IN    A, (0x7F)
802 savelij 1542
 
1026 savelij 1543
JUMP_0x3EF3     JP ADR_0x3EF3
802 savelij 1544
 
1026 savelij 1545
                JP_EMU 0x3F1B                   ; OUT      (0x5F), A
1546
                JP_EMU 0x3F25                   ; OUT      (0x1F), A
1547
                JP_EMU 0x3F33                   ; IN    A, (0x1F)
802 savelij 1548
 
1026 savelij 1549
                DUPL 0x3F40 - $,0               ;   0x3EF3
1550
                JP ADR_0x3EF3
802 savelij 1551
 
1026 savelij 1552
        JP_EMU 0x3F4D                           ; OUT      (0x1F), A
1553
        JP_EMU 0x3F55                           ; IN    A, (0x3F)
1554
        JP_EMU 0x3F5A                           ; IN    A, (0x5F)
1555
        JP_EMU 0x3F69                           ; IN    A, (0x3F)
1556
        JP_EMU 0x3F72                           ; IN    A, (0x5F)
802 savelij 1557
 
1026 savelij 1558
        JP_EMU 0x3FBC                           ; IN    A, (0xFF)       ; ᥪ
802 savelij 1559
 
1026 savelij 1560
                DUPL 0x3FC7 - $,0
1561
JUMP_0x3FF0     JP ADR_0x3FF0
802 savelij 1562
 
1026 savelij 1563
        JP_EMU 0x3FCA                           ; IN    A, (0xFF)       ; ᥪ
1564
        JP_EMU 0x3FD1                           ; OUTI                  ; ᥪ
802 savelij 1565
 
1026 savelij 1566
        JP_EMU 0x3FD7                           ; IN    A, (0xFF)       ;⥭ ᥪ
802 savelij 1567
 
1026 savelij 1568
JUMP_0x3FEC     JP ADR_0x3FEC
1569
JUMP_0x3FF3     JP ADR_0x3FF3
802 savelij 1570
 
1026 savelij 1571
        JP_EMU 0x3FE5                           ; IN    A, (0xFF)       ;⥭ ᥪ
1572
 
1573
;       JP_EMU 0x3FEC                           ; INI                   ;⥭ ᥪ
1574
                DUPL 0x3FEC - $,0
802 savelij 1575
                OUT (EXIT_PORT),A
1026 savelij 1576
                JR JUMP_0x3FEC
802 savelij 1577
 
1026 savelij 1578
;               DUPL 0x3FF0 - $,0               ; OUT      (C), A
1579
                OUT (EXIT_PORT),A
1580
                DB 0x18                         ; JR 0x3FC7
802 savelij 1581
 
1026 savelij 1582
;               DUPL 0x3FF5 - $,0               ; IN    A, (C)
1583
                OUT (EXIT_PORT),A
1584
                JP JUMP_0x3FF3
802 savelij 1585
 
1026 savelij 1586
                DUPL 0x3FF8 - $,0
802 savelij 1587
                DB "EVOSFE"
1588
                DW DATA_VERS