none
Floppy support gone in Windows Virtual PC?

    Question

  • Hello.

    I love the new Windows Virtual PC.
    But I have a problem.

    I know that the Windows Virtual PC at the core is still (or almost the same) as virtual PC 2007.
    But in Windows Virtual PC I cannot select an Floppy drive or mount an floppy.
    Did the team remove floppy support?

    I have run Microsoft Virtual PC 2007 SP1 on Windows 7 RC, but after a while it gave an BSOD with only Kernel-Power in the event viewer nothing else.
    And since I have removed Virtual PC 2007 and installed the new Windows Virtual PC it works great, no BSOD.

    But then I have update the Windows 7 machine and I can't longer install Virtual PC 2007 SP1.

    I am asking it, did you remove the floppy support from windows virtual PC or did you disabled the feature.
    Or does it only catch a real floppy drive with floppy in it only and not images.

    Can I run Microsoft Virtual PC 2007 SP1 in Vista compatibility mode with no problems on Windows 7 RC then?
    Tuesday, May 26, 2009 3:13 PM

Answers

  • You can work off following snippets to write script that satisfies your requirement:

    ...
    
    Set objVPC = CreateObject("VirtualPC.Application")
    
    Set objVM = objVPC.FindVirtualMachine("name of the VM")
    
    Set colFloppyDrives = objVM.FloppyDrives
    
    For Each objDrive in colFloppyDrives
    
        retVal = objDrive.AttachImage("path of vfd file")
    
    Next
    
    ...


    And to release the floppy drives, snippet would be something like this:

    ...
    
    For Each objDrive in colFloppyDrives
    
        retVal = objDrive.ReleaseImage()
    
    Next 
    
    ...
    Hope this helps.
    "This posting is provided "AS IS" with no warranties, and confers no rights. You assume all risk for your use."
    Wednesday, May 27, 2009 5:33 AM

All replies

  • There is no UI to attach a floppy to the VM but you can do so using COM calls/scripts.

    Documentation is available here : http://msdn.microsoft.com/en-us/library/dd796757(VS.85).aspx
    "This posting is provided "AS IS" with no warranties, and confers no rights. You assume all risk for your use."
    Tuesday, May 26, 2009 3:33 PM
  • There is no UI to attach a floppy to the VM but you can do so using COM calls/scripts.

    Documentation is available here : http://msdn.microsoft.com/en-us/library/dd796757(VS.85).aspx
    "This posting is provided "AS IS" with no warranties, and confers no rights. You assume all risk for your use."

    Thanks for the answer.

    But I am not an scripting guy or something like that.
    (Can't really understand code, just some simple stuff).


    If someone can write me an example script it is greatly appreciated.

    Also I need to change the floppy during and installation, can I modify the script then and run it and it dismount the current image and remount the next image?
    Tuesday, May 26, 2009 5:48 PM
  • You can work off following snippets to write script that satisfies your requirement:

    ...
    
    Set objVPC = CreateObject("VirtualPC.Application")
    
    Set objVM = objVPC.FindVirtualMachine("name of the VM")
    
    Set colFloppyDrives = objVM.FloppyDrives
    
    For Each objDrive in colFloppyDrives
    
        retVal = objDrive.AttachImage("path of vfd file")
    
    Next
    
    ...


    And to release the floppy drives, snippet would be something like this:

    ...
    
    For Each objDrive in colFloppyDrives
    
        retVal = objDrive.ReleaseImage()
    
    Next 
    
    ...
    Hope this helps.
    "This posting is provided "AS IS" with no warranties, and confers no rights. You assume all risk for your use."
    Wednesday, May 27, 2009 5:33 AM
  • I also hope the new beta(s) will include standard virtual floppy support out of the box. I like the idea of preconfigured OSes, but my target is legacy (DOS and CP/M) support, which works excellently in VPC2007.

    Like Rob, I just don't have the resources to start learning COM scripting technologies so I can write scriptlets to let me access floppy drive virtualisation from a modern VM. I've come to rely on that basic support from startup, but I do understand this is all still beta code.

    Unlike most folks reading this (I assume!), I have no need for fancy networking support or additional virtual hard disks or sound or even mouse support, so I guess I'm not part of the target demographic.

    Fingers crossed later releases will include better legacy device (floppy) support. That also means using floppy ISO and IMG files, which is where all my legacy OS code and installs are kept.

    If anyone can suggest a resource that might help without needing me to write COM scripts, I'd really appreciate hearing it!


    Data is not Information; Information is not Knowledge; Knowledge is not Wisdom.
    Friday, July 17, 2009 3:38 AM
  •   You have already given the obvious answer to your problem. Use VPC 2007. Sooner or later legacy support has to be droppped from the latest version. For the floppy drive, that time is now.

     
    Bill
    • Proposed as answer by PC Pete Friday, July 17, 2009 6:51 AM
    Friday, July 17, 2009 5:50 AM
  • Yeah, I had that sinking feeling as soon as I saw there was absolutely no floppy support in the beta. From my perspective, that's a pity, and it will stop me from using the newest VM software, but I guess from the developers' perspective, this is probably champagne time!

    I guess my permanent workaround is to hang on to and keep using VPC 2007. Since that emulates pretty much everything that the new virtualisation code does (I'm not interested in emulating anything later than XP x32), that's the least-worst option.

    Thanks for the honesty!
    Data is not Information; Information is not Knowledge; Knowledge is not Wisdom.
    Friday, July 17, 2009 6:59 AM
  • You can work off following snippets to write script that satisfies your requirement:

    ...
    
    Set objVPC = CreateObject("VirtualPC.Application")
    
    Set objVM = objVPC.FindVirtualMachine("name of the VM")
    
    Set colFloppyDrives = objVM.FloppyDrives
    
    For Each objDrive in colFloppyDrives
    
        retVal = objDrive.AttachImage("path of vfd file")
    
    Next
    
    ...


    And to release the floppy drives, snippet would be something like this:

    ...
    
    For Each objDrive in colFloppyDrives
    
        retVal = objDrive.ReleaseImage()
    
    Next 
    
    ...
    Hope this helps.
    "This posting is provided "AS IS" with no warranties, and confers no rights. You assume all risk for your use."

    Thats great and all...but i'm fairly certain the majority don't know the basics of writing a script,and the documentation you linked comes out blank

    i can't even google it because i don't know what kind of script you're talking about

    and why would you give a snippet when all people need is a full script for it? it's not like people install more then 1 floppy disk drive....
    Saturday, July 18, 2009 5:21 PM
  • Wow.  What a complete snob.  No that is NOT the obvious answer.  You may as well be a Linux snob telling a person to go recompile their kernel for support of X or Y feature.  You seem to be missing the core reason for Virtual PC in the first place.  Namely legacy support.  Also to simulate instances where you would need a floppy instead of a flash drive which still DOES occur in enterprise environments.
    I ran across this thread as I was setting up XP Mode in Win7.  That was done.  Now I'm setting up a DOS 6.22 image to play older games from.  I have Virt PC's DOS Virtual Machine Additions that can't be added because there is no floppy support.  And yet they left in COM support.  you'd think that would be even less useful then a floppy.  The reality is that leaving the ability to mount either a real floppy drive or a virtual .img costs MS virtually nothing.
    Saturday, August 29, 2009 8:31 AM
  • You can attach a floppy, at boot time, by manually editting the VMC file, here is open...

    Open your .VMC file and look for the tag <super_io>.  Within this tag should be a placeholder for a floppy drive that looks like the following:

       <floppy id="0">
        <pathname>
         <absolute type="string" />
        </pathname>
       </floppy>

    To attached you floppy, just edit it as follows:

       <floppy id="0">
        <pathname>
         <absolute type="string">C:\MyFloppy.flp</absolute>
        </pathname>
       </floppy>

    Now when you boot, it should recognize the floppy drive.  I was able to successfully install a 3rd party SCSI driver using the Windows Recovery console.
    Monday, September 07, 2009 7:17 PM
  • I'm amazed that microsoft has hobbled, what was otherwise a great tool for legacy support.

    I know that the NTVDM was removed from the x64 & Itanium systems, but come on, some of us actually STILL use and support MS-DOS based stuff. 

    What is next? Serial ports? Parallel ports? 

    I'm really surprised that you took a product to keep legacy systems running on modern machines, and started to kill it's ability to run legacy stuff.

    I'd really hate to have to buy VMWare, but I guess that is the 'real' solution going forward as clearly MS has no interest in Virtual PC as a legacy support role, but to just deal with the craptacular backwards compatability of Internet Explorer.

    We all know DOSBox has eaten the 'dos games' market that Virtual PC enjoyed back at connectix, but now the thought of relying on VMWare for accurate emulation (those guestpc hooks are buggy, and no it never does run OS/2 all that well).

    The least you could do is remove the recursive detection so we can run VPC 2004 & 2007 inside of Microsoft Virtual PC, so we can continue to enjoy *SOME* legacy support.
    Wednesday, September 16, 2009 1:28 AM
  • Can you explain where you come up with C:\MyFloppy.flp ?  Is that a floppy image file?  I'd like to actually read the physical floppy.  What application did you use to generate the floppy image?

       <floppy id="0">
        <pathname>
         <absolute type="string">C:\MyFloppy.flp</absolute>
        </pathname>
       </floppy>
    MVP - Windows Desktop Experience
    Friday, September 25, 2009 3:43 PM
  • At least with Qemu it's \\.\A: to access the physical drive... You can always use winimage to create floppy images.  A better alternative as it would seem is SUN's virtualbox.  It'll use vmware & virtual pc disk images... and it has floppy support!!

    They seem far more interested in supporting legacy apps then Microsoft.
    Saturday, September 26, 2009 3:01 PM
  • Seems odd for a product that clearly a key ingredient in legacy support.  I guess they really want to kill off anything older than Windows 7...
    MVP - Windows Desktop Experience
    Saturday, September 26, 2009 3:53 PM
  • You can attach a floppy, at boot time, by manually editting the VMC file, here is open...

    Open your .VMC file and look for the tag <super_io>.  Within this tag should be a placeholder for a floppy drive that looks like the following:

       <floppy id="0">
        <pathname>
         <absolute type="string" />
        </pathname>
       </floppy>

    To attached you floppy, just edit it as follows:

       <floppy id="0">
        <pathname>
         <absolute type="string">C:\MyFloppy.flp</absolute>
        </pathname>
       </floppy>

    Now when you boot, it should recognize the floppy drive.  I was able to successfully install a 3rd party SCSI driver using the Windows Recovery console.

    The only .VMC file I find on my Windows 7 system is Windows XP Mode.vmcx and it does not contain any <super_io> tag. So obviously since there is no such tag, there can be nothing within the non-existent tag. I don't know the basics of writing or running script either. I have been trying all week to figure out how to mount a physical floppy drive, so that I can install two production programs that only install from a floppy drive. I have read all these posts and have tried what has been recommended, to no avail. Why does this have to be so hard for the average computer user? I installed Windows 7 64 bit, thinking that I could use the Windows XP Mode virtual machine to run my legacy production programs. Boy, was I ever wrong. I can't imagine why Microsoft would provide a Windows XP virtual machine that doesn't have out-of-the-box floppy drive support. There has to be a number of computer users like myself that upgraded to Windows 7, thinking that the Microsoft Virtual Machine 7 would take care of us so we could run our legacy production programs. Come on guys! Since Microsoft didn't build this into the Windows XP Mode GUI, please provide a COMPLETE script that will mount a floppy drive and provide DETAILED instructions on how to run it. That can't be too much to ask so that we can have floppy disk drive access.
    Thursday, November 12, 2009 3:14 AM
  • Look about halfway down in the Windows XP Mode.VMC
     
    file, you'll find the following.  Of course, I agree this does not answer the question of how to simply attach to a physical floppy. 

    <super_io> <floppy id="0"> <pathname> <absolute type="string" /> <relative type="string" /> </pathname> </floppy> <parallel_port> <port_type type="integer">0</port_type> </parallel_port> <serial_port> <connect_immediately type="boolean">false</connect_immediately> </serial_port> <serial_port id="0"> <port_type type="integer">0</port_type> </serial_port> <serial_port id="1"> <port_type type="integer">0</port_type> </serial_port> </super_io>
    _
    MVP - Windows Desktop Experience
    • Edited by JohnWill Thursday, November 12, 2009 1:27 PM typo
    Thursday, November 12, 2009 1:26 PM
  • Look about halfway down in the Windows XP Mode.VMC
    
    
    

    file, you'll find the following. Of course, I agree this does not answer the question of how to simply attach to a physical floppy.






    <super_io>
    <floppy id="0">
    <pathname>
    <absolute type="string" />
    <relative type="string" />
    </pathname>
    </floppy>
    <parallel_port>
    <port_type type="integer">0</port_type>
    </parallel_port>
    <serial_port>
    <connect_immediately type="boolean">false</connect_immediately>
    </serial_port>
    <serial_port id="0">
    <port_type type="integer">0</port_type>
    </serial_port>
    <serial_port id="1">
    <port_type type="integer">0</port_type>
    </serial_port>
    </super_io>
    _
    MVP - Windows Desktop Experience

    I had previously done a search for *.vmc and the only results that came up were C:\Program Files\"User Name"\Virtual Machines\Windows XP Mode.vmcx. After opening this file again and closely looking at the contents, it mentioned the Windows XP Mode.vmc file in the C:\Program Files\"User Name"\AppData\Local\Microsoft\Windows Virtual PC\Virtual Machines folder. I don't know why a search didn't find this .vmc file initially. Using Notepad, I edited this file as described above by Matt Dean, and then saved the file. If I close the file and then reopen it in Notepad, the added text is still there. But after starting the virtual machine and then shutting it down, then the added text is gone from the Windows XP Mode.vmc file after opening it again in Notepad.

    Then I opened the Windows XP Mode virtual machine again and checked to see if the floppy drive mounted, which of course it didn't. So I then closed the virtual machine again. I reopened the Windows XP Mode.vmc file and it no longer has the text that I added, according to Matt Dean's instructions. This added text stays in the Windows XP Mode.vmc file until I run the Windows XP Mode virtual machine and then shut it down again. I am still getting the message "Please insert a disk into Drive A:." because the added text is apparently being deleted when the virtual machine starts up. I can't figure out why the addition of C:\MyFloppy.flp</absolute> after <absolute type="string" /> doesn't stay in the Windiows XP Mode.vmc file after Windows XP Mode virtual machine is opened. This is really strange.
    Thursday, November 12, 2009 6:30 PM
  • You may need to actually shutdown the VM instead of hibernate it.  I know all the VM's have to be inactive.

    MVP - Windows Desktop Experience
    Thursday, November 12, 2009 9:20 PM
  • This works if I only need a single floppy image, but how do I change the disk when asked?  For example, when setting up MS-DOS, and it asks for disk 2 and disk 3?  I tried adding extra <floppy id="1">, etc, but that didn't do it.

    D
    Thursday, November 19, 2009 3:09 PM
  • Well, this is only a band-aid, it's really simply not supported.
    MVP - Windows Desktop Experience
    Thursday, November 19, 2009 6:39 PM
  • archer, you're pushing sh!t uphill using the crippled VM/XP addin, it will never work the way you (or I) need. Been there, done that, got the wasted afternoon and edited vmcs to prove it...

    You're going to be FAR better off by uninstalling the Virtual XP (you need to use Add/Remove Programs, go to "Turn Windows Features On/Off", scroll down to "Virtual Windows PC" and the XP entry and disable them, then go to the Virtual PC homepage and download Virtual PC 2007 and install your licenced copy of XP32 in that. Then you'll have full virtual and physical floppy support, and you can even change virtual floppies on the fly.

    I don't pretend to understand MS's attitude with the crippled and insanely limited "virtual" add-ins, but for folks like us who need a bit more than a pretty, shiny GUI, they're not going to do what we need them to. VPC 2007 is much, much more flexible, more robust, and it works.

    I hope this helps.
    Thursday, November 19, 2009 10:47 PM
  • Matt Dean's approach worked for me on Win7 Ultimate 64, after replacing the C:\MyFloppy.flp in his code snippet with just a plain A (note: no space, colon, or backslash following the A).  This is based on A being the drive letter of a genuine floppy drive. 

    e.g.

    <super_io>
       <floppy id="0">
        <pathname>
         <absolute type="string">A</absolute>
         <relative type="string" />
        </pathname>
       </floppy>

    With this method, I had no problems installing a legacy 16 bit program that spanned multiple floppy disks from my trusty old floppy drive A.

    I had no joy however in getting either a folder or floppy image file on C to mimic a floppy drive (which looks like where Matt was going with C:\MyFloppy.flp), but your mileage may vary.  I stopped beating my head against that after figuring out the plain A solution. 

    As JohnWill noted, Windows Virtual PC must be shutdown fully to edit and successfully update the hidden system file (via a plain text editor like notepad):

    C:\Users\User_Account_Name\AppData\Local\Microsoft\Windows Virtual PC\Virtual Machines\Windows XP Mode.vmc

    PG


     
    • Proposed as answer by Spannerhands Monday, July 16, 2012 5:43 PM
    • Unproposed as answer by Spannerhands Monday, July 16, 2012 5:44 PM
    • Proposed as answer by Spannerhands Monday, July 16, 2012 5:44 PM
    Sunday, November 22, 2009 6:11 AM
  • I also wanted to mention that a physical floppy drive can be made available inside Windows Virtual PC by setting it up as a shared drive in Win7 (outside the virtual PC).  Set its rights to Everyone.  Then when working inside Win Virtual PC XP mode, it should show up accessible under My Computer as a new network drive (in addition to the regular listing of the A drive that isn't).

    This allows access to files on the floppy inside Win Virtual PC, and that may be all you need for some tasks. 
     
    Note however that some legacy floppy program installs may not recognize the shared floppy drive as a proper floppy drive, and so they refuse to install.  In that case, the approach Matt and I outlined earlier may very well get you past that hurdle.

    PG

    Sunday, November 22, 2009 7:23 PM
  • Just my .02 cents

    1. Create a floppy image (FloppyImage.vfd). Download WinImage (http://www.winimage.com).
    2. Save the file as (D:\FloppyImage.vfd), where D:\ is the path for the file FloppyImage.vfd
    3. Shut down the virtual machine Window XP Mode.
    4. Run the script below in Windows PowerShell (provided by Arun's Blog  Windows Virtual PC Floppy Support)
       a. Open Notepad and enter the script

    $vmName = "Windows XP Mode"                # name of the virtual machine
    $floppyImagePath = "D:\FloppyImage.vfd"    # full path to the virtual floppy image
    $vpc = new-object -com VirtualPC.Application
    $vm = $vpc.FindVirtualMachine($vmName)
    foreach ($floppyDrive in $vm.FloppyDrives)
    {
        $retVal = $floppyDrive.AttachImage($floppyImagePath)
    }

       b. Save the file as (D:\scripts\floppy.ps1), where D:\scripts is the path for the file floppy.ps1
       c. Go to PowerShell
       d. Enter Set-ExecutionPolicy RemoteSigned. The default is Restricted.
       e. Run the script  (a dot and a space and a pathname) 

          . D:\scripts\floppy.ps1
    References:
    Arun's Blog  Windows Virtual PC Floppy Support (http://blogs.msdn.com/arun/archive/2009/08/12/windows-virtual-pc-floppy-support.aspx)
    Windows PowerShell Owner's Manual (http://technet.microsoft.com/en-us/library/ee221100.aspx)

    Humphrey
    • Proposed as answer by Đonny Wednesday, December 15, 2010 10:31 PM
    Thursday, December 17, 2009 7:54 AM
  • Hi:

    Using the info from Virtual PC Guy's Blog and Script Guy, I wrote a Powershell script that uses standard GUI File Dialog Boxes with a text menu to connect/disconnect a physical or virtual floppy to a virtual machine in Virtual PC 7.  The script works regardless of the state of the virtual machine, and you can run multiple instances of it simultaneously.  You can view the instructions by opening it in Notepad.  You can also edit the file to specify the default location of your VM files and virtual disk files.  You may need permission to run the script (instructions to set execution policy to remotesigned; instructions at http://psobject.codeplex.com/wikipage?title=Execution%20Policy&ProjectName=psobject). 

    The script is on this website: www.virtualuser.net

    If you cannot find it, the direct link is here: www.virtualuser.net/files/vpc7/VPCFloppy.ps1

    I have not done extensive debugging on the script, so please let me know if anything needs to be changed. 

    • Proposed as answer by Derek A Wong Thursday, April 01, 2010 6:25 AM
    Thursday, April 01, 2010 5:55 AM
  • Yeah, I understand the floppy-support-has-got-to-go attitude, but you think that Microsoft would have thunk it out a little better.   A VBScript to use a floppy drive?  Ridiculous!  Even so, how do you run the VBscript before your boot?

    In my case, I am trying to migrate a physical PC to a virtual PC.  I tried backing up the physical PC using the ASR utilities, which are included in windows and which write a floppy disk, so that you can boot off of that floppy disk to restore your system.  However, since the Virtual PC cannot boot off that floppy without going through the gyrations of creating a virtual floppy disk from the physical floppy disk and booting form the virtual floppy disk, I don't have a good technique to migrate my phyical PC's to virtual PC's.  Yes, I have tried Disk2vhd, but it didn't work for me.

    So on one hand Microsoft says "you cannot boot from a physical floppy drive in Virtual PC because we are done supporting lagacy systems"  and on the other hand they say "create a bootable floppy to recover your system."  What is the harm of adding a floppy disk to the "settings" option of vitual PC? 

    Yeah, I may have to look at the VMWARE option because MS won't listen to customers.  Kudos to the people who laid it out in this thread.

    Isn't lack of an easy migration path to the newer systems (VMS to Alpha) what killed DEC?  Microsoft should take a lesson.

    Monday, October 11, 2010 4:59 AM
  • A VBScript to use a floppy drive?  Ridiculous!  Even so, how do you run the VBscript before your boot?

    You run it on the host before you boot the VM...

    So on one hand Microsoft says "you cannot boot from a physical floppy drive in Virtual PC because we are done supporting lagacy systems"  and on the other hand they say "create a bootable floppy to recover your >system."  What is the harm of adding a floppy disk to the "settings" option of vitual PC? 

    I don't know why they decided what they decided.

    Isn't lack of an easy migration path to the newer systems (VMS to Alpha) what killed DEC?  Microsoft should take a lesson.

    Not really, DEC was messed up, VMS was just one of the OS's that DEC
    hardware ran, and Alpha was just a RISC CPU architecture trying to
    replace a CISC and DEC software wasn't very hardware agnostic like the
    midrange machines from IBM, they were already well on the way down by
    that time though...


    Bob Comer - Microsoft MVP Virtual Machine
    Monday, October 11, 2010 1:04 PM
  • Here is a quick workaround for using multiple virtual floppy images with Windows Virtual PC. Change the code in the .vmc file of your VM accordingly:

    <super_io>
        <floppy id="0">
            <pathname>
                <absolute type="string">C:\Path_to_BootDisk\BootDisk.vhd</absolute>
                <relative type="string" />
            </pathname>
        </floppy>

    This will boot the VM using BootDisk.vhd. Now, when you need to swap the first floppy with the second one, just hibernate the VM to unlock the BootDisk.vhd file (you can't replace it while the VM is running), replace the original BootDisk.vhd with the new floppy image and start the VM again. I know it's a PITA when you need to do that a dozen of times, but it works well when you just need to use a bunch of floppies to install from the CD, as is the case for OS/2 Warp 4.

    Thursday, November 11, 2010 10:28 AM
  • humphrey444 thaks a lot

    This way I was able to install DOS from MSDN on Virtual PC under W7.

    First converted DOS *.IMG files to *.VHF using winimage

    Then slightly modified your script and run it step-by-step from PowerShell console.

    You can do something like:

    $f = $vm.FloppyDrives
    $f.Items(0).AttachImage($floppyImagePath)
    

    This way I was able to swap diskettes while the VPC was running (it is necessary because DOS is on three 1.44 images and needs one or two empty floppies for backup)


    Đ.
    Wednesday, December 15, 2010 10:37 PM
  • For those who still having problems like I had, You need to run PowerShell as administrator
    Saturday, August 27, 2011 7:02 AM
  • Thankyou PanGraham..
    but for some reason I am unable to use Drive Letter 'A' which is emulated by a "Virtual Floppy Drive" in Windows 7 x64 Ultimate.
    how ever I was able to use an arbitrary drive Letter like 'K'. 

    --
    long live the Floppy :D
    Sunday, December 18, 2011 5:26 PM
  • You should be able to use a USB external floppy drive.  They are inexpensive.  If you don't want to do that, Ben's blog on how to use a floppy drive with WVPC is here:

    http://blogs.msdn.com/b/virtual_pc_guy/archive/2009/10/01/using-floppy-disks-with-windows-virtual-pc.aspx


    Colin Barnhorst Windows 7 Ultimate x64 on DIY with 6GB ram.
    Sunday, December 18, 2011 7:38 PM