WelcomeUser Guide
ToSPrivacyCanary
DonateBugsLicense

©2025 Poal.co

275

Updated 13 Nov

Was tired of dealing with only having one 5.25" 360k floppy drive on my Tandy 1000 SL. Wanted at least a 720k 3.5", but really wanted to get a 1.44 mb 3.5" drive working in this machine.

The Tandy 1000 SL originally came with just that one 5.25" 360k drive. It supported up to a 720k 3.5" disk drive, but here's the rub: it used a proprietary IDC cable and FDC interface for the 3.5" drive. You had to use a 3.5" drive specifically made to get it's power from the 34-pin ribbon cable, no 4-pin molex power connector. Trying to connect a standard 3.5" drive to the Tandy 1000 SL/TL will fry the drive, and probably the Tandy as well. But even then, only 720k drives were supported, limitation of the data separator on the motherboard.

There's three options for adding a 3.5" drive: - Add proprietary 3.5" drive, 720k only - Butcher a 34-pin ribbon cable to remove the conductors that power the drive and use a standard drive, 720k only. - Add an 8-bit ISA floppy disk controller card that supports 1.44 mb drives

Really wanted that 1.44 mb drive in this machine, so I bought one of these.

Initially could not get this thing to work.

Of course, I started out by trying to disable the on-board floppy disk controller through the Tandy 1000 SL advanced EEPROM setup, setupsl.exe /a. After some frustration, I stumbled across some information regarding the setup program: Disabling the floppy disk controller in setupsl.exe has no effect. Shit. Luckily, someone made a little utility called nofloppy.com ]. It is meant to be ran from your autoexec.bat.

Trouble with nofloppy.com is: - It doesn't run until autoexec.bat, so you can't boot from the floppy drive or use the FDC card's bios. - It enables other things on your motherboard you may not want enabled.

You're not going to be able to use the bios on the card, because when it looks for the floppy drives, it conflicts with the on-board FDC.

nofloppy.com simply writes F7h . Untar this to a folder on your Linux box. Install nasm and gcc if you don't already have them installed.

Line 103 in the floppy_bios.asm starts the card initialization routine:

`init: push ax ; save registers push bx push cx push dx push si push ds

mov ax,biosdseg
mov ds,ax           ; set DS to the BIOS data area

;------------------------------------------------------------------------- ; print the copyright message

mov si,msg_copyright
call    print

;------------------------------------------------------------------------- ; print floppy controllers and drives configuration

push    es
mov bx,cs
mov es,bx
mov bx,drive_config
call    print_config       ; print the current configuration
pop es
 ...

`

I added the following lines to the start of the init routing, right after saving the machine state at line 112: in al,65h ; read Tandy 1000SL/TL planar control register and al,97h ; and with bitmask or al,04h ; ensure video bit is enabled out 65h,al ; write to port This reads the initial register state, disables the floppy bit, then writes the register setting back. It also makes sure the video bit is enabled, because as I come to find out, that bit fucking lies. It lies! Can't read that bit for anything useful.

Ran the 'make' to re-assemble a new binary and apply checksum. Flashed the new binary to the EEPROM with one of those MiniPro programmers and put it back in the machine. You want to make sure you set the switches on the FDC card to position the bios at DC000 (8k under the Tandy bios). Make sure the FDC card's serial port isn't conflicting with anything else.

Now, the FDC card bios can finally work without conflicting with the on-board FDC. Now, you can use 1.44 mb disks. Now, you can boot from that fucker, on your mother fucking Tandy 1000 SL/TL!

Update 13 Nov: Dug into the Tandy 1000 TL technical reference manual (I did all this on the SL), and according to that one, the only bit you can read at port 65h is the floppy disk controller bit, 0x08. Just tried it on the TL, and yup... only bit you can read is the FDC bit on the TL. I thought the TL was supposed to be better than the SL. what gives?? Anyway, you won't be able to test what bits are asserted on the TL with the IN and AND instructions. You'll have to just set the bits you need, for example: mov al,96h ; Tandy 1000 TL disable FDC & HDD out 65h,al ; write to port

Perhaps some day I'll come up with an even better solution, adding another menu option to the FDC bios menu to set those bits and save for each subsequent boot.

Updated 13 Nov Was tired of dealing with only having one 5.25" 360k floppy drive on my Tandy 1000 SL. Wanted at least a 720k 3.5", but really wanted to get a 1.44 mb 3.5" drive working in this machine. The Tandy 1000 SL originally came with just that one 5.25" 360k drive. It supported up to a 720k 3.5" disk drive, but here's the rub: it used a proprietary IDC cable and FDC interface for the 3.5" drive. You had to use a 3.5" drive specifically made to get it's power from the 34-pin ribbon cable, no 4-pin molex power connector. Trying to connect a standard 3.5" drive to the Tandy 1000 SL/TL will fry the drive, and probably the Tandy as well. But even then, only 720k drives were supported, limitation of the data separator on the motherboard. There's three options for adding a 3.5" drive: - Add proprietary 3.5" drive, 720k only - Butcher a 34-pin ribbon cable to remove the conductors that power the drive and use a standard drive, 720k only. - Add an 8-bit ISA floppy disk controller card that supports 1.44 mb drives Really wanted that 1.44 mb drive in this machine, so I bought one of these[ ISA Floppy Disk and Serial Controller cards by Sergey Kiselev](http://www.malinov.com/Home/sergeys-projects/isa-fdc-and-uart). Initially could not get this thing to work. Of course, I started out by trying to disable the on-board floppy disk controller through the Tandy 1000 SL advanced EEPROM setup, setupsl.exe /a. After some frustration, I stumbled across some information regarding the setup program: Disabling the floppy disk controller in setupsl.exe has no effect. Shit. Luckily, someone made a little utility called nofloppy.com [[nofloppy.zip here](http://www.oldskool.org/guides/tvdog/utilities.html)]. It is meant to be ran from your autoexec.bat. Trouble with nofloppy.com is: - It doesn't run until autoexec.bat, so you can't boot from the floppy drive or use the FDC card's bios. - It enables other things on your motherboard you may not want enabled. You're not going to be able to use the bios on the card, because when it looks for the floppy drives, it conflicts with the on-board FDC. nofloppy.com simply writes F7h [11110111b to port 65h. According to the Tandy 1000 SL Technical Reference manual, port 65h controls enabling/disabling certain parts of the motherboard: b7: Parallel port output enable b6: Not used b5: Not used b4: Serial port select b3: Floppy disk controller select b2: Video select b1: Parallel port select b0: HDD port select So if you had HDD port or parallel port disabled and ran nofloppy.com, those are now enabled. Shit, man. My solution was to re-assemble the FDC card's bios to shut off that damn on-board FDC at boot time, right after the Tandy bios but before my XT-IDE card bios. The bios for the FDC card is [here](http://www.malinov.com/Home/sergeys-projects/isa-fdc-and-uart/floppy_bios-2.2.tar.gz?attredirects=0&d=1). Untar this to a folder on your Linux box. Install nasm and gcc if you don't already have them installed. Line 103 in the floppy_bios.asm starts the card initialization routine: `init: push ax ; save registers push bx push cx push dx push si push ds mov ax,biosdseg mov ds,ax ; set DS to the BIOS data area ;------------------------------------------------------------------------- ; print the copyright message mov si,msg_copyright call print ;------------------------------------------------------------------------- ; print floppy controllers and drives configuration push es mov bx,cs mov es,bx mov bx,drive_config call print_config ; print the current configuration pop es ... ` I added the following lines to the start of the init routing, right after saving the machine state at line 112: ` in al,65h ; read Tandy 1000SL/TL planar control register and al,97h ; and with bitmask or al,04h ; ensure video bit is enabled out 65h,al ; write to port ` This reads the initial register state, disables the floppy bit, then writes the register setting back. It also makes sure the video bit is enabled, because as I come to find out, that bit fucking lies. It lies! Can't read that bit for anything useful. Ran the 'make' to re-assemble a new binary and apply checksum. Flashed the new binary to the EEPROM with one of those MiniPro programmers and put it back in the machine. You want to make sure you set the switches on the FDC card to position the bios at DC000 (8k under the Tandy bios). Make sure the FDC card's serial port isn't conflicting with anything else. Now, the FDC card bios can finally work without conflicting with the on-board FDC. Now, you can use 1.44 mb disks. Now, you can boot from that fucker, on your mother fucking Tandy 1000 SL/TL! Update 13 Nov: Dug into the Tandy 1000 TL technical reference manual (I did all this on the SL), and according to that one, the only bit you can read at port 65h is the floppy disk controller bit, 0x08. Just tried it on the TL, and yup... only bit you can read is the FDC bit on the TL. I thought the TL was supposed to be better than the SL. what gives?? Anyway, you won't be able to test what bits are asserted on the TL with the IN and AND instructions. You'll have to just set the bits you need, for example: ` mov al,96h ; Tandy 1000 TL disable FDC & HDD out 65h,al ; write to port ` Perhaps some day I'll come up with an even better solution, adding another menu option to the FDC bios menu to set those bits and save for each subsequent boot.

(post is archived)

[–] 1 pt

An impressive and relentless pursuit of success! Nice work.

[–] [deleted] 2 pts

Thanks, sorry for the formatting. Doesn't seem to work so well with this particular source asm. Even when I took away the markdown, it still code formatted some of the instructions.