Subversion Repositories pentevo

Rev

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

Rev Author Line No. Line
507 savelij 1
 
1204 savelij 2
; LAST UPDATE: 23.03.2025 savelij
507 savelij 3
 
573 savelij 4
COM_FAT         EX AF,AF'
585 savelij 5
                CALL P5_READ_BYTE
573 savelij 6
                LD A,(NEXTBYTERST8)
7
                PUSH IX
8
                PUSH IY
9
                LD IYL,EXTERNAL
10
                JR ICOM_FAT1
507 savelij 11
 
1186 savelij 12
;  窠 室  ࠡ  FAT
573 savelij 13
ICOM_FAT        EX AF,AF'
507 savelij 14
                EX (SP),HL
15
                LD A,(HL)
16
                INC HL
17
                EX (SP),HL
18
                PUSH IX
19
                PUSH IY
573 savelij 20
                LD IYL,INTERNAL
1186 savelij 21
ICOM_FAT1       LD (ADR_SP_COMFAT),SP
507 savelij 22
                PUSH HL
23
                LD HL,EXITDRV
24
                EX (SP),HL
25
                PUSH HL
26
                LD HL,TABLFAT
573 savelij 27
                ADD A,A
507 savelij 28
                ADD A,L
29
                LD L,A
30
                LD A,H
31
                ADC A,0
32
                LD H,A
33
                LD A,(HL)
34
                INC HL
35
                LD H,(HL)
36
                LD L,A
37
                EX AF,AF'
38
                EX (SP),HL
39
                RET
40
 
1186 savelij 41
ERR_DRV         LD SP,(ADR_SP_COMFAT)
507 savelij 42
EXITDRV         POP IY
43
                POP IX
44
                RET
45
 
1028 savelij 46
TABLFAT         DW INIT_FATVARS                 ; 樠 ६ FAT
47
                DW READ_DIR                     ; 祭 ⥫ 䠩
48
                DW ENTER_DIR                    ; 室/室  
49
                DW GET_PATH                     ; 祭 ⥪饣 
50
                DW GET_LONGNAME                 ; 祭   䠩
51
                DW FIND_NAME                    ;   
52
                DW FIND_FILEITEM                ;   ⥫  뤠祩 ஢ 
53
                DW SET_MASK_EXT                 ; ⠭ ᪨ ७  ᪠
54
                DW OPEN_FILE                    ; ⨥ 䠩
55
                DW READ_FILE                    ; ᫥⥫쭮 ⥭ 䠩
56
                DW INIT_TEKDIR                  ; ᮧ ⠡ ஢ ⥪饩 ४ਨ
57
                DW POS_FILES                    ; ࠡ  ⥪饩 樥
58
                DW ROOTDIR                      ; 室  ୥ ४
507 savelij 59
 
875 savelij 60
ROOTDIR         PUSH IY
61
                LD IYL,INTERNAL
1186 savelij 62
                LD A,(DEVMAN_VARS.SETDVOL)
875 savelij 63
                LD D,A
64
                LD L,A
65
                LD H,0
66
                ADD HL,HL
67
                ADD HL,HL
68
                ADD HL,HL
1186 savelij 69
                LD BC,BUF_VOLUMES + 2
875 savelij 70
                ADD HL,BC
71
                LD A,(HL)
1186 savelij 72
                LD HL,BUF_VOLUMES
875 savelij 73
                CALL INIT_FATVARS
1186 savelij 74
                LD DE,(FATVAR.CurrentDIRCluster)
75
                LD BC,(FATVAR.CurrentDIRCluster + 2)
875 savelij 76
                CALL INIT_TEKDIR
77
                POP IY
78
                RET
79
 
961 savelij 80
; 樠 ६ FAT
81
;  室:
82
; HL =  ⠡  ࠧ
83
; DE = D -  ࠭ ࠧ, E - ⢮  ࠧ
84
; A = ⨯ ࠧ ᫨  MBR
85
;  室:
86
; BCDE =   ୥ ४ਨ
87
; A = ⨯ ࠧ ᫨ MBR  
573 savelij 88
INIT_FATVARS    PUSH HL
961 savelij 89
                LD HL,0xFFFF
1186 savelij 90
                LD (FATVAR.NumSec2Buf + 2),HL
91
                LD (FATVAR.FATType),A
573 savelij 92
                LD E,D
93
                LD D,0
507 savelij 94
                EX DE,HL
573 savelij 95
                POP DE
507 savelij 96
                ADD HL,HL
97
                ADD HL,HL
573 savelij 98
                ADD HL,HL
507 savelij 99
                ADD HL,DE
573 savelij 100
                INC HL
101
                INC HL
102
                INC HL
1186 savelij 103
                CALL RD_DWORD
104
                LD (FATVAR.StartSecVol),DE
105
                LD (FATVAR.StartSecVol + 2),BC  ;  ࢮ ᥪ ࠧ
573 savelij 106
                CALL LOADLST
736 savelij 107
                CALL VALID_BOOTSEC
108
                AND A
1186 savelij 109
                JR Z,.L6
736 savelij 110
                SCF
111
                RET
112
 
1186 savelij 113
.L6             LD A,(BUF_512 + _BPB_SecPerClus)
114
                LD (FATVAR.SecPerClus),A
961 savelij 115
                LD HL,(BUF_512 + _BPB_RsvdSecCnt)
116
                ADD HL,DE
1186 savelij 117
                LD (FATVAR.NumSecFAT1),HL
961 savelij 118
                LD HL,0
1007 savelij 119
                ADC HL,BC
1186 savelij 120
                LD (FATVAR.NumSecFAT1 + 2),HL
1007 savelij 121
                LD HL,0
961 savelij 122
                LD DE,(BUF_512 + _BPB_FATSz16)
573 savelij 123
                LD A,D
124
                OR E
1186 savelij 125
                JR NZ,.L7                       ; ᫨  FAT12/16 (_BPB_FATSz16 == 0)
961 savelij 126
                LD DE,(BUF_512 + _BPB_FATSz32)
1028 savelij 127
                LD HL,(BUF_512 + _BPB_FATSz32 + 2)      ;  ६  ᬥ饭 +36
1186 savelij 128
.L7             LD (FATVAR.FATSize),DE
129
                LD (FATVAR.FATSize + 2),HL      ; ᫮ ᥪ஢  FAT ⠡
961 savelij 130
 
573 savelij 131
                LD HL,0
961 savelij 132
                LD DE,(BUF_512 + _BPB_TotSec16)
573 savelij 133
                LD A,D
134
                OR E
1186 savelij 135
                JR NZ,.L5                       ; ᫨  FAT12/16 (BPB_TOTSEC16=0)
961 savelij 136
                LD DE,(BUF_512 + _BPB_TotSec32)
137
                LD HL,(BUF_512 + _BPB_TotSec32+2)
1028 savelij 138
                                                ;  ६  ᬥ饭 +32
1186 savelij 139
.L5             LD (FATVAR.NumsSectorsVol + 2),HL
140
                LD (FATVAR.NumsSectorsVol),DE   ; - ᥪ஢  ᪥/ࠧ
573 savelij 141
 
961 savelij 142
; 塞 ROOTDIRSECTORS
143
                LD DE,(BUF_512 + _BPB_RootEntCnt)
507 savelij 144
                LD BC,0
573 savelij 145
                LD A,D
146
                OR E
1186 savelij 147
                JR Z,.L8
1028 savelij 148
                LD A,0x10
573 savelij 149
                CALL BCDE_A
150
 
1028 savelij 151
;  ॠ 㫠
152
; ROOTDIRSECTORS = ((BPB_ROOTENTCNT * 32) + (BPB_BYTSPERSEC - 1)) / BPB_BYTSPERSEC
153
;  HL ROOTDIRSECTORS. ᫨ FAT32,  HL = 0 ᥣ
573 savelij 154
 
1186 savelij 155
.L8             PUSH DE                         ; ROOTDIRSECTORS
156
                LD HL,FATVAR.NumSecFAT1
157
                CALL RD_DWORD
961 savelij 158
                LD A,(BUF_512 + _BPB_NumFATs)
1186 savelij 159
                LD (FATVAR.NumFATs),A
573 savelij 160
                DEC A
961 savelij 161
                JR Z,.L1
1186 savelij 162
                LD HL,FATVAR.FATSize
961 savelij 163
                CALL BCDEHLP
1186 savelij 164
                LD (FATVAR.NumSecFAT2),DE
165
                LD (FATVAR.NumSecFAT2 + 2),BC
166
.L1             LD HL,FATVAR.FATSize
961 savelij 167
                CALL BCDEHLP
1186 savelij 168
                LD (FATVAR.NumSecRootDir),DE
169
                LD (FATVAR.NumSecRootDir + 2),BC
961 savelij 170
                POP HL
171
; 塞 ࠧ ROOTDIR
172
                ADD HL,DE
507 savelij 173
                EX DE,HL
961 savelij 174
                LD HL,0
175
                ADC HL,BC
507 savelij 176
                LD B,H
177
                LD C,L
1186 savelij 178
                LD (FATVAR.FirstSecData),DE
179
                LD (FATVAR.FirstSecData + 2),BC
180
                LD HL,FATVAR.NumsSectorsVol
961 savelij 181
                CALL BCDEHLM
1186 savelij 182
                LD A,(FATVAR.SecPerClus)
961 savelij 183
                CALL BCDE_A
1186 savelij 184
                LD (FATVAR.NumsClustersVol),DE
185
                LD (FATVAR.NumsClustersVol + 2),BC
573 savelij 186
 
1186 savelij 187
                LD A,(FATVAR.FATType)
1028 savelij 188
                CP 0xFF
1010 savelij 189
                JR NZ,.L4
961 savelij 190
; । ⨯ FAT  ⢨ MBR
1028 savelij 191
                LD HL,(BUF_512 + _BPB_FATSz16)
192
                LD A,H
193
                OR L
194
                LD A,2
195
                JR Z,.L2
1186 savelij 196
                LD DE,(FATVAR.FATSize - 1)
197
                LD BC,(FATVAR.FATSize + 1)
961 savelij 198
                LD E,0                          ; BCDE = ⢮ ᥪ஢ * 0x100
1186 savelij 199
                LD HL,FATVAR.NumsClustersVol    ; ⢮ ஢  FAT
961 savelij 200
                CALL HLBCDEM                    ; ⢮ ஢ - (⢮ ᥪ஢ * 0x100)
573 savelij 201
                LD A,D
202
                OR C
203
                OR B
961 savelij 204
                LD A,1                          ; FAT16
1010 savelij 205
                JR Z,.L2                        ; FAT16 ᫨ 䫠 Z=0
961 savelij 206
                XOR A                           ;  FAT12
1186 savelij 207
.L2             LD (FATVAR.FATType),A
573 savelij 208
 
961 savelij 209
;  FAT12/16 ROOT  = 0
210
;  FAT32 ६  ᬥ饭 +44
1186 savelij 211
;  室: BCDE - ROOTDIR 
1010 savelij 212
.L4             XOR A
1186 savelij 213
                LD (FATVAR.CurrentNumLevDIR),A
961 savelij 214
                CALL INIT_PATH
1186 savelij 215
                LD A,(FATVAR.FATType)
1010 savelij 216
                PUSH AF
736 savelij 217
                AND A
573 savelij 218
                LD DE,0
219
                LD B,D
220
                LD C,E
1186 savelij 221
                JR Z,.L3                                ; FAT12-NONE
573 savelij 222
                DEC A
1186 savelij 223
                JR Z,.L3                                ; FAT16
961 savelij 224
                LD DE,(BUF_512 + _BPB_RootClus)
1028 savelij 225
                LD BC,(BUF_512 + _BPB_RootClus + 2)     ; FAT32
1186 savelij 226
.L3             LD (FATVAR.CurrentDIRCluster),DE
227
                LD (FATVAR.CurrentDIRCluster + 2),BC    ;  ⥪饣 
228
                LD (FATVAR.RootDIRCluster),DE
229
                LD (FATVAR.RootDIRCluster + 2),BC       ;  ୥ 
1010 savelij 230
                POP AF
573 savelij 231
                RET
507 savelij 232
 
961 savelij 233
; ஢ઠ 0 ᥪ ࠧ
234
VALID_BOOTSEC   LD HL,(BUF_512 + _BPB_BytsPerSec)
235
                LD A,H
736 savelij 236
                SUB 2
961 savelij 237
                OR L
1186 savelij 238
                JR NZ,.L1
961 savelij 239
                LD HL,(BUF_512 + _BPB_SecPerClus)
240
                OR L
1186 savelij 241
                JR Z,.L1
736 savelij 242
                NEG
961 savelij 243
                AND L
244
                CP L
1186 savelij 245
                JR NZ,.L1
961 savelij 246
                LD A,(BUF_512 + _BPB_NumFATs)
736 savelij 247
                DEC A
248
                CP 7
1186 savelij 249
                JR NC,.L1
736 savelij 250
                XOR A
251
                RET
252
 
1186 savelij 253
.L1             OR IXH
736 savelij 254
                RET
255
 
961 savelij 256
; ନ஢ ⠡ ஢ DIR
257
;   ࢮ "쭮"   DIR
573 savelij 258
INIRTSC         PUSH AF
961 savelij 259
                LD HL,0xFFFF
1186 savelij 260
                LD (FATVAR.NumSec2Buf + 2),HL
261
                LD HL,BUF_DIRCLS
262
                LD DE,(FATVAR.CurrentDIRCluster)
263
                LD BC,(FATVAR.CurrentDIRCluster + 2)
264
                CALL WR_DWORD
573 savelij 265
                LD A,D
266
                OR E
267
                OR B
268
                OR C
1186 savelij 269
                JR Z,.L2
270
.L1             PUSH HL
573 savelij 271
                CALL RDFATZP
272
                CALL LST_CLS
273
                POP HL
1186 savelij 274
                JR C,.L2
275
                CALL WR_DWORD
276
                JR .L1
573 savelij 277
 
1186 savelij 278
.L2             LD BC,0xFFFF
279
                CALL WR_DWORD
573 savelij 280
                CALL POSTF02
281
                POP AF
282
                RET
283
 
1028 savelij 284
; ⥭ ᫥饣  
1186 savelij 285
RDFATZP         LD A,(FATVAR.FATType)
573 savelij 286
                AND A
1186 savelij 287
                JR Z,.L3
573 savelij 288
                DEC A
1186 savelij 289
                JR Z,.L1
573 savelij 290
                EX DE,HL
291
                ADD HL,HL
292
                EX DE,HL
293
                LD HL,0
294
                ADC HL,BC
1028 savelij 295
                ADD HL,BC                       ; HLDE = BCDE * 2
573 savelij 296
                LD A,E
297
                LD E,D
298
                LD D,L
299
                LD C,H
300
                LD B,0
1186 savelij 301
                CALL .L2
573 savelij 302
                INC HL
507 savelij 303
                LD C,(HL)
304
                INC HL
305
                LD B,(HL)
573 savelij 306
                RET
307
 
1186 savelij 308
.L1             LD BC,0
573 savelij 309
                LD A,E
310
                LD E,D
311
                LD D,C
1186 savelij 312
.L2             PUSH AF
573 savelij 313
                PUSH BC
1186 savelij 314
                LD HL,FATVAR.NumSecFAT1
573 savelij 315
                CALL BCDEHLP
316
                CALL LOADLST
317
                POP BC
318
                POP AF
319
                LD E,A
320
                LD D,0
507 savelij 321
                ADD HL,DE
573 savelij 322
                ADD HL,DE
507 savelij 323
                LD E,(HL)
324
                INC HL
325
                LD D,(HL)
573 savelij 326
                RET
327
 
1186 savelij 328
.L3             LD H,D
573 savelij 329
                LD L,E
330
                ADD HL,HL
331
                ADD HL,DE
332
                SRL H
333
                RR L
334
                LD A,E
335
                LD E,H
336
                LD D,0
337
                LD B,D
338
                LD C,D
339
                SRL E
340
                PUSH AF
341
                PUSH HL
1186 savelij 342
                LD DE,(FATVAR.NumSecFAT1)
343
                LD BC,(FATVAR.NumSecFAT1 + 2)
573 savelij 344
                CALL LOADLST
345
                POP BC
346
                LD A,B
347
                AND 1
348
                LD B,A
349
                ADD HL,BC
350
                LD B,(HL)
507 savelij 351
                INC HL
573 savelij 352
                LD A,H
353
                CP HIGH (BUF_512)+2
1186 savelij 354
                JR NZ,.L4
507 savelij 355
                PUSH BC
573 savelij 356
                LD BC,0
357
                INC DE
358
                CALL LOADLST
507 savelij 359
                POP BC
1186 savelij 360
.L4             POP AF
573 savelij 361
                LD D,(HL)
362
                LD E,B
363
                LD BC,0
364
                RRA
1186 savelij 365
                JR NC,.L5
961 savelij 366
        REPT 4
573 savelij 367
                SRL D
368
                RR E
961 savelij 369
        ENDM
1186 savelij 370
.L5             LD A,D
1028 savelij 371
                AND 0x0F
573 savelij 372
                LD D,A
373
                RET
374
 
961 savelij 375
; ᫥  ॠ쭮 ᥪ
376
;  室: BCDE =   FAT
377
;  室: BCDE =  ᥪ
573 savelij 378
REALSEC         LD A,B
379
                OR C
380
                OR D
381
                OR E
1186 savelij 382
                JR NZ,.L1
383
                LD DE,(FATVAR.NumSecRootDir)
384
                LD BC,(FATVAR.NumSecRootDir + 2)
961 savelij 385
                RET
507 savelij 386
 
1186 savelij 387
.L1             LD HL,0xFFFE
573 savelij 388
                EX DE,HL
507 savelij 389
                ADD HL,DE
390
                EX DE,HL
573 savelij 391
                INC HL
1028 savelij 392
                ADC HL,BC                       ;  -2
1186 savelij 393
                LD A,(FATVAR.SecPerClus)
394
                JR .L3
573 savelij 395
 
1186 savelij 396
.L2             SLA E
573 savelij 397
                RL D
398
                RL L
399
                RL H
1186 savelij 400
.L3             RRCA
401
                JR NC,.L2                       ; 㬭  ࠧ 
507 savelij 402
                LD B,H
403
                LD C,L
1186 savelij 404
                LD HL,FATVAR.FirstSecData
1028 savelij 405
                JP BCDEHLP                      ; ਡ ᬥ饭  砫 ࠧ
573 savelij 406
 
1028 savelij 407
; ࠭塞 ᥪ 㦥  
1186 savelij 408
LSTSAVE         LD DE,(FATVAR.NumSec2Buf)
409
                LD BC,(FATVAR.NumSec2Buf + 2)
573 savelij 410
                LD HL,BUF_512
411
                LD A,1
412
                CALL TO_DRV
585 savelij 413
                DB _DEV_WRITE
573 savelij 414
                AND A
415
                JP NZ,ERR_DRV
507 savelij 416
                RET
417
 
1028 savelij 418
; 㦠 ᥪ  
507 savelij 419
LOADLST         CALL CPNUMSC
420
                JR NZ,LOADLS1
421
                LD HL,BUF_512
422
                RET
423
 
1186 savelij 424
LOADLS1         LD (FATVAR.NumSec2Buf),DE
425
                LD (FATVAR.NumSec2Buf + 2),BC
507 savelij 426
                LD HL,BUF_512
427
                PUSH HL
573 savelij 428
                LD A,1
507 savelij 429
                CALL TO_DRV
585 savelij 430
                DB _DEV_READ
507 savelij 431
                AND A
432
                JP NZ,ERR_DRV
433
                POP HL
434
                RET
435
 
961 savelij 436
; ஢ઠ   㦥 㦥 ᥪ
1186 savelij 437
CPNUMSC         LD HL,FATVAR.NumSec2Buf
507 savelij 438
                LD A,(HL)
439
                INC HL
440
                CP E
441
                RET NZ
442
                LD A,(HL)
443
                INC HL
444
                CP D
445
                RET NZ
446
                LD A,(HL)
447
                INC HL
448
                CP C
449
                RET NZ
450
                LD A,(HL)
451
                CP B
452
                RET
453
 
1028 savelij 454
; ஢ઠ  ᫥ 
1186 savelij 455
LST_CLS         LD A,(FATVAR.FATType)           ; 﫨 ⨯ FAT
507 savelij 456
                AND A
1186 savelij 457
                JR NZ,.L1
1028 savelij 458
                LD HL,0x0FF7                    ;  FAT12
573 savelij 459
                SBC HL,DE
460
                RET
507 savelij 461
 
1186 savelij 462
.L1             DEC A
463
                JR NZ,.L2
1028 savelij 464
                LD HL,0xFFF7                    ;  FAT16
573 savelij 465
                SBC HL,DE
507 savelij 466
                RET
467
 
1186 savelij 468
.L2             LD HL,0x0FFF
573 savelij 469
                SBC HL,BC
470
                RET NZ
1028 savelij 471
                LD HL,0xFFF7
573 savelij 472
                SBC HL,DE
473
                RET
474
 
1028 savelij 475
;  ⥫ ⥪饣 䠩
573 savelij 476
READ_DIR        LD A,IYL
477
                AND A
1186 savelij 478
                JR NZ,.L1
573 savelij 479
                PUSH IY
480
                LD IYL,INTERNAL
481
                PUSH HL
482
                LD HL,(RREG_C)
1186 savelij 483
                LD (FATVAR.TEK_ZAP),HL
484
                LD HL,.L3
573 savelij 485
                EX (SP),HL
1186 savelij 486
.L1             LD E,0                          ;  䫠 ।饣 䠩
487
                LD BC,(FATVAR.TEK_ZAP)          ; ⥪騩  ⥫
507 savelij 488
                LD A,B
489
                OR C
1186 savelij 490
                JR Z,.GETRZAP                   ; ᫨  =0,  ।騩   ஢塞
1028 savelij 491
                PUSH BC                         ; ࠭ ⥪騩 
492
                DEC BC                          ; 㦭 ஢ ।騩 
1186 savelij 493
                CALL .GETRZAP                   ; ஢塞
1028 savelij 494
                POP BC                          ; 㫨 ⥪騩 
495
                LD E,A                          ;  ।饣 ⥫ 㦥 ⮫쪮 䫠 
1186 savelij 496
.GETRZAP        PUSH DE
1028 savelij 497
                CALL RDDIRSC                    ; ⠥ ᥪ  ⥪騬 ஬
498
                POP DE                          ; 㫨 ॣ E
507 savelij 499
                INC A
1028 savelij 500
                LD A,E                          ; 㫨 稥/⢨  
501
                RET Z                           ; 室 ᫨ 뫥⥫  । 饩 
507 savelij 502
                EX AF,AF'                      
1186 savelij 503
                LD A,C
504
                AND %00001111                   ; 稫  ⥫  㦥 ᥪ 
507 savelij 505
                LD E,A
506
                LD D,0
507
                EX DE,HL
508
                ADD HL,HL
509
                ADD HL,HL
510
                ADD HL,HL
511
                ADD HL,HL
512
                ADD HL,HL
1028 savelij 513
                ADD HL,DE                       ; ᫨  ࠭ ⥫
1186 savelij 514
                LD DE,_DIR_Attr
515
                LD A,(HL)                       ; 﫨   
507 savelij 516
                EX DE,HL
517
                ADD HL,DE
1186 savelij 518
                LD L,(HL)                       ; 﫨 䫠  ⥪饣 ⥫
1028 savelij 519
                LD H,A                          ;  䫠  ⮣ ⥫
507 savelij 520
                EX DE,HL
1028 savelij 521
                CALL CP_TWOT                    ; ஢ઠ  稥   ".." 
522
                LD D,0                          ; 㤥 室  ४
1186 savelij 523
                JR NZ,.L2
1028 savelij 524
                LD D,0x80                       ; 㤥 室  । ४
1186 savelij 525
.L2             EX AF,AF'
526
                CP M_DIR_AttrLongName           ; ஢塞 䫠  ।饣 ⥫
1028 savelij 527
                LD A,E                          ; 﫨 䫠  ⥪饣 ⥫
528
                LD E,D                          ; ⠢ ࠢ   
507 savelij 529
                RET NZ
1028 savelij 530
                INC E                           ; ⠭   
507 savelij 531
                RET
532
 
1186 savelij 533
.L3             PUSH AF
573 savelij 534
                PUSH HL
535
                PUSH DE
1186 savelij 536
                LD DE,CPU2
573 savelij 537
                ADD HL,DE
538
                LD DE,(RREG_L)
1028 savelij 539
                LD BC,0x20
573 savelij 540
                CALL LDIR_BYTES
541
                POP DE
542
                POP HL
543
                POP AF
544
                POP IY
545
                RET
546
 
961 savelij 547
; ⥭ ᥪ DIR   BC
548
;  室: A = 0xFF - 室  । DIR
507 savelij 549
RDDIRSC         PUSH BC
550
                LD D,B
551
                LD E,C
552
                LD BC,0
1028 savelij 553
                LD A,0x10
507 savelij 554
                CALL BCDE_A
555
                LD A,E
556
                PUSH AF
1186 savelij 557
                LD A,(FATVAR.SecPerClus)
507 savelij 558
                PUSH AF
559
                CALL BCDE_A
1186 savelij 560
                LD HL,BUF_DIRCLS
507 savelij 561
                EX DE,HL
562
                ADD HL,HL
563
                ADD HL,HL
564
                ADD HL,DE
1186 savelij 565
                CALL RD_DWORD
507 savelij 566
                BIT 7,B
567
                JR Z,RDDIRS3
568
                POP BC
569
                POP BC
570
                POP BC
571
                XOR A
572
                DEC A
573
                RET
574
 
575
RDDIRS3         CALL REALSEC
576
                POP AF
577
                DEC A
578
                LD L,A
579
                POP AF
580
                AND L
581
                LD L,A
582
                LD H,0
583
                ADD HL,DE
584
                EX DE,HL
585
                LD HL,0
586
                ADC HL,BC
587
                LD B,H
588
                LD C,L
589
                CALL LOADLST
590
                POP BC
591
                XOR A
592
                RET
593
 
1028 savelij 594
; ஢ઠ  1 
507 savelij 595
CP_ONET         LD A,(HL)
1186 savelij 596
                CP '.'
507 savelij 597
                RET NZ
598
                INC HL
599
                LD A,(HL)
600
                DEC HL
1186 savelij 601
                CP ' '
507 savelij 602
                RET NZ
603
                XOR A
604
                RET
605
 
1028 savelij 606
; ஢ઠ  2 窨
507 savelij 607
CP_TWOT         LD A,(HL)
1186 savelij 608
                CP '.'
507 savelij 609
                RET NZ
610
                INC HL
611
                LD A,(HL)
612
                DEC HL
1186 savelij 613
                CP '.'
507 savelij 614
                RET NZ
615
                XOR A
616
                RET
617
 
1186 savelij 618
EPOS_FILES      LD HL,(FATVAR.TEK_ZAP)
573 savelij 619
                LD (RREG_C),HL
620
                RET
621
 
622
POS_FILES       LD D,A
623
                LD A,IYL
624
                LD IYL,INTERNAL
625
                AND A
626
                LD A,D
627
                JR NZ,POSITFILE1
628
                LD HL,EPOS_FILES
629
                PUSH HL
630
                LD A,(RREG_A)
631
                LD BC,(RREG_C)
961 savelij 632
POSITFILE1      CP LOW ((ENDTPOS - TPOSITF) / 2)
507 savelij 633
                RET NC
634
                ADD A,A
635
                LD DE,TPOSITF
636
                LD L,A
637
                LD H,0
638
                ADD HL,DE
639
                LD E,(HL)
640
                INC HL
641
                LD D,(HL)
642
                EX DE,HL
643
                JP (HL)
644
 
1028 savelij 645
TPOSITF         DW POSTF00                      ; ࠭ ⥪饩 樨 䠩
646
                DW POSTF01                      ; ⠭ ⥪饩 樨 䠩
647
                DW POSTF02                      ;  ⥪饩 樨  0   ࢮ "쭮" 
648
                DW POSTF03                      ; ६  "B" 䠩 
649
                DW POSTF04                      ; ६  "B" 䠩 ।
650
                DW POSTF05                      ;  ⢠ "" ᥩ
651
                DW POSTF06                      ; ⠭  "쭮"   "BC"
652
                DW POSTF07                      ;   "BC" ⥪騩  "쭮" 
507 savelij 653
ENDTPOS
654
 
1028 savelij 655
; ࠭ ⥪饩 樨 䠩
1186 savelij 656
POSTF00         LD HL,(FATVAR.TEK_ZAP)
657
                LD (FATVAR.SAVEZAP),HL
507 savelij 658
                RET
659
 
1028 savelij 660
; ⠭ ⥪饩 樨 䠩
1186 savelij 661
POSTF01         LD HL,(FATVAR.SAVEZAP)
662
                LD (FATVAR.TEK_ZAP),HL
507 savelij 663
                RET
664
 
1028 savelij 665
; ६  "B" 䠩 
507 savelij 666
POSTF03         LD A,B
667
                AND A
668
                RET Z
961 savelij 669
.L1             PUSH BC
507 savelij 670
                CALL PRVLEGZ
671
                POP BC
961 savelij 672
                DJNZ .L1
507 savelij 673
                RET
674
 
1028 savelij 675
; ६  "B" 䠩 ।
507 savelij 676
POSTF04         LD A,B
677
                AND A
678
                RET Z
961 savelij 679
.L1             PUSH BC
507 savelij 680
                CALL NXTLEGZ
681
                POP BC
961 savelij 682
                DJNZ .L1
507 savelij 683
                RET
684
 
1028 savelij 685
;  ⢠ "" ᥩ
507 savelij 686
POSTF05         LD BC,0
687
                PUSH BC
688
                EXX
689
                POP BC
690
                EXX
691
                CALL RDDIRSC
961 savelij 692
                LD DE,_DIR_StructSize
693
.L4             LD A,(HL)
1186 savelij 694
                CP '.'
961 savelij 695
                JR NZ,.L5
507 savelij 696
                INC HL
697
                LD A,(HL)
698
                DEC HL
1186 savelij 699
                CP '.'
961 savelij 700
                JR Z,.L5
507 savelij 701
                INC BC
702
                ADD HL,DE
961 savelij 703
                JR .L4
507 savelij 704
 
961 savelij 705
.L1             INC BC
507 savelij 706
                ADD HL,DE
961 savelij 707
.L5             LD A,H
708
                CP HIGH (BUF_512) + 2
709
                JR NZ,.L2
507 savelij 710
                CALL RDDIRSC
711
                LD D,0
712
                AND A
961 savelij 713
                JR Z,.L2
714
                CALL .L3
507 savelij 715
                DEC A
716
                RET
717
 
961 savelij 718
.L2             LD E,_DIR_Attr
507 savelij 719
                ADD HL,DE
720
                LD A,(HL)
721
                AND A
722
                SBC HL,DE
961 savelij 723
                LD E,_DIR_StructSize
1186 savelij 724
                CP M_DIR_AttrLongName           ;  ?
961 savelij 725
                JR Z,.L1
1186 savelij 726
                CP M_DIR_VolumeID               ;  ࠧ?
961 savelij 727
                JR Z,.L1
507 savelij 728
                LD A,(HL)
1028 savelij 729
                CP 0xE5                         ; 㤠 䠩?
961 savelij 730
                JR Z,.L1
507 savelij 731
                AND A
961 savelij 732
                JR Z,.L3
507 savelij 733
                EXX
734
                INC BC
735
                EXX
961 savelij 736
                JR .L1
507 savelij 737
 
961 savelij 738
.L3             LD D,B
507 savelij 739
                LD E,C
740
                EXX
741
                PUSH BC
742
                EXX
743
                POP BC
744
                XOR A
745
                RET
746
 
1028 savelij 747
; ⠭  "쭮"   "BC"
1186 savelij 748
POSTF06         LD (FATVAR.TEK_ZAP),BC
507 savelij 749
                RET
750
 
1028 savelij 751
;   "BC" ⥪騩  "쭮" 
1186 savelij 752
POSTF07         LD BC,(FATVAR.TEK_ZAP)
507 savelij 753
                RET
754
 
755
CPTEKZP         CALL RDDIRSC
756
                RET M
757
                LD A,C
1028 savelij 758
                AND 0x0F
507 savelij 759
                LD L,A
760
                LD H,0
761
                LD DE,BUF_512
762
                ADD HL,HL
763
                ADD HL,HL
764
                ADD HL,HL
765
                ADD HL,HL
766
                ADD HL,HL
767
                ADD HL,DE
1186 savelij 768
                LD DE,_DIR_Attr
507 savelij 769
                ADD HL,DE
770
                LD A,(HL)
771
                SBC HL,DE
772
                LD E,(HL)
773
                AND A
774
                RET
775
 
961 savelij 776
;  ⥪饩 樨  0   ࢮ "쭮" 
507 savelij 777
POSTF02         LD BC,0
1186 savelij 778
                LD (FATVAR.TEK_ZAP),BC
507 savelij 779
                CALL RDDIRSC
780
                CALL CP_ONET
1186 savelij 781
                JR Z,NXTLEGZ.L1
507 savelij 782
                LD A,(HL)
783
                AND A
784
                RET Z
1186 savelij 785
                JR NXTLEGZ.L2
507 savelij 786
 
1186 savelij 787
NXTLEGZ         LD BC,(FATVAR.TEK_ZAP)
788
.L1             INC BC
789
.L2             CALL CPTEKZP
1028 savelij 790
                CP 0xFF
507 savelij 791
                RET Z
1186 savelij 792
                CP M_DIR_AttrLongName           ;  ?
793
                JR Z,.L1
794
                CP M_DIR_VolumeID               ;  ࠧ?
795
                JR Z,.L1
507 savelij 796
                LD A,E
797
                AND A
798
                RET Z
1028 savelij 799
                CP 0xE5
1186 savelij 800
                JR Z,.L1
801
                LD (FATVAR.TEK_ZAP),BC
507 savelij 802
                RET
803
 
1186 savelij 804
PRVLEGZ         LD BC,(FATVAR.TEK_ZAP)
507 savelij 805
                CALL CPTEKZP
806
                CALL CP_TWOT
807
                RET Z
1186 savelij 808
.L1             DEC BC
507 savelij 809
                CALL CPTEKZP
1186 savelij 810
                CP M_DIR_AttrLongName           ;  ?
811
                JR Z,.L1
812
                CP M_DIR_VolumeID               ;  ࠧ?
813
                JR Z,.L1
507 savelij 814
                LD A,E
1028 savelij 815
                CP 0xE5
1186 savelij 816
                JR Z,.L1
817
                LD (FATVAR.TEK_ZAP),BC
507 savelij 818
                RET
819
 
1186 savelij 820
WR_DWORD        LD (HL),E
507 savelij 821
                INC HL
822
                LD (HL),D
823
                INC HL
824
                LD (HL),C
825
                INC HL
826
                LD (HL),B
827
                INC HL
828
                RET
829
 
1186 savelij 830
RD_DWORD        LD E,(HL)
507 savelij 831
                INC HL
832
                LD D,(HL)
833
                INC HL
834
                LD C,(HL)
835
                INC HL
836
                LD B,(HL)
837
                INC HL
838
                RET
839
 
573 savelij 840
BCDE200         LD E,D
841
                LD D,C
842
                LD C,B
843
                LD B,0
844
                LD A,2
845
                JR BCDE_A
846
 
1028 savelij 847
; BCDE >> A = BCDE
573 savelij 848
BCDE_A1         SRL B
849
                RR C
850
                RR D
851
                RR E
852
BCDE_A          RRCA
853
                JR NC,BCDE_A1
854
                RET
855
 
1028 savelij 856
; BCDE - (ADR) = BCDE
573 savelij 857
HLBCDEM         LD A,E
858
                SUB (HL)
507 savelij 859
                INC HL
573 savelij 860
                LD E,A
861
                LD A,D
862
                SBC A,(HL)
507 savelij 863
                INC HL
573 savelij 864
                LD D,A
865
                LD A,C
866
                SBC A,(HL)
507 savelij 867
                INC HL
573 savelij 868
                LD C,A
869
                LD A,B
870
                SBC A,(HL)
871
                LD B,A
872
                RET
873
 
1028 savelij 874
; (ADR) - BCDE = BCDE
573 savelij 875
BCDEHLM         LD A,(HL)
507 savelij 876
                INC HL
573 savelij 877
                SUB E
878
                LD E,A
879
                LD A,(HL)
507 savelij 880
                INC HL
573 savelij 881
                SBC A,D
882
                LD D,A
883
                LD A,(HL)
507 savelij 884
                INC HL
573 savelij 885
                SBC A,C
886
                LD C,A
887
                LD A,(HL)
888
                SBC A,B
889
                LD B,A
890
                RET
507 savelij 891
 
1028 savelij 892
; (ADR) + BCDE = BCDE
573 savelij 893
BCDEHLP         LD A,(HL)
894
                INC HL
895
                ADD A,E
896
                LD E,A
897
                LD A,(HL)
898
                INC HL
899
                ADC A,D
900
                LD D,A
901
                LD A,(HL)
902
                INC HL
903
                ADC A,C
904
                LD C,A
905
                LD A,(HL)
906
                ADC A,B
907
                LD B,A
908
                RET
909
 
1028 savelij 910
; HLDE + BC = HLDE
573 savelij 911
HLDEPBC         EX DE,HL
912
                ADD HL,BC
913
                EX DE,HL
507 savelij 914
                LD BC,0
573 savelij 915
                ADC HL,BC
916
                RET
507 savelij 917
 
1028 savelij 918
INIT_PATH
1186 savelij 919
        EVOPORT WIN_P1,RAM_MOUNTER
920
                LD A,(DEVMAN_VARS.SETDVOL)
573 savelij 921
                LD D,A
1186 savelij 922
                ADD A,HIGH (BUF_CURRPATH + CPU1) + 4
573 savelij 923
                LD H,A
924
                LD L,0
1186 savelij 925
                LD A,'E'
573 savelij 926
                ADD A,D
927
                LD (HL),A
928
                INC L
1186 savelij 929
                LD (HL),':'
573 savelij 930
                INC L
1186 savelij 931
                LD (HL),'/'
573 savelij 932
                INC L
933
                LD (HL),0
934
                INC L
935
                LD A,L
1028 savelij 936
                LD L,0xFF
573 savelij 937
                LD (HL),A
938
                RET
507 savelij 939
 
1028 savelij 940
RENEW_PATH
1186 savelij 941
        EVOPORT WIN_P1,RAM_MOUNTER
573 savelij 942
                BIT 7,E
943
                JR NZ,MINUS_PATH
1028 savelij 944
;  ४ਨ  ⥪饬  (室  ४)
507 savelij 945
                EX DE,HL
1186 savelij 946
                LD A,(DEVMAN_VARS.SETDVOL)
947
                ADD A,HIGH (BUF_CURRPATH + CPU1) + 4
573 savelij 948
                LD H,A
1028 savelij 949
                LD L,0xFF
573 savelij 950
                LD L,(HL)
507 savelij 951
                EX DE,HL
573 savelij 952
                DEC DE
953
                LD BC,8
954
                LDIR
955
                LD B,8
1186 savelij 956
.L1             DEC DE
573 savelij 957
                LD A,(DE)
958
                INC DE
1186 savelij 959
                CP ' '
960
                JR NZ,.L2
573 savelij 961
                DEC DE
1186 savelij 962
                DJNZ .L1
963
.L2             LD A,(HL)
964
                CP ' '
965
                JR Z,.L4
966
                LD A,'.'
573 savelij 967
                LD (DE),A
968
                INC DE
969
                LD BC,3
970
                LDIR
971
                LD B,3
1186 savelij 972
.L3             DEC DE
573 savelij 973
                LD A,(DE)
974
                INC DE
1186 savelij 975
                CP ' '
976
                JR NZ,.L4
573 savelij 977
                DEC DE
1186 savelij 978
                DJNZ .L3
979
.L4             EX DE,HL
980
                LD (HL),'/'
573 savelij 981
                INC L
982
                LD (HL),0
983
                INC L
984
                LD A,L
1028 savelij 985
                LD L,0xFF
573 savelij 986
                LD (HL),A
987
                RET
507 savelij 988
 
1028 savelij 989
; 㪮祭 ⥪饣  (室  । ४)
1186 savelij 990
MINUS_PATH      LD A,(DEVMAN_VARS.SETDVOL)
991
                ADD A,HIGH (BUF_CURRPATH + CPU1) + 4
573 savelij 992
                LD H,A
1028 savelij 993
                LD L,0xFF
573 savelij 994
                LD L,(HL)
995
                DEC L
996
                DEC L
1186 savelij 997
.L1             DEC L
573 savelij 998
                LD A,(HL)
1186 savelij 999
                CP '/'
1000
                JR NZ,.L1
573 savelij 1001
                INC L
1002
                LD (HL),0
1003
                INC L
1004
                LD A,L
1028 savelij 1005
                LD L,0xFF
573 savelij 1006
                LD (HL),A
1007
                RET
507 savelij 1008
 
1028 savelij 1009
; 祭 ⥪饣 
1010
GET_PATH
1186 savelij 1011
        EVOPORT WIN_P1,RAM_MOUNTER
585 savelij 1012
                LD A,IYL
1013
                AND A
1186 savelij 1014
                JR NZ,.L1
1015
                LD A,(DEVMAN_VARS.SETDVOL)
573 savelij 1016
                LD D,A
1186 savelij 1017
                ADD A,HIGH (BUF_CURRPATH+CPU1)+4
573 savelij 1018
                LD H,A
1028 savelij 1019
                LD L,0xFF
573 savelij 1020
                LD A,(HL)
1186 savelij 1021
                LD DE,BUF_MOVE256
1022
                LD BC,BUF_MOVE256_Size
573 savelij 1023
                LD L,C
1024
                LDIR
1028 savelij 1025
                LD C,A                          ; BC=᪮쪮  ७    
1186 savelij 1026
                LD A,HIGH (CPU2) - 1
573 savelij 1027
                ADD A,D
1028
                LD H,A
1028 savelij 1029
                LD DE,(RREG_L)                  ; 㤠 ७ 
573 savelij 1030
                JP LDIR_BYTES
1031
 
1186 savelij 1032
.L1             PUSH HL
585 savelij 1033
                PUSH HL
1186 savelij 1034
                LD A,(DEVMAN_VARS.SETDVOL)
585 savelij 1035
                LD D,A
1186 savelij 1036
                ADD A,HIGH (BUF_CURRPATH + CPU1) + 4
585 savelij 1037
                LD H,A
1028 savelij 1038
                LD L,0xFF
585 savelij 1039
                LD A,(HL)
1040
                POP DE
1028 savelij 1041
                LD BC,0x100
585 savelij 1042
                LD L,C
1043
                LDIR
1044
                POP HL
1045
                RET
1046
 
1028 savelij 1047
; ⤠ ⪮  䠩, ᫨  
507 savelij 1048
NO_LNG          POP DE
1049
                LD BC,8
1050
                LDIR
573 savelij 1051
                EX DE,HL
1186 savelij 1052
.L1             DEC HL
507 savelij 1053
                LD A,(HL)
1186 savelij 1054
                CP ' '
1055
                JR Z,.L1
573 savelij 1056
                INC HL
1057
                LD A,(DE)
1058
                EX DE,HL
1186 savelij 1059
                CP ' '
1060
                JR Z,.L2
507 savelij 1061
                EX DE,HL
1186 savelij 1062
                LD (HL),'.'
507 savelij 1063
                INC HL
1064
                EX DE,HL
1065
                LDI
1066
                LDI
1067
                LDI
1186 savelij 1068
.L2             EX DE,HL
507 savelij 1069
                LD (HL),0
573 savelij 1070
                LD A,L
1071
                LD (RREG_A),A
507 savelij 1072
                POP HL
1073
                RET
1074
 
1186 savelij 1075
MOVE_LONGNAME   POP IY
1076
                LD DE,CPU2
573 savelij 1077
                ADD HL,DE
1078
                LD DE,(RREG_L)
1028 savelij 1079
                LD BC,0x100
573 savelij 1080
                JP LDIR_BYTES
1081
 
1028 savelij 1082
; ⤠   䠩
573 savelij 1083
GET_LONGNAME    LD A,IYL
1084
                AND A
1186 savelij 1085
                JR NZ,.L1
573 savelij 1086
                PUSH IY
1087
                LD IYL,INTERNAL
1186 savelij 1088
                LD HL,MOVE_LONGNAME
507 savelij 1089
                PUSH HL
1186 savelij 1090
                LD HL,BUF_MOVE256
1091
.L1             PUSH HL
573 savelij 1092
                PUSH HL
1093
                CALL READ_DIR
507 savelij 1094
                BIT 0,E
1095
                JR Z,NO_LNG
1096
                EXX
1097
                LD C,0
1098
                EXX
1186 savelij 1099
.L2             DEC BC
1100
                CALL READ_DIR.GETRZAP
507 savelij 1101
                LD A,(HL)
1102
                INC HL
1103
                EXX
1104
                BIT 6,C
1105
                POP HL
1186 savelij 1106
                JR NZ,.L4
507 savelij 1107
                LD C,A
1108
                EXX
1109
                LD A,5
1186 savelij 1110
                CALL .L5
507 savelij 1111
                AND A
1186 savelij 1112
                JR Z,.L3
507 savelij 1113
                INC HL
1114
                INC HL
1115
                INC HL
1116
                LD A,6
1186 savelij 1117
                CALL .L5
507 savelij 1118
                AND A
1186 savelij 1119
                JR Z,.L3
507 savelij 1120
                INC HL
1121
                INC HL
1122
                LD A,2
1186 savelij 1123
                CALL .L5
507 savelij 1124
                AND A
1186 savelij 1125
                JR Z,.L3
507 savelij 1126
                EXX
1127
                PUSH HL
1128
                EXX
1186 savelij 1129
                JR .L2
507 savelij 1130
 
1186 savelij 1131
.L3             EXX
1132
.L4             LD (HL),0
573 savelij 1133
                LD A,L
1134
                LD (RREG_A),A
507 savelij 1135
                EXX
1136
                POP HL
1137
                RET
1138
 
1186 savelij 1139
.L5             EXX
507 savelij 1140
                LD B,A
1141
                EXX
1186 savelij 1142
.L6             LD D,(HL)
507 savelij 1143
                INC HL
1144
                LD E,(HL)
1145
                INC HL
1146
                LD A,D
1147
                OR E
1148
                RET Z
1149
                LD A,E
1150
                AND A
1186 savelij 1151
                JR NZ,.L7
507 savelij 1152
                LD A,D
1028 savelij 1153
                CP 0x80
1186 savelij 1154
                JR C,.L10
1028 savelij 1155
                LD D,0x5F
1186 savelij 1156
                JR .L10
507 savelij 1157
 
1186 savelij 1158
.L7             CP 4
1028 savelij 1159
                LD A,0x5F
1186 savelij 1160
                JR NZ,.L10
507 savelij 1161
                LD A,D
1028 savelij 1162
                LD E,0xEF
1163
                LD D,0x5F
507 savelij 1164
                CP 1
1186 savelij 1165
                JR Z,.L9
1028 savelij 1166
                LD E,0xA0
1167
                CP 0x51
1186 savelij 1168
                JR Z,.L9
1028 savelij 1169
                SUB 0x10
1170
                LD E,0x80
1186 savelij 1171
                JR NC,.L8
507 savelij 1172
                LD A,D
1186 savelij 1173
                JR .L10
507 savelij 1174
 
1186 savelij 1175
.L8             CP 0x30
1176
                JR C,.L9
1028 savelij 1177
                LD E,0xB0
1178
                CP 0x40
1186 savelij 1179
                JR C,.L9
507 savelij 1180
                LD A,D
1186 savelij 1181
                JR .L10
507 savelij 1182
 
1186 savelij 1183
.L9             ADD A,E
1184
.L10            EXX
507 savelij 1185
                LD (HL),A
1186
                INC HL
1187
                DEC B
1188
                EXX
1189
                RET Z
1186 savelij 1190
                JR .L6
507 savelij 1191
;401,410-44F,451
1192
 
1028 savelij 1193
;  室:  DE = ᯨ᮪ ७
1194
;            HL =  ⥫ 䠩
1186 savelij 1195
;  室:  A =  ७, 0 ᫨  
573 savelij 1196
CP_EXT          LD C,0
1186 savelij 1197
.L1             LD A,(DE)
507 savelij 1198
                AND A
1190 savelij 1199
                JR Z,.L3
507 savelij 1200
                INC C
1201
                PUSH DE
1202
                PUSH HL
1186 savelij 1203
                CALL .L2
507 savelij 1204
                POP HL
1205
                POP DE
573 savelij 1206
                LD A,C
1207
                RET Z
507 savelij 1208
                INC DE
1209
                INC DE
1210
                INC DE
1186 savelij 1211
                JR .L1
507 savelij 1212
 
1190 savelij 1213
.L3             DEC A
1214
                RET
1215
 
1186 savelij 1216
.L2             PUSH DE
1217
                LD DE,_DIR_Ext
507 savelij 1218
                ADD HL,DE
1219
                POP DE
1186 savelij 1220
                LD A,(DE)
507 savelij 1221
                CP (HL)
1222
                RET NZ
1223
                INC HL
1224
                INC DE
573 savelij 1225
                LD A,(DE)
1226
                CP (HL)
1227
                RET NZ
1228
                INC HL
1229
                INC DE
1230
                LD A,(DE)
1231
                CP (HL)
507 savelij 1232
                RET
1233
 
573 savelij 1234
FIND_FILEITEM   PUSH IY
1235
                LD IYL,INTERNAL
1236
                CALL INIRTSC
1186 savelij 1237
        EVOPORT WIN_P3,RAM_SORTFILES
628 savelij 1238
                LD HL,CPU3
1239
                LD DE,CPU3+1
1028 savelij 1240
                LD BC,0x3FFF
628 savelij 1241
                LD (HL),L
1242
                LDIR
507 savelij 1243
                LD HL,0
1186 savelij 1244
                LD (FATVAR.KOLFIND),HL          ;  䠩
585 savelij 1245
                LD HL,CPU3
1028 savelij 1246
                LD (ADR_SKLAD),HL               ;  ᪫஢
1247
                LD HL,CPU3+0x1000
1248
                LD (ADR_SKLAD_NAME),HL          ;  ᪫஢ ࢮ ᨬ     䫠
1249
                LD BC,0xFFFF
623 savelij 1250
                EXX
1251
                LD BC,0
1186 savelij 1252
                LD A,(FATVAR.CurrentNumLevDIR)
507 savelij 1253
                AND A
623 savelij 1254
                EXX
1186 savelij 1255
                JR NZ,.L1
1256
                LD A,(FATVAR.FATType)
623 savelij 1257
                CP 2
1186 savelij 1258
                JR NC,.L1
623 savelij 1259
                EXX
1186 savelij 1260
                LD BC,(FATVAR.ROOTZAP)
623 savelij 1261
                EXX
1186 savelij 1262
.L1             INC BC
623 savelij 1263
                CALL RDDIRSC
1264
                LD A,C
1028 savelij 1265
                AND 0x0F
623 savelij 1266
                ADD A,A
1190 savelij 1267
                ADD A,A
1268
                ADD A,A
1269
                ADD A,A
623 savelij 1270
                LD E,A
1271
                LD D,0
1272
                EX DE,HL
1273
                ADD HL,HL
1274
                ADD HL,DE
1275
                EXX
628 savelij 1276
                DEC BC
623 savelij 1277
                LD A,B
1278
                OR C
1279
                EXX
1186 savelij 1280
                JR Z,.L5
623 savelij 1281
                LD A,(HL)
1282
                AND A
1186 savelij 1283
                JR Z,.L5
1284
                CP '.'
1285
                JR NZ,.L2
623 savelij 1286
                INC HL
1287
                LD A,(HL)
1288
                DEC HL
1186 savelij 1289
                CP ' '
1290
                JR Z,.L1
1291
.L2             CP 0xE5                         ; ᫨ 㤠
1292
                JR Z,.L1                        ;  室  ᫥騩 ⥫
1293
                LD DE,_DIR_Attr                 ; 㦥 䫠  ⥫
1028 savelij 1294
                ADD HL,DE                       ; 稫  䫠 
1295
                LD A,(HL)                       ; 﫨 䫠 
573 savelij 1296
                SBC HL,DE
1186 savelij 1297
                CP M_DIR_AttrLongName           ;  ?
1298
                JR Z,.L1
1299
                AND M_DIR_Directory             ; ஢ઠ  䠩  ?
1300
                JR NZ,.L3
573 savelij 1301
                LD A,(EXT4FOUND)
1302
                AND A
1303
                PUSH DE
1304
                LD DE,EXT4FOUND
1305
                PUSH BC
1306
                CALL NZ,CP_EXT
1307
                POP BC
1308
                POP DE
1186 savelij 1309
                JR NZ,.L4
1310
.L3             EX DE,HL
573 savelij 1311
                ADD HL,DE
507 savelij 1312
                LD A,(HL)
573 savelij 1313
                EX AF,AF'
1028 savelij 1314
                LD HL,(ADR_SKLAD)               ;   ஢   
507 savelij 1315
                LD (HL),C
1316
                INC HL
1028 savelij 1317
                LD (HL),B                       ;     ⠡
507 savelij 1318
                INC HL
1319
                LD (ADR_SKLAD),HL
1186 savelij 1320
                LD HL,(FATVAR.KOLFIND)
1028 savelij 1321
                INC HL                          ; +1  䠩
1186 savelij 1322
                LD (FATVAR.KOLFIND),HL
573 savelij 1323
                LD HL,(ADR_SKLAD_NAME)
1324
                EX AF,AF'
1325
                LD (HL),A
1326
                INC HL
1327
                LD A,(DE)
1328
                LD (HL),A
1329
                INC HL
1330
                LD (ADR_SKLAD_NAME),HL
1186 savelij 1331
.L4             LD A,(ADR_SKLAD + 1)
1028 savelij 1332
                CP HIGH (CPU3) + 0x10
1186 savelij 1333
                JR C,.L1                        ;   2048 ஢/䠩  ⥪饩 ४ਨ
1334
.L5             LD HL,(FATVAR.KOLFIND)
573 savelij 1335
                POP IY
1336
                LD A,IYL
507 savelij 1337
                AND A
1186 savelij 1338
                JR NZ,.L6
1339
                LD A,RAM_SORTFILES
585 savelij 1340
                LD (RREG_A),A
573 savelij 1341
                LD (RREG_C),HL
1186 savelij 1342
.L6             LD (KOL_FOUNDED),HL
585 savelij 1343
                LD B,H
1344
                LD C,L
507 savelij 1345
                XOR A
1346
                RET
1347
 
573 savelij 1348
SET_MASK_EXT    LD A,(RREG_A)
507 savelij 1349
                AND A
1186 savelij 1350
                JR NZ,.L1
573 savelij 1351
                LD (EXT4FOUND),A
1352
                RET
1353
 
1186 savelij 1354
.L1             LD HL,(RREG_L)
1355
                LD DE,BUF_MOVE256 & 0x3FFF
1028 savelij 1356
                LD BC,0x10 * 3 + 1
573 savelij 1357
                CALL LDIR_BYTES
1186 savelij 1358
                LD HL,BUF_MOVE256
573 savelij 1359
                LD DE,EXT4FOUND
1028 savelij 1360
                LD BC,0x10FF
1186 savelij 1361
.L2             LD A,(HL)
573 savelij 1362
                AND A
1186 savelij 1363
                JR Z,.L3
573 savelij 1364
                LDI
1365
                LDI
1366
                LDI
1186 savelij 1367
                DJNZ .L2
1368
.L3             XOR A
573 savelij 1369
                LD (DE),A
1370
                RET
1371
 
1372
LD_FILE6        PUSH AF
1373
                POP HL
1374
                LD (RREG_F),HL
585 savelij 1375
LD_FILE8        EXX
1028 savelij 1376
                LD (SAVE_IY),DE                 ; IY
507 savelij 1377
                EXX
1378
                RET
1379
 
1028 savelij 1380
; IXL - L - ⢮ ᥪ஢  㧪
1381
; IXH - H - ࠧ 
1382
; IYL - E -
1383
; IYH - D - ᬥ饭  
573 savelij 1384
READ_FILE       EX AF,AF'
1204 savelij 1385
                LD A,0xFF
1386
                LD (FATVAR.NumSec2Buf),A
573 savelij 1387
                LD A,IYL
1388
                DEC A
1389
                JR Z,LD_FILE00
1390
                LD IYL,INT4EXT
507 savelij 1391
                LD HL,LD_FILE6
573 savelij 1392
                PUSH HL
1028 savelij 1393
                LD HL,(RREG_L)                  ;  㧪
573 savelij 1394
                EXX
1028 savelij 1395
                LD DE,(SAVE_IY)                 ; ᬥ饭  
1186 savelij 1396
                LD A,(FATVAR.SecPerClus)
1028 savelij 1397
                LD H,A                          ; ⢮ ᥪ஢  
573 savelij 1398
                LD A,(RREG_A)
1028 savelij 1399
                LD L,A                          ; ⢮ ᥪ஢  㧪
573 savelij 1400
                EXX
1401
                JR LD_FILE0
507 savelij 1402
 
573 savelij 1403
LD_FILE00       EXX
1028 savelij 1404
                LD DE,(SAVE_IY)                 ; ᬥ饭  
585 savelij 1405
                LD HL,LD_FILE8
1406
                PUSH HL
1186 savelij 1407
                LD A,(FATVAR.SecPerClus)        ; ⢮ ᥪ஢  
1028 savelij 1408
                LD H,A
573 savelij 1409
                EX AF,AF'
1028 savelij 1410
                LD L,A                          ; ⢮ ᥪ஢  㧪
573 savelij 1411
                EXX
1028 savelij 1412
; IXL - L - ⢮ ᥪ஢  㧪
1413
; IXH - H - ࠧ 
1414
; IYL - E -
1415
; IYH - D - ᬥ饭  
1186 savelij 1416
LD_FILE0        LD DE,(FATVAR.AFILCLS)
1417
                LD BC,(FATVAR.AFILCLS+2)        ; ⥪騩  
507 savelij 1418
                PUSH BC
1419
                PUSH DE
1420
                PUSH HL
1028 savelij 1421
                CALL REALSEC                    ; ॢ     ᥪ
573 savelij 1422
                EXX
1028 savelij 1423
                LD A,D                  ; IYH
573 savelij 1424
                EXX
507 savelij 1425
                LD L,A
1426
                LD H,0
1427
                ADD HL,DE
1428
                EX DE,HL
1429
                JR NC,LD_FILE1
1028 savelij 1430
                INC BC                          ; BCDE= ᥪ 㤠 㧨
573 savelij 1431
LD_FILE1        EXX
1028 savelij 1432
                LD A,L                  ; IXL
1433
                CP H                    ; IXH
507 savelij 1434
                JP C,LD_FILE2
1028 savelij 1435
                LD A,H                  ; IXH
1436
LD_FILE2        ADD A,D                 ; IYH
1437
                CP H                    ; IXH
1438
                LD A,L                  ; IXL
507 savelij 1439
                JP C,LD_FILE5
1028 savelij 1440
                LD A,H                  ; IXH
1441
                SUB D                   ; IYH
1442
LD_FILE5        LD E,A                  ; IYL,A ; ᪮쪮 ᥪ஢ ᥩ 㧨
573 savelij 1443
                EXX
1028 savelij 1444
                POP HL                          ; ⠭  㧪
573 savelij 1445
;               LD IYL,INT4EXT
507 savelij 1446
                CALL TO_DRV
585 savelij 1447
                DB _DEV_READ
1448
                LD A,IYL
1449
                DEC A
1450
                JR Z,LD_FILE7
573 savelij 1451
                LD (RREG_L),HL
585 savelij 1452
LD_FILE7        POP DE
1028 savelij 1453
                POP BC                          ; ⠭  
573 savelij 1454
                EXX
1028 savelij 1455
                LD A,D                  ; IYH
1456
                ADD A,E                 ; IYL
1457
                CP H                    ; IXH
507 savelij 1458
                JP C,LD_FILE3
1028 savelij 1459
                SUB H                   ; IXH
1460
LD_FILE3        LD D,A                  ; IYH,A
573 savelij 1461
                EXX
507 savelij 1462
                JP C,LD_FILE4
1028 savelij 1463
                PUSH HL                         ; ࠭  㧪
573 savelij 1464
                PUSH IY
1465
                LD IYL,INTERNAL
1028 savelij 1466
                CALL RDFATZP                    ; ⠫  ᫥饣 
573 savelij 1467
                POP IY
1186 savelij 1468
                LD (FATVAR.AFILCLS),DE
1469
                LD (FATVAR.AFILCLS + 2),BC
1028 savelij 1470
                CALL LST_CLS                    ; ஢ਫ,    ᫥ ?
1471
                POP HL                          ; ⠭  㧪
1472
                RET C                           ; ᫨ ᫥, 室
573 savelij 1473
LD_FILE4        EXX
1028 savelij 1474
                LD A,L                  ; IXL
1475
                SUB E                   ; IYL
573 savelij 1476
                EXX
507 savelij 1477
                RET Z
573 savelij 1478
                EXX
1028 savelij 1479
                LD L,A                  ; IXL,A
573 savelij 1480
                EXX
507 savelij 1481
                JP NZ,LD_FILE0
1482
                RET
1483
 
573 savelij 1484
OPEN_FILE       LD A,IYL
1485
                AND A
1486
                JR NZ,OPENFILE1
1487
                LD HL,EOPEN_FILE
1488
                PUSH HL
1489
OPENFILE1       PUSH IY
1490
                LD IYL,INTERNAL
1491
                CALL READ_DIR
1186 savelij 1492
                LD DE,FATVAR.FILE_SRC
961 savelij 1493
                LD BC,_DIR_StructSize
573 savelij 1494
                PUSH DE
1495
                LDIR
605 savelij 1496
                LD HL,0
1186 savelij 1497
                LD A,(FATVAR.FATType)
605 savelij 1498
                CP 2
1028 savelij 1499
                JR C,OPENFILE2                  ; ᫨   FAT32  訥 16  塞
1186 savelij 1500
                LD HL,(FATVAR.FILE_SRC + _DIR_FstClusHI)
1501
OPENFILE2       LD (FATVAR.AFILCLS + 2),HL
1502
                LD HL,(FATVAR.FILE_SRC + _DIR_FstClusLO)
1503
                LD (FATVAR.AFILCLS),HL
1504
                LD HL,(FATVAR.TEK_ZAP)
1505
                LD (FATVAR.NUM_FILE_SRC),HL
573 savelij 1506
                XOR A
1507
                LD H,A
1508
                LD L,A
1509
                LD (SAVE_IY),HL
1510
                POP HL
1511
                POP IY
1512
                RET
1513
 
1514
EOPEN_FILE      PUSH AF
1515
                POP HL
1516
                LD (RREG_F),HL
1517
                RET
1518
 
1186 savelij 1519
EFINDNAME       LD HL,(FATVAR.TEK_ZAP)
573 savelij 1520
                LD (RREG_C),HL
1521
                PUSH AF
1522
                POP HL
1523
                LD (RREG_F),HL
1524
                RET
1525
 
1526
FIND_NAME       LD A,IYL
1527
                AND A
1528
                JR NZ,FINDNAME01
1529
                PUSH HL
1530
                LD HL,(RREG_L)
1186 savelij 1531
                LD DE,BUF_MOVE256 & 0x3FFF
1028 savelij 1532
                LD BC,0x10
573 savelij 1533
                CALL LDIR_BYTES
1534
                LD HL,EFINDNAME
1535
                EX (SP),HL
1536
FINDNAME01      PUSH IY
1537
                LD IYL,INTERNAL
1186 savelij 1538
                LD HL,BUF_MOVE256
573 savelij 1539
                LD DE,FB_EXT
1028 savelij 1540
                LD BC,0x8FF
573 savelij 1541
                LD A,(HL)
1186 savelij 1542
                CP '.'
573 savelij 1543
                JR NZ,FINDNAME02
1544
                LDI
1545
                LDI
1546
                LD B,6
1547
FINDNAME02      LD A,(HL)
1186 savelij 1548
                CP '!'
573 savelij 1549
                JR C,FINDNAME03
1186 savelij 1550
                CP '.'
573 savelij 1551
                JR Z,FINDNAME12
1552
                LDI
1553
                DJNZ FINDNAME02
1554
                LD A,(HL)
1186 savelij 1555
                CP '!'
573 savelij 1556
                JR C,FINDNAME06
507 savelij 1557
                INC HL
573 savelij 1558
                JR FINDNAME06
1559
 
1560
FINDNAME12      INC HL
1186 savelij 1561
FINDNAME03      LD A,' '
573 savelij 1562
FINDNAME05      LD (DE),A
1563
                INC DE
1564
                DJNZ FINDNAME05
1565
FINDNAME06      LD B,3
1566
FINDNAME08      LD A,(HL)
1186 savelij 1567
                CP '!'
573 savelij 1568
                JR C,FINDNAME07
1569
                LDI
1570
                DJNZ FINDNAME08
1571
                CALL POSTF02
1572
                JR FINDNAME11
1573
 
1186 savelij 1574
FINDNAME07      LD A,' '
573 savelij 1575
FINDNAME09      LD (DE),A
1576
                INC DE
1577
                DJNZ FINDNAME09
1578
                CALL POSTF02
1579
                JR FINDNAME11
1580
 
1581
FINDNAME10      CALL NXTLEGZ
1582
FINDNAME11      PUSH HL
1583
                CALL CMP_NAME
1584
                POP HL
1585
                JR Z,FINDNAME13
1586
                LD A,(HL)
1587
                AND A
1588
                JR NZ,FINDNAME10
1589
                SCF
1590
FINDNAME13      POP IY
1591
                RET
1592
 
1593
CMP_NAME        LD DE,FB_EXT
1186 savelij 1594
ICMP_NAME       LD B,8 + 3
573 savelij 1595
CMP_NAME_B      LD A,(DE)
1186 savelij 1596
                CP 'a'
573 savelij 1597
                JR C,CMPNAME01
1186 savelij 1598
                CP 'z' + 1
573 savelij 1599
                JR NC,CMPNAME01
961 savelij 1600
                AND %11011111
573 savelij 1601
CMPNAME01       CP (HL)
1602
                RET NZ
1603
                INC DE
507 savelij 1604
                INC HL
573 savelij 1605
                DJNZ CMP_NAME_B
1606
                XOR A
1607
                RET
961 savelij 1608
 
1186 savelij 1609
; 宦  DIR
961 savelij 1610
ENTER_DIR       LD IYL,INTERNAL
1611
                CALL READ_DIR
1612
                PUSH AF
1613
                PUSH DE
1614
                PUSH HL
1615
                CALL RENEW_PATH
1616
                POP HL
1617
                POP DE
1618
                POP AF
1186 savelij 1619
                BIT B_DIR_Directory,A
961 savelij 1620
                EX AF,AF'
1621
                LD A,E
1622
                EX AF,AF'
1623
                LD E,A
1624
                LD D,(HL)
1625
                RET Z
1626
                EXX
1627
                EX AF,AF'
1628
                BIT 7,A
1186 savelij 1629
                JR Z,.L1
1630
; 室  ४ਨ
1631
                LD HL,FATVAR.CurrentNumLevDIR
961 savelij 1632
                LD A,(HL)
1633
                AND A
1634
                EXX
1635
                RET Z
1636
                EXX
1637
                DEC A
1638
                LD (HL),A
1639
                ADD A,A
1186 savelij 1640
                LD H,HIGH (BUF_DIRCEP)
961 savelij 1641
                LD L,A
1642
                LD A,(HL)
1643
                INC L
1644
                LD H,(HL)
1645
                LD L,A
1186 savelij 1646
                JR .L2
961 savelij 1647
 
1186 savelij 1648
; 室  ४
1649
.L1             LD HL,FATVAR.CurrentNumLevDIR
961 savelij 1650
                LD A,(HL)
1651
                INC A
1028 savelij 1652
                CP 0x10
961 savelij 1653
                EXX
1654
                RET Z
1655
                EXX
1656
                LD (HL),A
1657
                DEC A
1658
                ADD A,A
1186 savelij 1659
                LD H,HIGH (BUF_DIRCEP)
961 savelij 1660
                LD L,A
1186 savelij 1661
                LD BC,(FATVAR.TEK_ZAP)
961 savelij 1662
                LD (HL),C
1663
                INC L
1664
                LD (HL),B
1186 savelij 1665
.L2             EXX
961 savelij 1666
                PUSH DE
1667
                LD DE,_DIR_FstClusHI
1668
                ADD HL,DE
1669
                LD C,(HL)
1670
                INC HL
1671
                LD B,(HL)
1672
                LD E,5
1673
                ADD HL,DE
1674
                LD E,(HL)
1675
                INC HL
1676
                LD D,(HL)
1677
                LD A,B
1678
                OR C
1679
                OR D
1680
                OR E
1186 savelij 1681
                JR NZ,.L3
1682
                LD DE,(FATVAR.RootDIRCluster)
1683
                LD BC,(FATVAR.RootDIRCluster + 2)
1684
.L3             LD (FATVAR.CurrentDIRCluster),DE
1685
                LD (FATVAR.CurrentDIRCluster + 2),BC
961 savelij 1686
                POP DE
1687
INIT_TEKDIR     PUSH DE
1688
                PUSH IY
1689
                LD IYL,INTERNAL
1690
                CALL INIRTSC
1691
                POP IY
1692
                POP DE
1693
                RET
1186 savelij 1694
 
1695
STORE_CURRFATVARS
1696
                ADD A,HIGH (CPU1+BUF_ALLVOL)+4
1697
                LD HL,BUF_CURRFATVAR
1698
                LD D,A
1699
                LD E,0
1700
                LD BC,BUF_CURRFATVAR_Size
1701
                LDIR
1702
                RET
1703
 
1704
RESTORE_CURRFATVARS
1705
                ADD A,HIGH (CPU1+BUF_ALLVOL)+4
1706
                LD H,A
1707
                LD L,0
1708
                LD DE,BUF_CURRFATVAR
1709
                LD BC,BUF_CURRFATVAR_Size
1710
                LDIR
1711
                RET