-
Notifications
You must be signed in to change notification settings - Fork 3
/
config.asm
160 lines (131 loc) · 5.88 KB
/
config.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
; Copyright (C) 2013-2016 Wataha.net
; All Rights Reserved
;
; LICENSE Creative Commons BY-NC-ND 4.0
; See LICENSE.TXT
;
; Main developer:
; Andrzej (akasei) Adamczyk [e-mail: akasei from wataha.net]
;-------------------------------------------------------------------------------
; Use:
; nasm - http://www.nasm.us/
%define VARIABLE_KERNEL_VERSION "0.512"
VARIABLE_MEMORY_PAGE_SIZE equ 0x1000
VARIABLE_MEMORY_PAGE_RECORD_COUNT equ 512
VARIABLE_MEMORY_HIGH_ADDRESS equ 0xFFFF000000000000
VARIABLE_MEMORY_HIGH_REAL_ADDRESS equ 0xFFFF800000000000
VARIABLE_MEMORY_HIGH_VIRTUAL_ADDRESS equ VARIABLE_MEMORY_HIGH_REAL_ADDRESS - VARIABLE_MEMORY_HIGH_ADDRESS
VARIABLE_MEMORY_PML4_RECORD_SIZE equ VARIABLE_MEMORY_HIGH_VIRTUAL_ADDRESS / 256
; adres umowny, jest to przestrzeń gdzie jądro systemu może operować na
; różnej wielkości fragmentach pamięci logicznej, gdzie pamięć fizyczna
; nie sięga
VARIABLE_MEMORY_FREE_LOGICAL_ADDRESS equ 0x0000400000000000
VARIABLE_ASCII_CODE_TERMINATOR equ 0x00
VARIABLE_ASCII_CODE_ENTER equ 0x0D
VARIABLE_ASCII_CODE_NEWLINE equ 0x0A
VARIABLE_ASCII_CODE_BACKSPACE equ 0x08
VARIABLE_ASCII_CODE_TAB equ 0x09
VARIABLE_ASCII_CODE_ESCAPE equ 0x1B
VARIABLE_ASCII_CODE_SPACE equ 0x20
VARIABLE_ASCII_CODE_TILDE equ 0x7E
VARIABLE_ASCII_CODE_DELETE equ 0x7F
VARIABLE_ASCII_CODE_DASH_HORIZONTAL_BOLD equ 0xC4
VARIABLE_ASCII_CODE_CROSS_BOLD equ 0xC5
VARIABLE_ASCII_CODE_DASH_DOUBLE_HORIZONTAL equ 0xCD
VARIABLE_ASCII_CODE_DASH_VERTICAL_BOLD equ 0xB3
VARIABLE_COLOR_BLACK equ 0x00 ; indeks
VARIABLE_COLOR_BLUE equ 0x01
VARIABLE_COLOR_GREEN equ 0x02
VARIABLE_COLOR_CYAN equ 0x03
VARIABLE_COLOR_RED equ 0x04
VARIABLE_COLOR_VIOLET equ 0x05
VARIABLE_COLOR_BROWN equ 0x06
VARIABLE_COLOR_LIGHT_GRAY equ 0x07
VARIABLE_COLOR_GRAY equ 0x08
VARIABLE_COLOR_LIGHT_BLUE equ 0x09
VARIABLE_COLOR_LIGHT_GREEN equ 0x0A
VARIABLE_COLOR_LIGHT_CYAN equ 0x0B
VARIABLE_COLOR_LIGHT_RED equ 0x0C
VARIABLE_COLOR_LIGHT_VIOLET equ 0x0D
VARIABLE_COLOR_YELLOW equ 0x0E
VARIABLE_COLOR_WHITE equ 0x0F
VARIABLE_COLOR_BACKGROUND_BLACK equ 0x00 ; indeks
VARIABLE_COLOR_BACKGROUND_BLUE equ 0x10
VARIABLE_COLOR_BACKGROUND_GREEN equ 0x20
VARIABLE_COLOR_BACKGROUND_CYAN equ 0x30
VARIABLE_COLOR_BACKGROUND_RED equ 0x40
VARIABLE_COLOR_BACKGROUND_VIOLET equ 0x50
VARIABLE_COLOR_BACKGROUND_BROWN equ 0x60
VARIABLE_COLOR_BACKGROUND_LIGHT_GRAY equ 0x70
; w trybie graficznym nie ma migającego tekstu, dlatego poniższe wykorzystywać z rozwagą
; to samo tyczy się oprogramowania Qemu (nawet w trybie tekstowym)
VARIABLE_COLOR_BACKGROUND_GRAY equ 0x80 ; VARIABLE_COLOR_BACKGROUND_BLACK
VARIABLE_COLOR_BACKGROUND_LIGHT_BLUE equ 0x90 ; VARIABLE_COLOR_BACKGROUND_BLUE
VARIABLE_COLOR_BACKGROUND_LIGHT_GREEN equ 0xA0 ; VARIABLE_COLOR_BACKGROUND_GREEN
VARIABLE_COLOR_BACKGROUND_LIGHT_CYAN equ 0xB0 ; VARIABLE_COLOR_BACKGROUND_CYAN
VARIABLE_COLOR_BACKGROUND_LIGHT_RED equ 0xC0 ; VARIABLE_COLOR_BACKGROUND_RED
VARIABLE_COLOR_BACKGROUND_LIGHT_VIOLET equ 0xD0 ; VARIABLE_COLOR_BACKGROUND_VIOLET
VARIABLE_COLOR_BACKGROUND_YELLOW equ 0xE0 ; VARIABLE_COLOR_BACKGROUND_BROWN
VARIABLE_COLOR_BACKGROUND_WHITE equ 0xF0 ; VARIABLE_COLOR_BACKGROUND_LIGHT_GRAY
VARIABLE_COLOR_DEFAULT equ VARIABLE_COLOR_LIGHT_GRAY
VARIABLE_COLOR_BACKGROUND_DEFAULT equ VARIABLE_COLOR_BACKGROUND_BLACK
VARIABLE_QWORD_SIZE equ 8
VARIABLE_DWORD_SIZE equ 4
VARIABLE_WORD_SIZE equ 2
VARIABLE_BYTE_SIZE equ 1
VARIABLE_QWORD_HIGH equ 0x04
VARIABLE_DWORD_HIGH equ 0x02
VARIABLE_WORD_HIGH equ 0x01
VARIABLE_DIVIDE_BY_2 equ 1
VARIABLE_DIVIDE_BY_4 equ 2
VARIABLE_DIVIDE_BY_8 equ 3
VARIABLE_MULTIPLE_BY_4096 equ 12
%define VARIABLE_FONT_MATRIX_DEFAULT "font/crispy.asm"
VARIABLE_PCI_CONFIG_ADDRESS equ 0x0CF8
VARIABLE_PCI_CONFIG_DATA equ 0x0CFC
VARIABLE_PIT_CLOCK_HZ equ 1000 ; Hz
VARIABLE_KEYBOARD_CACHE_SIZE equ 16 ; / 2 = 8 znaków
VARIABLE_PROCESS_LIMIT equ 256
VARIABLE_EMPTY equ 0
VARIABLE_FULL equ -1
VARIABLE_LAST_ITEM equ 1
VARIABLE_TRUE equ 1
VARIABLE_FALSE equ 0
VARIABLE_INCREMENT equ 1
VARIABLE_DECREMENT equ 1
VARIABLE_DISK_SECTOR_SIZE equ 9 ; przesunięcie logiczne w lewo wartości 2
VARIABLE_DISK_SECTOR_SIZE_IN_BYTES equ 0x0200
VARIABLE_CMOS_PORT_IN equ 0x71
VARIABLE_CMOS_PORT_OUT equ 0x70
VARIABLE_KERNEL_PHYSICAL_ADDRESS equ 0x0000000000100000
VARIABLE_KERNEL_STACK_ADDRESS equ VARIABLE_MEMORY_HIGH_VIRTUAL_ADDRESS - 0x1000
STATIC_KERNEL_SERVICE equ 0x40
VARIABLE_KERNEL_SERVICE_PROCESS_KILL equ 0x0000
VARIABLE_KERNEL_SERVICE_PROCESS_NEW equ 0x0001
VARIABLE_KERNEL_SERVICE_PROCESS_CHECK equ 0x0002
VARIABLE_KERNEL_SERVICE_PROCESS_MEMORY_ALLOCATE equ 0x0003
VARIABLE_KERNEL_SERVICE_PROCESS_LIST equ 0x0004
VARIABLE_KERNEL_SERVICE_PROCESS_ARGS equ 0x0005
VARIABLE_KERNEL_SERVICE_SCREEN_CLEAN equ 0x0100
VARIABLE_KERNEL_SERVICE_SCREEN_PRINT_STRING equ 0x0101
VARIABLE_KERNEL_SERVICE_SCREEN_PRINT_CHAR equ 0x0102
VARIABLE_KERNEL_SERVICE_SCREEN_PRINT_NUMBER equ 0x0103
VARIABLE_KERNEL_SERVICE_SCREEN_CURSOR_GET equ 0x0104
VARIABLE_KERNEL_SERVICE_SCREEN_CURSOR_SET equ 0x0105
VARIABLE_KERNEL_SERVICE_SCREEN_SIZE equ 0x0106
VARIABLE_KERNEL_SERVICE_SCREEN_CURSOR_HIDE equ 0x0107
VARIABLE_KERNEL_SERVICE_SCREEN_CURSOR_SHOW equ 0x0108
VARIABLE_KERNEL_SERVICE_SCREEN_SCROLL equ 0x0109
VARIABLE_KERNEL_SERVICE_SCREEN_SHADOW equ 0x010A
VARIABLE_KERNEL_SERVICE_KEYBOARD_GET_KEY equ 0x0200
VARIABLE_KERNEL_SERVICE_SYSTEM_UPTIME equ 0x0300
VARIABLE_KERNEL_SERVICE_SYSTEM_DATE equ 0x0301
VARIABLE_KERNEL_SERVICE_SYSTEM_MEMORY equ 0x0302
VARIABLE_KERNEL_SERVICE_FILESYSTEM_READ_FILE equ 0x0400
VARIABLE_KERNEL_SERVICE_FILESYSTEM_FILE_SIZE equ 0x0401
VARIABLE_KERNEL_SERVICE_FILESYSTEM_TOUCH equ 0x0402
VARIABLE_KERNEL_SERVICE_FILESYSTEM_ROOT_DIR equ 0x0403
VARIABLE_KERNEL_SERVICE_FILESYSTEM_SAVE_FILE equ 0x0404
VARIABLE_KERNEL_SERVICE_FILESYSTEM_DELETE equ 0x0405
VARIABLE_FILESYSTEM_TYPE_FILE equ 0x8000
VARIABLE_FILESYSTEM_TYPE_DIRECTORY equ 0x4000