I'm working on building one of the "homebrew8088.com" V40 mainboards. Since it only has four slots, I wanted to try to get a multi-I/O card, to cover all my serial/parallel/floppy needs at once.
The one I chose was a used, unbranded card where the only identifying mark is "COPYRIGHT BY B". https://i.ebayimg.com/images/g/u7YAA...RF/s-l1600.jpg is close, perhaps even the same one I bought.
I snipped out the battery, which had began to rot its contacts, and neutralized with vinegar/cleaned with water and alcohol. I also Deoxited the bus connector and the floppy connector, just in case.
I've scavenged an old cable from a 386 clone, and tried to connect several different 1.44Mb drives to it (to hopefully eliminate single-drive failure as a cause). (mostly because the cable only has one of the connector type used by this card and 5.25 drives, and I think most of the 5.25" drives I kept were 1.2Mb). I had heard that 1.44M drives on an XT-class floppy controller will typically work as 720k.
Now, the machine I mentioned has a very... unusual... hardware and BIOS layout. I'm using a modified version of the Phatcode Anonymous BIOS... introducing just enough boot code to initialize the V40 CPU onboard peripherals and the keyboard controller used by this board. There's also an option ROM that hooks INT 13h to handle the board's "use a USB drive as drive C" feature. That ROM is set up so if you ask for any disk other than 0x80, it jumps back to the Anonymous BIOS INT13 code in a naive attempt to keep floppy compatibility.
What I've noticed so far (with a 720k disc inserted)
* When I power up, the drive motor spins briefly.
* At the end of the POST, it pauses for a second or two about where you'd expect to seek the drive, but no seek or attempt to boot from floppy occurs that I can tell. This seems baked into the BIOS; it did that even before I had a floppy drive controller in the system.
* When I boot from the "hard disc" (a PC DOS 2000 install), and do A:, the drive spins up-- you can hear the motor spin, and the light goes on. Sometimes there's a minor clunk. But it always eventually announces "Not Ready Reading Drive A".
* If I try ELKS (the 'it's sort of linux for an 8086' project), its boot loader, it lets me specify to boot from floppy or a partition. The "floppy" option does a similar "spin up the disc" but reports failure.
* Snooper and ELKS both report zero floppy drives.
* If you point Snooper at drive A, it reports "No disc in drive" but also a geometry of 1016 cylinders/63 sectors/16 heads. I'm wondering if this is a red herring, because that's suspiciously close to the geometry of the "hard disc" on the system.
* Snooper also shows IRQ6 in use but not DMA2. (only 0, 1, 3)
I'm not sure where to move forward on diagnosing this.
I can see several possible angles:
1. The hardware works, but somehow has been confused into believing the floppy drive is a 500Mb hard disc. This seems suspect, because even a test run with the Option ROM removed didn't seek the drive.
2. The hardware is misconfigured-- switches set wrong. There's, of course, no obvious documentation for this card.
3. The hardware is faulty-- has enough marbles to activate the disc drive, but not enough to say "Yo, there's a disc in here!"
4. The hardware doesn't work with 1.44M drives; the info I've found about using them as 720k seems to revolve mostly around the "real" IBM controller.
5. There's a firmware weirdness, like not enabling the right resources in the controller to talk to the floppy drive. It looks like BIOS does try to set interrupts 0, 1, and 6. I see pokes to ports 61-63 and 81-83 in the initialization code, but the V40-specific setup code doesn't seem to drop any peripherals there-- we have the DMA controller at port 0, the interrupt controller at port 20, and the timer at port 40 hex. (The serial port is at D0, probably for lack of anywhere good to dump it). At least some of port 61 must be wired to something, because the beep works, and that seems to entail toggling port 61.
6. There's some underlying incompatibility with the mainboard-- maybe we're fundamentally missing something to make it "PC enough". I notice a lot of comments that the V40 includes an 8255-style parallel controller, but the datasheet doesn't seem to mention it or how we'd drop it into position-- maybe that's supposed to land at port 61-63 or 81-83
The BIOS I'm working with is here for a reference: https://gitlab.com/hakfoo1/v40-bios
The one I chose was a used, unbranded card where the only identifying mark is "COPYRIGHT BY B". https://i.ebayimg.com/images/g/u7YAA...RF/s-l1600.jpg is close, perhaps even the same one I bought.
I snipped out the battery, which had began to rot its contacts, and neutralized with vinegar/cleaned with water and alcohol. I also Deoxited the bus connector and the floppy connector, just in case.
I've scavenged an old cable from a 386 clone, and tried to connect several different 1.44Mb drives to it (to hopefully eliminate single-drive failure as a cause). (mostly because the cable only has one of the connector type used by this card and 5.25 drives, and I think most of the 5.25" drives I kept were 1.2Mb). I had heard that 1.44M drives on an XT-class floppy controller will typically work as 720k.
Now, the machine I mentioned has a very... unusual... hardware and BIOS layout. I'm using a modified version of the Phatcode Anonymous BIOS... introducing just enough boot code to initialize the V40 CPU onboard peripherals and the keyboard controller used by this board. There's also an option ROM that hooks INT 13h to handle the board's "use a USB drive as drive C" feature. That ROM is set up so if you ask for any disk other than 0x80, it jumps back to the Anonymous BIOS INT13 code in a naive attempt to keep floppy compatibility.
What I've noticed so far (with a 720k disc inserted)
* When I power up, the drive motor spins briefly.
* At the end of the POST, it pauses for a second or two about where you'd expect to seek the drive, but no seek or attempt to boot from floppy occurs that I can tell. This seems baked into the BIOS; it did that even before I had a floppy drive controller in the system.
* When I boot from the "hard disc" (a PC DOS 2000 install), and do A:, the drive spins up-- you can hear the motor spin, and the light goes on. Sometimes there's a minor clunk. But it always eventually announces "Not Ready Reading Drive A".
* If I try ELKS (the 'it's sort of linux for an 8086' project), its boot loader, it lets me specify to boot from floppy or a partition. The "floppy" option does a similar "spin up the disc" but reports failure.
* Snooper and ELKS both report zero floppy drives.
* If you point Snooper at drive A, it reports "No disc in drive" but also a geometry of 1016 cylinders/63 sectors/16 heads. I'm wondering if this is a red herring, because that's suspiciously close to the geometry of the "hard disc" on the system.
* Snooper also shows IRQ6 in use but not DMA2. (only 0, 1, 3)
I'm not sure where to move forward on diagnosing this.
I can see several possible angles:
1. The hardware works, but somehow has been confused into believing the floppy drive is a 500Mb hard disc. This seems suspect, because even a test run with the Option ROM removed didn't seek the drive.
2. The hardware is misconfigured-- switches set wrong. There's, of course, no obvious documentation for this card.
3. The hardware is faulty-- has enough marbles to activate the disc drive, but not enough to say "Yo, there's a disc in here!"
4. The hardware doesn't work with 1.44M drives; the info I've found about using them as 720k seems to revolve mostly around the "real" IBM controller.
5. There's a firmware weirdness, like not enabling the right resources in the controller to talk to the floppy drive. It looks like BIOS does try to set interrupts 0, 1, and 6. I see pokes to ports 61-63 and 81-83 in the initialization code, but the V40-specific setup code doesn't seem to drop any peripherals there-- we have the DMA controller at port 0, the interrupt controller at port 20, and the timer at port 40 hex. (The serial port is at D0, probably for lack of anywhere good to dump it). At least some of port 61 must be wired to something, because the beep works, and that seems to entail toggling port 61.
6. There's some underlying incompatibility with the mainboard-- maybe we're fundamentally missing something to make it "PC enough". I notice a lot of comments that the V40 includes an 8255-style parallel controller, but the datasheet doesn't seem to mention it or how we'd drop it into position-- maybe that's supposed to land at port 61-63 or 81-83
The BIOS I'm working with is here for a reference: https://gitlab.com/hakfoo1/v40-bios
Last edited: