Here's the main bug fix in the Tandy 1000 BIOS v1.01, seen on the right, needed for proper hard drive controller operation.

v1.00 configured the DMA controller for "extended write mode", which is not the DMA timings that the controller expects, which can lead to data corruption.

v1.10 as you can see does not set that bit. This fix is made in two places where extended write mode was set.

#retrocomputing #tandy1000

You might be wondering why the Tandy BIOS has code to configure a DMA controller.

Like the PCjr it modelled itself after (the Tandy 1000 is sort of like the PCjr with all the bad stuff fixed), the Tandy 1000 does not ship with a DMA controller.

However Tandy was smart enough to anticipate that this might be a desirable add-on, and so they sold memory expansion cards that included the intel 8237 chip.

Besides letting you use a hard drive, the Tandy BIOS will also switch the floppy controller to DMA operation when you have the 8237 installed, so that's a nice performance boost as well.

@gloriouscow if there is no DMA controller, how did it do DRAM refresh?

@trcwm

I'M GLAD YOU ASKED!!!

#retrocomputing

@trcwm Like the PCjr, the Tandy 1000 does not have dedicated video memory. The Tandy Video Unit (usually referred to as the 'TGA' just from how games typically listed your adapter options in setup) can map pages to display anywhere in a 128KB window.

Which was the default it came with.

@trcwm Since the video unit is always running, and the Motorola 6845 CRTC actually never stops counting (not even in blanking areas), we can use the CRTC to generate addresses that activate row/column strobes that refresh the DRAM.
@gloriouscow does that mean the refresh rate depends on the pixel clock..?
@trcwm It's the CRTC driving it, so it would be the character clock. Tandy knew IBM was being a bit conservative in their own DRAM refresh timings. It's more than enough to make the DRAM happy.