forked from KolibriOS/kolibrios
*Remove unneeded ps2mouse.inc and m_ps2.inc
*Remove 18.1 and 18.9.1 functions (sinse 465 revision they doesn't work), so CPU now use END application for reboot NOTE: file ROSE.TXT don't used in kernel now and can be deleted from image *New END application form Leency & Veliant git-svn-id: svn://kolibrios.org@748 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -71,13 +71,11 @@ temp_3456:
|
||||
|
||||
nbw:
|
||||
in al,0x60
|
||||
call pause_key
|
||||
cmp al,6
|
||||
jae nbw
|
||||
mov bl,al
|
||||
nbw2:
|
||||
in al,0x60
|
||||
call pause_key
|
||||
cmp al,bl
|
||||
je nbw2
|
||||
cmp al,240 ;ax,240
|
||||
@@ -93,13 +91,7 @@ nbw31:
|
||||
|
||||
nbw32:
|
||||
|
||||
dec ax ; 1 = write floppy
|
||||
js nbw
|
||||
jnz no_floppy_write
|
||||
call floppy_write
|
||||
jmp temp_3456 ;nbw
|
||||
no_floppy_write:
|
||||
|
||||
dec ax
|
||||
dec ax ; 2 = power off
|
||||
jnz no_apm_off
|
||||
call APM_PowerOff
|
||||
@@ -113,74 +105,10 @@ no_apm_off:
|
||||
mov word[0x0072],0x1234
|
||||
jmp 0xF000:0xFFF0
|
||||
|
||||
pause_key:
|
||||
mov cx,100
|
||||
pause_key_1:
|
||||
loop pause_key_1
|
||||
ret
|
||||
|
||||
rdelay:
|
||||
ret
|
||||
|
||||
floppy_write: ; write diskette image to physical floppy
|
||||
|
||||
cmp [flm],byte 1
|
||||
je fwwritedone
|
||||
mov [flm],byte 1
|
||||
|
||||
xor ax, ax ; reset drive
|
||||
xor dx, dx
|
||||
int 0x13
|
||||
|
||||
mov cx,0x0001 ; startcyl,startsector
|
||||
xor dx, dx ; starthead,drive
|
||||
mov ax, 80*2 ; read no of sect
|
||||
|
||||
fwwrites:
|
||||
push ax
|
||||
|
||||
; move 1mb+ -> 0:a000
|
||||
|
||||
pusha
|
||||
mov si, fwmovedesc
|
||||
mov cx,256*18
|
||||
mov ah,0x87
|
||||
push ds
|
||||
pop es
|
||||
int 0x15
|
||||
add dword [fwmovedesc+0x12], 512*18
|
||||
popa
|
||||
|
||||
xor si,si
|
||||
mov es,si
|
||||
fwnewwrite:
|
||||
mov bx,0xa000 ; es:bx -> data area
|
||||
mov ax,0x0300+18 ; read, no of sectors to read
|
||||
int 0x13
|
||||
|
||||
test ah, ah
|
||||
jz fwgoodwrite
|
||||
|
||||
inc si
|
||||
cmp si,10
|
||||
jnz fwnewwrite
|
||||
|
||||
; can't access diskette - return
|
||||
pop ax
|
||||
ret
|
||||
|
||||
fwgoodwrite:
|
||||
inc dh
|
||||
cmp dh,2
|
||||
jnz fwbb2
|
||||
mov dh,0
|
||||
inc ch
|
||||
fwbb2:
|
||||
pop ax
|
||||
dec ax
|
||||
jnz fwwrites
|
||||
ret
|
||||
|
||||
APM_PowerOff:
|
||||
mov ax, 5304h
|
||||
xor bx, bx
|
||||
@@ -220,7 +148,6 @@ APM_PowerOff:
|
||||
mov cx,3
|
||||
int 0x15
|
||||
;!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
fwwritedone:
|
||||
ret
|
||||
|
||||
restart_kernel:
|
||||
|
@@ -1,141 +0,0 @@
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; ;;
|
||||
;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;;
|
||||
;; Distributed under terms of the GNU General Public License ;;
|
||||
;; ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
$Revision$
|
||||
|
||||
|
||||
MouseSearch_PS2:
|
||||
jmp MouseSearch_PS2_begin
|
||||
|
||||
mouse_error equ MouseSearch_PS2_begin.error
|
||||
|
||||
kb_cmd_c:
|
||||
call kb_cmd
|
||||
jmp check_kbd
|
||||
|
||||
kb_write_c:
|
||||
call kb_write
|
||||
jmp check_kbd
|
||||
|
||||
kb_read_c:
|
||||
call kb_read
|
||||
;jmp check_kbd
|
||||
|
||||
check_kbd:
|
||||
cmp ah, 1
|
||||
je mouse_error
|
||||
ret
|
||||
|
||||
uglobal
|
||||
mouse_cmd_byte db 0
|
||||
mouse_nr_tries db 0
|
||||
mouse_nr_resends db 0
|
||||
|
||||
mouse_error_esp dd 0
|
||||
endg
|
||||
|
||||
|
||||
mouse_cmd:
|
||||
mov [mouse_cmd_byte], al
|
||||
mov [mouse_nr_resends], 5
|
||||
.resend:
|
||||
mov bl, 0xd4
|
||||
call kb_cmd_c
|
||||
mov al, [mouse_cmd_byte]
|
||||
call kb_write_c
|
||||
|
||||
call mouse_read
|
||||
|
||||
cmp al, 0xFA ; ack
|
||||
jne .noack
|
||||
ret
|
||||
.noack:
|
||||
cmp al, 0xFE ; resend
|
||||
jne .noresend
|
||||
dec [mouse_nr_resends]
|
||||
jnz .resend
|
||||
.noresend:
|
||||
jmp mouse_error
|
||||
|
||||
|
||||
mouse_read:
|
||||
mov [mouse_nr_tries], 100
|
||||
.repeat:
|
||||
call kb_read
|
||||
cmp ah, 1
|
||||
jne .fin
|
||||
mov esi, 10
|
||||
call delay_ms
|
||||
dec [mouse_nr_tries]
|
||||
jnz .repeat
|
||||
jmp mouse_error
|
||||
.fin:
|
||||
ret
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
MouseSearch_PS2_begin:
|
||||
pushad
|
||||
|
||||
mov [mouse_error_esp], esp
|
||||
|
||||
mov bl, 0xAD ; disable keyboard interface
|
||||
call kb_cmd_c
|
||||
|
||||
mov bl, 0xA8 ; enable mouse interface
|
||||
call kb_cmd_c
|
||||
|
||||
mov al, 0xFF ; reset
|
||||
call mouse_cmd
|
||||
|
||||
; now the mouse is in Reset Mode
|
||||
; get the Basic Assurance Test completion code
|
||||
call mouse_read
|
||||
cmp al, 0xAA
|
||||
jne .error ; dead mouse
|
||||
|
||||
; get device ID
|
||||
call mouse_read
|
||||
cmp al, 0x00
|
||||
jne .error ; unknown device
|
||||
|
||||
; reset completed successfully
|
||||
|
||||
; enable mouse interrupt - IRQ12
|
||||
mov bl, 0x20 ; read command byte
|
||||
call kb_cmd_c
|
||||
call kb_read_c
|
||||
or al, 10b
|
||||
push eax
|
||||
mov bl, 0x60 ; write command byte
|
||||
call kb_cmd_c
|
||||
pop eax
|
||||
call kb_write_c
|
||||
|
||||
mov al, 0xF4 ; enable data reporting
|
||||
call mouse_cmd
|
||||
|
||||
mov [ps2_mouse_detected], 1
|
||||
mov bl, 0xAE ; enable keyboard interface
|
||||
call kb_cmd
|
||||
|
||||
mov esi, boot_setmouse_type
|
||||
call boot_log
|
||||
|
||||
jmp .finish
|
||||
|
||||
|
||||
.error:
|
||||
mov esp, [mouse_error_esp] ; clear stack frame
|
||||
mov [ps2_mouse_detected], 0
|
||||
mov bl, 0xA7 ; disable mouse interface
|
||||
call kb_cmd
|
||||
mov bl, 0xAE ; enable keyboard interface
|
||||
call kb_cmd
|
||||
|
||||
.finish:
|
||||
popad
|
@@ -631,20 +631,6 @@
|
||||
* <20><><EFBFBD> <20>맮<EFBFBD><EBA7AE> <20>⮩ <20>㭪樨 <20>ਫ<EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>⨢<EFBFBD><E2A8A2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頥<EFBFBD><E9A0A5><EFBFBD> <20>⢥<EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>".
|
||||
|
||||
======================================================================
|
||||
======== <20>㭪<EFBFBD><E3ADAA><EFBFBD> 18, <20><><EFBFBD><EFBFBD>㭪<EFBFBD><E3ADAA><EFBFBD> 1 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ࠡ<><E0A0A1><EFBFBD> <20><><EFBFBD>⥬<EFBFBD>. ========
|
||||
======================================================================
|
||||
<EFBFBD><EFBFBD>ࠬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
* eax = 18 - <20><><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨
|
||||
* ebx = 1 - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>㭪樨
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頥<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>祭<EFBFBD><E7A5AD>:
|
||||
* <20>ᥣ<EFBFBD><E1A5A3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頥<EFBFBD><E9A0A5><EFBFBD> eax = 0 <20><><EFBFBD> <20>ਧ<EFBFBD><E0A8A7><EFBFBD> <20>ᯥ<EFBFBD><E1AFA5>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>砭<EFBFBD><EFBFBD>:
|
||||
* <20><> <20><><EFBFBD><E1ABA5><EFBFBD><EFBFBD> 蠣<> <20><><EFBFBD><EFA2AB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>室<EFBFBD> <20><> <20><><EFBFBD>⥬<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>饥
|
||||
ॠ<>樨 <20><><EFBFBD>짮<EFBFBD><ECA7AE>⥫<EFBFBD>.
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ⠪<><E2A0AA> <20><><EFBFBD><EFBFBD>㭪<EFBFBD><E3ADAA><EFBFBD> 9, <20><><EFBFBD><EFBFBD><EFBFBD>襭<EFBFBD><E8A5AD> ࠡ<><E0A0A1><EFBFBD> <20><><EFBFBD>⥬<EFBFBD> <20> <20><>ࠬ<EFBFBD><E0A0AC>,
|
||||
<20>⮡<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD> <20>롮<EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><>室<EFBFBD>.
|
||||
|
||||
======================================================================
|
||||
==== <20>㭪<EFBFBD><E3ADAA><EFBFBD> 18, <20><><EFBFBD><EFBFBD>㭪<EFBFBD><E3ADAA><EFBFBD> 2 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><>⮪ <20><> <><E1ABAE>. ====
|
||||
======================================================================
|
||||
@@ -748,15 +734,12 @@
|
||||
* <20>㭪<EFBFBD><E3ADAA><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頥<EFBFBD> <20><><EFBFBD>祭<EFBFBD><E7A5AD>
|
||||
|
||||
======================================================================
|
||||
= <20>㭪<EFBFBD><E3ADAA><EFBFBD> 18, <20><><EFBFBD><EFBFBD>㭪<EFBFBD><E3ADAA><EFBFBD> 9 - <20><><EFBFBD><EFBFBD><EFBFBD>襭<EFBFBD><E8A5AD> ࠡ<><E0A0A1><EFBFBD> <20><><EFBFBD>⥬<EFBFBD> <EFBFBD> <20><>ࠬ<EFBFBD><E0A0AC>. =
|
||||
======= <20>㭪<EFBFBD><E3ADAA><EFBFBD> 18, <20><><EFBFBD><EFBFBD>㭪<EFBFBD><E3ADAA><EFBFBD> 9 - <20><><EFBFBD><EFBFBD><EFBFBD>襭<EFBFBD><E8A5AD> ࠡ<><E0A0A1><EFBFBD> <20><><EFBFBD>⥬<EFBFBD> ========
|
||||
======================================================================
|
||||
<EFBFBD><EFBFBD>ࠬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
* eax = 18 - <20><><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨
|
||||
* ebx = 9 - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>㭪樨
|
||||
* ecx = <20><>ࠬ<EFBFBD><E0A0AC><EFBFBD>:
|
||||
* 1 = <20><> <20><><EFBFBD><E1ABA5><EFBFBD><EFBFBD> 蠣<> <20><><EFBFBD><EFBFBD><EFBFBD>襭<EFBFBD><E8A5AD> ࠡ<><E0A0A1><EFBFBD> <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD> ࠬ<><E0A0AC><EFBFBD><EFBFBD> <20><>
|
||||
<20><>᪥<EFBFBD><E1AAA5>, <20><> 祣<> <20>뢥<EFBFBD><EBA2A5><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>室<EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>
|
||||
<20><><EFBFBD>짮<EFBFBD><ECA7AE>⥫<EFBFBD> <20><><EFBFBD>쭥<EFBFBD>訥 <20><><EFBFBD><EFBFBD>⢨<EFBFBD>
|
||||
* 2 = <20>몫<EFBFBD><EBAAAB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* 3 = <20><>१<EFBFBD><E0A5A7><EFBFBD>㧨<EFBFBD><E3A7A8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* 4 = <20><>१<EFBFBD><E0A5A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> 䠩<><E4A0A9> kernel.mnt <20><> ࠬ<><E0A0AC>᪥
|
||||
@@ -768,12 +751,6 @@
|
||||
<20>맮<EFBFBD><EBA7AE>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><E1ABA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD> <20>ᯮ<EFBFBD>짮<EFBFBD><ECA7AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>㭪<EFBFBD><E3ADAA><EFBFBD> 1, <20>⮡<EFBFBD> <20><> <20><><EFBFBD><E1ABA5><EFBFBD><EFBFBD> 蠣<>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD>襭<EFBFBD><E8A5AD> ࠡ<><E0A0A1><EFBFBD> <20><><EFBFBD>짮<EFBFBD><ECA7AE>⥫<EFBFBD> ᠬ <20><>蠫, <20><><EFBFBD> <20><><EFBFBD> <20>㦭<EFBFBD>.
|
||||
* <20><> ४<><E0A5AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ᯮ<EFBFBD>짮<EFBFBD><ECA7AE><EFBFBD><EFBFBD> <20><><EFBFBD>祭<EFBFBD><E7A5AD> ecx=1 (<28>⮡<EFBFBD> <20><> ࠧ<>ࠦ<EFBFBD><E0A0A6><EFBFBD>
|
||||
<20><><EFBFBD>짮<EFBFBD><ECA7AE>⥫<EFBFBD> <20><><EFBFBD><EFBFBD>譨<EFBFBD><E8ADA8> <20><><EFBFBD><EFBFBD><EFBFBD>ᠬ<EFBFBD>); <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD> ࠬ<><E0A0AC><EFBFBD><EFBFBD> <20><> <20><>᪥<EFBFBD><E1AAA5>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD> <20>㭪樥<E3ADAA> 16 (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>᪠<EFBFBD><E1AAA0> <20><><EFBFBD>筥<EFBFBD><E7ADA5><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<20><>᪥<EFBFBD><E1AAA5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>), <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ࠡ<><E0A0A1><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><>室<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> 㦥
|
||||
㯮<><E3AFAE><EFBFBD><EFBFBD>⮩ <20><><EFBFBD><EFBFBD>㭪樥<E3ADAA> 1.
|
||||
|
||||
======================================================================
|
||||
======== <20>㭪<EFBFBD><E3ADAA><EFBFBD> 18, <20><><EFBFBD><EFBFBD>㭪<EFBFBD><E3ADAA><EFBFBD> 10 - ᢥ<><E1A2A5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ਫ<EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. =======
|
||||
======================================================================
|
||||
|
@@ -623,20 +623,6 @@ Remarks:
|
||||
* The call of this function by an application with inactive window
|
||||
will return answer "buffer is empty".
|
||||
|
||||
======================================================================
|
||||
============ Function 18, subfunction 1 - system shutdown. ===========
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 18 - function number
|
||||
* ebx = 1 - subfunction number
|
||||
Returned value:
|
||||
* function always return eax = 0 as tag of success
|
||||
Remarks:
|
||||
* On the last step menu of exit from the system appears and waits
|
||||
response of the user.
|
||||
* See also subfunction 9, system shutdown with
|
||||
the parameter to force the choice in the exit menu.
|
||||
|
||||
======================================================================
|
||||
= Function 18, subfunction 2 - terminate process/thread by the slot. =
|
||||
======================================================================
|
||||
@@ -744,15 +730,12 @@ Returned value:
|
||||
* function does not return value
|
||||
|
||||
======================================================================
|
||||
== Function 18, subfunction 9 - system shutdown with the parameter. ==
|
||||
============ Function 18, subfunction 9 - system shutdown. ===========
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 18 - function number
|
||||
* ebx = 9 - subfunction number
|
||||
* ecx = parameter:
|
||||
* 1 = on the last step of shutdown save ramdisk on a floppy and
|
||||
then show the exit menu and request further operations
|
||||
from the user
|
||||
* 2 = turn off computer
|
||||
* 3 = reboot computer
|
||||
* 4 = restart the kernel from the file 'kernel.mnt' on ramdisk
|
||||
@@ -765,12 +748,6 @@ Remarks:
|
||||
changed in future versions of the kernel.
|
||||
* It is possible to use subfunction 1, that on the last step
|
||||
the user makes choice himself.
|
||||
* It is not recommended to use value ecx=1 (to not irritate the user
|
||||
with excessive questions); to save ramdisk on a floppy use
|
||||
function 16 (which admits specification, on which floppy to
|
||||
write), and to shutdown with the exit menu use already mentioned
|
||||
subfunction 1.
|
||||
|
||||
======================================================================
|
||||
===== Function 18, subfunction 10 - minimize application window. =====
|
||||
======================================================================
|
||||
|
@@ -1,176 +0,0 @@
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; ;;
|
||||
;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;;
|
||||
;; Distributed under terms of the GNU General Public License ;;
|
||||
;; ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
$Revision$
|
||||
|
||||
|
||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
MouseByteNumber_2 DB 0
|
||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
FirstByte_2 DB 0
|
||||
SecondByte_2 DB 0
|
||||
ThirdByte_2 DB 0
|
||||
timer_ticks_ps2 dd 0
|
||||
|
||||
;**************************************
|
||||
;* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> PS/2 *
|
||||
;**************************************
|
||||
check_mouse_data_ps2:
|
||||
cmp [ps2_mouse_detected],0
|
||||
je @@EndMouseInterrupt_2
|
||||
call Wait8042BufferEmpty ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
in AL,0x60 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD>
|
||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
cmp [MouseByteNumber_2],0
|
||||
je @@SaveFirstByte
|
||||
cmp [MouseByteNumber_2],1
|
||||
je @@SaveSecondByte
|
||||
cmp [MouseByteNumber_2],2
|
||||
je @@SaveThirdByte
|
||||
jmp @@Error_2
|
||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@@SaveFirstByte:
|
||||
test AL,1000b ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||
jz @@Error_2 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
mov [FirstByte_2],AL
|
||||
inc [MouseByteNumber_2]
|
||||
jmp @@EndMouseInterrupt_2
|
||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@@SaveSecondByte:
|
||||
mov [SecondByte_2],AL
|
||||
inc [MouseByteNumber_2]
|
||||
jmp @@EndMouseInterrupt_2
|
||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@@SaveThirdByte:
|
||||
mov [ThirdByte_2],AL
|
||||
mov [MouseByteNumber_2],0
|
||||
; (<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
mov al,[FirstByte_2] ;[0xfb01]
|
||||
and eax,3
|
||||
mov [BTN_DOWN],al
|
||||
mov [mouse_active],1
|
||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> X-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> AX <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> X
|
||||
mov AH,0 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> AH
|
||||
mov AL,[FirstByte_2]
|
||||
test AL,10000b
|
||||
jz @@M0
|
||||
mov AH,0FFh
|
||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> AL <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@@M0:
|
||||
mov AL,[SecondByte_2]
|
||||
call mouse_acceleration_ps2
|
||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> X
|
||||
add AX,[MOUSE_X] ;[XCoordinate]
|
||||
jns @@M1
|
||||
xor eax, eax
|
||||
jmp @@M2
|
||||
@@M1:
|
||||
cmp AX,[ScreenWidth] ;ScreenLength
|
||||
jl @@M2
|
||||
mov AX,[ScreenWidth] ;ScreenLength-1
|
||||
@@M2:
|
||||
mov [MOUSE_X],AX ;[XCoordinate]
|
||||
|
||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Y-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> AX <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> Y
|
||||
mov AH,0 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> AH
|
||||
mov AL,[FirstByte_2]
|
||||
test AL,100000b
|
||||
jz @@M3
|
||||
mov AH,0FFh
|
||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> AL <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@@M3:
|
||||
mov AL,[ThirdByte_2]
|
||||
call mouse_acceleration_ps2
|
||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
; <EFBFBD><EFBFBD> Y (Y-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> PS/2 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
neg AX
|
||||
add AX,[MOUSE_Y] ;[YCoordinate]
|
||||
jns @@M4
|
||||
xor eax, eax
|
||||
jmp @@M5
|
||||
@@M4:
|
||||
cmp AX,[ScreenHeight] ;ScreenHeigth
|
||||
jl @@M5
|
||||
mov AX,[ScreenHeight] ;ScreenHeigth-1
|
||||
@@M5:
|
||||
mov [MOUSE_Y],AX ;[YCoordinate]
|
||||
|
||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
mov eax,[timer_ticks]
|
||||
mov [timer_ticks_ps2],eax
|
||||
jmp @@EndMouseInterrupt_2
|
||||
|
||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@@Error_2:
|
||||
mov [MouseByteNumber_2],0
|
||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@@EndMouseInterrupt_2:
|
||||
call ready_for_next_irq_1
|
||||
ret
|
||||
|
||||
mouse_acceleration_ps2:
|
||||
push eax
|
||||
mov eax,[timer_ticks]
|
||||
sub eax,[timer_ticks_ps2]
|
||||
cmp eax,[mouse_delay]
|
||||
pop eax
|
||||
ja @f
|
||||
imul ax,[mouse_speed_factor]
|
||||
@@:
|
||||
ret
|
||||
;***********************************************
|
||||
;* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> I8042 *
|
||||
;* <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: *
|
||||
;* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ZF <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, *
|
||||
;* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ZF <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD><EFBFBD>. *
|
||||
;***********************************************
|
||||
Wait8042BufferEmpty:
|
||||
; push CX
|
||||
; mov CX,0FFFFh ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
;@@kb:
|
||||
; in AL,64h ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
; test AL,10b ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> i8042 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||
; loopnz @@kb ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
; pop CX
|
||||
push ecx
|
||||
xor ecx,ecx
|
||||
@@:
|
||||
in al,64h
|
||||
test al,00000010b
|
||||
loopnz @b
|
||||
pop ecx
|
||||
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ZF - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
ret ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
;***************************************
|
||||
;* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> *
|
||||
;***************************************
|
||||
WaitMouseData:
|
||||
; push CX
|
||||
; mov CX,0FFFFh ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
;@@mouse:
|
||||
; in AL,64h ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
; test AL,100000b ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||
; loopz @@mouse ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
; pop CX
|
||||
push ecx
|
||||
mov ECX,0FFFFh
|
||||
@@:
|
||||
in al,64h
|
||||
test al,100000b
|
||||
loopz @b
|
||||
pop ecx
|
||||
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ZF - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
ret
|
||||
|
@@ -2026,7 +2026,7 @@ sys_end:
|
||||
iglobal
|
||||
align 4
|
||||
sys_system_table:
|
||||
dd sysfn_shutdown ; 1 = system shutdown
|
||||
dd 0 ; 1 = system shutdown
|
||||
dd sysfn_terminate ; 2 = terminate thread
|
||||
dd sysfn_activate ; 3 = activate window
|
||||
dd sysfn_getidletime ; 4 = get idle time
|
||||
@@ -2034,7 +2034,7 @@ sys_system_table:
|
||||
dd sysfn_saveramdisk ; 6 = save ramdisk
|
||||
dd sysfn_getactive ; 7 = get active window
|
||||
dd sysfn_sound_flag ; 8 = get/set sound_flag
|
||||
dd sysfn_shutdown_param ; 9 = shutdown with parameter
|
||||
dd sysfn_shutdown ; 9 = shutdown with parameter
|
||||
dd sysfn_minimize ; 10 = minimize window
|
||||
dd sysfn_getdiskinfo ; 11 = get disk subsystem info
|
||||
dd sysfn_lastkey ; 12 = get last pressed key
|
||||
@@ -2060,14 +2060,19 @@ sys_system:
|
||||
@@:
|
||||
ret
|
||||
|
||||
sysfn_shutdown: ; 18.1 = BOOT
|
||||
mov [BOOT_VAR+0x9030],byte 0
|
||||
for_shutdown_parameter:
|
||||
|
||||
sysfn_shutdown: ; 18.9 = system shutdown
|
||||
cmp ecx,1
|
||||
jl exit_for_anyone
|
||||
cmp ecx,4
|
||||
jg exit_for_anyone
|
||||
mov [BOOT_VAR+0x9030],cl
|
||||
|
||||
mov eax,[TASK_COUNT]
|
||||
mov [SYS_SHUTDOWN],al
|
||||
mov [shutdown_processes],eax
|
||||
and dword [esp+32], 0
|
||||
exit_for_anyone:
|
||||
ret
|
||||
uglobal
|
||||
shutdown_processes: dd 0x0
|
||||
@@ -2179,17 +2184,8 @@ sysfn_sound_flag: ; 18.8 = get/set sound_flag
|
||||
nosoundflag:
|
||||
ret
|
||||
|
||||
sysfn_shutdown_param: ; 18.9 = system shutdown with param
|
||||
cmp ecx,1
|
||||
jl exit_for_anyone
|
||||
cmp ecx,4
|
||||
jg exit_for_anyone
|
||||
mov [BOOT_VAR+0x9030],cl
|
||||
jmp for_shutdown_parameter
|
||||
|
||||
sysfn_minimize: ; 18.10 = minimize window
|
||||
mov [window_minimize],1
|
||||
exit_for_anyone:
|
||||
ret
|
||||
|
||||
sysfn_getdiskinfo: ; 18.11 = get disk info table
|
||||
|
@@ -120,8 +120,8 @@ still_end:
|
||||
jmp still_end
|
||||
|
||||
reboot:
|
||||
mov eax,18
|
||||
mov ebx,1
|
||||
mov eax,70
|
||||
mov ebx,sys_reboot
|
||||
int 0x40
|
||||
;close program if we going to reboot
|
||||
|
||||
@@ -582,6 +582,14 @@ file_start: dd 7
|
||||
start_application: db '/sys/LAUNCHER',0
|
||||
times 60 db 32
|
||||
|
||||
sys_reboot:
|
||||
dd 7
|
||||
dd 0
|
||||
dd 0
|
||||
dd 0
|
||||
dd 0
|
||||
db '/sys/end',0
|
||||
|
||||
if lang eq de
|
||||
text:
|
||||
db ' NAME/BEENDEN PID CPU-LAST % '
|
||||
|
1
programs/system/end/trunk/back.raw
Normal file
1
programs/system/end/trunk/back.raw
Normal file
File diff suppressed because one or more lines are too long
3
programs/system/end/trunk/build.bat
Normal file
3
programs/system/end/trunk/build.bat
Normal file
@@ -0,0 +1,3 @@
|
||||
@fasm end.asm end
|
||||
@kpack end
|
||||
@pause
|
@@ -1,5 +0,0 @@
|
||||
@erase lang.inc
|
||||
@echo lang fix en >lang.inc
|
||||
@fasm end.asm end
|
||||
@erase lang.inc
|
||||
@pause
|
@@ -1,5 +0,0 @@
|
||||
@erase lang.inc
|
||||
@echo lang fix et >lang.inc
|
||||
@fasm end.asm end
|
||||
@erase lang.inc
|
||||
@pause
|
@@ -1,5 +0,0 @@
|
||||
@erase lang.inc
|
||||
@echo lang fix ge >lang.inc
|
||||
@fasm end.asm end
|
||||
@erase lang.inc
|
||||
@pause
|
@@ -1,5 +0,0 @@
|
||||
@erase lang.inc
|
||||
@echo lang fix ru >lang.inc
|
||||
@fasm end.asm end
|
||||
@erase lang.inc
|
||||
@pause
|
@@ -4,95 +4,56 @@
|
||||
; <diamond> note that 'mov al,xx' is shorter than 'mov eax,xx'
|
||||
; and if we know that high 24 bits of eax are zero, we can use 1st form
|
||||
; the same about ebx,ecx,edx
|
||||
;
|
||||
; 15.02.2007 merge old END with new one (fron Veliant & Leency) by Heavyiron
|
||||
|
||||
include "lang.inc"
|
||||
include "..\..\..\macros.inc"
|
||||
|
||||
meos_app_start
|
||||
code
|
||||
|
||||
do_draw:
|
||||
|
||||
mov eax,48
|
||||
mov ebx,3
|
||||
mov ecx,sc
|
||||
mov edx,sizeof.system_colors
|
||||
mcall
|
||||
draw:
|
||||
|
||||
mov al,12 ; eax=12 - tell os about redraw start
|
||||
mov bl,1
|
||||
mov ebx,1
|
||||
mcall
|
||||
|
||||
mov al,14 ; eax=14 - get screen max x & max y
|
||||
mcall
|
||||
|
||||
movzx ecx,ax
|
||||
|
||||
shr eax,17
|
||||
shl eax,16
|
||||
lea ebx,[eax-110*10000h+220]
|
||||
|
||||
shr ecx,1
|
||||
shl ecx,16
|
||||
sub ecx,50*10000h - 120
|
||||
movzx ecx, ax
|
||||
shr eax, 16
|
||||
shr ecx, 1
|
||||
shr eax, 1
|
||||
sub eax, 157
|
||||
sub ecx, 100
|
||||
mov ebx, eax
|
||||
shl ebx, 16
|
||||
add ebx, 253
|
||||
shl ecx, 16
|
||||
add ecx, 154
|
||||
|
||||
xor eax,eax ; define and draw window
|
||||
mov edx,[sc.work]
|
||||
mov esi,edx
|
||||
mov edi,edx
|
||||
mov edx,0x41ffffff
|
||||
mcall
|
||||
|
||||
mov edx,0x444444
|
||||
mov al,13
|
||||
mcall ,18 shl 16+90,29 shl 16+27
|
||||
push ebx
|
||||
mcall ,121 shl 16+90
|
||||
xchg ebx,[esp]
|
||||
mcall ,,63 shl 16+27
|
||||
pop ebx
|
||||
mcall
|
||||
mcall ,179 shl 16+30,99 shl 16+15
|
||||
|
||||
xor edx,edx
|
||||
mov al,8
|
||||
inc edx
|
||||
mcall ,15 shl 16+87,26 shl 16+24,,0xbb0055
|
||||
inc edx
|
||||
mcall ,118 shl 16+87,,,0xaaaa ;cccc
|
||||
inc edx
|
||||
mcall ,15 shl 16+87,60 shl 16+24,,0x9900
|
||||
inc edx
|
||||
mcall ,118 shl 16+87,,,0xaaaaaa ;cccccc
|
||||
inc edx
|
||||
mcall ,175 shl 16+30,95 shl 16+15,,[sc.work_button]
|
||||
|
||||
mov al,4 ; 0x00000004 = write text
|
||||
mov ebx,75*65536+10
|
||||
mov ecx,[sc.work_text] ; 8b window nro - RR GG BB color
|
||||
or ecx,0x90000000
|
||||
mov edx,label1 ; pointer to text beginning
|
||||
mov al, 7
|
||||
mov ebx, background
|
||||
mov ecx, 254 shl 16 + 155
|
||||
xor edx, edx
|
||||
mcall
|
||||
|
||||
mov ebx,15*65536+101
|
||||
mov edx,label4
|
||||
mcall
|
||||
|
||||
mov ecx,0x90eeeeee ; 8b window nro - RR GG BB color
|
||||
mov ebx,25*65536+30
|
||||
mov edx,label2 ; pointer to text beginning
|
||||
mcall
|
||||
|
||||
mov ebx,20*65536+64
|
||||
mov edx,label3
|
||||
mcall
|
||||
|
||||
mov ebx,45*65536+41
|
||||
mov edx,label5
|
||||
mcall
|
||||
|
||||
mov ebx,40*65536+75
|
||||
mov edx,label6
|
||||
mcall
|
||||
|
||||
mov al,8
|
||||
mcall ,58 shl 16 + 32,59 shl 16 + 34, 1 shl 30 + 1
|
||||
inc edx
|
||||
mcall ,110 shl 16 + 32,54 shl 16 + 32
|
||||
inc edx
|
||||
mcall ,161 shl 16 + 32,59 shl 16 + 34
|
||||
inc edx
|
||||
mcall ,193 shl 16 + 43,125 shl 16 + 16,
|
||||
inc edx
|
||||
mcall ,144 shl 16 + 43
|
||||
|
||||
mov al,12 ;end of redraw
|
||||
mov ebx,2
|
||||
@@ -104,7 +65,7 @@ still:
|
||||
mcall
|
||||
|
||||
dec eax
|
||||
jz do_draw
|
||||
jz draw
|
||||
dec eax
|
||||
jnz button
|
||||
key:
|
||||
@@ -126,10 +87,10 @@ still:
|
||||
mcall
|
||||
xchg al,ah
|
||||
dec eax
|
||||
jz power_off
|
||||
dec eax
|
||||
jz restart_kernel
|
||||
dec eax
|
||||
jz power_off
|
||||
dec eax
|
||||
jz restart
|
||||
dec eax
|
||||
jnz run_rdsave
|
||||
@@ -162,53 +123,7 @@ run_rdsave:
|
||||
jmp still
|
||||
|
||||
data
|
||||
|
||||
if lang eq ru
|
||||
label1:
|
||||
db '<27><><EFBFBD> <20>롮<EFBFBD>:',0
|
||||
label2:
|
||||
db '<27>몫<EFBFBD><EBAAAB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>',0
|
||||
label3:
|
||||
db '<27><>१<EFBFBD><E0A5A7><EFBFBD><EFBFBD><EFBFBD> <20>⬥<EFBFBD><E2ACA5>',0
|
||||
label4:
|
||||
db '<27><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD> <20><><EFBFBD><EFBFBD>ன<EFBFBD><E0AEA9>',0
|
||||
|
||||
else if lang eq en
|
||||
label1:
|
||||
db ' SELECT:',0
|
||||
label2:
|
||||
db 'POWER OFF KERNEL',0
|
||||
label3:
|
||||
db ' RESTART CANCEL',0
|
||||
label4:
|
||||
db 'Save settings',0
|
||||
|
||||
else if lang eq et
|
||||
label1:
|
||||
db ' VALI:',0
|
||||
label2:
|
||||
db 'L<>LITA V<>LJA KERNEL',0
|
||||
label3:
|
||||
db ' RESTART T<>HISTA',0
|
||||
label4:
|
||||
db 'Save settings',0
|
||||
|
||||
else
|
||||
label1:
|
||||
db 'WAEHLEN:',0
|
||||
label2:
|
||||
db ' BEENDEN KERNEL',0
|
||||
label3:
|
||||
db ' NEUSTART ABBRECHEN',0
|
||||
label4:
|
||||
db 'Save settings',0
|
||||
|
||||
end if
|
||||
label5:
|
||||
db '(End) (Home)',0
|
||||
label6:
|
||||
db '(Enter) (Esc)',0
|
||||
|
||||
background file 'back.raw'
|
||||
rdsave:
|
||||
dd 7
|
||||
dd 0
|
||||
@@ -217,6 +132,5 @@ rdsave:
|
||||
dd 0
|
||||
db '/sys/rdsave',0
|
||||
udata
|
||||
sc system_colors
|
||||
|
||||
meos_app_end
|
||||
|
Reference in New Issue
Block a user