1# Copyright (c) KATO Takenori, 1999, 2000. 2# 3# All rights reserved. Unpublished rights reserved under the copyright 4# laws of Japan. 5# 6# Redistribution and use in source and binary forms, with or without 7# modification, are permitted provided that the following conditions 8# are met: 9# 10# 1. Redistributions of source code must retain the above copyright 11# notice, this list of conditions and the following disclaimer as 12# the first lines of this file unmodified. 13# 2. Redistributions in binary form must reproduce the above copyright 14# notice, this list of conditions and the following disclaimer in the 15# documentation and/or other materials provided with the distribution. 16# 3. The name of the author may not be used to endorse or promote products 17# derived from this software without specific prior written permission. 18# 19# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 20# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 21# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 22# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 23# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 24# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 28# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29# 30# $FreeBSD$ 31 32 .globl start 33 .code16 34start: 35 jmp main 36 37 .org 4 38 .ascii "IPL1" 39 .byte 0, 0, 0 40 41 .globl start 42main: 43 xor %ax, %ax 44 mov %ax, %ds 45 mov (0x584), %al # DA/UA 46 mov %al, %ah 47 and $0xf0, %ah 48 cmp $0x90, %ah 49 je fdd 50 51 # hdd 52 mov $6, %ah 53 mov $0x3000, %bx 54 mov %bx, %es 55 mov $0x2000, %bx 56 xor %cx, %cx 57 xor %dx, %dx 58 xor %bp, %bp 59 int $0x1b 60 jc error_hdd 61 62 push %ax 63 mov %es, %ax 64 add $0x40, %ax 65 mov %ax, %es 66 pop %ax 67 push %es 68 push %bp 69 lret 70 71 # fdd 72fdd: 73 xor %di, %di 74fdd_retry: 75 mov $0xd6, %ah 76 mov $0x3000, %bx 77 mov %bx, %es 78 mov $0x2000, %bx 79 mov $0x0200, %cx 80 mov $0x0001, %dx 81 xor %bp, %bp 82 int $0x1b 83 jc error 84 push %ax 85 mov %es, %ax 86 add $0x40, %ax 87 mov %ax, %es 88 pop %ax 89 push %es 90 push %bp 91 lret 92 93error: 94 or %di, %di 95 jnz error_hdd 96 and $0x0f, %al 97 or $0x30, %al 98 jmp fdd_retry 99 100error_hdd: 101 jmp error 102 103 .org 0x1fa 104 .byte 0 # defflag_off 105 .byte 0 # defpart_off 106 .byte 1 # menu version 107 .byte 0 108 .word 0xaa55 109