Jump to content
Level42

I want to learn ANTIC / GTIA :)

Recommended Posts

Forgive me if this sounds ignorant or even stupid but I've never "dived into" the A8 hardware that deep until now.

I'd like to learn about ANTIC/GTIA hardware things....not going into the chips themselves but I'd like to understand each connection that these chips have and what their role is :)

 

 

1) For POKEY, GTIA and PIA there are chip select lines (and of course inputs).....but Antic doesn't have one. How does this work with the 6502, I am assuming either 6502 or ANTIC will need to be connected to address/databus one at the time ?

 

2) all the "big" chips in the ATARI are connected to the address and databus at the same time. Am I assuming that it is enough to "turn off" the chip through the CS signal to isolate them from both busses ?

 

3) another "stupid" question (because I'm 99,999999% sure about this already) : I am assuming that both ANTIC and GTIA are 100% digital chips ? I looks like the GTIA Luminances are output via a resistor D/A converter ?

Edited by Level42

Share this post


Link to post
Share on other sites

Wow that was a quick reply......thanks ! I edited my post quite a bit could you have a second look ? :D

Edited by Level42

Share this post


Link to post
Share on other sites

And while ANTIC has access to the RAM, the CPU gets halted.

It's essential to know that ANTIC can do some things using internal memory.

 

This makes it possible, to use "Graphics 7" , to save a lot of CPU cycles, or to use vertical scrolling, when no DMA is needed, to prevent "halting the CPU" and to get the most speed out of the Atari.

Edited by emkay
  • Like 2

Share this post


Link to post
Share on other sites

Forgive me if this sounds ignorant or even stupid but I've never "dived into" the A8 hardware that deep until now.

I'd like to learn about ANTIC/GTIA hardware things....not going into the chips themselves but I'd like to understand each connection that these chips have and what their role is :)

 

 

1) For POKEY, GTIA and PIA there are chip select lines (and of course inputs).....but Antic doesn't have one. How does this work with the 6502, I am assuming either 6502 or ANTIC will need to be connected to address/databus one at the time ?

 

2) all the "big" chips in the ATARI are connected to the address and databus at the same time. Am I assuming that it is enough to "turn off" the chip through the CS signal to isolate them from both busses ?

 

3) another "stupid" question (because I'm 99,999999% sure about this already) : I am assuming that both ANTIC and GTIA are 100% digital chips ? I looks like the GTIA Luminances are output via a resistor D/A converter ?

 

Hi... as already said, ANTIC didn´t need a chip select. ANTIC is a complete CPU - today the term GPU is more common. The Display List is the machine code for the ANTIC ;-)

 

The Atari uses the standard 65xx buss, which means, that all devices are connected to the same address and data busses. You need some logic to select only one device at the time. Buss grant will be signaled with a transition of PHI2 from low to high. And yes, if the device isn´t selected (chip select signal(s) logical not active), then the datas buss is in tri-state mode. Address buss is normally - except ANTIC - only one-way, so there´s no hi-Z state needed.

 

The constraints of digital and analog are floating ;) - the ANTIC is IMHO a full "digital device", the GTIA not. If you look at the color burst signal, this is analog. The Lum0...3 outputs are digital and will be converted to analog values using a simple resistor-based D/A changer, you´re right.

 

Jurgen

  • Like 2

Share this post


Link to post
Share on other sites

Yeah sorry guys, my address/databus, three-state etc. knowledge has sunk away badly I'm afraid ;)

 

Suppose now, that I'd like to have 2 ANTICs and 2 GTIAs in my system and make them switchable.....

 

Jurgen, from your reply, purely electrically speaking...would connecting two ANTICs to the addressbus (and databus) cause problems ? I understand they both will respond at the same time when addressed ....could I use some logic with one of the address lines switched to select one of the two "piggy backed" ANTICs ? (Also ignore all the other lines for now....I know most will need to be switched).

 

I assume with GTIA not. You can easily only switch the CS signal, right ? And simply directly connect the address and databusses.

 

So I'd either need to switch all data/adress lines for ANTIC or....could include a decoding logic to select on of the two ANTICs ?

 

 

[EDIT] ANTIC isn't a real processor in the way that it doesn't write back to memory right ? So...it only reads from memory if I'm correct.

Edited by Level42

Share this post


Link to post
Share on other sites

If you want to understand it right, you have to know that GTIA is THE Graphics chip in the Atari. It doesn't need the ANTIC for displaying content. IT could be 100% CPU driven. It's just that ANTIC helps to get the programs run more efficient.

 

At least, in a fair point of view, it's exactly that ANTIC AND GTIA together could be named a "Graphics Card".

 

That's also the point that got lost, when "new" Ataris had been on the agenda.

If you have a look at the VBXE, it could manage all graphics without ANTIC, reading from it's own memory. That means, if the GTIA had been upgraded the correct way, several games could have taken usage of the full 1.79MHz of the CPU.

In the AMIGA's chipset, they upgraded "ANTIC" to "AGNUS" , being able to read the RAM in the "Chip range with halts" and outside the chip-range, the CPU still was able to access the RAM at full speed.

 

You know what? ATARI sometimes was really silly. As the XEP-80 Card had it's own RAM, it had been overlayed with the ANTIC/GTIA Graphics. That would have made it possible to do many Games, Digital Sound, Office programs, showing screen content, while ANTIC DMA was turned off. But they never did some 8 bit revision, including the XEP-80.

Edited by emkay
  • Like 1

Share this post


Link to post
Share on other sites

GTIA luma output is digital which means doing projects to create better quality output become a bit easier.

The problem though with the external resistor ladder method of generating the luma is that certain transitions like 3-4, 7-8, 11-12 create unwanted dark bands because there's a temporary droop in output voltage instead of the instant boost from one luma to the next.

 

GTIA colour signal - I think it is also digital. The trick with it is that GTIA has internal delay taps which mean the waveform can have 15 steps of delay within the 3.59 or 4.43 MHz colourburst frequency (colour 00 suppresses the waveform). From what I can gather, the output is a pulse wave which has rounding performed by external circuitry.

 

GTIA is also the only chip that performs some operations faster than the master clock ~ 3.59 MHz. e.g. in hires modes the pixel clock is actually ~ 7.2 Mhz. From what I know, GTIA has the 3.59 MHz clock as input and creates the shorter delay internally.

 

Antic AFAIK is 100% digital and performs all internal operations @ 1.79 MHz or slower. The main outputs from Antic are the AN0-AN2 bus which is connected to GTIA and carries pixel data and H/VSync commands. These signals only change at the 1.79 Mhz rate, hires pixel data is sent in pairs which GTIA splits and sends on delay.

  • Like 5

Share this post


Link to post
Share on other sites

Yeah sorry guys, my address/databus, three-state etc. knowledge has sunk away badly I'm afraid ;)

 

Suppose now, that I'd like to have 2 ANTICs and 2 GTIAs in my system and make them switchable.....

 

Jurgen, from your reply, purely electrically speaking...would connecting two ANTICs to the addressbus (and databus) cause problems ? I understand they both will respond at the same time when addressed ....could I use some logic with one of the address lines switched to select one of the two "piggy backed" ANTICs ? (Also ignore all the other lines for now....I know most will need to be switched).

 

I assume with GTIA not. You can easily only switch the CS signal, right ? And simply directly connect the address and databusses.

 

So I'd either need to switch all data/adress lines for ANTIC or....could include a decoding logic to select on of the two ANTICs ?

 

 

[EDIT] ANTIC isn't a real processor in the way that it doesn't write back to memory right ? So...it only reads from memory if I'm correct.

 

 

 

In theory you could probably have two ANTICs on the bus at the same time but they would always have to be doing exactly the same thing. You could probably come up with some logic to address one or the other, but the problem is when they go to read from memory to fetch video data. Unless they were doing exactly the same thing, they would push different addresses onto the bus which would totally mess things up.

 

You are correct that the ANTIC doesn't write to memory, it only reads.

Edited by DanBoris
  • Like 1

Share this post


Link to post
Share on other sites

IMO little point having multiple Antics.

 

Multiple GTIAs though, and I think it's been done - you could use luma only from each one and have a 512 colour palette (4,096 for the GTIA luma only mode).

Though having done that, there'd be the requirement to set other registers in parallel - the method I'd do is have combined addressing by default but allow individual addressing so you ca set the colour registers seperately. Probably something like $D000-$D07F hits all GTIAs but $D080-$D0FF gets routed to each unique one depending on bits 5-6 of the address.

  • Like 2

Share this post


Link to post
Share on other sites

GTIA colour signal - I think it is also digital.

 

GTIA color output is digital indeed, open drain as a matter of fact. But the color delay input is analog. ANTIC is digital only, and Pokey, of course, has some analog logic.

 

GTIA is also the only chip that performs some operations faster than the master clock ~ 3.59 MHz. e.g. in hires modes the pixel clock is actually ~ 7.2 Mhz. From what I know, GTIA has the 3.59 MHz clock as input and creates the shorter delay internally.

 

Antic AFAIK is 100% digital and performs all internal operations @ 1.79 MHz or slower. The main outputs from Antic are the AN0-AN2 bus which is connected to GTIA and carries pixel data and H/VSync commands. These signals only change at the 1.79 Mhz rate, hires pixel data is sent in pairs which GTIA splits and sends on delay.

No. Part of ANTIC does work at the system 1.79 MHz clock. But all the GTIA interface, including the ANx outputs, works at the fast 3.58 MHz clock.

 

GTIA doesn't exactly produce a high rez pixel clock. It operates the LUM signals at both edges of the 3.58 MHz clock.

  • Like 1

Share this post


Link to post
Share on other sites

GTIA color output is digital indeed, open drain as a matter of fact. But the color delay input is analog. ANTIC is digital only, and Pokey, of course, has some analog logic.

Seems to me that if a simple means we're developed to decode this digital color signal into an address (0-15), it could be used to control 3 analog switches and route an analog version of luma to an RGB monitor via an analog buffer circuit feeding the monitor's 75 ohm inputs. I know in the past someone tied the analog luma into all 3 RGB inputs on a SC1224 and got a respectable hi-quality gray scale picture. Just need to provide the color switching circuit to complete this. So anyone have a clue as to how you could extract a digital color address from GTIA's color out pin? Could be a fun project.

 

- Michael

Share this post


Link to post
Share on other sites

IMO little point having multiple Antics.

 

Multiple GTIAs though, and I think it's been done - you could use luma only from each one and have a 512 colour palette (4,096 for the GTIA luma only mode).

Though having done that, there'd be the requirement to set other registers in parallel - the method I'd do is have combined addressing by default but allow individual addressing so you ca set the colour registers seperately. Probably something like $D000-$D07F hits all GTIAs but $D080-$D0FF gets routed to each unique one depending on bits 5-6 of the address.

 

Can you expand on the GTIA luma only mode? how would that get to 4096 colors?

 

And why would 2 256-color GTIAs add up to 512 colors and not something higher if the output is combined?

 

Thanks!

Share this post


Link to post
Share on other sites

The luma-only mode is with PRIOR = $40 and Graphics 8 (usually) - it gives 16 lumas at a given colour instead of the normal available choice from 8.

 

The colour delay thing - I've proposed that before. Since the colour output is a pulse that is phase delayed from the normal clock, an external device could deduce which colour is required and do conversion to component video or HDMI.

 

For 512 or 4096 colours it's actually 3 GTIAs required. They would be used such that each one outputs a component of the video (R, G, B). The actual colour output from each would be ignored, only the luma used.

Share this post


Link to post
Share on other sites

 

 

In theory you could probably have two ANTICs on the bus at the same time but they would always have to be doing exactly the same thing. You could probably come up with some logic to address one or the other, but the problem is when they go to read from memory to fetch video data. Unless they were doing exactly the same thing, they would push different addresses onto the bus which would totally mess things up.

 

You are correct that the ANTIC doesn't write to memory, it only reads.

 

But I'd actually want them to do the same thing....well....let's say they will run in "parallel" but only "output" would be "selected".

 

I'm thinking of switching all lines of both ANTIC and GTIA. But I'm pretty sure a lot of them won't be necessary to switch. I'd like to find out which one's I could simply hard connect without damage or mess-up....

Share this post


Link to post
Share on other sites

 

But I'd actually want them to do the same thing....well....let's say they will run in "parallel" but only "output" would be "selected".

 

I'm thinking of switching all lines of both ANTIC and GTIA. But I'm pretty sure a lot of them won't be necessary to switch. I'd like to find out which one's I could simply hard connect without damage or mess-up....

 

If they are both doing the same thing, why would you want two of them? Not sure what you goal is here?

Share this post


Link to post
Share on other sites

Let's ignore why I want to for the moment....please :)

 

I've learned a lot about ANTIC and 6502c and how they interact. In fact, ANTIC is more or less the boss as it can HALT the 6502c when it needs to....or feels like it ;)

 

It's interesting to compare 400/800 and XL schematics. 400/800 HALT The 6502 by stopping the clock signal going into it. I never realized that this was possible but what I find even more interesting is that the 6502 is still connected to data and address bus while ANTIC is "doing its thing"....this feels weird as I would expect that it would be required for the address and data lines to go in high state .??

 

However....what you rarely read about is that GTIA also has a HALT output and it's connected all together so both ANTIC and GTIA can halt the 6502.

But .....when does the GTIA "want" to do that ?

Edited by Level42

Share this post


Link to post
Share on other sites

Oh wait.....there are thri-state buffers....looks like the busses ARE isolated from the 6502 when ANTIC is on the bus....which makes sense.

Edited by Level42

Share this post


Link to post
Share on other sites

However....what you rarely read about is that GTIA also has a HALT output and it's connected all together so both ANTIC and GTIA can halt the 6502.

But .....when does the GTIA "want" to do that ?

 

The GTIA HALT pin is not an output, it's an input. GTIA uses this to detect if Antic is performing PM DMA at the current scanline or not.

  • Like 2

Share this post


Link to post
Share on other sites

 

The GTIA HALT pin is not an output, it's an input. GTIA uses this to detect if Antic is performing PM DMA at the current scanline or not.

But what you say makes sense. I already thought it was weird to have two devices putting HALT on one line....

Share this post


Link to post
Share on other sites

Oh wait.....there are thri-state buffers....looks like the busses ARE isolated from the 6502 when ANTIC is on the bus....which makes sense.

 

Yeah, the 400 and 800 have the tri-state buffers. The XL and later systems have a special version of the 6502 called the "Sally" which has the tri-state buffers built in.

  • Like 2

Share this post


Link to post
Share on other sites

Yep. I updated the Wiki....

 

Yeah I knew about the HALT line added to Sally but didn't know about the tri-state buffers being incorporated in it as well. Makes a lot of sense.

 

In fact, it makes you wonder why this wasn't done by MOS themselves.....makes the 6502 a lot more flexible.

  • Like 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...