Subversion Repositories pentevo

Rev

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

Rev Author Line No. Line
507 savelij 1
 
1028 savelij 2
; LAST UPDATE: 13.10.2022 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
 
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
21
ICOM_FAT1       LD (ERORDRV),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
 
41
ERR_DRV         LD SP,(ERORDRV)
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
62
                LD A,(SETDVOL)
63
                LD D,A
64
                LD L,A
65
                LD H,0
66
                ADD HL,HL
67
                ADD HL,HL
68
                ADD HL,HL
961 savelij 69
                LD BC,BUF_TABLVOL + 2
875 savelij 70
                ADD HL,BC
71
                LD A,(HL)
72
                LD HL,BUF_TABLVOL
73
                CALL INIT_FATVARS
961 savelij 74
                LD DE,(CurrentDIRCluster)
75
                LD BC,(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
90
                LD (NumSec2Buf + 2),HL
91
                LD (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
103
                CALL LOADZP
961 savelij 104
                LD (StartSecVol),DE
105
                LD (StartSecVol + 2),BC         ;  ࢮ ᥪ ࠧ
573 savelij 106
                CALL LOADLST
736 savelij 107
                CALL VALID_BOOTSEC
108
                AND A
109
                JR Z,RDFAT07
110
                SCF
111
                RET
112
 
1028 savelij 113
RDFAT07         LD A,(BUF_512 + _BPB_SecPerClus)
961 savelij 114
                LD (SecPerClus),A
115
                LD HL,(BUF_512 + _BPB_RsvdSecCnt)
116
                ADD HL,DE
117
                LD (NumSecFAT1),HL
118
                LD HL,0
1007 savelij 119
                ADC HL,BC
120
                LD (NumSecFAT1 + 2),HL
121
                LD HL,0
961 savelij 122
                LD DE,(BUF_512 + _BPB_FATSz16)
573 savelij 123
                LD A,D
124
                OR E
961 savelij 125
                JR NZ,RDFAT01                   ; ᫨  FAT12/16 (_BPB_FATSz16 == 0)
126
                LD DE,(BUF_512 + _BPB_FATSz32)
1028 savelij 127
                LD HL,(BUF_512 + _BPB_FATSz32 + 2)      ;  ६  ᬥ饭 +36
961 savelij 128
RDFAT01         LD (FATSize),DE
1028 savelij 129
                LD (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
1028 savelij 135
                JR NZ,.L1                       ; ᫨  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
961 savelij 139
.L1             LD (NumsSectorsVol + 2),HL
1028 savelij 140
                LD (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
147
                JR Z,RDFAT03
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
 
1028 savelij 155
RDFAT03         PUSH DE                         ; ROOTDIRSECTORS
1007 savelij 156
                LD HL,NumSecFAT1
157
                CALL LOADZP
961 savelij 158
                LD A,(BUF_512 + _BPB_NumFATs)
159
                LD (NumFATs),A
573 savelij 160
                DEC A
961 savelij 161
                JR Z,.L1
162
                LD HL,FATSize
163
                CALL BCDEHLP
164
                LD (NumSecFAT2),DE
165
                LD (NumSecFAT2 + 2),BC
166
.L1             LD HL,FATSize
167
                CALL BCDEHLP
168
                LD (NumSecRootDir),DE
169
                LD (NumSecRootDir + 2),BC
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
961 savelij 178
                LD (FirstSecData),DE
179
                LD (FirstSecData + 2),BC
180
                LD HL,NumsSectorsVol
181
                CALL BCDEHLM
182
                LD A,(SecPerClus)
183
                CALL BCDE_A
184
                LD (NumsClustersVol),DE
185
                LD (NumsClustersVol + 2),BC
573 savelij 186
 
961 savelij 187
                LD A,(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
961 savelij 196
                LD DE,(FATSize - 1)
197
                LD BC,(FATSize + 1)
198
                LD E,0                          ; BCDE = ⢮ ᥪ஢ * 0x100
199
                LD HL,NumsClustersVol           ; ⢮ ஢  FAT
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
1010 savelij 207
.L2             LD (FATType),A
573 savelij 208
 
961 savelij 209
;  FAT12/16 ROOT  = 0
210
;  FAT32 ६  ᬥ饭 +44
211
;  室: BCDE -  ROOTDIR 
1010 savelij 212
.L4             XOR A
961 savelij 213
                LD (TEK_LEV),A
214
                LD (BUF_PATH),A
215
                CALL INIT_PATH
216
                LD A,(FATType)
1010 savelij 217
                PUSH AF
736 savelij 218
                AND A
573 savelij 219
                LD DE,0
220
                LD B,D
221
                LD C,E
1028 savelij 222
                JR Z,.L3                        ; FAT12-NONE
573 savelij 223
                DEC A
1028 savelij 224
                JR Z,.L3                        ; FAT16
961 savelij 225
                LD DE,(BUF_512 + _BPB_RootClus)
1028 savelij 226
                LD BC,(BUF_512 + _BPB_RootClus + 2)     ; FAT32
1010 savelij 227
.L3             LD (CurrentDIRCluster),DE
961 savelij 228
                LD (CurrentDIRCluster + 2),BC   ;  ⥪饣 
229
                LD (RootDIRCluster),DE
230
                LD (RootDIRCluster + 2),BC      ;  ୥ 
1010 savelij 231
                POP AF
573 savelij 232
                RET
507 savelij 233
 
961 savelij 234
; ஢ઠ 0 ᥪ ࠧ
235
VALID_BOOTSEC   LD HL,(BUF_512 + _BPB_BytsPerSec)
236
                LD A,H
736 savelij 237
                SUB 2
961 savelij 238
                OR L
736 savelij 239
                JR NZ,VALID_BOOTSEC1
961 savelij 240
                LD HL,(BUF_512 + _BPB_SecPerClus)
241
                OR L
736 savelij 242
                JR Z,VALID_BOOTSEC1
243
                NEG
961 savelij 244
                AND L
245
                CP L
736 savelij 246
                JR NZ,VALID_BOOTSEC1
961 savelij 247
                LD A,(BUF_512 + _BPB_NumFATs)
736 savelij 248
                DEC A
249
                CP 7
250
                JR NC,VALID_BOOTSEC1
251
                XOR A
252
                RET
253
 
254
VALID_BOOTSEC1  OR IXH
255
                RET
256
 
961 savelij 257
; ନ஢ ⠡ ஢ DIR
258
;   ࢮ "쭮"   DIR
573 savelij 259
INIRTSC         PUSH AF
961 savelij 260
                LD HL,0xFFFF
261
                LD (NumSec2Buf + 2),HL
573 savelij 262
                LD HL,BUF_TDIRCLS
961 savelij 263
                LD DE,(CurrentDIRCluster)
264
                LD BC,(CurrentDIRCluster + 2)
573 savelij 265
                CALL SAVEZP
266
                LD A,D
267
                OR E
268
                OR B
269
                OR C
270
                JR Z,LASTCLS
271
NEXTCLS         PUSH HL
272
                CALL RDFATZP
273
                CALL LST_CLS
274
                POP HL
275
                JR C,LASTCLS
276
                CALL SAVEZP
277
                JR NEXTCLS
278
 
961 savelij 279
LASTCLS         LD BC,0xFFFF
573 savelij 280
                CALL SAVEZP
281
                CALL POSTF02
282
                POP AF
283
                RET
284
 
1028 savelij 285
; ⥭ ᫥饣  
961 savelij 286
RDFATZP         LD A,(FATType)
573 savelij 287
                AND A
288
                JR Z,RDFATS0
289
                DEC A
290
                JR Z,RDFATS1
291
                EX DE,HL
292
                ADD HL,HL
293
                EX DE,HL
294
                LD HL,0
295
                ADC HL,BC
1028 savelij 296
                ADD HL,BC                       ; HLDE = BCDE * 2
573 savelij 297
                LD A,E
298
                LD E,D
299
                LD D,L
300
                LD C,H
301
                LD B,0
302
                CALL RDFATS2
303
                INC HL
507 savelij 304
                LD C,(HL)
305
                INC HL
306
                LD B,(HL)
573 savelij 307
                RET
308
 
309
RDFATS1         LD BC,0
310
                LD A,E
311
                LD E,D
312
                LD D,C
313
RDFATS2         PUSH AF
314
                PUSH BC
961 savelij 315
                LD HL,NumSecFAT1
573 savelij 316
                CALL BCDEHLP
317
                CALL LOADLST
318
                POP BC
319
                POP AF
320
                LD E,A
321
                LD D,0
507 savelij 322
                ADD HL,DE
573 savelij 323
                ADD HL,DE
507 savelij 324
                LD E,(HL)
325
                INC HL
326
                LD D,(HL)
573 savelij 327
                RET
328
 
329
RDFATS0         LD H,D
330
                LD L,E
331
                ADD HL,HL
332
                ADD HL,DE
333
                SRL H
334
                RR L
335
                LD A,E
336
                LD E,H
337
                LD D,0
338
                LD B,D
339
                LD C,D
340
                SRL E
341
                PUSH AF
342
                PUSH HL
961 savelij 343
                LD DE,(NumSecFAT1)
344
                LD BC,(NumSecFAT1 + 2)
573 savelij 345
                CALL LOADLST
346
                POP BC
347
                LD A,B
348
                AND 1
349
                LD B,A
350
                ADD HL,BC
351
                LD B,(HL)
507 savelij 352
                INC HL
573 savelij 353
                LD A,H
354
                CP HIGH (BUF_512)+2
355
                JR NZ,RDFATS4
507 savelij 356
                PUSH BC
573 savelij 357
                LD BC,0
358
                INC DE
359
                CALL LOADLST
507 savelij 360
                POP BC
573 savelij 361
RDFATS4         POP AF
362
                LD D,(HL)
363
                LD E,B
364
                LD BC,0
365
                RRA
366
                JR NC,RDFATS3
961 savelij 367
        REPT 4
573 savelij 368
                SRL D
369
                RR E
961 savelij 370
        ENDM
573 savelij 371
RDFATS3         LD A,D
1028 savelij 372
                AND 0x0F
573 savelij 373
                LD D,A
374
                RET
375
 
961 savelij 376
; ᫥  ॠ쭮 ᥪ
377
;  室: BCDE =   FAT
378
;  室: BCDE =  ᥪ
573 savelij 379
REALSEC         LD A,B
380
                OR C
381
                OR D
382
                OR E
383
                JR NZ,REALSE1
961 savelij 384
                LD DE,(NumSecRootDir)
385
                LD BC,(NumSecRootDir + 2)
386
                RET
507 savelij 387
 
1028 savelij 388
REALSE1         LD HL,0xFFFE
573 savelij 389
                EX DE,HL
507 savelij 390
                ADD HL,DE
391
                EX DE,HL
573 savelij 392
                INC HL
1028 savelij 393
                ADC HL,BC                       ;  -2
961 savelij 394
                LD A,(SecPerClus)
573 savelij 395
                JR REALSE2
396
 
397
REALSE3         SLA E
398
                RL D
399
                RL L
400
                RL H
401
REALSE2         RRCA
1028 savelij 402
                JR NC,REALSE3                   ; 㬭  ࠧ 
507 savelij 403
                LD B,H
404
                LD C,L
961 savelij 405
                LD HL,FirstSecData
1028 savelij 406
                JP BCDEHLP                      ; ਡ ᬥ饭  砫 ࠧ
573 savelij 407
 
1028 savelij 408
; ࠭塞 ᥪ 㦥  
961 savelij 409
LSTSAVE         LD DE,(NumSec2Buf)
410
                LD BC,(NumSec2Buf + 2)
573 savelij 411
                LD HL,BUF_512
412
                LD A,1
413
                CALL TO_DRV
585 savelij 414
                DB _DEV_WRITE
573 savelij 415
                AND A
416
                JP NZ,ERR_DRV
507 savelij 417
                RET
418
 
1028 savelij 419
; 㦠 ᥪ  
507 savelij 420
LOADLST         CALL CPNUMSC
421
                JR NZ,LOADLS1
422
                LD HL,BUF_512
423
                RET
424
 
961 savelij 425
LOADLS1         LD (NumSec2Buf),DE
426
                LD (NumSec2Buf + 2),BC
507 savelij 427
                LD HL,BUF_512
428
                PUSH HL
573 savelij 429
                LD A,1
507 savelij 430
                CALL TO_DRV
585 savelij 431
                DB _DEV_READ
507 savelij 432
                AND A
433
                JP NZ,ERR_DRV
434
                POP HL
435
                RET
436
 
961 savelij 437
; ஢ઠ   㦥 㦥 ᥪ
438
CPNUMSC         LD HL,NumSec2Buf
507 savelij 439
                LD A,(HL)
440
                INC HL
441
                CP E
442
                RET NZ
443
                LD A,(HL)
444
                INC HL
445
                CP D
446
                RET NZ
447
                LD A,(HL)
448
                INC HL
449
                CP C
450
                RET NZ
451
                LD A,(HL)
452
                CP B
453
                RET
454
 
1028 savelij 455
; ஢ઠ  ᫥ 
456
LST_CLS         LD A,(FATType)                  ; 﫨 ⨯ FAT
507 savelij 457
                AND A
573 savelij 458
                JR NZ,LST_CL1
1028 savelij 459
                LD HL,0x0FF7                    ;  FAT12
573 savelij 460
                SBC HL,DE
461
                RET
507 savelij 462
 
573 savelij 463
LST_CL1         DEC A
464
                JR NZ,LST_CL2
1028 savelij 465
                LD HL,0xFFF7                    ;  FAT16
573 savelij 466
                SBC HL,DE
507 savelij 467
                RET
468
 
1028 savelij 469
LST_CL2         LD HL,0x0FFF
573 savelij 470
                SBC HL,BC
471
                RET NZ
1028 savelij 472
                LD HL,0xFFF7
573 savelij 473
                SBC HL,DE
474
                RET
475
 
1028 savelij 476
;  ⥫ ⥪饣 䠩
573 savelij 477
READ_DIR        LD A,IYL
478
                AND A
479
                JR NZ,GETFZA3
480
                PUSH IY
481
                LD IYL,INTERNAL
482
                PUSH HL
483
                LD HL,(RREG_C)
484
                LD (TEK_ZAP),HL
485
                LD HL,GETFZA4
486
                EX (SP),HL
1028 savelij 487
GETFZA3         LD BC,(TEK_ZAP)                 ; ⥪騩  ⥫
507 savelij 488
                LD A,B
489
                OR C
1028 savelij 490
                JR Z,GETRZAP                    ; ᫨  =0,  ।騩   ஢塞
491
                PUSH BC                         ; ࠭ ⥪騩 
492
                DEC BC                          ; 㦭 ஢ ।騩 
493
                CALL GETRZAP                    ; ஢塞
494
                POP BC                          ; 㫨 ⥪騩 
495
                LD E,A                          ;  ।饣 ⥫ 㦥 ⮫쪮 䫠 
507 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'                      
503
GETFZA1         LD A,C
1028 savelij 504
                AND 0x0F                        ; 稫  ⥫  㦥 ᥪ 
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                       ; ᫨  ࠭ ⥫
514
                LD DE,0x0B
515
                LD A,(HL)                       ; 﫨 䫠  ⥪饣 ⥫
507 savelij 516
                EX DE,HL
517
                ADD HL,DE
1028 savelij 518
                LD L,(HL)                       ; 﫨   
519
                LD H,A                          ;  䫠  ⮣ ⥫
507 savelij 520
                EX DE,HL
1028 savelij 521
                CALL CP_TWOT                    ; ஢ઠ  稥   ".." 
522
                LD D,0                          ; 㤥 室  ४
507 savelij 523
                JR NZ,GETFZA2
1028 savelij 524
                LD D,0x80                       ; 㤥 室  । ४
507 savelij 525
GETFZA2         EX AF,AF'
1028 savelij 526
                CP 0x0F                         ; ஢塞 䫠  ।饣 ⥫
527
                LD A,E                          ; 﫨 䫠  ⥪饣 ⥫
528
                LD E,D                          ; ⠢ ࠢ   
507 savelij 529
                RET NZ
1028 savelij 530
                INC E                           ; ⠭   
507 savelij 531
                RET
532
 
573 savelij 533
GETFZA4         PUSH AF
534
                PUSH HL
535
                PUSH DE
643 savelij 536
                LD DE,CPU6
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
961 savelij 557
                LD A,(SecPerClus)
507 savelij 558
                PUSH AF
559
                CALL BCDE_A
1028 savelij 560
                LD HL,BUF_TDIRCLS
507 savelij 561
                EX DE,HL
562
                ADD HL,HL
563
                ADD HL,HL
564
                ADD HL,DE
565
                CALL LOADZP
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)
573 savelij 596
                CP "."
507 savelij 597
                RET NZ
598
                INC HL
599
                LD A,(HL)
600
                DEC HL
573 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)
573 savelij 608
                CP "."
507 savelij 609
                RET NZ
610
                INC HL
611
                LD A,(HL)
612
                DEC HL
573 savelij 613
                CP "."
507 savelij 614
                RET NZ
615
                XOR A
616
                RET
617
 
573 savelij 618
EPOS_FILES      LD HL,(TEK_ZAP)
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
; ࠭ ⥪饩 樨 䠩
507 savelij 656
POSTF00         LD HL,(TEK_ZAP)
657
                LD (SAVEZAP),HL
658
                RET
659
 
1028 savelij 660
; ⠭ ⥪饩 樨 䠩
507 savelij 661
POSTF01         LD HL,(SAVEZAP)
662
                LD (TEK_ZAP),HL
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)
573 savelij 694
                CP "."
961 savelij 695
                JR NZ,.L5
507 savelij 696
                INC HL
697
                LD A,(HL)
698
                DEC HL
573 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
1028 savelij 724
                CP 0x0F                         ;  ?
961 savelij 725
                JR Z,.L1
1028 savelij 726
                CP 8                            ;  ࠧ?
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"
507 savelij 748
POSTF06         LD (TEK_ZAP),BC
749
                RET
750
 
1028 savelij 751
;   "BC" ⥪騩  "쭮" 
507 savelij 752
POSTF07         LD BC,(TEK_ZAP)
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
1028 savelij 768
                LD DE,0x0B
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
778
                LD (TEK_ZAP),BC
779
                CALL RDDIRSC
780
                CALL CP_ONET
781
                JR Z,NXTLEG1
782
                LD A,(HL)
783
                AND A
784
                RET Z
785
                JR NXTLEG1+1
786
 
787
NXTLEGZ         LD BC,(TEK_ZAP)
788
NXTLEG1         INC BC
789
                CALL CPTEKZP
1028 savelij 790
                CP 0xFF
507 savelij 791
                RET Z
1028 savelij 792
                CP 0x0F
507 savelij 793
                JR Z,NXTLEG1
794
                CP 8
795
                JR Z,NXTLEG1
796
                LD A,E
797
                AND A
798
                RET Z
1028 savelij 799
                CP 0xE5
507 savelij 800
                JR Z,NXTLEG1
801
                LD (TEK_ZAP),BC
802
                RET
803
 
804
PRVLEGZ         LD BC,(TEK_ZAP)
805
                CALL CPTEKZP
806
                CALL CP_TWOT
807
                RET Z
808
PRVLEG1         DEC BC
809
                CALL CPTEKZP
1028 savelij 810
                CP 0x0F
507 savelij 811
                JR Z,PRVLEG1
812
                CP 8
813
                JR Z,PRVLEG1
814
                LD A,E
1028 savelij 815
                CP 0xE5
507 savelij 816
                JR Z,PRVLEG1
817
                LD (TEK_ZAP),BC
818
                RET
819
 
820
SAVEZP          LD (HL),E
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
 
830
LOADZP          LD E,(HL)
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
919
        EVOPORT WIN_P5,RAM_MOUNTER
573 savelij 920
                LD A,(SETDVOL)
921
                LD D,A
961 savelij 922
                ADD A,HIGH (TEK_BUFPATH + CPU5) + 4
573 savelij 923
                LD H,A
924
                LD L,0
925
                LD A,"E"
926
                ADD A,D
927
                LD (HL),A
928
                INC L
929
                LD (HL),":"
930
                INC L
931
                LD (HL),"/"
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
941
        EVOPORT WIN_P5,RAM_MOUNTER
573 savelij 942
                BIT 7,E
943
                JR NZ,MINUS_PATH
1028 savelij 944
;  ४ਨ  ⥪饬  (室  ४)
507 savelij 945
                EX DE,HL
573 savelij 946
                LD A,(SETDVOL)
961 savelij 947
                ADD A,HIGH (TEK_BUFPATH + CPU5) + 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
956
RENEWPATH3      DEC DE
957
                LD A,(DE)
958
                INC DE
959
                CP " "
960
                JR NZ,RENEWPATH2
961
                DEC DE
962
                DJNZ RENEWPATH3
963
RENEWPATH2      LD A,(HL)
964
                CP " "
965
                JR Z,RENEWPATH4
966
                LD A,"."
967
                LD (DE),A
968
                INC DE
969
                LD BC,3
970
                LDIR
971
                LD B,3
972
RENEWPATH5      DEC DE
973
                LD A,(DE)
974
                INC DE
975
                CP " "
976
                JR NZ,RENEWPATH4
977
                DEC DE
978
                DJNZ RENEWPATH5
979
RENEWPATH4      EX DE,HL
980
                LD (HL),"/"
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
; 㪮祭 ⥪饣  (室  । ४)
573 savelij 990
MINUS_PATH      LD A,(SETDVOL)
961 savelij 991
                ADD A,HIGH (TEK_BUFPATH + CPU5) + 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
997
MINUS_PATH1     DEC L
998
                LD A,(HL)
999
                CP "/"
1000
                JR NZ,MINUS_PATH1
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
1011
        EVOPORT WIN_P5,RAM_MOUNTER
585 savelij 1012
                LD A,IYL
1013
                AND A
1014
                JR NZ,GETPATH1
573 savelij 1015
                LD A,(SETDVOL)
1016
                LD D,A
643 savelij 1017
                ADD A,HIGH (TEK_BUFPATH+CPU5)+4
573 savelij 1018
                LD H,A
1028 savelij 1019
                LD L,0xFF
573 savelij 1020
                LD A,(HL)
1021
                LD DE,BUF_256
1028 savelij 1022
                LD BC,0x100
573 savelij 1023
                LD L,C
1024
                LDIR
1028 savelij 1025
                LD C,A                          ; BC=᪮쪮  ७    
961 savelij 1026
                LD A,HIGH (CPU6) - 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
 
585 savelij 1032
GETPATH1        PUSH HL
1033
                PUSH HL
1034
                LD A,(SETDVOL)
1035
                LD D,A
961 savelij 1036
                ADD A,HIGH (TEK_BUFPATH + CPU5) + 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
1052
NO_LNG2         DEC HL
507 savelij 1053
                LD A,(HL)
573 savelij 1054
                CP " "
1055
                JR Z,NO_LNG2
1056
                INC HL
1057
                LD A,(DE)
1058
                EX DE,HL
1059
                CP " "
507 savelij 1060
                JR Z,NO_LNG1
1061
                EX DE,HL
573 savelij 1062
                LD (HL),"."
507 savelij 1063
                INC HL
1064
                EX DE,HL
1065
                LDI
1066
                LDI
1067
                LDI
1068
NO_LNG1         EX DE,HL
1069
                LD (HL),0
573 savelij 1070
                LD A,L
1071
                LD (RREG_A),A
507 savelij 1072
                POP HL
1073
                RET
1074
 
573 savelij 1075
GETLNG8         POP IY
643 savelij 1076
                LD DE,CPU6
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
1085
                JR NZ,GETLNG9
1086
                PUSH IY
1087
                LD IYL,INTERNAL
1088
                LD HL,GETLNG8
507 savelij 1089
                PUSH HL
573 savelij 1090
                LD HL,BUF_256
1091
GETLNG9         PUSH HL
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
1099
GETLNG2         DEC BC
1100
                CALL GETRZAP
1101
                LD A,(HL)
1102
                INC HL
1103
                EXX
1104
                BIT 6,C
1105
                POP HL
961 savelij 1106
                JR NZ,GETLNGE + 1
507 savelij 1107
                LD C,A
1108
                EXX
1109
                LD A,5
1110
                CALL GETLNG1
1111
                AND A
1112
                JR Z,GETLNGE
1113
                INC HL
1114
                INC HL
1115
                INC HL
1116
                LD A,6
1117
                CALL GETLNG1
1118
                AND A
1119
                JR Z,GETLNGE
1120
                INC HL
1121
                INC HL
1122
                LD A,2
1123
                CALL GETLNG1
1124
                AND A
1125
                JR Z,GETLNGE
1126
                EXX
1127
                PUSH HL
1128
                EXX
1129
                JR GETLNG2
1130
 
1131
GETLNGE         EXX
1132
                LD (HL),0
573 savelij 1133
                LD A,L
1134
                LD (RREG_A),A
507 savelij 1135
                EXX
1136
                POP HL
1137
                RET
1138
 
1139
GETLNG1         EXX
1140
                LD B,A
1141
                EXX
1142
                LD D,(HL)
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
1151
                JR NZ,GETLNG3
1152
                LD A,D
1028 savelij 1153
                CP 0x80
507 savelij 1154
                JR C,GETLNG5
1028 savelij 1155
                LD D,0x5F
507 savelij 1156
                JR GETLNG5
1157
 
1158
GETLNG3         CP 4
1028 savelij 1159
                LD A,0x5F
507 savelij 1160
                JR NZ,GETLNG5
1161
                LD A,D
1028 savelij 1162
                LD E,0xEF
1163
                LD D,0x5F
507 savelij 1164
                CP 1
1165
                JR Z,GETLNG4
1028 savelij 1166
                LD E,0xA0
1167
                CP 0x51
507 savelij 1168
                JR Z,GETLNG4
1028 savelij 1169
                SUB 0x10
1170
                LD E,0x80
507 savelij 1171
                JR NC,GETLNG6
1172
                LD A,D
1173
                JR GETLNG5
1174
 
1028 savelij 1175
GETLNG6         CP 0x30
507 savelij 1176
                JR C,GETLNG4
1028 savelij 1177
                LD E,0xB0
1178
                CP 0x40
507 savelij 1179
                JR C,GETLNG4
1180
                LD A,D
1181
                JR GETLNG5
1182
 
1183
GETLNG4         ADD A,E
1184
GETLNG5         EXX
1185
                LD (HL),A
1186
                INC HL
1187
                DEC B
1188
                EXX
1189
                RET Z
961 savelij 1190
                JR GETLNG1 + 3
507 savelij 1191
;401,410-44F,451
1192
 
1028 savelij 1193
;  室:  DE = ᯨ᮪ ७
1194
;            HL =  ⥫ 䠩
1195
;  室:  A =  ७
573 savelij 1196
CP_EXT          LD C,0
507 savelij 1197
CPETR2          LD A,(DE)
1198
                AND A
573 savelij 1199
                JR Z,CPETR1
507 savelij 1200
                INC C
1201
                PUSH DE
1202
                PUSH HL
1203
                CALL COMPARF
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
1211
                JR CPETR2
1212
 
573 savelij 1213
CPETR1          DEC A
507 savelij 1214
                RET
1215
 
1216
COMPARF         PUSH DE
1217
                LD DE,8
1218
                ADD HL,DE
1219
                POP DE
1220
COMPARF1        LD A,(DE)
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
1028 savelij 1237
        EVOPORT WIN_P3,RAM_TEMP2
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
1028 savelij 1244
                LD (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
1252
                LD A,(TEK_LVL)
507 savelij 1253
                AND A
623 savelij 1254
                EXX
1255
                JR NZ,FINDF2
961 savelij 1256
                LD A,(FATType)
623 savelij 1257
                CP 2
1258
                JR NC,FINDF2
1259
                EXX
1260
                LD BC,(ROOTZAP)
1261
                EXX
1262
FINDF2          INC BC
1263
                CALL RDDIRSC
1264
                LD A,C
1028 savelij 1265
                AND 0x0F
961 savelij 1266
        REPT 4
623 savelij 1267
                ADD A,A
961 savelij 1268
        ENDM
623 savelij 1269
                LD E,A
1270
                LD D,0
1271
                EX DE,HL
1272
                ADD HL,HL
1273
                ADD HL,DE
1274
                EXX
628 savelij 1275
                DEC BC
623 savelij 1276
                LD A,B
1277
                OR C
1278
                EXX
573 savelij 1279
                JR Z,FINDF3
623 savelij 1280
                LD A,(HL)
1281
                AND A
1282
                JR Z,FINDF3
1283
                CP "."
1284
                JR NZ,FINDF21
1285
                INC HL
1286
                LD A,(HL)
1287
                DEC HL
1288
                CP " "
1289
                JR Z,FINDF2
1028 savelij 1290
FINDF21         CP 0xE5                         ; ᫨ 㤠
1291
                JR Z,FINDF2                     ;  室  ᫥騩 ⥫
1292
                LD DE,0x0B                      ; 㦥 䫠  ⥫
1293
                ADD HL,DE                       ; 稫  䫠 
1294
                LD A,(HL)                       ; 﫨 䫠 
573 savelij 1295
                SBC HL,DE
1028 savelij 1296
                CP 0x0F
623 savelij 1297
                JR Z,FINDF2
1028 savelij 1298
                AND 0x10                        ; ஢ઠ  䠩  
573 savelij 1299
                JR NZ,FINDF1
1300
                LD A,(EXT4FOUND)
1301
                AND A
1302
                PUSH DE
1303
                LD DE,EXT4FOUND
1304
                PUSH BC
1305
                CALL NZ,CP_EXT
1306
                POP BC
1307
                POP DE
1308
                JR NZ,FINDF4
1309
FINDF1          EX DE,HL
1310
                ADD HL,DE
507 savelij 1311
                LD A,(HL)
573 savelij 1312
                EX AF,AF'
1028 savelij 1313
                LD HL,(ADR_SKLAD)               ;   ஢   
507 savelij 1314
                LD (HL),C
1315
                INC HL
1028 savelij 1316
                LD (HL),B                       ;     ⠡
507 savelij 1317
                INC HL
1318
                LD (ADR_SKLAD),HL
1319
                LD HL,(KOLFIND)
1028 savelij 1320
                INC HL                          ; +1  䠩
507 savelij 1321
                LD (KOLFIND),HL
573 savelij 1322
                LD HL,(ADR_SKLAD_NAME)
1323
                EX AF,AF'
1324
                LD (HL),A
1325
                INC HL
1326
                LD A,(DE)
1327
                LD (HL),A
1328
                INC HL
1329
                LD (ADR_SKLAD_NAME),HL
961 savelij 1330
FINDF4          LD A,(ADR_SKLAD + 1)
1028 savelij 1331
                CP HIGH (CPU3) + 0x10
1332
                JR C,FINDF2                     ;   2048 ஢/䠩  ⥪饩 ४ਨ
573 savelij 1333
FINDF3          LD HL,(KOLFIND)
1334
                POP IY
1335
                LD A,IYL
507 savelij 1336
                AND A
573 savelij 1337
                JR NZ,FINDF5
736 savelij 1338
                LD A,RAM_TEMP2
585 savelij 1339
                LD (RREG_A),A
573 savelij 1340
                LD (RREG_C),HL
1341
FINDF5          LD (KOL_FOUNDED),HL
585 savelij 1342
                LD B,H
1343
                LD C,L
507 savelij 1344
                XOR A
1345
                RET
1346
 
573 savelij 1347
SET_MASK_EXT    LD A,(RREG_A)
507 savelij 1348
                AND A
573 savelij 1349
                JR NZ,SET_MASK_EXT1
1350
                LD (EXT4FOUND),A
1351
                RET
1352
 
1353
SET_MASK_EXT1   LD HL,(RREG_L)
961 savelij 1354
                LD DE,BUF_256 - CPU6
1028 savelij 1355
                LD BC,0x10 * 3 + 1
573 savelij 1356
                CALL LDIR_BYTES
1357
                LD HL,BUF_256
1358
                LD DE,EXT4FOUND
1028 savelij 1359
                LD BC,0x10FF
573 savelij 1360
SET_MASK_EXT2   LD A,(HL)
1361
                AND A
1362
                JR Z,SET_MASK_EXT3
1363
                LDI
1364
                LDI
1365
                LDI
1366
                DJNZ SET_MASK_EXT2
1367
SET_MASK_EXT3   XOR A
1368
                LD (DE),A
1369
                RET
1370
 
1371
LD_FILE6        PUSH AF
1372
                POP HL
1373
                LD (RREG_F),HL
585 savelij 1374
LD_FILE8        EXX
1028 savelij 1375
                LD (SAVE_IY),DE                 ; IY
507 savelij 1376
                EXX
1377
                RET
1378
 
1028 savelij 1379
; IXL - L - ⢮ ᥪ஢  㧪
1380
; IXH - H - ࠧ 
1381
; IYL - E -
1382
; IYH - D - ᬥ饭  
573 savelij 1383
READ_FILE       EX AF,AF'
1384
                LD A,IYL
1385
                DEC A
1386
                JR Z,LD_FILE00
1387
                LD IYL,INT4EXT
507 savelij 1388
                LD HL,LD_FILE6
573 savelij 1389
                PUSH HL
1028 savelij 1390
                LD HL,(RREG_L)                  ;  㧪
573 savelij 1391
                EXX
1028 savelij 1392
                LD DE,(SAVE_IY)                 ; ᬥ饭  
961 savelij 1393
                LD A,(SecPerClus)
1028 savelij 1394
                LD H,A                          ; ⢮ ᥪ஢  
573 savelij 1395
                LD A,(RREG_A)
1028 savelij 1396
                LD L,A                          ; ⢮ ᥪ஢  㧪
573 savelij 1397
                EXX
1398
                JR LD_FILE0
507 savelij 1399
 
573 savelij 1400
LD_FILE00       EXX
1028 savelij 1401
                LD DE,(SAVE_IY)                 ; ᬥ饭  
585 savelij 1402
                LD HL,LD_FILE8
1403
                PUSH HL
1028 savelij 1404
                LD A,(SecPerClus)               ;    
1405
                LD H,A
573 savelij 1406
                EX AF,AF'
1028 savelij 1407
                LD L,A                          ; ⢮ ᥪ஢  㧪
573 savelij 1408
                EXX
1028 savelij 1409
; IXL - L - ⢮ ᥪ஢  㧪
1410
; IXH - H - ࠧ 
1411
; IYL - E -
1412
; IYH - D - ᬥ饭  
507 savelij 1413
LD_FILE0        LD DE,(AFILCLS)
1028 savelij 1414
                LD BC,(AFILCLS+2)               ; ⥪騩  
507 savelij 1415
                PUSH BC
1416
                PUSH DE
1417
                PUSH HL
1028 savelij 1418
                CALL REALSEC                    ; ॢ     ᥪ
573 savelij 1419
                EXX
1028 savelij 1420
                LD A,D                  ; IYH
573 savelij 1421
                EXX
507 savelij 1422
                LD L,A
1423
                LD H,0
1424
                ADD HL,DE
1425
                EX DE,HL
1426
                JR NC,LD_FILE1
1028 savelij 1427
                INC BC                          ; BCDE= ᥪ 㤠 㧨
573 savelij 1428
LD_FILE1        EXX
1028 savelij 1429
                LD A,L                  ; IXL
1430
                CP H                    ; IXH
507 savelij 1431
                JP C,LD_FILE2
1028 savelij 1432
                LD A,H                  ; IXH
1433
LD_FILE2        ADD A,D                 ; IYH
1434
                CP H                    ; IXH
1435
                LD A,L                  ; IXL
507 savelij 1436
                JP C,LD_FILE5
1028 savelij 1437
                LD A,H                  ; IXH
1438
                SUB D                   ; IYH
1439
LD_FILE5        LD E,A                  ; IYL,A ; ᪮쪮 ᥪ஢ ᥩ 㧨
573 savelij 1440
                EXX
1028 savelij 1441
                POP HL                          ; ⠭  㧪
573 savelij 1442
;               LD IYL,INT4EXT
507 savelij 1443
                CALL TO_DRV
585 savelij 1444
                DB _DEV_READ
1445
                LD A,IYL
1446
                DEC A
1447
                JR Z,LD_FILE7
573 savelij 1448
                LD (RREG_L),HL
585 savelij 1449
LD_FILE7        POP DE
1028 savelij 1450
                POP BC                          ; ⠭  
573 savelij 1451
                EXX
1028 savelij 1452
                LD A,D                  ; IYH
1453
                ADD A,E                 ; IYL
1454
                CP H                    ; IXH
507 savelij 1455
                JP C,LD_FILE3
1028 savelij 1456
                SUB H                   ; IXH
1457
LD_FILE3        LD D,A                  ; IYH,A
573 savelij 1458
                EXX
507 savelij 1459
                JP C,LD_FILE4
1028 savelij 1460
                PUSH HL                         ; ࠭  㧪
573 savelij 1461
                PUSH IY
1462
                LD IYL,INTERNAL
1028 savelij 1463
                CALL RDFATZP                    ; ⠫  ᫥饣 
573 savelij 1464
                POP IY
507 savelij 1465
                LD (AFILCLS),DE
961 savelij 1466
                LD (AFILCLS + 2),BC
1028 savelij 1467
                CALL LST_CLS                    ; ஢ਫ,    ᫥ ?
1468
                POP HL                          ; ⠭  㧪
1469
                RET C                           ; ᫨ ᫥, 室
573 savelij 1470
LD_FILE4        EXX
1028 savelij 1471
                LD A,L                  ; IXL
1472
                SUB E                   ; IYL
573 savelij 1473
                EXX
507 savelij 1474
                RET Z
573 savelij 1475
                EXX
1028 savelij 1476
                LD L,A                  ; IXL,A
573 savelij 1477
                EXX
507 savelij 1478
                JP NZ,LD_FILE0
1479
                RET
1480
 
573 savelij 1481
OPEN_FILE       LD A,IYL
1482
                AND A
1483
                JR NZ,OPENFILE1
1484
                LD HL,EOPEN_FILE
1485
                PUSH HL
1486
OPENFILE1       PUSH IY
1487
                LD IYL,INTERNAL
1488
                CALL READ_DIR
1489
                LD DE,FILE_SRC
961 savelij 1490
                LD BC,_DIR_StructSize
573 savelij 1491
                PUSH DE
1492
                LDIR
605 savelij 1493
                LD HL,0
961 savelij 1494
                LD A,(FATType)
605 savelij 1495
                CP 2
1028 savelij 1496
                JR C,OPENFILE2                  ; ᫨   FAT32  訥 16  塞
961 savelij 1497
                LD HL,(FILE_SRC + _DIR_FstClusHI)
1498
OPENFILE2       LD (AFILCLS + 2),HL
1499
                LD HL,(FILE_SRC + _DIR_FstClusLO)
573 savelij 1500
                LD (AFILCLS),HL
1501
                LD HL,(TEK_ZAP)
1502
                LD (NUM_FILE_SRC),HL
1503
                XOR A
1504
                LD H,A
1505
                LD L,A
1506
                LD (SAVE_IY),HL
1507
                POP HL
1508
                POP IY
1509
                RET
1510
 
1511
EOPEN_FILE      PUSH AF
1512
                POP HL
1513
                LD (RREG_F),HL
1514
                RET
1515
 
1516
EFINDNAME       LD HL,(TEK_ZAP)
1517
                LD (RREG_C),HL
1518
                PUSH AF
1519
                POP HL
1520
                LD (RREG_F),HL
1521
                RET
1522
 
1523
FIND_NAME       LD A,IYL
1524
                AND A
1525
                JR NZ,FINDNAME01
1526
                PUSH HL
1527
                LD HL,(RREG_L)
961 savelij 1528
                LD DE,BUF_256 - CPU6
1028 savelij 1529
                LD BC,0x10
573 savelij 1530
                CALL LDIR_BYTES
1531
                LD HL,EFINDNAME
1532
                EX (SP),HL
1533
FINDNAME01      PUSH IY
1534
                LD IYL,INTERNAL
1535
                LD HL,BUF_256
1536
                LD DE,FB_EXT
1028 savelij 1537
                LD BC,0x8FF
573 savelij 1538
                LD A,(HL)
1539
                CP "."
1540
                JR NZ,FINDNAME02
1541
                LDI
1542
                LDI
1543
                LD B,6
1544
FINDNAME02      LD A,(HL)
1545
                CP "!"
1546
                JR C,FINDNAME03
1547
                CP "."
1548
                JR Z,FINDNAME12
1549
                LDI
1550
                DJNZ FINDNAME02
1551
                LD A,(HL)
1552
                CP "!"
1553
                JR C,FINDNAME06
507 savelij 1554
                INC HL
573 savelij 1555
                JR FINDNAME06
1556
 
1557
FINDNAME12      INC HL
1558
FINDNAME03      LD A," "
1559
FINDNAME05      LD (DE),A
1560
                INC DE
1561
                DJNZ FINDNAME05
1562
FINDNAME06      LD B,3
1563
FINDNAME08      LD A,(HL)
1564
                CP "!"
1565
                JR C,FINDNAME07
1566
                LDI
1567
                DJNZ FINDNAME08
1568
                CALL POSTF02
1569
                JR FINDNAME11
1570
 
1571
FINDNAME07      LD A," "
1572
FINDNAME09      LD (DE),A
1573
                INC DE
1574
                DJNZ FINDNAME09
1575
                CALL POSTF02
1576
                JR FINDNAME11
1577
 
1578
FINDNAME10      CALL NXTLEGZ
1579
FINDNAME11      PUSH HL
1580
                CALL CMP_NAME
1581
                POP HL
1582
                JR Z,FINDNAME13
1583
                LD A,(HL)
1584
                AND A
1585
                JR NZ,FINDNAME10
1586
                SCF
1587
FINDNAME13      POP IY
1588
                RET
1589
 
1590
CMP_NAME        LD DE,FB_EXT
1028 savelij 1591
ICMP_NAME       LD B,0x0B
573 savelij 1592
CMP_NAME_B      LD A,(DE)
1593
                CP "a"
1594
                JR C,CMPNAME01
1595
                CP "{"
1596
                JR NC,CMPNAME01
961 savelij 1597
                AND %11011111
573 savelij 1598
CMPNAME01       CP (HL)
1599
                RET NZ
1600
                INC DE
507 savelij 1601
                INC HL
573 savelij 1602
                DJNZ CMP_NAME_B
1603
                XOR A
1604
                RET
961 savelij 1605
 
1028 savelij 1606
; 宦  dir
961 savelij 1607
ENTER_DIR       LD IYL,INTERNAL
1608
                CALL READ_DIR
1609
                PUSH AF
1610
                PUSH DE
1611
                PUSH HL
1612
                CALL RENEW_PATH
1613
                POP HL
1614
                POP DE
1615
                POP AF
1616
                BIT 4,A
1617
                EX AF,AF'
1618
                LD A,E
1619
                EX AF,AF'
1620
                LD E,A
1621
                LD D,(HL)
1622
                RET Z
1623
                EXX
1624
                EX AF,AF'
1625
                BIT 7,A
1626
                JR Z,ENT_DI2
1627
                LD HL,TEK_LEV
1628
                LD A,(HL)
1629
                AND A
1630
                EXX
1631
                RET Z
1632
                EXX
1633
                DEC A
1634
                LD (HL),A
1635
                ADD A,A
1636
                LD H,HIGH (BUF_DIRCEP + CPU6)
1637
                LD L,A
1638
                LD A,(HL)
1639
                INC L
1640
                LD H,(HL)
1641
                LD L,A
1642
                JR ENT_DI1
1643
 
1644
ENT_DI2         LD HL,TEK_LEV
1645
                LD A,(HL)
1646
                INC A
1028 savelij 1647
                CP 0x10
961 savelij 1648
                EXX
1649
                RET Z
1650
                EXX
1651
                LD (HL),A
1652
                DEC A
1653
                ADD A,A
1654
                LD H,HIGH (BUF_DIRCEP + CPU6)
1655
                LD L,A
1656
                LD BC,(TEK_ZAP)
1657
                LD (HL),C
1658
                INC L
1659
                LD (HL),B
1660
ENT_DI1         EXX
1661
                PUSH DE
1662
                LD DE,_DIR_FstClusHI
1663
                ADD HL,DE
1664
                LD C,(HL)
1665
                INC HL
1666
                LD B,(HL)
1667
                LD E,5
1668
                ADD HL,DE
1669
                LD E,(HL)
1670
                INC HL
1671
                LD D,(HL)
1672
                LD A,B
1673
                OR C
1674
                OR D
1675
                OR E
1676
                JR NZ,ENT_DI0
1677
                LD DE,(RootDIRCluster)
1678
                LD BC,(RootDIRCluster + 2)
1679
ENT_DI0         LD (CurrentDIRCluster),DE
1680
                LD (CurrentDIRCluster + 2),BC
1681
                POP DE
1682
INIT_TEKDIR     PUSH DE
1683
                PUSH IY
1684
                LD IYL,INTERNAL
1685
                CALL INIRTSC
1686
                POP IY
1687
                POP DE
1688
                RET