Subversion Repositories Kolibri OS

Rev

Rev 4287 | Rev 5565 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4287 Rev 5201
Line 3... Line 3...
3
;; Copyright (C) KolibriOS team 2004-2011. All rights reserved. ;;
3
;; Copyright (C) KolibriOS team 2004-2011. All rights reserved. ;;
4
;; Distributed under terms of the GNU General Public License    ;;
4
;; Distributed under terms of the GNU General Public License    ;;
5
;;                                                              ;;
5
;;                                                              ;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 7... Line 7...
7
 
7
 
Line 8... Line 8...
8
$Revision: 4287 $
8
$Revision: 5201 $
9
 
9
 
10
ERROR_SUCCESS        = 0
10
ERROR_SUCCESS        = 0
11
ERROR_DISK_BASE      = 1
11
ERROR_DISK_BASE      = 1
Line 41... Line 41...
41
        dd      fs_OnCd2
41
        dd      fs_OnCd2
42
        dd      fs_NextCd
42
        dd      fs_NextCd
43
        db      3,'cd3'
43
        db      3,'cd3'
44
        dd      fs_OnCd3
44
        dd      fs_OnCd3
45
        dd      fs_NextCd
45
        dd      fs_NextCd
-
 
46
        db      3,'cd4'
-
 
47
        dd      fs_OnCd4
-
 
48
        dd      fs_NextCd
-
 
49
        db      3,'cd5'
-
 
50
        dd      fs_OnCd5
-
 
51
        dd      fs_NextCd
-
 
52
        db      3,'cd6'
-
 
53
        dd      fs_OnCd6
-
 
54
        dd      fs_NextCd
-
 
55
        db      3,'cd7'
-
 
56
        dd      fs_OnCd7
-
 
57
        dd      fs_NextCd
-
 
58
        db      3,'cd8'
-
 
59
        dd      fs_OnCd8
-
 
60
        dd      fs_NextCd
-
 
61
        db      3,'cd9'
-
 
62
        dd      fs_OnCd9
-
 
63
        dd      fs_NextCd
-
 
64
        db      4,'cd10'
-
 
65
        dd      fs_OnCd10
-
 
66
        dd      fs_NextCd
-
 
67
        db      4,'cd11'
-
 
68
        dd      fs_OnCd11
-
 
69
        dd      fs_NextCd
46
;***********************************************
70
;***********************************************
47
        db      0
71
        db      0
Line 48... Line 72...
48
 
72
 
Line 55... Line 79...
55
        db      'cd1',0
79
        db      'cd1',0
56
        dd      fs_HasCd2
80
        dd      fs_HasCd2
57
        db      'cd2',0
81
        db      'cd2',0
58
        dd      fs_HasCd3
82
        dd      fs_HasCd3
59
        db      'cd3',0
83
        db      'cd3',0
-
 
84
        dd      fs_HasCd4
-
 
85
        db      'cd4',0
-
 
86
        dd      fs_HasCd5
-
 
87
        db      'cd5',0
-
 
88
        dd      fs_HasCd6
-
 
89
        db      'cd6',0
-
 
90
        dd      fs_HasCd7
-
 
91
        db      'cd7',0
-
 
92
        dd      fs_HasCd8
-
 
93
        db      'cd8',0
-
 
94
        dd      fs_HasCd9
-
 
95
        db      'cd9',0
-
 
96
        dd      fs_HasCd10
-
 
97
        db      'cd10',0
-
 
98
        dd      fs_HasCd11
-
 
99
        db      'cd11',0
60
;**********************************************
100
;**********************************************
61
        dd      0
101
        dd      0
62
endg
102
endg
Line 63... Line 103...
63
 
103
 
Line 147... Line 187...
147
        mov     esi, [edi+4]
187
        mov     esi, [edi+4]
148
.maindir_noesi:
188
.maindir_noesi:
149
        cmp     dword [ebx], 1
189
        cmp     dword [ebx], 1
150
        jnz     .access_denied
190
        jnz     .access_denied
151
        xor     eax, eax
191
        xor     eax, eax
152
        mov     ebp, [ebx+12]                   ;количество блоков для считывания
192
        mov     ebp, [ebx+12] ;the number of blocks to read
153
        mov     edx, [ebx+16]                   ;куда записывать рузельтат
193
        mov     edx, [ebx+16] ;where to write the result
154
    ;    add     edx, std_application_base_address
194
    ;    add     edx, std_application_base_address
155
        push    dword [ebx+4]   ; first block
195
        push    dword [ebx+4]   ; first block
156
        mov     ebx, [ebx+8]    ; flags
196
        mov     ebx, [ebx+8]    ; flags
157
; ebx=flags, [esp]=first block, ebp=number of blocks, edx=return area, esi='Next' handler
197
; ebx=flags, [esp]=first block, ebp=number of blocks, edx=return area, esi='Next' handler
158
        mov     edi, edx
198
        mov     edi, edx
Line 402... Line 442...
402
; out: [image_of_eax]=image of eax, [image_of_ebx]=image of ebx
442
; out: [image_of_eax]=image of eax, [image_of_ebx]=image of ebx
Line 403... Line 443...
403
 
443
 
404
fs_NotImplemented:
444
fs_NotImplemented:
405
        mov     eax, 2
445
        mov     eax, 2
406
        ret
-
 
407
 
446
        ret
408
;*******************************************************
447
;-----------------------------------------------------------------------------
409
fs_OnCd0:
448
fs_OnCd0:
410
        call    reserve_cd
449
        call    reserve_cd
411
        mov     [ChannelNumber], 1
450
        mov     [ChannelNumber], 1
412
        mov     [DiskNumber], 0
451
        mov     [DiskNumber], 0
413
        push    6
452
        push    6
414
        push    1
453
        push    1
-
 
454
        jmp     fs_OnCd
415
        jmp     fs_OnCd
455
;-----------------------------------------------------------------------------
416
fs_OnCd1:
456
fs_OnCd1:
417
        call    reserve_cd
457
        call    reserve_cd
418
        mov     [ChannelNumber], 1
458
        mov     [ChannelNumber], 1
419
        mov     [DiskNumber], 1
459
        mov     [DiskNumber], 1
420
        push    4
460
        push    4
421
        push    2
461
        push    2
-
 
462
        jmp     fs_OnCd
422
        jmp     fs_OnCd
463
;-----------------------------------------------------------------------------
423
fs_OnCd2:
464
fs_OnCd2:
424
        call    reserve_cd
465
        call    reserve_cd
425
        mov     [ChannelNumber], 2
466
        mov     [ChannelNumber], 2
426
        mov     [DiskNumber], 0
467
        mov     [DiskNumber], 0
427
        push    2
468
        push    2
428
        push    3
469
        push    3
-
 
470
        jmp     fs_OnCd
429
        jmp     fs_OnCd
471
;-----------------------------------------------------------------------------
430
fs_OnCd3:
472
fs_OnCd3:
431
        call    reserve_cd
473
        call    reserve_cd
432
        mov     [ChannelNumber], 2
474
        mov     [ChannelNumber], 2
433
        mov     [DiskNumber], 1
475
        mov     [DiskNumber], 1
434
        push    0
476
        push    0
-
 
477
        push    4
-
 
478
        jmp     fs_OnCd
-
 
479
;-----------------------------------------------------------------------------
-
 
480
fs_OnCd4:
-
 
481
        call    reserve_cd
-
 
482
        mov     [ChannelNumber], 1
-
 
483
        mov     [DiskNumber], 0
-
 
484
        push    6
-
 
485
        push    5
-
 
486
        jmp     fs_OnCd
-
 
487
;-----------------------------------------------------------------------------
-
 
488
fs_OnCd5:
-
 
489
        call    reserve_cd
-
 
490
        mov     [ChannelNumber], 1
-
 
491
        mov     [DiskNumber], 1
-
 
492
        push    4
-
 
493
        push    6
-
 
494
        jmp     fs_OnCd
-
 
495
;-----------------------------------------------------------------------------
-
 
496
fs_OnCd6:
-
 
497
        call    reserve_cd
-
 
498
        mov     [ChannelNumber], 2
-
 
499
        mov     [DiskNumber], 0
-
 
500
        push    2
-
 
501
        push    7
-
 
502
        jmp     fs_OnCd
-
 
503
;-----------------------------------------------------------------------------
-
 
504
fs_OnCd7:
-
 
505
        call    reserve_cd
-
 
506
        mov     [ChannelNumber], 2
-
 
507
        mov     [DiskNumber], 1
-
 
508
        push    0
-
 
509
        push    8
-
 
510
        jmp     fs_OnCd
-
 
511
;-----------------------------------------------------------------------------
-
 
512
fs_OnCd8:
-
 
513
        call    reserve_cd
-
 
514
        mov     [ChannelNumber], 1
-
 
515
        mov     [DiskNumber], 0
-
 
516
        push    6
-
 
517
        push    9
-
 
518
        jmp     fs_OnCd
-
 
519
;-----------------------------------------------------------------------------
-
 
520
fs_OnCd9:
-
 
521
        call    reserve_cd
-
 
522
        mov     [ChannelNumber], 1
-
 
523
        mov     [DiskNumber], 1
-
 
524
        push    4
-
 
525
        push    10
-
 
526
        jmp     fs_OnCd
-
 
527
;-----------------------------------------------------------------------------
-
 
528
fs_OnCd10:
-
 
529
        call    reserve_cd
-
 
530
        mov     [ChannelNumber], 2
-
 
531
        mov     [DiskNumber], 0
-
 
532
        push    2
-
 
533
        push    11
-
 
534
        jmp     fs_OnCd
-
 
535
;-----------------------------------------------------------------------------
-
 
536
fs_OnCd11:
-
 
537
        call    reserve_cd
-
 
538
        mov     [ChannelNumber], 2
-
 
539
        mov     [DiskNumber], 1
-
 
540
        push    0
-
 
541
        push    12
435
        push    4
542
;-----------------------------------------------------------------------------
436
fs_OnCd:
-
 
437
        call    reserve_cd_channel
543
fs_OnCd:
438
        pop     eax
544
        pop     eax
-
 
545
        mov     [cdpos], eax
439
        mov     [cdpos], eax
546
        call    reserve_cd_channel
440
        pop     eax
547
        pop     eax
441
        cmp     ecx, 0x100
548
        cmp     ecx, 0x100
442
        jae     .nf
549
        jae     .nf
443
        push    ecx ebx
550
        push    ecx ebx
-
 
551
        mov     cl, al
-
 
552
 
-
 
553
        push    eax
-
 
554
        mov     eax, [cdpos]
-
 
555
        dec     eax
-
 
556
        shr     eax, 2
444
        mov     cl, al
557
        lea     eax, [eax*5]
-
 
558
        mov     bl, [eax+DRIVE_DATA+1]
-
 
559
        pop     eax
445
        mov     bl, [DRIVE_DATA+1]
560
 
446
        shr     bl, cl
561
        shr     bl, cl
447
        test    bl, 2
562
        test    bl, 2
Line 448... Line 563...
448
        pop     ebx ecx
563
        pop     ebx ecx
Line 470... Line 585...
470
.not_impl:
585
.not_impl:
471
        call    free_cd_channel
586
        call    free_cd_channel
472
        and     [cd_status], 0
587
        and     [cd_status], 0
473
        mov     dword [image_of_eax], 2       ; not implemented
588
        mov     dword [image_of_eax], 2       ; not implemented
474
        ret
589
        ret
475
 
-
 
-
 
590
;-----------------------------------------------------------------------------
476
fs_CdServices:
591
fs_CdServices:
477
        dd      fs_CdRead
592
        dd      fs_CdRead
478
        dd      fs_CdReadFolder
593
        dd      fs_CdReadFolder
479
        dd      fs_NotImplemented
594
        dd      fs_NotImplemented
480
        dd      fs_NotImplemented
595
        dd      fs_NotImplemented
Line 483... Line 598...
483
        dd      fs_NotImplemented
598
        dd      fs_NotImplemented
484
        dd      0
599
        dd      0
485
        dd      fs_NotImplemented
600
        dd      fs_NotImplemented
486
        dd      fs_NotImplemented
601
        dd      fs_NotImplemented
487
fs_NumCdServices = ($ - fs_CdServices)/4
602
fs_NumCdServices = ($ - fs_CdServices)/4
488
 
-
 
489
;*******************************************************
603
;-----------------------------------------------------------------------------
490
fs_HasCd0:
604
fs_HasCd0:
491
        test    byte [DRIVE_DATA+1], 10000000b
605
        test    byte [DRIVE_DATA+1], 10000000b
492
        setnz   al
606
        setnz   al
493
        ret
607
        ret
-
 
608
;--------------------------------------
494
fs_HasCd1:
609
fs_HasCd1:
495
        test    byte [DRIVE_DATA+1], 00100000b
610
        test    byte [DRIVE_DATA+1], 00100000b
496
        setnz   al
611
        setnz   al
497
        ret
612
        ret
-
 
613
;--------------------------------------
498
fs_HasCd2:
614
fs_HasCd2:
499
        test    byte [DRIVE_DATA+1], 00001000b
615
        test    byte [DRIVE_DATA+1], 00001000b
500
        setnz   al
616
        setnz   al
501
        ret
617
        ret
-
 
618
;--------------------------------------
502
fs_HasCd3:
619
fs_HasCd3:
503
        test    byte [DRIVE_DATA+1], 00000010b
620
        test    byte [DRIVE_DATA+1], 00000010b
504
        setnz   al
621
        setnz   al
505
        ret
622
        ret
-
 
623
;--------------------------------------
-
 
624
fs_HasCd4:
-
 
625
        test    byte [DRIVE_DATA+6], 10000000b
-
 
626
        setnz   al
-
 
627
        ret
-
 
628
;--------------------------------------
-
 
629
fs_HasCd5:
-
 
630
        test    byte [DRIVE_DATA+6], 00100000b
-
 
631
        setnz   al
-
 
632
        ret
-
 
633
;--------------------------------------
-
 
634
fs_HasCd6:
-
 
635
        test    byte [DRIVE_DATA+6], 00001000b
-
 
636
        setnz   al
-
 
637
        ret
-
 
638
;--------------------------------------
-
 
639
fs_HasCd7:
-
 
640
        test    byte [DRIVE_DATA+6], 00000010b
-
 
641
        setnz   al
-
 
642
        ret
-
 
643
;--------------------------------------
-
 
644
fs_HasCd8:
506
;*******************************************************
645
        test    byte [DRIVE_DATA+11], 10000000b
-
 
646
        setnz   al
-
 
647
        ret
-
 
648
;--------------------------------------
-
 
649
fs_HasCd9:
-
 
650
        test    byte [DRIVE_DATA+11], 00100000b
-
 
651
        setnz   al
-
 
652
        ret
-
 
653
;--------------------------------------
-
 
654
fs_HasCd10:
-
 
655
        test    byte [DRIVE_DATA+11], 00001000b
-
 
656
        setnz   al
-
 
657
        ret
-
 
658
;--------------------------------------
-
 
659
fs_HasCd11:
-
 
660
        test    byte [DRIVE_DATA+11], 00000010b
-
 
661
        setnz   al
-
 
662
        ret
-
 
663
;-----------------------------------------------------------------------------
507
 
664
;
508
; fs_NextXXX functions:
665
; fs_NextXXX functions:
509
; in: eax = partition number, from which start to scan
666
; in: eax = partition number, from which start to scan
510
; out: CF=1 => no more partitions
667
; out: CF=1 => no more partitions
511
;      CF=0 => eax=next partition number
668
;      CF=0 => eax=next partition number
512
 
669
;
513
;*******************************************************
670
;-----------------------------------------------------------------------------
514
fs_NextCd:
671
fs_NextCd:
515
; we always have /cdX/1
672
; we always have /cdX/1
516
        test    eax, eax
673
        test    eax, eax
517
        stc
674
        stc
518
        jnz     @f
675
        jnz     @f
519
        mov     al, 1
676
        mov     al, 1
520
        clc
677
        clc
521
@@:
678
@@:
522
        ret
679
        ret
523
;*******************************************************
-
 
524
 
-
 
525
;-----------------------------------------------------------------------------
680
;-----------------------------------------------------------------------------
526
process_replace_file_name:
681
process_replace_file_name:
527
; in
682
; in
528
; esi - path with filename(f.70)
683
; esi - path with filename(f.70)
529
;
684
;