Unlike my floppy drive box, only a single goat has pissed on my PCjr box
-
Since @aaronsgiles brought it up, let's talk about the PCjr's video system.
The VGA.
No, not that VGA.
The PCjr has a Video Gate Array. You're thinking about the later 256 color standard, the Video Graphics Array.
Easy mistake to make. Tandy's version of this would get unofficially named "TGA", something you might have seen when selecting your graphics options in that spiffy new DOS game you just bought.
In any case, the PCjr has no dedicated video memory, the system has shared memory. Just like your fancy new MacBook! Okay nothing at all like that, actually, because if you hadn't guessed by now, it's terrible.
-
The PCjr has a Video Gate Array. You're thinking about the later 256 color standard, the Video Graphics Array.
Easy mistake to make. Tandy's version of this would get unofficially named "TGA", something you might have seen when selecting your graphics options in that spiffy new DOS game you just bought.
In any case, the PCjr has no dedicated video memory, the system has shared memory. Just like your fancy new MacBook! Okay nothing at all like that, actually, because if you hadn't guessed by now, it's terrible.
The IBM PC uses the 8253 timer and 8237 DMA controller to refresh the system's DRAM. The D in DRAM stands for Dynamic and dynamic means if we do not refresh the RAM by accessing it periodically the contents go bye-byte.
Doing this saved IBM a decent amount of money on making dedicated refresh circuitry, at the cost of about 5-6% of your CPU performance.
-
The IBM PC uses the 8253 timer and 8237 DMA controller to refresh the system's DRAM. The D in DRAM stands for Dynamic and dynamic means if we do not refresh the RAM by accessing it periodically the contents go bye-byte.
Doing this saved IBM a decent amount of money on making dedicated refresh circuitry, at the cost of about 5-6% of your CPU performance.
@gloriouscow we should never have strayed from core memory.
-
The IBM PC uses the 8253 timer and 8237 DMA controller to refresh the system's DRAM. The D in DRAM stands for Dynamic and dynamic means if we do not refresh the RAM by accessing it periodically the contents go bye-byte.
Doing this saved IBM a decent amount of money on making dedicated refresh circuitry, at the cost of about 5-6% of your CPU performance.
But the PCjr has no DMA controller. Ruh roh! How are we going to refresh the DRAM??
Easy peasy. We just make the system RAM also the video RAM. As the PCjr's VGA reads video memory to scan out to the display, it hits all the RAS and CAS lines and we get our DRAM refreshed! Yay!
Except our CPU can't access RAM while it is doing this! Boo!
-
But the PCjr has no DMA controller. Ruh roh! How are we going to refresh the DRAM??
Easy peasy. We just make the system RAM also the video RAM. As the PCjr's VGA reads video memory to scan out to the display, it hits all the RAS and CAS lines and we get our DRAM refreshed! Yay!
Except our CPU can't access RAM while it is doing this! Boo!
IBM tells us the CPU gets one cycle every 1.1 microseconds, which is practically an eon in computer time. A CPU cycle at 4.77MHz is around 200ns, for comparison.
IBM gives some handwavy math to explain how you might see 2 wait states as a result. In unlucky code sequences you could see 3-5.
This made your peanut slow


-
The PCjr has a Video Gate Array. You're thinking about the later 256 color standard, the Video Graphics Array.
Easy mistake to make. Tandy's version of this would get unofficially named "TGA", something you might have seen when selecting your graphics options in that spiffy new DOS game you just bought.
In any case, the PCjr has no dedicated video memory, the system has shared memory. Just like your fancy new MacBook! Okay nothing at all like that, actually, because if you hadn't guessed by now, it's terrible.
@gloriouscow
It's a good thing that a "Tandy" "Gate Array" doesn't have any other meanings either, nope none at all... -
IBM tells us the CPU gets one cycle every 1.1 microseconds, which is practically an eon in computer time. A CPU cycle at 4.77MHz is around 200ns, for comparison.
IBM gives some handwavy math to explain how you might see 2 wait states as a result. In unlucky code sequences you could see 3-5.
This made your peanut slow


Manufacturers of RAM expansion cards had to provide refresh circuitry for the RAM sitting on their expansion cards, because your PCjr's VGA did not access it.
This wasn't something your IBM PC memory expansion card needed to worry about, because the PC will refresh any extra memory your put in (set your jumpers properly!)
But it also means that code running out of a PCjr RAM expansion sidecar could, in theory, run even faster than on its big older brother. Yay, peanut!
-
Manufacturers of RAM expansion cards had to provide refresh circuitry for the RAM sitting on their expansion cards, because your PCjr's VGA did not access it.
This wasn't something your IBM PC memory expansion card needed to worry about, because the PC will refresh any extra memory your put in (set your jumpers properly!)
But it also means that code running out of a PCjr RAM expansion sidecar could, in theory, run even faster than on its big older brother. Yay, peanut!
Code running out of the ROM , like the BIOS, and any cartridge you might have plugged in before everyone gave up on that idea, was also fast.
-
Code running out of the ROM , like the BIOS, and any cartridge you might have plugged in before everyone gave up on that idea, was also fast.
Tandy, when copying the PCjr to make the Tandy 1000, looked at this and saw that it was bad.
The Tandy 1000 also has a 128K window of shared DRAM, but they did two things to make the Tandy 1000 not terrible.
First, they shuffled some stuff around and tweaked some timings and basically halved the number of wait states required. Yay!
Secondly, they made the 128K shared window configurable - the system would normally move it to the top of RAM, where you were less likely to need to run code out of it, especially important stuff like DOS. Yay!
-
Tandy, when copying the PCjr to make the Tandy 1000, looked at this and saw that it was bad.
The Tandy 1000 also has a 128K window of shared DRAM, but they did two things to make the Tandy 1000 not terrible.
First, they shuffled some stuff around and tweaked some timings and basically halved the number of wait states required. Yay!
Secondly, they made the 128K shared window configurable - the system would normally move it to the top of RAM, where you were less likely to need to run code out of it, especially important stuff like DOS. Yay!
On some later Tandys you can even install a whopping 768K of RAM and have the 128K of video memory live up there above the 640K boundary and have your cake and eat it too.
There was a lot of cool stuff the VGA/TGA could do. I mean, being able to instantly switch to rendering graphics anywhere in a 128K window was a pretty crazy cool feature when you think about it - the CGA only had a measly 16K of video memory by comparison.
Unfortunately, nobody was going to make a game that relied on that, because your game had to work on the PC if you actually liked, you know, making money.
-
@gloriouscow
It's a good thing that a "Tandy" "Gate Array" doesn't have any other meanings either, nope none at all...@TechTangents so much future Tandyposting to do
-
On some later Tandys you can even install a whopping 768K of RAM and have the 128K of video memory live up there above the 640K boundary and have your cake and eat it too.
There was a lot of cool stuff the VGA/TGA could do. I mean, being able to instantly switch to rendering graphics anywhere in a 128K window was a pretty crazy cool feature when you think about it - the CGA only had a measly 16K of video memory by comparison.
Unfortunately, nobody was going to make a game that relied on that, because your game had to work on the PC if you actually liked, you know, making money.
Shall we see if my peanut even boots?
-
Shall we see if my peanut even boots?
-
The IBM PC uses the 8253 timer and 8237 DMA controller to refresh the system's DRAM. The D in DRAM stands for Dynamic and dynamic means if we do not refresh the RAM by accessing it periodically the contents go bye-byte.
Doing this saved IBM a decent amount of money on making dedicated refresh circuitry, at the cost of about 5-6% of your CPU performance.
@gloriouscow The 8257 is pretty mid, good thing IBM used the somewhat better 8237.
-
@gloriouscow The 8257 is pretty mid, good thing IBM used the somewhat better 8237.
-
I'm currently having all the wireless IBM Keyboard Adventures, and you're not. Jealous?
I'm sitting about ten feet away from the peanut and the keyboard seems to work just fine. Although, this is a fresh set of batteries, and it's relatively dim in here because I live like some kind of techno-troll.

-
@gloriouscow The 8257 is pretty mid, good thing IBM used the somewhat better 8237.
@crazyc you ever consider how many neurons you're using to remember intel peripheral chip numbers
-
I'm currently having all the wireless IBM Keyboard Adventures, and you're not. Jealous?
I'm sitting about ten feet away from the peanut and the keyboard seems to work just fine. Although, this is a fresh set of batteries, and it's relatively dim in here because I live like some kind of techno-troll.

obviously there's zero authentication to an IR keyboard.
it would be fun to make a tiny little emitter that could send text to a PCjr and then find the next person exhibiting one at VCF and send them messages from a few tables over.
-
@crazyc you ever consider how many neurons you're using to remember intel peripheral chip numbers
@gloriouscow Lets talk about the 8274, 8256 and 82720. Or better, lets not. (the 8256 is required to emulate the Philips :Yes and I don't wanna do it)
-
obviously there's zero authentication to an IR keyboard.
it would be fun to make a tiny little emitter that could send text to a PCjr and then find the next person exhibiting one at VCF and send them messages from a few tables over.
IBM mentions in passing in the technical reference that you could make other IR accessories for the system, but it was up to you to figure it out and the timings were tailored around the keyboard.
I'm not sure if anyone ever did - at least I'm not aware of any 3rd party IR accessories.
