Rev 102 | Rev 117 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 102 | Rev 115 | ||
---|---|---|---|
Line 69... | Line 69... | ||
69 | push edx ; +0 [xy] |
69 | push edx ; +0 [xy] |
Line 70... | Line 70... | ||
70 | 70 | ||
71 | movzx eax,word [esp+2] ; eax:=x |
71 | movzx eax,word [esp+2] ; eax:=x |
72 | movzx ebx,word [esp+0] ; ebx:=y |
72 | movzx ebx,word [esp+0] ; ebx:=y |
73 | mov ecx,[0x3010] ; |
73 | mov ecx,[0x3010] ; |
74 | add eax,[ecx-twdw] ; eax+=Xwin |
74 | add eax,[ecx-twdw+WDATA.box.left] ; eax+=Xwin |
75 | add ebx,[ecx-twdw+4] ; ebx+=Ywin |
75 | add ebx,[ecx-twdw+WDATA.box.top] ; ebx+=Ywin |
76 | mov ecx,ebx ; ecx = y+Ywin |
76 | mov ecx,ebx ; ecx = y+Ywin |
Line 77... | Line 77... | ||
77 | mov edx,eax ; edx = x+Xwin |
77 | mov edx,eax ; edx = x+Xwin |
78 | 78 | ||
Line 102... | Line 102... | ||
102 | 102 | ||
103 | push ecx ; B |
103 | push ecx ; B |
Line 104... | Line 104... | ||
104 | push eax ; LFB address |
104 | push eax ; LFB address |
105 | 105 | ||
106 | mov eax,[0x3010] |
106 | mov eax,[0x3010] |
107 | mov ecx,[eax+draw_data-0x3000+0] |
107 | mov ecx,[eax+draw_data-0x3000+RECT.left] |
Line 108... | Line 108... | ||
108 | cmp ecx,0 |
108 | cmp ecx,0 |
109 | jnz dbcblimitlset_vga |
109 | jnz dbcblimitlset_vga |
110 | 110 | ||
Line 111... | Line 111... | ||
111 | mov ecx,[eax+draw_data-0x3000+4] |
111 | mov ecx,[eax+draw_data-0x3000+RECT.top] |
112 | cmp ecx,0 |
112 | cmp ecx,0 |
113 | jnz dbcblimitlset_vga |
113 | jnz dbcblimitlset_vga |
Line 114... | Line 114... | ||
114 | 114 | ||
115 | mov ecx,[eax+draw_data-0x3000+8] |
115 | mov ecx,[eax+draw_data-0x3000+RECT.right] |
116 | cmp ecx,[0xfe00] ; ecx <> Screen X size |
116 | cmp ecx,[0xfe00] ; ecx <> Screen X size |
Line 117... | Line 117... | ||
117 | jnz dbcblimitlset_vga |
117 | jnz dbcblimitlset_vga |
118 | 118 | ||
Line 321... | Line 321... | ||
321 | push ebx ; +8 |
321 | push ebx ; +8 |
322 | push ecx ; +4 |
322 | push ecx ; +4 |
323 | push edx ; +0 |
323 | push edx ; +0 |
Line 324... | Line 324... | ||
324 | 324 | ||
325 | mov ecx,[0x3010] ; |
325 | mov ecx,[0x3010] ; |
326 | add eax,[ecx-twdw] ; eax:=Xwin+x |
326 | add eax,[ecx-twdw+WDATA.box.left] ; eax:=Xwin+x |
327 | add ebx,[ecx-twdw+4] ; ebx:=Ywin+y |
327 | add ebx,[ecx-twdw+WDATA.box.top] ; ebx:=Ywin+y |
328 | mov ecx, eax ; ecx:=(x+Xwin) |
328 | mov ecx, eax ; ecx:=(x+Xwin) |
Line 329... | Line 329... | ||
329 | mov edx, ebx ; edx:=(y+Ywin) |
329 | mov edx, ebx ; edx:=(y+Ywin) |
330 | 330 | ||
Line 375... | Line 375... | ||
375 | push eax |
375 | push eax |
376 | push ecx |
376 | push ecx |
Line 377... | Line 377... | ||
377 | 377 | ||
Line 378... | Line 378... | ||
378 | mov eax,[0x3010] |
378 | mov eax,[0x3010] |
379 | 379 | ||
380 | mov ecx,[eax+draw_data-0x3000+0] |
380 | mov ecx,[eax+draw_data-0x3000+RECT.left] |
Line 381... | Line 381... | ||
381 | cmp ecx,0 |
381 | cmp ecx,0 |
382 | jnz dbcblimitlset_vga2 |
382 | jnz dbcblimitlset_vga2 |
383 | 383 | ||
Line 384... | Line 384... | ||
384 | mov ecx,[eax+draw_data-0x3000+4] |
384 | mov ecx,[eax+draw_data-0x3000+RECT.top] |
385 | cmp ecx,0 |
385 | cmp ecx,0 |
386 | jnz dbcblimitlset_vga2 |
386 | jnz dbcblimitlset_vga2 |
Line 387... | Line 387... | ||
387 | 387 | ||
388 | mov ecx,[eax+draw_data-0x3000+8] |
388 | mov ecx,[eax+draw_data-0x3000+RECT.right] |
389 | cmp ecx,[0xfe00] |
389 | cmp ecx,[0xfe00] |
Line 390... | Line 390... | ||
390 | jnz dbcblimitlset_vga2 |
390 | jnz dbcblimitlset_vga2 |
391 | 391 | ||
Line 512... | Line 512... | ||
512 | mov edx,dword [0x400000-8] ; B |
512 | mov edx,dword [0x400000-8] ; B |
513 | add edx,dword [WinMapAddress-8] ; +B |
513 | add edx,dword [WinMapAddress-8] ; +B |
514 | add edx,dword [WinMapAddress-8] ; +B |
514 | add edx,dword [WinMapAddress-8] ; +B |
515 | push edx |
515 | push edx |
Line 516... | Line 516... | ||
516 | 516 | ||
517 | mov eax,[draw_data+32+0] ; x start:=(x+Xwin) |
517 | mov eax,[draw_data+32+RECT.left] ; x start:=(x+Xwin) |
518 | mov ebx,[draw_data+32+4] ; y start:=(y+Ywin) |
518 | mov ebx,[draw_data+32+RECT.top] ; y start:=(y+Ywin) |
519 | mov ecx,eax |
519 | mov ecx,eax |
Line 520... | Line 520... | ||
520 | mov edx,ebx |
520 | mov edx,ebx |
521 | 521 | ||
Line 585... | Line 585... | ||
585 | pop eax |
585 | pop eax |
Line 586... | Line 586... | ||
586 | 586 | ||
Line 587... | Line 587... | ||
587 | nbgpvga: |
587 | nbgpvga: |
588 | 588 | ||
589 | inc eax ; x++ |
589 | inc eax ; x++ |
Line 590... | Line 590... | ||
590 | cmp eax,[draw_data+32+8] ; X > xend? |
590 | cmp eax,[draw_data+32+RECT.right] ; X > xend? |
591 | jg nodp3vga |
591 | jg nodp3vga |
592 | 592 | ||
Line 600... | Line 600... | ||
600 | add esi,3 ; ptrImage+=3 |
600 | add esi,3 ; ptrImage+=3 |
601 | jmp dp3vga |
601 | jmp dp3vga |
Line 602... | Line 602... | ||
602 | 602 | ||
Line 603... | Line 603... | ||
603 | nodp3vga: |
603 | nodp3vga: |
604 | 604 | ||
605 | mov eax,[draw_data+32+0] ; x+Xwin |
605 | mov eax,[draw_data+32+RECT.left] ; x+Xwin |
606 | inc ebx ; y position |
606 | inc ebx ; y position |
Line 607... | Line 607... | ||
607 | mov ecx,eax |
607 | mov ecx,eax |
Line 620... | Line 620... | ||
620 | ;VGA start address >> EBP:=(y+Ywin)*BytesPerScanLine+X*BytesPerPixel+AddrV |
620 | ;VGA start address >> EBP:=(y+Ywin)*BytesPerScanLine+X*BytesPerPixel+AddrV |
Line 621... | Line 621... | ||
621 | 621 | ||
Line 622... | Line 622... | ||
622 | 622 | ||
623 | call calculate_edi |
623 | call calculate_edi |
Line 624... | Line 624... | ||
624 | 624 | ||
Line 625... | Line 625... | ||
625 | cmp ebx,[draw_data+32+12] ; Y > yend |
625 | cmp ebx,[draw_data+32+RECT.bottom] ; Y > yend |
Line 655... | Line 655... | ||
655 | mov edx,dword [WinMapAddress-8] ; B |
655 | mov edx,dword [WinMapAddress-8] ; B |
656 | add edx,dword [WinMapAddress-8] ; +B |
656 | add edx,dword [WinMapAddress-8] ; +B |
657 | add edx,dword [WinMapAddress-8] ; +B |
657 | add edx,dword [WinMapAddress-8] ; +B |
658 | push edx |
658 | push edx |
Line 659... | Line 659... | ||
659 | 659 | ||
660 | mov eax,[draw_data+32+0] ; x start:=(x+Xwin) |
660 | mov eax,[draw_data+32+RECT.left] ; x start:=(x+Xwin) |
661 | mov ebx,[draw_data+32+4] ; y start:=(y+Ywin) |
661 | mov ebx,[draw_data+32+RECT.top] ; y start:=(y+Ywin) |
662 | mov ecx,eax |
662 | mov ecx,eax |
Line 663... | Line 663... | ||
663 | mov edx,ebx |
663 | mov edx,ebx |
664 | 664 | ||
Line 729... | Line 729... | ||
729 | pop eax |
729 | pop eax |
Line 730... | Line 730... | ||
730 | 730 | ||
Line 731... | Line 731... | ||
731 | snbgpvga: |
731 | snbgpvga: |
732 | 732 | ||
733 | inc eax ; x++ |
733 | inc eax ; x++ |
Line 734... | Line 734... | ||
734 | cmp eax,[draw_data+32+8] ; X > xend? |
734 | cmp eax,[draw_data+32+RECT.right] ; X > xend? |
735 | jg snodp3vga |
735 | jg snodp3vga |
736 | 736 | ||
Line 744... | Line 744... | ||
744 | add esi,3 ; ptrImage+=3 |
744 | add esi,3 ; ptrImage+=3 |
745 | jmp sdp3vga |
745 | jmp sdp3vga |
Line 746... | Line 746... | ||
746 | 746 | ||
Line 747... | Line 747... | ||
747 | snodp3vga: |
747 | snodp3vga: |
748 | 748 | ||
749 | mov eax,[draw_data+32+0] ; x+Xwin |
749 | mov eax,[draw_data+32+RECT.left] ; x+Xwin |
750 | inc ebx ; y position |
750 | inc ebx ; y position |
Line 751... | Line 751... | ||
751 | mov ecx,eax |
751 | mov ecx,eax |
Line 764... | Line 764... | ||
764 | ;VGA start address >> EBP:=(y+Ywin)*BytesPerScanLine+X*BytesPerPixel+A |
764 | ;VGA start address >> EBP:=(y+Ywin)*BytesPerScanLine+X*BytesPerPixel+A |
Line 765... | Line 765... | ||
765 | 765 | ||
Line 766... | Line 766... | ||
766 | 766 | ||
767 | call calculate_edi |
767 | call calculate_edi |
Line 768... | Line 768... | ||
768 | 768 | ||
Line 769... | Line 769... | ||
769 | cmp ebx,[draw_data+32+12] ; Y > yend |
769 | cmp ebx,[draw_data+32+RECT.bottom] ; Y > yend |