Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 6476 → Rev 6501

/kernel/trunk/kernel.asm
4813,48 → 4813,40
 
uglobal
msg_board_data rb msg_board_data_size
msg_board_count dd 0x0
msg_board_count dd ?
endg
 
iglobal
msg_board_pos dd 42*6*65536+10 ; for printing debug output on the screen
endg
 
sys_msg_board:
 
; 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.
; ebx=1 -> write, cl = byte to write
; ebx=2 -> read, ecx=0 -> no data, ecx=1 -> data in al
push eax ebx
mov eax, ebx
mov ebx, ecx
 
mov ecx, [msg_board_count]
cmp eax, 1
jne .smbl1
jne .read
 
if defined debug_com_base
 
push dx ax
 
@@: ; Wait for empty transmit register (yes, this slows down system..)
@@: ; wait for empty transmit register
mov dx, debug_com_base+5
in al, dx
test al, 1 shl 5
jz @r
 
mov dx, debug_com_base ; Output the byte
mov al, bl
out dx, al
 
pop ax dx
 
end if
 
mov [msg_board_data+ecx], bl
; // if debug_direct_print == 1
cmp byte [debug_direct_print], 1
jnz @f
jnz .end
pusha
iglobal
msg_board_pos dd (42*6)*65536+10 ; for printing debug output on the screen
endg
lea edx, [msg_board_data+ecx]
mov ecx, 0x40FFFFFF
mov ebx, [msg_board_pos]
4863,37 → 4855,52
call dtext
popa
add word [msg_board_pos+2], 6
cmp word [msg_board_pos+2], 105*6
jnc @f
cmp bl, 10
jnz @f
mov word [msg_board_pos+2], (42*6)
jnz .end
@@:
mov word [msg_board_pos+2], 42*6
add word [msg_board_pos], 10
mov ax, word [_display.width]
cmp word [msg_board_pos], ax
jb @f
mov eax, [_display.height]
sub eax, 10
cmp ax, word [msg_board_pos]
jnc @f
mov word [msg_board_pos], 10
@@:
; // end if
 
if 0
pusha
mov al, bl
mov edx, 402h
out dx, al
mov eax, [msg_board_pos]
movzx ebx, ax
shr eax, 16
mov edx, 105*6
xor ecx, ecx
mov edi, 1
mov esi, 9
@@:
call hline
inc ebx
dec esi
jnz @b
popa
end if
.end:
inc ecx
and ecx, msg_board_data_size - 1
mov [msg_board_count], ecx
 
.ret:
pop ebx eax
ret
.smbl1:
 
@@:
mov [esp+32], ecx
mov [esp+20], ecx
jmp .ret
 
.read:
cmp eax, 2
jne .smbl2
jne .ret
test ecx, ecx
jz .smbl21
 
add esp, 8 ; Returning data in ebx and eax, so no need to restore them.
jz @b
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]
4902,12 → 4909,6
mov [esp + 32], edx ;eax
mov [esp + 20], dword 1
ret
.smbl21:
mov [esp+32], ecx
mov [esp+20], ecx
.smbl2:
pop ebx eax
ret
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 66 sys function. ;;