Subversion Repositories Kolibri OS

Rev

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

  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;;                                                              ;;
  3. ;; Copyright (C) KolibriOS team 2004-2022. All rights reserved. ;;
  4. ;; Distributed under terms of the GNU General Public License    ;;
  5. ;;                                                              ;;
  6. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  7. ;
  8. ;   MEMORY MAP
  9. ;
  10. ;   Boot:
  11. ;
  12. ;   BOOT_LO / boot_data structure
  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
  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.
  23. ;   0:901F     byte   DMA write : 1=yes, 2=no
  24. ;   0:9020     8bytes pci data
  25. ;   0:9030     byte   shutdown type (see sysfn 18.9)
  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
  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. ;
  44. ; 0x80001000 -> 8FFF   window_data   - 256 entries
  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
  117. ;   FFF1  byte        free
  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. ;
  123. ; 0x80010000 ->  7BC00   kernel, 32-bit run-time code (up to 431k)
  124. ;
  125. ; 0x8007CC00 ->  7DBFF   stack at boot time (4k)
  126. ; 0x8007E000 ->  7FFFF   main page directory
  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. ;
  169. ; 0x80090000 ->  9FFFF   free (64k)
  170. ; 0x800A0000 ->  AFFFF   screen access area
  171. ; 0x800B0000 ->  FFFFF   bios rest in peace -area (320k)        ?
  172. ; 0x80100000 -> 27FFFF   diskette image (1m5)
  173. ; 0x80280000 -> 283FFF   free (16k)
  174. ;
  175. ; 0x80284000 -> 28BFFF   HDD DMA AREA   (32k)
  176. ; 0x8028C000 -> 297FFF   free (48k)
  177. ;
  178. ; 0x80298000 -> 29FFFF   auxiliary table for background smoothing code (32k)
  179. ;
  180. ; 0x802A0000 -> 2B00FF   wav device buffer (64k)
  181. ; 0x802A0000 -> 2B00FF   wav device status (256)
  182. ;
  183. ; 0x802B0100 -> 2B3FFD   free (15k7)
  184. ;
  185. ; 0x802B3FEE -> 2B3FEF   button info (64K+ 16 + 2 byte)
  186. ;     2B3FEE   0000 word    number of buttons
  187. ;     2B3FF0    first button entry
  188. ;      
  189. ;        button entry at 0x10
  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. ;
  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
  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. ;
  211. ; 0x802E0000 -> 2EFFFF   irq data area  (64k)  ;BOOT_VAR
  212. ;
  213. ; 0x802F0000 -> 317fff   free (160k)
  214. ;
  215. ; 0x80318000 -> 31ffff   skin_data (32k)
  216. ;
  217. ; 0x80320000 -> 323FF3   draw data     - 256 entries (4k)
  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
  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
  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.  
  247.  
  248.