Subversion Repositories Kolibri OS

Rev

Rev 8328 | Rev 9105 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 8328 Rev 9096
Line 753... Line 753...
753
        jz      .write_cr
753
        jz      .write_cr
754
        cmp     al, 27
754
        cmp     al, 27
755
        jz      .write_esc
755
        jz      .write_esc
756
        cmp     al, 8
756
        cmp     al, 8
757
        jz      .write_bs
757
        jz      .write_bs
-
 
758
        cmp     al, 7
-
 
759
        jz      .bell
758
        cmp     al, 9
760
        cmp     al, 9
759
        jnz     con.write_char
761
        jnz     con.write_char
760
.write_tab:
762
.write_tab:
761
        mov     al, ' '
763
        mov     al, ' '
762
        call    con.write_char
764
        call    con.write_char
Line 788... Line 790...
788
        dec     edi
790
        dec     edi
789
        dec     edi
791
        dec     edi
790
@@:
792
@@:
791
        pop     eax
793
        pop     eax
792
        ret
794
        ret
-
 
795
.bell:
-
 
796
        pusha
-
 
797
        push    55
-
 
798
        pop     eax
-
 
799
        mov     ebx, eax
-
 
800
        mov     esi, con.beep2
-
 
801
        int     0x40
-
 
802
        popa
-
 
803
        ret
793
.write_esc:
804
.write_esc:
794
        mov     [con_esc], 1
805
        mov     [con_esc], 1
795
        mov     [con_esc_attr_n], 1
806
        mov     [con_esc_attr_n], 1
796
        and     [con_esc_attrs], 0
807
        and     [con_esc_attrs], 0
797
        ret
808
        ret
Line 866... Line 877...
866
        jz      .cursor_left
877
        jz      .cursor_left
867
        cmp     al, 'l'
878
        cmp     al, 'l'
868
        je      .dec_rst
879
        je      .dec_rst
869
        cmp     al, 'h'
880
        cmp     al, 'h'
870
        je      .dec_set
881
        je      .dec_set
-
 
882
        cmp     al, 'K'
-
 
883
        je      .erase_in_line
871
        ret     ; simply skip unknown sequences
884
        ret     ; simply skip unknown sequences
Line 872... Line 885...
872
 
885
 
873
.dec_rst:
886
.dec_rst:
874
        mov     eax, [con_esc_attrs]
887
        mov     eax, [con_esc_attrs]
Line 894... Line 907...
894
        ret
907
        ret
Line 895... Line 908...
895
 
908
 
896
.show_cursor:
909
.show_cursor:
897
        mov     [con.cursor_height], (15*font_height+50)/100    ; default height
910
        mov     [con.cursor_height], (15*font_height+50)/100    ; default height
-
 
911
        ret
-
 
912
 
-
 
913
.erase_in_line:
-
 
914
        mov     eax, [con_esc_attrs]
-
 
915
        test    eax, eax
-
 
916
        jz      .erase_till_end_of_line         ; [0K (or [K)
-
 
917
        dec     eax
-
 
918
        jz      .erase_till_start_of_line       ; [1K
-
 
919
        dec     eax
-
 
920
        je      .erase_current_line             ; [2K
-
 
921
        ret     ; unknown sequence
-
 
922
 
-
 
923
.erase_till_end_of_line:
-
 
924
        push    edi ecx
-
 
925
        mov     edi, [con.cur_y]
-
 
926
        imul    edi, [con.scr_width]
-
 
927
        add     edi, [con.cur_x]
-
 
928
        shl     edi, 1
-
 
929
        add     edi, [con.data]
-
 
930
        mov     ecx, [con.scr_width]
-
 
931
        sub     ecx, [con.cur_x]
-
 
932
        mov     ah, byte[con_flags]
-
 
933
        mov     al, ' '
-
 
934
        rep     stosw
-
 
935
        pop     ecx edi
-
 
936
        ret
-
 
937
 
-
 
938
.erase_till_start_of_line:
-
 
939
        push    edi ecx
-
 
940
        mov     edi, [con.cur_y]
-
 
941
        imul    edi, [con.scr_width]
-
 
942
        shl     edi, 1
-
 
943
        add     edi, [con.data]
-
 
944
        mov     ecx, [con.cur_y]
-
 
945
        mov     ah, byte[con_flags]
-
 
946
        mov     al, ' '
-
 
947
        rep     stosw
-
 
948
        pop     ecx edi
-
 
949
        ret
-
 
950
 
-
 
951
.erase_current_line:
-
 
952
        push    edi ecx
-
 
953
        mov     edi, [con.cur_y]
-
 
954
        imul    edi, [con.scr_width]
-
 
955
        shl     edi, 1
-
 
956
        add     edi, [con.data]
-
 
957
        mov     ecx, [con.scr_width]
-
 
958
        mov     ah, byte[con_flags]
-
 
959
        mov     al, ' '
-
 
960
        rep     stosw
-
 
961
        pop     ecx edi
-
 
962
        ret
898
        ret
963
 
899
.clear:
964
.clear:
900
        mov     eax, [con_esc_attrs]
965
        mov     eax, [con_esc_attrs]
901
        test    eax, eax
966
        test    eax, eax
902
        jz      .clear_till_end_of_screen       ; [0J (or [J)
967
        jz      .clear_till_end_of_screen       ; [0J (or [J)
Line 2646... Line 2711...
2646
con.thread_err      db 'Cannot create console thread!',13,10,0
2711
con.thread_err      db 'Cannot create console thread!',13,10,0
2647
con.nomem_err       db 'Not enough memory!',13,10,0
2712
con.nomem_err       db 'Not enough memory!',13,10,0
2648
con.aFinished       db ' [Finished]',0
2713
con.aFinished       db ' [Finished]',0
2649
con.aNull           db '(null)',0
2714
con.aNull           db '(null)',0
2650
con.beep                db      0x90, 0x3C, 0x00
2715
con.beep            db 0x90, 0x3C, 0x00
-
 
2716
con.beep2           db 0x85, 0x25, 0x85, 0x40, 0x00
2651
con.ipc_buf         dd 0,8,0,0
2717
con.ipc_buf         dd 0,8,0,0
2652
                    db 0
2718
                    db 0
Line 2653... Line 2719...
2653
 
2719