1 ; -*- fundamental -*- (asm-mode sucks)
2 ; -----------------------------------------------------------------------
4 ; Copyright 1994-2009 H. Peter Anvin - All Rights Reserved
5 ; Copyright 2009-2011 Intel Corporation; author: H. Peter Anvin
7 ; This program is free software; you can redistribute it and/or modify
8 ; it under the terms of the GNU General Public License as published by
9 ; the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
10 ; Boston MA 02110-1301, USA; either version 2 of the License, or
11 ; (at your option) any later version; incorporated herein by reference.
13 ; -----------------------------------------------------------------------
18 ; Common code for conventional disk-based filesystems
22 ; Some semi-configurable constants... change on your own risk.
24 NULLFILE equ 0 ; Null character == empty filename
25 NULLOFFSET equ 0 ; Position in which to look
26 retry_count equ 16 ; How patient are we with the disk?
27 %assign HIGHMEM_SLOP 0 ; Avoid this much memory near the top
28 LDLINUX_MAGIC equ 0x3eb202fe ; A random number to identify ourselves with
30 ; This indicates the general format of the last few bytes in the boot sector
31 BS_MAGIC_VER equ 0x1b << 9
33 MIN_SECTOR_SHIFT equ 9
34 MIN_SECTOR_SIZE equ (1 << MIN_SECTOR_SHIFT)
36 ; ---------------------------------------------------------------------------
38 ; ---------------------------------------------------------------------------
41 ; Memory below this point is reserved for the BIOS and the MBR
44 global trackbuf:data hidden
46 trackbuf resb trackbufsize ; Track buffer goes here
50 ; Common bootstrap code for disk-based derivatives
52 %include "diskstart.inc"
55 ; Now, everything is "up and running"... patch kaboom for more
56 ; verbosity and using the full screen system
67 ; If we get to this point ldlinux.c32 failed to run. There's nothing
68 ; left to do but inform that user that something went wrong.
76 ThisKbdTo resd 1 ; Temporary holder for KbdTimeout
77 ThisTotalTo resd 1 ; Temporary holder for TotalTimeout
78 KernelExtPtr resw 1 ; During search, final null pointer
79 FuncFlag resb 1 ; Escape sequences received from keyboard
80 KernelType resb 1 ; Kernel type, from vkernel, if known
82 KernelName resb FILENAME_MAX ; Mangled name for kernel
86 ; COMBOOT-loading code
88 %include "comboot.inc"
92 ; Boot sector loading code
100 ; Hardware cleanup common code
103 %include "localboot.inc"
106 ; kaboom2: once everything is loaded, replace the part of kaboom
107 ; starting with "kaboom.patch" with this part
110 mov si,err_bootfailed
112 cmp byte [kaboom.again+1],18h ; INT 18h version?
115 pm_call syslinux_force_text_mode
116 int 19h ; And try once more to boot...
117 .norge: jmp short .norge ; If int 19h returned; this is the end
119 pm_call syslinux_force_text_mode
121 .noreg: jmp short .noreg ; Nynorsk
123 ; -----------------------------------------------------------------------------
125 ; -----------------------------------------------------------------------------
127 %include "common.inc" ; Universal modules
129 ; -----------------------------------------------------------------------------
131 ; -----------------------------------------------------------------------------
135 copyright_str db ' Copyright (C) 1994-'
137 db ' H. Peter Anvin et al', CR, LF, 0
138 err_bootfailed db CR, LF, 'Boot failed: please change disks and press '
139 db 'a key to continue.', CR, LF, 0
142 ; Misc initialized (data) variables
144 %ifdef debug ; This code for debugging only
145 debug_magic dw 0D00Dh ; Debug code sentinel