Changeset 112 for trunk/bootcode/airboot.asm
- Timestamp:
- Apr 8, 2017, 12:27:10 AM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/bootcode/airboot.asm
r109 r112 2093 2093 2094 2094 sobss: 2095 sobss_abs = offset sobss + image_size 2095 2096 ;------------------------------------------------------------------------------ 2096 2097 2097 ; 2098 ; Removed ORG for BSS data to be more compatible2099 ; with segment-concatenated layout.2100 ;2101 ; What happens before this space ??2102 ; If org 0 corruption occurs.2103 ;2104 2105 ;2106 ; Filling hiddenparttable goes out-of-bounds !2107 ; Fixed with 6-bit packing.2108 ; 2098 2099 ; 2100 ; This is the actual start of the BSS. 2101 ; In the past however, we have had a code-loop that went out of bounds, 2102 ; overwriting the start of the BSS. 2103 ; 2104 ; Because important runtime data is stored in the BSS, we offset it 2105 ; by 400h bytes. Since the loader-image is always 62 sectors, which 2106 ; makes it 7c00h in size, the runtime data starts at 8000h. 2107 ; This is the 'BeginOfVariables' location. 2108 ; 2109 2109 2110 2110 2111 ; … … 2114 2115 ; 2115 2116 IFDEF SEGMENTED 2116 ORG 0 2400h2117 ORG 00400h ; 7c00h + 400h = 8000h 2117 2118 ELSE 2118 ORG 0 A000h2119 ORG 08000h ; 8000h 2119 2120 ENDIF 2120 2121 … … 2126 2127 ; This space actually gets initialized in PreCrap to NUL (till EndOfVariables) 2127 2128 BeginOfVariables: 2129 BeginOfVariablesAbs = offset BeginOfVariables + image_size 2128 2130 2129 2131 … … 2137 2139 TmpSector db 512 dup (?) ; Temporary Sector 2138 2140 Scratch db 512 dup (?) ; Scratch buffer 2141 ALIGN 16 2142 2139 2143 2140 2144 ; ----------------------------------------------------------------------------- … … 2144 2148 ; BOOKMARK: New Partition Table 2145 2149 NewPartTable db 1536 dup (?) ; New Partition Table 2150 ALIGN 16 2146 2151 2147 2152 … … 2151 2156 ; BOOKMARK: New Hide-Partition Table 2152 2157 NewHidePartTable db LocIPT_MaxPartitions * LocHPT_LenOfHPT dup (?) 2153 2154 ;~ even 2158 ALIGN 16 2159 2155 2160 2156 2161 ; ----------------------------------------------------------------------------- … … 2159 2164 ; BOOKMARK: Logical Drive-Letters 2160 2165 NewDriveLetters db LocIPT_MaxPartitions dup (?) 2161 2162 ;~ even 2166 ALIGN 16 2167 2163 2168 2164 2169 ; ----------------------------------------------------------------------------- … … 2168 2173 ; BOOKMARK: Partition Size Table 2169 2174 PartitionSizeTable db LocIPT_MaxPartitions * 6 dup (?) 2175 ALIGN 16 2170 2176 2171 2177 … … 2176 2182 ; BOOKMARK: Partition Pointers 2177 2183 PartitionPointers dw 52 dup (?) 2184 ALIGN 16 2178 2185 2179 2186 ; Count of total Partition Pointers 2180 2187 PartitionPointerCount db ? 2188 ALIGN 16 2189 2181 2190 2182 2191 ; ----------------------------------------------------------------------------- … … 2187 2196 ; BOOKMARK: Xref Table 2188 2197 PartitionXref db LocIPT_MaxPartitions dup (?) 2198 ALIGN 16 2199 2189 2200 2190 2201 ; ----------------------------------------------------------------------------- … … 2198 2209 ; BOOKMARK: Volume Drive Letters 2199 2210 PartitionVolumeLetters db LocIPT_MaxPartitions dup (?) 2200 2211 ALIGN 16 2201 2212 2202 2213 … … 2221 2232 CurIO_Scanning db ? ; 1-AiR-BOOT is scanning partitions 2222 2233 ; (for detailed error message) 2223 2224 ; [Linux support removed since v1.02] 2225 ;GotLinux db ? ; 1-Linux found 2234 ALIGN 16 2226 2235 2227 2236 … … 2238 2247 Menu_EntryAutomatic db ? ; Automatic Entry in filtered View 2239 2248 ; - All adjusted to menu locations 2249 ALIGN 16 2250 2240 2251 2241 2252 ; ----------------------------------------------------------------------------- … … 2247 2258 PartSetup_HiddenX db ? ; Pos for Hidden-Setup 2248 2259 PartSetup_HiddenAdd db ? ; Adjust for Hidden-Setup 2260 ALIGN 16 2261 2249 2262 2250 2263 ; ----------------------------------------------------------------------------- … … 2266 2279 ChangePartNameSave db ? ; Save label after user-edit ? 2267 2280 SyncLvmLabels db ? ; Sync LVM labels after user-edit ? 2281 ALIGN 16 2268 2282 2269 2283 … … 2281 2295 FX_WideScrollerBounceSpeed db ? 2282 2296 FX_CooperBarsTimer dw ? 2297 ALIGN 16 2283 2298 2284 2299 ; Dynamically Generated Tables - do not need to get initialized with NUL … … 2287 2302 FX_SinusPos db 7 dup (?) 2288 2303 FX_CooperPos dw 7 dup (?) 2304 ALIGN 16 2289 2305 2290 2306 … … 2293 2309 ; ----------------------------------------------------------------------------- 2294 2310 CharsetTempBuffer db 4096 dup (?) ; Uninitialized Charset buffer 2311 ALIGN 16 2312 2295 2313 2296 2314 ; ----------------------------------------------------------------------------- … … 2298 2316 ; ----------------------------------------------------------------------------- 2299 2317 LVM_CRCTable dd 256 dup (?) ; LVM-CRC (->SPECiAL\LVM.asm) 2300 2301 2302 2303 ; 2304 ; Rousseau: added some stuff. 2305 ; 2318 ALIGN 16 2319 2320 2306 2321 ; ----------------------------------------------------------------------------- 2307 2322 ; ECS PHASE1 RELATED … … 2309 2324 Phase1Active db ? 2310 2325 OldPartitionCount db ? 2326 ALIGN 16 2311 2327 2312 2328 … … 2314 2330 ; DISK PARAMETERS 2315 2331 ; ----------------------------------------------------------------------------- 2316 ;EVEN2317 2332 HugeDisk db MaxDisks dup(?) 2318 2333 TrueSecs dd MaxDisks dup(?) 2334 ALIGN 16 2319 2335 2320 2336 ; BIOS geometry of the boot-drive … … 2326 2342 BIOS_Bytes dw MaxDisks dup(?) 2327 2343 BIOS_TotalSecs dq MaxDisks dup(?) 2344 ALIGN 16 2328 2345 2329 2346 ; LBA geometry of the boot-drive … … 2334 2351 LVM_Bytes dw MaxDisks dup(?) 2335 2352 LVM_TotalSecs dq MaxDisks dup(?) 2353 ALIGN 16 2336 2354 2337 2355 ; OS/2 geometry of the boot-drive … … 2342 2360 LOG_Bytes dw MaxDisks dup(?) 2343 2361 LOG_TotalSecs dq MaxDisks dup(?) 2362 ALIGN 16 2363 2364 ; Storage for INT13 disk parameters 2365 INT13_DiskParams db MaxDisks dup(10h dup(?)) 2366 ALIGN 16 2367 2368 ; Storage for INT13X disk parameters 2369 INT13X_DiskParams db MaxDisks dup(80h dup(?)) 2370 ALIGN 16 2344 2371 2345 2372 ; Get's initialized at startup to: 00000011111111111111111111111100b … … 2347 2374 ; Each partition with an assigned drive-letter clears a bit in this map. 2348 2375 FreeDriveletterMap dd ? 2376 ALIGN 16 2349 2377 2350 2378 ; LBA address of master LVM sector, zero if non-existant 2351 MasterLVMLBA dd ? 2379 MasterLVMLBA dd MaxDisks dup(?) 2380 ALIGN 16 2352 2381 2353 2382 … … 2364 2393 dd ? ; Second Part of QWORD 2365 2394 INT13X_DAP_Size = $-offset [INT13X_DAP] ; Calculated size 2395 ALIGN 16 2366 2396 2367 2397 ; … … 2380 2410 ; (excluding the size word at the start). 2381 2411 i13xbuf_size = $-offset i13xbuf-2 2412 ALIGN 16 2382 2413 2383 2414 ; Some debug area. 2384 2415 dbg_scratch db 512 dup(?) 2416 ALIGN 16 2385 2417 2386 2418 2387 2419 ; End of transient variables. 2388 2420 EndOfVariables: 2389 2421 EndOfVariablesAbs = offset EndOfVariables + image_size 2390 2422 2391 2423 … … 2405 2437 ; to be partly overwritten by the clearing routine. 2406 2438 dd ? 2439 ALIGN 16 2407 2440 2408 2441 ; SS:SP from before our relocation. … … 2418 2451 CurrentSP dw ? 2419 2452 CurrentSS dw ? 2420 2453 ALIGN 16 2421 2454 ; 2422 2455 ; End of BSS segment. 2423 2456 ; 2424 2457 eobss: 2425 2458 eobss_abs = offset eobss + image_size 2426 2459 ; 2427 2460 ; Total RAM occupied, including BSS. … … 2429 2462 ; Note that the LDRIMAGE is of constant size, 7C00h = 62 sectors of 512 bytes. 2430 2463 ; 2431 resident_size = (offset eobss + image_size)2464 resident_size = offset eobss + image_size 2432 2465 2433 2466 ;
Note:
See TracChangeset
for help on using the changeset viewer.