source: bootcd/isolinux/syslinux-6.03/core/diskfs.inc

Last change on this file was e16e8f2, checked in by Edwin Eefting <edwin@datux.nl>, 3 years ago

bootstuff

  • Property mode set to 100644
File size: 3.9 KB
RevLine 
[e16e8f2]1; -*- fundamental -*- (asm-mode sucks)
2; -----------------------------------------------------------------------
3;   
4;   Copyright 1994-2009 H. Peter Anvin - All Rights Reserved
5;   Copyright 2009-2011 Intel Corporation; author: H. Peter Anvin
6;
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.
12;
13; -----------------------------------------------------------------------
14
15;
16; diskfs.inc
17;
18; Common code for conventional disk-based filesystems
19;
20
21;
22; Some semi-configurable constants... change on your own risk.
23;
24NULLFILE        equ 0                   ; Null character == empty filename
25NULLOFFSET      equ 0                   ; Position in which to look
26retry_count     equ 16                  ; How patient are we with the disk?
27%assign HIGHMEM_SLOP 0                  ; Avoid this much memory near the top
28LDLINUX_MAGIC   equ 0x3eb202fe          ; A random number to identify ourselves with
29
30; This indicates the general format of the last few bytes in the boot sector
31BS_MAGIC_VER    equ 0x1b << 9
32
33MIN_SECTOR_SHIFT        equ 9
34MIN_SECTOR_SIZE         equ (1 << MIN_SECTOR_SHIFT)
35
36; ---------------------------------------------------------------------------
37;   BEGIN CODE
38; ---------------------------------------------------------------------------
39
40;
41; Memory below this point is reserved for the BIOS and the MBR
42;
43                section .earlybss
44                global trackbuf:data hidden
45trackbufsize    equ 8192
46trackbuf        resb trackbufsize       ; Track buffer goes here
47                ; ends at 2800h
48
49;
50; Common bootstrap code for disk-based derivatives
51;
52%include "diskstart.inc"
53
54;
55; Now, everything is "up and running"... patch kaboom for more
56; verbosity and using the full screen system
57;
58                ; E9 = JMP NEAR
59                mov di,kaboom.patch
60                mov al,0e9h
61                stosb
62                mov ax,kaboom2-2
63                sub ax,di
64                stosw
65
66;
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.
69;
70enter_command:
71auto_boot:
72                jmp kaboom
73
74                section .bss16
75                alignb 4
76ThisKbdTo       resd 1                  ; Temporary holder for KbdTimeout
77ThisTotalTo     resd 1                  ; Temporary holder for TotalTimeout
78KernelExtPtr    resw 1                  ; During search, final null pointer
79FuncFlag        resb 1                  ; Escape sequences received from keyboard
80KernelType      resb 1                  ; Kernel type, from vkernel, if known
81                global KernelName
82KernelName      resb FILENAME_MAX       ; Mangled name for kernel
83
84                section .text16
85;
86; COM32 vestigial data structure
87;
88%include "com32.inc"
89
90;
91; Common local boot code
92;
93%include "localboot.inc"
94
95;
96; kaboom2: once everything is loaded, replace the part of kaboom
97;          starting with "kaboom.patch" with this part
98
99kaboom2:
100                mov si,err_bootfailed
101                pm_call pm_writestr
102                cmp byte [kaboom.again+1],18h   ; INT 18h version?
103                je .int18
104                pm_call pm_getchar
105                pm_call syslinux_force_text_mode
106                int 19h                 ; And try once more to boot...
107.norge:         jmp short .norge        ; If int 19h returned; this is the end
108.int18:
109                pm_call syslinux_force_text_mode
110                int 18h
111.noreg:         jmp short .noreg        ; Nynorsk
112
113; -----------------------------------------------------------------------------
114;  Common modules
115; -----------------------------------------------------------------------------
116
117%include "common.inc"           ; Universal modules
118
119; -----------------------------------------------------------------------------
120;  Begin data section
121; -----------------------------------------------------------------------------
122
123                section .data16
124                global copyright_str
125copyright_str   db ' Copyright (C) 1994-'
126                asciidec YEAR
127                db ' H. Peter Anvin et al', CR, LF, 0
128err_bootfailed  db CR, LF, 'Boot failed: please change disks and press '
129                db 'a key to continue.', CR, LF, 0
130
131;
132; Misc initialized (data) variables
133;
134%ifdef debug                            ; This code for debugging only
135debug_magic     dw 0D00Dh               ; Debug code sentinel
136%endif
Note: See TracBrowser for help on using the repository browser.