Subject: Return of Son of Beneath The Planet of Connectix Virtual PC 1.0
To: None <port-i386@NetBSD.ORG>
From: Greg Earle <earle@isolar.Tujunga.CA.US>
List: port-i386
Date: 06/22/1997 19:17:36
I thought I'd post one more followup message to the mailing lists because
people might be interested to see what happened with the "final" 1.0 release
of Connectix's Virtual PC.

I got my hands on a copy of the final 1.0 release of Connectix's Virtual PC
and installed it on my PowerMac 8500/120, running MacOS 7.6.1.  The major
differences between the 1.0beta 6 I tested previously and the final release
version are the floppy support (supposedly much improved) and the ability
to have Shared Folders between the MacOS and the O/S being run under the
emulator.

Well, as it turns out, the Shared Folders bit is somewhat of a misnomer.
The only way to share folders between the MacOS and the O/S being run in
emulation is if the O/S in question has drivers to see the Shared Folders
as separate drive types.  Naturally, Connectix provides this capability
for DOS, Windows 3.1 and Windows 95.  And nothing else.  So there is no
way for NetBSD/i386 to see a MacOS folder as, say, an extra "wd" disk or
somesuch.  To make matters worse, I ran the command provided under DOS
to share the folders, and it didn't work - it wanted to assign the folder to
be shared to be virtual DOS drive F:, but the DOS I booted under VPC was
not set up to recognize any drives other than A:, B: or C:.  (If there's a
way to make DOS recognize an "F:" drive, please enlighten me somebody.)

Anyway, to make a long story short, I downloaded the latest i386 snapshot
SSTO install floppy and dup'ed it onto a blank floppy using "rawrite".
I then booted VPC and stuck the floppy in, and got exactly the same results
as before:

>> NetBSD BOOT: 640/14336 k [2.0Beta2]                   
use hd1a:netbsd to boot sd0 when wd0 is also installed   
press return to boot now, any other key for boot menu    
booting fd0a:netbsd                                      
starting in 0                                            
                                                         
boot: No such file or directory                          
booting fd0a:netbsd.gz                                   
876544+1613824+56420+[57624+64382]=0x28b8fe                            
Copyright (c) 1982, 1986, 1989, 1991, 1993                             
    The Regents of the University of California.  All rights reserved. 
                                                                       
NetBSD 1.2G (INSTALL) #0: Mon Jun 16 16:48:52 PDT 1997              
    perry@jekyll.piermont.com:/usr/src/sys/arch/i386/compile/INSTALL
cpu0: family 5 model 3 step 5                                       
cpu0: ConnectixCPU  (586-class) with MMX                            
real mem  = 15335424                                                
avail mem = 11505664                                                
using 212 buffers containing 868352 bytes of memory                 
mainbus0 (root)                                                     
pci0 at mainbus0 bus 0: configuration mode 2                        
isa0 at mainbus0                                                    
com0 at isa0 port 0x3f8-0x3ff irq 4: ns16550a, working fifo         
com1 at isa0 port 0x2f8-0x2ff irq 3: ns16550a, working fifo         
lpt0 at isa0 port 0x378-0x37b irq 7                                 
wdc0 at isa0 port 0x1f0-0x1f7 irq 14                                
wd0 at wdc0 drive 0: <CntxCorpHD>                                   
wd0: 39MB, 963 cyl, 5 head, 17 sec, 512 bytes/sec                   
wd0: using 16-sector 16-bit pio transfers, lba addressing           
wdc1 at isa0 port 0x170-0x177 irq 15                                
npx0 at isa0 port 0xf0-0xff: error reporting broken; not using      
pcprobe: reset error 3                                              
pc0 at isa0 port 0x60-0x6f irq 1: color                             
fdc0 at isa0 port 0x3f0-0x3f7 irq 6 drq 2                           
fd0 at fdc0 drive 0: 1.44MB 80 cyl, 2 head, 18 sec                  
fd1 at fdc0 drive 1: density unknown                                
biomask c040 netmask c040 ttymask c0c2
md0: internal 1537K image area        
boot device: fd0                      
root on md0a dumps on md0b            
root file system type: ffs            
Enter pathname of shell or RETURN for sh:

You'll notice there is no "de0" device probed, despite the fact that the
VPC documentation claims that the emulated Ethernet is a PCI bus DEC 21041
Ethernet card at IRQ 11.  Here is where things get interesting (and where
my question for the moment lies).  I have a program called "PX" which scans a
PCI bus and reports back what it sees.  I ran it under the Virtual PC emulator
and it looks like this:

-----------------------------------------------------------------------------
  PCI Explorer  v1.13 (941012)                                            R/O
         (c) Copyright 1994 ZNYX Corporation.   All Rights Reserved.         
-----------------------------------------------------------------------------


#########################+--------------------------+########################
#########################|        Main Menu         |########################
#########################+--------------------------+########################
#########################| >PCI Configuration Method|########################
#########################| >PCI Device Selection    |########################
#########################| >Exit Program            |########################
#########################+--------------------------+########################

I chose "PCI Device Selection" and it returned the following:

+--------------------------------+
|         5 PCI Devices          +
+--------------------------------+
| >[00:00:0]  INTEL 122D Device  |
| >[00:07:0]  INTEL 122E Device  |
| >[00:07:1]  INTEL 1230 Device  |
| >[00:08:0]  S3 88B0 Device     |
| >[00:09:0]  DIGITAL 0014 Device|
| >                              |
+--------------------------------+

Examining the "DIGITAL 0014 Device" further, it said

+--------------------------------------------------------+
|             [00:09:0]  DIGITAL 0014 Device             |
|   Reg Off Size     Value   Description                 |
+--------------------------------------------------------+
| >  00   0   16      1011 > Vendor ID                   |
| >  02   0   16      0014 > Device ID                   |
| >O 04   0   16      0007 > Command                     |
| >O 06   0   16      0280 > Status                      |
| >  08   0    8        11 > Revision ID                 |
| >  09   0   24    020000 > Class Code                  |
| >  0B   0    8        02 > [Network] Base Class        |
| >  0A   0    8        00 > [Ethernet] Sub-Class        |
| >  09   0    8        00 > Programming Interface       |
| >  0C   0    8        00 > Cache Line Size             |
| >  0D   0    8        00 > Latency Timer               |
| >  0E   0    8        00 > Header Type                 |
| >  0F   0    8        00 > BIST                        |
| >  10   0   32  00001081 > Base Address                |
| >  14   0   32  C2000000 > Base Address                |
| >  30   0   32  C2000801 > Expansion ROM Base Address  |
| >  3C   0    8        0B > Interrupt Line              |
| >  3D   0    8        01 > [INTA] Interrupt Pin        |
| >  3E   0    8        00 > Min_Gnt                     |
| >  3F   0    8        00 > Max_Lat                     |
+--------------------------------------------------------+

So it looks to me like as if Virtual PC is certainly trying to emulate a
Digital Ethernet card of some variety at IRQ 11 ("Interrupt Line 0B")!

Ergo, can anyone examine this output and tell me why the 1.2G snapshot kernel
doesn't successfully probe this device as being a "de0" Ethernet card?

Given that Shared Folder support isn't available to the NetBSD environment,
having a working Ethernet emulation is fairly vital to being able to get
further along with this experiment.  (I haven't tested the multiple-floppy
case yet to see how well VPC 1.0 deals with pulling out one floppy that it's
seen and replacing it with another floppy that it hasn't.  The older 1.0beta6
release did *not* deal well with changed floppies whatsoever.)

	- Greg