Rev 3885 | Rev 4306 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3885 | Rev 3886 | ||
---|---|---|---|
Line 786... | Line 786... | ||
786 | call con.write_char |
786 | call con.write_char |
787 | pop eax |
787 | pop eax |
788 | jmp con.write_char |
788 | jmp con.write_char |
789 | .esc_sci: |
789 | .esc_sci: |
790 | ; this is real Esc sequence |
790 | ; this is real Esc sequence |
- | 791 | cmp al, '?' ; DEC private mode (DECSET/DECRST sequences) |
|
- | 792 | je .questionmark |
|
791 | cmp al, ';' |
793 | cmp al, ';' |
792 | jz .next_arg |
794 | jz .next_arg |
793 | cmp al, '0' |
795 | cmp al, '0' |
794 | jb .not_digit |
796 | jb .not_digit |
795 | cmp al, '9' |
797 | cmp al, '9' |
Line 802... | Line 804... | ||
802 | lea edx, [edx*5] |
804 | lea edx, [edx*5] |
803 | lea edx, [edx*2+eax] |
805 | lea edx, [edx*2+eax] |
804 | mov [con_esc_attrs+(ecx-1)*4], edx |
806 | mov [con_esc_attrs+(ecx-1)*4], edx |
805 | pop edx ecx eax |
807 | pop edx ecx eax |
806 | ret |
808 | ret |
- | 809 | .questionmark: |
|
- | 810 | push ecx |
|
- | 811 | mov ecx, [con_esc_attr_n] |
|
- | 812 | mov dword[con_esc_attrs+(ecx-1)*4], 0xffffffff |
|
- | 813 | pop ecx |
|
807 | .next_arg: |
814 | .next_arg: |
808 | push eax |
815 | push eax |
809 | mov eax, [con_esc_attr_n] |
816 | mov eax, [con_esc_attr_n] |
810 | inc eax |
817 | inc eax |
811 | cmp al, 4 |
818 | cmp al, 4 |
Line 833... | Line 840... | ||
833 | jz .cursor_down |
840 | jz .cursor_down |
834 | cmp al, 'C' |
841 | cmp al, 'C' |
835 | jz .cursor_right |
842 | jz .cursor_right |
836 | cmp al, 'D' |
843 | cmp al, 'D' |
837 | jz .cursor_left |
844 | jz .cursor_left |
- | 845 | cmp al, 'l' |
|
- | 846 | je .dec_rst |
|
- | 847 | cmp al, 'h' |
|
- | 848 | je .dec_set |
|
838 | ret ; simply skip unknown sequences |
849 | ret ; simply skip unknown sequences |
- | 850 | ||
- | 851 | .dec_rst: |
|
- | 852 | mov eax, [con_esc_attrs] |
|
- | 853 | cmp eax, 0xffffffff |
|
- | 854 | jne .no_dec_rst |
|
- | 855 | mov eax, [con_esc_attrs+4] |
|
- | 856 | cmp eax, 25 |
|
- | 857 | je .hide_cursor |
|
- | 858 | .no_dec_rst: |
|
- | 859 | ret |
|
- | 860 | .hide_cursor: |
|
- | 861 | mov [con.cursor_height], 0 |
|
- | 862 | ret |
|
- | 863 | ||
- | 864 | .dec_set: |
|
- | 865 | mov eax, [con_esc_attrs] |
|
- | 866 | cmp eax, 0xffffffff |
|
- | 867 | jne .no_dec_set |
|
- | 868 | mov eax, [con_esc_attrs+4] |
|
- | 869 | cmp eax, 25 |
|
- | 870 | je .show_cursor |
|
- | 871 | .no_dec_set: |
|
- | 872 | ret |
|
- | 873 | ||
- | 874 | .show_cursor: |
|
- | 875 | mov [con.cursor_height], (15*font_height+50)/100 ; default height |
|
- | 876 | ret |
|
839 | .clear: |
877 | .clear: |
840 | mov eax, [con_esc_attrs] |
878 | mov eax, [con_esc_attrs] |
841 | test eax, eax |
879 | test eax, eax |
842 | jz .clear_till_end_of_screen ; |
880 | jz .clear_till_end_of_screen ; |
843 | dec eax |
881 | dec eax |