socsvn commit: r239530 - soc2012/syuu/bhyve-bios/lib/libbiosemul
syuu at FreeBSD.org
syuu at FreeBSD.org
Wed Jul 18 10:04:42 UTC 2012
Author: syuu
Date: Wed Jul 18 10:04:39 2012
New Revision: 239530
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=239530
Log:
import doscmd source code to libbiosemul, cannnot compile for now
Added:
soc2012/syuu/bhyve-bios/lib/libbiosemul/
soc2012/syuu/bhyve-bios/lib/libbiosemul/AsyncIO.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/AsyncIO.h
soc2012/syuu/bhyve-bios/lib/libbiosemul/Makefile
soc2012/syuu/bhyve-bios/lib/libbiosemul/Makefile.dos
soc2012/syuu/bhyve-bios/lib/libbiosemul/PROBLEMS
soc2012/syuu/bhyve-bios/lib/libbiosemul/ParseBuffer.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/README
soc2012/syuu/bhyve-bios/lib/libbiosemul/README.booting_dos
soc2012/syuu/bhyve-bios/lib/libbiosemul/bios.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/callback.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/callback.h
soc2012/syuu/bhyve-bios/lib/libbiosemul/cmos.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/com.h
soc2012/syuu/bhyve-bios/lib/libbiosemul/config.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/cp437-8x14.fnt.uu
soc2012/syuu/bhyve-bios/lib/libbiosemul/cp437-8x14.pcf.gz.uu
soc2012/syuu/bhyve-bios/lib/libbiosemul/cp437-8x16.fnt.uu
soc2012/syuu/bhyve-bios/lib/libbiosemul/cp437-8x16.pcf.gz.uu
soc2012/syuu/bhyve-bios/lib/libbiosemul/cp437-8x8.fnt.uu
soc2012/syuu/bhyve-bios/lib/libbiosemul/cp437-8x8.pcf.gz.uu
soc2012/syuu/bhyve-bios/lib/libbiosemul/cpu.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/crt0.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/cwd.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/cwd.h
soc2012/syuu/bhyve-bios/lib/libbiosemul/debug.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/disktab.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/dispatch.h
soc2012/syuu/bhyve-bios/lib/libbiosemul/dos.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/dos.h
soc2012/syuu/bhyve-bios/lib/libbiosemul/doscmd.1
soc2012/syuu/bhyve-bios/lib/libbiosemul/doscmd.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/doscmd.h
soc2012/syuu/bhyve-bios/lib/libbiosemul/doscmd_loader.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/ems.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/ems.h
soc2012/syuu/bhyve-bios/lib/libbiosemul/emsdriv.S
soc2012/syuu/bhyve-bios/lib/libbiosemul/emsdriv.sys.uu
soc2012/syuu/bhyve-bios/lib/libbiosemul/emuint.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/emuint.h
soc2012/syuu/bhyve-bios/lib/libbiosemul/exe.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/fonts.dir
soc2012/syuu/bhyve-bios/lib/libbiosemul/i386-pinsn.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/int.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/int10.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/int13.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/int14.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/int16.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/int17.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/int1a.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/int2f.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/intff.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/mem.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/mouse.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/mouse.h
soc2012/syuu/bhyve-bios/lib/libbiosemul/net.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/port.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/redir.S
soc2012/syuu/bhyve-bios/lib/libbiosemul/redir.com.uu
soc2012/syuu/bhyve-bios/lib/libbiosemul/register.h
soc2012/syuu/bhyve-bios/lib/libbiosemul/setver.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/signal.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/timer.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/trace.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/trap.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/trap.h
soc2012/syuu/bhyve-bios/lib/libbiosemul/tty.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/tty.h
soc2012/syuu/bhyve-bios/lib/libbiosemul/video.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/video.h
soc2012/syuu/bhyve-bios/lib/libbiosemul/vparams.h
soc2012/syuu/bhyve-bios/lib/libbiosemul/xms.c
soc2012/syuu/bhyve-bios/lib/libbiosemul/xms.h
Added: soc2012/syuu/bhyve-bios/lib/libbiosemul/AsyncIO.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ soc2012/syuu/bhyve-bios/lib/libbiosemul/AsyncIO.c Wed Jul 18 10:04:39 2012 (r239530)
@@ -0,0 +1,263 @@
+/*
+ * Copyright (c) 1992, 1993, 1996
+ * Berkeley Software Design, Inc. All rights reserved.
+ *
+ * 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.
+ * 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.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Berkeley Software
+ * Design, Inc.
+ *
+ * THIS SOFTWARE IS PROVIDED BY Berkeley Software Design, Inc. ``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 Berkeley Software Design, Inc. 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.
+ *
+ * BSDI AsyncIO.c,v 2.2 1996/04/08 19:32:10 bostic Exp
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: projects/doscmd/AsyncIO.c,v 1.9 2002/05/10 10:40:46 tg Exp $");
+
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <signal.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#include "doscmd.h"
+#include "AsyncIO.h"
+
+#define FD_ISZERO(p) ((p)->fds_bits[0] == 0)
+
+/*
+ * Set or Clear the Async nature of an FD
+ */
+
+#define SETASYNC(fd) fcntl(fd, F_SETFL, handlers[fd].flag | FASYNC)
+#define CLRASYNC(fd) fcntl(fd, F_SETFL, handlers[fd].flag & ~FASYNC)
+
+/*
+ * Request that ``func'' be called everytime data is available on ``fd''
+ */
+
+static fd_set fdset; /* File Descriptors to select on */
+
+typedef struct {
+ void (*func)(int, int, void *, regcontext_t *);
+ /* Function to call on data arrival */
+ void (*failure)(void *); /* Function to call on failure */
+ void *arg; /* Argument to above functions */
+ int lockcnt; /* Nested level of lock */
+ fd_set members; /* Set of FD's to disable on SIGIO */
+ int flag; /* The flag from F_GETFL (we own it) */
+} Async;
+
+static Async handlers[OPEN_MAX];
+
+static void CleanIO(void);
+static void HandleIO(struct sigframe *sf);
+
+void
+_RegisterIO(int fd, void (*func)(int, int, void *, regcontext_t *),
+ void *arg, void (*failure)(void *))
+{
+ static int firsttime = 1;
+ Async *as;
+
+ if (fd < 0 || fd > OPEN_MAX) {
+printf("%d: Invalid FD\n", fd);
+ return;
+ }
+
+ as = &handlers[fd];
+
+ if ((as->flag = fcntl(fd, F_GETFL, 0)) == -1) {
+ if (func) {
+/*@*/ perror("get fcntl");
+/*@*/ abort();
+ return;
+ }
+ }
+
+ if (firsttime) {
+ firsttime = 0;
+ setsignal(SIGIO, HandleIO);
+ }
+
+ if ((handlers[fd].func = func) != 0) {
+ as->lockcnt = 0;
+ as->arg = arg;
+ as->failure = failure;
+
+ FD_SET(fd, &fdset);
+ FD_ZERO(&handlers[fd].members);
+ FD_SET(fd, &handlers[fd].members);
+ if (fcntl(fd, F_SETOWN, getpid()) < 0) {
+/*@*/ perror("SETOWN");
+ }
+ SETASYNC(fd);
+ } else {
+ as->arg = 0;
+ as->failure = 0;
+ as->lockcnt = 0;
+
+ CLRASYNC(fd);
+ FD_CLR(fd, &fdset);
+ }
+}
+
+static void
+CleanIO()
+{
+ int x;
+ static struct timeval tv;
+
+ /*
+ * For every file des in fd_set, we check to see if it
+ * causes a fault on select(). If so, we unregister it
+ * for the user.
+ */
+ for (x = 0; x < OPEN_MAX; ++x) {
+ fd_set set;
+
+ if (!FD_ISSET(x, &fdset))
+ continue;
+
+ FD_ZERO(&set);
+ FD_SET(x, &set);
+ errno = 0;
+ if (select(FD_SETSIZE, &set, 0, 0, &tv) < 0 &&
+ errno == EBADF) {
+ void (*f)(void *);
+ void *a;
+printf("Closed file descriptor %d\n", x);
+
+ f = handlers[x].failure;
+ a = handlers[x].arg;
+ handlers[x].failure = 0;
+ handlers[x].func = 0;
+ handlers[x].arg = 0;
+ handlers[x].lockcnt = 0;
+ FD_CLR(x, &fdset);
+ if (f)
+ (*f)(a);
+ }
+ }
+}
+
+static void
+HandleIO(struct sigframe *sf)
+{
+ static struct timeval tv;
+ fd_set readset, writeset;
+ int x, fd;
+
+again:
+ readset = writeset = fdset;
+ if ((x = select(FD_SETSIZE, &readset, &writeset, 0, &tv)) < 0) {
+ /*
+ * If we failed because of a BADFiledes, go find
+ * which one(s), fail them out and then try a
+ * new select to see if any of the good ones are
+ * okay.
+ */
+ if (errno == EBADF) {
+ CleanIO();
+ if (FD_ISZERO(&fdset))
+ return;
+ goto again;
+ }
+ perror("select");
+ return;
+ }
+
+ /*
+ * If we run out of fds to look at, break out of the loop
+ * and exit the handler.
+ */
+ if (x == 0)
+ return;
+
+ /*
+ * If there is at least 1 fd saying it has something for
+ * us, then loop through the sets looking for those
+ * bits, stopping when we have handleed the number it has
+ * asked for.
+ */
+ for (fd = 0; x && fd < OPEN_MAX; fd ++) {
+ Async *as;
+ int cond;
+
+ cond = 0;
+
+ if (FD_ISSET(fd, &readset)) {
+ cond |= AS_RD;
+ x --;
+ }
+ if (FD_ISSET(fd, &writeset)) {
+ cond |= AS_WR;
+ x --;
+ }
+
+ if (cond == 0)
+ continue;
+
+ /*
+ * Is suppose it is possible that one of the previous
+ * I/O requests changed the fdset.
+ * We do know that SIGIO is turned off right now,
+ * so it is safe to checkit.
+ */
+ if (!FD_ISSET(fd, &fdset)) {
+ continue;
+ }
+ as = &handlers[fd];
+
+ /*
+ * as in above, maybe someone locked us...
+ * we are in dangerous water now if we are
+ * multi-tasked
+ */
+ if (as->lockcnt) {
+ fprintf(stderr, "Selected IO on locked %d\n",fd);
+ continue;
+ }
+ /*
+ * Okay, now if there exists a handler, we should
+ * call it. We must turn back on SIGIO if there
+ * are possibly other people waiting for it.
+ */
+ if (as->func) {
+ (*handlers[fd].func)(fd, cond, handlers[fd].arg,
+ (regcontext_t *)&sf->sf_uc.uc_mcontext);
+ } else {
+ /*
+ * Otherwise deregister this guy.
+ */
+ _RegisterIO(fd, 0, 0, 0);
+ }
+ }
+ /*
+ * If we did not process all the fd's, then we should
+ * break out of the probable infinite loop.
+ */
+}
Added: soc2012/syuu/bhyve-bios/lib/libbiosemul/AsyncIO.h
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ soc2012/syuu/bhyve-bios/lib/libbiosemul/AsyncIO.h Wed Jul 18 10:04:39 2012 (r239530)
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 1992, 1993, 1996
+ * Berkeley Software Design, Inc. All rights reserved.
+ *
+ * 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.
+ * 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.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Berkeley Software
+ * Design, Inc.
+ *
+ * THIS SOFTWARE IS PROVIDED BY Berkeley Software Design, Inc. ``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 Berkeley Software Design, Inc. 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.
+ *
+ * BSDI AsyncIO.h,v 2.2 1996/04/08 19:32:12 bostic Exp
+ *
+ * $FreeBSD: projects/doscmd/AsyncIO.h,v 1.4 2001/10/02 11:28:59 tg Exp $
+ */
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+enum {
+ AS_RD = 1,
+ AS_WR = 2
+};
+
+void _RegisterIO(int, void (*)(int, int, void *, regcontext_t *),
+ void *, void (*)(void *));
+#if defined(__cplusplus)
+}
+#endif
+
+#define _Un_RegisterIO(x) _RegisterIO((x), (void (*))0, (void *)0, (void (*))0)
Added: soc2012/syuu/bhyve-bios/lib/libbiosemul/Makefile
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ soc2012/syuu/bhyve-bios/lib/libbiosemul/Makefile Wed Jul 18 10:04:39 2012 (r239530)
@@ -0,0 +1,80 @@
+# from BSDI Makefile,v 2.6 1996/04/08 20:06:40 bostic Exp
+#
+# $FreeBSD: projects/doscmd/Makefile,v 1.39 2004/03/30 17:10:01 des Exp $
+
+PROG= doscmd
+WARNS?= 2
+SRCS= AsyncIO.c ParseBuffer.c bios.c callback.c cmos.c config.c cpu.c cwd.c \
+ debug.c disktab.c dos.c doscmd.c ems.c emuint.c exe.c i386-pinsn.c \
+ int.c int10.c int13.c int14.c int16.c int17.c int1a.c int2f.c intff.c \
+ mem.c mouse.c net.c port.c setver.c signal.c timer.c trace.c trap.c \
+ tty.c video.c xms.c ${FONTHDRS}
+CFLAGS+= -I. -DDISASSEMBLER
+FONTFILES= cp437-8x8.pcf.gz cp437-8x14.pcf.gz cp437-8x16.pcf.gz
+FONTHDRS= font8x8.h font8x14.h font8x16.h
+CLEANFILES= ${FONTFILES} ${FONTHDRS} emsdriv.sys redir.com
+
+PREFIX?= /usr/local
+BINDIR?= ${PREFIX}/bin
+DATADIR?= ${PREFIX}/share/doscmd
+DOCSDIR?= ${PREFIX}/share/doc/doscmd
+FONTDIR?= ${DATADIR}/fonts
+
+X11BASE?= /usr/X11R6
+XINCDIR?= ${X11BASE}/include
+XLIBDIR?= ${X11BASE}/lib
+
+DIRMODE?= 0755
+
+.if !defined(NO_X)
+CFLAGS+= -I${XINCDIR}
+LDFLAGS= -L${XLIBDIR}
+LDADD= -lX11
+DPADD= ${XLIBDIR}/libX11.a
+.else
+CFLAGS+= -DNO_X
+.endif
+
+beforeinstall:
+ ${INSTALL} -d -o ${SHAREOWN} -g ${SHAREGRP} -m ${DIRMODE} ${DATADIR}
+ ${INSTALL} -o ${SHAREOWN} -g ${SHAREGRP} -m ${SHAREMODE} \
+ emsdriv.sys redir.com ${DATADIR}
+ ${INSTALL} -d -o ${DOCOWN} -g ${DOCGRP} -m ${DIRMODE} ${DOCSDIR}
+ ${INSTALL} -o ${DOCOWN} -g ${DOCGRP} -m ${DOCMODE} \
+ ${.CURDIR}/README* ${.CURDIR}/PROBLEMS ${DOCSDIR}
+.if !defined(NO_X)
+ ${INSTALL} -d -o ${SHAREOWN} -g ${SHAREGRP} -m ${DIRMODE} ${FONTDIR}
+ ${INSTALL} -o ${SHAREOWN} -g ${SHAREGRP} -m ${SHAREMODE} \
+ ${FONTFILES} ${.CURDIR}/fonts.dir ${FONTDIR}
+.endif
+
+doscmd: ${FONTFILES} ${FONTHDRS} emsdriv.sys redir.com
+
+cp437-8x8.pcf.gz: cp437-8x8.pcf.gz.uu
+ uudecode ${.CURDIR}/cp437-8x8.pcf.gz.uu
+
+cp437-8x14.pcf.gz: cp437-8x14.pcf.gz.uu
+ uudecode ${.CURDIR}/cp437-8x14.pcf.gz.uu
+
+cp437-8x16.pcf.gz: cp437-8x16.pcf.gz.uu
+ uudecode ${.CURDIR}/cp437-8x16.pcf.gz.uu
+
+emsdriv.sys: emsdriv.sys.uu
+ uudecode ${.CURDIR}/emsdriv.sys.uu
+
+font8x8.h: cp437-8x8.fnt.uu
+ uudecode -p ${.ALLSRC} | \
+ file2c 'u_int8_t font8x8[] = {' '};' > ${.TARGET}
+
+font8x14.h: cp437-8x14.fnt.uu
+ uudecode -p ${.ALLSRC} | \
+ file2c 'u_int8_t font8x14[] = {' '};' > ${.TARGET}
+
+font8x16.h: cp437-8x16.fnt.uu
+ uudecode -p ${.ALLSRC} | \
+ file2c 'u_int8_t font8x16[] = {' '};' > ${.TARGET}
+
+redir.com: redir.com.uu
+ uudecode ${.CURDIR}/redir.com.uu
+
+.include <bsd.prog.mk>
Added: soc2012/syuu/bhyve-bios/lib/libbiosemul/Makefile.dos
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ soc2012/syuu/bhyve-bios/lib/libbiosemul/Makefile.dos Wed Jul 18 10:04:39 2012 (r239530)
@@ -0,0 +1,48 @@
+# Special makefile for the as86/ld86 tools
+#
+# This is used only to make the dos tools. It is not used in the normal
+# build process, except one of the *.S files is changed. The ready to
+# use tools are included as uuencoded files.
+# To use this makefile you must have Bruce Evans bcc package installed
+#
+# $FreeBSD: projects/doscmd/Makefile.dos,v 1.2 2001/07/24 11:50:23 tg Exp $
+
+AS86 = as86
+LD86 = ld86
+
+OBJS = redir.o emsdriv.o
+DOSPROG = redir.com emsdriv.sys
+DOSDIST = redir.com.uu emsdriv.sys.uu
+
+all: ${DOSPROG} ${DOSDIST}
+
+redir.com: redir.o
+ $(LD86) -T 0 -s -o ${.PREFIX}.tmp ${.ALLSRC}
+ dd if=${.PREFIX}.tmp of=${.TARGET} bs=1 skip=288
+ rm -f ${.PREFIX}.tmp
+
+emsdriv.sys: emsdriv.o
+ $(LD86) -T 0 -s -o ${.PREFIX}.tmp ${.ALLSRC}
+ dd if=${.PREFIX}.tmp of=${.TARGET} bs=1 skip=32
+ rm -f ${.PREFIX}.tmp
+
+redir.com.uu: redir.com
+ uuencode redir.com redir.com > redir.com.uu
+
+emsdriv.sys.uu: emsdriv.sys
+ uuencode emsdriv.sys emsdriv.sys > emsdriv.sys.uu
+
+clean:
+ rm -f ${DOSPROG} ${OBJS}
+
+allclean:
+ rm -f ${DOSPROG} ${DOSDIST} ${OBJS}
+
+
+# Rule for as86
+.S.o:
+ $(AS86) -0 -o ${.TARGET} ${.IMPSRC}
+
+
+
+
Added: soc2012/syuu/bhyve-bios/lib/libbiosemul/PROBLEMS
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ soc2012/syuu/bhyve-bios/lib/libbiosemul/PROBLEMS Wed Jul 18 10:04:39 2012 (r239530)
@@ -0,0 +1,21 @@
+trailing \ missing in tempname (affects PKZIP)
+
+FCB find routines don't store the state correctly (affects DIR, NUSQ, GET)
+support for non-extended FCBs is broken (affects LAR)
+wrong device attributes reported after redirection (affects GZIP)
+REP IN/OUT not implemented
+find_next may not close fd
+tty modes wrong when running in terminal session
+devices not really implemented
+
+keyboard queue not fully implemented (affects VSAFE)
+several ioctl request not implemented (affects PKZOOM)
+no font file
+int 0x28 not implemented
+timer chip not implemented
+country info needs localization
+
+specific programs:
+charc crashes with a segment overrun
+sqwez gets a fault while exiting
+jrc outputs its banner again on exit, and sometimes complains about aa.aaa
Added: soc2012/syuu/bhyve-bios/lib/libbiosemul/ParseBuffer.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ soc2012/syuu/bhyve-bios/lib/libbiosemul/ParseBuffer.c Wed Jul 18 10:04:39 2012 (r239530)
@@ -0,0 +1,92 @@
+/*
+ * Copyright (c) 1992, 1993, 1996
+ * Berkeley Software Design, Inc. All rights reserved.
+ *
+ * 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.
+ * 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.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Berkeley Software
+ * Design, Inc.
+ *
+ * THIS SOFTWARE IS PROVIDED BY Berkeley Software Design, Inc. ``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 Berkeley Software Design, Inc. 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.
+ *
+ * BSDI ParseBuffer.c,v 2.2 1996/04/08 19:32:15 bostic Exp
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: projects/doscmd/ParseBuffer.c,v 1.5 2002/03/07 12:52:26 obrien Exp $");
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "doscmd.h"
+int
+ParseBuffer(obuf, av, mac)
+char *obuf;
+char **av;
+int mac;
+{
+ static char *_buf;
+ char *buf;
+ static int buflen = 0;
+ int len;
+
+ register char *b = buf;
+ register char *p;
+ register char **a;
+ register char **e;
+
+ len = strlen(obuf) + 1;
+ if (len > buflen) {
+ if (buflen)
+ free(_buf);
+ buflen = (len + 1023) & ~1023;
+ _buf = malloc(buflen);
+ }
+ buf = _buf;
+ strcpy(buf, obuf);
+
+ a = av;
+ e = &av[mac];
+
+ while (*buf) {
+ while (*buf == ' ' || *buf == '\t' || *buf == '\n')
+ ++buf;
+ if (*buf) {
+ p = b = buf;
+
+ *a++ = buf;
+ if (a == e) {
+ a[-1] = (char *)0;
+ return(mac - 1);
+ }
+
+ while (*p && !(*p == ' ' || *p == '\t' || *p == '\n')) {
+ *b++ = *p++ & 0177;
+ }
+ if (*p)
+ ++p;
+ *b = 0;
+ buf = p;
+ }
+ }
+ *a = (char *)0;
+ return(a - av);
+}
Added: soc2012/syuu/bhyve-bios/lib/libbiosemul/README
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ soc2012/syuu/bhyve-bios/lib/libbiosemul/README Wed Jul 18 10:04:39 2012 (r239530)
@@ -0,0 +1,37 @@
+/* BSDI README,v 2.2 1996/04/08 19:32:16 bostic Exp*/
+/* $FreeBSD: projects/doscmd/README,v 1.4 2002/05/16 02:18:59 trhodes Exp $ */
+
+This is the merged doscmd/rundos project. Please read the man
+page for help on configuring doscmd.
+
+Things known not to work:
+ * No mouse support (yet)
+ * No raw VGA support (yet)
+ * Printer support (yet)
+ * COM ports (being worked on)
+ * redirected filesystem only supported for DOS 4.0 and above
+ (3.3 will be supported in a future version)
+ * Graphics in an X window (only 16 colors, very few programs)
+
+Even with this, I think it is actually a much better product. There have
+been problems reported with the ibmpc font and the distributed X server.
+If you have that problem, try setting
+
+ X11_FONT=fixed
+
+in your .doscmdrc. Be aware that graphics characters will not print correctly
+if you do this.
+
+You will need to patch your kernel. Diffs are provided against the CD-ROM.
+Please let me know if there are a problem with them (I am running a pre 1.1
+kernel now).
+
+It is possible there are some problems in the floppy code due to the fact
+that I am not set up to test under 1.0 at this point. I will be in a few
+days I hope.
+
+Please send all bug reports to prb at BSDI.COM.
+
+ -Paul Borman
+ prb at BSDI.COM
+ Jan 4 1994
Added: soc2012/syuu/bhyve-bios/lib/libbiosemul/README.booting_dos
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ soc2012/syuu/bhyve-bios/lib/libbiosemul/README.booting_dos Wed Jul 18 10:04:39 2012 (r239530)
@@ -0,0 +1,98 @@
+/* BSDI README.booting_dos,v 2.2 1996/04/08 19:32:18 bostic Exp*/
+/* $FreeBSD: projects/doscmd/README.booting_dos,v 1.5 2002/05/16 02:18:59 trhodes Exp $ */
+
+To install DOS on a pseudo hard disk under doscmd:
+
+ 1) Create a .doscmdrc with at least the following:
+
+ assign A: /dev/fd0.1440 1440
+ assign A: /dev/fd0.720 720
+ assign hard boot_drive 80 2 2
+
+ You may need to adjust the raw files for the A: drive to match
+ your system. This example will cause the HD drive to be tried
+ first and the DD drive second.
+
+ Note that you should only use raw devices or files at this point,
+ do not use a cooked device! (Well, it would probably be okay
+ for a hard disk, but certainly not the floppy)
+
+ boot_drive should be the file name of where you want your bootable
+ image to be. The three numbers which follow "80 2 2" say that the
+ drive will have 80 cylinders, 2 heads and 2 sectors per track.
+ This is the smallest drive possible which still can have MS DOS
+ 5.0 installed on it along with a config.sys and autoexec.bat file.
+
+ You might want to create a larger boot drive.
+
+ The file boot_drive must exist, so use the command touch to create
+ it.
+
+ 2) Insert a floppy disk into the A: drive which is bootable to MS-DOS
+ and has the commands fdisk, format and sys on it. You should also
+ copy the file redir.com onto the floppy by either mounting it
+ with the msdos filesystem type or by using mtools.
+
+ (i.e. mwrite redir.com a:)
+
+ 3) run doscmd.
+
+ 4) At the > prompt type "fdisk"
+
+ 5) Select "Create DOS partition or Logical Drive"
+
+ 6) Select "Create Primary DOS Partition"
+
+ 7) Tell it how big to make it (I say use the whole drive.
+ It is pretty tiny after all.)
+
+ 8) Get out of FDISK by hitting <ESC> a few times.
+
+ 9) doscmd will now abort (will try and fix this in a future version)
+
+ 10) start up doscmd again, leaving the floppy in the drive.
+
+ 11) At the > prompt, type "format c:" and follow the instructions.
+
+ 12) At the > prompt type "sys c:"
+
+ 13) Get out of doscmd.
+
+ 14) Either remove the floppy from the drive or add the line
+
+ boot C:
+
+ to your .doscmdrc
+
+ 15) You should now be running DOS off of your new disk. You will
+ probably want both config.sys and an autoexec.bat file. To
+ start with, you can say:
+
+ > copy con: config.sys
+ LASTDRIVE=Z
+ ^Z
+ > copy con: autoexec.bat
+ @echo off
+ redir.com
+ ^Z
+
+
+ 16) Quit doscmd.
+
+ 17) You now have a bootable pseudo disk which will automatically call
+ the magic "redir" program, which installs FreeBSD disks. To use
+ them add lines to your .doscmdrc such as:
+
+ assign D: /usr/dos
+ assign P: -ro /usr/prb
+
+ Note that you will not always be able to access every file due to
+ naming problems.
+
+ 18) To use the new EMS memory you need to copy the file emsdriv.sys
+ to your DOS boot disk (disk image) in the same way you copied
+ redir.com. The use it in your "config.sys" from DOS:
+ device=C:\emsdriv.sys
+ where C: is your boot drive (supply the correct letter, if needed)
+ and emsdriv.sys is the driver. You could load it high. It should
+ report "Doscmd EMS 4.0 driver installed".
Added: soc2012/syuu/bhyve-bios/lib/libbiosemul/bios.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ soc2012/syuu/bhyve-bios/lib/libbiosemul/bios.c Wed Jul 18 10:04:39 2012 (r239530)
@@ -0,0 +1,322 @@
+/*
+ * Copyright (c) 1992, 1993, 1996
+ * Berkeley Software Design, Inc. All rights reserved.
+ *
+ * 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.
+ * 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.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Berkeley Software
+ * Design, Inc.
+ *
+ * THIS SOFTWARE IS PROVIDED BY Berkeley Software Design, Inc. ``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 Berkeley Software Design, Inc. 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.
+ *
+ * BSDI bios.c,v 2.3 1996/04/08 19:32:19 bostic Exp
+ */
+
+#include <sys/cdefs.h>
+#include <time.h>
+__FBSDID("$FreeBSD: projects/doscmd/bios.c,v 1.9 2002/03/07 12:52:26 obrien Exp $");
+
+#include "doscmd.h"
+#include "mouse.h"
+#include "com.h"
+
+#define BIOS_copyright 0xfe000
+#define BIOS_reset 0xfe05b
+#define BIOS_nmi 0xfe2c3
+#define BIOS_hdisk_table 0xfe401
+#define BIOS_boot 0xfe6f2
+#define BIOS_comm_table 0xfe729
+#define BIOS_comm_io 0xfe739
+#define BIOS_keyboard_io 0xfe82e
+#define BIOS_keyboard_isr 0xfe987
+#define BIOS_fdisk_io 0xfec59
+#define BIOS_fdisk_isr 0xfef57
+#define BIOS_disk_parms 0xfefc7
+#define BIOS_printer_io 0xfefd2
+#define BIOS_video_io 0xff065
+#define BIOS_video_parms 0xff0a4
+#define BIOS_mem_size 0xff841
+#define BIOS_equipment 0xff84d
+#define BIOS_cassette_io 0xff859
+#define BIOS_video_font 0xffa6e
+#define BIOS_time_of_day 0xffe6e
+#define BIOS_timer_int 0xffea5
+#define BIOS_vector 0xffef3
+#define BIOS_dummy_iret 0xfff53
+#define BIOS_print_screen 0xfff54
+#define BIOS_hard_reset 0xffff0
+#define BIOS_date_stamp 0xffff5
+#define BIOS_hardware_id 0xffffe
+
+static u_char disk_params[] = {
+ 0xdf, 2, 0x25, 2, 0x0f, 0x1b, 0xff, 0x54, 0xf6, 0x0f, 8,
+};
+
+static u_short comm_table[] = {
+ 1047, 768, 384, 192, 96, 48, 24, 12,
+};
+
+/* exports */
+
+int nfloppies = 0;
+int ndisks = 0;
+int nserial = 0;
+int nparallel = 0;
+unsigned long rom_config;
+
+/*
+** BIOS equipment list
+*/
+static void
+int11(regcontext_t *REGS)
+{
+ R_AX =
+ (nfloppies ? 1:0) | /* do we have any floppydisks? */
+ (0x2 << 4) | /* 80x25 colour */
+ ((nfloppies-1) << 6) | /* how many floppies? */
+ (nserial << 9) | /* serial ports? */
+ (nparallel << 14); /* parallel ports? */
+}
+
+/*
+** get installed memory
+*/
+static void
+int12(regcontext_t *REGS)
+{
+ R_AX = 640;
+}
+
+/*
+** assorted oddments
+*/
+static void
+int15(regcontext_t *REGS)
+{
+ const struct timespec rqtp={0,1};
+ R_FLAGS &= ~PSL_C;
+
+ switch (R_AH) {
+ case 0x00: /* Get Cassette Status */
+ R_AH = 0x86;
+ R_FLAGS |= PSL_C; /* We don't support a cassette */
+ break;
+ case 0x04: /* Set ABIOS table */
+ R_FLAGS |= PSL_C; /* We don't support it */
+ break;
+ case 0x10: /* DesqView */
+ switch (R_AL) {
+ case 0x00: /* Give up CPU time */
+ nanosleep(&rqtp, NULL);
+ break;
+ case 0x22: /* Get version */
+ R_BH = 0x0a; /* Use v2.0 for timeslice support */
+ R_BL = 0x01;
+ break;
+ }
+ break;
+ case 0x4f: /* Keyboard intercept */
+ debug(D_TRAPS | 0x15, "BIOS: Keyboard intercept\n");
+ /* Don't translate scan code. */
+ break;
+ case 0x88:
+ get_raw_extmemory_info(REGS);
+ break;
+ case 0xc0: /* Get configuration */
+ debug(D_TRAPS | 0x15, "BIOS: Get configuration\n");
+ PUTVEC(R_ES, R_BX, rom_config);
+ R_AH = 0;
+ break;
+ case 0xc1: /* Get extended BIOS data area */
+ R_FLAGS |= PSL_C;
+ break;
+ case 0xc2: /* Pointing device */
+ debug(D_TRAPS | 0x15, "BIOS: Pointing device?\n");
+ R_FLAGS |= PSL_C;
+ R_AH = 5; /* No pointer */
+ break;
+ default:
+ unknown_int2(0x15, R_AX, REGS);
+ break;
+ }
+}
+
+void
+bios_init(void)
+{
+ int i, j, k;
+ u_char *jtab;
+ struct timeval tv;
+ time_t tv_sec;
+ struct timezone tz;
+ struct tm tm;
+ u_long vec;
+
+ strcpy((char *)BIOS_copyright,
+ "Copyright (C) 1993 Krystal Technologies/BSDI");
+
+ *(u_short *)BIOS_reset = 0xffcd;
+ *(u_short *)BIOS_nmi = 0xffcd;
+ *(u_short *)BIOS_boot = 0xffcd;
+ *(u_short *)BIOS_comm_io = 0xffcd;
+ *(u_short *)BIOS_keyboard_io = 0xffcd;
+ *(u_short *)BIOS_keyboard_isr = 0xffcd;
+ *(u_short *)BIOS_fdisk_io = 0xffcd;
+ *(u_short *)BIOS_fdisk_isr = 0xffcd;
+ *(u_short *)BIOS_printer_io = 0xffcd;
+ *(u_short *)BIOS_video_io = 0xffcd;
+ *(u_short *)BIOS_cassette_io = 0xffcd;
+ *(u_short *)BIOS_time_of_day = 0xffcd;
+ *(u_short *)BIOS_timer_int = 0xffcd;
+ *(u_short *)BIOS_dummy_iret = 0xffcd;
+ *(u_short *)BIOS_print_screen = 0xffcd;
+ *(u_short *)BIOS_hard_reset = 0xffcd;
+ *(u_short *)BIOS_mem_size = 0xffcd;
+ *(u_short *)BIOS_equipment = 0xffcd;
+ *(u_short *)BIOS_vector = 0xffcd;
+ *(u_char *)0xffff2 = 0xcf; /* IRET */
+
+ memcpy((u_char *)BIOS_disk_parms, disk_params, sizeof(disk_params));
+ memcpy((u_char *)BIOS_comm_table, comm_table, sizeof(comm_table));
+
+ *(u_short *)BIOS_video_font = 0xffcd;
+
+ jtab = (u_char *)BIOS_date_stamp;
+ *jtab++ = '1';
+ *jtab++ = '0';
+ *jtab++ = '/';
+ *jtab++ = '3';
+ *jtab++ = '1';
+ *jtab++ = '/';
+ *jtab++ = '9';
+ *jtab++ = '3';
+
+ *(u_char *)BIOS_hardware_id = 0xfc; /* Identify as a PC/AT */
+
+ /*
+ * Interrupt revectors F000:0000 - F000:03ff
+ */
+ for (i = 0, j = 0, k = 0; i < 0x100; ++i) {
+ if ((i >= 0x60 && i < 0x68) ||
+ (i >= 0x78 && i < 0xe2))
+ continue;
+ if ((i >= 0x00 && i < 0x2f) ||
+ (i >= 0x30 && i < 0xfe)) {
+ ivec[i] = 0xF0300000L | (k * 1);
+ jtab = (u_char *)VECPTR(ivec[i]);
+ *jtab++ = 0xf4; /* HLT */
+ ++k;
+ } else {
+ ivec[i] = 0xF0000000L | (j * 6);
+ jtab = (u_char *)VECPTR(ivec[i]);
+ *jtab++ = 0xcd; /* INT i */
+ *jtab++ = i;
+ *jtab++ = 0xca; /* RETF 2 */
+ *jtab++ = 2;
+ *jtab++ = 0;
+ ++j;
+ }
+ }
+
+ /*
+ * Misc variables from F000:0400 - F000:0fff
+ */
+ rom_config = 0xF0000400;
+ jtab = (u_char *)VECPTR(rom_config);
+ *jtab++ = 20; /* length of entry */
+ *jtab++ = 0;
+ *jtab++ = *(u_char *)BIOS_hardware_id;
+ *jtab++ = 0x00; /* Sub model */
+ *jtab++ = 0x01; /* Bios Rev Enhanced kbd w/3.5" floppy */
+ *jtab++ = 0x20; /* real time clock present */
+ *jtab++ = 0; /* Reserved */
+ *jtab++ = 0;
+ *jtab++ = 0;
+ *jtab++ = 0;
+ strcpy((char *)jtab, "BSDI BIOS");
+ *jtab += 10;
+
+ InDOS = jtab++;
+ *InDOS = 0;
+
+ mouse_area = jtab;
+ jtab += 0x10;
+
+ *(u_short *)&BIOSDATA[0x10] =
+ (1 << 0) | /* Diskette avail for boot */
+ (1 << 1) | /* Math co-processor */
+ (nmice << 2) | /* No pointing device */
+ (2 << 4) | /* Initial video (80 x 25 C) */
+ ((nfloppies - 1) << 6) | /* Number of floppies - 1 */
+ (nserial << 9) | /* Number of serial devices */
+ (nparallel << 14); /* Number of parallel devices */
+
+
+ *(u_short *)&BIOSDATA[0x13] = 640; /* Amount of memory */
+ BIOSDATA[0x75] = ndisks; /* number of fixed disks */
+
+ BIOSDATA[0x8F] = 0;
+ if (nfloppies >= 1) {
+ BIOSDATA[0x8F] |= 0x04;
+ BIOSDATA[0x90] = 0x40;
+ }
+ if (nfloppies >= 2) {
+ BIOSDATA[0x8F] |= 0x40;
+ BIOSDATA[0x91] = 0x40;
+ }
+
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-soc-all
mailing list