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# 17# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 18# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 19# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27# 28# $FreeBSD$ 29# 30 31 .code16 32 33 .text 34# 35# Wait 1ms 36# 37 .global wait1ms 38wait1ms: 39 push %cx 40 movw $800, %cx 41wait_loop: 42 outb %al, $0x5f 43 loop wait_loop 44 pop %cx 45 ret 46 47# 48# Read one byte from BIOS parameter block 49# %bx offset 50# %dl value 51# 52 .global read_biosparam 53read_biosparam: 54 movb %es:(%bx), %dl 55 ret 56 57# 58# Write one byte to BIOS paramter block 59# %bx offset 60# %dl value 61# 62 .global write_biosparam 63write_biosparam: 64 movb %dl, %es:(%bx) 65 ret 66 67# 68# beep 69# 70 .global beep_on, beep_off, beep 71beep_on: 72 movb $0x17, %ah 73 int $0x18 74 ret 75 76beep_off: 77 movb $0x18, %ah 78 int $0x18 79 ret 80 81beep: 82 push %cx 83 call beep_on 84 movw $100, %cx 85beep_loop1: 86 call wait1ms 87 loop beep_loop1 88 call beep_off 89 movw $50, %cx 90beep_loop2: 91 call wait1ms 92 loop beep_loop2 93 pop %cx 94 ret 95