;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;                                                              ;;
;; Copyright (C) KolibriOS team 2004-2012. 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_initirq      db   '���樠������ IRQ',0
  boot_picinit      db   '���樠������ PIC',0
  boot_v86machine   db   '���樠������ ��⥬� V86 ��設�',0
  boot_inittimer    db   '���樠������ ��⥬���� ⠩��� (IRQ0)',0
  boot_initapic     db   '����⪠ ���樠����樨 APIC',0
  boot_enableirq    db   '������� ���뢠��� 2, 6, 13, 14, 15',0
  boot_enablint_ide db   '����襭�� ���뢠��� � ����஫��� IDE',0
  boot_detectfloppy db   '���� floppy ��᪮�����',0
  boot_detecthdcd   db   '���� ���⪨� ��᪮� � ATAPI �ਢ����',0
  boot_getcache     db   '����祭�� ����� ��� ���',0
  boot_detectpart   db   '���� ࠧ����� �� ��᪮��� ���ன�⢠�',0
  boot_init_sys     db   '���樠������ ��⥬���� ��⠫��� /sys',0
  boot_loadlibs     db   '����㧪� ������⥪ (.obj)',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
  
  boot_APIC_found   db   'APIC ����祭', 0
  boot_APIC_nfound  db   'APIC �� ������', 0
if preboot_blogesc
  boot_tasking      db   '�� ��⮢� ��� ����᪠, ������� ESC ��� ����',0
end if
else
  boot_initirq      db   'Initialize IRQ',0
  boot_picinit      db   'Initialize PIC',0
  boot_v86machine   db   'Initialize system V86 machine',0
  boot_inittimer    db   'Initialize system timer (IRQ0)',0
  boot_initapic     db   'Try to initialize APIC',0
  boot_enableirq    db   'Enable interrupts 2, 6, 13, 14, 15',0
  boot_enablint_ide db   'Enable interrupts in IDE controller',0
  boot_detectfloppy db   'Search floppy drives',0
  boot_detecthdcd   db   'Search hard drives and ATAPI drives',0
  boot_getcache     db   'Get memory for cache',0
  boot_detectpart   db   'Search partitions on disk devices',0
  boot_init_sys     db   'Initialize system directory /sys',0
  boot_loadlibs     db   'Loading librares (.obj)',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_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_setostask    db   'Setting OS task',0
  boot_allirqs      db   'Unmasking 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
  
  boot_APIC_found   db   'APIC enabled', 0
  boot_APIC_nfound  db   'APIC not found', 0
if preboot_blogesc
  boot_tasking      db   'All set - press ESC to start',0
end if
end if

;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

intel_str      db "GenuineIntel",0
AMD_str        db "AuthenticAMD",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

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

dev_data_path  db '/RD/1/DRIVERS/DEVICES.DAT',0

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 = 0x80000000
MIN_DEFAULT_DLL_ADDR = 0x70000000
dll_cur_addr   dd MIN_DEFAULT_DLL_ADDR

; supported videomodes


; mike.dld {
;db 0
;dd servetable-0x10000
;align 4
;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
;drawbar         dd vesa20_drawbar
;//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     sizeof.TSS-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
def_cursor_clock  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

mouse_active          rd 1
mouse_pause           rd 1

redrawmouse_unconditional rd 1

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