diff --git a/drivers/audio/intel_hda/IMPORTS.INC b/drivers/audio/intel_hda/IMPORTS.INC index df1ee70f0c..896b0f9b22 100644 --- a/drivers/audio/intel_hda/IMPORTS.INC +++ b/drivers/audio/intel_hda/IMPORTS.INC @@ -71,7 +71,7 @@ kernel_export \ HwCursorCreate,\ \ SysMsgBoardStr,\ - SysMsgBoardChar,\ + SysMsgBoard,\ GetCurrentTask,\ LoadFile,\ SendEvent,\ diff --git a/drivers/fdo.inc b/drivers/fdo.inc index 8ff75fff6e..ff782b6bf9 100644 --- a/drivers/fdo.inc +++ b/drivers/fdo.inc @@ -234,26 +234,26 @@ macro DEBUGH_N _sign,_num,_hex { debug_func fdo_debug_outchar debug_beginf pushad - movzx ebx,al - mov eax,1 + movzx ecx,al + mov ebx,1 ; mov ecx,sys_msg_board ; call ecx ; sys_msg_board - stdcall SysMsgBoardChar + stdcall SysMsgBoard popad ret debug_endf debug_func fdo_debug_outstr debug_beginf - mov eax,1 + mov ebx,1 .l1: dec esi js .l2 - movzx ebx,byte[edx] - or bl,bl + movzx ecx,byte[edx] + or cl,cl jz .l2 ; mov ecx,sys_msg_board ; call ecx ; sys_msg_board - stdcall SysMsgBoardChar + stdcall SysMsgBoard inc edx jmp .l1 .l2: ret diff --git a/drivers/imports.inc b/drivers/imports.inc index f26fd9aa10..8d8c109ed4 100644 --- a/drivers/imports.inc +++ b/drivers/imports.inc @@ -75,7 +75,7 @@ kernel_export \ HwCursorCreate,\ \ SysMsgBoardStr,\ - SysMsgBoardChar,\ + SysMsgBoard,\ GetCurrentTask,\ LoadFile,\ SendEvent,\ diff --git a/kernel/trunk/core/exports.inc b/kernel/trunk/core/exports.inc index 33b70b90e7..c0ece57797 100644 --- a/kernel/trunk/core/exports.inc +++ b/kernel/trunk/core/exports.inc @@ -66,7 +66,7 @@ iglobal szLoadCursor db 'LoadCursor',0 szSysMsgBoardStr db 'SysMsgBoardStr', 0 - szSysMsgBoardChar db 'SysMsgBoardChar', 0 + szSysMsgBoard db 'SysMsgBoard', 0 szGetCurrentTask db 'GetCurrentTask',0 szLFBAddress db 'LFBAddress',0 szLoadFile db 'LoadFile',0 @@ -163,7 +163,7 @@ kernel_export: dd szLoadCursor , load_cursor ;stdcall dd szSysMsgBoardStr , sys_msg_board_str - dd szSysMsgBoardChar , sys_msg_board + dd szSysMsgBoard , sys_msg_board dd szGetCurrentTask , get_curr_task dd szLoadFile , load_file ;retval eax, ebx dd szSendEvent , send_event ;see EVENT.inc for specification diff --git a/kernel/trunk/core/syscall.inc b/kernel/trunk/core/syscall.inc index 364e8dc7a3..9a98ef06cd 100644 --- a/kernel/trunk/core/syscall.inc +++ b/kernel/trunk/core/syscall.inc @@ -121,8 +121,8 @@ iglobal dd 0 dd 0 dd 0 - dd 0 ; 62-PCI functions - dd sys_msg_board ; 63-System message board + dd 0 + dd 0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; NEW SYSTEM FUNCTIONS TABLE ;; @@ -192,8 +192,8 @@ iglobal dd undefined_syscall ; 59-reserved dd sys_IPC ; 60-Inter Process Communication dd sys_gs ; 61-Direct graphics access - dd pci_api ;cross_order ; 62-PCI functions - dd cross_order ; 63-System message board + dd pci_api ; 62-PCI functions + dd sys_msg_board ; 63-System message board dd sys_resize_app_memory ; 64-Resize application memory usage dd sys_putimage_palette ; 65-PutImagePalette dd sys_process_def ; 66-Process definitions - keyboard diff --git a/kernel/trunk/drivers/fdo.inc b/kernel/trunk/drivers/fdo.inc index c42cefa30d..4325b02ed3 100644 --- a/kernel/trunk/drivers/fdo.inc +++ b/kernel/trunk/drivers/fdo.inc @@ -248,27 +248,27 @@ macro DEBUGH_N _sign,_num,_hex { debug_func fdo_debug_outchar debug_beginf pushad - movzx ebx, al - mov eax, 1 + movzx ecx, al + mov ebx, 1 ; mov ecx,sys_msg_board ; call ecx ; sys_msg_board - stdcall SysMsgBoardChar + stdcall SysMsgBoard popad ret debug_endf debug_func fdo_debug_outstr debug_beginf - mov eax, 1 + mov ebx, 1 .l1: dec esi js .l2 - movzx ebx, byte[edx] - or bl, bl + movzx ecx, byte[edx] + or cl, cl jz .l2 ; mov ecx,sys_msg_board ; call ecx ; sys_msg_board - stdcall SysMsgBoardChar + stdcall SysMsgBoard inc edx jmp .l1 .l2: diff --git a/kernel/trunk/drivers/imports.inc b/kernel/trunk/drivers/imports.inc index 592b533387..6ebf48ba1a 100644 --- a/kernel/trunk/drivers/imports.inc +++ b/kernel/trunk/drivers/imports.inc @@ -75,7 +75,7 @@ kernel_export \ HwCursorCreate,\ \ SysMsgBoardStr,\ - SysMsgBoardChar,\ + SysMsgBoard,\ GetCurrentTask,\ LoadFile,\ SendEvent,\ diff --git a/kernel/trunk/fdo.inc b/kernel/trunk/fdo.inc index fa720ace5e..642eabf624 100644 --- a/kernel/trunk/fdo.inc +++ b/kernel/trunk/fdo.inc @@ -241,25 +241,23 @@ esp equ _esp debug_func fdo_debug_outchar debug_beginf pushad - movzx ebx, al - mov eax, 1 - mov ecx, sys_msg_board - call ecx ; sys_msg_board + movzx ecx, al + mov ebx, 1 + call sys_msg_board popad ret debug_endf debug_func fdo_debug_outstr debug_beginf - mov eax, 1 + mov ebx, 1 .l1: dec esi js .l2 - movzx ebx, byte[edx] - or bl, bl + movzx ecx, byte[edx] + or cl, cl jz .l2 - mov ecx, sys_msg_board - call ecx ; sys_msg_board + call sys_msg_board inc edx jmp .l1 .l2: diff --git a/kernel/trunk/kernel.asm b/kernel/trunk/kernel.asm index d76e3a8c6b..4acca47804 100644 --- a/kernel/trunk/kernel.asm +++ b/kernel/trunk/kernel.asm @@ -4680,8 +4680,8 @@ sys_msg_board_str: @@: cmp [esi], byte 0 je @f - mov eax, 1 - movzx ebx, byte [esi] + mov ebx, 1 + movzx ecx, byte [esi] call sys_msg_board inc esi jmp @b @@ -4721,9 +4721,9 @@ sys_msg_board_dword: cmp al, 10 sbb al, 69h das - mov bl, al - xor eax, eax - inc eax + mov cl, al + xor ebx, ebx + inc ebx call sys_msg_board pop eax pop ecx @@ -4740,8 +4740,12 @@ endg sys_msg_board: -; eax=1 : write : bl byte to write -; eax=2 : read : ebx=0 -> no data, ebx=1 -> data in al +; ebx=1 : write : bl byte to write +; ebx=2 : read : ebx=0 -> no data, ebx=1 -> data in al + + push eax ebx ; Save eax and ebx, since we're restoring their order required. + mov eax, ebx + mov ebx, ecx mov ecx, [msg_board_count] cmp eax, 1 @@ -4799,24 +4803,29 @@ end if inc ecx and ecx, msg_board_data_size - 1 mov [msg_board_count], ecx + + pop ebx eax ret .smbl1: cmp eax, 2 jne .smbl2 test ecx, ecx jz .smbl21 + + add esp, 8 ; Returning data in ebx and eax, so no need to restore them. mov eax, msg_board_data+1 mov ebx, msg_board_data movzx edx, byte [ebx] call memmove dec [msg_board_count] - mov [esp + 36], edx ;eax - mov [esp + 24], dword 1 + mov [esp + 32], edx ;eax + mov [esp + 20], dword 1 ret .smbl21: - mov [esp+36], ecx - mov [esp+24], ecx + mov [esp+32], ecx + mov [esp+20], ecx .smbl2: + pop ebx eax ret ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/programs/system/MyKey/trunk/debug.inc b/programs/system/MyKey/trunk/debug.inc index 8303039e16..8ab93e141d 100644 --- a/programs/system/MyKey/trunk/debug.inc +++ b/programs/system/MyKey/trunk/debug.inc @@ -62,7 +62,7 @@ debug_outchar: ; al - char ;int 0x40 mov bl, al mov eax, 1 - call SysMsgBoardChar + call SysMsgBoard popad popf ret @@ -138,7 +138,7 @@ debug_outhex: popf ret -SysMsgBoardChar: +SysMsgBoard: push eax ebx ecx mov cl, al mov eax, 63 @@ -153,7 +153,7 @@ SysMsgBoardStr: lodsb or al, al jz @f - call SysMsgBoardChar + call SysMsgBoard jmp @b @@: pop eax