forked from KolibriOS/kolibrios
further AMD-kernel tuning:
1)faster syscall bridge for future APIs; 2)HyperTransport module added (quite raw yet); 4)unrestricted i/o port access; 3)some MeOS rudiments removed. git-svn-id: svn://kolibrios.org@1551 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
0f036b69ff
commit
24fbc88418
144
kernel/branches/Kolibri-A/trunk/bus/HT.INC
Normal file
144
kernel/branches/Kolibri-A/trunk/bus/HT.INC
Normal file
@ -0,0 +1,144 @@
|
|||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;; ;;
|
||||||
|
;; Copyright (C) 2010 KolibriOS team. All rights reserved. ;;
|
||||||
|
;; Distributed under terms of the GNU General Public License ;;
|
||||||
|
;; ;;
|
||||||
|
;; HT.inc ;; ;;
|
||||||
|
;; ;;
|
||||||
|
;; AMD HyperTransport bus control ;;
|
||||||
|
;; ;;
|
||||||
|
;; art_zh <artem@jerdev.co.uk> ;;
|
||||||
|
;; ;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
align 4
|
||||||
|
|
||||||
|
;=============================================================================
|
||||||
|
;
|
||||||
|
; This code is a part of Kolibri-A and will only work with AMD RS760+ chipsets
|
||||||
|
;
|
||||||
|
;=============================================================================
|
||||||
|
|
||||||
|
;------------------------------------------
|
||||||
|
; params: al = nbconfig register#
|
||||||
|
; returns: eax = register content
|
||||||
|
;
|
||||||
|
rs7xx_nbconfig_read_pci:
|
||||||
|
and eax, 0x0FC ; leave register# only
|
||||||
|
or eax, 0x80000000 ; bdf = 0:0.0
|
||||||
|
mov dx, 0x0CF8 ; write to index reg
|
||||||
|
out dx, eax
|
||||||
|
add dl, 4
|
||||||
|
in eax, dx
|
||||||
|
ret
|
||||||
|
|
||||||
|
rs7xx_nbconfig_flush_pci:
|
||||||
|
mov eax, 0x0B0 ; a scratch reg
|
||||||
|
mov dx, 0xCF8
|
||||||
|
out dx, eax
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
rs7xx_nbconfig_write_pci:
|
||||||
|
and eax, 0x0FC ; leave register# only
|
||||||
|
or eax, 0x80000000 ; bdf = 0:0.0
|
||||||
|
mov dx, 0x0CF8 ; write to index reg
|
||||||
|
out dx, eax
|
||||||
|
add dl, 4
|
||||||
|
mov eax, ebx
|
||||||
|
out dx, eax
|
||||||
|
ret
|
||||||
|
|
||||||
|
;***************************************************************************
|
||||||
|
; Function
|
||||||
|
; rs7xx_pcie_init:
|
||||||
|
;
|
||||||
|
; Description
|
||||||
|
; PCIe extended (memory-mapped) config space detection
|
||||||
|
;
|
||||||
|
;***************************************************************************
|
||||||
|
|
||||||
|
rs7xx_pcie_init:
|
||||||
|
; mov al, 0x7C ; NB_IOC_CFG_CNTL
|
||||||
|
; mov ebx, 0x20000000
|
||||||
|
; call rs7xx_nbconfig_write_pci
|
||||||
|
mov al, 0x7C ; NB_IOC_CFG_CNTL
|
||||||
|
call rs7xx_nbconfig_read_pci
|
||||||
|
mov ebx, eax
|
||||||
|
call rs7xx_nbconfig_flush_pci
|
||||||
|
test ebx, 0x20000000 ; BAR3 locked?
|
||||||
|
jz .rs7xx_pcie_blocked
|
||||||
|
mov al, 0x84 ; NB_PCI_ARB
|
||||||
|
call rs7xx_nbconfig_read_pci
|
||||||
|
shr eax,16
|
||||||
|
and ax, 7 ; the Bus range lays here:
|
||||||
|
jnz @f
|
||||||
|
mov ax, 8 ; 1=2Mb, 2=4MB, 3=8MB, 4=16MB
|
||||||
|
@@:
|
||||||
|
mov [PCIe_bus_range], ax ; 5=32Mb, 6=64MB, 7=128Mb, 8=256Mb
|
||||||
|
mov cl, al
|
||||||
|
call rs7xx_nbconfig_flush_pci
|
||||||
|
dec cl ; <4M ?
|
||||||
|
jnz @f
|
||||||
|
inc cl ; one PDE needed anyway
|
||||||
|
@@:
|
||||||
|
dec cl
|
||||||
|
mov ebx, 1
|
||||||
|
shl ebx, cl
|
||||||
|
mov [mmio_pcie_cfg_pdes], bx ; 1..64 PDE(s) needed,
|
||||||
|
shl ebx, 22
|
||||||
|
mov [mmio_pcie_cfg_lim], ebx ; or 4..256Mb space to map
|
||||||
|
dec [mmio_pcie_cfg_lim]
|
||||||
|
|
||||||
|
mov al, 0x1C ; NB_BAR3_PCIEXP_MMCFG
|
||||||
|
call rs7xx_nbconfig_read_pci
|
||||||
|
mov ebx, eax
|
||||||
|
call rs7xx_nbconfig_flush_pci
|
||||||
|
mov eax, ebx
|
||||||
|
and eax, 0xFFE00000 ; valid bits [31..21]
|
||||||
|
jnz @f ; NB BAR3 may be invisible!
|
||||||
|
call pci_ext_config ; try to get pcie ecfg address indirectly
|
||||||
|
@@:
|
||||||
|
or eax, eax
|
||||||
|
jz .rs7xx_pcie_fail
|
||||||
|
mov [mmio_pcie_cfg_addr], eax ; physical address (lower 32 bits)
|
||||||
|
add [mmio_pcie_cfg_lim], eax
|
||||||
|
|
||||||
|
; -- map the whole PCIe config space;
|
||||||
|
or eax, (PG_SHARED + PG_LARGE + PG_UW) ; by the way, UW is unsafe!
|
||||||
|
mov ecx, PCIe_CONFIG_SPACE ; linear address
|
||||||
|
mov ebx, ecx
|
||||||
|
shr ebx, 20
|
||||||
|
add ebx, sys_pgdir ; PgDir entry @
|
||||||
|
xor dx, dx ; PDEs counter
|
||||||
|
@@:
|
||||||
|
mov dword[ebx], eax ; map 4 buses
|
||||||
|
invlpg [ecx] ; next PgDir entry
|
||||||
|
add bx, 4 ; new PDE
|
||||||
|
add eax, 0x400000 ; +4M phys.
|
||||||
|
add ecx, 0x400000 ; +4M lin.
|
||||||
|
inc dx
|
||||||
|
cmp dx, [mmio_pcie_cfg_pdes] ; all mapped yet?
|
||||||
|
jnz @b
|
||||||
|
|
||||||
|
.pcie_cfg_mapped:
|
||||||
|
mov esi, boot_pcie_ok
|
||||||
|
call boot_log
|
||||||
|
ret ; <<<<<<<<<<< OK >>>>>>>>>>>
|
||||||
|
|
||||||
|
.rs7xx_pcie_fail:
|
||||||
|
mov esi, boot_rs7xx_fail
|
||||||
|
call boot_log
|
||||||
|
ret
|
||||||
|
|
||||||
|
.rs7xx_pcie_blocked:
|
||||||
|
mov esi, boot_rs7xx_blkd
|
||||||
|
call boot_log
|
||||||
|
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -28,12 +28,14 @@ $Revision: 1463 $
|
|||||||
;
|
;
|
||||||
;***************************************************************************
|
;***************************************************************************
|
||||||
|
|
||||||
|
align 4
|
||||||
mmio_pcie_cfg_addr dd 0x00000000 ; pcie space may be defined here
|
mmio_pcie_cfg_addr dd 0x00000000 ; pcie space may be defined here
|
||||||
mmio_pcie_cfg_lim dd 0x000FFFFF ; upper pcie space address
|
mmio_pcie_cfg_lim dd 0x000FFFFF ; upper pcie space address
|
||||||
|
mmio_pcie_cfg_pdes dw 0 ; number of PDEs to map the space
|
||||||
|
PCIe_bus_range dw 0 ; the Bus range: power-of-2 Megabytes
|
||||||
|
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
|
|
||||||
pci_ext_config:
|
pci_ext_config:
|
||||||
mov ebx, [mmio_pcie_cfg_addr]
|
mov ebx, [mmio_pcie_cfg_addr]
|
||||||
or ebx,ebx
|
or ebx,ebx
|
||||||
@ -60,7 +62,7 @@ pci_ext_config:
|
|||||||
jz .no_pcie_cfg
|
jz .no_pcie_cfg
|
||||||
shl eax, 8 ; bus:[27..20], dev:[19:15]
|
shl eax, 8 ; bus:[27..20], dev:[19:15]
|
||||||
or eax, 0x00007FFC ; fun:[14..12], reg:[11:2]
|
or eax, 0x00007FFC ; fun:[14..12], reg:[11:2]
|
||||||
mov [mmio_pcie_cfg_lim], eax
|
; mov [mmio_pcie_cfg_lim], eax
|
||||||
mov cl, bl
|
mov cl, bl
|
||||||
mov ax, 0x0002 ; bus = 0, 1dword to read
|
mov ax, 0x0002 ; bus = 0, 1dword to read
|
||||||
call pci_read_reg
|
call pci_read_reg
|
||||||
@ -74,30 +76,14 @@ pci_ext_config:
|
|||||||
test eax, 0x000F0000 ; MMIO Base must be bus0-aligned
|
test eax, 0x000F0000 ; MMIO Base must be bus0-aligned
|
||||||
jnz .no_pcie_cfg
|
jnz .no_pcie_cfg
|
||||||
mov [mmio_pcie_cfg_addr], eax
|
mov [mmio_pcie_cfg_addr], eax
|
||||||
add eax, 0x000FFFFC
|
; add eax, 0x000FFFFC
|
||||||
sub eax,[mmio_pcie_cfg_lim] ; MMIO must cover at least one bus
|
; sub eax,[mmio_pcie_cfg_lim] ; MMIO must cover at least one bus
|
||||||
ja .no_pcie_cfg
|
; ja .no_pcie_cfg
|
||||||
|
|
||||||
; -- it looks like a true PCIe config space;
|
; -- it looks like a true PCIe config space;
|
||||||
mov eax,[mmio_pcie_cfg_addr] ; physical address
|
|
||||||
or eax, (PG_SHARED + PG_LARGE + PG_USER)
|
|
||||||
mov ebx, PCIe_CONFIG_SPACE ; linear address
|
|
||||||
mov ecx, ebx
|
|
||||||
shr ebx, 20
|
|
||||||
add ebx, sys_pgdir ; PgDir entry @
|
|
||||||
@@:
|
|
||||||
mov dword[ebx], eax ; map 4 buses
|
|
||||||
invlpg [ecx]
|
|
||||||
cmp bl, 4
|
|
||||||
jz .pcie_cfg_mapped ; fix it later
|
|
||||||
add bl, 4 ; next PgDir entry
|
|
||||||
add eax, 0x400000 ; eax += 4M
|
|
||||||
add ecx, 0x400000
|
|
||||||
jmp @b
|
|
||||||
|
|
||||||
.pcie_cfg_mapped:
|
.pcie_cfg_mapped:
|
||||||
|
|
||||||
; -- glad to have the extended PCIe config field found
|
|
||||||
mov esi, boot_pcie_ok
|
mov esi, boot_pcie_ok
|
||||||
call boot_log
|
call boot_log
|
||||||
ret ; <<<<<<<<<<< OK >>>>>>>>>>>
|
ret ; <<<<<<<<<<< OK >>>>>>>>>>>
|
||||||
|
@ -17,39 +17,40 @@ cross_order:
|
|||||||
mov edx, esi
|
mov edx, esi
|
||||||
mov esi, edi
|
mov esi, edi
|
||||||
movzx edi, byte[esp+28 + 4]
|
movzx edi, byte[esp+28 + 4]
|
||||||
|
sub edi, 53 ; all zeroes before
|
||||||
call dword [servetable+edi*4]
|
call dword [servetable+edi*4]
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; ;;
|
;; ;;
|
||||||
;; SYSENTER ENTRY ;;
|
;; SYSENTER ENTRY ;;
|
||||||
;; ;;
|
;; (not used on AMD systems) ;;
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
align 32
|
;align 32
|
||||||
sysenter_entry:
|
;sysenter_entry:
|
||||||
; Íàñòðàèâàåì ñòåê
|
; ; Íàñòðàèâàåì ñòåê
|
||||||
mov esp, [ss:tss._esp0]
|
; mov esp, [ss:tss._esp0]
|
||||||
sti
|
; sti
|
||||||
push ebp ; save app esp + 4
|
; push ebp ; save app esp + 4
|
||||||
mov ebp, [ebp] ; ebp - original ebp
|
; mov ebp, [ebp] ; ebp - original ebp
|
||||||
;------------------
|
; ;------------------
|
||||||
pushad
|
; pushad
|
||||||
cld
|
; cld
|
||||||
|
;
|
||||||
|
; movzx eax, al
|
||||||
|
; call dword [servetable2 + eax * 4]
|
||||||
|
|
||||||
movzx eax, al
|
; popad
|
||||||
call dword [servetable2 + eax * 4]
|
; ;------------------
|
||||||
|
; xchg ecx, [ss:esp] ; â âåðøèí ñòåêà - app ecx, ecx - app esp + 4
|
||||||
popad
|
; sub ecx, 4
|
||||||
;------------------
|
; xchg edx, [ecx] ; edx - return point, & save original edx
|
||||||
xchg ecx, [ss:esp] ; â âåðøèí ñòåêà - app ecx, ecx - app esp + 4
|
; push edx
|
||||||
sub ecx, 4
|
; mov edx, [ss:esp + 4]
|
||||||
xchg edx, [ecx] ; edx - return point, & save original edx
|
; mov [ecx + 4], edx ; save original ecx
|
||||||
push edx
|
; pop edx
|
||||||
mov edx, [ss:esp + 4]
|
; sysexit
|
||||||
mov [ecx + 4], edx ; save original ecx
|
|
||||||
pop edx
|
|
||||||
sysexit
|
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; ;;
|
;; ;;
|
||||||
@ -61,7 +62,7 @@ align 16
|
|||||||
i40:
|
i40:
|
||||||
pushad
|
pushad
|
||||||
cld
|
cld
|
||||||
movzx eax, al
|
and eax, 0x07F
|
||||||
call dword [servetable2 + eax * 4]
|
call dword [servetable2 + eax * 4]
|
||||||
popad
|
popad
|
||||||
iretd
|
iretd
|
||||||
@ -73,25 +74,12 @@ i40:
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
align 32
|
align 32
|
||||||
syscall_entry:
|
syscall_entry:
|
||||||
; cli syscall clear IF
|
; push ecx
|
||||||
xchg esp, [ss:tss._esp0]
|
sti
|
||||||
push ecx
|
xor eax, 3
|
||||||
lea ecx, [esp+4]
|
call dword [servetable3 + eax * 4]
|
||||||
xchg ecx, [ss:tss._esp0]
|
|
||||||
sti
|
|
||||||
push ecx
|
|
||||||
mov ecx, [ecx]
|
|
||||||
;------------------
|
|
||||||
pushad
|
|
||||||
cld
|
|
||||||
|
|
||||||
movzx eax, al
|
; pop ecx
|
||||||
call dword [servetable2 + eax * 4]
|
|
||||||
|
|
||||||
popad
|
|
||||||
;------------------
|
|
||||||
mov ecx, [ss:esp+4]
|
|
||||||
pop esp
|
|
||||||
sysret
|
sysret
|
||||||
|
|
||||||
iglobal
|
iglobal
|
||||||
@ -102,59 +90,6 @@ iglobal
|
|||||||
align 4
|
align 4
|
||||||
servetable:
|
servetable:
|
||||||
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd 0
|
|
||||||
dd socket ; 53-Socket interface
|
dd socket ; 53-Socket interface
|
||||||
dd 0
|
dd 0
|
||||||
dd 0
|
dd 0
|
||||||
@ -246,7 +181,15 @@ iglobal
|
|||||||
dd file_system_lfn ; 70-Common file system interface, version 2
|
dd file_system_lfn ; 70-Common file system interface, version 2
|
||||||
dd syscall_window_settings ; 71-Window settings
|
dd syscall_window_settings ; 71-Window settings
|
||||||
dd sys_sendwindowmsg ; 72-Send window message
|
dd sys_sendwindowmsg ; 72-Send window message
|
||||||
times 255 - ( ($-servetable2) /4 ) dd undefined_syscall
|
times 127 - ( ($-servetable2) /4 ) dd undefined_syscall
|
||||||
dd sys_end ; -1-end application
|
dd sys_end ; -1-end application
|
||||||
|
|
||||||
|
align 4
|
||||||
|
servetable3:
|
||||||
|
|
||||||
|
dd paleholder ; 0
|
||||||
|
dd paleholder ; 1
|
||||||
|
dd paleholder ; 2
|
||||||
|
dd sys_end ; last
|
||||||
|
|
||||||
endg
|
endg
|
||||||
|
@ -1,469 +1,471 @@
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; ;;
|
;; ;;
|
||||||
;; Copyright (C) KolibriOS team 2004-2009. All rights reserved. ;;
|
;; Copyright (C) KolibriOS team 2004-2009. All rights reserved. ;;
|
||||||
;; Distributed under terms of the GNU General Public License ;;
|
;; Distributed under terms of the GNU General Public License ;;
|
||||||
;; ;;
|
;; ;;
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
$Revision$
|
$Revision$
|
||||||
|
|
||||||
|
|
||||||
keymap:
|
keymap:
|
||||||
|
|
||||||
db '6',27
|
db '6',27
|
||||||
db '1234567890-=',8,9
|
db '1234567890-=',8,9
|
||||||
db 'qwertyuiop[]',13
|
db 'qwertyuiop[]',13
|
||||||
db '~asdfghjkl;',39,96,0,'\zxcvbnm,./',0,'45 '
|
db '~asdfghjkl;',39,96,0,'\zxcvbnm,./',0,'45 '
|
||||||
db '@234567890123',180,178,184,'6',176,'7'
|
db '@234567890123',180,178,184,'6',176,'7'
|
||||||
db 179,'8',181,177,183,185,182
|
db 179,'8',181,177,183,185,182
|
||||||
db 'AB<D',255,'FGHIJKLMNOPQRSTUVWXYZ'
|
db 'AB<D',255,'FGHIJKLMNOPQRSTUVWXYZ'
|
||||||
db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
||||||
db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
||||||
db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
||||||
|
|
||||||
keymap_shift:
|
keymap_shift:
|
||||||
db '6',27
|
db '6',27
|
||||||
db '!@#$%^&*()_+',8,9
|
db '!@#$%^&*()_+',8,9
|
||||||
db 'QWERTYUIOP{}',13
|
db 'QWERTYUIOP{}',13
|
||||||
db '~ASDFGHJKL:"~',0,'|ZXCVBNM<>?',0,'45 '
|
db '~ASDFGHJKL:"~',0,'|ZXCVBNM<>?',0,'45 '
|
||||||
db '@234567890123',180,178,184,'6',176,'7'
|
db '@234567890123',180,178,184,'6',176,'7'
|
||||||
db 179,'8',181,177,183,185,182
|
db 179,'8',181,177,183,185,182
|
||||||
db 'AB>D',255,'FGHIJKLMNOPQRSTUVWXYZ'
|
db 'AB>D',255,'FGHIJKLMNOPQRSTUVWXYZ'
|
||||||
db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
||||||
db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
||||||
db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
||||||
|
|
||||||
|
|
||||||
keymap_alt:
|
keymap_alt:
|
||||||
db ' ',27
|
db ' ',27
|
||||||
db ' @ $ {[]}\ ',8,9
|
db ' @ $ {[]}\ ',8,9
|
||||||
db ' ',13
|
db ' ',13
|
||||||
db ' ',0,' ',0,'4',0,' '
|
db ' ',0,' ',0,'4',0,' '
|
||||||
db ' ',180,178,184,'6',176,'7'
|
db ' ',180,178,184,'6',176,'7'
|
||||||
db 179,'8',181,177,183,185,182
|
db 179,'8',181,177,183,185,182
|
||||||
db 'ABCD',255,'FGHIJKLMNOPQRSTUVWXYZ'
|
db 'ABCD',255,'FGHIJKLMNOPQRSTUVWXYZ'
|
||||||
db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
||||||
db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
||||||
db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
||||||
|
|
||||||
|
|
||||||
boot_memdetect db 'Determining amount of memory',0
|
boot_memdetect db 'Determining amount of memory',0
|
||||||
boot_fonts db 'Fonts loaded',0
|
boot_fonts db 'Fonts loaded',0
|
||||||
boot_tss db 'Setting TSSs',0
|
boot_tss db 'Setting TSSs',0
|
||||||
boot_cpuid db 'Reading CPUIDs',0
|
boot_cpuid db 'Reading CPUIDs',0
|
||||||
boot_devices db 'Detecting devices',0
|
boot_devices db 'Detecting devices',0
|
||||||
boot_timer db 'Setting timer',0
|
boot_timer db 'Setting timer',0
|
||||||
boot_irqs db 'Reprogramming IRQs',0
|
boot_irqs db 'Reprogramming IRQs',0
|
||||||
boot_setmouse db 'Setting mouse',0
|
boot_setmouse db 'Setting mouse',0
|
||||||
boot_windefs db 'Setting window defaults',0
|
boot_windefs db 'Setting window defaults',0
|
||||||
boot_bgr db 'Calculating background',0
|
boot_bgr db 'Calculating background',0
|
||||||
boot_resirqports db 'Reserving IRQs & ports',0
|
boot_resirqports db 'Reserving IRQs & ports',0
|
||||||
boot_setrports db 'Setting addresses for IRQs',0
|
; boot_setrports db 'Setting addresses for IRQs',0
|
||||||
boot_setostask db 'Setting OS task',0
|
boot_setostask db 'Setting OS task',0
|
||||||
boot_allirqs db 'Unmasking all IRQs',0
|
boot_allirqs db 'Unmasking all IRQs',0
|
||||||
boot_tsc db 'Reading TSC',0
|
boot_tsc db 'Reading TSC',0
|
||||||
boot_cpufreq db 'CPU frequency is ',' ',' MHz',0
|
boot_cpufreq db 'CPU frequency is ',' ',' MHz',0
|
||||||
boot_pal_ega db 'Setting EGA/CGA 320x200 palette',0
|
; boot_pal_ega db 'Setting EGA/CGA 320x200 palette',0
|
||||||
boot_pal_vga db 'Setting VGA 640x480 palette',0
|
; boot_pal_vga db 'Setting VGA 640x480 palette',0
|
||||||
boot_failed db 'Failed to start first app',0
|
boot_failed db 'Failed to start first app',0
|
||||||
boot_mtrr db 'Setting MTRR',0
|
boot_mtrr db 'Setting MTRR',0
|
||||||
boot_pcie_ok db 'PCIe config set OK',0
|
boot_pcie_ok db 'PCIe config set OK',0
|
||||||
boot_pcie_fail db 'PCIe config XXX failed XXX',0
|
boot_pcie_fail db 'PCIe config XXX failed XXX',0
|
||||||
if preboot_blogesc
|
boot_rs7xx_fail db 'RS7xx config XXX failed XXX',0
|
||||||
boot_tasking db 'All set - press ESC to start',0
|
boot_rs7xx_blkd db 'RS7xx config ---------- FAILED -----------',0
|
||||||
end if
|
if preboot_blogesc
|
||||||
|
boot_tasking db 'All set - press ESC to start',0
|
||||||
;new_process_loading db 'K : New Process - loading',13,10,0
|
end if
|
||||||
;new_process_running db 'K : New Process - done',13,10,0
|
|
||||||
start_not_enough_memory db 'K : New Process - not enough memory',13,10,0
|
;new_process_loading db 'K : New Process - loading',13,10,0
|
||||||
|
;new_process_running db 'K : New Process - done',13,10,0
|
||||||
msg_unresolved db 'unresolved ',0
|
start_not_enough_memory db 'K : New Process - not enough memory',13,10,0
|
||||||
msg_module db 'in module ',0
|
|
||||||
msg_version db 'incompatible driver version',13,10,0
|
msg_unresolved db 'unresolved ',0
|
||||||
msg_www db 'please visit www.kolibrios.org',13,10,0
|
msg_module db 'in module ',0
|
||||||
msg_CR db 13,10,0
|
msg_version db 'incompatible driver version',13,10,0
|
||||||
aSis db 'SIS',0
|
msg_www db 'please visit www.kolibrios.org',13,10,0
|
||||||
|
msg_CR db 13,10,0
|
||||||
intel_str db "GenuineIntel",0
|
aSis db 'SIS',0
|
||||||
AMD_str db "AuthenticAMD",0
|
|
||||||
|
intel_str db "GenuineIntel",0
|
||||||
;szSound db 'SOUND',0
|
AMD_str db "AuthenticAMD",0
|
||||||
;szInfinity db 'INFINITY',0
|
|
||||||
szHwMouse db 'ATI2D',0
|
;szSound db 'SOUND',0
|
||||||
szPS2MDriver db 'PS2MOUSE',0
|
;szInfinity db 'INFINITY',0
|
||||||
;szCOM_MDriver db 'COM_MOUSE',0
|
szHwMouse db 'ATI2D',0
|
||||||
szUSB db 'USB',0
|
szPS2MDriver db 'PS2MOUSE',0
|
||||||
szAtiHW db '/rd/1/drivers/ati2d.drv',0
|
;szCOM_MDriver db 'COM_MOUSE',0
|
||||||
|
szUSB db 'USB',0
|
||||||
szSTART db 'START',0
|
szAtiHW db '/rd/1/drivers/ati2d.drv',0
|
||||||
szEXPORTS db 'EXPORTS',0
|
|
||||||
sz_EXPORTS db '_EXPORTS',0
|
szSTART db 'START',0
|
||||||
|
szEXPORTS db 'EXPORTS',0
|
||||||
szIMPORTS db 'IMPORTS',0
|
sz_EXPORTS db '_EXPORTS',0
|
||||||
|
|
||||||
read_firstapp db '/sys/'
|
szIMPORTS db 'IMPORTS',0
|
||||||
firstapp db 'LAUNCHER',0
|
|
||||||
|
read_firstapp db '/sys/'
|
||||||
char db '/sys/FONTS/CHAR.MT',0
|
firstapp db 'LAUNCHER',0
|
||||||
char2 db '/sys/FONTS/CHAR2.MT',0
|
|
||||||
|
char db '/sys/FONTS/CHAR.MT',0
|
||||||
bootpath db '/KOLIBRI '
|
char2 db '/sys/FONTS/CHAR2.MT',0
|
||||||
bootpath2 db 0
|
|
||||||
vmode db '/sys/drivers/VMODE.MDR',0
|
bootpath db '/KOLIBRI '
|
||||||
vrr_m db 'VRR_M',0
|
bootpath2 db 0
|
||||||
kernel_file db 'KERNEL MNT'
|
vmode db '/sys/drivers/VMODE.MDR',0
|
||||||
|
vrr_m db 'VRR_M',0
|
||||||
|
kernel_file db 'KERNEL MNT'
|
||||||
align 4
|
|
||||||
|
|
||||||
shmem_list:
|
align 4
|
||||||
.bk dd shmem_list
|
|
||||||
.fd dd shmem_list
|
shmem_list:
|
||||||
|
.bk dd shmem_list
|
||||||
dll_list:
|
.fd dd shmem_list
|
||||||
.bk dd dll_list
|
|
||||||
.fd dd dll_list
|
dll_list:
|
||||||
|
.bk dd dll_list
|
||||||
MAX_DEFAULT_DLL_ADDR = 0x20000000
|
.fd dd dll_list
|
||||||
MIN_DEFAULT_DLL_ADDR = 0x10000000
|
|
||||||
dll_cur_addr dd MIN_DEFAULT_DLL_ADDR
|
MAX_DEFAULT_DLL_ADDR = 0x20000000
|
||||||
|
MIN_DEFAULT_DLL_ADDR = 0x10000000
|
||||||
; supported videomodes
|
dll_cur_addr dd MIN_DEFAULT_DLL_ADDR
|
||||||
|
|
||||||
|
; supported videomodes
|
||||||
; mike.dld {
|
|
||||||
db 0
|
|
||||||
dd servetable-0x10000
|
; mike.dld {
|
||||||
draw_line dd __sys_draw_line
|
db 0
|
||||||
draw_pointer dd __sys_draw_pointer
|
dd servetable-0x10000
|
||||||
;//mike.dld, 2006-08-02 [
|
draw_line dd __sys_draw_line
|
||||||
;drawbar dd __sys_drawbar
|
draw_pointer dd __sys_draw_pointer
|
||||||
drawbar dd __sys_drawbar.forced
|
;//mike.dld, 2006-08-02 [
|
||||||
;//mike.dld, 2006-08-02 ]
|
;drawbar dd __sys_drawbar
|
||||||
putpixel dd __sys_putpixel
|
drawbar dd __sys_drawbar.forced
|
||||||
; } mike.dld
|
;//mike.dld, 2006-08-02 ]
|
||||||
|
putpixel dd __sys_putpixel
|
||||||
|
; } mike.dld
|
||||||
align 4
|
|
||||||
keyboard dd 1
|
|
||||||
syslang dd 1
|
align 4
|
||||||
|
keyboard dd 1
|
||||||
boot_y dd 10
|
syslang dd 1
|
||||||
|
|
||||||
pci_bios_entry dd 0
|
boot_y dd 10
|
||||||
dw pci_code_sel
|
|
||||||
|
pci_bios_entry dd 0
|
||||||
if __DEBUG__ eq 1
|
dw pci_code_sel
|
||||||
include_debug_strings
|
|
||||||
end if
|
if __DEBUG__ eq 1
|
||||||
|
include_debug_strings
|
||||||
IncludeIGlobals
|
end if
|
||||||
|
|
||||||
align 16
|
IncludeIGlobals
|
||||||
gdts:
|
|
||||||
|
align 16
|
||||||
dw gdte-$-1
|
gdts:
|
||||||
dd gdts
|
|
||||||
dw 0
|
dw gdte-$-1
|
||||||
|
dd gdts
|
||||||
; Attention! Do not change the order of the first four selectors. They are used in Fast System Call
|
dw 0
|
||||||
; must be : os_code, os_data, app_code, app_data, ....
|
|
||||||
|
; Attention! Do not change the order of the first four selectors. They are used in Fast System Call
|
||||||
int_code_l:
|
; must be : os_code, os_data, app_code, app_data, ....
|
||||||
os_code_l:
|
|
||||||
dw 0xffff
|
int_code_l:
|
||||||
dw 0x0000
|
os_code_l:
|
||||||
db 0x00
|
dw 0xffff
|
||||||
dw 11011111b *256 +10011010b
|
dw 0x0000
|
||||||
db 0x00
|
db 0x00
|
||||||
|
dw 11011111b *256 +10011010b
|
||||||
int_data_l:
|
db 0x00
|
||||||
os_data_l:
|
|
||||||
dw 0xffff
|
int_data_l:
|
||||||
dw 0x0000
|
os_data_l:
|
||||||
db 0x00
|
dw 0xffff
|
||||||
dw 11011111b *256 +10010010b
|
dw 0x0000
|
||||||
db 0x00
|
db 0x00
|
||||||
|
dw 11011111b *256 +10010010b
|
||||||
app_code_l:
|
db 0x00
|
||||||
dw 0xFFFF
|
|
||||||
dw 0
|
app_code_l:
|
||||||
db 0
|
dw 0xFFFF
|
||||||
db cpl3
|
dw 0
|
||||||
dw G32+D32+0xF;
|
db 0
|
||||||
|
db cpl3
|
||||||
app_data_l:
|
dw G32+D32+0xF;
|
||||||
dw 0xFFFF
|
|
||||||
dw 0
|
app_data_l:
|
||||||
db 0
|
dw 0xFFFF
|
||||||
db drw3
|
dw 0
|
||||||
dw G32+D32+0xF;
|
db 0
|
||||||
|
db drw3
|
||||||
; ------------- PCI BIOS ------------------
|
dw G32+D32+0xF;
|
||||||
|
|
||||||
pci_code_32:
|
; ------------- PCI BIOS ------------------
|
||||||
dw 0 ;lim 0-15
|
|
||||||
dw 0 ;base 0-15
|
pci_code_32:
|
||||||
db 0 ;base 16-23
|
dw 0 ;lim 0-15
|
||||||
db cpl0 ;type
|
dw 0 ;base 0-15
|
||||||
db D32 ;lim 16-19+props
|
db 0 ;base 16-23
|
||||||
db 0 ;base 24-31
|
db cpl0 ;type
|
||||||
|
db D32 ;lim 16-19+props
|
||||||
pci_data_32:
|
db 0 ;base 24-31
|
||||||
dw 0 ;lim 0-15
|
|
||||||
dw 0 ;base 0-15
|
pci_data_32:
|
||||||
db 0 ;base 16-23
|
dw 0 ;lim 0-15
|
||||||
db dpl0 ;type
|
dw 0 ;base 0-15
|
||||||
db D32 ;lim 16-19+props
|
db 0 ;base 16-23
|
||||||
db 0 ;base 24-31
|
db dpl0 ;type
|
||||||
|
db D32 ;lim 16-19+props
|
||||||
; --------------- APM ---------------------
|
db 0 ;base 24-31
|
||||||
apm_code_32:
|
|
||||||
dw 0x0f ; limit 64kb
|
; --------------- APM ---------------------
|
||||||
db 0, 0, 0
|
apm_code_32:
|
||||||
dw 11010000b *256 +10011010b
|
dw 0x0f ; limit 64kb
|
||||||
db 0x00
|
db 0, 0, 0
|
||||||
apm_code_16:
|
dw 11010000b *256 +10011010b
|
||||||
dw 0x0f
|
db 0x00
|
||||||
db 0, 0, 0
|
apm_code_16:
|
||||||
dw 10010000b *256 +10011010b
|
dw 0x0f
|
||||||
db 0x00
|
db 0, 0, 0
|
||||||
apm_data_16:
|
dw 10010000b *256 +10011010b
|
||||||
dw 0x0f
|
db 0x00
|
||||||
db 0, 0, 0
|
apm_data_16:
|
||||||
dw 10010000b *256 +10010010b
|
dw 0x0f
|
||||||
db 0x00
|
db 0, 0, 0
|
||||||
; -----------------------------------------
|
dw 10010000b *256 +10010010b
|
||||||
|
db 0x00
|
||||||
graph_data_l:
|
; -----------------------------------------
|
||||||
|
|
||||||
dw 0x7ff
|
graph_data_l:
|
||||||
dw 0x0000
|
|
||||||
db 0x00
|
dw 0x7ff
|
||||||
dw 11010000b *256 +11110010b
|
dw 0x0000
|
||||||
db 0x00
|
db 0x00
|
||||||
tss0_l:
|
dw 11010000b *256 +11110010b
|
||||||
dw TSS_SIZE-1
|
db 0x00
|
||||||
dw tss and 0xFFFF
|
tss0_l:
|
||||||
db (tss shr 16) and 0xFF
|
dw TSS_SIZE-1
|
||||||
db 10001001b
|
dw tss and 0xFFFF
|
||||||
dw (tss shr 16) and 0xFF00
|
db (tss shr 16) and 0xFF
|
||||||
|
db 10001001b
|
||||||
tls_data_l:
|
dw (tss shr 16) and 0xFF00
|
||||||
dw 0x0FFF
|
|
||||||
dw 0
|
tls_data_l:
|
||||||
db 0
|
dw 0x0FFF
|
||||||
db drw3
|
dw 0
|
||||||
dw D32
|
db 0
|
||||||
|
db drw3
|
||||||
endofcode:
|
dw D32
|
||||||
gdte:
|
|
||||||
|
endofcode:
|
||||||
align 16
|
gdte:
|
||||||
cur_saved_data rb 4096
|
|
||||||
fpu_data: rb 512
|
align 16
|
||||||
|
cur_saved_data rb 4096
|
||||||
; device irq owners
|
fpu_data: rb 512
|
||||||
irq_owner rd 16 ; process id
|
|
||||||
|
; device irq owners
|
||||||
; on irq read ports
|
irq_owner rd 16 ; process id
|
||||||
|
|
||||||
irq00read rd 16
|
; on irq read ports
|
||||||
irq01read rd 16
|
|
||||||
irq02read rd 16
|
irq00read rd 16
|
||||||
irq03read rd 16
|
irq01read rd 16
|
||||||
irq04read rd 16
|
irq02read rd 16
|
||||||
irq05read rd 16
|
irq03read rd 16
|
||||||
irq06read rd 16
|
irq04read rd 16
|
||||||
irq07read rd 16
|
irq05read rd 16
|
||||||
irq08read rd 16
|
irq06read rd 16
|
||||||
irq09read rd 16
|
irq07read rd 16
|
||||||
irq10read rd 16
|
irq08read rd 16
|
||||||
irq11read rd 16
|
irq09read rd 16
|
||||||
irq12read rd 16
|
irq10read rd 16
|
||||||
irq13read rd 16
|
irq11read rd 16
|
||||||
irq14read rd 16
|
irq12read rd 16
|
||||||
irq15read rd 16
|
irq13read rd 16
|
||||||
|
irq14read rd 16
|
||||||
irq_tab rd 16
|
irq15read rd 16
|
||||||
|
|
||||||
mem_block_map rb 512
|
irq_tab rd 16
|
||||||
mem_block_list rd 64
|
|
||||||
large_block_list rd 31
|
mem_block_map rb 512
|
||||||
mem_block_mask rd 2
|
mem_block_list rd 64
|
||||||
large_block_mask rd 1
|
large_block_list rd 31
|
||||||
|
mem_block_mask rd 2
|
||||||
mem_used.fd rd 1
|
large_block_mask rd 1
|
||||||
mem_used.bk rd 1
|
|
||||||
|
mem_used.fd rd 1
|
||||||
mem_block_arr rd 1
|
mem_used.bk rd 1
|
||||||
mem_block_start rd 1
|
|
||||||
mem_block_end rd 1
|
mem_block_arr rd 1
|
||||||
|
mem_block_start rd 1
|
||||||
heap_mutex rd 1
|
mem_block_end rd 1
|
||||||
heap_size rd 1
|
|
||||||
heap_free rd 1
|
heap_mutex rd 1
|
||||||
heap_blocks rd 1
|
heap_size rd 1
|
||||||
free_blocks rd 1
|
heap_free rd 1
|
||||||
|
heap_blocks rd 1
|
||||||
mst MEM_STATE
|
free_blocks rd 1
|
||||||
|
|
||||||
page_start rd 1
|
mst MEM_STATE
|
||||||
page_end rd 1
|
|
||||||
sys_page_map rd 1
|
page_start rd 1
|
||||||
os_stack_seg rd 1
|
page_end rd 1
|
||||||
|
sys_page_map rd 1
|
||||||
|
os_stack_seg rd 1
|
||||||
srv.fd rd 1
|
|
||||||
srv.bk rd 1
|
|
||||||
|
srv.fd rd 1
|
||||||
|
srv.bk rd 1
|
||||||
align 16
|
|
||||||
|
|
||||||
_display display_t
|
align 16
|
||||||
|
|
||||||
_WinMapAddress rd 1
|
_display display_t
|
||||||
_WinMapSize rd 1
|
|
||||||
|
_WinMapAddress rd 1
|
||||||
def_cursor rd 1
|
_WinMapSize rd 1
|
||||||
current_cursor rd 1
|
|
||||||
hw_cursor rd 1
|
def_cursor rd 1
|
||||||
cur_saved_base rd 1
|
current_cursor rd 1
|
||||||
|
hw_cursor rd 1
|
||||||
cur.lock rd 1 ;1 - lock update, 2- hide
|
cur_saved_base rd 1
|
||||||
cur.left rd 1 ;cursor clip box
|
|
||||||
cur.top rd 1
|
cur.lock rd 1 ;1 - lock update, 2- hide
|
||||||
cur.right rd 1
|
cur.left rd 1 ;cursor clip box
|
||||||
cur.bottom rd 1
|
cur.top rd 1
|
||||||
cur.w rd 1
|
cur.right rd 1
|
||||||
cur.h rd 1
|
cur.bottom rd 1
|
||||||
|
cur.w rd 1
|
||||||
ipc_tmp rd 1
|
cur.h rd 1
|
||||||
ipc_pdir rd 1
|
|
||||||
ipc_ptab rd 1
|
ipc_tmp rd 1
|
||||||
|
ipc_pdir rd 1
|
||||||
proc_mem_map rd 1
|
ipc_ptab rd 1
|
||||||
proc_mem_pdir rd 1
|
|
||||||
proc_mem_tab rd 1
|
proc_mem_map rd 1
|
||||||
|
proc_mem_pdir rd 1
|
||||||
tmp_task_pdir rd 1
|
proc_mem_tab rd 1
|
||||||
tmp_task_ptab rd 1
|
|
||||||
|
tmp_task_pdir rd 1
|
||||||
default_io_map rd 1
|
tmp_task_ptab rd 1
|
||||||
|
|
||||||
LFBSize rd 1
|
default_io_map rd 1
|
||||||
|
|
||||||
stall_mcs rd 1
|
LFBSize rd 1
|
||||||
current_slot rd 1
|
|
||||||
|
stall_mcs rd 1
|
||||||
; status
|
current_slot rd 1
|
||||||
hd1_status rd 1 ; 0 - free : other - pid
|
|
||||||
application_table_status rd 1 ; 0 - free : other - pid
|
; status
|
||||||
|
hd1_status rd 1 ; 0 - free : other - pid
|
||||||
; device addresses
|
application_table_status rd 1 ; 0 - free : other - pid
|
||||||
mididp rd 1
|
|
||||||
midisp rd 1
|
; device addresses
|
||||||
|
mididp rd 1
|
||||||
cdbase rd 1
|
midisp rd 1
|
||||||
cdid rd 1
|
|
||||||
|
cdbase rd 1
|
||||||
hdbase rd 1 ; for boot 0x1f0
|
cdid rd 1
|
||||||
hdid rd 1
|
|
||||||
hdpos rd 1 ; for boot 0x1
|
hdbase rd 1 ; for boot 0x1f0
|
||||||
label known_part dword
|
hdid rd 1
|
||||||
fat32part rd 1 ; for boot 0x1
|
hdpos rd 1 ; for boot 0x1
|
||||||
cdpos rd 1
|
label known_part dword
|
||||||
|
fat32part rd 1 ; for boot 0x1
|
||||||
;CPUID information
|
cdpos rd 1
|
||||||
cpu_vendor rd 3
|
|
||||||
cpu_sign rd 1
|
;CPUID information
|
||||||
cpu_info rd 1
|
cpu_vendor rd 3
|
||||||
cpu_caps rd 4
|
cpu_sign rd 1
|
||||||
|
cpu_info rd 1
|
||||||
|
cpu_caps rd 4
|
||||||
pg_data PG_DATA
|
|
||||||
heap_test rd 1
|
|
||||||
|
pg_data PG_DATA
|
||||||
buttontype rd 1
|
heap_test rd 1
|
||||||
windowtypechanged rd 1
|
|
||||||
|
buttontype rd 1
|
||||||
hd_entries rd 1 ;unused ? 0xfe10
|
windowtypechanged rd 1
|
||||||
|
|
||||||
;* start code - Mario79
|
hd_entries rd 1 ;unused ? 0xfe10
|
||||||
|
|
||||||
mouse_active rd 1
|
;* start code - Mario79
|
||||||
mouse_pause rd 1
|
|
||||||
MouseTickCounter rd 1
|
mouse_active rd 1
|
||||||
|
mouse_pause rd 1
|
||||||
;* end code - Mario79
|
MouseTickCounter rd 1
|
||||||
|
|
||||||
img_background rd 1
|
;* end code - Mario79
|
||||||
mem_BACKGROUND rd 1
|
|
||||||
static_background_data rd 1
|
img_background rd 1
|
||||||
|
mem_BACKGROUND rd 1
|
||||||
cache_ide0:
|
static_background_data rd 1
|
||||||
cache_ide0_pointer rd 1
|
|
||||||
cache_ide0_size rd 1 ; not use
|
cache_ide0:
|
||||||
cache_ide0_data_pointer rd 1
|
cache_ide0_pointer rd 1
|
||||||
cache_ide0_system_data_size rd 1 ; not use
|
cache_ide0_size rd 1 ; not use
|
||||||
cache_ide0_appl_data_size rd 1 ; not use
|
cache_ide0_data_pointer rd 1
|
||||||
cache_ide0_system_data rd 1
|
cache_ide0_system_data_size rd 1 ; not use
|
||||||
cache_ide0_appl_data rd 1
|
cache_ide0_appl_data_size rd 1 ; not use
|
||||||
cache_ide0_system_sad_size rd 1
|
cache_ide0_system_data rd 1
|
||||||
cache_ide0_appl_sad_size rd 1
|
cache_ide0_appl_data rd 1
|
||||||
cache_ide0_search_start rd 1
|
cache_ide0_system_sad_size rd 1
|
||||||
cache_ide0_appl_search_start rd 1
|
cache_ide0_appl_sad_size rd 1
|
||||||
|
cache_ide0_search_start rd 1
|
||||||
cache_ide1:
|
cache_ide0_appl_search_start rd 1
|
||||||
cache_ide1_pointer rd 1
|
|
||||||
cache_ide1_size rd 1 ; not use
|
cache_ide1:
|
||||||
cache_ide1_data_pointer rd 1
|
cache_ide1_pointer rd 1
|
||||||
cache_ide1_system_data_size rd 1 ; not use
|
cache_ide1_size rd 1 ; not use
|
||||||
cache_ide1_appl_data_size rd 1 ; not use
|
cache_ide1_data_pointer rd 1
|
||||||
cache_ide1_system_data rd 1
|
cache_ide1_system_data_size rd 1 ; not use
|
||||||
cache_ide1_appl_data rd 1
|
cache_ide1_appl_data_size rd 1 ; not use
|
||||||
cache_ide1_system_sad_size rd 1
|
cache_ide1_system_data rd 1
|
||||||
cache_ide1_appl_sad_size rd 1
|
cache_ide1_appl_data rd 1
|
||||||
cache_ide1_search_start rd 1
|
cache_ide1_system_sad_size rd 1
|
||||||
cache_ide1_appl_search_start rd 1
|
cache_ide1_appl_sad_size rd 1
|
||||||
|
cache_ide1_search_start rd 1
|
||||||
cache_ide2:
|
cache_ide1_appl_search_start rd 1
|
||||||
cache_ide2_pointer rd 1
|
|
||||||
cache_ide2_size rd 1 ; not use
|
cache_ide2:
|
||||||
cache_ide2_data_pointer rd 1
|
cache_ide2_pointer rd 1
|
||||||
cache_ide2_system_data_size rd 1 ; not use
|
cache_ide2_size rd 1 ; not use
|
||||||
cache_ide2_appl_data_size rd 1 ; not use
|
cache_ide2_data_pointer rd 1
|
||||||
cache_ide2_system_data rd 1
|
cache_ide2_system_data_size rd 1 ; not use
|
||||||
cache_ide2_appl_data rd 1
|
cache_ide2_appl_data_size rd 1 ; not use
|
||||||
cache_ide2_system_sad_size rd 1
|
cache_ide2_system_data rd 1
|
||||||
cache_ide2_appl_sad_size rd 1
|
cache_ide2_appl_data rd 1
|
||||||
cache_ide2_search_start rd 1
|
cache_ide2_system_sad_size rd 1
|
||||||
cache_ide2_appl_search_start rd 1
|
cache_ide2_appl_sad_size rd 1
|
||||||
|
cache_ide2_search_start rd 1
|
||||||
cache_ide3:
|
cache_ide2_appl_search_start rd 1
|
||||||
cache_ide3_pointer rd 1
|
|
||||||
cache_ide3_size rd 1 ; not use
|
cache_ide3:
|
||||||
cache_ide3_data_pointer rd 1
|
cache_ide3_pointer rd 1
|
||||||
cache_ide3_system_data_size rd 1 ; not use
|
cache_ide3_size rd 1 ; not use
|
||||||
cache_ide3_appl_data_size rd 1 ; not use
|
cache_ide3_data_pointer rd 1
|
||||||
cache_ide3_system_data rd 1
|
cache_ide3_system_data_size rd 1 ; not use
|
||||||
cache_ide3_appl_data rd 1
|
cache_ide3_appl_data_size rd 1 ; not use
|
||||||
cache_ide3_system_sad_size rd 1
|
cache_ide3_system_data rd 1
|
||||||
cache_ide3_appl_sad_size rd 1
|
cache_ide3_appl_data rd 1
|
||||||
cache_ide3_search_start rd 1
|
cache_ide3_system_sad_size rd 1
|
||||||
cache_ide3_appl_search_start rd 1
|
cache_ide3_appl_sad_size rd 1
|
||||||
|
cache_ide3_search_start rd 1
|
||||||
debug_step_pointer rd 1
|
cache_ide3_appl_search_start rd 1
|
||||||
hdd_appl_data rb 1 ; 0 = system cache, 1 - application cache
|
|
||||||
cd_appl_data rb 1 ; 0 = system cache, 1 - application cache
|
debug_step_pointer rd 1
|
||||||
|
hdd_appl_data rb 1 ; 0 = system cache, 1 - application cache
|
||||||
lba_read_enabled rd 1 ; 0 = disabled , 1 = enabled
|
cd_appl_data rb 1 ; 0 = system cache, 1 - application cache
|
||||||
pci_access_enabled rd 1 ; 0 = disabled , 1 = enabled
|
|
||||||
timer_ticks_enable rb 1 ; for cd driver
|
lba_read_enabled rd 1 ; 0 = disabled , 1 = enabled
|
||||||
|
pci_access_enabled rd 1 ; 0 = disabled , 1 = enabled
|
||||||
NumBiosDisks rd 1
|
timer_ticks_enable rb 1 ; for cd driver
|
||||||
BiosDisksData rb 200h
|
|
||||||
BiosDiskCaches rb 80h*(cache_ide1-cache_ide0)
|
NumBiosDisks rd 1
|
||||||
BiosDiskPartitions rd 80h
|
BiosDisksData rb 200h
|
||||||
|
BiosDiskCaches rb 80h*(cache_ide1-cache_ide0)
|
||||||
IncludeUGlobals
|
BiosDiskPartitions rd 80h
|
||||||
|
|
||||||
|
IncludeUGlobals
|
||||||
|
@ -313,11 +313,11 @@ high_code:
|
|||||||
; init selectors
|
; init selectors
|
||||||
mov ebx,[BOOT_VAR+0x9040] ; offset of APM entry point
|
mov ebx,[BOOT_VAR+0x9040] ; offset of APM entry point
|
||||||
movzx eax,word [BOOT_VAR+0x9050] ; real-mode segment base address of
|
movzx eax,word [BOOT_VAR+0x9050] ; real-mode segment base address of
|
||||||
; protected-mode 32-bit code segment
|
; protected-mode 32-bit code segment
|
||||||
movzx ecx,word [BOOT_VAR+0x9052] ; real-mode segment base address of
|
movzx ecx,word [BOOT_VAR+0x9052] ; real-mode segment base address of
|
||||||
; protected-mode 16-bit code segment
|
; protected-mode 16-bit code segment
|
||||||
movzx edx,word [BOOT_VAR+0x9054] ; real-mode segment base address of
|
movzx edx,word [BOOT_VAR+0x9054] ; real-mode segment base address of
|
||||||
; protected-mode 16-bit data segment
|
; protected-mode 16-bit data segment
|
||||||
|
|
||||||
shl eax, 4
|
shl eax, 4
|
||||||
mov [dword apm_code_32 + 2], ax
|
mov [dword apm_code_32 + 2], ax
|
||||||
@ -390,70 +390,56 @@ high_code:
|
|||||||
mov eax,[BOOT_VAR+0x9018]
|
mov eax,[BOOT_VAR+0x9018]
|
||||||
mov [LFBAddress],eax
|
mov [LFBAddress],eax
|
||||||
|
|
||||||
;== cmp [SCR_MODE],word 0100000000000000b
|
;==
|
||||||
; jge setvesa20
|
cmp [SCR_MODE],word 0100000000000000b
|
||||||
; cmp [SCR_MODE],word 0x13
|
jge setvesa20
|
||||||
; je v20ga32
|
mov eax, 0xDEADBEEF
|
||||||
; mov [PUTPIXEL],dword Vesa12_putpixel24 ; Vesa 1.2
|
hlt
|
||||||
; mov [GETPIXEL],dword Vesa12_getpixel24
|
; === EGA, VGA & Vesa 1.2 modes not supported ===
|
||||||
; cmp [ScreenBPP],byte 24
|
|
||||||
; jz ga24
|
|
||||||
; mov [PUTPIXEL],dword Vesa12_putpixel32
|
|
||||||
; mov [GETPIXEL],dword Vesa12_getpixel32
|
|
||||||
; ga24:
|
|
||||||
; jmp v20ga24
|
|
||||||
setvesa20:
|
setvesa20:
|
||||||
; mov [PUTPIXEL],dword Vesa20_putpixel24 ; Vesa 2.0
|
; mov [PUTPIXEL],dword Vesa20_putpixel24 ; Vesa 2.0 24bpp modes
|
||||||
; mov [GETPIXEL],dword Vesa20_getpixel24
|
; mov [GETPIXEL],dword Vesa20_getpixel24
|
||||||
; cmp [ScreenBPP],byte 24
|
; cmp [ScreenBPP],byte 24
|
||||||
; jz v20ga24
|
; jz v20ga24
|
||||||
v20ga32:
|
v20ga32:
|
||||||
mov [PUTPIXEL],dword Vesa20_putpixel32
|
mov [PUTPIXEL],dword Vesa20_putpixel32
|
||||||
mov [GETPIXEL],dword Vesa20_getpixel32
|
mov [GETPIXEL],dword Vesa20_getpixel32
|
||||||
; v20ga24:
|
|
||||||
; cmp [SCR_MODE],word 0x12 ; 16 C VGA 640x480
|
|
||||||
; jne no_mode_0x12
|
|
||||||
; mov [PUTPIXEL],dword VGA_putpixel
|
|
||||||
; mov [GETPIXEL],dword Vesa20_getpixel32
|
|
||||||
no_mode_0x12:
|
|
||||||
|
|
||||||
; -------- Fast System Call init ----------
|
; -------- Fast System Call init ----------
|
||||||
; Intel SYSENTER/SYSEXIT (AMD CPU support it too)
|
; Intel SYSENTER/SYSEXIT (AMD CPU support it too)
|
||||||
bt [cpu_caps], CAPS_SEP
|
; bt [cpu_caps], CAPS_SEP
|
||||||
jnc .SEnP ; SysEnter not Present
|
; jnc .SEnP ; SysEnter not Present
|
||||||
xor edx, edx
|
; xor edx, edx
|
||||||
mov ecx, MSR_SYSENTER_CS
|
; mov ecx, MSR_SYSENTER_CS
|
||||||
mov eax, os_code
|
; mov eax, os_code
|
||||||
wrmsr
|
; wrmsr
|
||||||
mov ecx, MSR_SYSENTER_ESP
|
; mov ecx, MSR_SYSENTER_ESP
|
||||||
; mov eax, sysenter_stack ; Check it
|
;; mov eax, sysenter_stack ; Check it
|
||||||
xor eax, eax
|
; xor eax, eax
|
||||||
wrmsr
|
; wrmsr
|
||||||
mov ecx, MSR_SYSENTER_EIP
|
; mov ecx, MSR_SYSENTER_EIP
|
||||||
mov eax, sysenter_entry
|
; mov eax, sysenter_entry
|
||||||
wrmsr
|
; wrmsr
|
||||||
.SEnP:
|
.SEnP:
|
||||||
; AMD SYSCALL/SYSRET
|
; AMD SYSCALL/SYSRET
|
||||||
cmp byte[cpu_vendor], 'A'
|
; cmp byte[cpu_vendor], 'A'
|
||||||
jne .noSYSCALL
|
; jne .noSYSCALL
|
||||||
mov eax, 0x80000001
|
; mov eax, 0x80000001
|
||||||
cpuid
|
; cpuid
|
||||||
test edx, 0x800 ; bit_11 - SYSCALL/SYSRET support
|
; test edx, 0x800 ; bit_11 - SYSCALL/SYSRET support
|
||||||
jz .noSYSCALL
|
; jz .noSYSCALL
|
||||||
mov ecx, MSR_AMD_EFER
|
mov ecx, MSR_AMD_EFER
|
||||||
rdmsr
|
rdmsr
|
||||||
or eax, 1 ; bit_0 - System Call Extension (SCE)
|
or eax, 1 ; bit_0 - System Call Extension (SCE)
|
||||||
wrmsr
|
wrmsr
|
||||||
|
|
||||||
; !!!! It`s dirty hack, fix it !!!
|
|
||||||
; Bits of EDX :
|
; Bits of EDX :
|
||||||
; Bit 31–16 During the SYSRET instruction, this field is copied into the CS register
|
; Bit 31–16 During the SYSRET instruction, this field is copied into the CS register
|
||||||
; and the contents of this field, plus 8, are copied into the SS register.
|
; and the contents of this field, plus 8, are copied into the SS register.
|
||||||
; Bit 15–0 During the SYSCALL instruction, this field is copied into the CS register
|
; Bit 15–0 During the SYSCALL instruction, this field is copied into the CS register
|
||||||
; and the contents of this field, plus 8, are copied into the SS register.
|
; and the contents of this field, plus 8, are copied into the SS register.
|
||||||
|
|
||||||
; mov edx, (os_code + 16) * 65536 + os_code
|
mov edx, 0x1B000B ; RING3 task stack will be used for fast syscalls!
|
||||||
mov edx, 0x1B0008
|
|
||||||
|
|
||||||
mov eax, syscall_entry
|
mov eax, syscall_entry
|
||||||
mov ecx, MSR_AMD_STAR
|
mov ecx, MSR_AMD_STAR
|
||||||
@ -461,7 +447,7 @@ high_code:
|
|||||||
.noSYSCALL:
|
.noSYSCALL:
|
||||||
; -----------------------------------------
|
; -----------------------------------------
|
||||||
stdcall alloc_page
|
stdcall alloc_page
|
||||||
stdcall map_page, tss-0xF80, eax, PG_SW
|
stdcall map_page, tss-0xF80, eax, PG_SW ; lower 0xF80 bytes might be used for something
|
||||||
stdcall alloc_page
|
stdcall alloc_page
|
||||||
inc eax
|
inc eax
|
||||||
mov [SLOT_BASE+256+APPDATA.io_map], eax
|
mov [SLOT_BASE+256+APPDATA.io_map], eax
|
||||||
@ -495,9 +481,10 @@ high_code:
|
|||||||
;Add IO access table - bit array of permitted ports
|
;Add IO access table - bit array of permitted ports
|
||||||
mov edi, tss._io_map_0
|
mov edi, tss._io_map_0
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
not eax
|
mov ecx, 2047
|
||||||
mov ecx, 8192/4
|
rep stosd ; access to 65504 ports granted
|
||||||
rep stosd ; access to 4096*8=65536 ports
|
not eax ; the last 32 ports blocked
|
||||||
|
stosd
|
||||||
|
|
||||||
mov ax,tss0
|
mov ax,tss0
|
||||||
ltr ax
|
ltr ax
|
||||||
@ -694,11 +681,6 @@ end if
|
|||||||
call boot_log
|
call boot_log
|
||||||
call reserve_irqs_ports
|
call reserve_irqs_ports
|
||||||
|
|
||||||
; SET PORTS FOR IRQ HANDLERS
|
|
||||||
|
|
||||||
;mov esi,boot_setrports
|
|
||||||
;call boot_log
|
|
||||||
;call setirqreadports
|
|
||||||
|
|
||||||
; SET UP OS TASK
|
; SET UP OS TASK
|
||||||
|
|
||||||
@ -845,8 +827,10 @@ end if
|
|||||||
call set_network_conf
|
call set_network_conf
|
||||||
no_st_network:
|
no_st_network:
|
||||||
|
|
||||||
call init_userDMA ; <<<<<<<<< ================ core/memory.inc ========================================
|
call init_userDMA ; <<<<<<<<< ============== core/memory.inc =================
|
||||||
call pci_ext_config ; <<<<<<<<< bus/pci/pcie.inc
|
; call pci_ext_config ; <<<<<<<<< bus/pci/pcie.inc
|
||||||
|
;-------------------------------------------------------------------------------
|
||||||
|
call rs7xx_pcie_init ; <<<<<<<<< bus/ht.inc
|
||||||
|
|
||||||
; LOAD FIRST APPLICATION
|
; LOAD FIRST APPLICATION
|
||||||
cli
|
cli
|
||||||
@ -1097,59 +1081,12 @@ include "kernel32.inc"
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
reserve_irqs_ports:
|
reserve_irqs_ports:
|
||||||
|
; removed
|
||||||
push eax
|
|
||||||
xor eax,eax
|
|
||||||
inc eax
|
|
||||||
mov byte [irq_owner+4*0],al ;1 ; timer
|
|
||||||
;mov [irq_owner+4*1], 1 ; keyboard
|
|
||||||
mov byte [irq_owner+4*6],al ;1 ; floppy diskette
|
|
||||||
mov byte [irq_owner+4*13],al ;1 ; math co-pros
|
|
||||||
mov byte [irq_owner+4*14],al ;1 ; ide I
|
|
||||||
mov byte [irq_owner+4*15],al ;1 ; ide II
|
|
||||||
pop eax
|
|
||||||
|
|
||||||
; RESERVE PORTS
|
|
||||||
push 4
|
|
||||||
pop dword [RESERVED_PORTS] ;,edi
|
|
||||||
|
|
||||||
push 1
|
|
||||||
pop dword [RESERVED_PORTS+16+0] ;,dword 1
|
|
||||||
and dword [RESERVED_PORTS+16+4],0 ;,dword 0x0
|
|
||||||
mov dword [RESERVED_PORTS+16+8],0x2d ;,dword 0x2d
|
|
||||||
|
|
||||||
push 1
|
|
||||||
pop dword [RESERVED_PORTS+32+0] ;,dword 1
|
|
||||||
push 0x30
|
|
||||||
pop dword [RESERVED_PORTS+32+4] ;,dword 0x30
|
|
||||||
push 0x4d
|
|
||||||
pop dword [RESERVED_PORTS+32+8] ;,dword 0x4d
|
|
||||||
|
|
||||||
push 1
|
|
||||||
pop dword [RESERVED_PORTS+48+0] ;,dword 1
|
|
||||||
push 0x50
|
|
||||||
pop dword [RESERVED_PORTS+48+4] ;,dword 0x50
|
|
||||||
mov dword [RESERVED_PORTS+48+8],0xdf ;,dword 0xdf
|
|
||||||
|
|
||||||
push 1
|
|
||||||
pop dword [RESERVED_PORTS+64+0] ;,dword 1
|
|
||||||
|
|
||||||
mov dword [RESERVED_PORTS+64+4],0xe5 ;,dword 0xe5
|
|
||||||
mov dword [RESERVED_PORTS+64+8],0xff ;,dword 0xff
|
|
||||||
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
setirqreadports:
|
setirqreadports:
|
||||||
|
; removed
|
||||||
mov [irq12read+0],dword 0x60 + 0x01000000 ; read port 0x60 , byte
|
ret
|
||||||
and dword [irq12read+4],0 ; end of port list
|
|
||||||
; mov [irq12read+4],dword 0 ; end of port list
|
|
||||||
;mov [irq04read+0],dword 0x3f8 + 0x01000000 ; read port 0x3f8 , byte
|
|
||||||
;mov [irq04read+4],dword 0 ; end of port list
|
|
||||||
;mov [irq03read+0],dword 0x2f8 + 0x01000000 ; read port 0x2f8 , byte
|
|
||||||
;mov [irq03read+4],dword 0 ; end of port list
|
|
||||||
|
|
||||||
ret
|
|
||||||
|
|
||||||
iglobal
|
iglobal
|
||||||
process_number dd 0x1
|
process_number dd 0x1
|
||||||
@ -1185,60 +1122,7 @@ set_variables:
|
|||||||
align 4
|
align 4
|
||||||
;input eax=43,bl-byte of output, ecx - number of port
|
;input eax=43,bl-byte of output, ecx - number of port
|
||||||
sys_outport:
|
sys_outport:
|
||||||
|
and [esp+32],dword 1 ; for backward compatibility: operation failed
|
||||||
mov edi,ecx ; separate flag for read / write
|
|
||||||
and ecx,65535
|
|
||||||
|
|
||||||
mov eax,[RESERVED_PORTS]
|
|
||||||
test eax,eax
|
|
||||||
jnz .sopl8
|
|
||||||
inc eax
|
|
||||||
mov [esp+32],eax
|
|
||||||
ret
|
|
||||||
|
|
||||||
.sopl8:
|
|
||||||
mov edx,[TASK_BASE]
|
|
||||||
mov edx,[edx+0x4]
|
|
||||||
;and ecx,65535
|
|
||||||
;cld - set on interrupt 0x40
|
|
||||||
.sopl1:
|
|
||||||
|
|
||||||
mov esi,eax
|
|
||||||
shl esi,4
|
|
||||||
add esi,RESERVED_PORTS
|
|
||||||
cmp edx,[esi+0]
|
|
||||||
jne .sopl2
|
|
||||||
cmp ecx,[esi+4]
|
|
||||||
jb .sopl2
|
|
||||||
cmp ecx,[esi+8]
|
|
||||||
jg .sopl2
|
|
||||||
.sopl3:
|
|
||||||
|
|
||||||
test edi,0x80000000 ; read ?
|
|
||||||
jnz .sopl4
|
|
||||||
|
|
||||||
mov eax,ebx
|
|
||||||
mov dx,cx ; write
|
|
||||||
out dx,al
|
|
||||||
and [esp+32],dword 0
|
|
||||||
ret
|
|
||||||
|
|
||||||
.sopl2:
|
|
||||||
|
|
||||||
dec eax
|
|
||||||
jnz .sopl1
|
|
||||||
inc eax
|
|
||||||
mov [esp+32],eax
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
||||||
.sopl4:
|
|
||||||
|
|
||||||
mov dx,cx ; read
|
|
||||||
in al,dx
|
|
||||||
and eax,0xff
|
|
||||||
and [esp+32],dword 0
|
|
||||||
mov [esp+20],eax
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
display_number:
|
display_number:
|
||||||
@ -3462,269 +3346,25 @@ memmove: ; memory move in bytes
|
|||||||
align 4
|
align 4
|
||||||
|
|
||||||
sys_programirq:
|
sys_programirq:
|
||||||
|
; removed
|
||||||
mov eax, [TASK_BASE]
|
mov dword [esp+32], 1 ; operation failed
|
||||||
add ebx, [eax + TASKDATA.mem_start]
|
|
||||||
|
|
||||||
cmp ecx, 16
|
|
||||||
jae .not_owner
|
|
||||||
mov edi, [eax + TASKDATA.pid]
|
|
||||||
cmp edi, [irq_owner + 4 * ecx]
|
|
||||||
je .spril1
|
|
||||||
.not_owner:
|
|
||||||
xor ecx, ecx
|
|
||||||
inc ecx
|
|
||||||
jmp .end
|
|
||||||
.spril1:
|
|
||||||
|
|
||||||
shl ecx, 6
|
|
||||||
mov esi, ebx
|
|
||||||
lea edi, [irq00read + ecx]
|
|
||||||
push 16
|
|
||||||
pop ecx
|
|
||||||
|
|
||||||
cld
|
|
||||||
rep movsd
|
|
||||||
.end:
|
|
||||||
mov [esp+32], ecx
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
|
|
||||||
get_irq_data:
|
get_irq_data:
|
||||||
movzx esi, bh ; save number of subfunction, if bh = 1, return data size, otherwise, read data
|
; removed
|
||||||
xor bh, bh
|
mov dword [esp+32], -1
|
||||||
cmp ebx, 16
|
|
||||||
jae .not_owner
|
|
||||||
mov edx, [4 * ebx + irq_owner] ; check for irq owner
|
|
||||||
|
|
||||||
mov eax,[TASK_BASE]
|
|
||||||
|
|
||||||
cmp edx,[eax+TASKDATA.pid]
|
|
||||||
je gidril1
|
|
||||||
.not_owner:
|
|
||||||
xor edx, edx
|
|
||||||
dec edx
|
|
||||||
jmp gid1
|
|
||||||
|
|
||||||
gidril1:
|
|
||||||
|
|
||||||
shl ebx, 12
|
|
||||||
lea eax, [ebx + IRQ_SAVE] ; calculate address of the beginning of buffer + 0x0 - data size
|
|
||||||
mov edx, [eax] ; + 0x4 - data offset
|
|
||||||
dec esi
|
|
||||||
jz gid1
|
|
||||||
test edx, edx ; check if buffer is empty
|
|
||||||
jz gid1
|
|
||||||
|
|
||||||
mov ebx, [eax + 0x4]
|
|
||||||
mov edi, ecx
|
|
||||||
|
|
||||||
mov ecx, 4000 ; buffer size, used frequently
|
|
||||||
|
|
||||||
cmp ebx, ecx ; check for the end of buffer, if end of buffer, begin cycle again
|
|
||||||
jb @f
|
|
||||||
|
|
||||||
xor ebx, ebx
|
|
||||||
|
|
||||||
@@:
|
|
||||||
|
|
||||||
lea esi, [ebx + edx] ; calculate data size and offset
|
|
||||||
cld
|
|
||||||
cmp esi, ecx ; if greater than the buffer size, begin cycle again
|
|
||||||
jbe @f
|
|
||||||
|
|
||||||
sub ecx, ebx
|
|
||||||
sub edx, ecx
|
|
||||||
|
|
||||||
lea esi, [eax + ebx + 0x10]
|
|
||||||
rep movsb
|
|
||||||
|
|
||||||
xor ebx, ebx
|
|
||||||
@@:
|
|
||||||
lea esi, [eax + ebx + 0x10]
|
|
||||||
mov ecx, edx
|
|
||||||
add ebx, edx
|
|
||||||
|
|
||||||
rep movsb
|
|
||||||
mov edx, [eax]
|
|
||||||
mov [eax], ecx ; set data size to zero
|
|
||||||
mov [eax + 0x4], ebx ; set data offset
|
|
||||||
|
|
||||||
gid1:
|
|
||||||
mov [esp+32], edx ; eax
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
set_io_access_rights:
|
set_io_access_rights:
|
||||||
push edi eax
|
;removed
|
||||||
mov edi, tss._io_map_0
|
|
||||||
; mov ecx,eax
|
|
||||||
; and ecx,7 ; offset in byte
|
|
||||||
; shr eax,3 ; number of byte
|
|
||||||
; add edi,eax
|
|
||||||
; mov ebx,1
|
|
||||||
; shl ebx,cl
|
|
||||||
test ebp,ebp
|
|
||||||
; cmp ebp,0 ; enable access - ebp = 0
|
|
||||||
jnz siar1
|
|
||||||
; not ebx
|
|
||||||
; and [edi],byte bl
|
|
||||||
btr [edi], eax
|
|
||||||
pop eax edi
|
|
||||||
ret
|
ret
|
||||||
siar1:
|
|
||||||
bts [edi], eax
|
|
||||||
; or [edi],byte bl ; disable access - ebp = 1
|
|
||||||
pop eax edi
|
|
||||||
ret
|
|
||||||
;reserve/free group of ports
|
|
||||||
; * eax = 46 - number function
|
|
||||||
; * ebx = 0 - reserve, 1 - free
|
|
||||||
; * ecx = number start arrea of ports
|
|
||||||
; * edx = number end arrea of ports (include last number of port)
|
|
||||||
;Return value:
|
|
||||||
; * eax = 0 - succesful
|
|
||||||
; * eax = 1 - error
|
|
||||||
; * The system has reserve this ports:
|
|
||||||
; 0..0x2d, 0x30..0x4d, 0x50..0xdf, 0xe5..0xff (include last number of port).
|
|
||||||
;destroys eax,ebx, ebp
|
|
||||||
r_f_port_area:
|
r_f_port_area:
|
||||||
|
; removed; always returns 0
|
||||||
test ebx, ebx
|
|
||||||
jnz free_port_area
|
|
||||||
; je r_port_area
|
|
||||||
; jmp free_port_area
|
|
||||||
|
|
||||||
; r_port_area:
|
|
||||||
|
|
||||||
; pushad
|
|
||||||
|
|
||||||
cmp ecx,edx ; beginning > end ?
|
|
||||||
ja rpal1
|
|
||||||
cmp edx,65536
|
|
||||||
jae rpal1
|
|
||||||
mov eax,[RESERVED_PORTS]
|
|
||||||
test eax,eax ; no reserved areas ?
|
|
||||||
je rpal2
|
|
||||||
cmp eax,255 ; max reserved
|
|
||||||
jae rpal1
|
|
||||||
rpal3:
|
|
||||||
mov ebx,eax
|
|
||||||
shl ebx,4
|
|
||||||
add ebx,RESERVED_PORTS
|
|
||||||
cmp ecx,[ebx+8]
|
|
||||||
ja rpal4
|
|
||||||
cmp edx,[ebx+4]
|
|
||||||
jae rpal1
|
|
||||||
; jb rpal4
|
|
||||||
; jmp rpal1
|
|
||||||
rpal4:
|
|
||||||
dec eax
|
|
||||||
jnz rpal3
|
|
||||||
jmp rpal2
|
|
||||||
rpal1:
|
|
||||||
; popad
|
|
||||||
; mov eax,1
|
|
||||||
xor eax,eax
|
|
||||||
inc eax
|
|
||||||
ret
|
|
||||||
rpal2:
|
|
||||||
; popad
|
|
||||||
; enable port access at port IO map
|
|
||||||
cli
|
|
||||||
pushad ; start enable io map
|
|
||||||
|
|
||||||
cmp edx,65536 ;16384
|
|
||||||
jae no_unmask_io ; jge
|
|
||||||
mov eax,ecx
|
|
||||||
; push ebp
|
|
||||||
xor ebp,ebp ; enable - eax = port
|
|
||||||
new_port_access:
|
|
||||||
; pushad
|
|
||||||
call set_io_access_rights
|
|
||||||
; popad
|
|
||||||
inc eax
|
|
||||||
cmp eax,edx
|
|
||||||
jbe new_port_access
|
|
||||||
; pop ebp
|
|
||||||
no_unmask_io:
|
|
||||||
popad ; end enable io map
|
|
||||||
sti
|
|
||||||
|
|
||||||
mov eax,[RESERVED_PORTS]
|
|
||||||
add eax,1
|
|
||||||
mov [RESERVED_PORTS],eax
|
|
||||||
shl eax,4
|
|
||||||
add eax,RESERVED_PORTS
|
|
||||||
mov ebx,[TASK_BASE]
|
|
||||||
mov ebx,[ebx+TASKDATA.pid]
|
|
||||||
mov [eax],ebx
|
|
||||||
mov [eax+4],ecx
|
|
||||||
mov [eax+8],edx
|
|
||||||
|
|
||||||
xor eax, eax
|
|
||||||
ret
|
|
||||||
|
|
||||||
free_port_area:
|
|
||||||
|
|
||||||
; pushad
|
|
||||||
mov eax,[RESERVED_PORTS] ; no reserved areas ?
|
|
||||||
test eax,eax
|
|
||||||
jz frpal2
|
|
||||||
mov ebx,[TASK_BASE]
|
|
||||||
mov ebx,[ebx+TASKDATA.pid]
|
|
||||||
frpal3:
|
|
||||||
mov edi,eax
|
|
||||||
shl edi,4
|
|
||||||
add edi,RESERVED_PORTS
|
|
||||||
cmp ebx,[edi]
|
|
||||||
jne frpal4
|
|
||||||
cmp ecx,[edi+4]
|
|
||||||
jne frpal4
|
|
||||||
cmp edx,[edi+8]
|
|
||||||
jne frpal4
|
|
||||||
jmp frpal1
|
|
||||||
frpal4:
|
|
||||||
dec eax
|
|
||||||
jnz frpal3
|
|
||||||
frpal2:
|
|
||||||
; popad
|
|
||||||
inc eax
|
|
||||||
ret
|
|
||||||
frpal1:
|
|
||||||
push ecx
|
|
||||||
mov ecx,256
|
|
||||||
sub ecx,eax
|
|
||||||
shl ecx,4
|
|
||||||
mov esi,edi
|
|
||||||
add esi,16
|
|
||||||
cld
|
|
||||||
rep movsb
|
|
||||||
|
|
||||||
dec dword [RESERVED_PORTS]
|
|
||||||
;popad
|
|
||||||
;disable port access at port IO map
|
|
||||||
|
|
||||||
; pushad ; start disable io map
|
|
||||||
pop eax ;start port
|
|
||||||
cmp edx,65536 ;16384
|
|
||||||
jge no_mask_io
|
|
||||||
|
|
||||||
; mov eax,ecx
|
|
||||||
xor ebp,ebp
|
|
||||||
inc ebp
|
|
||||||
new_port_access_disable:
|
|
||||||
; pushad
|
|
||||||
; mov ebp,1 ; disable - eax = port
|
|
||||||
call set_io_access_rights
|
|
||||||
; popad
|
|
||||||
inc eax
|
|
||||||
cmp eax,edx
|
|
||||||
jbe new_port_access_disable
|
|
||||||
no_mask_io:
|
|
||||||
; popad ; end disable io map
|
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
@ -1,311 +1,312 @@
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; ;;
|
;; ;;
|
||||||
;; Copyright (C) KolibriOS team 2004-2008. All rights reserved. ;;
|
;; Copyright (C) KolibriOS team 2004-2008. All rights reserved. ;;
|
||||||
;; Distributed under terms of the GNU General Public License ;;
|
;; Distributed under terms of the GNU General Public License ;;
|
||||||
;; ;;
|
;; ;;
|
||||||
;; KERNEL32.INC ;;
|
;; KERNEL32.INC ;;
|
||||||
;; ;;
|
;; ;;
|
||||||
;; Included 32 bit kernel files for MenuetOS ;;
|
;; Included 32 bit kernel files for MenuetOS ;;
|
||||||
;; ;;
|
;; ;;
|
||||||
;; This file is kept separate as it will be easier to ;;
|
;; This file is kept separate as it will be easier to ;;
|
||||||
;; maintain and compile with an automated SETUP program ;;
|
;; maintain and compile with an automated SETUP program ;;
|
||||||
;; in the future. ;;
|
;; in the future. ;;
|
||||||
;; ;;
|
;; ;;
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
$Revision$
|
$Revision$
|
||||||
|
|
||||||
|
|
||||||
;struc db [a] { common . db a
|
;struc db [a] { common . db a
|
||||||
; if ~used .
|
; if ~used .
|
||||||
; display 'not used db: ',`.,13,10
|
; display 'not used db: ',`.,13,10
|
||||||
; end if }
|
; end if }
|
||||||
;struc dw [a] { common . dw a
|
;struc dw [a] { common . dw a
|
||||||
; if ~used .
|
; if ~used .
|
||||||
; display 'not used dw: ',`.,13,10
|
; display 'not used dw: ',`.,13,10
|
||||||
; end if }
|
; end if }
|
||||||
;struc dd [a] { common . dd a
|
;struc dd [a] { common . dd a
|
||||||
; if ~used .
|
; if ~used .
|
||||||
; display 'not used dd: ',`.,13,10
|
; display 'not used dd: ',`.,13,10
|
||||||
; end if }
|
; end if }
|
||||||
;struc dp [a] { common . dp a
|
;struc dp [a] { common . dp a
|
||||||
; if ~used .
|
; if ~used .
|
||||||
; display 'not used dp: ',`.,13,10
|
; display 'not used dp: ',`.,13,10
|
||||||
; end if }
|
; end if }
|
||||||
;struc dq [a] { common . dq a
|
;struc dq [a] { common . dq a
|
||||||
; if ~used .
|
; if ~used .
|
||||||
; display 'not used dq: ',`.,13,10
|
; display 'not used dq: ',`.,13,10
|
||||||
; end if }
|
; end if }
|
||||||
;struc dt [a] { common . dt a
|
;struc dt [a] { common . dt a
|
||||||
; if ~used .
|
; if ~used .
|
||||||
; display 'not used dt: ',`.,13,10
|
; display 'not used dt: ',`.,13,10
|
||||||
; end if }
|
; end if }
|
||||||
|
|
||||||
struc POINT {
|
struc POINT {
|
||||||
.x dd ?
|
.x dd ?
|
||||||
.y dd ?
|
.y dd ?
|
||||||
.sizeof:
|
.sizeof:
|
||||||
}
|
}
|
||||||
virtual at 0
|
virtual at 0
|
||||||
POINT POINT
|
POINT POINT
|
||||||
end virtual
|
end virtual
|
||||||
|
|
||||||
struc RECT {
|
struc RECT {
|
||||||
.left dd ?
|
.left dd ?
|
||||||
.top dd ?
|
.top dd ?
|
||||||
.right dd ?
|
.right dd ?
|
||||||
.bottom dd ?
|
.bottom dd ?
|
||||||
.sizeof:
|
.sizeof:
|
||||||
}
|
}
|
||||||
virtual at 0
|
virtual at 0
|
||||||
RECT RECT
|
RECT RECT
|
||||||
end virtual
|
end virtual
|
||||||
|
|
||||||
struc BOX {
|
struc BOX {
|
||||||
.left dd ?
|
.left dd ?
|
||||||
.top dd ?
|
.top dd ?
|
||||||
.width dd ?
|
.width dd ?
|
||||||
.height dd ?
|
.height dd ?
|
||||||
.sizeof:
|
.sizeof:
|
||||||
}
|
}
|
||||||
virtual at 0
|
virtual at 0
|
||||||
BOX BOX
|
BOX BOX
|
||||||
end virtual
|
end virtual
|
||||||
|
|
||||||
struc DISPMODE {
|
struc DISPMODE {
|
||||||
.width rw 1
|
.width rw 1
|
||||||
.height rw 1
|
.height rw 1
|
||||||
.bpp rw 1
|
.bpp rw 1
|
||||||
.freq rw 1
|
.freq rw 1
|
||||||
}
|
}
|
||||||
|
|
||||||
; constants definition
|
; constants definition
|
||||||
WSTATE_NORMAL = 00000000b
|
WSTATE_NORMAL = 00000000b
|
||||||
WSTATE_MAXIMIZED = 00000001b
|
WSTATE_MAXIMIZED = 00000001b
|
||||||
WSTATE_MINIMIZED = 00000010b
|
WSTATE_MINIMIZED = 00000010b
|
||||||
WSTATE_ROLLEDUP = 00000100b
|
WSTATE_ROLLEDUP = 00000100b
|
||||||
|
|
||||||
WSTATE_REDRAW = 00000001b
|
WSTATE_REDRAW = 00000001b
|
||||||
WSTATE_WNDDRAWN = 00000010b
|
WSTATE_WNDDRAWN = 00000010b
|
||||||
|
|
||||||
WSTYLE_HASCAPTION = 00010000b
|
WSTYLE_HASCAPTION = 00010000b
|
||||||
WSTYLE_CLIENTRELATIVE = 00100000b
|
WSTYLE_CLIENTRELATIVE = 00100000b
|
||||||
|
|
||||||
struc TASKDATA
|
struc TASKDATA
|
||||||
{
|
{
|
||||||
.event_mask dd ?
|
.event_mask dd ?
|
||||||
.pid dd ?
|
.pid dd ?
|
||||||
dw ?
|
dw ?
|
||||||
.state db ?
|
.state db ?
|
||||||
db ?
|
db ?
|
||||||
dw ?
|
dw ?
|
||||||
.wnd_number db ?
|
.wnd_number db ?
|
||||||
db ?
|
db ?
|
||||||
.mem_start dd ?
|
.mem_start dd ?
|
||||||
.counter_sum dd ?
|
.counter_sum dd ?
|
||||||
.counter_add dd ?
|
.counter_add dd ?
|
||||||
.cpu_usage dd ?
|
.cpu_usage dd ?
|
||||||
}
|
}
|
||||||
virtual at 0
|
virtual at 0
|
||||||
TASKDATA TASKDATA
|
TASKDATA TASKDATA
|
||||||
end virtual
|
end virtual
|
||||||
|
|
||||||
TSTATE_RUNNING = 0
|
TSTATE_RUNNING = 0
|
||||||
TSTATE_RUN_SUSPENDED = 1
|
TSTATE_RUN_SUSPENDED = 1
|
||||||
TSTATE_WAIT_SUSPENDED = 2
|
TSTATE_WAIT_SUSPENDED = 2
|
||||||
TSTATE_ZOMBIE = 3
|
TSTATE_ZOMBIE = 3
|
||||||
TSTATE_TERMINATING = 4
|
TSTATE_TERMINATING = 4
|
||||||
TSTATE_WAITING = 5
|
TSTATE_WAITING = 5
|
||||||
TSTATE_FREE = 9
|
TSTATE_FREE = 9
|
||||||
|
|
||||||
; structures definition
|
; structures definition
|
||||||
struc WDATA {
|
struc WDATA {
|
||||||
.box BOX
|
.box BOX
|
||||||
.cl_workarea dd ?
|
.cl_workarea dd ?
|
||||||
.cl_titlebar dd ?
|
.cl_titlebar dd ?
|
||||||
.cl_frames dd ?
|
.cl_frames dd ?
|
||||||
.reserved db ?
|
.reserved db ?
|
||||||
.fl_wstate db ?
|
.fl_wstate db ?
|
||||||
.fl_wdrawn db ?
|
.fl_wdrawn db ?
|
||||||
.fl_redraw db ?
|
.fl_redraw db ?
|
||||||
.sizeof:
|
.sizeof:
|
||||||
}
|
}
|
||||||
virtual at 0
|
virtual at 0
|
||||||
WDATA WDATA
|
WDATA WDATA
|
||||||
end virtual
|
end virtual
|
||||||
label WDATA.fl_wstyle byte at WDATA.cl_workarea + 3
|
label WDATA.fl_wstyle byte at WDATA.cl_workarea + 3
|
||||||
|
|
||||||
struc APPDATA
|
struc APPDATA
|
||||||
{
|
{
|
||||||
.app_name db 11 dup(?)
|
.app_name db 11 dup(?)
|
||||||
db 5 dup(?)
|
db 5 dup(?)
|
||||||
|
|
||||||
.fpu_state dd ? ;+16
|
.fpu_state dd ? ;+16
|
||||||
.ev_count_ dd ? ;unused ;+20
|
.ev_count_ dd ? ;unused ;+20
|
||||||
.exc_handler dd ? ;+24
|
.exc_handler dd ? ;+24
|
||||||
.except_mask dd ? ;+28
|
.except_mask dd ? ;+28
|
||||||
.pl0_stack dd ? ;unused ;+32
|
.pl0_stack dd ? ;unused ;+32
|
||||||
.heap_base dd ? ;+36
|
.heap_base dd ? ;+36
|
||||||
.heap_top dd ? ;+40
|
.heap_top dd ? ;+40
|
||||||
.cursor dd ? ;+44
|
.cursor dd ? ;+44
|
||||||
.fd_ev dd ? ;+48
|
.fd_ev dd ? ;+48
|
||||||
.bk_ev dd ? ;+52
|
.bk_ev dd ? ;+52
|
||||||
.fd_obj dd ? ;+56
|
.fd_obj dd ? ;+56
|
||||||
.bk_obj dd ? ;+60
|
.bk_obj dd ? ;+60
|
||||||
.saved_esp dd ? ;+64
|
.saved_esp dd ? ;+64
|
||||||
.io_map rd 2 ;+68
|
.io_map rd 2 ;+68
|
||||||
.dbg_state dd ? ;+76
|
.dbg_state dd ? ;+76
|
||||||
.cur_dir dd ? ;+80
|
.cur_dir dd ? ;+80
|
||||||
.wait_timeout dd ? ;+84
|
.wait_timeout dd ? ;+84
|
||||||
.saved_esp0 dd ? ;+88
|
.saved_esp0 dd ? ;+88
|
||||||
.wait_begin dd ? ;+92 +++
|
.wait_begin dd ? ;+92 +++
|
||||||
.wait_test dd ? ;+96 +++
|
.wait_test dd ? ;+96 +++
|
||||||
.wait_param dd ? ;+100 +++
|
.wait_param dd ? ;+100 +++
|
||||||
.tls_base dd ? ;+104
|
.tls_base dd ? ;+104
|
||||||
.dlls_list_ptr dd ? ;+108
|
.dlls_list_ptr dd ? ;+108
|
||||||
db 16 dup(?) ;+112
|
db 16 dup(?) ;+112
|
||||||
|
|
||||||
.wnd_shape dd ? ;+128
|
.wnd_shape dd ? ;+128
|
||||||
.wnd_shape_scale dd ? ;+132
|
.wnd_shape_scale dd ? ;+132
|
||||||
dd ? ;+136
|
dd ? ;+136
|
||||||
.mem_size dd ? ;+140
|
.mem_size dd ? ;+140
|
||||||
.saved_box BOX
|
.saved_box BOX
|
||||||
.ipc_start dd ?
|
.ipc_start dd ?
|
||||||
.ipc_size dd ?
|
.ipc_size dd ?
|
||||||
.event_mask dd ?
|
.event_mask dd ?
|
||||||
.debugger_slot dd ?
|
.debugger_slot dd ?
|
||||||
dd ?
|
dd ?
|
||||||
.keyboard_mode db ?
|
.keyboard_mode db ?
|
||||||
db 3 dup(?)
|
db 3 dup(?)
|
||||||
.dir_table dd ?
|
.dir_table dd ?
|
||||||
.dbg_event_mem dd ?
|
.dbg_event_mem dd ?
|
||||||
.dbg_regs:
|
.dbg_regs:
|
||||||
.dbg_regs.dr0 dd ?
|
.dbg_regs.dr0 dd ?
|
||||||
.dbg_regs.dr1 dd ?
|
.dbg_regs.dr1 dd ?
|
||||||
.dbg_regs.dr2 dd ?
|
.dbg_regs.dr2 dd ?
|
||||||
.dbg_regs.dr3 dd ?
|
.dbg_regs.dr3 dd ?
|
||||||
.dbg_regs.dr7 dd ?
|
.dbg_regs.dr7 dd ?
|
||||||
.wnd_caption dd ?
|
.wnd_caption dd ?
|
||||||
.wnd_clientbox BOX
|
.wnd_clientbox BOX
|
||||||
}
|
}
|
||||||
virtual at 0
|
virtual at 0
|
||||||
APPDATA APPDATA
|
APPDATA APPDATA
|
||||||
end virtual
|
end virtual
|
||||||
|
|
||||||
;// mike.dld, 2006-29-01 ]
|
;// mike.dld, 2006-29-01 ]
|
||||||
|
|
||||||
struc MUTEX
|
struc MUTEX
|
||||||
{
|
{
|
||||||
.count rd 1
|
.count rd 1
|
||||||
.next rd 1
|
.next rd 1
|
||||||
.prev rd 1
|
.prev rd 1
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual at 0
|
virtual at 0
|
||||||
MUTEX MUTEX
|
MUTEX MUTEX
|
||||||
end virtual
|
end virtual
|
||||||
|
|
||||||
|
|
||||||
; Core functions
|
; Core functions
|
||||||
include "core/sync.inc" ; macros for synhronization objects
|
include "core/sync.inc" ; macros for synhronization objects
|
||||||
include "core/sys32.inc" ; process management
|
include "core/sys32.inc" ; process management
|
||||||
include "core/sched.inc" ; process scheduling
|
include "core/sched.inc" ; process scheduling
|
||||||
include "core/syscall.inc" ; system call
|
include "core/syscall.inc" ; system call
|
||||||
include "core/fpu.inc" ; all fpu/sse support
|
include "core/fpu.inc" ; all fpu/sse support
|
||||||
include "core/memory.inc"
|
include "core/memory.inc"
|
||||||
include "core/heap.inc" ; kernel and app heap
|
include "core/heap.inc" ; kernel and app heap
|
||||||
include "core/malloc.inc" ; small kernel heap
|
include "core/malloc.inc" ; small kernel heap
|
||||||
include "core/taskman.inc"
|
include "core/taskman.inc"
|
||||||
include "core/dll.inc"
|
include "core/dll.inc"
|
||||||
include "core/peload.inc" ;
|
include "core/peload.inc" ;
|
||||||
include "core/exports.inc"
|
include "core/exports.inc"
|
||||||
include "core/string.inc"
|
include "core/string.inc"
|
||||||
include "core/v86.inc" ; virtual-8086 manager
|
include "core/v86.inc" ; virtual-8086 manager
|
||||||
|
|
||||||
; GUI stuff
|
; GUI stuff
|
||||||
include "gui/window.inc"
|
include "gui/window.inc"
|
||||||
include "gui/event.inc"
|
include "gui/event.inc"
|
||||||
include "gui/font.inc"
|
include "gui/font.inc"
|
||||||
include "gui/button.inc"
|
include "gui/button.inc"
|
||||||
|
|
||||||
; shutdown
|
; shutdown
|
||||||
|
|
||||||
; file system
|
; file system
|
||||||
|
|
||||||
include "fs/fs.inc" ; syscall
|
include "fs/fs.inc" ; syscall
|
||||||
include "fs/fat32.inc" ; read / write for fat32 filesystem
|
include "fs/fat32.inc" ; read / write for fat32 filesystem
|
||||||
include "fs/ntfs.inc" ; read / write for ntfs filesystem
|
include "fs/ntfs.inc" ; read / write for ntfs filesystem
|
||||||
include "fs/fat12.inc" ; read / write for fat12 filesystem
|
include "fs/fat12.inc" ; read / write for fat12 filesystem
|
||||||
include "blkdev/rd.inc" ; ramdisk read /write
|
include "blkdev/rd.inc" ; ramdisk read /write
|
||||||
include "fs/fs_lfn.inc" ; syscall, version 2
|
include "fs/fs_lfn.inc" ; syscall, version 2
|
||||||
include "fs/iso9660.inc" ; read for iso9660 filesystem CD
|
include "fs/iso9660.inc" ; read for iso9660 filesystem CD
|
||||||
include "fs/ext2.inc" ; read / write for ext2 filesystem
|
include "fs/ext2.inc" ; read / write for ext2 filesystem
|
||||||
|
|
||||||
; sound
|
; sound
|
||||||
|
|
||||||
include "sound/playnote.inc" ; player Note for Speaker PC
|
include "sound/playnote.inc" ; player Note for Speaker PC
|
||||||
|
|
||||||
; display
|
; display
|
||||||
|
|
||||||
;include "video/vesa12.inc" ; Vesa 1.2 functions
|
;include "video/vesa12.inc" ; Vesa 1.2 functions
|
||||||
include "video/vesa20.inc" ; Vesa 2.0 functions
|
include "video/vesa20.inc" ; Vesa 2.0 functions
|
||||||
include "video/vga.inc" ; VGA 16 color functions
|
include "video/vga.inc" ; VGA 16 color functions
|
||||||
include "video/cursors.inc" ; cursors functions
|
include "video/cursors.inc" ; cursors functions
|
||||||
|
|
||||||
; Network Interface & TCPIP Stack
|
; Network Interface & TCPIP Stack
|
||||||
|
|
||||||
include "network/stack.inc"
|
include "network/stack.inc"
|
||||||
|
|
||||||
;include "drivers/uart.inc"
|
;include "drivers/uart.inc"
|
||||||
|
|
||||||
|
|
||||||
; Mouse pointer
|
; Mouse pointer
|
||||||
|
|
||||||
include "gui/mouse.inc"
|
include "gui/mouse.inc"
|
||||||
|
|
||||||
; Window skinning
|
; Window skinning
|
||||||
|
|
||||||
include "gui/skincode.inc"
|
include "gui/skincode.inc"
|
||||||
|
|
||||||
; Pci functions
|
; Pci functions
|
||||||
include "bus/pci/pci32.inc"
|
include "bus/pci/pci32.inc"
|
||||||
include "bus/pci/pcie.inc"
|
include "bus/pci/pcie.inc"
|
||||||
|
include "bus/ht.inc" ; AMD HyperTransport bus control
|
||||||
; Floppy drive controller
|
|
||||||
|
; Floppy drive controller
|
||||||
include "blkdev/fdc.inc"
|
|
||||||
include "blkdev/flp_drv.inc"
|
include "blkdev/fdc.inc"
|
||||||
|
include "blkdev/flp_drv.inc"
|
||||||
; IDE cache
|
|
||||||
include "blkdev/ide_cache.inc"
|
; IDE cache
|
||||||
|
include "blkdev/ide_cache.inc"
|
||||||
; HD drive controller
|
|
||||||
include "blkdev/hd_drv.inc"
|
; HD drive controller
|
||||||
|
include "blkdev/hd_drv.inc"
|
||||||
; CD drive controller
|
|
||||||
|
; CD drive controller
|
||||||
include "blkdev/cdrom.inc"
|
|
||||||
include "blkdev/cd_drv.inc"
|
include "blkdev/cdrom.inc"
|
||||||
|
include "blkdev/cd_drv.inc"
|
||||||
; Character devices
|
|
||||||
|
; Character devices
|
||||||
include "hid/keyboard.inc"
|
|
||||||
include "hid/mousedrv.inc"
|
include "hid/keyboard.inc"
|
||||||
|
include "hid/mousedrv.inc"
|
||||||
; setting date,time,clock and alarm-clock
|
|
||||||
|
; setting date,time,clock and alarm-clock
|
||||||
include "hid/set_dtc.inc"
|
|
||||||
|
include "hid/set_dtc.inc"
|
||||||
;% -include
|
|
||||||
|
;% -include
|
||||||
;parser file names
|
|
||||||
include "fs/parse_fn.inc"
|
;parser file names
|
||||||
|
include "fs/parse_fn.inc"
|
||||||
; work with conf lib
|
|
||||||
include "core/conf_lib.inc"
|
; work with conf lib
|
||||||
|
include "core/conf_lib.inc"
|
||||||
; load external lib
|
|
||||||
include "core/ext_lib.inc"
|
; load external lib
|
||||||
|
include "core/ext_lib.inc"
|
||||||
; list of external functions
|
|
||||||
include "imports.inc"
|
; list of external functions
|
||||||
|
include "imports.inc"
|
||||||
|
Loading…
Reference in New Issue
Block a user