aboutsummaryrefslogtreecommitdiff
path: root/sys/boot/pc98/boot0.5/boot0.5.s
diff options
context:
space:
mode:
Diffstat (limited to 'sys/boot/pc98/boot0.5/boot0.5.s')
-rw-r--r--sys/boot/pc98/boot0.5/boot0.5.s293
1 files changed, 0 insertions, 293 deletions
diff --git a/sys/boot/pc98/boot0.5/boot0.5.s b/sys/boot/pc98/boot0.5/boot0.5.s
deleted file mode 100644
index f87800656767..000000000000
--- a/sys/boot/pc98/boot0.5/boot0.5.s
+++ /dev/null
@@ -1,293 +0,0 @@
-# Copyright (c) KATO Takenori, 1999, 2000, 2007.
-#
-# All rights reserved. Unpublished rights reserved under the copyright
-# laws of Japan.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer as
-# the first lines of this file unmodified.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# $FreeBSD$
-#
- .global main
- .code16
-
- .text
-main:
- # Check hireso mode
- movw $0x501, %bx # BIOS_FLAG
- call read_biosparam
- testb $0x08, %dl
- jz normalmode
- movb $1, ishireso
-normalmode:
- call sc_init
-
- # Display title and copyright.
- movw $title, %di
- call sc_puts
- xorw %cx, %cx
- movw $1, %dx
- call sc_goto
- movw $copyright, %di
- call sc_puts
-
- # Scan hard drives
- xorw %si, %si # number of partition
- call scan_sasi # SASI/IDE
- call scan_scsi # SCSI
- movw %si, ndevice
- orw %si, %si
- jnz drives_found
- jmp exit # No hard drives
-
-drives_found:
- # Setup sector size dependent parameters
- movw %si, %cx # %cx = number of devices
-setup_loop:
- movw %cx, %di
- decw %di
- shlw %di
- movw secsize(%di), %ax
- cmpw $1024, %ax
- je setup_1024
- cmpw $512, %ax
- je setup_512
- # 256 bytes/sector
- movw $0x100, partoff(%di)
- movw $0x0fa, defflagoff(%di)
- movw $0x0fb, defpartoff(%di)
- movw $8, maxpart(%di)
- jmp setup_secsize_end
- # 1024 bytes/sector
-setup_1024:
- # XXX Fix me!
- movw $0x400, partoff(%di)
- movw $0x3fa, defflagoff(%di)
- movw $0x3fb, defpartoff(%di)
- movb $32, maxpart(%di)
- jmp setup_secsize_end
- # 512 bytes/sector
-setup_512:
- movw $0x200, partoff(%di)
- movw $0x1fa, defflagoff(%di)
- movw $0x1fb, defpartoff(%di)
- movb $16, maxpart(%di)
-setup_secsize_end:
- loop setup_loop
-
- # For debug with floppy, fake the parameter.
- movw $0x584, %bx # DISK_BOOT
- call read_biosparam
- andb $0xf0, %dl
- cmpb $0x90, %ah
- jne boot_from_hdd
- movb daua, %dl
- call write_biosparam
-
-boot_from_hdd:
- movw $500, %cx
-wait_0_5:
- call wait1ms
- loop wait_0_5
-
- # If the TAB is pressed, don't try to boot from default partition
- xorw %di, %di # flag
-wait_key_release:
- call sc_iskeypress
- orw %ax, %ax
- jz key_release # KBD buffer empty.
- call sc_getc
- cmpb $0x0f, %ah # TAB
- jne wait_key_release
- # TAB pressed
- movw $1, %di
- jmp wait_key_release
-key_release:
- orw %di, %di
- jnz dont_try_default # TAB pressed.
- call trydefault
- # Default partition not found.
-dont_try_default:
- call show_usage
- call showdevices
- call selector
-exit:
- ret
-#
-# Display usage
-#
-show_usage:
- movw $44, %cx
- movw $3, %dx
- call sc_goto
- movw $msg_usage1, %di
- call sc_puts
- movw $44, %cx
- movw $4, %dx
- call sc_goto
- movw $msg_usage2, %di
- call sc_puts
- movw $44, %cx
- movw $5, %dx
- call sc_goto
- movw $msg_usage3, %di
- call sc_puts
- movw $44, %cx
- movw $7, %dx
- call sc_goto
- movw $msg_usage4, %di
- call sc_puts
- movw $44, %cx
- movw $8, %dx
- call sc_goto
- movw $msg_usage5, %di
- call sc_puts
- movw $44, %cx
- movw $9, %dx
- call sc_goto
- movw $msg_usage6, %di
- call sc_puts
- movw $44, %cx
- movw $10, %dx
- call sc_goto
- movw $msg_usage7, %di
- call sc_puts
- movw $44, %cx
- movw $11, %dx
- call sc_goto
- movw $msg_usage8, %di
- call sc_puts
- movw $44, %cx
- movw $16, %dx
- call sc_goto
- movw $msg_usage9, %di
- call sc_puts
- movw $44, %cx
- movw $17, %dx
- call sc_goto
- movw $msg_usage10, %di
- call sc_puts
- movw $44, %cx
- movw $18, %dx
- call sc_goto
- movw $msg_usage11, %di
- call sc_puts
- movw $44, %cx
- movw $19, %dx
- call sc_goto
- movw $msg_usage12, %di
- call sc_puts
- ret
-
-#
-# Display device list
-#
-showdevices:
- movw $2, %cx
- movw $4, %dx
- call sc_goto
- movw $msg_device, %di
- call sc_puts
- xorw %si, %si # %si = device number
- movw ndevice, %cx # %cx = number of devices
-showdev_loop:
- push %cx
- movw $2, %cx
- movw $5, %dx
- addw %si, %dx
- call sc_goto
- # Check DA
- movb daua(%si), %al
- push %ax
- andb $0xf0, %al
- cmpb $0x80, %al
- je show_sasi
- cmpb $0xa0, %al
- je show_scsi
- # unknown device
- movw $msg_unknown, %di
- call sc_puts
- jmp showunit
- # SASI
-show_sasi:
- movw $msg_sasi, %di
- call sc_puts
- jmp showunit
- # SCSI
-show_scsi:
- movw $msg_scsi, %di
- call sc_puts
- # Display unit number.
-showunit:
- pop %ax
- andb $0x0f, %al
- addb $'0', %al
- call sc_putc
- incw %si
- pop %cx
- loop showdev_loop
- movw ndevice, %dx
- addw $5, %dx
- movw $2, %cx
- call sc_goto
- movw $msg_exitmenu, %di
- call sc_puts
- ret
-
- .data
- .global curdevice, ndevice
-ndevice: .word 0 # number of device
-curdevice: .word 0 # current device
-
- .global ishireso
-ishireso: .byte 0
-
-title: .asciz "PC98 Boot Selector Version 1.2"
-copyright: .ascii "(C)Copyright 1999-2007 KATO Takenori. "
- .asciz "All rights reserved."
-msg_device: .asciz "Device"
-msg_sasi: .asciz "SASI/IDE unit "
-msg_scsi: .asciz "SCSI ID "
-msg_unknown: .asciz "unknown unit "
-msg_exitmenu: .asciz "Exit this menu"
-msg_usage1: .asciz "Device list"
-msg_usage2: .asciz "UP, DOWN: select boot device"
-msg_usage3: .asciz "RETURN: move to slice list"
-msg_usage4: .asciz "Slice list"
-msg_usage5: .asciz "UP, DOWN: select boot slice"
-msg_usage6: .asciz "RETURN: boot"
-msg_usage7: .asciz "SPACE: toggle default"
-msg_usage8: .asciz "ESC: move to device list"
-msg_usage9: .asciz "LEGEND"
-msg_usage10: .asciz ">>: selected device/slice"
-msg_usage11: .asciz "*: default slice to boot"
-msg_usage12: .asciz "!: unbootable slice"
-
- .bss
- .global daua, secsize, defflagoff, defpartoff
- .global maxpart, partoff
-daua: .space 12 # DA/DU list
-secsize: .space 12 * 2 # Sector soize
-defflagoff: .space 12 * 2
-defpartoff: .space 12 * 2
-maxpart: .space 12 * 2
-partoff: .space 12 * 2