/* * NTFS bootsector, adapted from the vfat one. */ /* mkfs.fat.c - utility to create FAT/MS-DOS filesystems * Copyright (C) 1991 Linus Torvalds * Copyright (C) 1992-1993 Remy Card * Copyright (C) 1993-1994 David Hudson * Copyright (C) 1998 H. Peter Anvin * Copyright (C) 1998-2005 Roman Hodek * Copyright (C) 2008-2014 Daniel Baumann * Copyright (C) 2015 Andreas Bombe * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program. If not, see . * The complete text of the GNU General Public License * can be found in /usr/share/common-licenses/GPL-3 file. */ #include "boot.h" #define BOOTCODE_SIZE 4136 /* The "boot code" we put into the filesystem... it writes a message and * tells the user to try again */ #define MSG_OFFSET_OFFSET 3 const unsigned char boot_array[BOOTCODE_SIZE] = "\xeb\x52\x90" /* jump to code at 0x54 (0x7c54) */ "NTFS \0" /* NTFS signature */ "\0\0\0\0\0\0\0\0\0\0\0\0" /* 72 bytes for device parameters */ "\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0" /* Boot code run at location 0x7c54 */ "\x0e" /* push cs */ "\x1f" /* pop ds */ "\xbe\x71\x7c" /* mov si, offset message_txt (at location 0x7c71) */ /* write_msg: */ "\xac" /* lodsb */ "\x22\xc0" /* and al, al */ "\x74\x0b" /* jz key_press */ "\x56" /* push si */ "\xb4\x0e" /* mov ah, 0eh */ "\xbb\x07\x00" /* mov bx, 0007h */ "\xcd\x10" /* int 10h */ "\x5e" /* pop si */ "\xeb\xf0" /* jmp write_msg */ /* key_press: */ "\x32\xe4" /* xor ah, ah */ "\xcd\x16" /* int 16h */ "\xcd\x19" /* int 19h */ "\xeb\xfe" /* foo: jmp foo */ /* message_txt: */ "This is not a bootable disk. Please insert a bootable floppy and\r\n" "press any key to try again ... \r\n" /* At location 0xd4, 298 bytes to reach 0x1fe */ /* 298 = 4 blocks of 72 then 10 */ "\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0" /* Boot signature at 0x1fe */ "\x55\xaa";