forked from KolibriOS/kolibrios
acpi: bugfixes
git-svn-id: svn://kolibrios.org@2229 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
db9a61710d
commit
7e141ac4d8
@ -5,7 +5,6 @@
|
||||
;; ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
IRQ_RESERVED = 24 ; 16 or 24
|
||||
|
||||
iglobal
|
||||
IRQ_COUNT dd 24
|
||||
@ -54,9 +53,11 @@ APIC_init:
|
||||
|
||||
stdcall load_file, dev_data_path
|
||||
test eax, eax
|
||||
mov [acpi_dev_data], eax
|
||||
jz .no_apic
|
||||
|
||||
mov [acpi_dev_data], eax
|
||||
mov [acpi_dev_size], ebx
|
||||
|
||||
call IRQ_mask_all
|
||||
|
||||
; IOAPIC init
|
||||
@ -112,28 +113,9 @@ APIC_init:
|
||||
mov al, 1
|
||||
out 0x23, al
|
||||
|
||||
call pci_irq_fixup
|
||||
.no_apic:
|
||||
|
||||
;init handlers table
|
||||
|
||||
mov ecx, IRQ_RESERVED
|
||||
mov edi, irqh_tab
|
||||
@@:
|
||||
mov eax, edi
|
||||
stosd
|
||||
stosd
|
||||
loop @B
|
||||
|
||||
mov ecx, 47
|
||||
mov eax, irqh_pool+IRQH.sizeof
|
||||
mov [next_irqh], irqh_pool
|
||||
@@:
|
||||
mov [eax-IRQH.sizeof], eax
|
||||
add eax, IRQH.sizeof
|
||||
loop @B
|
||||
|
||||
mov [eax-IRQH.sizeof], dword 0
|
||||
|
||||
ret
|
||||
|
||||
;===========================================================
|
||||
@ -430,137 +412,6 @@ pci_irq_fixup:
|
||||
ret
|
||||
|
||||
|
||||
; IRQ_TYPE_DISABLE equ 0
|
||||
; IRQ_TYPE_PIC equ 1
|
||||
; IRQ_TYPE_APIC equ 2
|
||||
|
||||
; uglobal
|
||||
; irq_type_to_set rd 1
|
||||
; irq_types rd IRQ_RESERVE
|
||||
; endg
|
||||
|
||||
; -----------------------------------------
|
||||
; End Of Interrupt
|
||||
; al - IRQ number
|
||||
; align 16
|
||||
; IRQ_EOI:
|
||||
; movzx eax, al
|
||||
; cmp dword[irq_types + eax * 4], IRQ_TYPE_APIC
|
||||
; jne @f
|
||||
; mov eax, [LAPIC_BASE]
|
||||
; mov dword [eax + APIC_EOI], 0 ; EOI
|
||||
; ret
|
||||
; @@:
|
||||
; cmp al, 8
|
||||
; mov al, 0x20
|
||||
; jb @f
|
||||
; out 0xa0, al
|
||||
; @@: out 0x20, al
|
||||
; ret
|
||||
|
||||
; align 4
|
||||
; proc enable_irq stdcall, irq_line:dword
|
||||
; cmp dword[irq_type_to_set], IRQ_TYPE_APIC
|
||||
; jne @f
|
||||
; stdcall APIC_enable_irq, [irq_line]
|
||||
; ret
|
||||
; @@: stdcall PIC_enable_irq, [irq_line]
|
||||
; ret
|
||||
; endp
|
||||
|
||||
; align 4
|
||||
; proc disable_irq stdcall, irq_line:dword
|
||||
; push eax
|
||||
; mov eax, [irq_line]
|
||||
; cmp dword[irq_types + eax * 4], IRQ_TYPE_APIC
|
||||
; jne @f
|
||||
; stdcall APIC_disable_irq, eax
|
||||
; pop eax
|
||||
; ret
|
||||
; @@: stdcall PIC_disable_irq, eax
|
||||
; pop eax
|
||||
; ret
|
||||
; endp
|
||||
|
||||
; align 4
|
||||
; proc PIC_enable_irq stdcall, irq_line:dword
|
||||
; pusha
|
||||
; mov ebx, [irq_line]
|
||||
; mov eax, [irq_types + ebx * 4]
|
||||
; cmp eax, IRQ_TYPE_DISABLE
|
||||
; je @f
|
||||
; cmp eax, IRQ_TYPE_PIC
|
||||
; je @f
|
||||
; stdcall disable_irq, ebx
|
||||
; @@: mov dword[irq_types + ebx * 4], IRQ_TYPE_PIC
|
||||
; mov edx, 0x21
|
||||
; cmp ebx, 8
|
||||
; jb @F
|
||||
; mov edx, 0xA1
|
||||
; sub ebx,8
|
||||
; @@: in al,dx
|
||||
; btr eax, ebx
|
||||
; out dx, al
|
||||
; popa
|
||||
; ret
|
||||
; endp
|
||||
|
||||
; align 4
|
||||
; proc PIC_disable_irq stdcall, irq_line:dword
|
||||
; pusha
|
||||
; mov ebx, [irq_line]
|
||||
; mov dword[irq_types + ebx * 4], IRQ_TYPE_DISABLE
|
||||
; mov edx, 0x21
|
||||
; cmp ebx, 8
|
||||
; jb @F
|
||||
; mov edx, 0xA1
|
||||
; sub ebx,8
|
||||
; @@: in al,dx
|
||||
; bts eax, ebx
|
||||
; out dx, al
|
||||
; popa
|
||||
; ret
|
||||
; endp
|
||||
|
||||
; align 4
|
||||
; proc APIC_enable_irq stdcall, irq_line:dword
|
||||
; pusha
|
||||
; mov ebx, [irq_line]
|
||||
; mov eax, [irq_types + ebx * 4]
|
||||
; cmp eax, IRQ_TYPE_DISABLE
|
||||
; je @f
|
||||
; cmp eax, IRQ_TYPE_APIC
|
||||
; je @f
|
||||
; stdcall disable_irq, ebx
|
||||
; @@: mov dword[irq_types + ebx * 4], IRQ_TYPE_APIC
|
||||
; shl ebx, 1
|
||||
; add ebx, 0x10
|
||||
; mov eax, ebx
|
||||
; call IOAPIC_read
|
||||
; and eax, 0xfffeffff ; bit 16
|
||||
; xchg eax, ebx
|
||||
; call IOAPIC_write
|
||||
; popa
|
||||
; ret
|
||||
; endp
|
||||
|
||||
; align 4
|
||||
; proc APIC_disable_irq stdcall, irq_line:dword
|
||||
; pusha
|
||||
; mov ebx, [irq_line]
|
||||
; mov dword[irq_types + ebx * 4], IRQ_TYPE_DISABLE
|
||||
; shl ebx, 1
|
||||
; add ebx, 0x10
|
||||
; mov eax, ebx
|
||||
; call IOAPIC_read
|
||||
; or eax, 0x10000
|
||||
; xchg eax, ebx
|
||||
; call IOAPIC_write
|
||||
; popa
|
||||
; ret
|
||||
; endp
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
;; ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
IRQ_RESERVED equ 24
|
||||
|
||||
IRQ_POOL_SIZE equ 48
|
||||
|
||||
@ -21,6 +22,29 @@ irq_failed rd IRQ_RESERVED
|
||||
|
||||
endg
|
||||
|
||||
align 4
|
||||
init_irqs:
|
||||
|
||||
mov ecx, IRQ_RESERVED
|
||||
mov edi, irqh_tab
|
||||
@@:
|
||||
mov eax, edi
|
||||
stosd
|
||||
stosd
|
||||
loop @B
|
||||
|
||||
mov ecx, IRQ_POOL_SIZE-1
|
||||
mov eax, irqh_pool+IRQH.sizeof
|
||||
mov [next_irqh], irqh_pool
|
||||
@@:
|
||||
mov [eax-IRQH.sizeof], eax
|
||||
add eax, IRQH.sizeof
|
||||
loop @B
|
||||
|
||||
mov [eax-IRQH.sizeof], dword 0
|
||||
ret
|
||||
|
||||
|
||||
align 4
|
||||
proc attach_int_handler stdcall, irq:dword, handler:dword, user_data:dword
|
||||
locals
|
||||
|
@ -226,7 +226,7 @@ B32:
|
||||
mov fs,ax
|
||||
mov gs,ax
|
||||
mov ss,ax
|
||||
mov esp,0x5ec00 ; Set stack
|
||||
mov esp,0x006CC00 ; Set stack
|
||||
|
||||
; CLEAR 0x280000 - HEAP_BASE
|
||||
|
||||
@ -236,13 +236,11 @@ B32:
|
||||
cld
|
||||
rep stosd
|
||||
|
||||
mov edi,0x40000
|
||||
mov ecx,(0x90000-0x40000)/4
|
||||
rep stosd
|
||||
|
||||
; CLEAR KERNEL UNDEFINED GLOBALS
|
||||
mov edi, endofcode-OS_BASE
|
||||
mov ecx, (uglobals_size/4)+4
|
||||
mov ecx, 0x90000
|
||||
sub ecx, edi
|
||||
shr ecx, 2
|
||||
rep stosd
|
||||
|
||||
; SAVE & CLEAR 0-0xffff
|
||||
@ -604,7 +602,8 @@ high_code:
|
||||
|
||||
; REDIRECT ALL IRQ'S TO INT'S 0x20-0x2f
|
||||
|
||||
call PIC_init
|
||||
call init_irqs
|
||||
call PIC_init
|
||||
|
||||
; Initialize system V86 machine
|
||||
call init_sys_v86
|
||||
@ -615,8 +614,6 @@ high_code:
|
||||
; Try to Initialize APIC
|
||||
call APIC_init
|
||||
|
||||
call pci_irq_fixup
|
||||
|
||||
; Enable timer IRQ (IRQ0) and hard drives IRQs (IRQ14, IRQ15)
|
||||
; they are used: when partitions are scanned, hd_read relies on timer
|
||||
call unmask_timer
|
||||
@ -680,11 +677,9 @@ end if
|
||||
; Display APIC status
|
||||
mov esi, boot_APIC_found
|
||||
cmp [irq_mode], IRQ_APIC
|
||||
jne @f
|
||||
|
||||
je @f
|
||||
mov esi, boot_APIC_nfound
|
||||
@@:
|
||||
call boot_log
|
||||
|
||||
; PRINT AMOUNT OF MEMORY
|
||||
mov esi, boot_memdetect
|
||||
@ -822,7 +817,7 @@ end if
|
||||
mov edx, 0xFFFFFF
|
||||
xor edi,edi
|
||||
mov eax, 0x00040000
|
||||
inc edi
|
||||
inc edi
|
||||
call display_number_force
|
||||
|
||||
; SET VARIABLES
|
||||
|
@ -1,316 +1,316 @@
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; ;;
|
||||
;; Copyright (C) KolibriOS team 2004-2008. All rights reserved. ;;
|
||||
;; Distributed under terms of the GNU General Public License ;;
|
||||
;; ;;
|
||||
;; KERNEL32.INC ;;
|
||||
;; ;;
|
||||
;; Included 32 bit kernel files for MenuetOS ;;
|
||||
;; ;;
|
||||
;; This file is kept separate as it will be easier to ;;
|
||||
;; maintain and compile with an automated SETUP program ;;
|
||||
;; in the future. ;;
|
||||
;; ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
$Revision$
|
||||
|
||||
|
||||
;struc db [a] { common . db a
|
||||
; if ~used .
|
||||
; display 'not used db: ',`.,13,10
|
||||
; end if }
|
||||
;struc dw [a] { common . dw a
|
||||
; if ~used .
|
||||
; display 'not used dw: ',`.,13,10
|
||||
; end if }
|
||||
;struc dd [a] { common . dd a
|
||||
; if ~used .
|
||||
; display 'not used dd: ',`.,13,10
|
||||
; end if }
|
||||
;struc dp [a] { common . dp a
|
||||
; if ~used .
|
||||
; display 'not used dp: ',`.,13,10
|
||||
; end if }
|
||||
;struc dq [a] { common . dq a
|
||||
; if ~used .
|
||||
; display 'not used dq: ',`.,13,10
|
||||
; end if }
|
||||
;struc dt [a] { common . dt a
|
||||
; if ~used .
|
||||
; display 'not used dt: ',`.,13,10
|
||||
; end if }
|
||||
|
||||
struc POINT {
|
||||
.x dd ?
|
||||
.y dd ?
|
||||
.sizeof:
|
||||
}
|
||||
virtual at 0
|
||||
POINT POINT
|
||||
end virtual
|
||||
|
||||
struc RECT {
|
||||
.left dd ?
|
||||
.top dd ?
|
||||
.right dd ?
|
||||
.bottom dd ?
|
||||
.sizeof:
|
||||
}
|
||||
virtual at 0
|
||||
RECT RECT
|
||||
end virtual
|
||||
|
||||
struc BOX {
|
||||
.left dd ?
|
||||
.top dd ?
|
||||
.width dd ?
|
||||
.height dd ?
|
||||
.sizeof:
|
||||
}
|
||||
virtual at 0
|
||||
BOX BOX
|
||||
end virtual
|
||||
|
||||
struc DISPMODE {
|
||||
.width rw 1
|
||||
.height rw 1
|
||||
.bpp rw 1
|
||||
.freq rw 1
|
||||
}
|
||||
|
||||
; constants definition
|
||||
WSTATE_NORMAL = 00000000b
|
||||
WSTATE_MAXIMIZED = 00000001b
|
||||
WSTATE_MINIMIZED = 00000010b
|
||||
WSTATE_ROLLEDUP = 00000100b
|
||||
|
||||
WSTATE_REDRAW = 00000001b
|
||||
WSTATE_WNDDRAWN = 00000010b
|
||||
|
||||
WSTYLE_HASCAPTION = 00010000b
|
||||
WSTYLE_CLIENTRELATIVE = 00100000b
|
||||
|
||||
struc TASKDATA
|
||||
{
|
||||
.event_mask dd ?
|
||||
.pid dd ?
|
||||
dw ?
|
||||
.state db ?
|
||||
db ?
|
||||
dw ?
|
||||
.wnd_number db ?
|
||||
db ?
|
||||
.mem_start dd ?
|
||||
.counter_sum dd ?
|
||||
.counter_add dd ?
|
||||
.cpu_usage dd ?
|
||||
}
|
||||
virtual at 0
|
||||
TASKDATA TASKDATA
|
||||
end virtual
|
||||
|
||||
TSTATE_RUNNING = 0
|
||||
TSTATE_RUN_SUSPENDED = 1
|
||||
TSTATE_WAIT_SUSPENDED = 2
|
||||
TSTATE_ZOMBIE = 3
|
||||
TSTATE_TERMINATING = 4
|
||||
TSTATE_WAITING = 5
|
||||
TSTATE_FREE = 9
|
||||
|
||||
; structures definition
|
||||
struc WDATA {
|
||||
.box BOX
|
||||
.cl_workarea dd ?
|
||||
.cl_titlebar dd ?
|
||||
.cl_frames dd ?
|
||||
.reserved db ?
|
||||
.fl_wstate db ?
|
||||
.fl_wdrawn db ?
|
||||
.fl_redraw db ?
|
||||
.sizeof:
|
||||
}
|
||||
virtual at 0
|
||||
WDATA WDATA
|
||||
end virtual
|
||||
label WDATA.fl_wstyle byte at WDATA.cl_workarea + 3
|
||||
|
||||
struc APPDATA
|
||||
{
|
||||
.app_name db 11 dup(?)
|
||||
db 5 dup(?)
|
||||
|
||||
.fpu_state dd ? ;+16
|
||||
.ev_count_ dd ? ;unused ;+20
|
||||
.exc_handler dd ? ;+24
|
||||
.except_mask dd ? ;+28
|
||||
.pl0_stack dd ? ;+32
|
||||
.heap_base dd ? ;+36
|
||||
.heap_top dd ? ;+40
|
||||
.cursor dd ? ;+44
|
||||
.fd_ev dd ? ;+48
|
||||
.bk_ev dd ? ;+52
|
||||
.fd_obj dd ? ;+56
|
||||
.bk_obj dd ? ;+60
|
||||
.saved_esp dd ? ;+64
|
||||
.io_map rd 2 ;+68
|
||||
.dbg_state dd ? ;+76
|
||||
.cur_dir dd ? ;+80
|
||||
.wait_timeout dd ? ;+84
|
||||
.saved_esp0 dd ? ;+88
|
||||
.wait_begin dd ? ;+92 +++
|
||||
.wait_test dd ? ;+96 +++
|
||||
.wait_param dd ? ;+100 +++
|
||||
.tls_base dd ? ;+104
|
||||
.dlls_list_ptr dd ? ;+108
|
||||
db 16 dup(?) ;+112
|
||||
|
||||
.wnd_shape dd ? ;+128
|
||||
.wnd_shape_scale dd ? ;+132
|
||||
dd ? ;+136
|
||||
.mem_size dd ? ;+140
|
||||
.saved_box BOX
|
||||
.ipc_start dd ?
|
||||
.ipc_size dd ?
|
||||
.event_mask dd ?
|
||||
.debugger_slot dd ?
|
||||
dd ?
|
||||
.keyboard_mode db ?
|
||||
db 3 dup(?)
|
||||
.dir_table dd ?
|
||||
.dbg_event_mem dd ?
|
||||
.dbg_regs:
|
||||
.dbg_regs.dr0 dd ?
|
||||
.dbg_regs.dr1 dd ?
|
||||
.dbg_regs.dr2 dd ?
|
||||
.dbg_regs.dr3 dd ?
|
||||
.dbg_regs.dr7 dd ?
|
||||
.wnd_caption dd ?
|
||||
.wnd_clientbox BOX
|
||||
}
|
||||
virtual at 0
|
||||
APPDATA APPDATA
|
||||
end virtual
|
||||
|
||||
;// mike.dld, 2006-29-01 ]
|
||||
|
||||
struc MUTEX
|
||||
{
|
||||
.wait LHEAD
|
||||
.count rd 1
|
||||
}
|
||||
|
||||
virtual at 0
|
||||
MUTEX MUTEX
|
||||
end virtual
|
||||
|
||||
|
||||
; Core functions
|
||||
include "core/sync.inc" ; macros for synhronization objects
|
||||
include "core/sys32.inc" ; process management
|
||||
include "core/sched.inc" ; process scheduling
|
||||
include "core/syscall.inc" ; system call
|
||||
include "core/fpu.inc" ; all fpu/sse support
|
||||
include "core/memory.inc"
|
||||
include "core/heap.inc" ; kernel and app heap
|
||||
include "core/malloc.inc" ; small kernel heap
|
||||
include "core/taskman.inc"
|
||||
include "core/dll.inc"
|
||||
include "core/peload.inc" ;
|
||||
include "core/exports.inc"
|
||||
include "core/string.inc"
|
||||
include "core/v86.inc" ; virtual-8086 manager
|
||||
include "core/apic.inc" ; Interrupt Controller functions
|
||||
include "core/irq.inc" ; irq handling functions
|
||||
include "core/timers.inc"
|
||||
|
||||
; GUI stuff
|
||||
include "gui/window.inc"
|
||||
include "gui/event.inc"
|
||||
include "gui/font.inc"
|
||||
include "gui/button.inc"
|
||||
|
||||
; shutdown
|
||||
|
||||
; file system
|
||||
|
||||
include "blkdev/disk.inc" ; support for plug-n-play disks
|
||||
include "blkdev/disk_cache.inc" ; caching for plug-n-play disks
|
||||
include "fs/fs.inc" ; syscall
|
||||
include "fs/fat32.inc" ; read / write for fat32 filesystem
|
||||
include "fs/ntfs.inc" ; read / write for ntfs filesystem
|
||||
include "fs/fat12.inc" ; read / write for fat12 filesystem
|
||||
include "blkdev/rd.inc" ; ramdisk read /write
|
||||
include "fs/fs_lfn.inc" ; syscall, version 2
|
||||
include "fs/iso9660.inc" ; read for iso9660 filesystem CD
|
||||
include "fs/ext2.inc" ; read / write for ext2 filesystem
|
||||
|
||||
; sound
|
||||
|
||||
include "sound/playnote.inc" ; player Note for Speaker PC
|
||||
|
||||
; display
|
||||
|
||||
include "video/vesa12.inc" ; Vesa 1.2 functions
|
||||
include "video/vesa20.inc" ; Vesa 2.0 functions
|
||||
include "video/blitter.inc" ;
|
||||
include "video/vga.inc" ; VGA 16 color functions
|
||||
include "video/cursors.inc" ; cursors functions
|
||||
|
||||
; Network Interface & TCPIP Stack
|
||||
|
||||
include "network/stack.inc"
|
||||
|
||||
;include "drivers/uart.inc"
|
||||
|
||||
|
||||
; Mouse pointer
|
||||
|
||||
include "gui/mouse.inc"
|
||||
|
||||
; Window skinning
|
||||
|
||||
include "gui/skincode.inc"
|
||||
|
||||
; Pci functions
|
||||
|
||||
include "bus/pci/pci32.inc"
|
||||
|
||||
; Floppy drive controller
|
||||
|
||||
include "blkdev/fdc.inc"
|
||||
include "blkdev/flp_drv.inc"
|
||||
|
||||
; IDE cache
|
||||
include "blkdev/ide_cache.inc"
|
||||
|
||||
; HD drive controller
|
||||
include "blkdev/hd_drv.inc"
|
||||
|
||||
; CD drive controller
|
||||
|
||||
include "blkdev/cdrom.inc"
|
||||
include "blkdev/cd_drv.inc"
|
||||
|
||||
; Character devices
|
||||
|
||||
include "hid/keyboard.inc"
|
||||
include "hid/mousedrv.inc"
|
||||
|
||||
; setting date,time,clock and alarm-clock
|
||||
|
||||
include "hid/set_dtc.inc"
|
||||
|
||||
;% -include
|
||||
|
||||
;parser file names
|
||||
include "fs/parse_fn.inc"
|
||||
|
||||
; work with conf lib
|
||||
include "core/conf_lib.inc"
|
||||
|
||||
; load external lib
|
||||
include "core/ext_lib.inc"
|
||||
|
||||
; list of external functions
|
||||
include "imports.inc"
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; ;;
|
||||
;; Copyright (C) KolibriOS team 2004-2008. All rights reserved. ;;
|
||||
;; Distributed under terms of the GNU General Public License ;;
|
||||
;; ;;
|
||||
;; KERNEL32.INC ;;
|
||||
;; ;;
|
||||
;; Included 32 bit kernel files for MenuetOS ;;
|
||||
;; ;;
|
||||
;; This file is kept separate as it will be easier to ;;
|
||||
;; maintain and compile with an automated SETUP program ;;
|
||||
;; in the future. ;;
|
||||
;; ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
$Revision$
|
||||
|
||||
|
||||
;struc db [a] { common . db a
|
||||
; if ~used .
|
||||
; display 'not used db: ',`.,13,10
|
||||
; end if }
|
||||
;struc dw [a] { common . dw a
|
||||
; if ~used .
|
||||
; display 'not used dw: ',`.,13,10
|
||||
; end if }
|
||||
;struc dd [a] { common . dd a
|
||||
; if ~used .
|
||||
; display 'not used dd: ',`.,13,10
|
||||
; end if }
|
||||
;struc dp [a] { common . dp a
|
||||
; if ~used .
|
||||
; display 'not used dp: ',`.,13,10
|
||||
; end if }
|
||||
;struc dq [a] { common . dq a
|
||||
; if ~used .
|
||||
; display 'not used dq: ',`.,13,10
|
||||
; end if }
|
||||
;struc dt [a] { common . dt a
|
||||
; if ~used .
|
||||
; display 'not used dt: ',`.,13,10
|
||||
; end if }
|
||||
|
||||
struc POINT {
|
||||
.x dd ?
|
||||
.y dd ?
|
||||
.sizeof:
|
||||
}
|
||||
virtual at 0
|
||||
POINT POINT
|
||||
end virtual
|
||||
|
||||
struc RECT {
|
||||
.left dd ?
|
||||
.top dd ?
|
||||
.right dd ?
|
||||
.bottom dd ?
|
||||
.sizeof:
|
||||
}
|
||||
virtual at 0
|
||||
RECT RECT
|
||||
end virtual
|
||||
|
||||
struc BOX {
|
||||
.left dd ?
|
||||
.top dd ?
|
||||
.width dd ?
|
||||
.height dd ?
|
||||
.sizeof:
|
||||
}
|
||||
virtual at 0
|
||||
BOX BOX
|
||||
end virtual
|
||||
|
||||
struc DISPMODE {
|
||||
.width rw 1
|
||||
.height rw 1
|
||||
.bpp rw 1
|
||||
.freq rw 1
|
||||
}
|
||||
|
||||
; constants definition
|
||||
WSTATE_NORMAL = 00000000b
|
||||
WSTATE_MAXIMIZED = 00000001b
|
||||
WSTATE_MINIMIZED = 00000010b
|
||||
WSTATE_ROLLEDUP = 00000100b
|
||||
|
||||
WSTATE_REDRAW = 00000001b
|
||||
WSTATE_WNDDRAWN = 00000010b
|
||||
|
||||
WSTYLE_HASCAPTION = 00010000b
|
||||
WSTYLE_CLIENTRELATIVE = 00100000b
|
||||
|
||||
struc TASKDATA
|
||||
{
|
||||
.event_mask dd ?
|
||||
.pid dd ?
|
||||
dw ?
|
||||
.state db ?
|
||||
db ?
|
||||
dw ?
|
||||
.wnd_number db ?
|
||||
db ?
|
||||
.mem_start dd ?
|
||||
.counter_sum dd ?
|
||||
.counter_add dd ?
|
||||
.cpu_usage dd ?
|
||||
}
|
||||
virtual at 0
|
||||
TASKDATA TASKDATA
|
||||
end virtual
|
||||
|
||||
TSTATE_RUNNING = 0
|
||||
TSTATE_RUN_SUSPENDED = 1
|
||||
TSTATE_WAIT_SUSPENDED = 2
|
||||
TSTATE_ZOMBIE = 3
|
||||
TSTATE_TERMINATING = 4
|
||||
TSTATE_WAITING = 5
|
||||
TSTATE_FREE = 9
|
||||
|
||||
; structures definition
|
||||
struc WDATA {
|
||||
.box BOX
|
||||
.cl_workarea dd ?
|
||||
.cl_titlebar dd ?
|
||||
.cl_frames dd ?
|
||||
.reserved db ?
|
||||
.fl_wstate db ?
|
||||
.fl_wdrawn db ?
|
||||
.fl_redraw db ?
|
||||
.sizeof:
|
||||
}
|
||||
virtual at 0
|
||||
WDATA WDATA
|
||||
end virtual
|
||||
label WDATA.fl_wstyle byte at WDATA.cl_workarea + 3
|
||||
|
||||
struc APPDATA
|
||||
{
|
||||
.app_name db 11 dup(?)
|
||||
db 5 dup(?)
|
||||
|
||||
.fpu_state dd ? ;+16
|
||||
.ev_count_ dd ? ;unused ;+20
|
||||
.exc_handler dd ? ;+24
|
||||
.except_mask dd ? ;+28
|
||||
.pl0_stack dd ? ;+32
|
||||
.heap_base dd ? ;+36
|
||||
.heap_top dd ? ;+40
|
||||
.cursor dd ? ;+44
|
||||
.fd_ev dd ? ;+48
|
||||
.bk_ev dd ? ;+52
|
||||
.fd_obj dd ? ;+56
|
||||
.bk_obj dd ? ;+60
|
||||
.saved_esp dd ? ;+64
|
||||
.io_map rd 2 ;+68
|
||||
.dbg_state dd ? ;+76
|
||||
.cur_dir dd ? ;+80
|
||||
.wait_timeout dd ? ;+84
|
||||
.saved_esp0 dd ? ;+88
|
||||
.wait_begin dd ? ;+92 +++
|
||||
.wait_test dd ? ;+96 +++
|
||||
.wait_param dd ? ;+100 +++
|
||||
.tls_base dd ? ;+104
|
||||
.dlls_list_ptr dd ? ;+108
|
||||
db 16 dup(?) ;+112
|
||||
|
||||
.wnd_shape dd ? ;+128
|
||||
.wnd_shape_scale dd ? ;+132
|
||||
dd ? ;+136
|
||||
.mem_size dd ? ;+140
|
||||
.saved_box BOX
|
||||
.ipc_start dd ?
|
||||
.ipc_size dd ?
|
||||
.event_mask dd ?
|
||||
.debugger_slot dd ?
|
||||
dd ?
|
||||
.keyboard_mode db ?
|
||||
db 3 dup(?)
|
||||
.dir_table dd ?
|
||||
.dbg_event_mem dd ?
|
||||
.dbg_regs:
|
||||
.dbg_regs.dr0 dd ?
|
||||
.dbg_regs.dr1 dd ?
|
||||
.dbg_regs.dr2 dd ?
|
||||
.dbg_regs.dr3 dd ?
|
||||
.dbg_regs.dr7 dd ?
|
||||
.wnd_caption dd ?
|
||||
.wnd_clientbox BOX
|
||||
}
|
||||
virtual at 0
|
||||
APPDATA APPDATA
|
||||
end virtual
|
||||
|
||||
;// mike.dld, 2006-29-01 ]
|
||||
|
||||
struc MUTEX
|
||||
{
|
||||
.wait LHEAD
|
||||
.count rd 1
|
||||
}
|
||||
|
||||
virtual at 0
|
||||
MUTEX MUTEX
|
||||
end virtual
|
||||
|
||||
|
||||
; Core functions
|
||||
include "core/sync.inc" ; macros for synhronization objects
|
||||
include "core/sys32.inc" ; process management
|
||||
include "core/sched.inc" ; process scheduling
|
||||
include "core/syscall.inc" ; system call
|
||||
include "core/fpu.inc" ; all fpu/sse support
|
||||
include "core/memory.inc"
|
||||
include "core/heap.inc" ; kernel and app heap
|
||||
include "core/malloc.inc" ; small kernel heap
|
||||
include "core/taskman.inc"
|
||||
include "core/dll.inc"
|
||||
include "core/peload.inc" ;
|
||||
include "core/exports.inc"
|
||||
include "core/string.inc"
|
||||
include "core/v86.inc" ; virtual-8086 manager
|
||||
include "core/irq.inc" ; irq handling functions
|
||||
include "core/apic.inc" ; Interrupt Controller functions
|
||||
include "core/timers.inc"
|
||||
|
||||
; GUI stuff
|
||||
include "gui/window.inc"
|
||||
include "gui/event.inc"
|
||||
include "gui/font.inc"
|
||||
include "gui/button.inc"
|
||||
|
||||
; shutdown
|
||||
|
||||
; file system
|
||||
|
||||
include "blkdev/disk.inc" ; support for plug-n-play disks
|
||||
include "blkdev/disk_cache.inc" ; caching for plug-n-play disks
|
||||
include "fs/fs.inc" ; syscall
|
||||
include "fs/fat32.inc" ; read / write for fat32 filesystem
|
||||
include "fs/ntfs.inc" ; read / write for ntfs filesystem
|
||||
include "fs/fat12.inc" ; read / write for fat12 filesystem
|
||||
include "blkdev/rd.inc" ; ramdisk read /write
|
||||
include "fs/fs_lfn.inc" ; syscall, version 2
|
||||
include "fs/iso9660.inc" ; read for iso9660 filesystem CD
|
||||
include "fs/ext2.inc" ; read / write for ext2 filesystem
|
||||
|
||||
; sound
|
||||
|
||||
include "sound/playnote.inc" ; player Note for Speaker PC
|
||||
|
||||
; display
|
||||
|
||||
include "video/vesa12.inc" ; Vesa 1.2 functions
|
||||
include "video/vesa20.inc" ; Vesa 2.0 functions
|
||||
include "video/blitter.inc" ;
|
||||
include "video/vga.inc" ; VGA 16 color functions
|
||||
include "video/cursors.inc" ; cursors functions
|
||||
|
||||
; Network Interface & TCPIP Stack
|
||||
|
||||
include "network/stack.inc"
|
||||
|
||||
;include "drivers/uart.inc"
|
||||
|
||||
|
||||
; Mouse pointer
|
||||
|
||||
include "gui/mouse.inc"
|
||||
|
||||
; Window skinning
|
||||
|
||||
include "gui/skincode.inc"
|
||||
|
||||
; Pci functions
|
||||
|
||||
include "bus/pci/pci32.inc"
|
||||
|
||||
; Floppy drive controller
|
||||
|
||||
include "blkdev/fdc.inc"
|
||||
include "blkdev/flp_drv.inc"
|
||||
|
||||
; IDE cache
|
||||
include "blkdev/ide_cache.inc"
|
||||
|
||||
; HD drive controller
|
||||
include "blkdev/hd_drv.inc"
|
||||
|
||||
; CD drive controller
|
||||
|
||||
include "blkdev/cdrom.inc"
|
||||
include "blkdev/cd_drv.inc"
|
||||
|
||||
; Character devices
|
||||
|
||||
include "hid/keyboard.inc"
|
||||
include "hid/mousedrv.inc"
|
||||
|
||||
; setting date,time,clock and alarm-clock
|
||||
|
||||
include "hid/set_dtc.inc"
|
||||
|
||||
;% -include
|
||||
|
||||
;parser file names
|
||||
include "fs/parse_fn.inc"
|
||||
|
||||
; work with conf lib
|
||||
include "core/conf_lib.inc"
|
||||
|
||||
; load external lib
|
||||
include "core/ext_lib.inc"
|
||||
|
||||
; list of external functions
|
||||
include "imports.inc"
|
||||
|
Loading…
Reference in New Issue
Block a user