;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;                                                              ;;
;; Copyright (C) KolibriOS team 2004-2007. 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'



  boot_memdetect    db	 'Determining amount of memory',0
  boot_fonts	    db	 'Fonts loaded',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_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

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


;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
szIMPORTS      db 'IMPORTS',0

read_firstapp  db '/sys/'
firstapp       db  '@DESKTOP',0

char    db '/rd/1/FONTS/CHAR.MT',0
char2   db '/rd/1/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'


                     ;supported videomodes
mode_1280_1024_32:
  dw 1280,1024,32,60
mode_1280_1024_24:
  dw 1280,1024,24,60
mode_1024_768_32:
  dw 1024,768,32,60
mode_1024_768_24:
  dw 1024,768,24,60
mode_800_600_32:
  dw 800,600,32,60
mode_800_600_24:
  dw 800,600,24,60
mode_640_480_32:
  dw 640,480,32,60
mode_640_480_24:
  dw 640,480,24,60
mode_640_480_16:
  dw 640,480,16,60
mode_320_240_8:
  dw 320,240,8,60


;bx_from_load:     dw 'r1'  ; ��������� ��� �������� ����������- ������ �����������, ������� ���� �� bx ; {SPraid}[13.03.2007]
;                           ; a,b,c,d - ����������, r - ��� ����
;                           ; # �����... ������, � �� ����. '1', � �� 1



; mike.dld {
db 0
dd servetable-0x10000
draw_line	dd __sys_draw_line
disable_mouse	dd __sys_disable_mouse
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 sel_pci_code

if __DEBUG__ eq 1
  include_debug_strings
end if

IncludeIGlobals

align 16
_gdts:

    dw     (gdte - _gdts -1)
    dd     _gdts
	dw     0

tss_l:
	dw     TSS_SIZE-1
	dw     tss and 0xFFFF
	db     (tss shr 16) and 0xFF
	db     10001001b
	dw     (tss shr 16) and 0xFF00

; 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, ....

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

os_stacK_l:                           ;0x18
	dw     0xffff
	dw     0x0000
	db     0x00
	dw     11011111b *256 +10010010b
	db     0x00

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

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

srv_code_l:                           ;0x30
    dw     0xFFFF
    dw     0
    db     0
    db     cpl1
    dw     G32+D32+0xF;

srv_stack_l:                          ;0x38
    dw     0xFFFF
    dw     0
    db     0
    db     drw1
    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

code_16_l:
    dw 0xFFFF
    dw 0
    db 1
    db cpl0
    dw 0

endofcode:
gdte:

section '.bss' data writeable align 4096

align 4096

SLOT_BASE:
                rb 64*1024
DRIVE_DATA:
                rb 64*1024
RESERVED_PORTS:
                rb 64*1024
FLOPPY_BUFF:
                rb 16*1024

BUTTON_INFO:
                rb 16*1024
BgrAuxTable:
                rb 32*1024
skin_data:
                rb 32*1024

IDE_DMA:        rb 32*1024
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
window_data:
                rb 8192

CURRENT_TASK:
_current_task:
                rb 8192
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
draw_data:
                rb 4096
CDDataBuf:
                rb 4096

cur_saved_data  rb 4096

_sys_pdbr       rd 1024


fpu_data:
                rb 512

WIN_STACK:
                rb 0x400
WIN_POS:
                rb 0x800

idts            rq 0x42

; device irq owners
irq_owner	  rd 16 ; process id

; on irq read ports

irq00read	  rd 16
irq01read	  rd 16
irq02read	  rd 16
irq03read	  rd 16
irq04read	  rd 16
irq05read	  rd 16
irq06read	  rd 16
irq07read	  rd 16
irq08read	  rd 16
irq09read	  rd 16
irq10read	  rd 16
irq11read	  rd 16
irq12read	  rd 16
irq13read	  rd 16
irq14read	  rd 16
irq15read	  rd 16

irq_tab 	  rd 16

FONT_I        rb 2304    ;16*144
FONT_II       rb 2560    ;16*160

RAMDISK_FAT:  rb 2856*2 +16 ;16*357
FLOPPY_FAT:   rb 2856*2 +16

_z_core           rd 52

mem_block_map	  rb 512

event_map         rb 64
mem_block_list	  rd 64
large_block_list  rd 31
mem_block_mask	  rd 2
large_block_mask  rd 1


_boot_mbi         rd 1

_mem_amount       rd 1
_rd_base          rd 1
_rd_fat           rd 1 ;RAMDISK + 512
_rd_fat_end       rd 1 ;RAMDISK + 512 + 4278
_rd_root          rd 1 ;RAMDISK + 512*18 + 512
_rd_root_end      rd 1 ;RAMDISK + 512*33

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

mst MEM_STATE

page_start        rd 1
page_end          rd 1
events            rd 1
event_start       rd 1
event_end         rd 1
event_uid         rd 1
sys_page_map      rd 1

srv.fd            rd 1
srv.bk            rd 1

_HwCursorCreate:
create_cursor	  rd 1

_SelectHwCursor:
select_hw_cursor  rd 1

_SetHwCursor:
set_hw_cursor	  rd 1

_HwCursorRestore:
hw_restore        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


stall_mcs         rd 1

_current_slot:
current_slot	  rd 1

_display_data     rd 1

_current_thread   rd 1
_k_reenter        rd 1

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

scr_mode          rd 1

LFBAddress        rd 1
LFBSize           rd 1       ;8Mb hardcoded
ScreenBPP         rd 1
BytesPerScanLine  rd 1

put_pixel         rd 1
get_pixel         rd 1

_screen_width     rd 1
_screen_height    rd 1

Screen_Max_X      rd 1
Screen_Max_Y      rd 1

btn_addr          rd 1

redraw_background rd 1
BgrDrawMode       rd 1
BgrDataWidth      rd 1
BgrDataHeight     rd 1

MOUSE_VISIBLE     rd 1
WIN_TEMP_XY       rd 1
MOUSE_X           rw 1
MOUSE_Y           rw 1
mouse_scroll_v    rd 1
mouse_scroll_h    rd 1

BTN_COUNT         rd 1
BTN_BUFF          rd 1

KEY_COUNT         rd 1
KEY_BUFF          rb 128

btn_down          rd 1
x_under           rd 1
y_under           rd 1

dont_switch       rd 1

sys_shutdown      rd 1

bank_rw           rd 1

CPU_FREQ          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
fat32part         rd 1    ; for boot 0x1
cdpos             rd 1



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
wraw_bacground_select rb 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

align 4
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

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

IncludeUGlobals