Subversion Repositories pentevo

Rev

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

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