• Please review our updated Terms and Rules here

Tandy 1000 DMA & PCjr.

Great Hierophant

Veteran Member
Joined
Mar 22, 2006
Messages
1,928
Location
Massachusetts, USA
Tandy 1000/A/EX/HXs did not come with a DMA chip on the motherboard, the customer had to purchase a special memory expansion board with a DMA chip on it. The HD had the expansion board pre-installed and most the EX and HX machines had the boards installed at some point. What I understand is that when the DMA chip is installed, DMA in the Tandy 1000 acts just like DMA in the PC.

Now, the DMA-less design was a PCjr. influence. As I understand it, in the PCjr. the lack of DMA creates several issues. The video controller refreshes the DRAM present inside the system, which is shared with main memory. The video controller and the CPU both access the lowest 128KB of RAM. I understand that this leads to performance issues. I have also read that RAM about 128K does not suffer from the dual access issue, leading programs to perform about as fast as a PC. When the floppy controller is transferring data, it blocks data transfer from the keyboard or (to/from) serial/modem ports, likewise the keyboard has the same effect on serial transfers.

What happens in a Tandy 1000 without DMA (and with 128K only)
 
What happens in a Tandy 1000 without DMA (and with 128K only)

Simple. It runs slower than a standard PC because of contention between the CPU and video circuitry. And just like the PCjr, the floppy drive, keyboard, and anything that's interrupt-driven can't operate at the same time without DMA.

128k Tandys apparently can also run PCjr software (eg. Touchdown Football) that other models can't owing to the placement of the video memory.
 
Simple. It runs slower than a standard PC because of contention between the CPU and video circuitry. And just like the PCjr, the floppy drive, keyboard, and anything that's interrupt-driven can't operate at the same time without DMA.

128k Tandys apparently can also run PCjr software (eg. Touchdown Football) that other models can't owing to the placement of the video memory.


I think a Tandy 1000 with 128K and no DMA is faster than a PCjr. The Creative Computing artice (12/84) describes Touchdown Football as being much faster on the 1000 than the Jr.
 
Instead of speculating, why not design a benchmark and run it?
 
I think a Tandy 1000 with 128K and no DMA is faster than a PCjr. The Creative Computing artice (12/84) describes Touchdown Football as being much faster on the 1000 than the Jr.

I would suppose the Tandy is faster because of architectural differences. As for Touchdown Football, I found out that a Tandy version of it exists:

http://www.allgame.com/game.php?id=26474

The PCjr version of King's Quest will probably work on 128k Tandys as well (conversely, the Tandy version of KQ will run on the PCjr).
 
The PCjr version of King's Quest will probably work on 128k Tandys as well
(conversely, the Tandy version of KQ will run on the PCjr).

The Tandy version definitely doesn't work on the PCjr (I've tried it; the result is no video but you can hear the audio). As for the PCjr version working on a Tandy, it didn't work for me, but none of my Tandys have only 128K.

A 128K Tandy is definitely just about identical to a PCjr. When you start adding memory to both, that's when they start to change. Tandy/PCjr's graphics modes steal from 1 to 6 16K chunks of memory. PCjr orders them from 128k going downward, and so does a 128K Tandy. But when you add more memory to both of them, the PCjr keeps the video-accessible pages in 0-128K whereas the Tandy now counts down from the top of available RAM. So in a 640K machine, the 128k-accessible portion is now located from 512-640k.

Luckily, you can independently select which pages show up in the typical window at B800h, AND which pages are displayed. And they can be different. It makes page flipping incredibly easy, as you don't have to try to figure out where in system RAM your video is hiding. However, I don't think a lot of early programmers understood that, so they try to write directly to where they think the pages are, and that's where the incompatibility comes in.

I know all this because I just finished a Tandy/PCjr graphics library for a project :) I'll post a link to it soon.
 
The Tandy version definitely doesn't work on the PCjr (I've tried it; the result is no video but you can hear the audio).

That's odd, because KQ should just assume the PCjr is a Tandy with 128k. I heard on some site (might have been Quest Studios) that it works. They claimed the PCjr version would not run on anything else, the Tandy version works on the Jr, and that the normal PC version runs on all three.

As for the PCjr version working on a Tandy, it didn't work for me, but none of my Tandys have only 128K. A 128K Tandy is definitely just about identical to a PCjr. When you start adding memory to both, that's when they start to change. Tandy/PCjr's graphics modes steal from 1 to 6 16K chunks of memory. PCjr orders them from 128k going downward, and so does a 128K Tandy. But when you add more memory to both of them, the PCjr keeps the video-accessible pages in 0-128K whereas the Tandy now counts down from the top of available RAM. So in a 640K machine, the 128k-accessible portion is now located from 512-640k.
Luckily, you can independently select which pages show up in the typical window at B800h, AND which pages are displayed. And they can be different. It makes page flipping incredibly easy, as you don't have to try to figure out where in system RAM your video is hiding.

I know. It should be noted that although most commercial games made from 1986-1990 have Tandy support, they will not usually run on a PCjr (except in CGA). It's also impossible to use >128k booters such as Pirates! on PCjrs, since they'll overrun the video buffer.

Another annoyance are games like Troll's Tale and Jumpman that have PCjr support, but check F000:FFFE to determine what machine they're running on. If they don't find an FDh there, they assume that it's a normal PC, and will only run on Tandys in CGA mode.

However, I don't think a lot of early programmers understood that, so they try to write directly to where they think the pages are, and that's where the incompatibility comes in.

Now, my understanding is that on the PCjr/Tandy, you aren't supposed to write directly to the video memory when using the text and 16k graphics modes. You write to B800h, and the hardware will redirect the video data to the appropriate location. When using the 32k modes, you write directly to the buffer.

Touchdown Football uses the 160x200x16 mode. Although this is a 16k mode, TF apparently writes directly to the video buffer instead of B800h. If it did write to B800h, it would work on Tandys with >128k.

King's Quest on the other hand uses the 32k 320x200x16 mode, and it should be expected to have incompatibilities.
 
It's also impossible to use >128k booters such as Pirates! on PCjrs, since they'll overrun the video buffer.

...except for Flight Simulator v2.12. It detects the additional memory and asks you if you want to use it to speed things up (very cool, IMO).

Another annoyance are games like Troll's Tale and Jumpman that have PCjr support, but check F000:FFFE to determine what machine they're running on. If they don't find an FDh there, they assume that it's a normal PC, and will only run on Tandys in CGA mode.

That should be pretty easy to patch around... As for jumpman, that problem has been solved.


Now, my understanding is that on the PCjr/Tandy, you aren't supposed to write directly to the video memory when using the text and 16k graphics modes. You write to B800h, and the hardware will redirect the video data to the appropriate location. When using the 32k modes, you write directly to the buffer.

The documentation for PCjr says that, although you can write to 32K modes at B800 on a Tandy. I suspect (but have not confirmed yet) that you can do the same on a PCjr. I have nothing to base that on :) but will check it out sometime in the future.
 
I have both my Tandy 1000 and 1000 HX maxed out in RAM (640K), is that going to be a huge problem with old games?

What is more compatible with old games anyway a PC Jr or a Tandy 1000? I figured since the 1000's were out for much longer game companies targeted them.
 
I have both my Tandy 1000 and 1000 HX maxed out in RAM (640K), is that going to be a huge problem with old games?

Not unless you want to run the PCjr games I mentioned, but Touchdown Football and King's Quest have Tandy versions, anyway.

What is more compatible with old games anyway a PC Jr or a Tandy 1000? I figured since the 1000's were out for much longer game companies targeted them.

Obviously. You won't find much of anything that supports the PCjr after 1986 (remember, IBM discontinued them in the spring of 1985), while the Tandy was supported by most games through 1990.
 
I have both my Tandy 1000 and 1000 HX maxed out in RAM (640K), is that going to be a huge problem with old games?

As Fallo said, quite the opposite. Any Tandy 1000 maxed out to 640K is going to be quite a nice game machine as long as blazing speed isn't a requirement (both of your Tandys are 4.77MHz 8088s). Your HX in particular is nice in that it has DOS in ROM, so I'll bet it boots very quickly!
 
Back
Top