Skip to content

Instantly share code, notes, and snippets.

@DavidBuchanan314
Forked from hasherezade/boot_me.asm
Last active July 2, 2017 21:06
Embed
What would you like to do?
; a sample bootloader
; created for fun by hasherezade
;
; compile:
; nasm boot.asm -f bin -o boot.bin
;
; Copy to flash disk (as root)
; example if the flash disk is /dev/sdb:
; dd if=boot.bin of=/dev/sdb bs=512 count=1
;
[bits 16]
[org 0x7C00]
;code
main:
xor ax,ax
mov ds,ax
mov es,ax
mov [drive_id], dl
call set_page_1
mov bp, banner
mov cx, (banner_len - banner)
mov dh, 0 ;row
mov dl, 0 ;column
call printstr
jmp load_chess_loader
set_page_1:
mov ah, 0x5
mov al, 1 ;page number
int 0x10 ; BIOS video interrupt
ret
printstr:
mov ah, 0x13 ; write string
mov bh, 0x1 ; page number
mov bl, 0x0B ; color
int 0x10 ; BIOS video interrupt
ret
load_chess_loader:
xor ah, ah
int 0x16 ; wait for keystroke
; Read BootChess from disk
mov si, DAPACK
mov dl, [drive_id]
mov ah, 0x42
int 0x13
; Relocate code
mov si, chess_loader
mov di, 0x8000
mov cx, DAPACK - chess_loader
rep movsb
jmp 0x8000
chess_loader: ; This code will be relocated to 0x8000
mov si, 0x7E00
mov di, 0x7C00
mov cx, 0x200
rep movsb
jmp 0:0x7C00 ; Jump to BootChess
;data
DAPACK:
db 0x10
db 0
dw 1
dw 0x7E00
dw 0
dd 1
dd 0
banner db 'TIRED OF PETYA?', 13, 10, 'HOW ABOUT A NICE GAME OF CHESS?', 13, 10
banner_len db 0
drive_id db 0
times 510-($-$$) db 0 ;padding
dw 0xAA55 ;end signature
bootchess: ; http://www.pouet.net/prod.php?which=64962
db 0x0E,0x1F,0x0E,0x07,0xB8,0x13,0x00,0xCD,0x10,0xBF,0x04,0x7E,0xBD,0x0C,0x00
db 0xE8,0x0D,0x00,0x68,0xA4,0x7C,0xAC,0xB1,0x08,0xF3,0xAA,0x4D,0x75,0xF8,0xB4
db 0xE0,0xBE,0xB4,0x7D,0xB9,0x08,0x00,0xAC,0x00,0xE0,0xAA,0xE2,0xFA,0xB1,0x08
db 0xF3,0xA4,0xC3,0x89,0xFB,0xB6,0x31,0xB2,0x68,0x89,0x14,0xB5,0x31,0xB1,0x68
db 0x89,0x4C,0x02,0x60,0xE8,0x10,0x01,0x76,0x26,0x53,0xE8,0x62,0x00,0x5B,0x72
db 0x1F,0xBF,0xFF,0x7D,0x46,0xA6,0x73,0x05,0x80,0x3D,0x3F,0x74,0x0F,0x8A,0x40
db 0xAD,0xFE,0xC8,0x78,0x0C,0x8C,0xE3,0x38,0xC3,0x73,0x06,0x8E,0xE3,0x4E,0x4E
db 0x66,0xA5,0x61,0x80,0xF9,0x61,0xE0,0xCB,0xFE,0xC5,0x80,0xFD,0x39,0x75,0xC2
db 0x43,0x4A,0x80,0xFA,0x60,0x75,0xB7,0xFE,0xC6,0x38,0xEE,0x75,0xAF,0x66,0xFF
db 0x74,0x04,0x66,0x8F,0x04,0xB1,0x2E,0xE8,0xC4,0x00,0x83,0xF5,0x03,0x74,0x9A
db 0xB0,0x3F,0x89,0xF7,0xB9,0x08,0x00,0xF3,0xAA,0xE8,0x76,0x00,0x76,0xF2,0xE8
db 0x04,0x00,0x72,0xED,0xEB,0xE1,0xE8,0xA5,0x00,0x87,0xDA,0x8A,0x60,0xAF,0x88
db 0xDE,0x81,0xEA,0x61,0x61,0x0F,0xBD,0xD8,0x0F,0xBE,0x58,0xA8,0x8B,0x48,0xB2
db 0x9E,0x7B,0x02,0x72,0x02,0x79,0x02,0xB1,0x01,0x7B,0x02,0x01,0xEB,0x43,0x80
db 0xE4,0xFC,0x51,0x88,0xF0,0x43,0x02,0x40,0xB2,0x86,0xC3,0x8A,0x68,0x10,0x86
db 0xC3,0x38,0xD0,0x75,0x13,0x9E,0x7B,0x2D,0xF6,0x40,0xB2,0x01,0x74,0x06,0x84
db 0xED,0x75,0x23,0xEB,0x1A,0x84,0xED,0x74,0x1D,0x9E,0x7B,0x06,0xF6,0x40,0xB2
db 0x01,0x75,0x0D,0x84,0xED,0x75,0x09,0x9E,0x74,0x02,0x76,0x04,0xA8,0x88,0xE1
db 0xC9,0x59,0xFE,0xCD,0x75,0xC0,0xF9,0xC3,0x59,0xC3,0xE8,0x0D,0x00,0x31,0xDB
db 0x98,0xCD,0x16,0xFE,0xCC,0x75,0x02,0xCD,0x19,0x88,0x00,0x60,0x99,0xB8,0x01
db 0x13,0xB3,0x07,0xB1,0x08,0xBD,0xF4,0x7D,0xCD,0x10,0x83,0xC5,0x10,0x50,0xB8
db 0x39,0x0E,0x28,0xF0,0xCD,0x10,0x58,0x38,0xCE,0xFE,0xC6,0x72,0xEC,0x89,0xF5
db 0xCD,0x10,0x61,0x43,0x80,0xFB,0x04,0x72,0xCA,0xE2,0xFE,0xBE,0xFC,0x7D,0x8B
db 0x1C,0x98,0xE8,0x08,0x00,0x8B,0x54,0x02,0x87,0xDA,0x68,0x8B,0x7D,0x93,0xD5
db 0xF0,0x04,0x80,0x93,0xE3,0x1C,0x80,0x7C,0x03,0x38,0x74,0x06,0x80,0x7C,0x03
db 0x31,0x75,0x07,0x9E,0x7B,0x04,0x80,0xF4,0x46,0x41,0x86,0x60,0xAF,0x86,0x48
db 0xA7,0x80,0xCC,0x01,0xC3,0x9E,0x78,0x96,0xE8,0x02,0x00,0x75,0x81,0x87,0xDA
db 0x8A,0x40,0xA7,0x80,0x74,0xAC,0x08,0xB1,0x9F,0x85,0xED,0x75,0x02,0xB1,0xBF
db 0x0F,0xC0,0xC8,0xD4,0x12,0x88,0xC8,0x84,0xE4,0xC3,0x22,0x29,0x2E,0x37,0x3C
db 0x3C,0x72,0x6E,0x62,0x71,0x6B,0x62,0x6E,0x72,0x08,0x10,0x20,0x40,0x80,0x20
db 0x10,0x08,0x70,0x04,0x2E,0x00,0x2E,0x00,0x2E,0x00,0x2E,0x00,0x50,0x04,0x02
db 0x03,0xF0,0xF1,0xEF,0x10,0x0F,0x11,0x04,0x10,0xFF,0xF0,0x01,0x08,0x1F,0x21
db 0x12,0xF2,0xE1,0xDF,0xEE,0x0E,0x04,0xF1,0x11,0xEF,0x0F,0x08,0x10,0x11,0x0F
db 0x01,0xF0,0xEF,0xF1,0xFF,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x65,0x32
db 0x65,0x34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment