From 4f8a85184f58b1eaa65b6f02a12dd37f5ff3d7e8 Mon Sep 17 00:00:00 2001 From: fredb Date: Tue, 14 May 2002 13:52:51 +0000 Subject: - - Enable the cdrom driver, and begin to make it work on NetBSD. It can boot a Norton Utilities CD, but not run any of the utilities. That may be the known problem with the Windows 98 CD. - - Add the ability, on NetBSD, to spin up the CD-ROM. This keeps "disklabel cd0" while booted from the NetBSD 1.5.3 rescue floppy from panicing the emulation, but it still doesn't return a label. - - Go ahead and enable the network driver and dummy sound driver. The network driver almost works under the NetBSD rescue floppy (ifconfig works, but not ping). I have no way, currently, of verifying the (dummy, silent) sound driver. - - Bump to 1.4nb1. --- emulators/bochs/Makefile | 7 +++++- emulators/bochs/distinfo | 7 ++++-- emulators/bochs/patches/patch-aa | 11 +++++++- emulators/bochs/patches/patch-ad | 54 ++++++++++++++++++++++++++++++++++++++++ emulators/bochs/patches/patch-af | 15 +++++++++++ emulators/bochs/patches/patch-ag | 14 +++++++++++ 6 files changed, 104 insertions(+), 4 deletions(-) create mode 100644 emulators/bochs/patches/patch-ad create mode 100644 emulators/bochs/patches/patch-af create mode 100644 emulators/bochs/patches/patch-ag (limited to 'emulators/bochs') diff --git a/emulators/bochs/Makefile b/emulators/bochs/Makefile index 3e81367702a..493f2de8abe 100644 --- a/emulators/bochs/Makefile +++ b/emulators/bochs/Makefile @@ -1,6 +1,7 @@ -# $NetBSD: Makefile,v 1.18 2002/05/13 14:47:41 wiz Exp $ +# $NetBSD: Makefile,v 1.19 2002/05/14 13:52:51 fredb Exp $ DISTNAME= bochs-1.4 +PKGREVISION= 1 CATEGORIES= emulators MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=bochs/} @@ -14,6 +15,10 @@ USE_GMAKE= yes # performance. The number of processors can be either 1 (default), 2, or 4. #CONFIGURE_ARGS+= --enable-debugger --enable-disasm #CONFIGURE_ARGS+= --enable-processors=2 +CONFIGURE_ARGS+= --enable-cdrom +CONFIGURE_ARGS+= --enable-ne2000 +CONFIGURE_ARGS+= --enable-sb16=dummy +CONFIGURE_ENV+= CXXFLAGS=-I${X11BASE}/include USE_X11= yes BOCHS_MAINDIR= ${PREFIX}/share/bochs diff --git a/emulators/bochs/distinfo b/emulators/bochs/distinfo index a0477e7f6ec..06b1faf2bd0 100644 --- a/emulators/bochs/distinfo +++ b/emulators/bochs/distinfo @@ -1,8 +1,11 @@ -$NetBSD: distinfo,v 1.7 2002/05/13 14:47:41 wiz Exp $ +$NetBSD: distinfo,v 1.8 2002/05/14 13:52:51 fredb Exp $ SHA1 (bochs-1.4.tar.gz) = db5f1763c8d048831daad34fa81b0f3b15e5e0a8 Size (bochs-1.4.tar.gz) = 1389919 bytes -SHA1 (patch-aa) = a7fdb6c2e4d4f13a80ea44b0c857d5cf52f6d2c6 +SHA1 (patch-aa) = 8c65fa102f606dc7d34611cfc5e5b7ab8542cfb6 SHA1 (patch-ab) = 13ef85883d8f66862194f3ee3ffc577a3676fb3a SHA1 (patch-ac) = 1536b5a110c05452aa423f1581cd09c8f4a486f4 +SHA1 (patch-ad) = 941d696a9556ddf8575362e1128463fadcd8c1af SHA1 (patch-ae) = 05b4d7663735594f427a236428d6cea9510c080e +SHA1 (patch-af) = b76fa463ade0d95e3aa9f1c4f8759e8361d51d57 +SHA1 (patch-ag) = a22ca6f8abf0db67de714f53e3db94cb06e33db6 diff --git a/emulators/bochs/patches/patch-aa b/emulators/bochs/patches/patch-aa index 450625e3910..bae4a3c5d8d 100644 --- a/emulators/bochs/patches/patch-aa +++ b/emulators/bochs/patches/patch-aa @@ -1,4 +1,4 @@ -$NetBSD: patch-aa,v 1.6 2002/05/13 14:12:04 fredb Exp $ +$NetBSD: patch-aa,v 1.7 2002/05/14 13:52:52 fredb Exp $ --- .bochsrc.orig Thu Mar 28 01:49:52 2002 +++ .bochsrc @@ -44,6 +44,15 @@ $NetBSD: patch-aa,v 1.6 2002/05/13 14:12:04 fredb Exp $ #======================================================================= # DISKD: +@@ -108,7 +108,7 @@ + # NOTE: diskd and cdromd must not be used together! + #======================================================================= + #cdromd: dev=D:, status=inserted # for win32 +-#cdromd: dev=/dev/cdrom, status=inserted ++cdromd: dev=/dev/rcd0d, status=ejected + + #======================================================================= + # NEWHARDDRIVESUPPORT: enabled=[0|1] @@ -125,8 +125,8 @@ # boot: a # boot: cdrom diff --git a/emulators/bochs/patches/patch-ad b/emulators/bochs/patches/patch-ad new file mode 100644 index 00000000000..7229ecee440 --- /dev/null +++ b/emulators/bochs/patches/patch-ad @@ -0,0 +1,54 @@ +$NetBSD: patch-ad,v 1.3 2002/05/14 13:52:52 fredb Exp $ + +--- iodev/cdrom.cc.orig Tue Mar 19 19:24:16 2002 ++++ iodev/cdrom.cc +@@ -65,7 +65,7 @@ + #define BX_CD_FRAMESIZE 2048 + #endif + +-#if (defined(__OpenBSD__) || defined(__FreeBSD__)) ++#if (defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__NetBSD__)) + // OpenBSD pre version 2.7 may require extern "C" { } structure around + // all the includes, because the i386 sys/disklabel.h contains code which + // c++ considers invalid. +@@ -357,6 +357,22 @@ + return(true); + } + ++ int ++cdrom_interface::start_cdrom() ++{ ++ // Spin up the cdrom drive. ++ ++ if (fd >= 0) { ++#if defined(__NetBSD__) ++ if (ioctl (fd, CDIOCSTART) < 0) ++ BX_DEBUG(( "start_cdrom: start returns error: %s", strerror (errno) )); ++ return(true); ++#else ++ BX_INFO(("start_cdrom: your OS is not supported yet.")); ++ return(false); // OS not supported yet, return false always. ++#endif ++ } ++} + + void + cdrom_interface::eject_cdrom() +@@ -365,7 +381,7 @@ + // some ioctl() calls to really eject the CD as well. + + if (fd >= 0) { +-#if (defined(__OpenBSD__) || defined(__FreeBSD__)) ++#if (defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__NetBSD__)) + (void) ioctl (fd, CDIOCALLOW); + if (ioctl (fd, CDIOCEJECT) < 0) + BX_DEBUG(( "eject_cdrom: eject returns error." )); +@@ -495,7 +511,7 @@ + + return true; + } +-#elif (defined(__OpenBSD__) || defined(__FreeBSD__)) ++#elif (defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__NetBSD__)) + { + struct ioc_toc_header h; + struct ioc_read_toc_entry t; diff --git a/emulators/bochs/patches/patch-af b/emulators/bochs/patches/patch-af new file mode 100644 index 00000000000..8a323f3a51b --- /dev/null +++ b/emulators/bochs/patches/patch-af @@ -0,0 +1,15 @@ +$NetBSD: patch-af,v 1.3 2002/05/14 13:52:52 fredb Exp $ + +--- iodev/harddrv.cc.orig Sun Mar 24 19:47:14 2002 ++++ iodev/harddrv.cc +@@ -1000,8 +1000,8 @@ + + if (!LoEj && !Start) { // stop the disc + BX_PANIC(("Stop disc not implemented")); +- } else if (!LoEj && Start) { // start the disc and read the TOC +- BX_PANIC(("Start disc not implemented")); ++ } else if (!LoEj && Start) { // Start (spin up) the disc. ++ BX_HD_THIS s[1].cdrom.cd->start_cdrom(); + } else if (LoEj && !Start) { // Eject the disc + atapi_cmd_nop(); + if (BX_HD_THIS s[1].cdrom.ready) { diff --git a/emulators/bochs/patches/patch-ag b/emulators/bochs/patches/patch-ag new file mode 100644 index 00000000000..687c91a728c --- /dev/null +++ b/emulators/bochs/patches/patch-ag @@ -0,0 +1,14 @@ +$NetBSD: patch-ag,v 1.3 2002/05/14 13:52:52 fredb Exp $ + +--- iodev/cdrom.h.orig Fri Feb 1 10:46:28 2002 ++++ iodev/cdrom.h +@@ -49,6 +49,9 @@ + // Read a single block from the CD + void read_block(uint8* buf, int lba); + ++ // Start (spin up) the CD. ++ int start_cdrom(); ++ + private: + int fd; + char *path; -- cgit v1.2.3