Subversion Repositories Kolibri OS

Rev

Rev 9715 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2455 mario79 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
;;                                                              ;;
9715 Doczom 3
;; Copyright (C) KolibriOS team 2004-2022. All rights reserved. ;;
2455 mario79 4
;; Distributed under terms of the GNU General Public License    ;;
5
;;                                                              ;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2288 clevermous 7
;
8
;   MEMORY MAP
9
;
10
;   Boot:
11
;
7132 dunkaist 12
;   BOOT_LO / boot_data structure
2288 clevermous 13
;   0:9000     byte   bits per pixel
14
;   0:9001     word   scanline length
15
;   0:9008     word   vesa video mode
16
;   0:900A     word   X res
17
;   0:900C     word   Y res
18
;   0:9014     dword  Vesa 1.2 pm bank switch
19
;   0:9018     dword  Vesa 2.0 LFB address
20
;   0:901C     byte   0 or 1 : enable MTRR graphics acceleration
7122 dunkaist 21
;   0:901D     byte   (0 or 1) start the first app (right now it's LAUNCHER) after kernel is loaded?
22
;   0:901E     byte   If nonzero, duplicates debug output to the screen.
2288 clevermous 23
;   0:901F     byte   DMA write : 1=yes, 2=no
24
;   0:9020     8bytes pci data
7121 dunkaist 25
;   0:9030     byte   shutdown type (see sysfn 18.9)
7122 dunkaist 26
;   0:9040     dword  entry point of APM BIOS
27
;   0:9044     word   version (BCD)
28
;   0:9046     word   flags
29
;   0:9050     word   APM_CODE_32
30
;   0:9052     word   APM_CODE_16
31
;   0:9054     word   APM_DATA_16
2288 clevermous 32
;   0:907F     byte   number of BIOS hard disks
33
;   0:9080     Nbytes BIOS hard disks
34
;   0:9100     word   available physical memory map: number of blocks
35
;   0:9104            available physical memory map: blocks
36
;
37
;   Runtime:
38
;
39
; 0x00000000 -> 0x7FFFFFFF  application 2Gb
40
 
41
; 0x80000000 -> 0FFF  physical page zero - do not write
42
;                     (used by int 13h in some configurations)
43
;
9930 Doczom 44
; 0x80001000 -> 8FFF   window_data   - 256 entries
2288 clevermous 45
;
46
;         0000 dword  x start
47
;         0004 dword  y start
48
;         0008 dword  x size
49
;         000C dword  y size
50
;         0010 dword  color of work area
51
;         0014 dword  color of grab bar
52
;         0018 dword  color of frames
53
;         001C dword  window flags, +30 = window drawn, +31 redraw flag
54
;
55
;   8000  ->   A3FF   used FLOPPY driver
56
;
57
;   A400  ->   B0FF   free (3k3), unused ACTIVE_PROC_STACK
58
 
59
;   B100  ->   B307   IDT for int_0x00..int_0x40
60
 
61
;   B308  ->   BFFF   free (3k3)
62
 
63
;   C000  ->   C3FF   window stack C000 no of windows - all in words
64
;   C402  ->   C7FF   window position in stack
65
;   D000  ->   D1FF   FDC controller
66
;   D200  ->   D3FF   FDC controller for Fat12
67
;   D400  ->   DFFF   free (3k)
68
;   E000  byte        multitasking started
69
;   E020  dword       putpixel address
70
;   E024  dword       getpixel address
71
;   E030  dword       Vesa 1.2 pm bank switch address
72
;   E034  ->   F1FF   free (4k5)
73
;   F200  dword       mousepicture -pointer
74
;   F204  dword       mouse appearance counter
75
;   F208  ->   F2FF   free (248)
76
;   F300  dword       x & y temp for windowmove
77
;   F304  ->   F3FF   free (252)
78
;   F400  byte        no of keys in buffer
79
;   F401  byte        'buffer'
80
;   F402  ->   F4FF   reserved for keys
81
;   F500  byte        no of buttons in buffer
82
;   F501  dword       'buffer'
83
;   F502  ->   F5FF   reserved for buttons
84
;   F600  dword       tsc / second
85
;   F604  byte        (unused?) mouse port: 1 ps2, 2 com1, 3 com2
86
;   F605  ->   FAFF   free (1k2)
87
;   FB00  ->   FB0F   mouse memory 00 chunk count, that includes:
88
;   FB08 word       -- mouse H-scroll
89
;   FB0A word       -- mouse x
90
;   FB0C word         -- mouse y
91
;   FB0E word       -- mouse V-scroll
92
;   FB10  ->   FB17   mouse color mem
93
;   FB21              x move
94
;   FB22              y move
95
;   FB28              high bits temp
96
;   FB30              color temp
97
;   FB40  byte        buttons down
98
;   FB44  byte        0 mouse down -> do not draw
99
;   FB4A  ->   FB4D   FB4A-B x-under - FB4C-D y-under
100
;   FBF1  byte        bits per pixel
101
;   FC00  ->   FCFE   com1/ps2 buffer
102
;   FCFF              com1/ps2 buffer count starting from FC00
103
;   FD00  ->   FDFF   free (256)
104
;   FE00  dword       screen x size
105
;   FE04  dword       screen y size
106
;   FE08  dword       screen y multiplier
107
;   FE0C  dword       screen mode
108
;   FE10  ->   FE7F   free (112)
109
;   FE80  dword       address of LFB in physical
110
;   FE84  dword       address of applications memory start in physical  ?
111
;   FE88  dword       address of button list
112
;   FE8C  dword       memory to use
113
;   FE90  ->   FEFF   free (112)
114
;   FF00  byte        1 = system shutdown request
115
;   FF01  byte        task activation request?
116
;   FFF0  byte        >0 if redraw background request from app
2513 mario79 117
;   FFF1  byte        free
2288 clevermous 118
;   FFF2              write and read bank in screen
119
;   FFF4  byte        0 if first mouse draw & do not return picture under
120
;   FFF5  byte        1 do not draw pointer
121
;   FFFF  byte        do not change task for 1/100 sec.
122
;
8085 dunkaist 123
; 0x80010000 ->  7BC00   kernel, 32-bit run-time code (up to 431k)
2288 clevermous 124
;
8085 dunkaist 125
; 0x8007CC00 ->  7DBFF   stack at boot time (4k)
126
; 0x8007E000 ->  7FFFF   main page directory
2288 clevermous 127
; 0x80080000 ->  8FFFF   additional app info, in 256 byte steps - 256 entries
128
;
129
;         00  11db  name of app running
130
;       0x10 dword  pointer to  fpu save area
131
;       0x14 dword  event count
132
;       0x18 dword  user fpu exceptoins handler
133
;       0x1c dword  user sse exceptions handler
134
;         20 dword  PL0 stack base
135
;         24 dword  user heap base
136
;         28 dword  user heap top
137
;         2c dword  window cursor handle
138
;         30 dword  first event in list
139
;         34 dword  last event in list
140
;         38 dword  first kernel object in list
141
;         3c dword  last kernel object in list
142
;         40 dword  thread esp
143
;         44 dword  io permission map page 0
144
;         48 dword  io permission map page 1
145
;         4c dword  debug state: 1= load debug registers
146
;         50 dword  current directory ptr
147
;         54 dword  wait timeout
148
;         58 dword  thread TSS._esp0 (= pl0 stack base + size except for V86)
149
;         5C-7F     unused
150
;
151
;         80 dword  address of random shaped window area
152
;         84 byte   shape area scale
153
;         88 dword  free
154
;         8C dword  application memory size
155
;         90 dword  window X position save
156
;         94 dword  window Y position save
157
;         98 dword  window X size save
158
;         9C dword  window Y size save
159
;         A0 dword  IPC memory start
160
;         A4 dword  IPC memory size
161
;         A8 dword  event bits: mouse, stack,..
162
;         AC dword  0 or debugger slot
163
;         B0 dword  free
164
;         B4  byte  keyboard mode: 0 = keymap, 1 = scancodes
165
;         B8 dword  physical address of directory table
166
;         BC dword  address of debug event memory
167
;         C0  5 dd  thread debug registers: DR0,DR1,DR2,DR3,DR7
168
;
8085 dunkaist 169
; 0x80090000 ->  9FFFF   free (64k)
2288 clevermous 170
; 0x800A0000 ->  AFFFF   screen access area
171
; 0x800B0000 ->  FFFFF   bios rest in peace -area (320k)        ?
172
; 0x80100000 -> 27FFFF   diskette image (1m5)
4273 clevermous 173
; 0x80280000 -> 283FFF   free (16k)
2288 clevermous 174
;
175
; 0x80284000 -> 28BFFF   HDD DMA AREA   (32k)
176
; 0x8028C000 -> 297FFF   free (48k)
177
;
2504 mario79 178
; 0x80298000 -> 29FFFF   auxiliary table for background smoothing code (32k)
2288 clevermous 179
;
2504 mario79 180
; 0x802A0000 -> 2B00FF   wav device buffer (64k)
181
; 0x802A0000 -> 2B00FF   wav device status (256)
2288 clevermous 182
;
2504 mario79 183
; 0x802B0100 -> 2B3FFD   free (15k7)
184
;
2525 mario79 185
; 0x802B3FEE -> 2B3FEF   button info (64K+ 16 + 2 byte)
186
;     2B3FEE   0000 word    number of buttons
187
;     2B3FF0    first button entry
2504 mario79 188
;
189
;        button entry at 0x10
2288 clevermous 190
;       +0000 word   process number
191
;       +0002 word   button id number : bits 00-15
192
;       +0004 word   x start
193
;       +0006 word   x size
194
;       +0008 word   y start
195
;       +000A word   y size
196
;       +000C word   button id number : bits 16-31
197
;
2485 mario79 198
; 0x802C4000 -> 2C9FFF   area for fast getting offset to LFB (24k)
199
;                        BPSLine_calc_area
200
; 0x802CA000 -> 2CFFFF   area for fast getting offset to _WinMapAddress (24k)
201
;                        d_width_calc_area
2288 clevermous 202
;
203
; 0x802D0000 -> 2DFFFF   reserved port area (64k)
204
;
205
;       0000 dword   no of port areas reserved
206
;       0010 dword   process id
207
;            dword   start port
208
;            dword   end port
209
;            dword   0
210
;
2485 mario79 211
; 0x802E0000 -> 2EFFFF   irq data area  (64k)  ;BOOT_VAR
2288 clevermous 212
;
7964 hidnplayr 213
; 0x802F0000 -> 317fff   free (160k)
2288 clevermous 214
;
2485 mario79 215
; 0x80318000 -> 31ffff   skin_data (32k)
216
;
217
; 0x80320000 -> 323FF3   draw data     - 256 entries (4k)
2288 clevermous 218
;         00   dword  draw limit - x start
219
;         04   dword  draw limit - y start
220
;         08   dword  draw limit - x end
221
;         0C   dword  draw limit - y end
2485 mario79 222
;
223
; 0x8032BFF4 -> 32BFFF   background info
224
;         0x80323FF4    BgrDrawMode
225
;         0x80323FF8    BgrDataWidth
226
;         0x80323FFC    BgrDataHeight
227
;
228
; 0x80324000             page map     (length b = memsize shr 15)
229
; 0x80324000 + b         start of static pagetables
2288 clevermous 230
 
231
; 0x803FFFFF <- no direct address translation beyond this point
232
; =============================================================
233
 
234
; 0x805FF000 -> 5FFF80   TSS
235
; 0x80600000 -> 601FFF   i/o maps
236
 
237
; 0x80800000 ->       kernel heap
238
; 0x80FFFFFF          heap min limit
239
; 0xFDBFFFFF          heap max limit
240
 
241
; 0xF0000000 -> 0xF1FFFFFF  PCI-express extended config space
242
; 0xFDC00000 -> 0xFDFFFFFF  page tables 4Mb
243
; 0xFE000000 -> 0xFFFFFFFF  LFB 32Mb
244
; 0xFE000000 -> 0xFE7FFFFF  application available LFB 8Mb
245
; 0xFE800000 -> 0xFFFFFFFF  kernel LFB part 24 Mb
246