Rev 129 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 129 | Rev 384 | ||
---|---|---|---|
Line 3... | Line 3... | ||
3 | ;********************************************************** |
3 | ;********************************************************** |
4 | ; Àâòîð èñõîäíîãî òåêñòà Êóëàêîâ Âëàäèìèð Ãåííàäüåâè÷. |
4 | ; Àâòîð èñõîäíîãî òåêñòà Êóëàêîâ Âëàäèìèð Ãåííàäüåâè÷. |
5 | ; Àäàïòàöèÿ è äîðàáîòêà Mario79 |
5 | ; Àäàïòàöèÿ è äîðàáîòêà Mario79 |
Line 6... | Line 6... | ||
6 | 6 | ||
7 | give_back_application_data: ; ïåðåñëàòü ïðèëîæåíèþ |
7 | give_back_application_data: ; ïåðåñëàòü ïðèëîæåíèþ |
8 | mov edi,[0x3010] |
8 | mov edi,[TASK_BASE] |
9 | mov edi,[edi+TASKDATA.mem_start] |
9 | mov edi,[edi+TASKDATA.mem_start] |
10 | add edi,ecx |
10 | add edi,ecx |
11 | give_back_application_data_1: |
11 | give_back_application_data_1: |
12 | mov esi,0xD000 ;FDD_DataBuffer ;0x40000 |
12 | mov esi,FDD_BUFF ;FDD_DataBuffer ;0x40000 |
13 | xor ecx,ecx |
13 | xor ecx,ecx |
14 | mov cx,128 |
14 | mov cx,128 |
15 | cld |
15 | cld |
16 | rep movsd |
16 | rep movsd |
Line 17... | Line 17... | ||
17 | ret |
17 | ret |
18 | 18 | ||
19 | take_data_from_application: ; âçÿòü èç ïðèëîæåíèÿ |
19 | take_data_from_application: ; âçÿòü èç ïðèëîæåíè |
20 | mov esi,[0x3010] |
20 | mov esi,[TASK_BASE] |
21 | mov esi,[esi+TASKDATA.mem_start] |
21 | mov esi,[esi+TASKDATA.mem_start] |
22 | add esi,ecx |
22 | add esi,ecx |
23 | take_data_from_application_1: |
23 | take_data_from_application_1: |
24 | mov edi,0xD000 ;FDD_DataBuffer ;0x40000 |
24 | mov edi,FDD_BUFF ;FDD_DataBuffer ;0x40000 |
25 | xor ecx,ecx |
25 | xor ecx,ecx |
26 | mov cx,128 |
26 | mov cx,128 |
27 | cld |
27 | cld |
Line 64... | Line 64... | ||
64 | FDC_ST2 DB ? |
64 | FDC_ST2 DB ? |
65 | FDC_C DB ? |
65 | FDC_C DB ? |
66 | FDC_H DB ? |
66 | FDC_H DB ? |
67 | FDC_R DB ? |
67 | FDC_R DB ? |
68 | FDC_N DB ? |
68 | FDC_N DB ? |
69 | ; Ñ÷åò÷èê ïîâòîðåíèÿ îïåðàöèè ÷òåíèÿ |
69 | ; Ñ÷åò÷èê ïîâòîðåíèÿ îïåðàöèè ÷òåíè |
70 | ReadRepCounter DB ? |
70 | ReadRepCounter DB ? |
71 | ; Ñ÷åò÷èê ïîâòîðåíèÿ îïåðàöèè ðåêàëèáðîâêè |
71 | ; Ñ÷åò÷èê ïîâòîðåíèÿ îïåðàöèè ðåêàëèáðîâêè |
72 | RecalRepCounter DB ? |
72 | RecalRepCounter DB ? |
73 | endg |
73 | endg |
74 | ; Îáëàñòü ïàìÿòè äëÿ õðàíåíèÿ ïðî÷èòàííîãî ñåêòîðà |
74 | ; Îáëàñòü ïàìÿòè äëÿ õðàíåíèÿ ïðî÷èòàííîãî ñåêòîðà |
Line 172... | Line 172... | ||
172 | 172 | ||
173 | ;********************************************* |
173 | ;********************************************* |
174 | ;* ÎÁÐÀÁÎÒ×ÈÊ ÏÐÅÐÛÂÀÍÈß ÎÒ ÊÎÍÒÐÎËËÅÐÀ ÍÃÌÄ * |
174 | ;* ÎÁÐÀÁÎÒ×ÈÊ ÏÐÅÐÛÂÀÍÈß ÎÒ ÊÎÍÒÐÎËËÅÐÀ ÍÃÌÄ * |
175 | ;********************************************* |
175 | ;********************************************* |
176 | FDCInterrupt: |
176 | FDCInterrupt: |
177 | ; Óñòàíîâèòü ôëàã ïðåðûâàíèÿ |
177 | ; Óñòàíîâèòü ôëàã ïðåðûâàíè |
178 | mov [FDD_IntFlag],1 |
178 | mov [FDD_IntFlag],1 |
Line 179... | Line 179... | ||
179 | ret |
179 | ret |
Line 192... | Line 192... | ||
192 | ;******************************************* |
192 | ;******************************************* |
193 | WaitFDCInterrupt: |
193 | WaitFDCInterrupt: |
194 | pusha |
194 | pusha |
195 | ; Ñáðîñèòü áàéò ñîñòîÿíèÿ îïåðàöèè |
195 | ; Ñáðîñèòü áàéò ñîñòîÿíèÿ îïåðàöèè |
196 | mov [FDC_Status],FDC_Normal |
196 | mov [FDC_Status],FDC_Normal |
197 | ; Ñáðîñèòü ôëàã ïðåðûâàíèÿ |
197 | ; Ñáðîñèòü ôëàã ïðåðûâàíè |
198 | mov [FDD_IntFlag],0 |
198 | mov [FDD_IntFlag],0 |
199 | ; Îáíóëèòü ñ÷åò÷èê òèêîâ |
199 | ; Îáíóëèòü ñ÷åò÷èê òèêîâ |
200 | mov eax,[timer_ticks] |
200 | mov eax,[timer_ticks] |
201 | mov [TickCounter],eax |
201 | mov [TickCounter],eax |
202 | ; Îæèäàòü óñòàíîâêè ôëàãà ïðåðûâàíèÿ ÍÃÌÄ |
202 | ; Îæèäàòü óñòàíîâêè ôëàãà ïðåðûâàíèÿ ÍÃÌÄ |
Line 350... | Line 350... | ||
350 | pusha |
350 | pusha |
351 | call save_timer_fdd_motor |
351 | call save_timer_fdd_motor |
352 | ; Ïîäàòü êîìàíäó "Ïîèñê" |
352 | ; Ïîäàòü êîìàíäó "Ïîèñê" |
353 | mov AL,0Fh |
353 | mov AL,0Fh |
354 | call FDCDataOutput |
354 | call FDCDataOutput |
355 | ; Ïåðåäàòü áàéò íîìåðà ãîëîâêè/íàêîïèòåëÿ |
355 | ; Ïåðåäàòü áàéò íîìåðà ãîëîâêè/íàêîïèòåë |
356 | mov AL,[FDD_Head] |
356 | mov AL,[FDD_Head] |
357 | shl AL,2 |
357 | shl AL,2 |
358 | call FDCDataOutput |
358 | call FDCDataOutput |
359 | ; Ïåðåäàòü áàéò íîìåðà äîðîæêè |
359 | ; Ïåðåäàòü áàéò íîìåðà äîðîæêè |
360 | mov AL,[FDD_Track] |
360 | mov AL,[FDD_Track] |
Line 465... | Line 465... | ||
465 | ReadSectWithRetr: |
465 | ReadSectWithRetr: |
466 | pusha |
466 | pusha |
467 | ; Îáíóëèòü ñ÷åò÷èê ïîâòîðåíèÿ îïåðàöèè ðåêàëèáðîâêè |
467 | ; Îáíóëèòü ñ÷åò÷èê ïîâòîðåíèÿ îïåðàöèè ðåêàëèáðîâêè |
468 | mov [RecalRepCounter],0 |
468 | mov [RecalRepCounter],0 |
469 | @@TryAgain: |
469 | @@TryAgain: |
470 | ; Îáíóëèòü ñ÷åò÷èê ïîâòîðåíèÿ îïåðàöèè ÷òåíèÿ |
470 | ; Îáíóëèòü ñ÷åò÷èê ïîâòîðåíèÿ îïåðàöèè ÷òåíè |
471 | mov [ReadRepCounter],0 |
471 | mov [ReadRepCounter],0 |
472 | @@ReadSector_1: |
472 | @@ReadSector_1: |
473 | call ReadSector |
473 | call ReadSector |
474 | cmp [FDC_Status],0 |
474 | cmp [FDC_Status],0 |
475 | je @@Exit_2 |
475 | je @@Exit_2 |
476 | cmp [FDC_Status],1 |
476 | cmp [FDC_Status],1 |
477 | je @@Err_3 |
477 | je @@Err_3 |
478 | ; Òðîåêðàòíîå ïîâòîðåíèå ÷òåíèÿ |
478 | ; Òðîåêðàòíîå ïîâòîðåíèå ÷òåíè |
479 | inc [ReadRepCounter] |
479 | inc [ReadRepCounter] |
480 | cmp [ReadRepCounter],3 |
480 | cmp [ReadRepCounter],3 |
481 | jb @@ReadSector_1 |
481 | jb @@ReadSector_1 |
482 | ; Òðîåêðàòíîå ïîâòîðåíèå ðåêàëèáðîâêè |
482 | ; Òðîåêðàòíîå ïîâòîðåíèå ðåêàëèáðîâêè |
483 | call RecalibrateFDD |
483 | call RecalibrateFDD |
Line 563... | Line 563... | ||
563 | WriteSectWithRetr: |
563 | WriteSectWithRetr: |
564 | pusha |
564 | pusha |
565 | ; Îáíóëèòü ñ÷åò÷èê ïîâòîðåíèÿ îïåðàöèè ðåêàëèáðîâêè |
565 | ; Îáíóëèòü ñ÷åò÷èê ïîâòîðåíèÿ îïåðàöèè ðåêàëèáðîâêè |
566 | mov [RecalRepCounter],0 |
566 | mov [RecalRepCounter],0 |
567 | @@TryAgain_1: |
567 | @@TryAgain_1: |
568 | ; Îáíóëèòü ñ÷åò÷èê ïîâòîðåíèÿ îïåðàöèè ÷òåíèÿ |
568 | ; Îáíóëèòü ñ÷åò÷èê ïîâòîðåíèÿ îïåðàöèè ÷òåíè |
569 | mov [ReadRepCounter],0 |
569 | mov [ReadRepCounter],0 |
570 | @@WriteSector_1: |
570 | @@WriteSector_1: |
571 | call WriteSector |
571 | call WriteSector |
572 | cmp [FDC_Status],0 |
572 | cmp [FDC_Status],0 |
573 | je @@Exit_4 |
573 | je @@Exit_4 |
574 | cmp [FDC_Status],1 |
574 | cmp [FDC_Status],1 |
575 | je @@Err_4 |
575 | je @@Err_4 |
576 | ; Òðîåêðàòíîå ïîâòîðåíèå ÷òåíèÿ |
576 | ; Òðîåêðàòíîå ïîâòîðåíèå ÷òåíè |
577 | inc [ReadRepCounter] |
577 | inc [ReadRepCounter] |
578 | cmp [ReadRepCounter],3 |
578 | cmp [ReadRepCounter],3 |
579 | jb @@WriteSector_1 |
579 | jb @@WriteSector_1 |
580 | ; Òðîåêðàòíîå ïîâòîðåíèå ðåêàëèáðîâêè |
580 | ; Òðîåêðàòíîå ïîâòîðåíèå ðåêàëèáðîâêè |
581 | call RecalibrateFDD |
581 | call RecalibrateFDD |