/kernel/branches/Kolibri-A/trunk/boot/bootcode.inc |
---|
20,7 → 20,7 |
; |
;========================================================================== |
if 0 |
putchar: |
; in: al=character |
mov ah, 0Eh |
61,6 → 61,8 |
call setcursor |
} |
end if |
boot_read_floppy: |
push si |
xor si, si |
78,11 → 80,9 |
ret |
sayerr_plain: |
call printplain |
jmp $ |
sayerr: |
call print |
jmp $ |
173,38 → 173,6 |
xor di, di |
mov ah, 1*16+15 |
; draw top |
mov si, d80x25_top |
mov cx, d80x25_top_num * 80 |
@@: |
lodsb |
stosw |
loop @b |
; draw spaces |
mov si, space_msg |
mov dx, 25 - d80x25_top_num - d80x25_bottom_num |
dfl1: |
push si |
mov cx, 80 |
@@: |
lodsb |
stosw |
loop @b |
pop si |
dec dx |
jnz dfl1 |
; draw bottom |
mov si, d80x25_bottom |
mov cx, d80x25_bottom_num * 80 |
@@: |
lodsb |
stosw |
loop @b |
mov byte [space_msg+80], 0 ; now space_msg is null terminated |
_setcursor d80x25_top_num,0 |
cpugood: |
push 0 |
268,16 → 236,6 |
mov [es:0x9044], ax ; Save APM Version |
mov [es:0x9046], cx ; Save APM flags |
; Write APM ver ---- |
and ax, 0xf0f |
add ax, '00' |
mov si, msg_apm |
mov [si + 5], ah |
mov [si + 7], al |
_setcursor 0, 3 |
call printplain |
; ------------------ |
mov ax, 0x5304 ; Disconnect interface |
xor bx, bx |
int 0x15 |
291,7 → 249,6 |
mov [es:0x9054], dx |
apm_end: |
_setcursor d80x25_top_num, 0 |
;CHECK current of code |
cmp [cfgmanager.loader_block], -1 |
298,7 → 255,6 |
jz noloaderblock |
les bx, [cfgmanager.loader_block] |
cmp byte [es:bx], 1 |
mov si, loader_block_error |
jnz sayerr |
push 0 |
pop es |
344,22 → 300,11 |
cmp byte [di+preboot_biosdisk-preboot_device], 1 |
adc byte [di+preboot_biosdisk-preboot_device], 0 |
_setcursor 7,0 |
mov si, space_msg |
call printplain |
; pop ax ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ?? |
jmp .continue |
.loader_block dd -1 |
.continue: |
sti |
_setcursor 6,0 |
mov si, space_msg |
call printplain |
call printplain |
_setcursor 6,0 |
mov si, loading_msg |
call print |
_setcursor 15,0 |
jmp .load |
.loadc: |
367,11 → 312,6 |
.cont: |
push cs |
pop ds |
mov si, space_msg |
mov byte [si+80], 0 |
_setcursor 15,0 |
call printplain |
_setcursor 15,0 |
.load: |
; ASK GRAPHICS MODE |
406,8 → 346,6 |
cmp [boot_dev],0 |
jne no_sys_on_floppy |
mov si,diskload |
call print |
xor ax, ax ; reset drive |
xor dx, dx |
int 0x13 |
464,17 → 402,8 |
inc ch |
cmp ch, 80 |
jae ok_sys_on_floppy |
pusha |
mov al, ch |
shr ch, 2 |
add al, ch |
aam |
xchg al, ah |
add ax, '00' |
mov si, pros |
mov [si], ax |
call printplain |
popa |
jmp .a1 |
.nocd: |
; no - read only used sectors from floppy |
704,11 → 633,6 |
aam |
xchg al, ah |
add ax, '00' |
mov si, pros |
cmp [si], ax |
jz @f |
mov [si], ax |
call printplain |
@@: |
popa |
inc di |
717,10 → 641,6 |
pop bx ; clear stack |
ok_sys_on_floppy: |
mov si, backspace2 |
call printplain |
mov si, okt |
call printplain |
no_sys_on_floppy: |
xor ax, ax ; reset drive |
xor dx, dx |
/kernel/branches/Kolibri-A/trunk/boot/booteng.inc |
---|
14,19 → 14,19 |
$Revision$ |
d80x25_bottom: |
db 186,' KolibriOS is based on MenuetOS and comes with ABSOLUTELY ' |
db 'NO WARRANTY ',186 |
db 186,' See file COPYING for details ' |
db ' ',186 |
line_full_bottom |
d80x25_bottom_num = 3 |
;d80x25_bottom: |
; db 186,' KolibriOS is based on MenuetOS and comes with ABSOLUTELY ' |
; db 'NO WARRANTY ',186 |
; db 186,' See file COPYING for details ' |
; db ' ',186 |
; line_full_bottom |
;d80x25_bottom_num = 3 |
msg_apm db " APM x.x ", 0 |
vervesa db "Version of Vesa: Vesa x.x",13,10,0 |
;msg_apm db " APM x.x ", 0 |
;vervesa db "Version of Vesa: Vesa x.x",13,10,0 |
;novesa db "Display: EGA/CGA",13,10,0 |
s_vesa db "Version of VESA: " |
.ver db "?.?",13,10,0 |
;s_vesa db "Version of VESA: " |
; .ver db "?.?",13,10,0 |
;gr_mode db "Select a videomode: ",13,10,0 |
48,11 → 48,11 |
;btns db "Fatal - Can't determine color depth.",0 |
;badsect db 13,10,186," Fatal - Bad sector. Replace floppy.",0 |
;memmovefailed db 13,10,186," Fatal - Int 0x15 move failed.",0 |
okt db " ... OK" |
linef db 13,10,0 |
diskload db "Loading diskette: 00 %",8,8,8,8,0 |
pros db "00" |
backspace2 db 8,8,0 |
;okt db " ... OK" |
;linef db 13,10,0 |
;diskload db "Loading diskette: 00 %",8,8,8,8,0 |
;pros db "00" |
;backspace2 db 8,8,0 |
boot_dev db 0 ; 0=floppy, 1=hd |
;start_msg db "Press [abcd] to change settings, press [Enter] to continue booting",13,10,0 |
;time_msg db " or wait " |
61,6 → 61,6 |
;current_cfg_msg db "cfgmanager.printcfg reached",13,10,0 |
;curvideo_msg db " [a] Videomode: ",0 |
loading_msg db "Loading KolibriOS...",0 |
;loading_msg db "Loading KolibriOS...",0 |
;save_quest db "Remember current settings? [y/n]: ",0 |
loader_block_error db "Invalid boot data",0 |
;loader_block_error db "Invalid boot data",0 |
/kernel/branches/Kolibri-A/trunk/boot/bootvesa.inc |
---|
115,7 → 115,6 |
;------------------------------------------------------- |
print_vesa_info: |
_setcursor 5,2 |
mov [es:vi.VESASignature],'VBE2' |
mov ax,0x4F00 |
136,23 → 135,7 |
jb $ |
.vesaok2: |
mov ax,[es:vi.VESAVersion] |
add ax,'00' |
mov [s_vesa.ver], ah |
mov [s_vesa.ver+2], al |
mov si,s_vesa |
call printplain |
_setcursor 4,2 |
mov si,word[es:vi.OemStringPtr] |
mov di,si |
push ds |
mov ds,word[es:vi.OemStringPtr+2] |
call printplain |
pop ds |
ret |
;----------------------------------------------------------------------------- |
224,6 → 207,7 |
test si,si |
jnz .no_zero ;if no zero |
.zerro: |
mov word[preboot_graph], ax |
mov ax,1024 |
mov bx,768 |
295,32 → 279,8 |
ret |
;----------------------------------------------------------------------------- |
;Clear area of current video page (0xb800) |
;clear_vmodes_table: |
; pusha |
; draw frames |
; push es |
; push 0xb800 |
; pop es |
; mov di,1444 |
; xor ax,ax |
; mov ah, 1*16+15 |
; mov cx,70 |
; mov bp,12 |
;.loop_start: |
; rep stosw |
; mov cx,70 |
; add di,20 |
; dec bp |
; jns .loop_start |
; pop es |
; popa |
; ret |
;----------------------------------------------------------------------------- |
set_vmode: |
push 0 ;0;x1000 |
pop es |
/kernel/branches/Kolibri-A/trunk/boot/preboot.inc |
---|
28,11 → 28,11 |
preboot_device db 0 ; boot device |
; (1-floppy 2-harddisk 3-kernel restart 4-format ram disk) |
;!!!! 0 - autodetect !!!! |
preboot_blogesc = 0 ; start immediately after bootlog |
preboot_blogesc = 0 ; start immediately after bootlog |
preboot_biosdisk db 0 ; use V86 to access disks through BIOS (1-yes, 2-no) |
if $>0x200 |
ERROR: prebooting parameters must fit in first sector!!! |
end if |
hdsysimage db 'KOLIBRI IMG' ; load from |
image_save db 'KOLIBRI IMG' ; save to |
;hdsysimage db 'KOLIBRI IMG' ; load from |
;image_save db 'KOLIBRI IMG' ; save to |
/kernel/branches/Kolibri-A/trunk/bus/pci/pci32.inc |
---|
135,29 → 135,29 |
align 4 |
pci_read_reg: |
; push edx |
; xor edx, edx |
; mov dh, ah ; bus |
; mov dl, bh ; dev+fn |
; shl edx, 12 |
; mov dl, bl ; reg |
; add edx, PCIe_CONFIG_SPACE |
; push edx |
; xor edx, edx |
; mov dh, ah ; bus |
; mov dl, bh ; dev+fn |
; shl edx, 12 |
; mov dl, bl ; reg |
; add edx, PCIe_CONFIG_SPACE |
; |
; and al, 2 |
; jz @f |
; mov eax, dword[edx] |
; pop edx |
; ret |
; and al, 2 |
; jz @f |
; mov eax, dword[edx] |
; pop edx |
; ret |
;@@: |
; and al, 1 |
; jz @f |
; mov ax, word[edx] |
; pop edx |
; ret |
; and al, 1 |
; jz @f |
; mov ax, word[edx] |
; pop edx |
; ret |
;@@: |
; mov al, byte[edx] |
; pop edx |
; ret |
; mov al, byte[edx] |
; pop edx |
; ret |
push esi ; save register size into ESI |
mov esi,eax |
and esi,3 |
220,28 → 220,28 |
align 4 |
pci_write_reg: |
; push edx |
; xor edx, edx |
; mov dh, ah ; bus |
; mov dl, bh ; dev+fn |
; shl edx, 12 |
; mov dl, bl ; reg |
; add edx, PCIe_CONFIG_SPACE |
; push edx |
; xor edx, edx |
; mov dh, ah ; bus |
; mov dl, bh ; dev+fn |
; shl edx, 12 |
; mov dl, bl ; reg |
; add edx, PCIe_CONFIG_SPACE |
; |
; test al, 2 |
; jz @f |
; mov dword[edx], ecx |
; ret |
; test al, 2 |
; jz @f |
; mov dword[edx], ecx |
; ret |
;@@: |
; test al, 1 |
; jz @f |
; mov word[edx], cx |
; pop edx |
; ret |
; test al, 1 |
; jz @f |
; mov word[edx], cx |
; pop edx |
; ret |
;@@: |
; mov byte[edx], cl |
; pop edx |
; ret |
; mov byte[edx], cl |
; pop edx |
; ret |
push esi ; save register size into ESI |
mov esi,eax |
and esi,3 |
428,6 → 428,24 |
stdcall user_free, ebx |
ret |
;------------------------------------------------ |
align 4 |
sys_map1: |
; copies a block from kernel to user space |
; in: esi = address in kernel space |
; edi = eddress in user space |
; ebx = count (dwords) |
; out: nothing |
;------------------------------------------------ |
mov ecx, ebx |
pushfd |
cld |
rep movsd |
popfd |
ret |
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= |
uglobal |
align 4 |
/kernel/branches/Kolibri-A/trunk/const.inc |
---|
6,24 → 6,24 |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
$Revision$ |
dpl0 equ 10010000b ; data read dpl0 |
drw0 equ 10010010b ; data read/write dpl0 |
drw3 equ 11110010b ; data read/write dpl3 |
cpl0 equ 10011010b ; code read dpl0 |
cpl3 equ 11111010b ; code read dpl3 |
D32 equ 01000000b ; 32bit segment |
G32 equ 10000000b ; page gran |
dpl0 equ 10010000b ; data read dpl0 |
drw0 equ 10010010b ; data read/write dpl0 |
drw3 equ 11110010b ; data read/write dpl3 |
cpl0 equ 10011010b ; code read dpl0 |
cpl3 equ 11111010b ; code read dpl3 |
D32 equ 01000000b ; 32bit segment |
G32 equ 10000000b ; page gran |
;;;;;;;;;;;;cpu_caps flags;;;;;;;;;;;;;;;; |
CPU_386 equ 3 |
CPU_486 equ 4 |
CPU_PENTIUM equ 5 |
CPU_P6 equ 6 |
CPU_P6 equ 6 |
CPU_PENTIUM4 equ 0x0F |
CAPS_FPU equ 00 ;on-chip x87 floating point unit |
36,7 → 36,7 |
CAPS_MCE equ 07 ;machine check exception |
CAPS_CX8 equ 08 ;CMPXCHG8B instruction |
CAPS_APIC equ 09 ;on-chip advanced programmable |
; interrupt controller |
; interrupt controller |
; 10 ;unused |
CAPS_SEP equ 11 ;SYSENTER and SYSEXIT instructions |
CAPS_MTRR equ 12 ;memory-type range registers |
51,7 → 51,7 |
CAPS_DS equ 21 ;debug store |
CAPS_ACPI equ 22 ;thermal monitor and software |
;controlled clock supported |
;controlled clock supported |
CAPS_MMX equ 23 ;MMX instructions |
CAPS_FXSR equ 24 ;FXSAVE and FXRSTOR instructions |
CAPS_SSE equ 25 ;SSE instructions |
95,29 → 95,29 |
CAPS_ALTMOVCR8 equ 74 ; |
; CPU MSR names |
MSR_SYSENTER_CS equ 0x174 |
MSR_SYSENTER_ESP equ 0x175 |
MSR_SYSENTER_EIP equ 0x176 |
MSR_AMD_EFER equ 0xC0000080 ; Extended Feature Enable Register |
MSR_AMD_STAR equ 0xC0000081 ; SYSCALL/SYSRET Target Address Register |
MSR_SYSENTER_CS equ 0x174 |
MSR_SYSENTER_ESP equ 0x175 |
MSR_SYSENTER_EIP equ 0x176 |
MSR_AMD_EFER equ 0xC0000080 ; Extended Feature Enable Register |
MSR_AMD_STAR equ 0xC0000081 ; SYSCALL/SYSRET Target Address Register |
CR0_PE equ 0x00000001 ;protected mode |
CR0_MP equ 0x00000002 ;monitor fpu |
CR0_EM equ 0x00000004 ;fpu emulation |
CR0_TS equ 0x00000008 ;task switch |
CR0_ET equ 0x00000010 ;extension type hardcoded to 1 |
CR0_NE equ 0x00000020 ;numeric error |
CR0_WP equ 0x00010000 ;write protect |
CR0_AM equ 0x00040000 ;alignment check |
CR0_NW equ 0x20000000 ;not write-through |
CR0_CD equ 0x40000000 ;cache disable |
CR0_PG equ 0x80000000 ;paging |
CR0_PE equ 0x00000001 ;protected mode |
CR0_MP equ 0x00000002 ;monitor fpu |
CR0_EM equ 0x00000004 ;fpu emulation |
CR0_TS equ 0x00000008 ;task switch |
CR0_ET equ 0x00000010 ;extension type hardcoded to 1 |
CR0_NE equ 0x00000020 ;numeric error |
CR0_WP equ 0x00010000 ;write protect |
CR0_AM equ 0x00040000 ;alignment check |
CR0_NW equ 0x20000000 ;not write-through |
CR0_CD equ 0x40000000 ;cache disable |
CR0_PG equ 0x80000000 ;paging |
CR4_VME equ 0x0001 |
CR4_PVI equ 0x0002 |
CR4_TSD equ 0x0004 |
CR4_DE equ 0x0008 |
CR4_DE equ 0x0008 |
CR4_PSE equ 0x0010 |
CR4_PAE equ 0x0020 |
CR4_MCE equ 0x0040 |
126,20 → 126,20 |
CR4_OSFXSR equ 0x0200 |
CR4_OSXMMEXPT equ 0x0400 |
SSE_IE equ 0x0001 |
SSE_DE equ 0x0002 |
SSE_ZE equ 0x0004 |
SSE_OE equ 0x0008 |
SSE_UE equ 0x0010 |
SSE_PE equ 0x0020 |
SSE_IE equ 0x0001 |
SSE_DE equ 0x0002 |
SSE_ZE equ 0x0004 |
SSE_OE equ 0x0008 |
SSE_UE equ 0x0010 |
SSE_PE equ 0x0020 |
SSE_DAZ equ 0x0040 |
SSE_IM equ 0x0080 |
SSE_DM equ 0x0100 |
SSE_ZM equ 0x0200 |
SSE_OM equ 0x0400 |
SSE_UM equ 0x0800 |
SSE_PM equ 0x1000 |
SSE_FZ equ 0x8000 |
SSE_IM equ 0x0080 |
SSE_DM equ 0x0100 |
SSE_ZM equ 0x0200 |
SSE_OM equ 0x0400 |
SSE_UM equ 0x0800 |
SSE_PM equ 0x1000 |
SSE_FZ equ 0x8000 |
SSE_INIT equ (SSE_IM+SSE_DM+SSE_ZM+SSE_OM+SSE_UM+SSE_PM) |
164,16 → 164,16 |
._ebp rd 1 |
._esi rd 1 |
._edi rd 1 |
._es rw 2 |
._cs rw 2 |
._ss rw 2 |
._ds rw 2 |
._fs rw 2 |
._gs rw 2 |
._es rw 2 |
._cs rw 2 |
._ss rw 2 |
._ds rw 2 |
._fs rw 2 |
._gs rw 2 |
._ldt rw 2 |
._trap rw 1 |
._io rw 1 |
rb 24 |
._io rw 1 |
rb 24 |
._io_map_0 rb 4096 |
._io_map_1 rb 4096 |
} |
184,242 → 184,231 |
TSS_SIZE equ (128+8192) |
OS_BASE equ 0x80000000 |
OS_BASE equ 0x80000000 |
window_data equ (OS_BASE+0x0001000) |
window_data equ (OS_BASE+0x0001000) |
CURRENT_TASK equ (OS_BASE+0x0003000) |
TASK_COUNT equ (OS_BASE+0x0003004) |
TASK_BASE equ (OS_BASE+0x0003010) |
TASK_DATA equ (OS_BASE+0x0003020) |
TASK_EVENT equ (OS_BASE+0x0003020) |
CURRENT_TASK equ (OS_BASE+0x0003000) |
TASK_COUNT equ (OS_BASE+0x0003004) |
TASK_BASE equ (OS_BASE+0x0003010) |
TASK_DATA equ (OS_BASE+0x0003020) |
TASK_EVENT equ (OS_BASE+0x0003020) |
mouseunder equ (OS_BASE+0x0006900) |
CDDataBuf equ (OS_BASE+0x0007000) |
FLOPPY_BUFF equ (OS_BASE+0x0008000) |
;ACTIVE_PROC_STACK equ (OS_BASE+0x000A400) ;unused |
idts equ (OS_BASE+0x000B100) |
WIN_STACK equ (OS_BASE+0x000C000) |
WIN_POS equ (OS_BASE+0x000C400) |
FDD_BUFF equ (OS_BASE+0x000D000) |
FLOPPY_BUFF equ (OS_BASE+0x0005000) |
;unused ? only one reference |
;ENABLE_TASKSWITCH equ (OS_BASE+0x000E000) |
idts equ (OS_BASE+0x0007400) ; sys32.inc |
PUTPIXEL equ (OS_BASE+0x000E020) |
GETPIXEL equ (OS_BASE+0x000E024) |
mouseunder equ (OS_BASE+0x0007900) |
SB16_Status equ (OS_BASE+0x0007F00) ; << |
;unused ? only one reference |
; BANK_SWITCH equ (OS_BASE+0x000E030) ; VESA 1.2 - not used |
RAMDISK_FAT equ (OS_BASE+0x0008000) |
FLOPPY_FAT equ (OS_BASE+0x000A000) ; fs/fat12.inc |
;unused ? store mousepointer |
;MOUSE_PICTURE equ (OS_BASE+0x000F200) ; mousedrv.inc - not used |
WIN_STACK equ (OS_BASE+0x000C000) |
WIN_POS equ (OS_BASE+0x000C400) |
FDD_BUFF equ (OS_BASE+0x000D000) |
MOUSE_VISIBLE equ (OS_BASE+0x000F204) |
WIN_TEMP_XY equ (OS_BASE+0x000F300) |
KEY_COUNT equ (OS_BASE+0x000F400) |
KEY_BUFF equ (OS_BASE+0x000F401) |
BTN_COUNT equ (OS_BASE+0x000F500) |
BTN_BUFF equ (OS_BASE+0x000F501) |
KEY_COUNT equ (OS_BASE+0x000FA00) |
KEY_BUFF equ (OS_BASE+0x000FA01) |
CPU_FREQ equ (OS_BASE+0x000F600) |
BTN_COUNT equ (OS_BASE+0x000FB00) |
BTN_BUFF equ (OS_BASE+0x000FB01) |
;unused ? no active references |
MOUSE_PORT equ (OS_BASE+0x000F604) |
;unused |
PS2_CHUNK equ (OS_BASE+0x000FB00) |
;reserved ? mouse buffer space 0xFC00-FCFF |
MOUSE_BUFF_COUNT equ (OS_BASE+0x000FCFF) |
MOUSE_SCROLL_H equ (OS_BASE+0x000FB08) |
MOUSE_X equ (OS_BASE+0x000FB0A) |
MOUSE_Y equ (OS_BASE+0x000FB0C) |
MOUSE_SCROLL_V equ (OS_BASE+0x000FB0E) |
;unused ? |
PS2_CHUNK equ (OS_BASE+0x000FE00) |
MOUSE_SCROLL_H equ (OS_BASE+0x000FE08) |
MOUSE_X equ (OS_BASE+0x000FE0A) |
MOUSE_Y equ (OS_BASE+0x000FE0C) |
MOUSE_SCROLL_V equ (OS_BASE+0x000FE0E) |
MOUSE_COLOR_MEM equ (OS_BASE+0x000FB10) |
COLOR_TEMP equ (OS_BASE+0x000FB30) |
BTN_DOWN equ (OS_BASE+0x000FB40) |
MOUSE_DOWN equ (OS_BASE+0x000FB44) |
X_UNDER equ (OS_BASE+0x000FB4A) |
Y_UNDER equ (OS_BASE+0x000FB4C) |
ScreenBPP equ (OS_BASE+0x000FBF1) |
MOUSE_COLOR_MEM equ (OS_BASE+0x000FE10) |
COLOR_TEMP equ (OS_BASE+0x000FE30) |
BTN_DOWN equ (OS_BASE+0x000FE40) |
MOUSE_DOWN equ (OS_BASE+0x000FE44) |
X_UNDER equ (OS_BASE+0x000FE4A) |
Y_UNDER equ (OS_BASE+0x000FE4C) |
;unused ? only one reference |
MOUSE_BUFF_COUNT equ (OS_BASE+0x000FCFF) |
PUTPIXEL equ (OS_BASE+0x000FEB8) |
GETPIXEL equ (OS_BASE+0x000FEBC) |
ScreenBPP equ (OS_BASE+0x000FEC1) |
MOUSE_VISIBLE equ (OS_BASE+0x000FEC4) |
WIN_TEMP_XY equ (OS_BASE+0x000FEC8) |
CPU_FREQ equ (OS_BASE+0x000FECC) |
Screen_Max_X equ (OS_BASE+0x000FE00) |
Screen_Max_Y equ (OS_BASE+0x000FE04) |
BytesPerScanLine equ (OS_BASE+0x000FE08) |
SCR_MODE equ (OS_BASE+0x000FE0C) |
Screen_Max_X equ (OS_BASE+0x000FED0) |
Screen_Max_Y equ (OS_BASE+0x000FED4) |
BytesPerScanLine equ (OS_BASE+0x000FED8) |
SCR_MODE equ (OS_BASE+0x000FEDC) |
KERNEL_ALLOC_FLAG equ (OS_BASE+0x000FE70) |
mmio_pcie_cfg_addr equ (OS_BASE+0x000FE74) |
mmio_pcie_cfg_lim equ (OS_BASE+0x000FE78) |
mmio_pcie_cfg_pdes equ (OS_BASE+0x000FE7C) |
PCIe_bus_range equ (OS_BASE+0x000FE7E) |
KERNEL_ALLOC_FLAG equ (OS_BASE+0x000FEE0) |
mmio_pcie_cfg_addr equ (OS_BASE+0x000FEE4) |
mmio_pcie_cfg_lim equ (OS_BASE+0x000FEE8) |
mmio_pcie_cfg_pdes equ (OS_BASE+0x000FEEC) |
PCIe_bus_range equ (OS_BASE+0x000FEEE) |
UserDMAaddr equ (OS_BASE+0x000FE80) |
LFBAddress equ (OS_BASE+0x000FE84) |
BTN_ADDR equ (OS_BASE+0x000FE88) |
MEM_AMOUNT equ (OS_BASE+0x000FE8C) |
UserDMAaddr equ (OS_BASE+0x000FEF0) |
LFBAddress equ (OS_BASE+0x000FEF4) |
BTN_ADDR equ (OS_BASE+0x000FEF8) |
MEM_AMOUNT equ (OS_BASE+0x000FEFC) |
SYS_SHUTDOWN equ (OS_BASE+0x000FF00) |
TASK_ACTIVATE equ (OS_BASE+0x000FF01) |
SYS_SHUTDOWN equ (OS_BASE+0x000FF00) |
TASK_ACTIVATE equ (OS_BASE+0x000FF01) |
BgrDrawMode equ (OS_BASE+0x000FFE4) |
BgrDataWidth equ (OS_BASE+0x000FFE8) |
BgrDataHeight equ (OS_BASE+0x000FFEC) |
REDRAW_BACKGROUND equ (OS_BASE+0x000FFF0) |
BACKGROUND_CHANGED equ (OS_BASE+0x000FFF1) |
BANK_RW equ (OS_BASE+0x000FFF2) |
BANK_RW equ (OS_BASE+0x000FFF2) |
MOUSE_BACKGROUND equ (OS_BASE+0x000FFF4) |
DONT_DRAW_MOUSE equ (OS_BASE+0x000FFF5) |
DONT_SWITCH equ (OS_BASE+0x000FFFF) |
DONT_SWITCH equ (OS_BASE+0x000FFFF) |
TMP_STACK_TOP equ 0x006CC00 |
TMP_STACK_TOP equ 0x006CC00 |
FONT_II equ (OS_BASE+0x006DC00) |
FONT_I equ (OS_BASE+0x006E600) |
FONT_II equ (OS_BASE+0x006DC00) |
FONT_I equ (OS_BASE+0x006E600) |
sys_pgdir equ (OS_BASE+0x006F000) |
sys_pgdir equ (OS_BASE+0x006F000) |
DRIVE_DATA equ (OS_BASE+0x0070000) |
DRIVE_DATA equ (OS_BASE+0x0070000) |
SLOT_BASE equ (OS_BASE+0x0080000) |
SLOT_BASE equ (OS_BASE+0x0080000) |
;unused |
TMP_BUFF equ (OS_BASE+0x0090000) |
SB16Buffer equ (OS_BASE+0x0090000) ; << |
VGABasePtr equ (OS_BASE+0x00A0000) |
VGABasePtr equ (OS_BASE+0x00A0000) |
RAMDISK equ (OS_BASE+0x0100000) |
RAMDISK_FAT equ (OS_BASE+0x0280000) |
FLOPPY_FAT equ (OS_BASE+0x0282000) |
RAMDISK equ (OS_BASE+0x0100000) |
IDE_DMA equ 0x284000 |
CLEAN_ZONE equ 0x3f0000 |
BgrAuxTable equ (OS_BASE+0x0298000) |
; unused? |
SB16Buffer equ (OS_BASE+0x2A0000) |
SB16_Status equ (OS_BASE+0x02B0000) |
IDE_DMA equ 0x03F4000 |
BUTTON_INFO equ (OS_BASE+0x02C0000) |
RESERVED_PORTS equ (OS_BASE+0x02D0000) |
IRQ_SAVE equ (OS_BASE+0x02E0000) |
BOOT_VAR equ (OS_BASE+0x02f0000) |
BgrAuxTable equ (OS_BASE+0x0408000) |
stack_data_start equ (OS_BASE+0x0300000) |
eth_data_start equ (OS_BASE+0x0300000) |
stack_data equ (OS_BASE+0x0304000) |
stack_data_end equ (OS_BASE+0x031ffff) |
resendQ equ (OS_BASE+0x0320000) |
VMODE_BASE equ (OS_BASE+0x0328000) |
skin_data equ (OS_BASE+0x0330000) |
draw_data equ (OS_BASE+0x0338000); |
BUTTON_INFO equ (OS_BASE+0x0430000) |
RESERVED_PORTS equ (OS_BASE+0x0440000) |
IRQ_SAVE equ (OS_BASE+0x0450000) |
BOOT_VAR equ (OS_BASE+0x0460000) |
BgrDrawMode equ (OS_BASE+0x033BFF4) |
BgrDataWidth equ (OS_BASE+0x033BFF8) |
BgrDataHeight equ (OS_BASE+0x033BFFC) |
stack_data_start equ (OS_BASE+0x0470000) |
eth_data_start equ (OS_BASE+0x0470000) |
stack_data equ (OS_BASE+0x0474000) |
stack_data_end equ (OS_BASE+0x048ffff) |
resendQ equ (OS_BASE+0x0490000) |
VMODE_BASE equ (OS_BASE+0x0498000) |
skin_data equ (OS_BASE+0x04A0000) |
draw_data equ (OS_BASE+0x04A8000); |
sys_pgmap equ (OS_BASE+0x033C000) |
UPPER_KERNEL_PAGES equ (OS_BASE+0x0400000) |
sys_pgmap equ (OS_BASE+0x04B0000) ; << |
virtual at (OS_BASE+0x05FFF80) |
;UPPER_KERNEL_PAGES equ (OS_BASE+0x0400000) |
virtual at (OS_BASE+0x06FFF80) |
tss TSS |
end virtual |
HEAP_BASE equ (OS_BASE+0x0800000) |
HEAP_MIN_SIZE equ 0x01000000 |
HEAP_BASE equ (OS_BASE+0x0800000) |
HEAP_MIN_SIZE equ 0x01000000 |
PCIe_CONFIG_SPACE equ 0xF0000000 |
PCIe_CONFIG_SPACE equ 0xF0000000 |
USER_DMA_BUFFER equ 0xFD000000 ; linear addr. |
page_tabs equ 0xFDC00000 |
app_page_tabs equ 0xFDC00000 |
kernel_tabs equ (page_tabs+ (OS_BASE shr 10)) ;0xFDE00000 |
master_tab equ (page_tabs+ (page_tabs shr 10)) ;0xFDFF70000 |
page_tabs equ 0xFDC00000 |
app_page_tabs equ 0xFDC00000 |
kernel_tabs equ (page_tabs+ (OS_BASE shr 10)) ;0xFDE00000 |
master_tab equ (page_tabs+ (page_tabs shr 10)) ;0xFDFF70000 |
LFB_BASE equ 0xFE000000 |
LFB_BASE equ 0xFE000000 |
new_app_base equ 0; |
new_app_base equ 0; |
twdw equ 0x2000 ;(CURRENT_TASK-window_data) |
twdw equ 0x2000 ;(CURRENT_TASK-window_data) |
std_application_base_address equ new_app_base |
RING0_STACK_SIZE equ (0x2000 - 512) ;512 áà éò äëÿ êîÃòåêñòà FPU |
RING0_STACK_SIZE equ (0x2000 - 512) ;512 áà éò äëÿ êîÃòåêñòà FPU |
REG_SS equ (RING0_STACK_SIZE-4) |
REG_APP_ESP equ (RING0_STACK_SIZE-8) |
REG_EFLAGS equ (RING0_STACK_SIZE-12) |
REG_CS equ (RING0_STACK_SIZE-16) |
REG_EIP equ (RING0_STACK_SIZE-20) |
REG_EAX equ (RING0_STACK_SIZE-24) |
REG_ECX equ (RING0_STACK_SIZE-28) |
REG_EDX equ (RING0_STACK_SIZE-32) |
REG_EBX equ (RING0_STACK_SIZE-36) |
REG_ESP equ (RING0_STACK_SIZE-40) ;RING0_STACK_SIZE-20 |
REG_EBP equ (RING0_STACK_SIZE-44) |
REG_ESI equ (RING0_STACK_SIZE-48) |
REG_EDI equ (RING0_STACK_SIZE-52) |
REG_RET equ (RING0_STACK_SIZE-56) ;irq0.return |
REG_SS equ (RING0_STACK_SIZE-4) |
REG_APP_ESP equ (RING0_STACK_SIZE-8) |
REG_EFLAGS equ (RING0_STACK_SIZE-12) |
REG_CS equ (RING0_STACK_SIZE-16) |
REG_EIP equ (RING0_STACK_SIZE-20) |
REG_EAX equ (RING0_STACK_SIZE-24) |
REG_ECX equ (RING0_STACK_SIZE-28) |
REG_EDX equ (RING0_STACK_SIZE-32) |
REG_EBX equ (RING0_STACK_SIZE-36) |
REG_ESP equ (RING0_STACK_SIZE-40) ;RING0_STACK_SIZE-20 |
REG_EBP equ (RING0_STACK_SIZE-44) |
REG_ESI equ (RING0_STACK_SIZE-48) |
REG_EDI equ (RING0_STACK_SIZE-52) |
REG_RET equ (RING0_STACK_SIZE-56) ;irq0.return |
PG_UNMAP equ 0x000 |
PG_MAP equ 0x001 |
PG_WRITE equ 0x002 |
PG_SW equ 0x003 |
PG_USER equ 0x005 |
PG_UW equ 0x007 |
PG_NOCACHE equ 0x018 |
PG_LARGE equ 0x080 |
PG_GLOBAL equ 0x100 |
PG_UNMAP equ 0x000 |
PG_MAP equ 0x001 |
PG_WRITE equ 0x002 |
PG_SW equ 0x003 |
PG_USER equ 0x005 |
PG_UW equ 0x007 |
PG_NOCACHE equ 0x018 |
PG_LARGE equ 0x080 |
PG_GLOBAL equ 0x100 |
PG_SHARED equ 0x200 |
PG_SHARED equ 0x200 |
;;;;;;;;;;;boot time variables |
;BOOT_BPP equ 0x9000 ;byte bits per pixel |
BOOT_SCANLINE equ 0x9001 ;word scanline length |
BOOT_VESA_MODE equ 0x9008 ;word vesa video mode |
BOOT_SCANLINE equ 0x9001 ;word scanline length |
BOOT_VESA_MODE equ 0x9008 ;word vesa video mode |
;;BOOT_X_RES equ 0x900A ;word X res |
;;BOOT_Y_RES equ 0x900C ;word Y res |
;;BOOT_MOUSE_PORT equ 0x9010 ;byte mouse port - not used |
BOOT_BANK_SW equ 0x9014 ;dword Vesa 1.2 pm bank switch |
BOOT_LFB equ 0x9018 ;dword Vesa 2.0 LFB address |
BOOT_MTRR equ 0x901C ;byte 0 or 1 : enable MTRR graphics acceleration |
BOOT_LOG equ 0x901D ;byte not used anymore (0 or 1 : enable system log display) |
BOOT_DIRECT_LFB equ 0x901E ;byte 0 or 1 : enable direct lfb write, paging disabled |
BOOT_PCI_DATA equ 0x9020 ;8bytes pci data |
BOOT_VRR equ 0x9030 ;byte VRR start enabled 1, 2-no |
BOOT_IDE_BASE_ADDR equ 0x9031 ;word IDEContrRegsBaseAddr |
BOOT_MEM_AMOUNT equ 0x9034 ;dword memory amount |
BOOT_BANK_SW equ 0x9014 ;dword Vesa 1.2 pm bank switch |
BOOT_LFB equ 0x9018 ;dword Vesa 2.0 LFB address |
BOOT_MTRR equ 0x901C ;byte 0 or 1 : enable MTRR graphics acceleration |
BOOT_LOG equ 0x901D ;byte not used anymore (0 or 1 : enable system log display) |
BOOT_DIRECT_LFB equ 0x901E ;byte 0 or 1 : enable direct lfb write, paging disabled |
BOOT_PCI_DATA equ 0x9020 ;8bytes pci data |
BOOT_VRR equ 0x9030 ;byte VRR start enabled 1, 2-no |
BOOT_IDE_BASE_ADDR equ 0x9031 ;word IDEContrRegsBaseAddr |
BOOT_MEM_AMOUNT equ 0x9034 ;dword memory amount |
TMP_FILE_NAME equ 0 |
TMP_CMD_LINE equ 1024 |
TMP_ICON_OFFS equ 1280 |
TMP_FILE_NAME equ 0 |
TMP_CMD_LINE equ 1024 |
TMP_ICON_OFFS equ 1280 |
EVENT_REDRAW equ 0x00000001 |
EVENT_KEY equ 0x00000002 |
EVENT_BUTTON equ 0x00000004 |
EVENT_REDRAW equ 0x00000001 |
EVENT_KEY equ 0x00000002 |
EVENT_BUTTON equ 0x00000004 |
EVENT_BACKGROUND equ 0x00000010 |
EVENT_MOUSE equ 0x00000020 |
EVENT_IPC equ 0x00000040 |
EVENT_NETWORK equ 0x00000080 |
EVENT_DEBUG equ 0x00000100 |
EVENT_EXTENDED equ 0x00000200 |
EVENT_MOUSE equ 0x00000020 |
EVENT_IPC equ 0x00000040 |
EVENT_NETWORK equ 0x00000080 |
EVENT_DEBUG equ 0x00000100 |
EVENT_EXTENDED equ 0x00000200 |
EV_INTR equ 1 |
EV_INTR equ 1 |
struc THR_DATA |
{ |
rb (8192-512) |
rb (8192-512) |
.pl0_stack: |
.fpu_state rb 512 |
.tls_page rb 4096 |
.pdbr rb 4096 |
.fpu_state rb 512 |
.tls_page rb 4096 |
.pdbr rb 4096 |
} |
THR_DATA_SIZE equ 4096*4 |
THR_DATA_SIZE equ 4096*4 |
virtual at (OS_BASE-THR_DATA_SIZE) |
thr_data THR_DATA |
426,20 → 415,20 |
end virtual |
struc SYS_VARS |
{ .bpp dd ? |
.scanline dd ? |
.vesa_mode dd ? |
.x_res dd ? |
.y_res dd ? |
{ .bpp dd ? |
.scanline dd ? |
.vesa_mode dd ? |
.x_res dd ? |
.y_res dd ? |
} |
struc APPOBJ ;common object header |
struc APPOBJ ;common object header |
{ |
.magic dd ? ; |
.destroy dd ? ;internal destructor |
.fd dd ? ;next object in list |
.bk dd ? ;prev object in list |
.pid dd ? ;owner id |
.magic dd ? ; |
.destroy dd ? ;internal destructor |
.fd dd ? ;next object in list |
.bk dd ? ;prev object in list |
.pid dd ? ;owner id |
}; |
virtual at 0 |
446,26 → 435,26 |
APPOBJ APPOBJ |
end virtual |
APP_OBJ_OFFSET equ 48 |
APP_EV_OFFSET equ 40 |
APP_OBJ_OFFSET equ 48 |
APP_EV_OFFSET equ 40 |
struc CURSOR |
{ |
;common object header |
.magic dd ? ;'CURS' |
.destroy dd ? ;internal destructor |
.fd dd ? ;next object in list |
.bk dd ? ;prev object in list |
.pid dd ? ;owner id |
.magic dd ? ;'CURS' |
.destroy dd ? ;internal destructor |
.fd dd ? ;next object in list |
.bk dd ? ;prev object in list |
.pid dd ? ;owner id |
;cursor data |
.base dd ? ;allocated memory |
.hot_x dd ? ;hotspot coords |
.hot_y dd ? |
.base dd ? ;allocated memory |
.hot_x dd ? ;hotspot coords |
.hot_y dd ? |
.list_next dd ? ;next cursor in cursor list |
.list_prev dd ? ;prev cursor in cursor list |
.dev_obj dd ? ;device depended data |
.list_next dd ? ;next cursor in cursor list |
.list_prev dd ? ;prev cursor in cursor list |
.dev_obj dd ? ;device depended data |
.sizeof: |
} |
476,18 → 465,18 |
struc EVENT |
{ |
.magic dd ? ;'EVNT' |
.destroy dd ? ;internal destructor |
.fd dd ? ;next object in list |
.bk dd ? ;prev object in list |
.pid dd ? ;owner id |
.magic dd ? ;'EVNT' |
.destroy dd ? ;internal destructor |
.fd dd ? ;next object in list |
.bk dd ? ;prev object in list |
.pid dd ? ;owner id |
.id dd ? ;event uid |
.state dd ? ;internal flags |
.code dd ? |
rd 5 |
.size = $ - .magic |
.codesize = $ - .code |
.id dd ? ;event uid |
.state dd ? ;internal flags |
.code dd ? |
rd 5 |
.size = $ - .magic |
.codesize = $ - .code |
} |
virtual at 0 |
497,26 → 486,26 |
struc SMEM |
{ |
.bk dd ? |
.fd dd ? ;+4 |
.base dd ? ;+8 |
.size dd ? ;+12 |
.access dd ? ;+16 |
.refcount dd ? ;+20 |
.name rb 32 ;+24 |
.bk dd ? |
.fd dd ? ;+4 |
.base dd ? ;+8 |
.size dd ? ;+12 |
.access dd ? ;+16 |
.refcount dd ? ;+20 |
.name rb 32 ;+24 |
.sizeof: |
} |
struc SMAP |
{ |
.magic dd ? ; SMAP |
.destroy dd ? ;internal destructor |
.fd dd ? ;next object in list |
.bk dd ? ;prev object in list |
.pid dd ? ;owner id |
.magic dd ? ; SMAP |
.destroy dd ? ;internal destructor |
.fd dd ? ;next object in list |
.bk dd ? ;prev object in list |
.pid dd ? ;owner id |
.base dd ? ;mapped base |
.parent dd ? ;SMEM |
.base dd ? ;mapped base |
.parent dd ? ;SMEM |
.sizeof: |
} |
530,18 → 519,18 |
struc DLLDESCR |
{ |
.bk dd ? |
.fd dd ? ;+4 |
.data dd ? ;+8 |
.size dd ? ;+12 |
.timestamp dq ? |
.refcount dd ? |
.bk dd ? |
.fd dd ? ;+4 |
.data dd ? ;+8 |
.size dd ? ;+12 |
.timestamp dq ? |
.refcount dd ? |
.defaultbase dd ? |
.coff_hdr dd ? |
.coff_hdr dd ? |
.symbols_ptr dd ? |
.symbols_num dd ? |
.symbols_lim dd ? |
.exports dd ? ;export table |
.exports dd ? ;export table |
.name: |
.sizeof: |
} |
548,14 → 537,14 |
struc HDLL |
{ |
.fd dd ? ;next object in list |
.bk dd ? ;prev object in list |
.pid dd ? ;owner id |
.fd dd ? ;next object in list |
.bk dd ? ;prev object in list |
.pid dd ? ;owner id |
.base dd ? ;mapped base |
.size dd ? ;mapped size |
.refcount dd ? ;reference counter for this process and this lib |
.parent dd ? ;DLLDESCR |
.base dd ? ;mapped base |
.size dd ? ;mapped size |
.refcount dd ? ;reference counter for this process and this lib |
.parent dd ? ;DLLDESCR |
.sizeof: |
} |
569,24 → 558,24 |
struc display_t |
{ |
.x dd ? |
.y dd ? |
.width dd ? |
.height dd ? |
.bpp dd ? |
.vrefresh dd ? |
.pitch dd ? |
.lfb dd ? |
.x dd ? |
.y dd ? |
.width dd ? |
.height dd ? |
.bpp dd ? |
.vrefresh dd ? |
.pitch dd ? |
.lfb dd ? |
.modes dd ? |
.ddev dd ? |
.connector dd ? |
.crtc dd ? |
.modes dd ? |
.ddev dd ? |
.connector dd ? |
.crtc dd ? |
.cr_list.next dd ? |
.cr_list.prev dd ? |
.cursor dd ? |
.cursor dd ? |
.init_cursor dd ? |
.select_cursor dd ? |
602,49 → 591,49 |
struc HEAP_DATA |
{ |
.mutex rd 1 |
.refcount rd 1 |
.heap_base rd 1 |
.heap_top rd 1 |
.app_mem rd 1 |
.mutex rd 1 |
.refcount rd 1 |
.heap_base rd 1 |
.heap_top rd 1 |
.app_mem rd 1 |
} |
HEAP_DATA_SIZE equ 20 |
HEAP_DATA_SIZE equ 20 |
virtual at 0 |
HEAP_DATA HEAP_DATA |
end virtual |
struc BOOT_DATA |
{ .bpp dd ? |
.scanline dd ? |
.vesa_mode dd ? |
.x_res dd ? |
.y_res dd ? |
.mouse_port dd ? |
.bank_switch dd ? |
.lfb dd ? |
.vesa_mem dd ? |
.log dd ? |
.direct_lfb dd ? |
.pci_data dd ? |
{ .bpp dd ? |
.scanline dd ? |
.vesa_mode dd ? |
.x_res dd ? |
.y_res dd ? |
.mouse_port dd ? |
.bank_switch dd ? |
.lfb dd ? |
.vesa_mem dd ? |
.log dd ? |
.direct_lfb dd ? |
.pci_data dd ? |
; dd ? |
.vrr dd ? |
.ide_base dd ? |
.mem_amount dd ? |
.pages_count dd ? |
.vrr dd ? |
.ide_base dd ? |
.mem_amount dd ? |
.pages_count dd ? |
.pagemap_size dd ? |
.kernel_max dd ? |
.kernel_max dd ? |
.kernel_pages dd ? |
.kernel_tables dd ? |
.cpu_vendor dd ? |
dd ? |
dd ? |
.cpu_sign dd ? |
.cpu_info dd ? |
.cpu_caps dd ? |
dd ? |
dd ? |
.cpu_vendor dd ? |
dd ? |
dd ? |
.cpu_sign dd ? |
.cpu_info dd ? |
.cpu_caps dd ? |
dd ? |
dd ? |
} |
virtual at 0 |
652,26 → 641,26 |
end virtual |
struc MEM_STATE |
{ .mutex rd 1 |
.smallmap rd 1 |
.treemap rd 1 |
.topsize rd 1 |
.top rd 1 |
.smallbins rd 4*32 |
.treebins rd 32 |
{ .mutex rd 1 |
.smallmap rd 1 |
.treemap rd 1 |
.topsize rd 1 |
.top rd 1 |
.smallbins rd 4*32 |
.treebins rd 32 |
} |
struc PG_DATA |
{ .mem_amount dd ? |
.vesa_mem dd ? |
.pages_count dd ? |
.pages_free dd ? |
{ .mem_amount dd ? |
.vesa_mem dd ? |
.pages_count dd ? |
.pages_free dd ? |
.pages_faults dd ? |
.pagemap_size dd ? |
.kernel_pages dd ? |
.kernel_tables dd ? |
.sys_page_dir dd ? |
.pg_mutex dd ? |
.pg_mutex dd ? |
} |
;struc LIB |
684,15 → 673,15 |
struc SRV |
{ |
.srv_name rb 16 ;ASCIIZ string |
.magic dd ? ;+0x10 ;'SRV ' |
.size dd ? ;+0x14 ;size of structure SRV |
.fd dd ? ;+0x18 ;next SRV descriptor |
.bk dd ? ;+0x1C ;prev SRV descriptor |
.base dd ? ;+0x20 ;service base address |
.entry dd ? ;+0x24 ;service START function |
.srv_proc dd ? ;+0x28 ;user mode service handler |
.srv_proc_ex dd ? ;+0x2C ;kernel mode service handler |
.srv_name rb 16 ;ASCIIZ string |
.magic dd ? ;+0x10 ;'SRV ' |
.size dd ? ;+0x14 ;size of structure SRV |
.fd dd ? ;+0x18 ;next SRV descriptor |
.bk dd ? ;+0x1C ;prev SRV descriptor |
.base dd ? ;+0x20 ;service base address |
.entry dd ? ;+0x24 ;service START function |
.srv_proc dd ? ;+0x28 ;user mode service handler |
.srv_proc_ex dd ? ;+0x2C ;kernel mode service handler |
.sizeof: |
} |
702,26 → 691,26 |
DRV_EXIT equ -1 |
struc COFF_HEADER |
{ .machine dw ? |
.nSections dw ? |
.DataTime dd ? |
.pSymTable dd ? |
.nSymbols dd ? |
.optHeader dw ? |
.flags dw ? |
{ .machine dw ? |
.nSections dw ? |
.DataTime dd ? |
.pSymTable dd ? |
.nSymbols dd ? |
.optHeader dw ? |
.flags dw ? |
}; |
struc COFF_SECTION |
{ .Name rb 8 |
{ .Name rb 8 |
.VirtualSize dd ? |
.VirtualAddress dd ? |
.SizeOfRawData dd ? |
.PtrRawData dd ? |
.PtrReloc dd ? |
.PtrRawData dd ? |
.PtrReloc dd ? |
.PtrLinenumbers dd ? |
.NumReloc dw ? |
.NumLinenum dw ? |
.NumReloc dw ? |
.NumLinenum dw ? |
.Characteristics dd ? |
} |
COFF_SECTION_SIZE equ 40 |
728,15 → 717,15 |
struc COFF_RELOC |
{ .VirtualAddress dd ? |
.SymIndex dd ? |
.Type dw ? |
.SymIndex dd ? |
.Type dw ? |
} |
struc COFF_SYM |
{ .Name rb 8 |
.Value dd ? |
{ .Name rb 8 |
.Value dd ? |
.SectionNumber dw ? |
.Type dw ? |
.Type dw ? |
.StorageClass db ? |
.NumAuxSymbols db ? |
} |
743,12 → 732,12 |
CSYM_SIZE equ 18 |
struc IOCTL |
{ .handle dd ? |
.io_code dd ? |
.input dd ? |
.inp_size dd ? |
.output dd ? |
.out_size dd ? |
{ .handle dd ? |
.io_code dd ? |
.input dd ? |
.inp_size dd ? |
.output dd ? |
.out_size dd ? |
} |
virtual at 0 |
/kernel/branches/Kolibri-A/trunk/core/syscall.inc |
---|
17,7 → 17,7 |
mov edx, esi |
mov esi, edi |
movzx edi, byte[esp+28 + 4] |
sub edi, 53 ; all zeroes before |
sub edi, 53 ; all zeroes before |
call dword [servetable+edi*4] |
ret |
67,7 → 67,7 |
dd 0 |
dd 0 |
dd 0 |
dd 0 ; 62-PCI functions |
dd 0 ; 62-PCI functions |
dd sys_msg_board ; 63-System message board |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
100,7 → 100,7 |
dd sys_setup ; 21-SetMidiBase,SetKeymap,SetShiftKeymap,. |
dd sys_settime ; 22-setting date,time,clock and alarm-clock |
dd sys_wait_event_timeout ; 23-TimeOutWaitForEvent |
dd undefined_syscall ; syscall_cdaudio ; 24-PlayCdTrack,StopCd and GetCdPlaylist |
dd undefined_syscall ; syscall_cdaudio ; 24-PlayCdTrack,StopCd and GetCdPlaylist |
dd undefined_syscall ; 25-reserved |
dd sys_getsetup ; 26-GetMidiBase,GetKeymap,GetShiftKeymap,. |
dd undefined_syscall ; 27-reserved |
155,8 → 155,8 |
align 4 |
servetable3: ; Kolibri-A special service |
dd sys_rdmsr ; 0 |
dd paleholder ; 1 |
dd sys_rdmsr ; 0 = read MSR |
dd sys_map1 ; 1 = map any page (test only) |
dd paleholder ; 2 |
dd sys_end ; last |
/kernel/branches/Kolibri-A/trunk/init.inc |
---|
18,8 → 18,8 |
; clear [0x280000..HEAP_BASE] |
xor eax,eax |
mov edi,0x280000 ; 0x280000 = ramdisk FAT ? |
mov ecx,(HEAP_BASE-OS_BASE-0x280000) / 4 |
mov edi, CLEAN_ZONE ; 0x280000 = ramdisk FAT ? |
mov ecx,(HEAP_BASE-OS_BASE-CLEAN_ZONE) / 4 |
cld |
rep stosd |
35,7 → 35,7 |
; save [0..0xffff] |
xor esi, esi |
mov edi,0x2F0000 ; low mem storage area |
mov edi,(BOOT_VAR-OS_BASE) ; low mem storage area |
mov ecx, 0x10000 / 4 |
rep movsd |
; clear [0x1000..0x0ffff] |
83,20 → 83,24 |
mov eax, PG_LARGE+PG_SW |
mov cr4, ebx |
dec [pg_data.kernel_tables-OS_BASE] |
sub [pg_data.kernel_pages -OS_BASE], 1024 ; 1 large page = 1024 ordinary pages |
mov [edx], eax ; map first (physical) 4M bytes |
add edx, 4 |
mov edi, [tmp_page_tabs] |
mov ecx, [pg_data.kernel_pages -OS_BASE] ; safety cleaning of already-zeroed space |
xor eax, eax |
rep stosd |
mov ecx, [pg_data.kernel_pages -OS_BASE] ; map the rest of kernel space |
mov eax, 0x00400000+PG_SW |
.map_kernel_pages: |
stosd |
add eax, 4096 |
dec ecx |
jnz .map_kernel_pages |
mov ecx, [pg_data.kernel_tables-OS_BASE] ; build some PDEs to hold empty PTEs |
mov eax, [tmp_page_tabs] |
or eax, PG_SW |
mov edi, edx ; edi = sys_pgdir+0x804 |
.map_kernel_tabs: |
stosd |
add eax, 0x1000 |
/kernel/branches/Kolibri-A/trunk/kernel.asm |
---|
55,7 → 55,7 |
;; on all copies. |
;; |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
include 'macros.inc' |
$Revision$ |
118,7 → 118,7 |
version db 'Kolibri OS version 0.7.7.0+ ',13,10,13,10,0 |
include "boot/bootstr.inc" ; language-independent boot messages |
;include "boot/bootstr.inc" ; language-independent boot messages |
include "boot/preboot.inc" |
include "boot/booteng.inc" ; english system boot messages |
219,7 → 219,7 |
call init_BIOS32 ; (init.inc - to be removed later) |
; PCIe extended config space access |
; call rs7xx_pcie_init ; (bus/HT.inc) |
; call rs7xx_pcie_init ; (bus/HT.inc) |
call fusion_pcie_init ; (bus/HT.inc) |
; MEMORY MODEL |
320,34 → 320,34 |
; ----------------------------------------- |
mov al, [BOOT_VAR+0x901F] ; DMA access |
mov [allow_dma_access], al |
mov eax, 32 ; bpp |
mov [ScreenBPP],al |
mov [_display.bpp], eax |
mov eax, 32 ; bpp |
mov [ScreenBPP],al |
mov [_display.bpp], eax |
mov [_display.vrefresh], 60 |
mov [_display.disable_mouse], __sys_disable_mouse |
mov [_display.vrefresh], 60 |
mov [_display.disable_mouse], __sys_disable_mouse |
movzx eax,word [BOOT_VAR+0x900A] ; X max |
mov [_display.width], eax |
dec eax |
mov [Screen_Max_X],eax |
mov [screen_workarea.right],eax |
movzx eax,word [BOOT_VAR+0x900C] ; Y max |
mov [_display.height], eax |
dec eax |
mov [Screen_Max_Y],eax |
mov [screen_workarea.bottom],eax |
movzx eax,word [BOOT_VAR+0x9008] ; screen mode |
mov [SCR_MODE],eax |
movzx eax,word [BOOT_VAR+0x900A] ; X max |
mov [_display.width], eax |
dec eax |
mov [Screen_Max_X],eax |
mov [screen_workarea.right],eax |
movzx eax,word [BOOT_VAR+0x900C] ; Y max |
mov [_display.height], eax |
dec eax |
mov [Screen_Max_Y],eax |
mov [screen_workarea.bottom],eax |
movzx eax,word [BOOT_VAR+0x9008] ; screen mode |
mov [SCR_MODE],eax |
movzx eax, word[BOOT_VAR+0x9001] ; for other modes |
mov [BytesPerScanLine],ax |
mov [_display.pitch], eax |
mov eax, [_display.width] |
mul [_display.height] |
mov [_WinMapSize], eax |
movzx eax, word[BOOT_VAR+0x9001] ; for other modes |
mov [BytesPerScanLine],ax |
mov [_display.pitch], eax |
mov eax, [_display.width] |
mul [_display.height] |
mov [_WinMapSize], eax |
mov esi, BOOT_VAR+0x9080 |
movzx ecx, byte [esi-1] |
mov [NumBiosDisks], ecx |
405,82 → 405,82 |
; LOAD IDT |
call build_interrupt_table ;lidt is executed |
call build_interrupt_table ;lidt is executed |
call init_kernel_heap |
stdcall kernel_alloc, RING0_STACK_SIZE+512 |
mov [os_stack_seg], eax |
call init_kernel_heap |
stdcall kernel_alloc, RING0_STACK_SIZE+512 |
mov [os_stack_seg], eax |
lea esp, [eax+RING0_STACK_SIZE] |
lea esp, [eax+RING0_STACK_SIZE] |
mov [tss._ss0], os_stack |
mov [tss._esp0], esp |
mov [tss._esp], esp |
mov [tss._cs],os_code |
mov [tss._ss],os_stack |
mov [tss._ds],app_data |
mov [tss._es],app_data |
mov [tss._fs],app_data |
mov [tss._gs],app_data |
mov [tss._io],128 |
mov [tss._ss0], os_stack |
mov [tss._esp0], esp |
mov [tss._esp], esp |
mov [tss._cs],os_code |
mov [tss._ss],os_stack |
mov [tss._ds],app_data |
mov [tss._es],app_data |
mov [tss._fs],app_data |
mov [tss._gs],app_data |
mov [tss._io],128 |
;Add IO access table - bit array of permitted ports |
mov edi, tss._io_map_0 |
xor eax, eax |
mov ecx, 2047 |
rep stosd ; access to 65504 ports granted |
not eax ; the last 32 ports blocked |
mov edi, tss._io_map_0 |
xor eax, eax |
mov ecx, 2047 |
rep stosd ; access to 65504 ports granted |
not eax ; the last 32 ports blocked |
stosd |
mov ax,tss0 |
ltr ax |
mov [LFBSize], 0x800000 |
mov [LFBSize], 0x800000 |
call init_LFB |
call init_fpu |
call init_malloc |
;- |
stdcall alloc_kernel_space, 0x51000 |
mov [default_io_map], eax |
mov [default_io_map], eax |
add eax, 0x2000 |
mov [ipc_tmp], eax |
mov ebx, 0x1000 |
add eax, 0x2000 |
mov [ipc_tmp], eax |
mov ebx, 0x1000 |
add eax, 0x40000 |
mov [proc_mem_map], eax |
add eax, 0x40000 |
mov [proc_mem_map], eax |
add eax, 0x8000 |
mov [proc_mem_pdir], eax |
add eax, 0x8000 |
mov [proc_mem_pdir], eax |
add eax, ebx |
mov [proc_mem_tab], eax |
add eax, ebx |
mov [proc_mem_tab], eax |
add eax, ebx |
mov [tmp_task_pdir], eax |
add eax, ebx |
mov [tmp_task_pdir], eax |
add eax, ebx |
mov [tmp_task_ptab], eax |
add eax, ebx |
mov [tmp_task_ptab], eax |
add eax, ebx |
mov [ipc_pdir], eax |
add eax, ebx |
mov [ipc_pdir], eax |
add eax, ebx |
mov [ipc_ptab], eax |
add eax, ebx |
mov [ipc_ptab], eax |
stdcall kernel_alloc, (unpack.LZMA_BASE_SIZE+(unpack.LZMA_LIT_SIZE shl \ |
(unpack.lc+unpack.lp)))*4 |
mov [unpack.p], eax |
mov [unpack.p], eax |
call init_events |
mov eax, srv.fd-SRV_FD_OFFSET |
mov [srv.fd], eax |
mov [srv.bk], eax |
mov eax, srv.fd-SRV_FD_OFFSET |
mov [srv.fd], eax |
mov [srv.bk], eax |
mov edi, irq_tab |
xor eax, eax |
mov ecx, 16 |
rep stosd |
mov edi, irq_tab |
xor eax, eax |
mov ecx, 16 |
rep stosd |
;Set base of graphic segment to linear address of LFB |
mov eax,[LFBAddress] ; set for gs |
488,11 → 488,11 |
shr eax,16 |
mov [graph_data_l+4],al |
mov [graph_data_l+7],ah |
; or [KERNEL_ALLOC_FLAG], dword PG_NOCACHE |
; or [KERNEL_ALLOC_FLAG], dword PG_NOCACHE |
stdcall kernel_alloc, [_WinMapSize] |
mov [_WinMapAddress], eax |
; xor [KERNEL_ALLOC_FLAG], dword PG_NOCACHE |
mov [_WinMapAddress], eax |
; xor [KERNEL_ALLOC_FLAG], dword PG_NOCACHE |
xor eax,eax |
inc eax |
544,11 → 544,11 |
out 0xA1, al |
; Enable interrupts in IDE controller |
mov al, 0 |
mov dx, 0x3F6 |
out dx, al |
mov dl, 0x76 |
out dx, al |
mov al, 0 |
mov dx, 0x3F6 |
out dx, al |
mov dl, 0x76 |
out dx, al |
;!!!!!!!!!!!!!!!!!!!!!!!!!! |
include 'detect/disks.inc' |
559,7 → 559,7 |
; READ RAMDISK IMAGE FROM HD |
;!!!!!!!!!!!!!!!!!!!!!!! |
include 'boot/rdload.inc' |
;include 'boot/rdload.inc' |
;!!!!!!!!!!!!!!!!!!!!!!! |
; mov [dma_hdd],1 |
; CALCULATE FAT CHAIN FOR RAMDISK |
626,8 → 626,8 |
mov esi,boot_bgr |
call boot_log |
call init_background ; |
call calculatebackground |
call init_background ; |
call calculatebackground |
; SET UP OS TASK |
654,7 → 654,7 |
mov ecx, 512/4 |
cld |
rep movsd |
mov dword [SLOT_BASE+256+APPDATA.exc_handler], eax |
mov dword [SLOT_BASE+256+APPDATA.except_mask], eax |
726,9 → 726,9 |
mov esi,boot_setmouse |
call boot_log |
; call setmouse |
; call setmouse |
; mov [MOUSE_PICTURE],dword mousepointer |
cli |
cli |
; STACK AND FDC |
752,11 → 752,6 |
stdcall map_page,tss._io_map_1,\ |
[SLOT_BASE+256+APPDATA.io_map+4], PG_MAP |
mov ax,[OS_BASE+0x10000+bx_from_load] |
cmp ax,'r1' ; if not rused ram disk - load network configuration from files {SPraid.simba} |
je no_st_network |
call set_network_conf |
no_st_network: |
call init_userDMA ; <<<<<<<<< ============== core/memory.inc ================= |
mov esi, boot_uDMA_ok |
2515,8 → 2510,8 |
stosb |
; Event mask (+71) |
mov EAX, dword [ECX+CURRENT_TASK+TASKDATA.event_mask] |
stosd |
mov EAX, dword [ECX+CURRENT_TASK+TASKDATA.event_mask] |
stosd |
pop esi |
pop edi |
2891,7 → 2886,7 |
pushad |
push eax |
xor ecx,ecx ; redraw flags for apps |
xor ecx,ecx ; redraw flags for apps |
newdw2: |
inc ecx |
3236,34 → 3231,34 |
.exit: |
ret |
@@: |
push edi |
push edi |
mov edi,[current_slot] |
add dx,word[edi+APPDATA.wnd_clientbox.top] |
rol edx,16 |
add dx,word[edi+APPDATA.wnd_clientbox.left] |
pop edi |
pop edi |
rol edx,16 |
.forced: ; called from gui/skincode.inc [215] |
.forced: ; called from gui/skincode.inc [215] |
push esi |
mov esi, ecx |
shr esi, 16 ; SizeX |
lea esi, [esi*2+esi] ; 3 bytes per pixel |
mov [img_buf_line_size], esi |
mov [img_draw_core_fn], draw_core_24bpp |
mov [img_draw_edge_fn], draw_edge_24bpp |
mov [img_bytes_per_pix], 3 |
pop esi |
mov esi, ecx |
shr esi, 16 ; SizeX |
lea esi, [esi*2+esi] ; 3 bytes per pixel |
mov [img_buf_line_size], esi |
mov [img_draw_core_fn], draw_core_24bpp |
mov [img_draw_edge_fn], draw_edge_24bpp |
mov [img_bytes_per_pix], 3 |
pop esi |
sys_putimage_bpp: ; only called from sys_putimage_palette |
sys_putimage_bpp: ; only called from sys_putimage_palette |
inc [mouse_pause] |
call _putimage |
call _putimage |
dec [mouse_pause] |
call [draw_pointer] |
ret |
ret |
align 4 |
sys_putimage_palette: ; sysFn 65 |
sys_putimage_palette: ; sysFn 65 |
; ebx = pointer to image |
; ecx = [xsize]*65536 + [ysize] |
; edx = [xstart]*65536 + [ystart] |
3277,52 → 3272,52 |
add dx, word [eax+SLOT_BASE+APPDATA.wnd_clientbox.left] |
rol edx, 16 |
.forced: |
push eax |
push esi |
mov [img_palette], edi |
mov eax, esi |
cmp eax, 32 ;>32bpp (stupid call) |
ja .exit |
shr al, 3 ; 0=1bpp or solid color |
mov [img_bytes_per_pix], eax |
mov esi, [eax*4 + img_core_proc_0] |
mov [img_draw_core_fn], esi |
mov esi, [eax*4 + img_edge_proc_0] |
mov [img_draw_edge_fn], esi |
mov esi, ecx |
shr esi, 16 ; esi = SizeX |
push eax |
push esi |
mov [img_palette], edi |
mov eax, esi |
cmp eax, 32 ;>32bpp (stupid call) |
ja .exit |
shr al, 3 ; 0=1bpp or solid color |
mov [img_bytes_per_pix], eax |
mov esi, [eax*4 + img_core_proc_0] |
mov [img_draw_core_fn], esi |
mov esi, [eax*4 + img_edge_proc_0] |
mov [img_draw_edge_fn], esi |
mov esi, ecx |
shr esi, 16 ; esi = SizeX |
imul esi, eax |
or al, al |
jnz .done |
mov eax, [esp] ; bits per pixel |
or al, al |
jz .done |
or al, al |
jnz .done |
mov eax, [esp] ; bits per pixel |
or al, al |
jz .done |
.1bpp: |
add esi, 7 |
shr esi, 3 ; 8 pixels per byte |
mov [img_draw_edge_fn], draw_edge_1bpp |
mov [img_draw_core_fn], draw_core_1bpp |
shr esi, 3 ; 8 pixels per byte |
mov [img_draw_edge_fn], draw_edge_1bpp |
mov [img_draw_core_fn], draw_core_1bpp |
.done: |
add esi, ebp ; + line offset |
mov [img_buf_line_size], esi |
pop esi |
pop eax |
add esi, ebp ; + line offset |
mov [img_buf_line_size], esi |
pop esi |
pop eax |
jmp sys_putimage_bpp |
.exit: |
ret |
ret |
align 4 |
img_core_proc_0 dd draw_core_0bpp |
img_core_proc_1 dd draw_core_8bpp |
img_core_proc_2 dd draw_core_16bpp |
img_core_proc_3 dd draw_core_24bpp |
img_core_proc_4 dd draw_core_32bpp |
img_core_proc_0 dd draw_core_0bpp |
img_core_proc_1 dd draw_core_8bpp |
img_core_proc_2 dd draw_core_16bpp |
img_core_proc_3 dd draw_core_24bpp |
img_core_proc_4 dd draw_core_32bpp |
img_edge_proc_0 dd draw_edge_0bpp |
img_edge_proc_1 dd draw_edge_8bpp |
img_edge_proc_2 dd draw_edge_16bpp |
img_edge_proc_3 dd draw_edge_24bpp |
img_edge_proc_4 dd draw_edge_32bpp |
img_edge_proc_0 dd draw_edge_0bpp |
img_edge_proc_1 dd draw_edge_8bpp |
img_edge_proc_2 dd draw_edge_16bpp |
img_edge_proc_3 dd draw_edge_24bpp |
img_edge_proc_4 dd draw_edge_32bpp |
end if |
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< |
4150,7 → 4145,7 |
div ecx |
mov ebx, edx |
xchg eax, ebx |
call get_pixel ; eax - x, ebx - y |
call get_pixel ; eax - x, ebx - y |
mov [esp + 32], ecx |
ret |
/kernel/branches/Kolibri-A/trunk/memmap.inc |
---|
64,78 → 64,80 |
; 3c dword cpu usage in cpu timer tics |
; |
; |
; 5000 -> 68FF free (6k6) |
; 6900 -> 6EFF saved picture under mouse pointer (1k5) |
; 5000 -> 73FF << FLOPPY buffer (9k) - fs/fat12.inc |
; 7400 -> 78ff << IDT for int_0x00..int_0x40 + reserv |
; 7900 -> 7EFF << saved picture under mouse pointer (1k5) |
; |
; 6F00 -> 6FFF free (256) |
; 7F00 -> 7FFF << SB16_Status (256) |
; |
; 7000 -> 7FFF unused? CD driver (4k) |
; |
; 8000 -> A3FF used? FLOPPY driver (4k) |
; |
; A400 -> B0FF free (3k3), unused ACTIVE_PROC_STACK |
; XX 8000 -> BFFF free (16k) XX |
; 0x80008000 -> 9FFF ramdisk fat (8k) |
; 0x8000A000 -> BFFF floppy fat (8k) |
; B100 -> B307 IDT for int_0x00..int_0x40 |
; B308 -> BFFF free (3k3) |
; C000 -> C3FF window stack C000 no of windows - all in words |
; C402 -> C7FF window position in stack |
; D000 -> D1FF FDC controller |
; D200 -> D3FF FDC controller for Fat12 |
; D400 -> DFFF free (3k) |
; E000 byte multitasking started |
; E020 dword putpixel address |
; E024 dword getpixel address |
; E030 dword Vesa 1.2 pm bank switch address |
; E034 -> F1FF free (4k5) |
; F200 dword mousepicture -pointer |
; F204 dword mouse appearance counter |
; F208 -> F2FF free (248) |
; F300 dword x & y temp for windowmove |
; F304 -> F3FF free (252) |
; F400 byte no of keys in buffer |
; F401 byte 'buffer' |
; F402 -> F4FF reserved for keys |
; F500 byte no of buttons in buffer |
; F501 dword 'buffer' |
; F502 -> F5FF reserved for buttons |
; F600 dword tsc / second |
; F604 byte (unused?) mouse port: 1 ps2, 2 com1, 3 com2 |
; F605 -> FAFF free (1k2) |
; FB00 -> FB0F mouse memory 00 chunk count, that includes: |
; FB08 word -- mouse H-scroll |
; FB0A word -- mouse x |
; FB0C word -- mouse y |
; FB0E word -- mouse V-scroll |
; FB10 -> FB17 mouse color mem |
; FB21 x move |
; FB22 y move |
; FB28 high bits temp |
; FB30 color temp |
; FB40 byte buttons down |
; FB44 byte 0 mouse down -> do not draw |
; FB4A -> FB4D FB4A-B x-under - FB4C-D y-under |
; FBF1 byte bits per pixel |
; E000 -> F9FF free (6k5) |
; FA00 byte no of keys in buffer |
; FA01 byte 'buffer' |
; FA02 -> FAFF reserved for keys |
; FB00 byte no of buttons in buffer |
; FB01 dword 'buffer' |
; FB02 -> FBFF reserved for buttons |
; FC00 -> FCFE com1/ps2 buffer |
; FCFF com1/ps2 buffer count starting from FC00 |
; FD00 -> FDFF free (256) |
; FE00 dword screen x size |
; FE04 dword screen y size |
; FE08 dword screen y multiplier |
; FE0C dword screen mode |
; FE10 -> FE73 free (100) |
; FE74 dword PCIe extended (memory-mappable) config space - physical address |
; FE78 dword PCIe extended config space limit |
; FE7C word number of 4M-pages needed to map PCIe config space |
; FE7E word PCIe bus range (power-ow-two Mbytes) |
; FE80 dword physical address of user-accessible static system buffer |
; FE84 dword physical address of LFB |
; FE88 dword address of button list |
; FE8C dword memory to use |
; FE90 -> FEFF free (112) |
; FE00 -> FE0F mouse memory 00 chunk count, that includes: |
; FE08 word -- mouse H-scroll |
; FE0A word -- mouse x |
; FE0C word -- mouse y |
; FE0E word -- mouse V-scroll |
; FE10 -> FB17 mouse color mem |
; FE21 x move |
; FE22 y move |
; FE28 high bits temp |
; FE30 color temp |
; FE40 byte buttons down |
; FE44 byte 0 mouse down -> do not draw |
; FE4A -> FE4D FE4A-B x-under - FE4C-D y-under |
; FEB8 dword putpixel address |
; FEBC dword getpixel address |
; FEC1 byte bits per pixel |
; FEC4 dword mouse appearance counter |
; FEC8 dword x & y temp for windowmove |
; FECC dword tsc / second |
; FED0 dword screen x size |
; FED4 dword screen y size |
; FED8 dword screen y multiplier |
; FEDC dword screen mode |
; FEE4 dword PCIe extended (memory-mappable) config space - physical address |
; FEE8 dword PCIe extended config space limit |
; FEEC word number of 4M-pages needed to map PCIe config space |
; FEEE word PCIe bus range (power-ow-two Mbytes) |
; FEF0 dword physical address of user-accessible static system buffer |
; FEF4 dword physical address of LFB |
; FEF8 dword address of button list |
; FEFC dword memory to use |
; FF00 byte 1 = system shutdown request |
; FF01 byte task activation request? |
; FFE4 -> FFEF background info |
; FFF0 byte >0 if redraw background request from app |
; FFF1 byte >0 if background changed |
; FFF2 write and read bank in screen |
143,17 → 145,17 |
; FFF5 byte 1 do not draw pointer |
; FFFF byte do not change task for 1/100 sec. |
; |
; 0x80010000 -> 6CBFF kernel, 32-bit run-time code (up to 371 Kb) |
; 0x80010000 -> 6CBFF the kernel (up to 371 Kb) |
; in the current version: |
; -> 00B3C 16-bit code end |
; -> 00C40 16-bit data end |
; -> 10C40 32-bit code start |
; -> 2D07E 32-bit code end |
; -> 30418..end_of_kernel zero-filled zone after preinit_mem |
; -> 33D63 uninitialized globals start |
; -> 3BF52 end_of_kernel |
; -> 3C000 not used (>200k) |
; 0x80050000 -> 090000 zero-filled zone after preinit_mem |
; -> 2D07E 32-bit code end |
; -> 30418..end_of_kernel zero-filled zone after preinit_mem |
; -> 33D63 uninitialized globals start |
; -> 3BF52 end_of_kernel |
; -> 3C000 not used (>200k) |
; 0x80050000 -> 090000 zero-filled zone after preinit_mem |
; 0x8006CC00 -> 6DBFF stack at boot time (4Kb) |
; |
; 0x8006DC00 -> 6E5FF basic text font II |
203,23 → 205,29 |
; BC dword address of debug event memory |
; C0 5 dd thread debug registers: DR0,DR1,DR2,DR3,DR7 |
; |
; 0x80090000 -> 9FFFF tmp (64k) - unused? |
; 0x800A0000 -> AFFFF screen access area |
; 0x800B0000 -> FFFFF bios rest in peace -area (320k) ? |
; 0x80100000 -> 27FFFF diskette image (1m5) |
; 0x80090000 -> 9FFFF wav device buffer (64k) ; << SB16Buffer |
; 0x800A0000 -> AFFFF screen access area << VGA legacy buffer |
; 0x800B0000 -> FFFFF bios rest in peace -area (320k), << purpose unknown |
; 0x80100000 -> 283FFF diskette image (1m5) |
; 0x80280000 -> HEAP_BASE zero-filled zone after preinit_mem |
; 0x80280000 -> 281FFF ramdisk fat (8k) |
; 0x80282000 -> 283FFF floppy fat (8k) |
; 0x80284000 -> HEAP_BASE zero-filled zone after preinit_mem |
; |
; 0x80284000 -> 28BFFF HDD DMA AREA (32k) |
; 0x80284000 -> 28BFFF HDD DMA AREA (32k) |
; 0x8028C000 -> 297FFF free (48k) |
; |
; 0x80298000 -> 29ffff auxiliary table for background smoothing code (32k) |
; |
; 0x802A0000 -> 2B00ff wav device buffer (64k) |
; 0x802A0000 -> 2B00ff wav device status (256) |
; 0x802B0100 -> 2Bffff free (63k8) |
; 0x802A0000 -> 2Bffff free (128k) |
; 0x80328000 -> 32FFFF !vrr driver (32k) |
; 0x80338000 -> 338FFF draw data - 256 entries (4k) |
; 00 dword draw limit - x start |
; 04 dword draw limit - y start |
; 08 dword draw limit - x end |
; 0C dword draw limit - y end |
; 0x80339000 -> 3BFFF3 free (12k) |
; 0x802C0000 -> 2C3fff button info (8k) |
; |
; 0000 word number of buttons |
242,30 → 250,21 |
; dword end port |
; dword 0 |
; |
; 0x802E0000 -> 2EFFFF irq data area (64k) |
; 0x802F0000 -> 2FFFFF low memory save (64k) |
; 0x80370000 -> 37FFFF irq data area (64k) |
; 0x80380000 -> 38FFFF low memory save (64k) |
; |
; 0x80300000 -> 31FFFF tcp memory (128k) |
; 0x80320000 -> 327FFF tcp memory (32k) |
; |
; 0x80328000 -> 32FFFF !vrr driver (32k) |
; 0x80390000 -> 3AFFFF tcp memory (128k) |
; 0x803B0000 -> 3B7FFF tcp memory (32k) |
; 0x80330000 -> 377FFF skin data (32k) |
; 0x803B8000 -> 3BFFFF skin data (32k) |
; 0x80338000 -> 338FFF draw data - 256 entries (4k) |
; 00 dword draw limit - x start |
; 04 dword draw limit - y start |
; 08 dword draw limit - x end |
; 0C dword draw limit - y end |
; 0x80339000 -> 3BFFF3 free (12k) |
; 0x8033BFF4 -> 33BFFF background info |
; 0x8033C000 page map (length b = memsize shr 15) |
; 0x8033C000 + b start of static pagetables |
; 0x803C0000 page map (length b = memsize shr 15) |
; 0x803C0000 + b start of static pagetables |
; 0x803FFFFF <- no direct address translation beyond this point |
; ============================================================= |
; ============================================================= |
; 0x805FF000 -> 5FFF80 TSS |
; 0x805FF000 -> 5FFF80 TSS |
; 0x80600000 -> 601FFF i/o maps |
; 0x80800000 -> kernel heap |
/kernel/trunk/const.inc |
---|
286,6 → 286,7 |
RAMDISK_FAT equ (OS_BASE+0x0280000) |
FLOPPY_FAT equ (OS_BASE+0x0282000) |
CLEAN_ZONE equ 0x284000 |
IDE_DMA equ 0x284000 |
BgrAuxTable equ (OS_BASE+0x0298000) |
311,8 → 312,10 |
BgrDataWidth equ (OS_BASE+0x033BFF8) |
BgrDataHeight equ (OS_BASE+0x033BFFC) |
sys_pgmap equ (OS_BASE+0x033C000) |
BOOT_VAR equ (OS_BASE+0x0340000) |
sys_pgmap equ (OS_BASE+0x0350000) |
UPPER_KERNEL_PAGES equ (OS_BASE+0x0400000) |
virtual at (OS_BASE+0x05FFF80) |
/kernel/trunk/kernel.asm |
---|
1,6 → 1,6 |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;; |
;; Copyright (C) KolibriOS team 2004-2010. All rights reserved. |
;; Copyright (C) KolibriOS team 2004-2011. All rights reserved. |
;; PROGRAMMING: |
;; Ivan Poddubny |
;; Marat Zakiyanov (Mario79) |
19,6 → 19,17 |
;; SPraid (simba) |
;; Hidnplayr |
;; Alexey Teplov (<Lrz>) |
;; Rus |
;; Nable |
;; shurf |
;; Alver |
;; Maxis |
;; Galkov |
;; CleverMouse |
;; tsdima |
;; turbanoff |
;; Asper |
;; art_zh |
;; |
;; Data in this file was originally part of MenuetOS project which is |
;; distributed under the terms of GNU GPL. It is modified and redistributed as |
220,8 → 231,8 |
; CLEAR 0x280000 - HEAP_BASE |
xor eax,eax |
mov edi,0x280000 |
mov ecx,(HEAP_BASE-OS_BASE-0x280000) / 4 |
mov edi,CLEAN_ZONE |
mov ecx,(HEAP_BASE-OS_BASE-CLEAN_ZONE) / 4 |
cld |
rep stosd |
237,7 → 248,7 |
; SAVE & CLEAR 0-0xffff |
xor esi, esi |
mov edi,0x2F0000 |
mov edi,(BOOT_VAR-OS_BASE) |
mov ecx,0x10000 / 4 |
rep movsd |
mov edi,0x1000 |