• Please review our updated Terms and Rules here

XT-FDC project level of interest

Try taking the V20 back to an 8088.

I don't know where my 8088 is right now
Also, "May 1986 Bios" from an earlier post of yours.
It is currently downgraded to IBM 08NOV'82 BIOS

What is the BIOS version on the XT-FDC? If 2.1e, is is 2.1e as obtained from Sergey's web site, or 2.1e modified per post #432
2.1e modified per post #432

I don't have the external connector. I have the secondary internal connector (P2) in its place. I have to use that when trying to replicate isues.

I beeped out the connector on my external cable to the pads for the secondary internal header and found that they all line up except for the ones that are inverted as expected due to the "Twist" in the cable. So using the secondary internal connector should give the same results.


So the 150 ohm resistor is appropriate here?
 
So the 150 ohm resistor is appropriate here?
If it is the drive on the end of the cable, then yes.

Even when you mix 5.25" drives and 3.5" drives on the same cable, there is no need to change the value of the terminators. From page 527 of the fourth edition of Mueller's 'Upgrading & Repairing PCs' book:

"Some confusion exists regarding the situation in which you have both 5 1/4-inch and 3 1/2-inch drives installed on a single cable. In this case, the 5 1/4-inch drive must have its terminating resistor configured as appropriate, which is to say either leave it installed or remove it depending on whether the drive is at the end of the cable. Nothing with regards to termination is done with the 3 1/2-inch drive because the terminating resistors are non-configurable. Although it sounds like mixing these might cause a problem with the termination, actually it works out quite well as the math shows ..."
 

I can only format the 3.5" drive as 1.44M if it is set as logical drive 0. When any other drive is set as logical drive 0, the format appears to go ok until the very end. Then the error "Unable to write BOOT" comes up and the disk is unreadable.
I need to amend my findings here. This error only comes up if the 3.5" drive is configured as logical drive 2 or 3 (Drive C: or D: ). So, it formats fine as drive 0 or 1 (A: or B: )

Just to remind, my machine is currently set up as follows:
-IBM 5155 with original motherboard with NEC V20, IBM 08NOV'82 BIOS
-640k on motherboard
-CGA adapter
-XT_FDC with basic FDC and BOOT ROM only, no ROM drive. Internal and external connectors, BIOS 2.1e modified per post #432
-Two Qume QumeTrak 142 360k floppy drives attached to internal connector with pin 34 disconnected at controller end of cable. Last drive on cable, physical drive 0 has 150 ohm terminator.
-One Sony 3.5" 1.44M drive attached to external connector, physical drive 2.
-PC DOS 7
 
Last edited:
I need to amend my findings here. This error only comes up if the 3.5" drive is configured as logical drive 2 or 3 (Drive C: or D: ). So, it formats fine as drive 0 or 1 (A: or B: )

Just to confirm. You're talking about logical drive number, right? So with the same hardware configuration, if you configure the external 1.44 MB drive to be first or second logical drive - it works with 1.44 MB disks, but if you configure it as a third or forth logical drive - it doesn't work with 1.44 disks? (but works with 720 KB?!)

Sorry for delays on my side... I was busy with XT-CF-Lite project, but hopefully I'll be a bit more available in the next few days.
 
Just to confirm. You're talking about logical drive number, right? So with the same hardware configuration, if you configure the external 1.44 MB drive to be first or second logical drive - it works with 1.44 MB disks, but if you configure it as a third or forth logical drive - it doesn't work with 1.44 disks? (but works with 720 KB?!)

Sorry for delays on my side... I was busy with XT-CF-Lite project, but hopefully I'll be a bit more available in the next few days.

It does appear to format a 720k disk, but only if the /f:720 parameter is used. It does not automatically detect the 720k media and tries to format it as 1.44M and fails. But if the "format /s /f:720" command is used the format completes, the system is transferred and the message "Format another (Y/N )? comes up. But when 'n' is pressed the following error occurs:
Memory allocation error
Cannot load COMMAND, system halted
(note, this error also comes up after the failed attempt to format a 720k disk as 1.44M)

And the system hangs.

Upon reboot, the disk does not boot, but is readable.

PS
No need to apologize for having other irons in the fire, Sergey. It's good to see you here again!
It looks like the problem with 1.44M drives not getting along with (some) 360k drives has been worked out. Or, at least, worked around. See post #434 and #435.
 
Last edited:
I have set 1.44MB drive as logical drive 2. With command format f: /u I get message: Formatting 1.44MB and later Format Complete. (1.44M is physically number 0)
 
I have set 1.44MB drive as logical drive 2. With command format f: /u I get message: Formatting 1.44MB and later Format Complete. (1.44M is physically number 0)

Can you supply more details about your set up? Like motherboard brand and type, motherboard BIOS, XT-FDC BIOS revision. What are the other drives?
 
It is probably a Taiwanese TurboXT board with latest Plasma's anonymous Super XT BIOS 2.5. I have three drives. I am still using rather old Sergey's BIOS, do not know version now, but it is the version before Sergey corrected CGA bug. Drives are 360kB, 1.2MB and 1.44MB. (360kB is on secondary connector) Maybe this evening I will try another setup, with 360kB on primary connector and the other two drives on secondary connector. BTW with the latest XT-IDE BIOS I can boot from all three floppy drives and boot automatically from HDD as well.
 
I think we can just wait until the BIOS issues sort themselves out. I would like to know what the issue is with the 82077A.
I now have an 82077AA-1. To support it, I soldered in C23 and verified that I had jumper JP10 on. I can boot from 360K and 1.44M boot disks. Working nicely, although only basic functionality tested.
 
Hi
Well that's interesting. I wonder what the issue is with the other builders testing of the 82077?

Thank you very much for the updated testing.

Andrew Lynch
 
Hi ibmapc, I have tested another configurations for you. This time I connected 1.44MB and 1.2MB to secondary connector. 360kB was connected on primary connector at both positions (doing two different test). I have configured 1.44MB as both logical drive 0 and 2 (yet another tests). At all configurations I could format all drives with format /u and every time the diskette size was correctly recognized according to floppy type set in bios. I am using PC8477 btw.
 
Hi ibmapc, I have tested another configurations for you. This time I connected 1.44MB and 1.2MB to secondary connector. 360kB was connected on primary connector at both positions (doing two different test). I have configured 1.44MB as both logical drive 0 and 2 (yet another tests). At all configurations I could format all drives with format /u and every time the diskette size was correctly recognized according to floppy type set in bios. I am using PC8477 btw.

Thank you for your efforts at attempting to replicate my issue, not being able to format a 1.44M disk on logical drive 2 or 3. I can see several differences between your set up and mine.
1. Your motherboard - a "Taiwanese TurboXT" Mine - IBM early 5160/5155.
2. Your BIOS - Plasma's anonymous Super XT BIOS 2.5 Mine - IBM 08NOV'82 BIOS (Although I have also tried Plasma's BIOS with same results as IBM 08NOV'82 BIOS)
3. You mentioned
... BTW with the latest XT-IDE BIOS I can boot from all three floppy drives and boot automatically from HDD as well.
Mine - currently set up with a minimum configuration of motherboard, speaker, keyboard, video card, XT-FDC. I don't currently own an XT-IDE, But I do have an ADP50L. However, it is not currently in use.

Of these differences, I think #3 is the most significant. I think the XT-IDE BIOS is possibly "enhancing" or "enabling" the XT-FDC BIOS to work with drives above the letter B. Have you tried it without the XT-IDE?
 
Last edited:
Hi, I have dug out a ST-225 with WD card. XT-IDE card was removed and 1.44MB drive was configured as a logical number 2. Physically it was drive 0. Format D: worked correctly. Also when it was configured as logical drive 0 it formatted correctly. The other 1.2MB and 360kB drives worked too, I only tested reading floppies this time.
 
I uploaded a new version 2.2 of my BIOS here: http://www.malinov.com/Home/sergeys-projects/isa-fdc-and-uart (scroll to the bottom of the page for files).

Changes:
- Fixed garbage output on CGA display with IBM BIOS.
- BIOS extension size is now 8 KiB (instead of 7.5 KiB) and it includes the configuration area inside. This avoids some bugs with the original IBM PC BIOS and with Anonymous XT BIOS that despite the specifications assume that BIOS extension size is a multiple of 2 KiB.

Thanks,
Sergey
 
I uploaded a new version 2.2 of my BIOS here: http://www.malinov.com/Home/sergeys-projects/isa-fdc-and-uart (scroll to the bottom of the page for files).

Changes:
- Fixed garbage output on CGA display with IBM BIOS.
- BIOS extension size is now 8 KiB (instead of 7.5 KiB) and it includes the configuration area inside. This avoids some bugs with the original IBM PC BIOS and with Anonymous XT BIOS that despite the specifications assume that BIOS extension size is a multiple of 2 KiB.

Thanks,
Sergey

Do you have Gerber files for version 1.0? I want to see how much it would cost to get a single board made, and I have little experience with ordering PCBs (and I only first did it last week lol) other than it's not cost efficient to buy them in small amounts lol!
 
I took a quick peek at the source and found a place (add_drive) where you leave the direction flag set. This is something you really really shouldn't do.

/Krille

Care to explain why? If possible list a programming manual, book, or some another authoritative source that recommends keeping direction flag cleared as much as possible.

I have a habit of setting or clearing direction flag before any string operation, and not assuming that it is clear.
 
Care to explain why?
Sure, but first let me apologize, I didn't intend to come off as trying to take a dump on your efforts with this BIOS. I'm just trying to help. ;)

The reason for keeping the direction flag cleared as much as possible is really simple if you think about it.

As I'm sure you know, almost all code involving string instructions need the direction flag cleared, or put another way, very very little code need the direction flag set. So, for efficiency it makes sense to keep the direction flag cleared all the time so that people actually can assume it is cleared when doing their string operations. That is why all calling conventions requires this and no HLL compiler will emit code that leaves DF set.

(NB, I fail to find any sources to support that last statement, but if anyone wants to, feel free to prove me wrong.)

The sinister thing about this is that even though the bug is yours, your code may work just fine but it will make other peoples programs look bad because they will crash even though the authors of the programs didn't do anything wrong. So to prevent this, everyone sprinkles CLD:s throughout their ASM programs, and most of the time it is completely unnecessary.

In an ideal world we would have an almost 1:1 ratio between the number of STD:s and CLD:s. I say almost because you still need CLD:s in interrupt handlers that might interrupt an overlapping memcopy for instance.

If possible list a programming manual, book, or some another authoritative source that recommends keeping direction flag cleared as much as possible.
I take it you don't see me as an authority on the subject? :D Well, how about Agner Fog then? (See page 11)

I have a habit of setting or clearing direction flag before any string operation, and not assuming that it is clear.

I have no objections to this though I wish you wouldn't have to (and there's a good chance that it's not necessary most of the time).
 
OK, you've convinced me :) I will add a 'CLD' in 'add_drive'. It takes only one byte anyway.

It is actually interesting that some compilers expect direction flag to be clear. For whatever reason I was assuming that flag register is treated as a scratch register, and compilers/libraries assume nothing about its content.

I still prefer to clear the direction flag before string operations because I don't really know if BIOS functions for example don't mess with it. And I've seen many cases where BIOS functions were supposed to preserve registers but they didn't (or some particular BIOS implementation didn't).
 
Hi,

sorry, for jumping in, not reading the two existing threads completely...
I ask the questions in a way that they are easy to answer with yes/no :)

Will the controller support 4 floppy drives?

Do I need a special cable for this? (I'm so bad in building...)

Does the controller work with all testfdc scenarios (especially 128 byte sectors)?

Can I buy an already built FDC?

How much is it? (Did not find a website for ordering it)

Overseas, possible? Europe?

Thanks!

Greetings
 
Last edited:
Back
Top