Rev 543 | Rev 593 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 543 | Rev 585 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | $Revision: 543 $ |
1 | $Revision: 585 $ |
2 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
2 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
3 | ;; ;; |
3 | ;; ;; |
4 | ;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;; |
4 | ;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;; |
5 | ;; Distributed under terms of the GNU General Public License ;; |
5 | ;; Distributed under terms of the GNU General Public License ;; |
6 | ;; ;; |
6 | ;; ;; |
Line 14... | Line 14... | ||
14 | 14 | ||
15 | ; Ïðîöåäóðà äëÿ ïîëíîãî ñ÷èòûâàíèÿ âñåõ |
15 | ; Ïðîöåäóðà äëÿ ïîëíîãî ñ÷èòûâàíèÿ âñåõ |
16 | ; äàííûõ èç ñåêòîðà êîìïàêò-äèñêà |
16 | ; äàííûõ èç ñåêòîðà êîìïàêò-äèñêà |
Line 17... | Line -... | ||
17 | ; Àâòîð òåêñòà ïðîãðàììû Êóëàêîâ Âëàäèìèð Ãåííàäüåâè÷. |
- | |
18 | 17 | ; Àâòîð òåêñòà ïðîãðàììû Êóëàêîâ Âëàäèìèð Ãåííàäüåâè÷. |
|
19 | 18 | ||
20 | ; Ìàêñèìàëüíîå êîëè÷åñòâî ïîâòîðåíèé îïåðàöèè ÷òåíèÿ |
19 | ; Ìàêñèìàëüíîå êîëè÷åñòâî ïîâòîðåíèé îïåðàöèè ÷òåíèÿ |
21 | MaxRetr equ 10 |
20 | MaxRetr equ 10 |
22 | ; Ïðåäåëüíîå âðåìÿ îæèäàíèÿ ãîòîâíîñòè ê ïðèåìó êîìàíäû |
21 | ; Ïðåäåëüíîå âðåìÿ îæèäàíèÿ ãîòîâíîñòè ê ïðèåìó êîìàíäû |
Line 66... | Line 65... | ||
66 | ;******************************************** |
65 | ;******************************************** |
67 | ;* ×ÒÅÍÈÅ ÑÅÊÒÎÐÀ Ñ ÏÎÂÒÎÐÀÌÈ * |
66 | ;* ×ÒÅÍÈÅ ÑÅÊÒÎÐÀ Ñ ÏÎÂÒÎÐÀÌÈ * |
68 | ;* Ìíîãîêðàòíîå ïîâòîðåíèå ÷òåíèÿ ïðè ñáîÿõ * |
67 | ;* Ìíîãîêðàòíîå ïîâòîðåíèå ÷òåíèÿ ïðè ñáîÿõ * |
69 | ;******************************************** |
68 | ;******************************************** |
70 | ReadCDWRetr: |
69 | ReadCDWRetr: |
- | 70 | ;----------------------------------------------------------- |
|
- | 71 | ; input : eax = block to read |
|
- | 72 | ; ebx = destination |
|
- | 73 | ;----------------------------------------------------------- |
|
- | 74 | pushad |
|
- | 75 | mov eax,[CDSectorAddress] |
|
- | 76 | mov ebx,[CDDataBuf_pointer] |
|
- | 77 | call cd_calculate_cache |
|
- | 78 | add esi,8 |
|
- | 79 | mov edi,1 |
|
- | 80 | .hdreadcache: |
|
- | 81 | ; push esi |
|
- | 82 | ; mov esi,[esi] |
|
- | 83 | ; call test_mario79 |
|
- | 84 | ; mov esi,eax |
|
- | 85 | ; call test_mario79 |
|
- | 86 | ; pop esi |
|
- | 87 | ||
- | 88 | ; cmp dword [esi+4],0 ; empty |
|
- | 89 | ; je .nohdcache |
|
- | 90 | cmp [esi],eax ; correct sector |
|
- | 91 | je .yeshdcache |
|
- | 92 | .nohdcache: |
|
- | 93 | add esi,8 |
|
- | 94 | inc edi |
|
- | 95 | dec ecx |
|
- | 96 | jnz .hdreadcache |
|
- | 97 | call find_empty_slot_CD_cache ; ret in edi |
|
- | 98 | ||
- | 99 | push edi |
|
- | 100 | push eax |
|
- | 101 | call cd_calculate_cache_2 |
|
- | 102 | shl edi,11 |
|
- | 103 | add edi,eax |
|
- | 104 | mov [CDDataBuf_pointer],edi |
|
- | 105 | pop eax |
|
- | 106 | pop edi |
|
- | 107 | ||
- | 108 | call ReadCDWRetr_1 |
|
- | 109 | mov [CDDataBuf_pointer],ebx |
|
- | 110 | call cd_calculate_cache_1 |
|
- | 111 | lea esi,[edi*8+esi] |
|
- | 112 | ; push esi |
|
- | 113 | ; call test_mario79 |
|
- | 114 | ; mov esi,eax |
|
- | 115 | ; call test_mario79 |
|
- | 116 | ; pop esi |
|
- | 117 | mov [esi],eax ; sector number |
|
- | 118 | ; mov dword [esi+4],1 ; hd read - mark as same as in hd |
|
- | 119 | .yeshdcache: |
|
- | 120 | mov esi,edi |
|
- | 121 | shl esi,11 ;9 |
|
- | 122 | push eax |
|
- | 123 | call cd_calculate_cache_2 |
|
- | 124 | add esi,eax |
|
- | 125 | pop eax |
|
- | 126 | mov edi,ebx ;[CDDataBuf_pointer] |
|
- | 127 | mov ecx,512 ;/4 |
|
- | 128 | cld |
|
- | 129 | rep movsd ; move data |
|
- | 130 | popad |
|
- | 131 | ret |
|
- | 132 | ||
- | 133 | ReadCDWRetr_1: |
|
71 | pushad |
134 | pushad |
Line 72... | Line 135... | ||
72 | 135 | ||
73 | ; Öèêë, ïîêà êîìàíäà íå âûïîëíåíà óñïåøíî èëè íå |
136 | ; Öèêë, ïîêà êîìàíäà íå âûïîëíåíà óñïåøíî èëè íå |
74 | ; èñ÷åðïàíî êîëè÷åñòâî ïîïûòîê |
137 | ; èñ÷åðïàíî êîëè÷åñòâî ïîïûòîê |
Line 515... | Line 578... | ||
515 | mov [DevErrorCode],1 |
578 | mov [DevErrorCode],1 |
516 | @@End_11: |
579 | @@End_11: |
517 | popa |
580 | popa |
518 | ret |
581 | ret |
Line -... | Line 582... | ||
- | 582 | ||
- | 583 | ;************************************************* |
|
- | 584 | ;* ÇÀÏÐÅÒÈÒÜ ÑÌÅÍÓ ÄÈÑÊÀ * |
|
- | 585 | ;* Âõîäíûå ïàðàìåòðû ïåðåäàþòñÿ ÷åðåç ãëîáàëüíûå * |
|
- | 586 | ;* ïåðìåííûå: * |
|
- | 587 | ;* ChannelNumber - íîìåð êàíàëà; * |
|
- | 588 | ;* DiskNumber - íîìåð äèñêà íà êàíàëå. * |
|
- | 589 | ;************************************************* |
|
- | 590 | prevent_medium_removal: |
|
- | 591 | pusha |
|
- | 592 | ; Î÷èñòèòü áóôåð ïàêåòíîé êîìàíäû |
|
- | 593 | call clear_packet_buffer |
|
- | 594 | ; Çàäàòü êîä êîìàíäû |
|
- | 595 | mov [PacketCommand],byte 0x1E |
|
- | 596 | ; Çàäàòü êîä çàïðåòà |
|
- | 597 | mov [PacketCommand+4],byte 11b |
|
- | 598 | ; Ïîäàòü êîìàíäó |
|
- | 599 | call SendPacketNoDatCommand |
|
- | 600 | popa |
|
- | 601 | ret |
|
- | 602 | ||
- | 603 | ;************************************************* |
|
- | 604 | ;* ÐÀÇÐÅØÈÒÜ ÑÌÅÍÓ ÄÈÑÊÀ * |
|
- | 605 | ;* Âõîäíûå ïàðàìåòðû ïåðåäàþòñÿ ÷åðåç ãëîáàëüíûå * |
|
- | 606 | ;* ïåðìåííûå: * |
|
- | 607 | ;* ChannelNumber - íîìåð êàíàëà; * |
|
- | 608 | ;* DiskNumber - íîìåð äèñêà íà êàíàëå. * |
|
- | 609 | ;************************************************* |
|
- | 610 | allow_medium_removal: |
|
- | 611 | pusha |
|
- | 612 | ; Î÷èñòèòü áóôåð ïàêåòíîé êîìàíäû |
|
- | 613 | call clear_packet_buffer |
|
- | 614 | ; Çàäàòü êîä êîìàíäû |
|
- | 615 | mov [PacketCommand],byte 0x1E |
|
- | 616 | ; Çàäàòü êîä çàïðåòà |
|
- | 617 | mov [PacketCommand+4],byte 00b |
|
- | 618 | ; Ïîäàòü êîìàíäó |
|
- | 619 | call SendPacketNoDatCommand |
|
- | 620 | popa |
|
Line 519... | Line 621... | ||
519 | 621 | ret |
|
520 | 622 | ||
521 | ;************************************************* |
623 | ;************************************************* |
522 | ;* ÇÀÃÐÓÇÈÒÜ ÍÎÑÈÒÅËÜ Â ÄÈÑÊÎÂÎÄ * |
624 | ;* ÇÀÃÐÓÇÈÒÜ ÍÎÑÈÒÅËÜ Â ÄÈÑÊÎÂÎÄ * |
Line 544... | Line 646... | ||
544 | ;* Âõîäíûå ïàðàìåòðû ïåðåäàþòñÿ ÷åðåç ãëîáàëüíûå * |
646 | ;* Âõîäíûå ïàðàìåòðû ïåðåäàþòñÿ ÷åðåç ãëîáàëüíûå * |
545 | ;* ïåðìåííûå: * |
647 | ;* ïåðìåííûå: * |
546 | ;* ChannelNumber - íîìåð êàíàëà; * |
648 | ;* ChannelNumber - íîìåð êàíàëà; * |
547 | ;* DiskNumber - íîìåð äèñêà íà êàíàëå. * |
649 | ;* DiskNumber - íîìåð äèñêà íà êàíàëå. * |
548 | ;************************************************* |
650 | ;************************************************* |
549 | UnloadMedium: |
651 | EjectMedium: |
550 | pusha |
652 | pusha |
551 | ; Î÷èñòèòü áóôåð ïàêåòíîé êîìàíäû |
653 | ; Î÷èñòèòü áóôåð ïàêåòíîé êîìàíäû |
552 | call clear_packet_buffer |
654 | call clear_packet_buffer |
553 | ; Ñôîðìèðîâàòü êîìàíäó START/STOP UNIT |
655 | ; Ñôîðìèðîâàòü êîìàíäó START/STOP UNIT |
554 | ; Çàäàòü êîä êîìàíäû |
656 | ; Çàäàòü êîä êîìàíäû |