2022-01-26 16:52:30 -05:00
|
|
|
/*
|
2022-01-26 17:43:18 -05:00
|
|
|
Copyright (c) 2008-2009 Micah Elizabeth Scott
|
2022-01-26 16:52:30 -05:00
|
|
|
Copyright (c) 2022 Alex Kotov <kotovalexarian@gmail.com>
|
|
|
|
|
|
|
|
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 2 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, write to the Free Software Foundation, Inc.,
|
|
|
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
*/
|
|
|
|
|
2022-01-26 15:19:39 -05:00
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
#include "config.h"
|
|
|
|
#endif
|
2022-01-26 17:43:18 -05:00
|
|
|
|
2022-01-26 18:03:47 -05:00
|
|
|
#include "x86_common.h"
|
2022-01-26 17:43:18 -05:00
|
|
|
|
2022-01-26 15:19:39 -05:00
|
|
|
.code16
|
|
|
|
.global _start
|
|
|
|
.section .text
|
2022-01-26 18:03:47 -05:00
|
|
|
STAGE2_START
|
2022-01-26 17:43:18 -05:00
|
|
|
|
|
|
|
hello: .string "Hello, World!\r\n"
|
|
|
|
|
2022-01-26 18:03:47 -05:00
|
|
|
main:
|
|
|
|
mov $STAGE2_ADDR(hello), %si
|
2022-01-26 17:43:18 -05:00
|
|
|
call print_str
|
2022-01-26 18:03:47 -05:00
|
|
|
mov $STAGE2_ADDR(hello), %si
|
2022-01-26 17:43:18 -05:00
|
|
|
call print_str
|
2022-01-26 18:03:47 -05:00
|
|
|
mov $STAGE2_ADDR(hello), %si
|
2022-01-26 17:43:18 -05:00
|
|
|
call print_str
|
2022-01-26 15:19:39 -05:00
|
|
|
|
2022-01-26 16:29:18 -05:00
|
|
|
hang:
|
2022-01-26 15:19:39 -05:00
|
|
|
cli
|
|
|
|
hlt
|
2022-01-26 16:29:18 -05:00
|
|
|
jmp hang
|
2022-01-26 17:43:18 -05:00
|
|
|
|
|
|
|
do_ret:
|
|
|
|
ret
|
|
|
|
|
|
|
|
print_char:
|
|
|
|
mov $0x0E, %ah
|
|
|
|
mov $0x0001, %bx
|
|
|
|
int $0x10
|
|
|
|
jmp do_ret
|
|
|
|
|
|
|
|
print_str:
|
|
|
|
lodsb
|
|
|
|
test %al, %al
|
|
|
|
jz do_ret
|
|
|
|
call print_char
|
|
|
|
jmp print_str
|