Subversion Repositories ngs

Rev

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

Rev Author Line No. Line
105 savelij 1
 
2
;LAST UPDATE: 25.05.2013 savelij
3
;version 15.11.08
4
 
5
;����� ����� ����� ��� ������ � FAT
6
                EXX
7
                PUSH IX
8
                PUSH IY
9
                LD (ERORDRV),SP
10
                PUSH HL
11
                LD HL,EXITDRV
12
                EX (SP),HL
13
                PUSH HL
14
                PUSH DE
15
                ADD A,A
16
                LD L,A
17
                LD H,0
18
                LD DE,TABLFAT
19
                ADD HL,DE
20
                EX AF,AF'
21
                LD E,(HL)
22
                INC HL
23
                LD D,(HL)
24
                EX DE,HL
25
                POP DE
26
                EX (SP),HL
27
                EXX
28
                RET
29
 
30
ERR_DRV         LD SP,(ERORDRV)
31
EXITDRV         POP IY
32
                POP IX
33
                RET
34
 
35
TABLFAT         DW WC_FAT       ;00  INIT FAT
36
                DW GETFZAP      ;01 HL=FILE OPISATEL
37
                DW GETLONG      ;02 GET LONGNAME
38
                DW FINDDIR      ;03 FIND ALL DIR
39
                DW FINDMP3      ;04 FIND ALL MP3
40
                DW SET_MP3      ;05 SET NUMBER FILES
41
                DW NEXTSEC      ;06 PLAY NEXT SECTOR
42
                DW OPENFIL      ;07 OPEN FILE
43
                DW PRVDIR       ;08 NEXT DIR 4 PLAY
44
                DW NXTDIR       ;09 PREVIOUS DIR 4 PLAY
45
 
46
BUF_512         EQU 0X4200
47
;0X200 ����� �������
48
DIR_CEP         EQU 0X4400
49
;0X100 ������� ��������� �������������
50
ERORDRV         EQU 0X4500
51
;2 ������� � ������� � A
52
CAL_FAT         EQU ERORDRV+2
53
;1 ������ FAT
54
MANYFAT         EQU CAL_FAT+1
55
;1 ���������� FAT-������
56
BYTSSEC         EQU MANYFAT+1
57
;1 ���������� �������� � ��������
58
ROOTCLS         EQU BYTSSEC+1
59
;4 ������ ������ ROOT ����������
60
ROOTSEC         EQU ROOTCLS+4
61
;2 ������ � �������� ROOT ����������
62
SEC_FAT         EQU ROOTSEC+2
63
;4 ���������� �������� ����� ���
64
RSVDSEC         EQU SEC_FAT+4
65
;2 ������ ��������� �������
66
STARTRZ         EQU RSVDSEC+2
67
;4 ������ �����/�������
68
FRSTDAT         EQU STARTRZ+4
69
;4 ����� ������� ������� ������ �� BPB
70
SEC_DSC         EQU FRSTDAT+4
71
;4 ���������� �������� �� �����/�������
72
CLS_DSC         EQU SEC_DSC+4
73
;4 ���������� ��������� �� �����/�������
74
FATSTAR         EQU CLS_DSC+4
75
;2 ����� �������� FAT
76
FATSTR0         EQU FATSTAR+2
77
;4 ������ ������ FAT �������
78
FATSTR1         EQU FATSTR0+4
79
;4 ������ ������ FAT �������
80
FILE_SZ         EQU FATSTR1+4
81
;4 ������ ����� � ������
82
KOLWCLS         EQU FILE_SZ+4
83
;4 ���������� ��������� ���������
84
LST0ZAP         EQU KOLWCLS+4
85
;4 ������ ��������� �������
86
LSTLOAD         EQU LST0ZAP+4
87
;4 ����� ������� ������������ � �����
88
TEK_DIR         EQU LSTLOAD+4
89
;4 ������� ������� DIR
90
TEK_ZAP         EQU TEK_DIR+4
91
;2 ������� ������ � DIR
92
SAVEZAP         EQU TEK_ZAP+2
93
;2 ����������� ������� �������
94
TEK_LVL         EQU SAVEZAP+2
95
;1 ������� ������� ��������
96
KCLSDIR         EQU TEK_LVL+1
97
;1 ���-�� ��������� ����������
98
TEK_LEV         EQU KCLSDIR+1
99
;1 ������� ���������� � �����������
100
NUMSECK         EQU TEK_LEV+1
101
;1 ������� �������� � ��������
102
PAGEDIR         EQU NUMSECK+1
103
;2 ����� ��������� � �������� �����
104
PAGEMP3         EQU PAGEDIR+2
105
;2 ����� ��������� � �������� ������
106
TFILCLS         EQU PAGEMP3+2
107
;4 ������� �������
108
TEKNUMC         EQU TFILCLS+4
109
;2 ����� �������� ��������
110
MPHWOST         EQU TEKNUMC+2
111
;1 ������� �������� � ��������� ��������
112
KOL_CLS         EQU MPHWOST+1
113
;4 ���-�� ������ ��������� �����
114
KOLVMP3         EQU KOL_CLS+4
115
;2 ���-�� ��������� ������
116
KOLVDIR         EQU KOLVMP3+2
117
;2 ���-�� ��������� �����
118
 
119
NO_LNG          POP DE
120
                LD BC,8
121
                LDIR
122
                LD A,(HL)
123
                CP 0X20
124
                JR Z,NO_LNG1
125
                EX DE,HL
126
                LD (HL),0X2E
127
                INC HL
128
                EX DE,HL
129
                LDI
130
                LDI
131
                LDI
132
NO_LNG1         EX DE,HL
133
                LD (HL),0
134
                POP HL
135
                RET
136
 
137
GETLONG         PUSH HL
138
                PUSH HL
139
                CALL SET_MP3
140
                CALL GETFZAP
141
                BIT 0,E
142
                JR Z,NO_LNG
143
                EXX
144
                LD C,0
145
                EXX
146
GETLNG2         DEC BC
147
                CALL GETRZAP
148
                LD A,(HL)
149
                INC HL
150
                EXX
151
                BIT 6,C
152
                POP HL
153
                JR NZ,GETLNGE+1
154
                LD C,A
155
                EXX
156
                LD A,5
157
                CALL GETLNG1
158
                AND A
159
                JR Z,GETLNGE
160
                INC HL
161
                INC HL
162
                INC HL
163
                LD A,6
164
                CALL GETLNG1
165
                AND A
166
                JR Z,GETLNGE
167
                INC HL
168
                INC HL
169
                LD A,2
170
                CALL GETLNG1
171
                AND A
172
                JR Z,GETLNGE
173
                EXX
174
                PUSH HL
175
                EXX
176
                JR GETLNG2
177
 
178
GETLNGE         EXX
179
                LD (HL),0
180
                EXX
181
                POP HL
182
                RET
183
 
184
GETLNG1         EXX
185
                LD B,A
186
                EXX
187
                LD D,(HL)
188
                INC HL
189
                LD E,(HL)
190
                INC HL
191
                LD A,D
192
                OR E
193
                RET Z
194
                LD A,E
195
                AND A
196
                JR NZ,GETLNG3
197
                LD A,D
198
                CP 0X80
199
                JR C,GETLNG5
200
                LD D,0X5F
201
                JR GETLNG5
202
 
203
GETLNG3         CP 4
204
                LD A,0X5F
205
                JR NZ,GETLNG5
206
                LD A,D
207
                LD E,0XEF
208
                LD D,0X5F
209
                CP 1
210
                JR Z,GETLNG4
211
                LD E,0XA0
212
                CP 0X51
213
                JR Z,GETLNG4
214
                SUB 0X10
215
                LD E,0X80
216
                JR NC,GETLNG6
217
                LD A,D
218
                JR GETLNG5
219
 
220
GETLNG6         CP 0X30
221
                JR C,GETLNG4
222
                LD E,0XB0
223
                CP 0X40
224
                JR C,GETLNG4
225
                LD A,D
226
                JR GETLNG5
227
 
228
GETLNG4         ADD A,E
229
GETLNG5         EXX
230
                LD (HL),A
231
                INC HL
232
                DEC B
233
                EXX
234
                RET Z
235
                JR GETLNG1+3
236
;401,410-44F,451
237
 
238
LOADLST         LD HL,BUF_512
239
                PUSH HL
240
                EX AF,AF'
241
                LD A,2
242
                CALL COM__SD
243
                AND A
244
                JP NZ,ERR_DRV
245
                POP HL
246
                RET
247
 
248
ENT_DIR         CALL GETFZAP
249
                BIT 4,A
250
                EX AF,AF'
251
                LD A,E
252
                EX AF,AF'
253
                LD E,A
254
                LD D,(HL)
255
                RET Z
256
                EXX
257
                EX AF,AF'
258
                BIT 7,A
259
                JR Z,ENT_DI2
260
                LD HL,TEK_LEV
261
                LD A,(HL)
262
                AND A
263
                EXX
264
                RET Z
265
                EXX
266
                DEC A
267
                LD (HL),A
268
                ADD A,A
269
                LD H,HIGH (DIR_CEP);
270
                LD L,A
271
                LD A,(HL)
272
                INC L
273
                LD H,(HL)
274
                LD L,A
275
                CALL ENT_DI1
276
                EXX
277
                LD (TEK_ZAP),HL
278
                EXX
279
                RET
280
 
281
ENT_DI2         LD HL,TEK_LEV
282
                LD A,(HL)
283
                INC A
284
                CP 0X80
285
                EXX
286
                RET Z
287
                EXX
288
                LD (HL),A
289
                DEC A
290
                ADD A,A
291
                LD H,HIGH (DIR_CEP)
292
                LD L,A
293
                LD BC,(TEK_ZAP)
294
                LD (HL),C
295
                INC L
296
                LD (HL),B
297
ENT_DI1         EXX
298
                LD DE,20
299
                ADD HL,DE
300
                LD C,(HL)
301
                INC HL
302
                LD B,(HL)
303
                LD E,5
304
                ADD HL,DE
305
                LD E,(HL)
306
                INC HL
307
                LD D,(HL)
308
                LD A,B
309
                OR C
310
                OR D
311
                OR E
312
                JR NZ,ENT_DI0
313
                LD DE,(ROOTCLS)
314
                LD BC,(ROOTCLS+2)
315
ENT_DI0         LD (TEK_DIR),DE
316
                LD (TEK_DIR+2),BC
317
                CALL INIRTSC
318
                XOR A
319
                INC A
320
                RET
321
 
322
GETFZAP         LD BC,(TEK_ZAP)
323
                LD A,B
324
                OR C
325
                JR Z,GETRZAP
326
                PUSH BC
327
                DEC BC
328
                CALL GETRZAP
329
                POP BC
330
                LD E,A
331
GETRZAP         PUSH DE
332
                CALL RDDIRSC
333
                POP DE
334
                CP 0XFF
335
                LD A,E
336
                RET Z
337
                EX AF,AF'
338
GETFZA1         LD A,C
339
                AND 0X0F
340
                LD E,A
341
                LD D,0
342
                EX DE,HL
343
                REPT 5
344
                ADD HL,HL
345
                ENDM
346
                ADD HL,DE
347
                LD DE,11
348
                EX DE,HL
349
                ADD HL,DE
350
                LD L,(HL)
351
                LD H,0
352
                EX DE,HL
353
                CALL CP_TWOT
354
                JR NZ,$+4
355
                LD D,0X80
356
                EX AF,AF'
357
                CP 0X0F
358
                LD A,E
359
                LD E,D
360
                RET NZ
361
                SET 0,E
362
                RET
363
 
364
;������ ������� DIR �� ������ BC
365
;�� ������: A=0XFF-����� �� ������� DIR
366
RDDIRSC         PUSH BC
367
                LD D,B
368
                LD E,C
369
                LD BC,0
370
                LD A,0X10
371
                CALL BCDE_A
372
                LD A,E
373
                PUSH AF
374
                LD A,(BYTSSEC)
375
                PUSH AF
376
                CALL BCDE_A
377
                LD A,(KCLSDIR)
378
                DEC A
379
                CP E
380
                JR NC,RDDIRS3
381
                POP BC
382
                POP BC
383
                POP BC
384
                LD A,0XFF
385
                AND A
386
                RET
387
 
388
RDDIRS3         LD BC,(TEK_DIR+2)
389
                LD A,E
390
                AND A
391
                LD DE,(TEK_DIR)
392
                JR Z,RDDIRS1
393
RDDIRS2         PUSH AF
394
                CALL RDFATZP
395
                POP AF
396
                DEC A
397
                JR NZ,RDDIRS2
398
RDDIRS1         CALL REALSEC
399
                POP AF
400
                DEC A
401
                LD L,A
402
                POP AF
403
                AND L
404
                LD L,A
405
                LD H,0
406
                ADD HL,DE
407
                EX DE,HL
408
                LD HL,0
409
                ADC HL,BC
410
                LD B,H
411
                LD C,L
412
                CALL LOADLST
413
                POP BC
414
                XOR A
415
                RET
416
 
417
INIRTSC         PUSH AF
418
                LD H,1
419
                LD A,D
420
                OR E
421
                OR B
422
                OR C
423
                JR Z,LASTCLS
424
NEXTCLS         PUSH HL
425
                CALL RDFATZP
426
                CALL LST_CLS
427
                POP HL
428
                JR Z,LASTCLS
429
                INC H
430
                JR NEXTCLS
431
 
432
LASTCLS         LD A,H
433
                LD (KCLSDIR),A
434
                LD BC,0
435
                CALL RDDIRSC
436
                LD A,(HL)
437
                CP 0X2E
438
                JR NZ,INIRTS1
439
                INC HL
440
                LD A,(HL)
441
                CP 0X2E
442
                JR Z,INIRTS1
443
                INC BC
444
INIRTS1         LD (TEK_ZAP),BC
445
                POP AF
446
                RET
447
 
448
CP_TWOT         LD A,(HL)
449
                CP 0X2E
450
                RET NZ
451
                INC HL
452
                LD A,(HL)
453
                DEC HL
454
                CP 0X2E
455
                RET NZ
456
                XOR A
457
                RET
458
 
459
LST_CLS         LD A,(CAL_FAT)
460
                AND A
461
                JR NZ,LST_CL1
462
                LD HL,0X0FFF
463
                SBC HL,DE
464
                RET
465
 
466
LST_CL1         DEC A
467
                JR NZ,LST_CL2
468
                LD HL,0XFFFF
469
                SBC HL,DE
470
                RET
471
 
472
LST_CL2         LD HL,0X0FFF
473
                SBC HL,BC
474
                RET NZ
475
                LD HL,0XFFFF
476
                SBC HL,DE
477
                RET
478
 
479
RDFATZP         LD A,(CAL_FAT)
480
                AND A
481
                JR Z,RDFATS0
482
                DEC A
483
                JR Z,RDFATS1
484
                EX DE,HL
485
                ADD HL,HL
486
                EX DE,HL
487
                LD HL,0
488
                ADC HL,BC
489
                ADC HL,BC
490
                LD A,E
491
                LD E,D
492
                LD D,L
493
                LD C,H
494
                LD B,0
495
                CALL RDFATS2
496
                INC HL
497
                LD C,(HL)
498
                INC HL
499
                LD B,(HL)
500
                RET
501
 
502
RDFATS1         LD BC,0
503
                LD A,E
504
                LD E,D
505
                LD D,C
506
RDFATS2         PUSH AF
507
                PUSH BC
508
                LD HL,FATSTR0
509
                CALL BCDEHLP
510
                CALL LOADLST
511
                POP BC
512
                POP AF
513
                LD E,A
514
                LD D,0
515
                ADD HL,DE
516
                ADD HL,DE
517
                LD E,(HL)
518
                INC HL
519
                LD D,(HL)
520
                RET
521
 
522
RDFATS0         LD H,D
523
                LD L,E
524
                ADD HL,HL
525
                ADD HL,DE
526
                SRL H
527
                RR L
528
                LD A,E
529
                LD E,H
530
                LD D,0
531
                LD B,D
532
                LD C,D
533
                SRL E
534
                PUSH AF
535
                PUSH HL
536
                LD HL,FATSTR0
537
                CALL BCDEHLP
538
                CALL LOADLST
539
                POP BC
540
                LD A,B
541
                AND 1
542
                LD B,A
543
                ADD HL,BC
544
                LD B,(HL)
545
                INC HL
546
                LD A,H
547
                CP HIGH (BUF_512)+2
548
                JR NZ,RDFATS4
549
                PUSH BC
550
                LD BC,0
551
                INC DE
552
                CALL LOADLST
553
                POP BC
554
RDFATS4         POP AF
555
                LD D,(HL)
556
                LD E,B
557
                LD BC,0
558
                RRA
559
                JR NC,RDFATS3
560
                REPT 4
561
                SRL D
562
                RR E
563
                ENDM
564
RDFATS3         LD A,D
565
                AND 0X0F
566
                LD D,A
567
                RET
568
 
569
;���������� ��������� �������
570
;�� ����� BCDE=����� FAT
571
;�� ������ BCDE=����� �������
572
REALSEC         LD A,B
573
                OR C
574
                OR D
575
                OR E
576
                JR NZ,REALSE1
577
                LD HL,FATSTR1
578
                LD DE,(SEC_FAT)
579
                LD BC,(SEC_FAT+2)
580
                JP BCDEHLP
581
 
582
REALSE1         LD HL,0XFFFE
583
                EX DE,HL
584
                ADD HL,DE
585
                EX DE,HL
586
                INC HL
587
                ADC HL,BC
588
;����� ��������-2
589
                LD A,(BYTSSEC)
590
                JR REALSE2
591
 
592
REALSE3         SLA E
593
                RL D
594
                RL L
595
                RL H
596
REALSE2         RRCA
597
                JR NC,REALSE3
598
;�������� �� ������ ��������
599
                LD B,H
600
                LD C,L
601
                LD HL,STARTRZ
602
                CALL BCDEHLP
603
;��������� �������� �� ������ �����
604
                LD HL,FRSTDAT
605
                JP BCDEHLP
606
;��������� �������� �� ������ �������
607
 
608
BCDE200         LD E,D
609
                LD D,C
610
                LD C,B
611
                LD B,0
612
                LD A,2
613
                JR BCDE_A
614
 
615
;BCDE>>A=BCDE
616
BCDE_A1         SRL B
617
                RR C
618
                RR D
619
                RR E
620
BCDE_A          RRCA
621
                JR NC,BCDE_A1
622
                RET
623
 
624
;(ADR)-BCDE=BCDE
625
BCDEHLM         LD A,(HL)
626
                INC HL
627
                SUB E
628
                LD E,A
629
                LD A,(HL)
630
                INC HL
631
                SBC A,D
632
                LD D,A
633
                LD A,(HL)
634
                INC HL
635
                SBC A,C
636
                LD C,A
637
                LD A,(HL)
638
                SBC A,B
639
                LD B,A
640
                RET
641
 
642
;(ADR)+BCDE=BCDE
643
BCDEHLP         LD A,(HL)
644
                INC HL
645
                ADD A,E
646
                LD E,A
647
                LD A,(HL)
648
                INC HL
649
                ADC A,D
650
                LD D,A
651
                LD A,(HL)
652
                INC HL
653
                ADC A,C
654
                LD C,A
655
                LD A,(HL)
656
                ADC A,B
657
                LD B,A
658
                RET
659
 
660
;HLDE+BC=HLDE
661
HLDEPBC         EX DE,HL
662
                ADD HL,BC
663
                EX DE,HL
664
                LD BC,0
665
                ADC HL,BC
666
                RET
667
 
668
FAT_ERR         LD A,0XFF
669
                LD (CAL_FAT),A
670
                RET
671
 
672
;������������� ���������� FAT
673
WC_FAT          LD DE,0
674
                LD B,D
675
                LD C,E
676
                CALL LOADLST
677
                PUSH HL
678
                POP IY
679
                LD DE,0X01BE
680
                ADD HL,DE
681
                LD A,(HL)
682
                AND A
683
                JR NZ,RDFAT05
684
                LD DE,4
685
                ADD HL,DE
686
                LD A,(HL)
687
                LD B,0
688
                CP 1
689
                JR Z,RDFAT06
690
                LD B,2
691
                CP 0X0B
692
                JR Z,RDFAT06
693
                CP 0X0C
694
                JR Z,RDFAT06
695
                LD B,1
696
                CP 6
697
                JR Z,RDFAT06
698
                CP 0X0E
699
                JR NZ,RDFAT05
700
RDFAT06         LD A,B
701
                LD (CAL_FAT),A
702
                ADD HL,DE
703
                LD E,(HL)
704
                INC HL
705
                LD D,(HL)
706
                INC HL
707
                LD C,(HL)
708
                INC HL
709
                LD B,(HL)
710
                JR RDFAT00
711
 
712
RDFAT05         LD C,(IY+0X0D)
713
                XOR A
714
                LD E,A
715
                LD B,8
716
                RR C
717
                ADC A,0
718
                DJNZ $-4
719
                DEC A
720
                JR NZ,$+3
721
                INC E
722
                LD A,(IY+0X0E)
723
                OR (IY+0X0F)
724
                JR Z,$+3
725
                INC E
726
                LD A,(IY+0X13)
727
                OR (IY+0X14)
728
                JR NZ,$+3
729
                INC E
730
                LD A,(IY+0X20)
731
                OR (IY+0X21)
732
                OR (IY+0X22)
733
                OR (IY+0X23)
734
                JR NZ,$+3
735
                INC E
736
                LD A,(IY+0X15)
737
                AND 0XF0
738
                CP 0XF0
739
                JR NZ,$+3
740
                INC E
741
                LD A,E
742
                CP 4
743
                JP NZ,FAT_ERR
744
                LD A,0XFF
745
                LD (CAL_FAT),A
746
                LD DE,0
747
                LD B,D
748
                LD C,E
749
 
750
RDFAT00         LD (STARTRZ),DE
751
                LD (STARTRZ+2),BC
752
                CALL LOADLST
753
                PUSH HL
754
                POP IX
755
                LD HL,0
756
                LD E,(IX+22)
757
                LD D,(IX+23)
758
;BPB_FATSZ16
759
                LD A,D
760
                OR E
761
                JR NZ,RDFAT01
762
;���� �� FAT12/16 (BPB_FATSZ16=0)
763
                LD E,(IX+36)
764
                LD D,(IX+37)
765
                LD L,(IX+38)
766
                LD H,(IX+39)
767
;BPB_FATSZ32
768
;�� ����� �� �������� +36
769
RDFAT01         LD (SEC_FAT+2),HL
770
                LD (SEC_FAT),DE
771
;����� �������� �� FAT-�������
772
                LD HL,0
773
                LD E,(IX+19)
774
                LD D,(IX+20)
775
;BPB_TOTSEC16
776
                LD A,D
777
                OR E
778
                JR NZ,RDFAT02
779
;���� �� FAT12/16 (BPB_TOTSEC16=0)
780
                LD E,(IX+32)
781
                LD D,(IX+33)
782
                LD L,(IX+34)
783
                LD H,(IX+35)
784
;BPB_TOTSEC32
785
;�� ����� �� �������� +32
786
RDFAT02         LD (SEC_DSC+2),HL
787
                LD (SEC_DSC),DE
788
;�-�� �������� �� �����/�������
789
 
790
;��������� ROOTDIRSECTORS
791
                LD C,(IX+11)
792
                LD B,(IX+12)
793
;BPB_BYTSPERSEC
794
                LD E,(IX+17)
795
                LD D,(IX+18)
796
;BPB_ROOTENTCNT
797
                LD HL,0
798
                LD A,D
799
                OR E
800
                JR Z,RDFAT03
801
                LD B,H
802
                LD C,L
803
                LD A,0X10
804
                CALL BCDE_A
805
                EX DE,HL
806
 
807
;��� ����������� �������
808
;ROOTDIRSECTORS=((BPB_ROOTENTCNT*32)+
809
;+(BPB_BYTSPERSEC-1))/BPB_BYTSPERSEC
810
;� HL ROOTDIRSECTORS
811
;���� FAT32, �� HL=0 ������
812
 
813
RDFAT03         PUSH HL;ROOTDIRSECTORS
814
                LD (ROOTSEC),HL
815
                LD A,(IX+16)
816
;BPB_NUMFATS
817
                LD (MANYFAT),A
818
                LD DE,(SEC_FAT)
819
                LD HL,(SEC_FAT+2)
820
                DEC A
821
                EX DE,HL
822
                ADD HL,HL
823
                EX DE,HL
824
                ADC HL,HL
825
                DEC A
826
                JR NZ,$-6
827
                POP BC
828
;������ ������ FAT-������� � ��������
829
                CALL HLDEPBC
830
;��������� ROOTDIRSECTORS
831
                LD C,(IX+14)
832
                LD B,(IX+15)
833
;BPB_RSVDSECCNT
834
                LD (RSVDSEC),BC
835
                CALL HLDEPBC
836
;��������� BPB_RESVDSECCNT
837
                LD (FRSTDAT),DE
838
                LD (FRSTDAT+2),HL
839
;�������� ����� ������� ������� ������
840
                LD B,H
841
                LD C,L
842
                LD HL,SEC_DSC
843
;BCDE+32-�� ����� �� ������ HL
844
                CALL BCDEHLM
845
;����� �� ������� �-�� �������� �������
846
                LD A,(IX+13)
847
                LD (BYTSSEC),A
848
                CALL BCDE_A
849
;��������� �� �-�� �������� � ��������
850
                LD (CLS_DSC),DE
851
                LD (CLS_DSC+2),BC
852
;�������� ���-�� ��������� �� �������
853
 
854
                LD A,(CAL_FAT)
855
                CP 0XFF
856
                JR NZ,RDFAT04
857
                LD HL,(CLS_DSC)
858
                LD DE,(CLS_DSC+2)
859
                PUSH HL
860
                PUSH DE
861
                ADD HL,HL
862
                EX DE,HL
863
                ADC HL,HL
864
                LD B,H
865
                LD C,L
866
                CALL RASCHET
867
                LD A,1
868
                POP DE
869
                POP HL
870
                JR Z,RDFAT04
871
                ADD HL,HL
872
                EX DE,HL
873
                ADC HL,HL
874
                EX DE,HL
875
                ADD HL,HL
876
                EX DE,HL
877
                ADC HL,HL
878
                LD B,H
879
                LD C,L
880
                CALL RASCHET
881
                LD A,2
882
                JR Z,RDFAT04
883
                XOR A
884
 
885
;��� FAT12/16 ��������� ����� �������
886
;������� ����������
887
;��� FAT32 ����� �� �������� +44
888
;�� ������ BCDE-������ ROOTDIR
889
RDFAT04         LD (CAL_FAT),A
890
                PUSH AF
891
                AND A
892
                LD DE,0
893
                LD B,D
894
                LD C,E
895
                JR Z,FSRROO2;FAT12-NONE
896
                DEC A
897
                JR Z,FSRROO2;FAT16
898
                LD E,(IX+44)
899
                LD D,(IX+45)
900
                LD C,(IX+46)
901
                LD B,(IX+47);FAT32
902
FSRROO2         LD (ROOTCLS),DE
903
                LD (ROOTCLS+2),BC
904
;������ ROOT ����������
905
                LD (TEK_DIR),DE
906
                LD (TEK_DIR+2),BC
907
FSRR121         PUSH DE
908
                PUSH BC
909
                LD DE,(RSVDSEC)
910
                LD BC,0
911
                LD HL,STARTRZ
912
                CALL BCDEHLP
913
                LD (FATSTR0),DE
914
                LD (FATSTR0+2),BC
915
                LD HL,SEC_FAT
916
                CALL BCDEHLP
917
                LD (FATSTR1),DE
918
                LD (FATSTR1+2),BC
919
                XOR A
920
                LD (TEK_LEV),A
921
                POP BC
922
                POP DE
923
                POP AF
924
                JP INIRTSC
925
 
926
RASCHET         CALL BCDE200
927
                LD HL,SEC_FAT
928
                CALL BCDEHLM
929
                LD A,E
930
                AND 0XF0
931
                OR D
932
                OR C
933
                OR B
934
                RET
935
 
936
FINDDIR         LD IY,0
937
                LD A,PG4DIR
938
                OUT (0),A
939
                LD HL,FORFILE
940
                LD (PAGEDIR),HL
941
FNDDIR7         LD BC,0
942
                CALL RDDIRSC
943
                LD DE,0X20
944
                PUSH HL
945
                POP IX
946
                LD A,(HL)
947
                CP 0X2E
948
                JR NZ,FNDDIR3
949
FNDDIR4         LD A,(IX+1)
950
                CP 0X2E
951
                JR Z,FNDDIR1
952
                INC BC
953
                ADD IX,DE
954
FNDDIR1         INC BC
955
                ADD IX,DE
956
FNDDIR3         LD A,IXH
957
                CP HIGH (BUF_512)+2
958
                JR NZ,FNDDIR2
959
                CALL RDDIRSC
960
                JR NZ,FNDDIR5
961
                LD DE,0X20
962
                PUSH HL
963
                POP IX
964
FNDDIR2         LD A,(IX+0X0B)
965
                CP 0X0F
966
                JR Z,FNDDIR1
967
                CP 8
968
                JR Z,FNDDIR1
969
                LD A,(IX)
970
                CP 0XE5
971
                JR Z,FNDDIR1
972
                AND A
973
                JR Z,FNDDIR5
974
                BIT 4,(IX+0X0B)
975
                JR Z,FNDDIR1
976
FNDDIR6         LD HL,(PAGEDIR)
977
                LD A,(IX+0X1A)
978
                LD (HL),A
979
                INC HL
980
                LD A,(IX+0X1B)
981
                LD (HL),A
982
                INC HL
983
                LD A,(IX+0X14)
984
                LD (HL),A
985
                INC HL
986
                LD A,(IX+0X15)
987
                LD (HL),A
988
                INC HL
989
                LD (PAGEDIR),HL
990
                DEC IY
991
                DEC IY
992
                LD (IY),C
993
                LD (IY+1),B
994
                LD (TEK_ZAP),BC
995
                CALL ENT_DIR
996
                JR FNDDIR7
997
 
998
FNDDIR5         LD A,IYH
999
                AND A
1000
                JR Z,FNDDIR0
1001
                LD BC,0
1002
                CALL RDDIRSC
1003
                PUSH HL
1004
                POP IX
1005
                LD DE,0X20
1006
                LD A,(HL)
1007
                CP 0X2E
1008
                JR NZ,FNDDI52
1009
                INC HL
1010
                LD A,(HL)
1011
                CP 0X2E
1012
                JR Z,FNDDI52
1013
                INC BC
1014
                ADD IX,DE
1015
FNDDI52         LD (TEK_ZAP),BC
1016
                CALL ENT_DIR
1017
                LD C,(IY)
1018
                LD B,(IY+1)
1019
                INC IY
1020
                INC IY
1021
                CALL RDDIRSC
1022
                LD A,C
1023
                AND 0X0F
1024
                LD E,A
1025
                LD D,0
1026
                EX DE,HL
1027
                REPT 5
1028
                ADD HL,HL
1029
                ENDM
1030
                ADD HL,DE
1031
                PUSH HL
1032
                POP IX
1033
                LD DE,0X20
1034
                JP FNDDIR1
1035
 
1036
FNDDIR0         LD HL,ROOTCLS
1037
                LD DE,(PAGEDIR)
1038
                LDI
1039
                LDI
1040
                LDI
1041
                LDI
1042
                LD H,D
1043
                LD L,E
1044
                INC HL
1045
                INC HL
1046
                INC HL
1047
                LD (HL),0XFF
1048
                EX DE,HL
1049
                LD DE,FORFILE
1050
                AND A
1051
                SBC HL,DE
1052
                SRL H
1053
                RR L
1054
                SRL H
1055
                RR L
1056
                LD (KOLVDIR),HL
1057
                LD A,PG4MP3
1058
                OUT (0),A
1059
                RET
1060
 
1061
FNDMP30         LD HL,(PAGEMP3)
1062
                LD DE,FORFILE
1063
                PUSH HL
1064
                POP IX
1065
                LD (HL),0
1066
                INC L
1067
                LD (HL),0
1068
                DEC L
1069
                AND A
1070
                SBC HL,DE
1071
                SRL H
1072
                RR L
1073
                SRL H
1074
                RR L
1075
                LD DE,2
1076
                LD (KOLVMP3),HL
1077
                LD (KOLWMP3),HL
1078
                AND A
1079
                SBC HL,DE
1080
                EX AF,AF'
1081
                ADD HL,DE
1082
                EX AF,AF'
1083
                RET C
1084
                PUSH HL
1085
                LD A,PG4MP3
1086
                OUT (0),A
1087
                LD IY,1
1088
                LD B,H
1089
                LD C,L
1090
                LD DE,0XFFFC
1091
                ADD IX,DE
1092
                DEC HL
1093
                EXX
1094
                LD L,(IX)
1095
                LD H,(IX+1)
1096
                EXX
1097
FNDM030         EXX
1098
                LD D,H
1099
                LD E,L
1100
                LD L,(IX)
1101
                LD H,(IX+1)
1102
                AND A
1103
                SBC HL,DE
1104
                EX AF,AF'
1105
                ADD HL,DE
1106
                EX AF,AF'
1107
                EXX
1108
                JR Z,$+4
1109
                INC IY
1110
                LD A,H
1111
                OR L
1112
                JR Z,FNDM033
1113
                DEC HL
1114
                ADD IX,DE
1115
                JR FNDM030
1116
 
1117
FNDM033         LD (KOLVDIR),IY
1118
                POP HL
1119
                RET
1120
 
1121
FINDMP3         LD A,PG4DIR
1122
                OUT (0),A
1123
                LD HL,FORFILE
1124
                LD (PAGEDIR),HL
1125
                LD (PAGEMP3),HL
1126
FNDMP37         LD HL,(PAGEDIR)
1127
                LD (TEKNUMC),HL
1128
                LD DE,TEK_DIR
1129
                LDI
1130
                LDI
1131
                LDI
1132
                LDI
1133
                LD (PAGEDIR),HL
1134
                DEC HL
1135
                BIT 7,(HL)
1136
                JP NZ,FNDMP30
1137
                LD DE,(TEK_DIR)
1138
                LD BC,(TEK_DIR+2)
1139
                CALL INIRTSC
1140
                LD BC,0
1141
                CALL RDDIRSC
1142
                LD DE,0X20
1143
                PUSH HL
1144
                POP IX
1145
                LD A,(HL)
1146
                CP 0X2E
1147
                JR NZ,FNDMP33
1148
FNDMP34         LD A,(IX+1)
1149
                CP 0X2E
1150
                JR Z,FNDMP31
1151
                INC BC
1152
                ADD IX,DE
1153
FNDMP31         INC BC
1154
                ADD IX,DE
1155
FNDMP33         LD A,IXH
1156
                CP HIGH (BUF_512)+2
1157
                JR NZ,FNDMP32
1158
                CALL RDDIRSC
1159
                JP NZ,FNDMP37
1160
                LD DE,0X20
1161
                PUSH HL
1162
                POP IX
1163
FNDMP32         LD A,(IX+0X0B)
1164
                CP 0X0F
1165
                JR Z,FNDMP31
1166
                CP 8
1167
                JR Z,FNDMP31
1168
                LD A,(IX)
1169
                CP 0XE5
1170
                JR Z,FNDMP31
1171
                AND A
1172
                JR Z,FNDMP37
1173
                BIT 4,(IX+0X0B)
1174
                JR NZ,FNDMP31
1175
                EXX
1176
                PUSH IX
1177
                POP HL
1178
                CALL CP_EXT
1179
                EXX
1180
                DEC A
1181
                JP NZ,FNDMP31
1182
                LD A,PG4MP3
1183
                OUT (0),A
1184
                LD DE,(TEKNUMC)
1185
                LD HL,(PAGEMP3)
1186
;������� ��������� �����
1187
;2 ����� ����� �������� ����
1188
;2 ����� "��������" ����� �����
1189
                LD (HL),E
1190
                INC HL
1191
                LD (HL),D
1192
                INC HL
1193
                LD (HL),C
1194
                INC HL
1195
                LD (HL),B
1196
                INC HL
1197
                LD (PAGEMP3),HL
1198
                LD A,PG4DIR
1199
                OUT (0),A
1200
                LD DE,0X20
1201
                JR FNDMP31
1202
 
1203
F_EXT           DB "MP3",0
1204
 
1205
CP_EXT          PUSH BC
1206
                PUSH DE
1207
                PUSH HL
1208
                LD C,0
1209
                LD DE,F_EXT
1210
CPETR2          LD A,(DE)
1211
                AND A
1212
                JR Z,CPETR1+1
1213
                INC C
1214
                PUSH DE
1215
                CALL COMPARF
1216
                POP DE
1217
                JR Z,CPETR1
1218
                INC DE
1219
                INC DE
1220
                INC DE
1221
                JR CPETR2
1222
 
1223
CPETR1          LD A,C
1224
                POP HL
1225
                POP DE
1226
                POP BC
1227
                RET
1228
 
1229
COMPARF         PUSH DE
1230
                LD DE,8
1231
                ADD HL,DE
1232
                POP DE
1233
                LD B,3
1234
                LD A,(DE)
1235
                CP (HL)
1236
                RET NZ
1237
                INC HL
1238
                INC DE
1239
                DJNZ $-5
1240
                RET
1241
 
1242
OPENFIL         CALL SET_MP3
1243
                CALL GETFZAP
1244
                LD DE,0X14
1245
                ADD HL,DE
1246
                LD C,(HL)
1247
                INC HL
1248
                LD B,(HL)
1249
                LD E,5
1250
                ADD HL,DE
1251
                LD E,(HL)
1252
                INC HL
1253
                LD D,(HL)
1254
                LD (TFILCLS),DE
1255
                LD (TFILCLS+2),BC
1256
                INC HL
1257
                LD E,(HL)
1258
                INC HL
1259
                LD D,(HL)
1260
                INC HL
1261
                LD C,(HL)
1262
                INC HL
1263
                LD B,(HL)
1264
                LD A,D
1265
                AND 1
1266
                OR E
1267
                EX AF,AF'
1268
                CALL BCDE200
1269
                LD A,(BYTSSEC)
1270
                LD H,A
1271
                DEC A
1272
                AND E
1273
                LD L,A
1274
                EX AF,AF'
1275
                JR Z,$+3
1276
                INC L
1277
                LD A,L
1278
                LD (MPHWOST),A
1279
                LD A,H
1280
                CALL BCDE_A
1281
                LD (KOL_CLS),DE
1282
                LD (KOL_CLS+2),BC
1283
                XOR A
1284
                LD (NUMSECK),A
1285
                RET
1286
 
1287
NEXTSEC         LD HL,KOL_CLS
1288
                LD A,(HL)
1289
                INC HL
1290
                OR (HL)
1291
                INC HL
1292
                OR (HL)
1293
                INC HL
1294
                OR (HL)
1295
                JR Z,LSTCLSF
1296
                LD DE,(TFILCLS)
1297
                LD BC,(TFILCLS+2)
1298
                PUSH DE
1299
                PUSH BC
1300
                CALL REALSEC
1301
                LD HL,(NUMSECK)
1302
                LD H,0
1303
                ADD HL,DE
1304
                EX DE,HL
1305
                LD HL,0
1306
                ADC HL,BC
1307
                LD B,H
1308
                LD C,L
1309
                LD A,9
1310
                CALL COM__SD
1311
                POP BC
1312
                POP DE
1313
                LD A,(NUMSECK)
1314
                INC A
1315
                LD H,A
1316
                LD (NUMSECK),A
1317
                LD A,(BYTSSEC)
1318
                CP H
1319
                RET NZ
1320
                XOR A
1321
                LD (NUMSECK),A
1322
                CALL RDFATZP
1323
                LD (TFILCLS),DE
1324
                LD (TFILCLS+2),BC
1325
                LD HL,KOL_CLS
1326
                LD DE,1
1327
                LD B,D
1328
                LD C,D
1329
                CALL BCDEHLM
1330
                LD (KOL_CLS),DE
1331
                LD (KOL_CLS+2),BC
1332
                XOR A
1333
                INC A
1334
                RET
1335
 
1336
LSTCLSF         LD DE,(TFILCLS)
1337
                LD BC,(TFILCLS+2)
1338
                CALL REALSEC
1339
                LD HL,(NUMSECK)
1340
                LD H,0
1341
                ADD HL,DE
1342
                EX DE,HL
1343
                LD HL,0
1344
                ADC HL,BC
1345
                LD B,H
1346
                LD C,L
1347
                LD A,9
1348
                CALL COM__SD
1349
                LD A,(NUMSECK)
1350
                INC A
1351
                LD H,A
1352
                LD (NUMSECK),A
1353
                LD A,(MPHWOST)
1354
                AND A
1355
                RET Z
1356
                CP H
1357
                RET
1358
 
1359
SET_MP3         LD H,B
1360
                LD L,C
1361
                LD DE,FORFILE
1362
                ADD HL,HL
1363
                ADD HL,HL
1364
                ADD HL,DE
1365
                LD E,(HL)
1366
                INC HL
1367
                LD D,(HL)
1368
                INC HL
1369
                PUSH HL
1370
                LD A,PG4DIR
1371
                OUT (0),A
1372
                EX DE,HL
1373
                LD DE,TEK_DIR
1374
                LDI
1375
                LDI
1376
                LDI
1377
                LDI
1378
                LD DE,(TEK_DIR)
1379
                LD BC,(TEK_DIR+2)
1380
                CALL INIRTSC
1381
                LD A,PG4MP3
1382
                OUT (0),A
1383
                POP HL
1384
                LD E,(HL)
1385
                INC HL
1386
                LD D,(HL)
1387
                LD (TEK_ZAP),DE
1388
                RET
1389
 
1390
PRVDIR          LD HL,(KOLVDIR)
1391
                LD DE,2
1392
                AND A
1393
                SBC HL,DE
1394
                RET C
1395
                LD HL,(KOLVMP3)
1396
                AND A
1397
                SBC HL,DE
1398
                RET C
1399
                LD H,B
1400
                LD L,C
1401
                LD DE,FORFILE
1402
                ADD HL,HL
1403
                ADD HL,HL
1404
                ADD HL,DE
1405
                PUSH HL
1406
                POP IX
1407
                LD H,B
1408
                LD L,C
1409
                LD BC,(KOLVMP3)
1410
                LD DE,0XFFFC
1411
                EXX
1412
                LD L,(IX)
1413
                LD H,(IX+1)
1414
                EXX
1415
                CALL PRVDIR2
1416
                CALL PRVDIR2
1417
                LD DE,4
1418
                JR NXTDIR2
1419
 
1420
PRVDIR2         EXX
1421
                LD D,H
1422
                LD E,L
1423
                LD L,(IX)
1424
                LD H,(IX+1)
1425
                AND A
1426
                SBC HL,DE
1427
                EX AF,AF'
1428
                ADD HL,DE
1429
                EX AF,AF'
1430
                EXX
1431
                RET NZ
1432
                LD A,H
1433
                OR L
1434
                JR Z,PRVDIR4
1435
                DEC HL
1436
                ADD IX,DE
1437
                JR PRVDIR2
1438
 
1439
PRVDIR4         LD H,B
1440
                LD L,C
1441
                DEC HL
1442
                ADD HL,HL
1443
                ADD HL,HL
1444
                LD IX,FORFILE
1445
                EX DE,HL
1446
                ADD IX,DE
1447
                EX DE,HL
1448
                LD H,B
1449
                LD L,C
1450
                DEC HL
1451
                JR PRVDIR2
1452
 
1453
NXTDIR          LD HL,(KOLVDIR)
1454
                LD DE,2
1455
                AND A
1456
                SBC HL,DE
1457
                RET C
1458
                LD HL,(KOLVMP3)
1459
                AND A
1460
                SBC HL,DE
1461
                RET C
1462
                LD H,B
1463
                LD L,C
1464
                LD DE,FORFILE
1465
                ADD HL,HL
1466
                ADD HL,HL
1467
                ADD HL,DE
1468
                PUSH HL
1469
                POP IX
1470
                LD H,B
1471
                LD L,C
1472
                LD BC,(KOLVMP3)
1473
                LD DE,4
1474
                EXX
1475
                LD L,(IX)
1476
                LD H,(IX+1)
1477
                EXX
1478
NXTDIR2         EXX
1479
                LD D,H
1480
                LD E,L
1481
                LD L,(IX)
1482
                LD H,(IX+1)
1483
                AND A
1484
                SBC HL,DE
1485
                EX AF,AF'
1486
                ADD HL,DE
1487
                EX AF,AF'
1488
                EXX
1489
                JR NZ,NXTDIR3
1490
                INC HL
1491
                ADD IX,DE
1492
                AND A
1493
                SBC HL,BC
1494
                EX AF,AF'
1495
                ADD HL,BC
1496
                EX AF,AF'
1497
                JR NZ,NXTDIR2
1498
                LD HL,0
1499
                LD IX,FORFILE
1500
                JR NXTDIR2
1501
 
1502
NXTDIR3         LD B,H
1503
                LD C,L
1504
                RET