Rev 4566 | Rev 5838 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4566 | Rev 5579 | ||
---|---|---|---|
Line 587... | Line 587... | ||
587 | cmp [replace_mode],0 |
587 | cmp [replace_mode],0 |
588 | jne @f |
588 | jne @f |
589 | call get_from_clipboard |
589 | call get_from_clipboard |
590 | @@: |
590 | @@: |
591 | cmp [copy_size],0 |
591 | cmp [copy_size],0 |
592 | je .exit |
592 | je .exit_1 |
593 | - | ||
594 | call delete_selection |
593 | call delete_selection |
595 | - | ||
596 | mov eax,[copy_size] |
594 | mov eax,[copy_size] |
- | 595 | sub eax,sizeof.EDITOR_LINE_DATA |
|
597 | call editor_realloc_lines |
596 | call editor_realloc_lines |
598 | - | ||
599 | mov ebx,[cur_editor.Lines.Size] |
- | |
600 | add ebx,[copy_size] |
- | |
601 | mov [cur_editor.Lines.Size],ebx |
- | |
602 | stdcall mem.ReAlloc,[cur_editor.Lines],ebx |
- | |
603 | mov [cur_editor.Lines],eax |
- | |
604 | - | ||
605 | mov ecx,[cur_editor.Caret.Y] |
597 | mov ecx,[cur_editor.Caret.Y] |
606 | call get_line_offset |
598 | call get_line_offset |
607 | pushd [esi+EDITOR_LINE_DATA.Size] esi |
- | |
608 | mov ecx,[cur_editor.Caret.X] |
599 | mov ecx,[cur_editor.Caret.X] |
609 | call line_add_spaces |
600 | call line_add_spaces |
610 | add [esp],eax |
- | |
611 | add esi,eax |
- | |
612 | mov ecx,[copy_size] |
601 | pushd [esi+EDITOR_LINE_DATA.Size] |
613 | mov edi,[copy_count] |
- | |
614 | test edi,edi |
- | |
615 | dec edi |
602 | push esi |
616 | jnz @f |
- | |
617 | sub ecx,sizeof.EDITOR_LINE_DATA |
603 | lea eax,[esi+ecx+sizeof.EDITOR_LINE_DATA] |
618 | @@: |
- | |
619 | mov edi,[cur_editor.Lines] |
604 | mov edi,[cur_editor.Lines] |
620 | add edi,[cur_editor.Lines.Size] ;*** add edi,[edi-4] |
605 | add edi,[cur_editor.Lines.Size] |
621 | dec edi |
606 | dec edi |
622 | mov eax,esi |
607 | mov ecx,[copy_size] |
- | 608 | sub ecx,sizeof.EDITOR_LINE_DATA |
|
623 | mov esi,edi |
609 | mov esi,edi |
624 | sub esi,ecx |
610 | sub esi,ecx |
625 | lea ecx,[eax+sizeof.EDITOR_LINE_DATA] |
- | |
626 | add ecx,[cur_editor.Caret.X] |
- | |
627 | neg ecx |
611 | neg eax |
628 | lea ecx,[esi+ecx+1] |
612 | lea ecx,[esi+eax+1] |
629 | mov [size_of_moving_area],ecx |
- | |
630 | std |
613 | std |
631 | rep movsb |
614 | rep movsb |
632 | - | ||
633 | mov ecx,[copy_count] |
- | |
634 | dec ecx |
- | |
635 | jz .single_line |
- | |
636 | - | ||
637 | cld |
615 | cld |
638 | pop edi |
616 | pop edi |
639 | add edi,sizeof.EDITOR_LINE_DATA |
- | |
640 | mov esi,[copy_buf] |
617 | mov esi,[copy_buf] |
641 | mov eax,[esi+EDITOR_LINE_DATA.Size] |
618 | mov eax,[esi+EDITOR_LINE_DATA.Size] |
642 | add esi,sizeof.EDITOR_LINE_DATA |
619 | add esi,sizeof.EDITOR_LINE_DATA |
- | 620 | mov ecx,[copy_count] |
|
- | 621 | dec ecx |
|
- | 622 | jz .single_line |
|
Line 643... | Line 623... | ||
643 | 623 | ||
644 | mov ebx,[cur_editor.Caret.X] |
- | |
645 | add eax,ebx |
624 | add eax,[cur_editor.Caret.X] |
646 | mov [edi-sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Size],eax |
625 | mov [edi+EDITOR_LINE_DATA.Size],eax |
647 | mov [edi-sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED |
626 | mov [edi+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED |
648 | sub eax,ebx |
627 | sub eax,[cur_editor.Caret.X] |
649 | call .check_columns |
628 | call .check_columns |
- | 629 | add edi,[cur_editor.Caret.X] |
|
650 | add edi,ebx |
630 | @@: |
651 | @@: push ecx |
631 | push ecx |
- | 632 | mov ecx,eax |
|
652 | mov ecx,eax |
633 | add edi,sizeof.EDITOR_LINE_DATA |
653 | rep movsb |
634 | rep movsb |
654 | mov eax,[esi+EDITOR_LINE_DATA.Size] |
635 | mov eax,[esi+EDITOR_LINE_DATA.Size] |
655 | add esi,sizeof.EDITOR_LINE_DATA |
636 | add esi,sizeof.EDITOR_LINE_DATA |
656 | mov [edi+EDITOR_LINE_DATA.Size],eax |
637 | mov [edi+EDITOR_LINE_DATA.Size],eax |
657 | mov [edi+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED |
- | |
658 | add edi,sizeof.EDITOR_LINE_DATA |
638 | mov [edi+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED |
659 | pop ecx |
639 | pop ecx |
Line 660... | Line 640... | ||
660 | loop @b |
640 | loop @b |
661 | - | ||
662 | pop ecx |
- | |
663 | sub ecx,ebx |
- | |
664 | ja @f |
- | |
665 | - | ||
666 | pusha |
- | |
667 | mov esi,edi |
- | |
668 | sub edi,sizeof.EDITOR_LINE_DATA |
- | |
669 | mov ecx,[size_of_moving_area] |
- | |
670 | cld |
- | |
671 | rep movsb |
641 | |
672 | popa |
- | |
673 | jmp .save_cur_editor_values |
642 | pop ecx |
674 | @@: |
643 | sub ecx,[cur_editor.Caret.X] |
- | 644 | add [edi+EDITOR_LINE_DATA.Size],ecx |
|
675 | add [edi-sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Size],ecx |
645 | call .check_columns |
676 | call .check_columns |
646 | add edi,sizeof.EDITOR_LINE_DATA |
677 | mov ecx,eax |
647 | mov ecx,eax |
678 | rep movsb |
648 | rep movsb |
679 | .save_cur_editor_values: |
649 | .save_cur_editor_values: |
680 | mov [cur_editor.Caret.X],eax |
650 | mov [cur_editor.Caret.X],eax |
681 | mov [cur_editor.SelStart.X],eax |
651 | mov [cur_editor.SelStart.X],eax |
682 | mov eax,[copy_count] |
652 | mov eax,[copy_count] |
683 | dec eax |
653 | dec eax |
684 | add [cur_editor.Caret.Y],eax |
654 | add [cur_editor.Caret.Y],eax |
685 | add [cur_editor.SelStart.Y],eax |
- | |
686 | add [cur_editor.Lines.Count],eax |
655 | add [cur_editor.SelStart.Y],eax |
687 | 656 | add [cur_editor.Lines.Count],eax |
|
Line 688... | Line 657... | ||
688 | mov [cur_editor.Modified],1 |
657 | mov [cur_editor.Modified],1 |
689 | jmp .exit |
- | |
690 | - | ||
691 | .single_line: |
- | |
692 | cld |
- | |
693 | pop edi |
658 | jmp .exit |
694 | add edi,sizeof.EDITOR_LINE_DATA |
- | |
695 | mov esi,[copy_buf] |
- | |
696 | mov eax,[esi+EDITOR_LINE_DATA.Size] |
- | |
697 | add esi,sizeof.EDITOR_LINE_DATA |
659 | |
698 | add [edi-sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Size],eax |
660 | .single_line: |
- | 661 | add [edi+EDITOR_LINE_DATA.Size],eax |
|
699 | and [edi-sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Flags],not EDITOR_LINE_FLAG_SAVED |
662 | mov [edi+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED |
700 | or [edi-sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED |
663 | call .check_columns |
701 | call .check_columns |
664 | add edi,sizeof.EDITOR_LINE_DATA |
702 | add edi,[cur_editor.Caret.X] |
665 | add edi,[cur_editor.Caret.X] |
703 | add esp,4 |
- | |
704 | mov ecx,eax |
666 | pop ecx |
705 | rep movsb |
667 | mov ecx,eax |
706 | - | ||
707 | add [cur_editor.Caret.X],eax |
668 | rep movsb |
708 | add [cur_editor.SelStart.X],eax |
- | |
709 | 669 | add [cur_editor.Caret.X],eax |
|
710 | mov [cur_editor.Modified],1 |
670 | add [cur_editor.SelStart.X],eax |
711 | 671 | mov [cur_editor.Modified],1 |
|
712 | .exit: |
- | |
713 | cmp [replace_mode],0 |
672 | .exit: |
714 | jne .exit_1 |
- | |
715 | - | ||
716 | cmp [copy_size],0 |
673 | cmp [replace_mode],0 |
- | 674 | jne .exit_1 |
|
717 | je .exit_1 |
675 | stdcall mem.Free,[copy_buf] |
718 | ; remove unnecessary memory area |
676 | xor eax,eax |
719 | xor eax,eax |
- | |
720 | mov [copy_size],eax |
- | |
721 | mov [copy_count],eax |
677 | mov [copy_buf],eax |
722 | stdcall mem.ReAlloc,[copy_buf],eax |
678 | mov [copy_size],eax |
Line 723... | Line 679... | ||
723 | mov [copy_buf],eax |
679 | mov [copy_count],eax |
724 | .exit_1: |
680 | .exit_1: |
725 | ret |
681 | ret |
726 | 682 | ||
727 | .check_columns: |
683 | .check_columns: |
728 | push eax |
684 | push eax |
- | 685 | mov eax,[edi+EDITOR_LINE_DATA.Size] |
|
729 | mov eax,[edi-sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Size] |
686 | cmp eax,[cur_editor.Columns.Count] |
730 | cmp eax,[cur_editor.Columns.Count] |
687 | jbe @f |
731 | jbe @f |
688 | mov [cur_editor.Columns.Count],eax |
732 | mov [cur_editor.Columns.Count],eax |
689 | @@: |
733 | @@: pop eax |
690 | pop eax |
734 | ret |
691 | ret |
Line 810... | Line 767... | ||
810 | endp |
767 | endp |
Line 811... | Line 768... | ||
811 | 768 | ||
812 | ;----------------------------------------------------------------------------- |
769 | ;----------------------------------------------------------------------------- |
813 | proc key.up ;///// GO TO PREVIOUS LINE /////////////////////////////////////// |
770 | proc key.up ;///// GO TO PREVIOUS LINE /////////////////////////////////////// |
- | 771 | ;----------------------------------------------------------------------------- |
|
814 | ;----------------------------------------------------------------------------- |
772 | call key.shift_up |
815 | call clear_selection |
- | |
816 | 773 | jmp clear_selection |
|
817 | ;----------------------------------------------------------------------------- |
774 | ;----------------------------------------------------------------------------- |
818 | key.shift_up: ;///// GO TO PREVIOUS LINE, WITH SELECTION //////////////// |
775 | key.shift_up: ;///// GO TO PREVIOUS LINE, WITH SELECTION //////////////// |
819 | ;----------------------------------------------------------------------------- |
776 | ;----------------------------------------------------------------------------- |
820 | mov eax,[cur_editor.Caret.Y] |
- | |
821 | dec eax |
- | |
822 | jns @f |
- | |
823 | xor eax,eax |
- | |
824 | @@: mov ecx,[cur_editor.TopLeft.Y] |
- | |
825 | cmp eax,ecx |
- | |
826 | jae @f |
777 | mov ecx,[cur_editor.Caret.Y] |
827 | dec ecx |
778 | dec ecx |
828 | jns @f |
779 | js .exit |
829 | xor ecx,ecx |
780 | mov [cur_editor.Caret.Y],ecx |
830 | @@: test [chr],KM_SHIFT |
781 | call get_line_offset |
831 | jnz @f |
782 | mov eax,[esi] |
832 | mov [cur_editor.SelStart.Y],eax |
783 | cmp eax,[cur_editor.Caret.X] |
833 | @@: mov [cur_editor.Caret.Y],eax |
784 | jnc .exit |
834 | mov [cur_editor.TopLeft.Y],ecx |
- | |
835 | 785 | mov [cur_editor.Caret.X],eax |
|
836 | .exit: |
786 | .exit: |
837 | ret |
787 | ret |
Line 838... | Line 788... | ||
838 | endp |
788 | endp |
839 | 789 | ||
840 | ;----------------------------------------------------------------------------- |
790 | ;----------------------------------------------------------------------------- |
- | 791 | proc key.down ;///// GO TO NEXT LINE ///////////////////////////////////////// |
|
841 | proc key.down ;///// GO TO NEXT LINE ///////////////////////////////////////// |
792 | ;----------------------------------------------------------------------------- |
842 | ;----------------------------------------------------------------------------- |
- | |
843 | call clear_selection |
793 | call key.shift_down |
844 | 794 | jmp clear_selection |
|
845 | ;----------------------------------------------------------------------------- |
795 | ;----------------------------------------------------------------------------- |
846 | key.shift_down: ;///// GO TO NEXT LINE, WITH SELECTION ////////////////// |
- | |
847 | ;----------------------------------------------------------------------------- |
796 | key.shift_down: ;///// GO TO NEXT LINE, WITH SELECTION ////////////////// |
848 | - | ||
849 | mov eax,[cur_editor.Caret.Y] |
- | |
850 | inc eax |
- | |
851 | cmp eax,[cur_editor.Lines.Count] |
- | |
852 | jb @f |
- | |
853 | dec eax |
- | |
854 | @@: mov ecx,[cur_editor.TopLeft.Y] |
- | |
855 | mov edx,eax |
- | |
856 | sub edx,ecx |
- | |
857 | cmp edx,[lines.scr] |
797 | ;----------------------------------------------------------------------------- |
858 | jb @f |
798 | mov ecx,[cur_editor.Caret.Y] |
859 | inc ecx |
799 | inc ecx |
860 | @@: test [chr],KM_SHIFT |
800 | cmp [cur_editor.Lines.Count],ecx |
- | 801 | jz .exit |
|
- | 802 | mov [cur_editor.Caret.Y],ecx |
|
861 | jnz @f |
803 | call get_line_offset |
- | 804 | mov eax,[esi] |
|
862 | mov [cur_editor.SelStart.Y],eax |
805 | cmp eax,[cur_editor.Caret.X] |
863 | @@: mov [cur_editor.Caret.Y],eax |
- | |
864 | mov [cur_editor.TopLeft.Y],ecx |
806 | jnc .exit |
865 | 807 | mov [cur_editor.Caret.X],eax |
|
866 | .exit: |
808 | .exit: |
Line 867... | Line 809... | ||
867 | ret |
809 | ret |
868 | endp |
810 | endp |
869 | 811 | ||
- | 812 | ;----------------------------------------------------------------------------- |
|
870 | ;----------------------------------------------------------------------------- |
813 | proc key.left ;///// GO TO PREVIOUS CHAR ///////////////////////////////////// |
871 | proc key.left ;///// GO TO PREVIOUS CHAR ///////////////////////////////////// |
- | |
872 | ;----------------------------------------------------------------------------- |
814 | ;----------------------------------------------------------------------------- |
873 | call clear_selection |
815 | call key.shift_left |
874 | 816 | jmp clear_selection |
|
875 | ;----------------------------------------------------------------------------- |
817 | ;----------------------------------------------------------------------------- |
876 | key.shift_left: ;///// GO TO PREVIOUS CHAR, WITH SELECTION ////////////// |
818 | key.shift_left: ;///// GO TO PREVIOUS CHAR, WITH SELECTION ////////////// |
877 | ;----------------------------------------------------------------------------- |
819 | ;----------------------------------------------------------------------------- |
- | 820 | mov eax,[cur_editor.Caret.X] |
|
878 | mov eax,[cur_editor.Caret.X] |
821 | dec eax |
879 | dec eax |
- | |
880 | jns @f |
822 | jns @f |
881 | inc eax |
823 | mov ecx,[cur_editor.Caret.Y] |
- | 824 | dec ecx |
|
- | 825 | js .exit |
|
- | 826 | mov [cur_editor.Caret.Y],ecx |
|
882 | @@: test [chr],KM_SHIFT |
827 | call get_line_offset |
883 | jnz @f |
- | |
884 | mov [cur_editor.SelStart.X],eax |
828 | mov eax,[esi] |
885 | @@: mov [cur_editor.Caret.X],eax |
829 | @@: |
886 | 830 | mov [cur_editor.Caret.X],eax |
|
Line 887... | Line 831... | ||
887 | .exit: |
831 | .exit: |
888 | ret |
832 | ret |
889 | endp |
833 | endp |
- | 834 | ||
890 | 835 | ;----------------------------------------------------------------------------- |
|
891 | ;----------------------------------------------------------------------------- |
- | |
892 | proc key.right ;///// GO TO NEXT CHAR //////////////////////////////////////// |
836 | proc key.right ;///// GO TO NEXT CHAR //////////////////////////////////////// |
893 | ;----------------------------------------------------------------------------- |
837 | ;----------------------------------------------------------------------------- |
894 | call clear_selection |
838 | call key.shift_right |
- | 839 | jmp clear_selection |
|
- | 840 | ;----------------------------------------------------------------------------- |
|
895 | 841 | key.shift_right: ;///// GO TO NEXT CHAR, WITH SELECTION ///////////////// |
|
896 | ;----------------------------------------------------------------------------- |
842 | ;----------------------------------------------------------------------------- |
897 | key.shift_right: ;///// GO TO NEXT CHAR, WITH SELECTION ///////////////// |
843 | mov ecx,[cur_editor.Caret.Y] |
898 | ;----------------------------------------------------------------------------- |
844 | call get_line_offset |
899 | mov eax,[cur_editor.Caret.X] |
845 | mov eax,[cur_editor.Caret.X] |
900 | inc eax |
846 | inc eax |
901 | cmp eax,[cur_editor.Columns.Count] |
847 | cmp [esi],eax |
- | 848 | jnc @f |
|
902 | jbe @f |
849 | inc ecx |
- | 850 | cmp [cur_editor.Lines.Count],ecx |
|
903 | dec eax |
851 | jz .exit |
904 | @@: test [chr],KM_SHIFT |
- | |
905 | jnz @f |
852 | xor eax,eax |
906 | mov [cur_editor.SelStart.X],eax |
853 | mov [cur_editor.Caret.Y],ecx |
907 | @@: mov [cur_editor.Caret.X],eax |
854 | @@: |
Line 908... | Line 855... | ||
908 | 855 | mov [cur_editor.Caret.X],eax |
|
Line 1629... | Line 1576... | ||
1629 | endp |
1576 | endp |
Line 1630... | Line 1577... | ||
1630 | 1577 | ||
1631 | ;----------------------------------------------------------------------------- |
1578 | ;----------------------------------------------------------------------------- |
1632 | proc key.f3 ;///// FIND NEXT MATCH /////////////////////////////////////////// |
1579 | proc key.f3 ;///// FIND NEXT MATCH /////////////////////////////////////////// |
1633 | ;----------------------------------------------------------------------------- |
1580 | ;----------------------------------------------------------------------------- |
1634 | call search |
- | |
1635 | jc @f |
- | |
1636 | @@: ret |
1581 | jmp search |
Line 1637... | Line 1582... | ||
1637 | endp |
1582 | endp |
1638 | 1583 | ||
1639 | ;----------------------------------------------------------------------------- |
1584 | ;----------------------------------------------------------------------------- |
1640 | proc key.f9 ;///// COMPILE AND RUN /////////////////////////////////////////// |
1585 | proc key.ctrl_f9 ;///// COMPILE ////////////////////////////////////////////// |
1641 | ;----------------------------------------------------------------------------- |
1586 | ;----------------------------------------------------------------------------- |
1642 | mov bl,1 |
- | |
1643 | call start_fasm |
1587 | mov bl,0 |
Line 1644... | Line 1588... | ||
1644 | ret |
1588 | jmp start_fasm |
1645 | endp |
1589 | endp |
1646 | 1590 | ||
1647 | ;----------------------------------------------------------------------------- |
1591 | ;----------------------------------------------------------------------------- |
1648 | proc key.f10 ;///// COMPILE AND RUN UNDER DEBUG ////////////////////////////// |
1592 | proc key.f9 ;///// COMPILE AND RUN /////////////////////////////////////////// |
1649 | ;----------------------------------------------------------------------------- |
- | |
1650 | mov bl,2 |
1593 | ;----------------------------------------------------------------------------- |
Line 1651... | Line 1594... | ||
1651 | call start_fasm |
1594 | mov bl,1 |
1652 | ret |
1595 | jmp start_fasm |
1653 | endp |
1596 | endp |
1654 | 1597 | ||
1655 | ;----------------------------------------------------------------------------- |
1598 | ;----------------------------------------------------------------------------- |
1656 | proc key.ctrl_f9 ;///// COMPILE ////////////////////////////////////////////// |
- | |
1657 | ;----------------------------------------------------------------------------- |
1599 | proc key.f10 ;///// COMPILE AND RUN UNDER DEBUG ////////////////////////////// |
Line 1658... | Line 1600... | ||
1658 | mov bl,0 |
1600 | ;----------------------------------------------------------------------------- |
1659 | call start_fasm |
1601 | mov bl,2 |
1660 | ret |
1602 | jmp start_fasm |