10

I am currently trying to mount a 3.5'' floppy disk drive in a modern computer. What I did is that I bought a 34-pin floppy drive connector to external USB adapter so that I can connect it to my modern motherboard using a 4 pins internal USB to external USB adapter.

The floppy drive works well, I can write and read floppy disks under Linux Mint.

So I tried to write a few OSes to floppies to try to boot on (the floppy drive can be booted on via the USB adapter). Writing the OS images to the floppies works fine, and I can boot on them. But each time I boot on one of them, the OS doesn't seem to load. It usually prints out the OS name on screen, and then it locks, seemingly loading indefinitely. And while it's stuck, the floppy drive doesn't make a sound and its LED stays turned off.

Here are the OSes I tried:

Here are my computer's specs:

  • Motherboard: Asus P8Z77-V Pro/Thunderbolt
  • Processor: Intel Core i5-3570K
  • RAM: 8 Gb
  • Operating System: Linux Mint 17.3 Cinnamon 64bit;
  • Floppy Drive: Alps Electric Co., LTD. DF354H(121G) (Not sure if that's the model reference);
  • Floppy Drive USB Adapter: TEAC USB UF000x (This is the how it's named in the BIOS/UEFI) (34pin floppy connector to USB adapter cable).

Has anyone already encountered this problem? Does it come from my floppy drive, the USB adapter or the OSes?

  • To extend on what is already explained, you need a storage medium which the target operating system knows how to interact with. Your chosen motherboard does not seem to have many suitable interfaces - USB is probably out, SATA may be problematic, you might get something going via a PCI slot. Realistically, you'd do best to find an old motherboard with a 34-pin floppy connector, or a better a PATA (IDE) interface (which you could use with a CF card if not an old disk). That would also let you use your modern system to debug it with a serial port kernel debug stub or gdbstub setup... – Chris Stratton Jul 24 '16 at 17:26
12

In the first phase of the boot process, the BIOS loads the first sector of the disk into memory and executes it. The code in this sector then uses the BIOS to load the code for the second phase, which in turn use their own drivers to load and initialize the remaining OS.

The BIOS knows how to access the USB floppy drive. But when you try to boot an OS that doesn't have drivers for floppy via USB, it gets to the second phase (where it will print the OS name etc.), but it can't load the remaining OS because it can't access the USB floppy as soon as it stops using the BIOS (it could access an internal floppy or harddisk).

So you need to have an OS that includes the drivers to finish the boot from floppy via USB. You can make a bootable USB stick for Freedos, but it looks like they use an additional bootloader (grub, syslinux) that has USB drivers, so this probably won't work for a USB floppy (the bootloaders may be too large to fit on the disk together with all the files you want to have on the disk).

Just accessing USB storage devices (that includes floppies) from DOS seems to be somewhat involved ([1], [2]), you seem to need the USBASPI driver and another driver to map ASPI drives to DOS drive letters.

Depending on what you want to accomplish, booting a FreeDOS system with the USBASPI driver from an USB stick, or accessing the floppy drive from DOSEMU etc., or accessing the DOS files on the drive directly from Linux may be simpler.

  • 1
    I don't think it's possible for a boot floppy -- you'd need to write at least a basic USB stack that fits into 446 bytes. – Mark Jul 11 '16 at 6:16
  • 3
    @Mark Sounds like a job for Programming Puzzles & Code Golf! – wizzwizz4 Jul 11 '16 at 6:21
  • 3
    @Mark: you don't need to, because phase 1 can load phase 2 (which contains the USB stack) using the BIOS, which has it's own USB stack. Otherwise you couldn't boot any OS from USB, CDROM etc. – dirkt Jul 11 '16 at 6:40
  • Thank you for the answer. So are there drivers for those OSes that support USB Floppy? I tried to use an additional bootloader (GRUB) but it was too large for the 1.44MB floppy. – user2109 Jul 11 '16 at 14:26
  • 1
    @RossRidge Ah, but you're running a modern (2018) computer, with a modern BIOS on modern hardware. In the old days (of Windows 98 and XP), the machines we had couldn't boot in the circumstances described. You're "cheating", in using the BIOS to boot from a floppy attached by a USB connection, since back-in-the-day none of the manufacturers were writing BIOS firmware capable of doing that. You can make a PC do anything you like, if you've got the skills to write your own firmware upgrade for the BIOS, and always could; but few had the ability. – Ed999 Jul 13 '18 at 11:17
1

A computer, even a modern one, relies on its BIOS program to initiate boot-up. The BIOS code tells the CPU what steps must be taken in order to pass control of the boot process to the desired operating system.

In order to function, the BIOS chip contains code. That code has, for some years now, been firmware code. In other words, where the early IBM compatible computers used a BIOS chip that could not be reprogrammed, modern BIOS chips can be flashed with a firmware upgrade.

Because the BIOS controls the hardware in the initial stage of the bootstrap process, it can only pass control to those hardware devices it recognises, such as a local hard disk, floppy disk, or CD-ROM drive.

The way to initiate booting from a non-recognised device (i.e. one for which the BIOS firmware has no code) is to write your own firmware upgrade for your BIOS chip. Certainly not trivial.

As user dirkt has pointed out, control is being passed back to the BIOS, so although he is correct in saying that you do need to load an operating system which understands how to run from a USB-attached device (any O/S written after USB was introduced in 1998 will already contain the necessary code for that, but MS-DOS v6.22 - which dates from 1996 so doesn't know what USB is - is not going to succeed), what he hasn't made clear is that the key to solving your problem is to upgrade the BIOS firmware, a task requiring someone with professional-level programming ability.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.