• Please review our updated Terms and Rules here

Tandy 1000 TL/2 problem using nofloppy w/ VGA adapter installed

Thallanor

Member
Joined
Sep 16, 2018
Messages
27
I have a Tandy 1000 TL/2 and I have been attempting to get a high density floppy controller card and IDE controller card to work in this computer, as the built-in FDC only supports double density and the built-in hard drive controller is XT IDE, severely limiting what hard drives I can use if (when) this one dies. The problem is that you cannot disable either of the built-in controllers on this computer. The option exists in the BIOS setup (which is accessed by running an .exe and so i'm a bit cautious about changing too much there in case I'm unable to get back to the BIOS settings) but disabling the FDC doesn't actually disable it.

Because of this, someone created a program called nofloppy that writes F7, I believe to planar control register 0x65h. But when I run this, it hangs the system. i'll get a few beeps, corrupted text, and then a hang. Now if I pull the VGA adapter and connect my CGA monitor, it works completely as it's supposed to. nofloppy runs, no lockup, and I can then read and write to a high density drive and disk.

I really don't know a whole lot about how this works, and was wondering if anyone might have any ideas. Like if the presence of a card might push those registers somewhere else down the line? Or maybe what i'm supposed to be writing is something else in the presence of the card? (Like maybe it's a specific bit i'm enabling at register 0x65h, so instead of writing F7, I might need to write something else, based on what is already there in the presence of the VGA card?

I'm open to suggestions as I'm so close. Worst-case scenario, I could run the controller and pull the VGA. I'd rather run Tandy 16 colour graphics and have a HD floppy drive and more importantly, an IDE hard drive that can be more easily replaced, rather than the XT IDE drive that not only limits me to 40 MB, but is also super rare and with a price to match.

Thanks for your time.
 
I had actually considered my problem being due in part to this, and had downloaded vgafix from tvdog's Tandy utilities page, but before I started down that path, I started from scratch and decided to Google for "Planar Control Register." I only found 19 hits, one of them being here in reference to the original nofloppy utility, which is how I originally narrowed it down to that register in the first place. But the rest of the hits also referenced 0x65h, the specific register that is a part of this problem and solution. I finally stumbled across a Tandy technical document located at ftp://ftp.mindcandydvd.com/pub/drivers/Tandy/1000%20TL/Tandy_1000TL_Technical_Reference_Manual.pdf. There, I found what I was only dreaming I would find: an actual bit for bit explanation of what PCR 0x65h does:

0065 Planar Control Register (Read/Write)
0 Hard Disk Select Enable
1 Parallel Port Select Enable
2 Video Port Select Enable
3 Floppy Disk Port Select Enable
4 Serial Port Select Enable
5 Reserved
6 Reserved
7 Parallel Port Output Enable

What is cute is that there are also handwritten notes on the margin that reading this register won't actually give anything but the status of Floppy Disk Port Select Enable. Oddly, my Tandy has no problem reading this register in its entirety.

With this knowledge, I was able to read 0x65h and find it is 9B. Converted to binary, 10011011. Looking at this though, it didn't quite match up with what I was expecting. I'm not sure if my Tandy is bizarre in some way, but looking at it again, that bit-by-bit breakdown is actually completely backwards, as if in that PDF document, it was upside-down. So tweaking it to disable the floppy controller, I was left with 10010011. Converting back to hex gets you 93, which I used debug to write back to PCR 0x65h. I quit debug, then checked drive A: - success! I am able to read and write to this high density drive. (I actually still have the double density drive connected - before disabling the onboard floppy controller, you'd get an error, but both drives would actually spin at the same time.)

I have to say that it wasn't _quite_ this easy in my testing, and locked up my computer several times, especially when I didn't immediately notice the bits were backwards, so I was accidentally disabling the built-in hard disk controller, which the computer didn't like. Oops. :)

I now need to find a way to write 93 to 0x65h by way of autoexec.bat so on boot, it just does it. A friend mentioned that .com files are pretty simple, and I might be able to make one to do that, but I'm pretty new to that aspect, so might need some help. But this works, and knowing _how_ it works, not just blindly writing a number to 0x65h has taught me a lot, and with this knowledge, it should help others, as nofloppy obviously relies on several presumptions, namely that your BIOS settings (EEPROM really) are set to something close to factory default, which is likely what whoever wrote it used.

So there you have it. The technical details on how to disable the Tandy's built-in floppy controller through software. :)
 
Nice job! I wonder if we can make a .com file out of this. I’ve been itching to put a Hd controller in my SL.
 
Nice job! I wonder if we can make a .com file out of this. I’ve been itching to put a Hd controller in my SL.
What I finally did was create a text file called debug.txt that contained:

O 65 93
Q

And then in autoexec.bat used debug < debug.txt. (I should be able to do debug < <all that text> but I struggled with the enter, so just went the text file method).

The problem is now that I might have jumped the gun. Yes, this works. But in all my testing, it was clearly with 720K disks. 1.44M give a general error when reading drive A. I'm suspecting that's because a portion of the BIOS that handles I/O is still hanging on and while it's now using the correct (new, 1.44M) controller, it still thinks it's a 720K drive. If I try to format manually with 1.44, it says the format isn't supported. I tried using 2M-ABIOS and it fires up, but still doesn't work, I presume because 2M-ABIOS runs in Config.sys as DEVICE= while the debug stuff to disable the controller doesn't run until autoexec.bat. There has been some discussion with others on adding code to an XTIDE or just a boot ROM installed in a NIC to disable this before config.sys or autoexec.bat but that's at a standstill at the moment as I have no means to write to EEPROMs. But that'd be the next thing I would try. Might still need 2M-ABIOS but I think it'd work.

So that's currently where I stand. At this point though, I might as well just cut the wires for power in the floppy cable and just install a 1.44 on the factory controller and use it as a 720K. :/
 
Back
Top