console library version 7; console examples updated

git-svn-id: svn://kolibrios.org@1145 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Evgeny Grechnikov (Diamond) 2009-08-27 16:05:05 +00:00
parent 5d45c37af3
commit 0dc8dae83d
5 changed files with 17 additions and 11 deletions

View File

@ -1225,7 +1225,7 @@ con_getch:
ret ret
con_getch_closed: con_getch_closed:
or eax, -1 xor eax, eax
ret ret
; int __stdcall con_getch2(void); ; int __stdcall con_getch2(void);
@ -1255,8 +1255,6 @@ con_gets2:
call con.get_data_ptr call con.get_data_ptr
.loop: .loop:
call con_getch2 call con_getch2
cmp eax, -1
jz .closed
test al, al test al, al
jz .extended jz .extended
cmp al, 8 cmp al, 8
@ -1413,6 +1411,8 @@ con_gets2:
mov al, 0 mov al, 0
mov ah, 0xF mov ah, 0xF
.extended: .extended:
test ah, ah
jz .closed
xchg al, ah xchg al, ah
cmp al, 0x4B cmp al, 0x4B
jz .left jz .left
@ -2273,7 +2273,7 @@ con.vscroll_pt dd -1
align 16 align 16
EXPORTS: EXPORTS:
dd szStart, START dd szStart, START
dd szVersion, 0x00020006 dd szVersion, 0x00020007
dd szcon_init, con_init dd szcon_init, con_init
dd szcon_write_asciiz, con_write_asciiz dd szcon_write_asciiz, con_write_asciiz
dd szcon_printf, con_printf dd szcon_printf, con_printf

View File

@ -86,7 +86,7 @@ dword __stdcall con_set_flags(dword new_flags);
Esc[<number>C - переместить курсор на <number> позиций вправо Esc[<number>C - переместить курсор на <number> позиций вправо
Esc[<number>D - переместить курсор на <number> позиций влево Esc[<number>D - переместить курсор на <number> позиций влево
*/ */
/* сигнал о закрытии окна консоли; /* сигнал о закрытии окна консоли; появился в версии 6 библиотеки;
флаг игнорируется функцией con_set_flags */ флаг игнорируется функцией con_set_flags */
#define CON_WINDOW_CLOSED 0x200 #define CON_WINDOW_CLOSED 0x200
Значение по умолчанию для флагов = 7. Значение по умолчанию для флагов = 7.
@ -108,15 +108,15 @@ int __stdcall con_getch(void);
Для обычных символов возвращается ASCII-код. Для расширенных символов Для обычных символов возвращается ASCII-код. Для расширенных символов
(например, Fx и стрелочек) первый вызов функции возвращает 0, (например, Fx и стрелочек) первый вызов функции возвращает 0,
а повторный вызов возвращает расширенный код (подобно DOS-функциям ввода). а повторный вызов возвращает расширенный код (подобно DOS-функциям ввода).
Начиная с версии 6 библиотеки, после закрытия окна консоли возвращается Начиная с версии 7 библиотеки, после закрытия окна консоли возвращается
значение -1. значение 0.
word __stdcall con_getch2(void); word __stdcall con_getch2(void);
Считывает один символ с клавиатуры. Младший байт содержит ASCII-код клавиши Считывает один символ с клавиатуры. Младший байт содержит ASCII-код клавиши
(0 для расширенных символов), старший - расширенный код (0 для расширенных символов), старший - расширенный код
(подобно BIOS-функциям ввода). (подобно BIOS-функциям ввода).
Начиная с версии 6 библиотеки, после закрытия окна консоли возвращается Начиная с версии 7 библиотеки, после закрытия окна консоли возвращается
значение -1 (0xFFFF при интерпретации как word). значение 0.
int __stdcall con_kbhit(void); int __stdcall con_kbhit(void);
Возвращает 1, если какая-то клавиша была нажата, 0 иначе. Для считывания Возвращает 1, если какая-то клавиша была нажата, 0 иначе. Для считывания

View File

@ -68,6 +68,8 @@ mainloop:
jmp mainloop jmp mainloop
extended: extended:
call [con_getch] call [con_getch]
test eax, eax
jz done
push eax push eax
push eax push eax
push string_extended push string_extended

View File

@ -41,7 +41,7 @@ start:
; for (;;) ; for (;;)
; { ; {
; con_write_asciiz("Enter string (empty for exit): "); ; con_write_asciiz("Enter string (empty for exit): ");
; con_gets(s,256); ; if (!con_gets(s,256)) break;
; if (s[0] == '\n') break; ; if (s[0] == '\n') break;
; con_write_asciiz("You entered: "); ; con_write_asciiz("You entered: ");
; con_write_asciiz(s); ; con_write_asciiz(s);
@ -52,6 +52,8 @@ mainloop:
push 256 push 256
push s push s
call [con_gets] call [con_gets]
test eax, eax
jz done
cmp [s], 10 cmp [s], 10
jz done jz done
push str2 push str2

View File

@ -41,7 +41,7 @@ start:
; for (;;) ; for (;;)
; { ; {
; con_write_asciiz("Enter string (empty for exit): "); ; con_write_asciiz("Enter string (empty for exit): ");
; con_gets2(mycallback,s,256); ; if (!con_gets2(mycallback,s,256)) break;
; if (s[0] == '\n') break; ; if (s[0] == '\n') break;
; con_write_asciiz("You entered: "); ; con_write_asciiz("You entered: ");
; con_write_asciiz(s); ; con_write_asciiz(s);
@ -53,6 +53,8 @@ mainloop:
push s push s
push mycallback push mycallback
call [con_gets2] call [con_gets2]
test eax, eax
jz done
cmp [s], 10 cmp [s], 10
jz done jz done
push str2 push str2