Subversion Repositories pentevo

Rev

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

Rev Author Line No. Line
573 savelij 1
 
1065 savelij 2
; LAST UPDATE: 15.02.2023 savelij
573 savelij 3
 
961 savelij 4
        TITLE "mounter.a80 ROM_RST83"
573 savelij 5
 
585 savelij 6
MOUNTER         CALL P5_READ_BYTE
573 savelij 7
                LD A,(NEXTBYTERST8)
8
                ADD A,A
9
                LD E,A
10
                LD D,0
11
                LD HL,TAB_MOUNTER
12
                ADD HL,DE
13
                LD A,(HL)
14
                INC HL
15
                LD H,(HL)
16
                LD L,A
17
                JP (HL)
18
 
999 savelij 19
TAB_MOUNTER     DW OPEN_MOUNT                           ; ஢ ࠧ
20
                DW RDWR_MOUNT                           ; ⥭/ ਬ஢ ࠧ
21
                DW FIND_MOUNTED                         ;  㥬 ࠧ யᠭ  IMAGE.FNT
22
                DW GET_MOUNTED                          ; 祭  ⥫ ਬ஢ ࠧ
23
                DW CLOSEMOUNT                           ; ஢ ࠧ
24
                DW LOADIMAGE                            ; 㧪 ࠧ  ࠬ
25
                DW REST_NAMELOAD                        ; 祭 ⥫ 䠩 㦥  ࠬ
26
                DW CMP_DRIVE                            ; ஢ઠ ਬ஢ ࠧ  㪠 㪢
27
                DW GET_VIRT_BITS                        ; 祭 ⮢ ᬮ஢ ᪮
28
                DW SET_VIRTREAL                         ; ४祭 ॠ쭮/㠫쭮 ᪮
29
                DW SET_REAL
30
                DW SET_VIRT
31
;               DW MOUNT_RAMDISK                        ; ஢ ࠬ᪠
32
;               DW SET_RAMDISK                          ; ⪫祭/⠭ ࠬ᪠
573 savelij 33
 
833 savelij 34
NOFUNC          RET
35
 
961 savelij 36
; 㧪 ࠧ  ࠬ
631 savelij 37
LOADIMAGE       LD IYL,INTERNAL
585 savelij 38
                CALL OPEN_FILE
631 savelij 39
                PUSH HL
40
                LD DE,SUPPORT_EXT
41
                CALL CP_EXT
42
                LD (EXT_TYPE),A
665 savelij 43
                LD HL,FILE_SRC
44
                LD DE,NAME_RAMDISK
1026 savelij 45
                LD BC,0x20
665 savelij 46
                LDIR
631 savelij 47
                POP HL
48
                CP _TAP
585 savelij 49
                JR Z,LOAD_TAPE
631 savelij 50
                CP _FDI
585 savelij 51
                JP Z,LOAD_FDI
631 savelij 52
                CP _SCL
53
                JP Z,LOAD_SCL
736 savelij 54
                LD A,RAM_DATARAMD
585 savelij 55
ILD_IMG1        PUSH AF
643 savelij 56
                LD BC,WIN_P5
585 savelij 57
                OUT (C),A
1026 savelij 58
                LD A,0x20
643 savelij 59
                LD HL,CPU5
585 savelij 60
                CALL READ_FILE
61
                JR C,ILD_IMG2
62
                POP AF
63
                INC A
64
                JR ILD_IMG1
65
 
736 savelij 66
LOAD_TAPE       LD A,RAM_TAPE
585 savelij 67
                JR ILD_IMG1
68
 
69
ILD_IMG2        POP AF
823 savelij 70
                LD A,(EXT_TYPE)
71
                SUB _TAP
961 savelij 72
                RET Z                                   ; ᫨ TAP   室
73
;  TRD ࠧ  ⠡ ᥪ஢/஦
1026 savelij 74
        EVOPORT WIN_P5,RAM_DATARAMD                     ; 㦭 ࠭ 㤠 稭 㦥 ࠧ
75
ILD_IMG3        LD HL,(CPU5+0x8E1)                      ;  ᢮ ४ ᥪ
585 savelij 76
                LD A,L
77
                LD L,H
78
                LD H,0
79
                ADD HL,HL
80
                ADD HL,HL
81
                ADD HL,HL
82
                ADD HL,HL
83
                OR L
961 savelij 84
                LD L,A                                  ; ⢮  ᥪ஢  ४ਥ
1026 savelij 85
                LD DE,(CPU5+0x8E5)                      ; ⢮ ᢮ ᥪ஢
585 savelij 86
                ADD HL,DE
87
                ADD HL,HL
88
                ADD HL,HL
89
                ADD HL,HL
961 savelij 90
                ADD HL,HL                               ; H=⢮ ஦
585 savelij 91
                LD A,H
1026 savelij 92
                CP 0xA0
585 savelij 93
                JR NC,ELT3
1026 savelij 94
ELT4            LD A,0xA0
585 savelij 95
ELT3            EX AF,AF'
1026 savelij 96
        EVOPORT WIN_P5,RAM_RAMDISK                      ; 㦭 ࠭ 砫 ࠬ᪠,  㤥 ⠡ ⥫
643 savelij 97
                LD HL,CPU5
585 savelij 98
                PUSH HL
643 savelij 99
                LD DE,CPU5+1
1026 savelij 100
                LD BC,0x3FFF
585 savelij 101
                LD (HL),L
961 savelij 102
                LDIR                                    ; ⨫ ࠭
103
                POP DE                                  ;  砫 ࠭
104
                LD HL,0                                 ; ᬥ饭    ࠭
585 savelij 105
                EX AF,AF'
106
ELT2            EX AF,AF'
1026 savelij 107
                LD BC,0x1000                            ; 稪 ஢ ᥪ஢   
585 savelij 108
                LD A,L
109
                RRCA
110
                RRCA
961 savelij 111
                LD (DE),A                               ; ᬥ饭   ஦  ࠭
585 savelij 112
                INC D
113
                LD A,H
961 savelij 114
                LD (DE),A                               ; ᬥ饭  ࠭  ஦
585 savelij 115
                INC D
116
ELT1            INC C
117
                LD A,C
961 savelij 118
                LD (DE),A                               ;  ᥪ
585 savelij 119
                INC D
120
                LD A,2
961 savelij 121
                LD (DE),A                               ; ࠧ ᥪ
585 savelij 122
                INC D
961 savelij 123
                DJNZ ELT1                               ; ᨬ  ⠡   ᥪ஢  ࠧࠬ
124
                LD D,HIGH (CPU5)                        ; 㫨 㪠⥫  砫
125
                INC E                                   ;  ᫥饩 ஦
1026 savelij 126
                LD BC,0x40
961 savelij 127
                ADD HL,BC                               ; 室  ᫥饩 ஦
585 savelij 128
                EX AF,AF'
129
                DEC A
961 savelij 130
                JR NZ,ELT2                              ; 塞   ஦
131
; 騩 室  㧪  ⮬ ⠭⭮ ࠭   ஥஢ 1
1026 savelij 132
ELOAD_IMAGE     LD HL,CPU5+0x3FFF
585 savelij 133
                LD (HL),"R"
134
                DEC H
135
                LD (HL),"D"
833 savelij 136
                DEC H
961 savelij 137
; ७  䠩 㦥  ࠬ
833 savelij 138
                LD DE,NAME_RAMDISK
139
                LD B,8+3
140
.L1             LD A,(DE)
141
                LD (HL),A
142
                INC DE
143
                DEC H
144
                DJNZ .L1
585 savelij 145
                XOR A
146
                RET
147
 
148
ELT5            POP AF
1026 savelij 149
        EVOPORT WIN_P5,RAM_RAMDISK
585 savelij 150
                JR ELOAD_IMAGE
151
 
961 savelij 152
;   ᮧ 9 ᥪ  ᪠
153
DSKINFO         DB 0                                    ; +0xE1  ࢮ ᢮ ᥪ
154
                DB 1                                    ; +0xE2  ࢮ ᢮ ४
1026 savelij 155
                DB 0x16                                 ; +0xE3 ⨯ ᪥
961 savelij 156
                DB 0                                    ; +0xE4 ⢮ 䠩  ᪥
157
SECFREE         DW 2544                                 ; +0xE5 ⢮ ᢮ ᥪ஢
1026 savelij 158
                DB 0x10                                 ; +0xE7 䨪樮  TRDOS
961 savelij 159
                DW 0                                    ; +0xE8 2  0
1026 savelij 160
                DUPL 9,0x20                             ; +0xEA 9  0x20
961 savelij 161
                DB 0                                    ; +0xF3 1  0
162
                DB 0                                    ; +0xF4 ⢮ 㤠 䠩
163
                DB "RAMDISKO"                           ; +0xF5  ᪥
585 savelij 164
DSK_END
165
 
961 savelij 166
; 㧪 SCL ࠧ
1026 savelij 167
LOAD_SCL
168
        EVOPORT WIN_P5,RAM_DATARAMD
169
        EVOPORT WIN_P3,RAM_MOUNTER
736 savelij 170
                LD A,RAM_DATARAMD
585 savelij 171
LOAD_IMAGE4     PUSH AF
643 savelij 172
                LD BC,WIN_P5
585 savelij 173
                OUT (C),A
1026 savelij 174
                LD HL,CPU5+0x1000
175
                LD A,0x18
585 savelij 176
                CALL READ_FILE
961 savelij 177
                PUSH AF                                 ; ࠭ 䫠 砭 㧪  砩 砭 ࠧ
643 savelij 178
                LD HL,CPU5
961 savelij 179
                PUSH HL                                 ; ࠭  砫 ⠫
585 savelij 180
                LD (HL),L
181
                LD D,H
182
                LD E,L
183
                INC DE
1026 savelij 184
                LD BC,0xFFF
961 savelij 185
                LDIR                                    ; ⪠  ࢮ ஦  ନ஢ ⠫ ᪠
1026 savelij 186
                LD HL,CPU5+0x1008                       ;  ⢠ 䠩  SCL ࠧ
961 savelij 187
                LD A,(HL)                               ; 﫨 ⢮ 䠩  稪
188
                INC HL                                  ; 諨   ⥫ 䠩
585 savelij 189
                EXX
961 savelij 190
                LD HL,0                                 ;  ᮫⭮ ᥪ
191
                LD D,L                                  ; 饭 ᥪ஢     255 ᥪ஢
192
                LD B,A                                  ; ࠭ ⢠ 䠩
585 savelij 193
                EXX
961 savelij 194
                POP DE                                  ; 㫨  砫 ⠫ ᪠
585 savelij 195
LOAD_IMAGE3     EX AF,AF'
1026 savelij 196
                LD BC,0x0D
961 savelij 197
                LDIR                                    ; ७᫨ 13  ⥫ ⥫
198
                LD A,(HL)                               ; ࠫ ࠧ 䠩  ᥪ
199
                LDI                                     ; ७᫨  
585 savelij 200
                EXX
201
                LD E,A
961 savelij 202
                PUSH HL                                 ; ࠭ ⥪饥 祭  ᥪ
203
                ADD HL,DE                               ; 㢥稫 ⥪饥 祭  ࠧ 䠩  ᥪ
585 savelij 204
                EXX
205
                EX (SP),HL
206
                LD A,L
207
                ADD HL,HL
208
                ADD HL,HL
209
                ADD HL,HL
210
                ADD HL,HL
211
                INC H
1026 savelij 212
                AND 0x0F
585 savelij 213
                LD L,A
214
                EX (SP),HL
961 savelij 215
                POP BC                                  ; ⠭ ⥪騩  ᥪ
585 savelij 216
                EX DE,HL
217
                LD (HL),C
218
                INC HL
961 savelij 219
                LD (HL),B                               ; 㫮 ᫥ ⥪饣 ⥫
585 savelij 220
                INC HL
221
                EX DE,HL
222
                EX AF,AF'
223
                DEC A
961 savelij 224
                JR NZ,LOAD_IMAGE3                       ; ᫨ 䠩  稫 த
225
                PUSH HL                                 ; ࠭  砫 
585 savelij 226
                LD HL,DSKINFO
1026 savelij 227
                LD DE,CPU5+0x8E1
585 savelij 228
                LD BC,DSK_END-DSKINFO
229
                LDIR
230
                EXX
961 savelij 231
                LD DE,2544                              ; ⠭ ࠧ ᪥
585 savelij 232
                EX DE,HL
233
                AND A
234
                SBC HL,DE
1026 savelij 235
                LD (CPU5+0x8E5),HL                      ; ⢮ ᢮ ᥪ஢
585 savelij 236
                EX DE,HL
237
                LD A,L
238
                ADD HL,HL
239
                ADD HL,HL
240
                ADD HL,HL
241
                ADD HL,HL
242
                INC H
1026 savelij 243
                AND 0x0F
585 savelij 244
                LD L,A
1026 savelij 245
                LD (CPU5+0x8E1),HL                      ;  ᢮ ४  ᥪ
585 savelij 246
                LD A,B
1026 savelij 247
                LD (CPU5+0x8E4),A                       ; ⢮ 䠩  ᪥
585 savelij 248
                EXX
961 savelij 249
                POP DE                                  ; ⠭  砫 
250
                LD HL,CPU6                              ;   ஥஢
585 savelij 251
                AND A
961 savelij 252
                SBC HL,DE                               ; 稫 ⢮   ᤢ
585 savelij 253
                LD B,H
254
                LD C,L
1026 savelij 255
                LD HL,CPU5+0x1000                       ; 砫   ࠬ᪥
585 savelij 256
                EX DE,HL
961 savelij 257
                LDIR                                    ; ᤢ㫨, ᫥ ७ DE= 㤠  㧨
585 savelij 258
                LD A,D
643 savelij 259
                CP HIGH (CPU6)-2
585 savelij 260
                JR NC,LOAD_IMAGE7
261
                EX DE,HL
643 savelij 262
                LD A,HIGH (CPU6)-1
585 savelij 263
                SUB H
264
                SRL A
265
                LD IXL,A
266
                CALL READ_FILE
1026 savelij 267
                LD DE,0x8000
585 savelij 268
                EX DE,HL
269
LOAD_IMAGE7     AND A
961 savelij 270
                SBC HL,DE                               ; 稫 ᪮쪮  ⠫   
585 savelij 271
                LD (OST_HWOST),HL
272
                LD (KUDA_HWOST),DE
273
                LD DE,0
274
                EX DE,HL
275
                SBC HL,DE
276
                LD A,1
277
                AND H
278
                LD H,A
279
                LD (NEXT4PAGE),HL
961 savelij 280
                POP AF                                  ; ⠭ 䫠 ᫥ 㧪
281
                JP C,ILD_IMG2                           ; ᫨ 䠩 㦥 稫,  室
585 savelij 282
                JR LOAD_IMAGE5
283
 
643 savelij 284
LOAD_IMAGE6     LD DE,CPU5
585 savelij 285
                LD BC,(NEXT4PAGE)
286
                LDIR
287
                EX AF,AF'
288
                JP C,ILD_IMG2
289
                EX DE,HL
1026 savelij 290
                LD A,0x1F
585 savelij 291
                CALL READ_FILE
292
                JP C,ILD_IMG2
293
LOAD_IMAGE5     LD HL,CPU3+BUF_TEMPSEC
294
                PUSH HL
295
                LD A,1
296
                CALL READ_FILE
961 savelij 297
                EX AF,AF'                               ; ⠫ 䫠 㧪 ᥪ
298
                POP HL                                  ; ⠭  㤠 ᥪ   㧨
299
                LD DE,(KUDA_HWOST)                      ; 㤠  ⮪  
300
                LD BC,(OST_HWOST)                       ; ᪮쪮 ७   ࠭
585 savelij 301
                LDIR
302
                POP AF
303
                INC A
304
                PUSH AF
643 savelij 305
                LD BC,WIN_P5
585 savelij 306
                OUT (C),A
307
                JR LOAD_IMAGE6
308
 
961 savelij 309
; 㧪 FDI
310
LOAD_FDI        LD A,RAM_RAMDISK                        ; ࠭ 砫 ࠬ᪠
311
                PUSH AF                                 ; ࠭  ⥪
1026 savelij 312
        EVOPORT WIN_P5,RAM_RAMDISK
313
        EVOPORT WIN_P3,RAM_MOUNTER
585 savelij 314
                LD HL,FDI_TABLE_CYL
315
                LD DE,FDI_TABLE_CYL+1
1026 savelij 316
                LD BC,0x3FFF
585 savelij 317
                LD (HL),0
961 savelij 318
                LDIR                                    ; ⪠ ࠭  ⥫ﬨ ஦
1026 savelij 319
                LD IXH,0xFF
961 savelij 320
                CALL LOAD1SECFDI                        ; ਭ㤨⥫쭠 㧪 ࢮ ᥪ
321
                LD A,(CPU3+6)                           ; 﫨 ⢮ ஭
585 savelij 322
                DEC A
961 savelij 323
                LD A,(CPU3+4)                           ; 﫨 ⢮ ஦
585 savelij 324
                JR Z,LOADFDI1
961 savelij 325
                ADD A,A                                 ; ᫨ ஭ 2,  㬭 ⢮ ஦  2
326
LOADFDI1        LD C,A                                  ; ⢮ ஦
1026 savelij 327
                LD HL,(CPU3+0x0A)
585 savelij 328
                LD (START_DATA),HL
961 savelij 329
                LD DE,CPU5                              ;   砫 ⥫ ஦
1026 savelij 330
                LD HL,CPU3+0x0F                         ;  砫 롮ન ⥫ ஦  FDI 
585 savelij 331
LOADFDI3        BIT 1,H
961 savelij 332
                CALL NZ,LOAD1SECFDI                     ; ᫨ 諨  । ᥪ 塞 㪠⥫  㧨 ᫥騩 ᥪ  
333
                LD A,(HL)                               ;  8-15 ᬥ饭 ஦  砫
1026 savelij 334
                AND 0x3F                                ; 﫨  8-13 -ᬥ饭    ࠭
961 savelij 335
                LD (DE),A                               ; 㫮 ᬥ饭    ࠭
336
                LD A,(HL)                               ; 﫨  14-15
337
                INC HL                                  ; ᫥騩  FDI 
338
                INC D                                   ;   ᬥ饭  ࠭  㦭 ஦
585 savelij 339
                BIT 1,H
961 savelij 340
                CALL NZ,LOAD1SECFDI                     ; ᫨ 諨  । ᥪ 塞 㪠⥫  㧨 ᫥騩 ᥪ  
341
                LD B,A                                  ; ࠭ 㦭 14-15  
342
                LD A,(HL)                               ; 﫨 16-23  ᬥ饭 ஦  砫
585 savelij 343
                RL B
344
                RLA
345
                RL B
346
                RLA
961 savelij 347
                LD (DE),A                               ; 㪫 ⮢ ᬥ饭  ࠭ 
585 savelij 348
                INC D
1026 savelij 349
        REPT 4
585 savelij 350
                INC HL
1026 savelij 351
        ENDM
585 savelij 352
                BIT 1,H
961 savelij 353
                CALL NZ,LOAD1SECFDI                     ; ᫨ 諨  । ᥪ 塞 㪠⥫  㧨 ᫥騩 ᥪ  
354
                LD B,(HL)                               ; 﫨 ⢮ ᥪ஢  ஦
585 savelij 355
                LD A,B
356
                AND A
357
                JP Z,LOADFDI_ERR
358
                INC HL
359
                INC HL
360
LOADFDI4        INC HL
361
                BIT 1,H
961 savelij 362
                CALL NZ,LOAD1SECFDI                     ; ᫨ 諨  । ᥪ 塞 㪠⥫  㧨 ᫥騩 ᥪ  
363
                LDI                                     ; ७  ᥪ
585 savelij 364
                DEC DE
365
                INC C
366
                INC D
367
                BIT 1,H
961 savelij 368
                CALL NZ,LOAD1SECFDI                     ; ᫨ 諨  । ᥪ 塞 㪠⥫  㧨 ᫥騩 ᥪ  
369
                LD A,(HL)                               ; 﫨 ࠧ ᥪ
585 savelij 370
                EX DE,HL
371
                LD (HL),1
372
                AND A
373
                JR Z,LOADFDI2
374
                LD (HL),2
375
                DEC A
376
                JR Z,LOADFDI2
377
                LD (HL),4
378
                DEC A
379
                JR Z,LOADFDI2
380
                LD (HL),8
381
LOADFDI2        EX DE,HL
382
                INC D
1026 savelij 383
        REPT 5
585 savelij 384
                INC HL
1026 savelij 385
        ENDM
961 savelij 386
                DJNZ LOADFDI4                           ; 頥  த,  ᥪ ஦  
1026 savelij 387
                LD D,0x40
585 savelij 388
                INC E
389
                DEC C
961 savelij 390
                JR NZ,LOADFDI3                          ; 頥  த    ஦
585 savelij 391
                DEC HL
392
                BIT 1,H
961 savelij 393
                CALL NZ,LOAD1SECFDI                     ; ᫨ 諨  । ᥪ 塞 㪠⥫  㧨 ᫥騩 ᥪ  
585 savelij 394
                PUSH HL
395
                LD A,H
396
                AND 1
397
                LD B,A
398
                LD C,L
399
                LD A,IXH
400
                ADD A,A
401
                ADD A,B
402
                LD B,A
403
                LD HL,(START_DATA)
404
                AND A
405
                SBC HL,BC
406
                EX DE,HL
407
                POP HL
408
                LD A,D
409
                AND A
410
                JR Z,LOADFDI7
411
LOADFDI8        INC H
412
                BIT 1,H
961 savelij 413
                CALL NZ,LOAD1SECFDI                     ; ᫨ 諨  । ᥪ 塞 㪠⥫  㧨 ᫥騩 ᥪ  
585 savelij 414
                DEC D
415
                JR NZ,LOADFDI8
416
LOADFDI7        ADD HL,DE
417
                BIT 1,H
961 savelij 418
                CALL NZ,LOAD1SECFDI                     ; ᫨ 諨  । ᥪ 塞 㪠⥫  㧨 ᫥騩 ᥪ  
419
                PUSH HL                                 ; ࠭   砫 砫 ᥪ஢
585 savelij 420
                LD DE,CPU3
421
                AND A
422
                SBC HL,DE
961 savelij 423
                LD (OSTAT_SECT),HL                      ; ᪮쪮  ७  墮 ᥪ    砫 ࠭
585 savelij 424
                LD B,H
425
                LD C,L
1026 savelij 426
                LD HL,0x200
585 savelij 427
                SBC HL,BC
961 savelij 428
                LD (NACH_SECT),HL                       ; ᪮쪮  ७  砫 ᥪ     ࠭
429
                POP HL                                  ; ⠭  砫 ᥪ஢,  㧪  ᥪ஢  
585 savelij 430
LOADFDI5        POP AF
431
                INC A
432
                PUSH BC
643 savelij 433
                LD BC,WIN_P5
585 savelij 434
                OUT (C),A
435
                POP BC
436
                PUSH AF
437
                BIT 1,H
438
                CALL NZ,LOAD1SECFDI
439
                EX AF,AF'
643 savelij 440
                LD DE,CPU5
585 savelij 441
                LD BC,(NACH_SECT)
442
                LDIR
443
                EX AF,AF'
444
                JP C,ELT5
445
                EX DE,HL
1026 savelij 446
                LD A,0x1F
585 savelij 447
                CALL READ_FILE
448
                JP C,ELT5
449
                PUSH HL
450
                LD HL,CPU3
451
                PUSH HL
452
                LD A,1
453
                CALL READ_FILE
454
                POP HL
455
                POP DE
456
                LD BC,(OSTAT_SECT)
457
                LDIR
458
                JR LOADFDI5
459
 
460
LOADFDI_ERR     POP AF
1026 savelij 461
        EVOPORT WIN_P5,RAM_RAMDISK
585 savelij 462
                CALL FORMAT_RAMDISK
463
                LD IX,LDFDIERROR
464
                SCF
465
                RET
466
 
1026 savelij 467
FORMAT_RAMDISK
468
        EVOPORT WIN_P5,RAM_DATARAMD
643 savelij 469
                LD HL,CPU5
470
                LD DE,CPU5+1
1026 savelij 471
                LD BC,0xFFF
585 savelij 472
                LD (HL),L
473
                LDIR
474
                LD HL,DSKINFO
1026 savelij 475
                LD DE,CPU5+0x8E1
585 savelij 476
                LD BC,DSK_END-DSKINFO
477
                LDIR
478
                JP ILD_IMG3
479
 
961 savelij 480
; 㧪 ᫥饣 ᥪ  FDI
585 savelij 481
LOAD1SECFDI     PUSH HL
482
                PUSH BC
483
                PUSH DE
484
                PUSH AF
605 savelij 485
                LD HL,CPU3
585 savelij 486
                LD A,1
487
                CALL READ_FILE
488
                INC IXH
489
                POP AF
490
                POP DE
491
                POP BC
492
                POP HL
493
                RES 1,H
494
                RET
495
 
961 savelij 496
; ஢ ࠧ
585 savelij 497
OPEN_MOUNT      LD A,(RREG_A)
961 savelij 498
OPEN_MOUNT_INT  LD (MOUNT_SYM),A                        ;  㬮 ᪠
585 savelij 499
                LD IYL,INTERNAL
1026 savelij 500
        EVOPORT WIN_P5,RAM_MOUNTER                      ; 稫 ࠭  ⥫ﬨ ਬ஢ 䠩
961 savelij 501
                LD A,(MOUNT_SYM)                        ;  㬮 ᪠
643 savelij 502
                ADD A,HIGH (BUF_PATHMOUNT+CPU5)
573 savelij 503
                LD D,A
961 savelij 504
                LD E,0                                  ; DE=  ⥩ ਬ஢ 䠩
505
                LD A,(SETDVOL)                          ;  ⥪饣 ன⢠
643 savelij 506
                ADD A,HIGH (TEK_BUFPATH+CPU5)+4
573 savelij 507
                LD H,A
961 savelij 508
                LD L,E                                  ; HL=   ⥪饬 ன⢥
1026 savelij 509
                LD BC,0x100
573 savelij 510
                PUSH DE
961 savelij 511
                LDIR                                    ; ७᫨ 
512
                CALL READ_DIR                           ; ⠫ ⥫ 㥬 䠩
573 savelij 513
                POP DE
514
                PUSH HL
515
OPENMOUNT05     LD A,(DE)
516
                INC DE
517
                AND A
518
                JR NZ,OPENMOUNT05
519
                DEC DE
1026 savelij 520
                LD BC,0x8FF
573 savelij 521
OPENMOUNT01     LDI
522
                LD A,(HL)
523
                CP "!"
524
                JR C,OPENMOUNT03
525
                DJNZ OPENMOUNT01
526
                LD A,"."
527
                LD (DE),A
528
                INC DE
529
                JR OPENMOUNT06
530
 
531
OPENMOUNT03     INC HL
532
                DJNZ OPENMOUNT03
533
                DEC HL
534
                LD A,"."
535
                LD (DE),A
536
                INC DE
537
OPENMOUNT06     LD B,3
538
OPENMOUNT02     LDI
539
                LD A,(HL)
540
                CP "!"
541
                JR C,OPENMOUNT04
542
                DJNZ OPENMOUNT02
543
OPENMOUNT04     XOR A
544
                LD (DE),A
545
                POP HL
961 savelij 546
                LD A,(MOUNT_SYM)                        ;  㬮 ᪠
573 savelij 547
                PUSH HL
548
                LD B,A
549
                RRCA
550
                RRCA
551
                LD E,A
831 savelij 552
                LD A,B
573 savelij 553
                LD D,HIGH (MOUNT_DRIVES)
554
                LD IXH,D
961 savelij 555
                LD IXL,E                                ; IX= ⥫ ਬ஢ 䠩
556
                LD (IX+_MOUNT_Mount_Num),B              ;  㥬 ᪮
1026 savelij 557
                LD BC,0x20
573 savelij 558
                LDIR
559
                INC A
665 savelij 560
                LD H,%11110111
573 savelij 561
OPENMOUNT1      RLC H
562
                DEC A
563
                JR NZ,OPENMOUNT1
764 savelij 564
                LD A,(CPU2+VIRT_BITS)
573 savelij 565
                AND H
566
                LD L,A
567
                LD A,H
568
                CPL
569
                OR L
764 savelij 570
                CALL WR_VIRT_BITS
1026 savelij 571
        EVOPORT WIN_P5,RAM_MOUNTER                      ; 稫 ࠭  ⥫ﬨ ਬ஢ 䠩
573 savelij 572
                POP HL
961 savelij 573
; HL= ⥫ 㥬 䠩
573 savelij 574
IOPEN_MOUNT     LD DE,FILE_EXT
575
                CALL CP_EXT
961 savelij 576
                LD (IX+_MOUNT_Ext_Type),C               ; ⨯ ࠧ  ७
573 savelij 577
                CALL ICOM_DEV
585 savelij 578
                DB _KOL_VOL
961 savelij 579
                LD (IX+_MOUNT_Vol_Type),A               ; ⨯ ࠧ
580
                LD (IX+_MOUNT_Vol_Num),D                ;  ࠭ ࠧ
573 savelij 581
                LD L,D
582
                LD H,0
583
                ADD HL,HL
584
                ADD HL,HL
585
                ADD HL,HL
961 savelij 586
                LD DE,BUF_TABLVOL                       ;  ⠡  ࠧ
573 savelij 587
                ADD HL,DE
588
                LD A,(HL)
831 savelij 589
                CP _SD_SDZ
573 savelij 590
                LD HL,COMSDZ
591
                JR Z,OPENMOUNT6
831 savelij 592
                CP _SD_SDG
573 savelij 593
                LD HL,COMSDG
594
                JR Z,OPENMOUNT6
595
                LD HL,COMHDDN
764 savelij 596
OPENMOUNT6      LD (IX+_MOUNT_Adr_Mnt_Drv),L
961 savelij 597
                LD (IX+_MOUNT_Adr_Mnt_Drv+1),H          ;  ࠩ 㥬 ࠧ
573 savelij 598
 
764 savelij 599
                LD E,(IX+_MOUNT_FileSize+1)
600
                LD D,(IX+_MOUNT_FileSize+2)
961 savelij 601
                LD L,(IX+_MOUNT_FileSize+3)             ; LDE=ࠧ 䠩/256
602
                LD A,(SecPerClus)
605 savelij 603
                LD H,A
573 savelij 604
OPENMOUNT3      SRL L
605
                RR D
606
                RR E
607
                RRCA
961 savelij 608
                JR NC,OPENMOUNT3                        ; LDE=⢮ ஢
609
; A00 ᥪ஢ (256 ) -> 500 ᥪ஢ (512 )
610
; =1 ᥪ      1280/8      蠣=8
611
; =2 ᥪ     640/4       蠣=4
612
; =4 ᥪ     320/2       蠣=2
613
; =8 ᥪ஢    160         蠣=1
614
; =16 ᥪ஢   80          蠣=1
615
; =32 ᥪ    40          蠣=1
616
; =64 ᥪ    20          蠣=1
617
; =128 ᥪ஢  10          蠣=1
605 savelij 618
                LD IY,1<<8+INTERNAL
619
                LD A,H
620
                CP 8
621
                JR NC,OPENMOUNT5
622
                LD IYH,8
623
                RRCA
624
                JR C,OPENMOUNT5
625
                LD IYH,4
626
                RRCA
627
                JR C,OPENMOUNT5
628
                LD IYH,2
573 savelij 629
OPENMOUNT5      LD A,IYH
961 savelij 630
                LD (IX+_MOUNT_Cls_Step),A               ; 蠣 ஢
631
                LD A,(IX+_MOUNT_Mount_Num)              ;  㥬 ᪮
573 savelij 632
                ADD A,A
633
                ADD A,A
643 savelij 634
                ADD A,HIGH (MOUNT_CLS+CPU5)
573 savelij 635
                LD H,A
636
                LD L,0
764 savelij 637
                LD C,(IX+_MOUNT_FstClusHI)
638
                LD B,(IX+_MOUNT_FstClusHI+1)
639
                LD E,(IX+_MOUNT_FstClusLO)
640
                LD D,(IX+_MOUNT_FstClusLO+1)
573 savelij 641
                JR OPENMOUNT9
642
 
605 savelij 643
OPENMOUNT7      DEC IYH
573 savelij 644
                JR NZ,OPENMOUNT8
961 savelij 645
OPENMOUNT9      LD A,(IX+_MOUNT_Cls_Step)               ; 蠣 ஢
573 savelij 646
                LD IYH,A
647
                LD (HL),E
648
                INC H
649
                LD (HL),D
650
                INC H
651
                LD (HL),C
652
                INC H
653
                LD (HL),B
654
                DEC H
655
                DEC H
656
                DEC H
657
                INC L
658
OPENMOUNT8      PUSH HL
659
                CALL RDFATZP
660
                CALL LST_CLS
661
                POP HL
662
                JR NC,OPENMOUNT7
663
                RET
664
 
665
FILE_EXT        DZ "TRD"
666
 
961 savelij 667
; ⥭/ ਬ஢ ࠧ
668
; HL= ⥭/
669
; D= ४, E= ᥪ+1
670
; A= ᪮ (BIT 7=0-⥭, =1-)
573 savelij 671
RDWR_MOUNT      LD A,(RREG_A)
672
                AND 3
673
                RRCA
674
                RRCA
675
                LD IXL,A
961 savelij 676
                LD IXH,HIGH (MOUNT_DRIVES)              ; IX=⥫ ᪮ A-D
588 savelij 677
                LD IYL,INTERNAL
1026 savelij 678
        EVOPORT WIN_P5,RAM_FATVARS
573 savelij 679
                LD A,(SETDVOL)
643 savelij 680
                ADD A,HIGH (CPU5+BUF_ALLVOL)+4
573 savelij 681
                LD D,A
682
                LD E,0
683
                LD HL,BUF_TEKVOL
1026 savelij 684
                LD BC,0x100
573 savelij 685
                LDIR
764 savelij 686
                LD A,(IX+_MOUNT_Vol_Num)
643 savelij 687
                ADD A,HIGH (CPU5+BUF_ALLVOL)+4
573 savelij 688
                LD H,A
689
                LD L,0
690
                LD DE,BUF_TEKVOL
1026 savelij 691
                LD BC,0x100
573 savelij 692
                LDIR
736 savelij 693
                EVOPORT WIN_P5,RAM_MOUNTER
573 savelij 694
                LD HL,(GO_DEV)
764 savelij 695
                LD (IX+_MOUNT_Adr_Sel_Drv),L
696
                LD (IX+_MOUNT_Adr_Sel_Drv+1),H
697
                LD L,(IX+_MOUNT_Adr_Mnt_Drv)
698
                LD H,(IX+_MOUNT_Adr_Mnt_Drv+1)
573 savelij 699
                LD (GO_DEV),HL
700
                LD HL,(RREG_E)
701
                DEC L
702
                LD E,L
703
                LD L,H
704
                LD H,0
705
                LD D,H
706
                ADD HL,HL
707
                ADD HL,HL
708
                ADD HL,HL
709
                ADD HL,HL
961 savelij 710
                ADD HL,DE                               ; HL= ᥪ  䠩 (256 )
573 savelij 711
                PUSH HL
961 savelij 712
                LD A,(SecPerClus)
573 savelij 713
RDWRMOUNT1      SRL H
714
                RR L
715
                RRCA
961 savelij 716
                JR NC,RDWRMOUNT1                        ; HL= 
1026 savelij 717
; 0xA00 ᥪ஢ (256 ) -> 0x500 ᥪ஢ (512 )
961 savelij 718
; =1 ᥪ      1280/8      蠣=8
719
; =2 ᥪ     640/4       蠣=4
720
; =4 ᥪ     320/2       蠣=2
721
; =8 ᥪ஢    160         蠣=1
722
; =16 ᥪ஢   80          蠣=1
723
; =32 ᥪ    40          蠣=1
724
; =64 ᥪ    20          蠣=1
725
; =128 ᥪ஢  10          蠣=1
573 savelij 726
                LD A,L
605 savelij 727
                EX AF,AF'
764 savelij 728
                LD A,(IX+_MOUNT_Cls_Step)
605 savelij 729
                DEC A
730
                JR Z,RDWRMOUNT6
731
                INC A
732
                ADD HL,HL
733
RDWRMOUNT2      SRL H
734
                RR L
735
                RRCA
736
                JR NC,RDWRMOUNT2
961 savelij 737
RDWRMOUNT6      LD A,(RREG_A)                           ;  ᪮
573 savelij 738
                ADD A,A
739
                ADD A,A
643 savelij 740
                ADD A,HIGH (MOUNT_CLS+CPU5)
573 savelij 741
                LD H,A
742
                LD E,(HL)
743
                INC H
744
                LD D,(HL)
745
                INC H
746
                LD C,(HL)
747
                INC H
961 savelij 748
                LD B,(HL)                               ; BCDE= 
1065 savelij 749
; TODO: ஢ઠ    0  0xFFFFFFFF   訡 ⥭/  
961 savelij 750
                LD A,(IX+_MOUNT_Cls_Step)               ; 蠣 ஢
605 savelij 751
                DEC A
961 savelij 752
                JR Z,RDWRMOUNT3                         ; 蠣 ஢ =1
753
                LD B,A                                  ; ᪠ ᬥ饭  ⠡ ஢
573 savelij 754
                EX AF,AF'
961 savelij 755
                AND B                                   ; A=ᬥ饭  ⠡ ஢
756
                LD B,(HL)                               ; ⠭  
573 savelij 757
                JR Z,RDWRMOUNT3
758
RDWRMOUNT4      PUSH AF
759
                CALL RDFATZP
760
                POP AF
761
                DEC A
762
                JR NZ,RDWRMOUNT4
961 savelij 763
RDWRMOUNT3      CALL REALSEC                            ;      ᥪ
573 savelij 764
                POP HL
765
                PUSH HL
766
                SRL L
961 savelij 767
                LD A,(SecPerClus)
573 savelij 768
                DEC A
769
                JR Z,RDWRMOUNT5
770
                AND L
771
                LD L,A
772
                LD H,0
773
                ADD HL,DE
774
                EX DE,HL
775
                LD HL,0
776
                ADC HL,BC
777
                LD B,H
778
                LD C,L
961 savelij 779
RDWRMOUNT5      CALL LOADLST                            ; ⥭ ᥪ  
573 savelij 780
                POP BC
781
                LD A,C
782
                AND 1
783
                ADD A,H
784
                LD H,A
785
                LD BC,CPU3
961 savelij 786
                ADD HL,BC                               ;     1
573 savelij 787
                CALL LDIR_SEC
961 savelij 788
                LD A,(RREG_A)                           ; ⥭  
1026 savelij 789
                AND 0x80
573 savelij 790
                CALL NZ,LSTSAVE
791
                LD HL,RREG_H
792
                INC (HL)
764 savelij 793
                LD L,(IX+_MOUNT_Adr_Sel_Drv)
794
                LD H,(IX+_MOUNT_Adr_Sel_Drv+1)
573 savelij 795
                LD (GO_DEV),HL
1026 savelij 796
        EVOPORT WIN_P5,RAM_FATVARS
573 savelij 797
                LD A,(SETDVOL)
643 savelij 798
                ADD A,HIGH (CPU5+BUF_ALLVOL)+4
573 savelij 799
                LD H,A
800
                LD DE,BUF_TEKVOL
1026 savelij 801
                LD BC,0x100
585 savelij 802
                LD L,C
573 savelij 803
                LDIR
961 savelij 804
                LD (NumSec2Buf + 2),HL
573 savelij 805
                RET
806
 
961 savelij 807
LDIR_SEC        EX DE,HL                                ;   ࠭  DE
808
                LD HL,(RREG_L)                          ; HL=  ᭮ 
809
                CALL RESETUP_WINS                       ; ४䨣  ஥஢
810
                ADD HL,BC                               ;   ⥭/
811
                EX DE,HL                                ; HL= , DE=  ᭮ 
812
                LD A,(RREG_A-CPU5)                      ; ⥭  
1026 savelij 813
                AND 0x80
573 savelij 814
                JR Z,LDIRSEC6
961 savelij 815
                EX DE,HL                                ;   塞 ࠫ ७
1026 savelij 816
LDIRSEC6        LD BC,0x100
573 savelij 817
                LDIR
643 savelij 818
                LD HL,CPU5
573 savelij 819
                ADD HL,SP
961 savelij 820
                LD SP,HL                                ; 㫨  ⥪   2
1026 savelij 821
        ATMPORT WIN_A3,0x7F                             ; ࠫ  ᨬ   3   7FFD
643 savelij 822
                LD B,HIGH (WIN_A6)
961 savelij 823
                OUT (C),A                               ; ࠫ  ᨬ   2   7FFD
573 savelij 824
                XOR A
643 savelij 825
                LD B,HIGH (WIN_P6)
961 savelij 826
                OUT (C),A                               ; 㫨 ࠭ ६   2
573 savelij 827
                RET
828
 
961 savelij 829
TXT_MOUNTER     DZ "IMAGE.MNT"                          ;   ᪠ ⥪⮢ 䠩  㪠  ஢ TRD
573 savelij 830
ETXT_MOUNTER
831
 
586 savelij 832
FIND_MOUNTED    LD A,(KOLDVOL)
833
                AND A
834
                JR NZ,FINDMNTD09
835
                LD IX,MOUNT_DRIVES
1026 savelij 836
                LD DE,0x40
586 savelij 837
                LD B,4
764 savelij 838
FINDMNTD10      LD (IX+_MOUNT_Name),D
586 savelij 839
                ADD IX,DE
840
                DJNZ FINDMNTD10
841
                RET
842
 
843
FINDMNTD09      LD A,(SETDVOL)
961 savelij 844
                LD (SAVE_TEK_VOL),A                     ; ࠭ ⥪饥 ன⢮
845
                CALL SAVE_FNDVOL                        ; ࠭ ६ ⥪饣 ன⢠
573 savelij 846
                LD H,CMOS_BYTE_01
1026 savelij 847
        ROMCALL READCMOS,ROM_RST82
585 savelij 848
                LD A,L
961 savelij 849
                AND M_AUTOMOUNT                         ; । 㦭  ᪠ 䠩 IMAGE.MNT
573 savelij 850
                JP Z,FINDMNTD01
961 savelij 851
; 饬 䠩 IMAGE.MNT  ⮬஢
573 savelij 852
                LD IYL,INTERNAL
853
                LD A,(KOLDVOL)
961 savelij 854
                DEC A                                   ; ᪠ 㤥  ᫥  ࠧ
855
                CALL SET_VOL_MNT                        ; ४稫  ࠭ ன⢮
975 savelij 856
                LD HL,(RootDIRCluster)
857
                LD (CurrentDIRCluster),HL
858
                LD HL,(RootDIRCluster + 2)
859
                LD (CurrentDIRCluster + 2),HL           ; ࠫ ୥ ⠫ ࠭ ன⢠
961 savelij 860
                CALL INIRTSC                            ; 樠஢  ६  ROOTDIR
573 savelij 861
                LD HL,TXT_MOUNTER
862
                LD DE,BUF_256
863
                LD BC,ETXT_MOUNTER-TXT_MOUNTER
961 savelij 864
                LDIR                                    ; ७᫨  䠩  ᪠
573 savelij 865
                CALL ICOM_FAT
585 savelij 866
                DB _FIND_NAME
961 savelij 867
                JP C,FINDMNTD01                         ; 䠩 IMAGE.MNT  
868
; 䠩 
869
                CALL OPEN_FILE                          ; 뢠 䠩
1026 savelij 870
                LD HL,FILE_SRC+0x1F
573 savelij 871
                LD A,(HL)
872
                DEC HL
873
                OR (HL)
961 savelij 874
                JP NZ,FINDMNTD01                        ; 䠩     512 
573 savelij 875
                DEC HL
876
                LD A,(HL)
877
                CP 2
961 savelij 878
                JP NC,FINDMNTD01                        ; 䠩     512 
879
                LD A,1                                  ;  㤥 1 ᥪ   䠩
573 savelij 880
                LD B,(HL)
881
                DEC HL
961 savelij 882
                LD C,(HL)                               ; 﫨  䠩  
883
                PUSH BC                                 ; ࠭  쭥襣 ᯮ짮
573 savelij 884
                LD IYL,INTERNAL
665 savelij 885
                LD HL,OFFSET_BUFSYM+CPU6
573 savelij 886
                PUSH HL
961 savelij 887
                CALL READ_FILE                          ; ⠫ 1 ᥪ  䠩
1026 savelij 888
        EVOPORT WIN_P5,RAM_MOUNTER
573 savelij 889
                POP HL
890
                POP BC
891
                ADD HL,BC
961 savelij 892
                LD (HL),0                               ; ⠭ ਧ  䠩  0
573 savelij 893
                SBC HL,BC
894
FINDMNTD04      LD A,(HL)
895
                AND A
961 savelij 896
                JR Z,FINDMNTD01                         ; 室 ᫨ 䠩 稫
573 savelij 897
                INC HL
898
                CP "!"
961 savelij 899
                JR C,FINDMNTD04                         ; ᫨ ப 稫 ७ᨬ  ப   ᪠ 
573 savelij 900
                DEC HL
901
                PUSH HL
902
                INC HL
961 savelij 903
                CP "a"                                  ;  ᨬ ப 㪢 ன⢠
904
                JR C,FINDMNTD06                         ;   ⮫쪮 ᨬ  "A"
665 savelij 905
                CP 'z'+1
961 savelij 906
                JR NC,FINDMNTD06                        ;  "Z"
1026 savelij 907
                AND 0xDF                                ; ॢ 㪢 ன⢠  孨 ॣ, ᫨ 㦭
961 savelij 908
FINDMNTD06      SUB "E"                                 ; FAT ன⢠ 稭  㪢 "E"
573 savelij 909
                JR C,FINDMNTD02
910
                EXX
961 savelij 911
                LD C,A                                  ;  ன⢠  ᪠ 䠩
912
                LD A,(KOLDVOL)                          ; ⢮  ࠧ
573 savelij 913
                CP C
914
                EXX
915
                JR C,FINDMNTD02
916
                LD A,(HL)
917
                INC HL
961 savelij 918
                CP ":"                                  ; ࠧ⥫ 易⥫
573 savelij 919
                JR NZ,FINDMNTD02
920
                LD A,(HL)
921
                INC HL
961 savelij 922
                CP "/"                                  ; ࠧ⥫ 易⥫
573 savelij 923
                JR NZ,FINDMNTD02
924
FINDMNTD07      LD A,(HL)
925
                INC HL
926
                CP "!"
961 savelij 927
                JR NC,FINDMNTD07                        ; 饬  ப
928
                LD A,(HL)                               ; 㪢 ᪮   ஢
573 savelij 929
                INC HL
930
                CP "a"
931
                JR C,FINDMNTD08
665 savelij 932
                CP 'z'+1
573 savelij 933
                JR NC,FINDMNTD08
1026 savelij 934
                AND 0xDF                                ; ॢ  孨 ॣ, ᫨ 㦭
573 savelij 935
FINDMNTD08      SUB "A"
936
                JR C,FINDMNTD02
937
                CP 4
938
                JR NC,FINDMNTD02
939
                EXX
961 savelij 940
                LD B,A                                  ;  ᪮   ஢
573 savelij 941
                EXX
942
                LD A,(HL)
943
                INC HL
944
                CP ":"
945
                JR NZ,FINDMNTD02
946
                LD D,H
947
                LD E,L
948
                EX (SP),HL
949
                EX DE,HL
950
                SCF
951
                SBC HL,DE
952
                LD B,H
953
                LD C,L
954
                EX DE,HL
955
                EXX
956
                LD A,B
957
                EXX
643 savelij 958
                ADD A,HIGH (BUF_PATHMOUNT+CPU5)
573 savelij 959
                LD D,A
961 savelij 960
                LD E,0                                  ; DE=  ⥪⮢ ப 㥬 ᪮
573 savelij 961
                DEC BC
962
                DEC BC
961 savelij 963
                LDIR                                    ; ७᫨ ப
573 savelij 964
                XOR A
961 savelij 965
                LD (DE),A                               ; ਭ㤨⥫쭮 襭 ப ஢
573 savelij 966
                POP HL
967
                JR FINDMNTD04
968
 
969
FINDMNTD02      LD A,(HL)
970
                INC HL
971
                AND A
972
                JR Z,FINDMNTD01
973
                CP " "
974
                JR NC,FINDMNTD02
975
                POP DE
976
                JR FINDMNTD04
977
 
1026 savelij 978
FINDMNTD01
979
        EVOPORT WIN_P5,RAM_MOUNTER
980
                LD BC,0x400
961 savelij 981
                LD IX,MOUNT_DRIVES                      ;  ⥫ 㥬 䠩
573 savelij 982
FINDMNTD2       PUSH BC
961 savelij 983
                CALL FINDMNTD0                          ; 饬 㪠 䠩  ஢
573 savelij 984
                JR NC,FINDMNT5
961 savelij 985
                LD (IX+_MOUNT_Name),0                   ; ᫨ 䠩  ,  ਭ㤨⥫쭮 㥬 ࠧ
1026 savelij 986
FINDMNT5        LD BC,0x40
961 savelij 987
                ADD IX,BC                               ; ᫥騩 ⥫ 㥬 䠩
573 savelij 988
                POP BC
989
                DJNZ FINDMNTD2
990
                LD A,IYH
1026 savelij 991
                AND 0xF0                                ; 訥 4  ਬ஢ 䠩
666 savelij 992
                LD D,A
764 savelij 993
                LD A,(CPU2+VIRT_BITS)
1026 savelij 994
                AND 0x0F                                ; 訥 4  ॠ  㠫 ਢ
961 savelij 995
                OR D                                    ; ᮢ⨫   ⭮
764 savelij 996
                CALL WR_VIRT_BITS
573 savelij 997
                LD A,(SAVE_TEK_VOL)
585 savelij 998
                PUSH IY
999
                LD IYL,INTERNAL
961 savelij 1000
                CALL SET_VOL_MNT                        ; ⠭ ⥪饥 ࠭ ன⢮
1001
                CALL INIRTSC                            ; ந⨫  ६
585 savelij 1002
                POP IY
961 savelij 1003
                JP LOAD_FNDVOL                          ; 㫨   ⥫ ன⢠
573 savelij 1004
 
961 savelij 1005
;  㥬 䠩  ⠭ ᮮ⢥饣 
573 savelij 1006
FINDMNTD0       CALL FINDMNTD1
1007
                EX AF,AF'
1008
                LD A,IXL
1026 savelij 1009
                AND 0xC0
573 savelij 1010
                RLCA
961 savelij 1011
                RLCA                                    ;  ⥪饣 㥬 ᪮
573 savelij 1012
                INC A
1013
                LD B,A
1014
                LD A,%11110111
1015
                RLCA
961 savelij 1016
                DJNZ $-1                                ; ⠭ ᪨ 㥬 ᪮
1017
                LD C,A                                  ; ᪠
573 savelij 1018
                CPL
961 savelij 1019
                LD B,A                                  ; 
573 savelij 1020
                LD A,IYH
961 savelij 1021
                AND C                                   ; ᨫ  ᬮ஢ ᪮
573 savelij 1022
                LD IYH,A
1023
                EX AF,AF'
961 savelij 1024
                RET C                                   ; 室 ᫨ 䠩  
573 savelij 1025
                LD A,IYH
961 savelij 1026
                OR B                                    ; ⠭  ᫨ 䠩 
573 savelij 1027
                LD IYH,A
1028
                RET
1029
 
961 savelij 1030
; ࠭ ⥪饣 
573 savelij 1031
STORE_PATH      PUSH AF
1026 savelij 1032
        EVOPORT WIN_P5,RAM_MOUNTER
961 savelij 1033
                LD A,(SETDVOL)                          ;  ⥪饣 ன⢠
1034
                ADD A,HIGH (TEK_BUFPATH+CPU5)+4         ; +訩   
573 savelij 1035
                LD H,A
1036
                LD DE,BUF_256
1026 savelij 1037
                LD BC,0x100
573 savelij 1038
                LD L,C
1039
                LDIR
1040
STOREPATH1      POP AF
1041
                RET
1042
 
961 savelij 1043
; ⠭ ⥪饣 
573 savelij 1044
RESTORE_PATH    PUSH AF
1026 savelij 1045
        EVOPORT WIN_P5,RAM_MOUNTER
961 savelij 1046
                LD A,(SETDVOL)                          ;  ⥪饣 ன⢠
1047
                ADD A,HIGH (TEK_BUFPATH+CPU5)+4         ; +訩   
573 savelij 1048
                LD D,A
1049
                LD HL,BUF_256
1026 savelij 1050
                LD BC,0x100
573 savelij 1051
                LD E,C
1052
                LDIR
1053
RESTOREPATH1    POP AF
1054
                RET
1055
 
961 savelij 1056
;  㥬 䠩
573 savelij 1057
FINDMNTD1       LD A,IXL
1058
                RLCA
1059
                RLCA
1060
                AND 3
643 savelij 1061
                ADD A,HIGH (BUF_PATHMOUNT+CPU5)
573 savelij 1062
                LD D,A
961 savelij 1063
                LD E,0                                  ; DE=  ப ⥫ 㬮 䠩
1064
                LD A,(DE)                               ; 﫨 㪢 ன⢠  䠩 ᪠
573 savelij 1065
                INC DE
1066
                INC DE
1067
                INC DE
1068
                AND A
1069
                SCF
1070
                RET Z
961 savelij 1071
                SUB "E"                                 ;  㪢  
573 savelij 1072
                PUSH DE
961 savelij 1073
                CALL SET_VOL_MNT                        ; ४稫   ன⢮
1074
                CALL STORE_PATH                         ; ࠭ ⥪騩 
975 savelij 1075
                LD HL,(RootDIRCluster)
1076
                LD (CurrentDIRCluster),HL
1077
                LD HL,(RootDIRCluster + 2)
1078
                LD (CurrentDIRCluster + 2),HL           ; 諨  ७ ன⢠
961 savelij 1079
                CALL INIRTSC                            ; 樠  ६
1026 savelij 1080
        EVOPORT WIN_P5,RAM_MOUNTER
573 savelij 1081
                POP HL
961 savelij 1082
                CALL FNDBUF                             ; ᯠ ⥪⮢ ப
573 savelij 1083
FINDMNTD13      PUSH HL
961 savelij 1084
                CALL POSTF02                            ;  ⥪饣  䠩  0
1085
                CALL FINDMNTD3                          ;   ⥪饩 ४ਨ
573 savelij 1086
                POP DE
961 savelij 1087
                JP C,RESTORE_PATH                       ; ⠭ ⥪騩 
1026 savelij 1088
                LD BC,0x0B
573 savelij 1089
                ADD HL,BC
1090
                LD A,(HL)
1091
                SBC HL,BC
1026 savelij 1092
                AND 0x10
961 savelij 1093
                JR Z,FINDMNTD23                         ; ᫨  䠩 ,   
573 savelij 1094
                PUSH DE
961 savelij 1095
                CALL ENTER_DIR                          ;  室  ४
1096
                CALL POSTF02                            ;  ⥪饣  䠩  0
573 savelij 1097
                POP HL
1098
                LD A,(HL)
1099
                AND A
1100
                SCF
961 savelij 1101
                JP Z,RESTORE_PATH                       ; ⠭ ⥪騩 
1102
                CALL FNDBUF                             ; ᯠ뢠 ᫥  ப
1103
                JR FINDMNTD13                           ; த 
573 savelij 1104
 
1105
FINDMNTD23      LD A,IXL
1106
                RLCA
1107
                RLCA
1108
                LD E,IXL
961 savelij 1109
                LD D,IXH                                ; DE=㤠 ⥫ ७
1110
                LD (IX+_MOUNT_Mount_Num),A              ;  㥬 ᪮
573 savelij 1111
                PUSH HL
1026 savelij 1112
                LD BC,0x20
573 savelij 1113
                LDIR
1114
                POP HL
1115
                PUSH IY
1116
                CALL IOPEN_MOUNT
1117
                POP IY
1118
                XOR A
961 savelij 1119
                JP RESTORE_PATH                         ; ⠭ ⥪騩 
573 savelij 1120
 
1121
FINDMNTD4       CALL NXTLEGZ
1122
FINDMNTD3       PUSH HL
1123
                LD DE,FB_EXT
1124
                CALL ICMP_NAME
1125
                POP HL
1126
                RET Z
1127
                LD A,(HL)
1128
                AND A
1129
                JR NZ,FINDMNTD4
1130
                SCF
1131
                RET
1132
 
961 savelij 1133
; 祭 ⥫ 䠩 㦥  ࠬ
643 savelij 1134
REST_NAMELOAD   LD HL,NAME_RAMDISK-CPU6
631 savelij 1135
                LD DE,(RREG_L)
1026 savelij 1136
                LD BC,0x20
631 savelij 1137
                JP LDIR_BYTES
1138
 
833 savelij 1139
;STOR_NAMELOAD  LD HL,(RREG_L)
1140
;               LD DE,NAME_RAMDISK-CPU6
1026 savelij 1141
;               LD BC,0x20
833 savelij 1142
;               JP LDIR_BYTES
639 savelij 1143
 
1026 savelij 1144
GET_MOUNTED
1145
        EVOPORT WIN_P5,RAM_MOUNTER
643 savelij 1146
                LD HL,MOUNT_DRIVES-CPU6
573 savelij 1147
                LD DE,(RREG_L)
1026 savelij 1148
                LD BC,0x100
573 savelij 1149
                JP LDIR_BYTES
1150
 
1026 savelij 1151
CMP_DRIVE
1152
        EVOPORT WIN_P5,RAM_MOUNTER
573 savelij 1153
                LD A,(RREG_A)
665 savelij 1154
                AND 3
1155
                RLCA
1156
                RLCA
1157
                LD L,A
1158
                LD H,HIGH (MOUNT_DRIVES)
1159
                LD A,(HL)
961 savelij 1160
                AND A                                   ; ᫨  ਬ஢,
1161
                SCF                                     ;  ᪠ 
665 savelij 1162
                JR Z,CMP_DRIVE1
1163
                XOR A
1164
CMP_DRIVE1      PUSH AF
1165
                POP HL
1166
                LD (RREG_F),HL
1167
                RET
1168
 
961 savelij 1169
; ஢ ࠧ
1026 savelij 1170
CLOSEMOUNT
1171
        EVOPORT WIN_P5,RAM_MOUNTER
665 savelij 1172
                LD A,(RREG_A)
573 savelij 1173
                LD B,A
1174
                RRCA
1175
                RRCA
1176
                LD L,A
1177
                LD H,HIGH (MOUNT_DRIVES)
1178
                LD (HL),0
1179
                LD A,B
643 savelij 1180
                ADD A,HIGH (BUF_PATHMOUNT+CPU5)
573 savelij 1181
                LD H,A
1182
                LD L,0
1183
                LD (HL),L
1184
                INC B
665 savelij 1185
                LD A,%11110111
573 savelij 1186
                RLCA
1187
                DJNZ $-1
1188
                LD B,A
764 savelij 1189
                LD A,(CPU2+VIRT_BITS)
1190
                AND B
1191
                JP WR_VIRT_BITS
573 savelij 1192
 
961 savelij 1193
; ᯠ騪   䠩 
1194
; HL =  ⥪⮢ ப
1026 savelij 1195
FNDBUF          LD BC,0x0802
573 savelij 1196
                LD DE,FB_EXT
1197
FNDBUF4         LD A,(HL)
1198
                INC HL
1199
                CP "."
1200
                JR Z,FNDBUF2
1201
                CP "/"
1202
                JR Z,FNDBUF5
1203
                LD (DE),A
1204
                INC DE
1205
                DJNZ FNDBUF4
1206
                LD A,(HL)
1207
                AND A
1208
                RET Z
1209
                INC HL
1210
                JR FNDBUF3
1211
 
1212
FNDBUF5         LD A,C
1213
                AND A
1214
                RET Z
1215
FNDBUF2         LD A,B
1216
                AND A
1217
                JR Z,FNDBUF3
1218
                LD A," "
1219
                LD (DE),A
1220
                INC DE
1221
                DJNZ $-2
1222
FNDBUF3         LD B,3
1223
                DEC C
1224
                DEC HL
1225
                LD A,(HL)
1226
                CP "/"
1227
                JR Z,FNDBUF4
1228
                INC HL
1229
                JR FNDBUF4
764 savelij 1230
 
961 savelij 1231
; 祭 ⥪饣 ﭨ ⮢ ᬮ஢ ᪮  ࠬ᪠ 
764 savelij 1232
GET_VIRT_BITS   LD HL,MOUNT_DRIVES
961 savelij 1233
                LD E,0                          ;    ᬮ஢ ᪮
764 savelij 1234
.L2             LD A,(HL)
1235
                AND A
1236
                JR Z,.L1
888 savelij 1237
                SET 4,E
764 savelij 1238
.L1             RR E
1026 savelij 1239
                LD A,0x40
764 savelij 1240
                ADD A,L
1241
                LD L,A
1242
                JR NZ,.L2
999 savelij 1243
; VIRT_BITS -  3-0   ਬ஢ ࠧ  ᪮ D-A
833 savelij 1244
                CALL GET_VIRTREAL
888 savelij 1245
                AND 3
1246
                INC A
1247
                LD B,A
1248
                LD A,%00001000
1249
.L3             RLCA
1250
                DJNZ .L3
764 savelij 1251
                OR E
888 savelij 1252
; A xxxx0000 -  ࠬ᪠
1253
; E 0000xxxx -  ਬ஢ ࠧ
1254
 
961 savelij 1255
; ஢ ⠭ 㠫/ॠ  EVO-DOS 
888 savelij 1256
WR_VIRT_BITS    PUSH BC
775 savelij 1257
                PUSH HL
1026 savelij 1258
                LD H,A
1259
                LD (CPU2 + VIRT_BITS),A         ; ७ ६
1260
                LD (RREG_A),A                   ; 頥 祭  ॣ A
1261
                AND %00001111                   ; ਬ஢ ᪨
888 savelij 1262
                LD L,A
1026 savelij 1263
                LD A,H
1264
                AND %11110000
888 savelij 1265
                RRCA
1266
                RRCA
1267
                RRCA
1268
                RRCA
1026 savelij 1269
                OR L
961 savelij 1270
                LD (B_PORT_VIRT),A
999 savelij 1271
        EVOPORT WIN_P2,RAM_EVODOS
1026 savelij 1272
                LD A,H
1273
                LD (CPU2 + COPY_VIRT_BITS),A    ;  ६ 䫠  
999 savelij 1274
                LD A,VIRT_REAL_DRIVE
1275
                LD BC,CMOSD_SET_ADR
1276
                OUT (C),A
1277
                LD BC,CMOSD_RD_WR
1026 savelij 1278
                IN L,(C)
1279
                LD A,L
1280
                AND %00000011
1281
                LD (CPU2 + VIRT_DRIVE),A        ;  㠫쭮 ᪠  CMOS
1282
                LD A,L
1283
                AND %00001100
1284
                RRCA
1285
                RRCA
1286
                LD (CPU2 + REAL_DRIVE),A        ;  ॠ쭮 ᪠  CMOS
1287
                LD BC,WIN_P2
764 savelij 1288
                XOR A
1289
                OUT (C),A
775 savelij 1290
                POP HL
764 savelij 1291
                POP BC
1292
                RET
1293
 
999 savelij 1294
        IF 0
1026 savelij 1295
; ஢ ࠬ᪠
1296
; MOUNT_RAMDISK CALL GET_VIRTREAL
999 savelij 1297
;               AND 3
1298
;               JR SET_RAMDISK.L1
888 savelij 1299
 
1300
; ⪫祭/⠭ ࠬ᪠
1301
; A = >3 - ⪫祭 ࠬ᪠
1302
;     0..3 -  ࠬ᪠
1303
; VIRT_BITS - 7-4   ⠭  -> ࠬ 
1304
SET_RAMDISK     LD A,(RREG_A)
1305
                CP 4
1306
                JR C,.L1
764 savelij 1307
                LD A,(CPU2+VIRT_BITS)
1026 savelij 1308
                AND 0x0F
888 savelij 1309
                JR WR_VIRT_BITS
1310
 
1311
.L1             INC A
764 savelij 1312
                LD B,A
888 savelij 1313
                LD A,%00001000
1314
.L2             RLCA
1315
                DJNZ .L2
1316
                LD L,A
1317
                LD A,(CPU2+VIRT_BITS)
1026 savelij 1318
                AND 0x0F
888 savelij 1319
                OR L
999 savelij 1320
                JP WR_VIRT_BITS
1321
        ENDIF
764 savelij 1322
 
999 savelij 1323
; ⠭   ॠ  㠫 ᪮
1324
; A = 0..3 -  ᪮  ⠭
1325
SET_VIRTREAL    LD A,(RREG_A)
1326
                LD E,A
1327
                CALL GET_VIRTREAL
1328
                AND %11110000
1329
                LD D,A
1330
                LD A,E
1331
                AND 3
1332
                LD E,A
1333
                ADD A,A
1334
                ADD A,A
1335
                OR E
1336
.L1             LD L,A
1337
        ROMCALL IWRITECMOS,ROM_RST82
1338
                JP GET_VIRT_BITS
1339
 
1340
; ⠭  ॠ쭮 ᪮
1341
; A = 0..3 -  ᪮  ⠭
1342
SET_REAL        LD A,(RREG_A)
1343
                LD E,A
1344
                CALL GET_VIRTREAL
1345
                AND %11110011
1346
                LD D,A
1347
                LD A,E
1348
                AND 3
1349
                ADD A,A
1350
                ADD A,A
1351
                OR D
1352
                JR SET_VIRTREAL.L1
1353
 
1354
; ⠭  㠫쭮 ᪮
1355
; A = 0..3 -  ᪮  ⠭
1356
SET_VIRT        LD A,(RREG_A)
1357
                LD E,A
1358
                CALL GET_VIRTREAL
1359
                AND %11111100
1360
                LD D,A
1361
                LD A,E
1362
                AND 3
1363
                OR D
1364
                JR SET_VIRTREAL.L1
1365
 
833 savelij 1366
GET_VIRTREAL    LD H,VIRT_REAL_DRIVE
999 savelij 1367
        ROMCALL READCMOS,ROM_RST82
1026 savelij 1368
                AND 0x0F
764 savelij 1369
                RET