Subversion Repositories Kolibri OS

Rev

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       ; [0J (or [J)
880
        jz      .clear_till_end_of_screen       ; [0J (or [J)
843
        dec     eax
881
        dec     eax