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.
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.
(post is archived)