;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;                                                              ;;
;; Copyright (C) KolibriOS team 2004-2009. All rights reserved. ;;
;; Distributed under terms of the GNU General Public License    ;;
;;                                                              ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

$Revision$


keymap:

     db   '6',27
     db   '1234567890-=',8,9
     db   'qwertyuiop[]',13
     db   '~asdfghjkl;',39,96,0,'\zxcvbnm,./',0,'45 '
     db   '@234567890123',180,178,184,'6',176,'7'
     db   179,'8',181,177,183,185,182
     db   'AB<D',255,'FGHIJKLMNOPQRSTUVWXYZ'
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

keymap_shift:
     db   '6',27
     db   '!@#$%^&*()_+',8,9
     db   'QWERTYUIOP{}',13
     db   '~ASDFGHJKL:"~',0,'|ZXCVBNM<>?',0,'45 '
     db   '@234567890123',180,178,184,'6',176,'7'
     db   179,'8',181,177,183,185,182
     db   'AB>D',255,'FGHIJKLMNOPQRSTUVWXYZ'
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'


keymap_alt:
     db   ' ',27
     db   ' @ $  {[]}\ ',8,9
     db   '            ',13
     db   '             ',0,'           ',0,'4',0,' '
     db   '             ',180,178,184,'6',176,'7'
     db   179,'8',181,177,183,185,182
     db   'ABCD',255,'FGHIJKLMNOPQRSTUVWXYZ'
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'



if lang eq ru
  boot_fonts        db   '����� ����㦥��',0
  boot_memdetect    db   '������⢮ ����⨢��� �����','     ',' ��',0
  boot_tss          db   '��⠭���� TSSs',0
  boot_cpuid        db   '�⥭�� CPUIDs',0
  boot_devices      db   '���� ���ன��',0
  boot_timer        db   '��⠭���� ⠩���',0
  boot_irqs         db   '��८�।������ IRQ',0
  boot_setmouse     db   '��⠭���� ���',0
  boot_windefs      db   '��⠭���� ����஥� ���� �� 㬮�砭��',0
  boot_bgr          db   '��⠭���� 䮭�',0
  boot_resirqports  db   '����ࢨ஢���� IRQ � ���⮢',0
  boot_setrports    db   '��⠭���� ���ᮢ IRQ',0
  boot_setostask    db   '�������� ����� ��',0
  boot_allirqs      db   '����⨥ ��� IRQ',0
  boot_tsc          db   '�⥭�� TSC',0
  boot_cpufreq      db   '����� ������ ','    ',' ���',0
  boot_pal_ega      db   '��⠭���� EGA/CGA 320x200 �������',0
  boot_pal_vga      db   '��⠭���� VGA 640x480 �������',0
  boot_failed       db   '����㧪� ��ࢮ�� �ਫ������ �� 㤠����',0
  boot_mtrr         db   '��⠭���� MTRR',0
if preboot_blogesc
  boot_tasking      db   '�� ��⮢� ��� ����᪠, ������� ESC ��� ����',0
end if
else
  boot_fonts        db   'Fonts loaded',0
  boot_memdetect    db   'Determining amount of memory',0
  boot_tss          db   'Setting TSSs',0
  boot_cpuid        db   'Reading CPUIDs',0
  boot_devices      db   'Detecting devices',0
  boot_timer        db   'Setting timer',0
  boot_irqs         db   'Reprogramming IRQs',0
  boot_setmouse     db   'Setting mouse',0
  boot_windefs      db   'Setting window defaults',0
  boot_bgr          db   'Calculating background',0
  boot_resirqports  db   'Reserving IRQs & ports',0
  boot_setrports    db   'Setting addresses for IRQs',0
  boot_setostask    db   'Setting OS task',0
  boot_allirqs      db   'Unmasking all IRQs',0
  boot_tsc          db   'Reading TSC',0
  boot_cpufreq      db   'CPU frequency is ','    ',' MHz',0
  boot_pal_ega      db   'Setting EGA/CGA 320x200 palette',0
  boot_pal_vga      db   'Setting VGA 640x480 palette',0
  boot_failed       db   'Failed to start first app',0
  boot_mtrr         db   'Setting MTRR',0
if preboot_blogesc
  boot_tasking      db   'All set - press ESC to start',0
end if
end if

  boot_APIC_found   db	 'APIC enabled', 0
  boot_APIC_nfound  db	 'APIC not found', 0

;new_process_loading db 'K : New Process - loading',13,10,0
;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

msg_unresolved db 'unresolved ',0
msg_module     db 'in module ',0
msg_version    db 'incompatible driver version',13,10,0
msg_www        db 'please visit www.kolibrios.org',13,10,0
msg_CR         db  13,10,0
aSis           db 'SIS',0

intel_str      db "GenuineIntel",0
AMD_str        db "AuthenticAMD",0

;szSound        db 'SOUND',0
;szInfinity     db 'INFINITY',0
szHwMouse       db 'ATI2D',0
szPS2MDriver    db 'PS2MOUSE',0
;szCOM_MDriver   db 'COM_MOUSE',0
szUSB           db 'USB',0
szAtiHW         db '/rd/1/drivers/ati2d.drv',0

szSTART        db 'START',0
szEXPORTS      db 'EXPORTS',0
sz_EXPORTS     db '_EXPORTS',0

szIMPORTS      db 'IMPORTS',0

read_firstapp  db '/sys/'
firstapp       db  'LAUNCHER',0
notifyapp      db '@notify',0
if lang eq ru
ud_user_message db '�訡��: �������ন������ �������� ������',0
else
ud_user_message db 'Error: unsupported processor instruction',0
end if

char    db '/sys/FONTS/CHAR.MT',0
char2   db '/sys/FONTS/CHAR2.MT',0

bootpath       db  '/KOLIBRI    '
bootpath2      db  0
vmode          db  '/sys/drivers/VMODE.MDR',0
vrr_m          db  'VRR_M',0
kernel_file    db  'KERNEL  MNT'


align 4

shmem_list:
 .bk           dd shmem_list
 .fd           dd shmem_list

dll_list:
 .bk           dd dll_list
 .fd           dd dll_list

MAX_DEFAULT_DLL_ADDR = 0x20000000
MIN_DEFAULT_DLL_ADDR = 0x10000000
dll_cur_addr   dd MIN_DEFAULT_DLL_ADDR

; supported videomodes


; mike.dld {
db 0
dd servetable-0x10000
draw_line       dd __sys_draw_line
draw_pointer    dd __sys_draw_pointer
;//mike.dld, 2006-08-02 [
;drawbar         dd __sys_drawbar
drawbar         dd __sys_drawbar.forced
;//mike.dld, 2006-08-02 ]
putpixel        dd __sys_putpixel
; } mike.dld


align 4
keyboard   dd 1
syslang    dd 1

boot_y     dd 10

pci_bios_entry  dd 0
                dw pci_code_sel

if __DEBUG__ eq 1
  include_debug_strings
end if

IncludeIGlobals

align 16
gdts:

        dw     gdte-$-1
        dd     gdts
        dw     0

; Attention! Do not change the order of the first four selectors. They are used in Fast System Call
; must be : os_code, os_data, app_code, app_data, ....

int_code_l:
os_code_l:
        dw     0xffff
        dw     0x0000
        db     0x00
        dw     11011111b *256 +10011010b
        db     0x00

int_data_l:
os_data_l:
        dw     0xffff
        dw     0x0000
        db     0x00
        dw     11011111b *256 +10010010b
        db     0x00

app_code_l:
        dw 0xFFFF
        dw 0
        db 0
        db cpl3
        dw G32+D32+0xF;

app_data_l:
        dw 0xFFFF
        dw 0
        db 0
        db drw3
        dw G32+D32+0xF;

; ------------- PCI BIOS ------------------

pci_code_32:
        dw 0         ;lim  0-15
        dw 0         ;base 0-15
        db 0         ;base 16-23
        db cpl0      ;type
        db D32       ;lim 16-19+props
        db 0         ;base 24-31

pci_data_32:
        dw 0         ;lim  0-15
        dw 0         ;base 0-15
        db 0         ;base 16-23
        db dpl0      ;type
        db D32       ;lim 16-19+props
        db 0         ;base 24-31

; --------------- APM ---------------------
apm_code_32:
        dw     0x0f        ; limit 64kb
        db     0, 0, 0
        dw     11010000b *256 +10011010b
        db     0x00
apm_code_16:
        dw     0x0f
        db     0, 0, 0
        dw     10010000b *256 +10011010b
        db     0x00
apm_data_16:
        dw     0x0f
        db     0, 0, 0
        dw     10010000b *256 +10010010b
        db     0x00
; -----------------------------------------

graph_data_l:

        dw     0x7ff
        dw     0x0000
        db     0x00
        dw     11010000b *256 +11110010b
        db     0x00
tss0_l:
        dw     TSS_SIZE-1
        dw     tss and 0xFFFF
        db     (tss shr 16) and 0xFF
        db     10001001b
        dw     (tss shr 16) and 0xFF00

tls_data_l:
        dw 0x0FFF
        dw 0
        db 0
        db drw3
        dw D32

endofcode:
gdte:

align 16
cur_saved_data    rb 4096
fpu_data:         rb 512

mem_block_list    rd 64*2
mem_used_list     rd 64*2
mem_hash_cnt      rd 64

heap_mutex        MUTEX
heap_size         rd 1
heap_free         rd 1
heap_blocks       rd 1
free_blocks       rd 1

mem_block_mask    rd 2
next_memblock     rd 1


mst MEM_STATE

page_start        rd 1
page_end          rd 1
sys_page_map      rd 1
os_stack_seg      rd 1


srv.fd            rd 1
srv.bk            rd 1


align 16

_display          display_t

_WinMapAddress    rd 1
_WinMapSize       rd 1

def_cursor        rd 1
current_cursor    rd 1
hw_cursor         rd 1
cur_saved_base    rd 1

cur.lock          rd 1   ;1 - lock update, 2- hide
cur.left          rd 1   ;cursor clip box
cur.top           rd 1
cur.right         rd 1
cur.bottom        rd 1
cur.w             rd 1
cur.h             rd 1

ipc_tmp           rd 1
ipc_pdir          rd 1
ipc_ptab          rd 1

proc_mem_map      rd 1
proc_mem_pdir     rd 1
proc_mem_tab      rd 1

tmp_task_pdir     rd 1
tmp_task_ptab     rd 1

default_io_map    rd 1

LFBSize           rd 1

stall_mcs         rd 1
current_slot      rd 1

; status
hd1_status                  rd 1  ; 0 - free : other - pid
application_table_status    rd 1  ; 0 - free : other - pid

; device addresses
mididp            rd 1
midisp            rd 1

cdbase            rd 1
cdid              rd 1

hdbase            rd 1    ; for boot 0x1f0
hdid              rd 1
hdpos             rd 1    ; for boot 0x1
label   known_part dword
fat32part         rd 1    ; for boot 0x1
cdpos             rd 1

;CPUID information
cpu_vendor        rd 3
cpu_sign          rd 1
cpu_info          rd 1
cpu_caps          rd 4


pg_data           PG_DATA
heap_test         rd 1

buttontype        rd 1
windowtypechanged rd 1

hd_entries        rd 1     ;unused ? 0xfe10

;* start code - Mario79

mouse_active          rd 1
mouse_pause           rd 1
MouseTickCounter      rd 1

;* end code - Mario79

img_background        rd 1
mem_BACKGROUND        rd 1
static_background_data rd 1

cache_ide0:
cache_ide0_pointer            rd 1
cache_ide0_size               rd 1   ; not use
cache_ide0_data_pointer       rd 1
cache_ide0_system_data_size   rd 1   ; not use
cache_ide0_appl_data_size     rd 1   ; not use
cache_ide0_system_data        rd 1
cache_ide0_appl_data          rd 1
cache_ide0_system_sad_size    rd 1
cache_ide0_appl_sad_size      rd 1
cache_ide0_search_start       rd 1
cache_ide0_appl_search_start  rd 1

cache_ide1:
cache_ide1_pointer            rd 1
cache_ide1_size               rd 1   ; not use
cache_ide1_data_pointer       rd 1
cache_ide1_system_data_size   rd 1   ; not use
cache_ide1_appl_data_size     rd 1   ; not use
cache_ide1_system_data        rd 1
cache_ide1_appl_data          rd 1
cache_ide1_system_sad_size    rd 1
cache_ide1_appl_sad_size      rd 1
cache_ide1_search_start       rd 1
cache_ide1_appl_search_start  rd 1

cache_ide2:
cache_ide2_pointer            rd 1
cache_ide2_size               rd 1   ; not use
cache_ide2_data_pointer       rd 1
cache_ide2_system_data_size   rd 1   ; not use
cache_ide2_appl_data_size     rd 1   ; not use
cache_ide2_system_data        rd 1
cache_ide2_appl_data          rd 1
cache_ide2_system_sad_size    rd 1
cache_ide2_appl_sad_size      rd 1
cache_ide2_search_start       rd 1
cache_ide2_appl_search_start  rd 1

cache_ide3:
cache_ide3_pointer            rd 1
cache_ide3_size               rd 1   ; not use
cache_ide3_data_pointer       rd 1
cache_ide3_system_data_size   rd 1   ; not use
cache_ide3_appl_data_size     rd 1   ; not use
cache_ide3_system_data        rd 1
cache_ide3_appl_data          rd 1
cache_ide3_system_sad_size    rd 1
cache_ide3_appl_sad_size      rd 1
cache_ide3_search_start       rd 1
cache_ide3_appl_search_start  rd 1

debug_step_pointer rd 1
hdd_appl_data rb 1 ; 0 = system cache, 1 - application cache
cd_appl_data rb 1 ; 0 = system cache, 1 - application cache

lba_read_enabled      rd 1  ; 0 = disabled , 1 = enabled
pci_access_enabled    rd 1  ; 0 = disabled , 1 = enabled
timer_ticks_enable rb 1         ; for cd driver

NumBiosDisks    rd 1
BiosDisksData   rb 200h
BiosDiskCaches  rb 80h*(cache_ide1-cache_ide0)
BiosDiskPartitions rd 80h

IncludeUGlobals