Details of video memory access arbitration in Space InvadersWhy did Mac OS 7 perform poorly with virtual memory enabled?Memory-limited workloadsHow did the IBM PC handle multiple physical devices serving memory at the same physical address?Z80 and video chip contending for random accessAmiga memory bandwidthIs all 100% of a 64k Apple II memory usable?Is there really 1MiB of physical memory in the motherboard of a PC AT/XT?Intel 8080 and Altair 8800. 256 I/0 ports, but only 7 free RST (interrupt subroutine) - how it works?How did the ZX80 store both a useful program and screen memory?Did the PC/AT-bus use its expanded address space?

How fast can a ship with rotating habitats be accelerated?

Do space suits measure "methane" levels or other biological gases?

Why did this meteor appear cyan?

I'm reinstalling my Linux desktop, how do I keep SSH logins working?

Can another character physically take something that Mage Hand is carrying/holding?

Acceleration in Circular motion

In the context of a differentiator circuit, what is a “current-sensing resistor”?

How can I get edges to bend to avoid crossing?

Symbol for "not absolutely continuous" in Latex

How is this practical and ancient scene shot?

Welcome to my kitchen

Which centaur is more 'official'?

Was it really unprofessional of me to leave without asking for a raise first?

How was film developed in the late 1920s?

Most importants new papers in computational complexity

Should I report a leak of confidential HR information?

How can my story take place on Earth without referring to our existing cities and countries?

Using aluminium busbar/cables in an aircraft instead of copper

Skipping over failed imports until they are needed (if ever)

Being paid less than a "junior" colleague

How would an order of Monks that renounce their names communicate effectively?

Golf the smallest circle!

Why do I need two parameters in an HTTP parameter pollution attack?

Does “comme on était à New York” mean “since” or “as though”?



Details of video memory access arbitration in Space Invaders


Why did Mac OS 7 perform poorly with virtual memory enabled?Memory-limited workloadsHow did the IBM PC handle multiple physical devices serving memory at the same physical address?Z80 and video chip contending for random accessAmiga memory bandwidthIs all 100% of a 64k Apple II memory usable?Is there really 1MiB of physical memory in the motherboard of a PC AT/XT?Intel 8080 and Altair 8800. 256 I/0 ports, but only 7 free RST (interrupt subroutine) - how it works?How did the ZX80 store both a useful program and screen memory?Did the PC/AT-bus use its expanded address space?






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








7















I am working on an FPGA implementation of the original Space Invaders arcade machine and I'd like to implement access arbitration between the CPU and the video system. I can imagine several ways of doing it, and I would like to know how it was done on the real machine so I can implement something similar.



To recap, memory mapped to the CPU from 0x2400 to 0x4000 is an 8-bit-addressable 7K frame buffer where each byte represents 8 subsequent monochrome pixels. Obviously this memory needs to be accessible to the video system in time to draw the pixels as the electron beam sweeps across the screen.



1. Dual port RAM



In this setup, both the CPU and the video system can access the same memory at different addresses. Was this technology even available in 1978? Especially at a reasonable price?



2. Duplicate RAM with fanout writes



By using two 7K RAM modules, and fanning out writes from the CPU to both, we can have the CPU read from one and the video system read from the other, with no contention whatsoever. Of course, in a real hardware implementation, this requires an extra 7K RAM, which again is probably too expensive a solution in 1978.



3. Suspending the CPU via the READY pin during the entire visible screen



Quite extreme, but easy to implement: only allow the CPU to run during the horizontal and vertical retrace. While wasteful of CPU cycles, I think for Space Invaders this is probably viable, since I was able to get the game in a playable state (in an emulator, with no memory arbitration) with the CPU running in the low-hundred KHz range, so there is probably enough slack to make this workable.



4. Same as #3, but using the HOLD pin to only inhibit memory access from the CPU



This would allow the CPU to do a bit more work during the video system's VRAM access, and if I understand it right, it would require less components between the video RAM and the CPU since the CPU would electronically isolate itself from the bus.



5. Suspending the CPU (via READY) or inhibiting memory access (via HOLD) for every 8th pixel



Video system can read one byte at every 8th pixel into a shift register, then shift it out bit-by-bit. CPU only needs to be cordoned off from the video RAM for 1/8th of the time.



6. Suspending the CPU depending on the value on the address pins



This is the most efficient one I can think of, but also the most difficult to implement. In this scheme, the CPU is suspended (via READY) iff



  • The video system is accessing the VRAM (every 8th cycle during visible portion of the screen)

  • The CPU is requesting a read or a write to an address that is in the interval 0x2000..0x4000.

It seems to me that this would also require separate circuitry to isolate the CPU electronically from the bus, since by the time we can discover that the CPU is trying to access the video RAM at the wrong time, it would be "too late" to ask the CPU to release the bus.



7. Tick/tock access



(from a comment by user Janka): We can interleave memory access from CPU and from the video system by running them in two different clock phases (e.g. CPU on even, video on odd).



Although this makes sense intuitively for me, it is unclear how synchronous RAM access would work in this scheme, since the RAM would always have to reply with the contents of not the last, but the second-to-last cycle's address bus contents, right?



8. Other schemes I haven't thought of yet



Obviously the most exciting category.



So my question is, which of these approaches (or something else) did Space Invaders do to solve video RAM contention?










share|improve this question
























  • Most CPUs only access the external buses at one half of the clock cycle. This gives you the opportunity to use the other half of the clock cycle for video access.

    – Janka
    9 hours ago











  • @Janka: oh, right, I wanted to add that "tick/tock" approach to my list but forgot. Do you know if that is what the Space Invaders arcade machine actually did?

    – Cactus
    9 hours ago











  • I had called it "interleaved access" and the problem you see isn't one. There is no synchronous RAM access ever. The RAM has at least twice the access speed of the video logic. A more complicated video logic may also do two or more access cycles within its half of the CPU clock.

    – Janka
    8 hours ago

















7















I am working on an FPGA implementation of the original Space Invaders arcade machine and I'd like to implement access arbitration between the CPU and the video system. I can imagine several ways of doing it, and I would like to know how it was done on the real machine so I can implement something similar.



To recap, memory mapped to the CPU from 0x2400 to 0x4000 is an 8-bit-addressable 7K frame buffer where each byte represents 8 subsequent monochrome pixels. Obviously this memory needs to be accessible to the video system in time to draw the pixels as the electron beam sweeps across the screen.



1. Dual port RAM



In this setup, both the CPU and the video system can access the same memory at different addresses. Was this technology even available in 1978? Especially at a reasonable price?



2. Duplicate RAM with fanout writes



By using two 7K RAM modules, and fanning out writes from the CPU to both, we can have the CPU read from one and the video system read from the other, with no contention whatsoever. Of course, in a real hardware implementation, this requires an extra 7K RAM, which again is probably too expensive a solution in 1978.



3. Suspending the CPU via the READY pin during the entire visible screen



Quite extreme, but easy to implement: only allow the CPU to run during the horizontal and vertical retrace. While wasteful of CPU cycles, I think for Space Invaders this is probably viable, since I was able to get the game in a playable state (in an emulator, with no memory arbitration) with the CPU running in the low-hundred KHz range, so there is probably enough slack to make this workable.



4. Same as #3, but using the HOLD pin to only inhibit memory access from the CPU



This would allow the CPU to do a bit more work during the video system's VRAM access, and if I understand it right, it would require less components between the video RAM and the CPU since the CPU would electronically isolate itself from the bus.



5. Suspending the CPU (via READY) or inhibiting memory access (via HOLD) for every 8th pixel



Video system can read one byte at every 8th pixel into a shift register, then shift it out bit-by-bit. CPU only needs to be cordoned off from the video RAM for 1/8th of the time.



6. Suspending the CPU depending on the value on the address pins



This is the most efficient one I can think of, but also the most difficult to implement. In this scheme, the CPU is suspended (via READY) iff



  • The video system is accessing the VRAM (every 8th cycle during visible portion of the screen)

  • The CPU is requesting a read or a write to an address that is in the interval 0x2000..0x4000.

It seems to me that this would also require separate circuitry to isolate the CPU electronically from the bus, since by the time we can discover that the CPU is trying to access the video RAM at the wrong time, it would be "too late" to ask the CPU to release the bus.



7. Tick/tock access



(from a comment by user Janka): We can interleave memory access from CPU and from the video system by running them in two different clock phases (e.g. CPU on even, video on odd).



Although this makes sense intuitively for me, it is unclear how synchronous RAM access would work in this scheme, since the RAM would always have to reply with the contents of not the last, but the second-to-last cycle's address bus contents, right?



8. Other schemes I haven't thought of yet



Obviously the most exciting category.



So my question is, which of these approaches (or something else) did Space Invaders do to solve video RAM contention?










share|improve this question
























  • Most CPUs only access the external buses at one half of the clock cycle. This gives you the opportunity to use the other half of the clock cycle for video access.

    – Janka
    9 hours ago











  • @Janka: oh, right, I wanted to add that "tick/tock" approach to my list but forgot. Do you know if that is what the Space Invaders arcade machine actually did?

    – Cactus
    9 hours ago











  • I had called it "interleaved access" and the problem you see isn't one. There is no synchronous RAM access ever. The RAM has at least twice the access speed of the video logic. A more complicated video logic may also do two or more access cycles within its half of the CPU clock.

    – Janka
    8 hours ago













7












7








7








I am working on an FPGA implementation of the original Space Invaders arcade machine and I'd like to implement access arbitration between the CPU and the video system. I can imagine several ways of doing it, and I would like to know how it was done on the real machine so I can implement something similar.



To recap, memory mapped to the CPU from 0x2400 to 0x4000 is an 8-bit-addressable 7K frame buffer where each byte represents 8 subsequent monochrome pixels. Obviously this memory needs to be accessible to the video system in time to draw the pixels as the electron beam sweeps across the screen.



1. Dual port RAM



In this setup, both the CPU and the video system can access the same memory at different addresses. Was this technology even available in 1978? Especially at a reasonable price?



2. Duplicate RAM with fanout writes



By using two 7K RAM modules, and fanning out writes from the CPU to both, we can have the CPU read from one and the video system read from the other, with no contention whatsoever. Of course, in a real hardware implementation, this requires an extra 7K RAM, which again is probably too expensive a solution in 1978.



3. Suspending the CPU via the READY pin during the entire visible screen



Quite extreme, but easy to implement: only allow the CPU to run during the horizontal and vertical retrace. While wasteful of CPU cycles, I think for Space Invaders this is probably viable, since I was able to get the game in a playable state (in an emulator, with no memory arbitration) with the CPU running in the low-hundred KHz range, so there is probably enough slack to make this workable.



4. Same as #3, but using the HOLD pin to only inhibit memory access from the CPU



This would allow the CPU to do a bit more work during the video system's VRAM access, and if I understand it right, it would require less components between the video RAM and the CPU since the CPU would electronically isolate itself from the bus.



5. Suspending the CPU (via READY) or inhibiting memory access (via HOLD) for every 8th pixel



Video system can read one byte at every 8th pixel into a shift register, then shift it out bit-by-bit. CPU only needs to be cordoned off from the video RAM for 1/8th of the time.



6. Suspending the CPU depending on the value on the address pins



This is the most efficient one I can think of, but also the most difficult to implement. In this scheme, the CPU is suspended (via READY) iff



  • The video system is accessing the VRAM (every 8th cycle during visible portion of the screen)

  • The CPU is requesting a read or a write to an address that is in the interval 0x2000..0x4000.

It seems to me that this would also require separate circuitry to isolate the CPU electronically from the bus, since by the time we can discover that the CPU is trying to access the video RAM at the wrong time, it would be "too late" to ask the CPU to release the bus.



7. Tick/tock access



(from a comment by user Janka): We can interleave memory access from CPU and from the video system by running them in two different clock phases (e.g. CPU on even, video on odd).



Although this makes sense intuitively for me, it is unclear how synchronous RAM access would work in this scheme, since the RAM would always have to reply with the contents of not the last, but the second-to-last cycle's address bus contents, right?



8. Other schemes I haven't thought of yet



Obviously the most exciting category.



So my question is, which of these approaches (or something else) did Space Invaders do to solve video RAM contention?










share|improve this question
















I am working on an FPGA implementation of the original Space Invaders arcade machine and I'd like to implement access arbitration between the CPU and the video system. I can imagine several ways of doing it, and I would like to know how it was done on the real machine so I can implement something similar.



To recap, memory mapped to the CPU from 0x2400 to 0x4000 is an 8-bit-addressable 7K frame buffer where each byte represents 8 subsequent monochrome pixels. Obviously this memory needs to be accessible to the video system in time to draw the pixels as the electron beam sweeps across the screen.



1. Dual port RAM



In this setup, both the CPU and the video system can access the same memory at different addresses. Was this technology even available in 1978? Especially at a reasonable price?



2. Duplicate RAM with fanout writes



By using two 7K RAM modules, and fanning out writes from the CPU to both, we can have the CPU read from one and the video system read from the other, with no contention whatsoever. Of course, in a real hardware implementation, this requires an extra 7K RAM, which again is probably too expensive a solution in 1978.



3. Suspending the CPU via the READY pin during the entire visible screen



Quite extreme, but easy to implement: only allow the CPU to run during the horizontal and vertical retrace. While wasteful of CPU cycles, I think for Space Invaders this is probably viable, since I was able to get the game in a playable state (in an emulator, with no memory arbitration) with the CPU running in the low-hundred KHz range, so there is probably enough slack to make this workable.



4. Same as #3, but using the HOLD pin to only inhibit memory access from the CPU



This would allow the CPU to do a bit more work during the video system's VRAM access, and if I understand it right, it would require less components between the video RAM and the CPU since the CPU would electronically isolate itself from the bus.



5. Suspending the CPU (via READY) or inhibiting memory access (via HOLD) for every 8th pixel



Video system can read one byte at every 8th pixel into a shift register, then shift it out bit-by-bit. CPU only needs to be cordoned off from the video RAM for 1/8th of the time.



6. Suspending the CPU depending on the value on the address pins



This is the most efficient one I can think of, but also the most difficult to implement. In this scheme, the CPU is suspended (via READY) iff



  • The video system is accessing the VRAM (every 8th cycle during visible portion of the screen)

  • The CPU is requesting a read or a write to an address that is in the interval 0x2000..0x4000.

It seems to me that this would also require separate circuitry to isolate the CPU electronically from the bus, since by the time we can discover that the CPU is trying to access the video RAM at the wrong time, it would be "too late" to ask the CPU to release the bus.



7. Tick/tock access



(from a comment by user Janka): We can interleave memory access from CPU and from the video system by running them in two different clock phases (e.g. CPU on even, video on odd).



Although this makes sense intuitively for me, it is unclear how synchronous RAM access would work in this scheme, since the RAM would always have to reply with the contents of not the last, but the second-to-last cycle's address bus contents, right?



8. Other schemes I haven't thought of yet



Obviously the most exciting category.



So my question is, which of these approaches (or something else) did Space Invaders do to solve video RAM contention?







memory 8080






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 9 hours ago







Cactus

















asked 9 hours ago









CactusCactus

6736 silver badges22 bronze badges




6736 silver badges22 bronze badges












  • Most CPUs only access the external buses at one half of the clock cycle. This gives you the opportunity to use the other half of the clock cycle for video access.

    – Janka
    9 hours ago











  • @Janka: oh, right, I wanted to add that "tick/tock" approach to my list but forgot. Do you know if that is what the Space Invaders arcade machine actually did?

    – Cactus
    9 hours ago











  • I had called it "interleaved access" and the problem you see isn't one. There is no synchronous RAM access ever. The RAM has at least twice the access speed of the video logic. A more complicated video logic may also do two or more access cycles within its half of the CPU clock.

    – Janka
    8 hours ago

















  • Most CPUs only access the external buses at one half of the clock cycle. This gives you the opportunity to use the other half of the clock cycle for video access.

    – Janka
    9 hours ago











  • @Janka: oh, right, I wanted to add that "tick/tock" approach to my list but forgot. Do you know if that is what the Space Invaders arcade machine actually did?

    – Cactus
    9 hours ago











  • I had called it "interleaved access" and the problem you see isn't one. There is no synchronous RAM access ever. The RAM has at least twice the access speed of the video logic. A more complicated video logic may also do two or more access cycles within its half of the CPU clock.

    – Janka
    8 hours ago
















Most CPUs only access the external buses at one half of the clock cycle. This gives you the opportunity to use the other half of the clock cycle for video access.

– Janka
9 hours ago





Most CPUs only access the external buses at one half of the clock cycle. This gives you the opportunity to use the other half of the clock cycle for video access.

– Janka
9 hours ago













@Janka: oh, right, I wanted to add that "tick/tock" approach to my list but forgot. Do you know if that is what the Space Invaders arcade machine actually did?

– Cactus
9 hours ago





@Janka: oh, right, I wanted to add that "tick/tock" approach to my list but forgot. Do you know if that is what the Space Invaders arcade machine actually did?

– Cactus
9 hours ago













I had called it "interleaved access" and the problem you see isn't one. There is no synchronous RAM access ever. The RAM has at least twice the access speed of the video logic. A more complicated video logic may also do two or more access cycles within its half of the CPU clock.

– Janka
8 hours ago





I had called it "interleaved access" and the problem you see isn't one. There is no synchronous RAM access ever. The RAM has at least twice the access speed of the video logic. A more complicated video logic may also do two or more access cycles within its half of the CPU clock.

– Janka
8 hours ago










2 Answers
2






active

oldest

votes


















4














Space Invaders uses a simple display format where bytes are read from memory in order via an address counter, and shifted out via a shift register. Timing is controlled by discrete hardware.



The video hardware has priority over the CPU. When it needs to read a byte it asserts the 8080's /WAIT signal, giving it exclusive access to the memory bus. This can be seen on the schematic.



This technique has the advantage of the 8080 not having to be synchronized with the display hardware at all.






share|improve this answer






























    3














    This is rather generic answer. As you point that Space Invaders uses 8080 CPU, it is known that 8080 accesses memory at the rate of 1 access per 3 clock cycles (max.). Other two cycles are freely available for the video system to fetch the required data.



    For this kind of access to work reliably, DRAM chips must be able to operate at CPU clock speed (i.e. the timings of the whole access including /RAS and /CAS stages must fit in single CPU clock).



    An example is this schematics http://www.spetsialist-mx.ru/schemes/Spetsialist.png of the USSR i8080-based computer. DD43 here is the i8080 (its USSR clone), DD15-DD18 are address multiplexers which route addresses from both video circuit and CPU to the DRAM, DD12.1 flip-flop (1/2 of 7474) is the arbiter that determines whether video circuit or CPU accesses the DRAM at any given clock cycle.



    However, the most correct answer сould be immediately determined from the schematics of Space Invaders.






    share|improve this answer

























      Your Answer








      StackExchange.ready(function()
      var channelOptions =
      tags: "".split(" "),
      id: "648"
      ;
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function()
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled)
      StackExchange.using("snippets", function()
      createEditor();
      );

      else
      createEditor();

      );

      function createEditor()
      StackExchange.prepareEditor(
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: false,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: null,
      bindNavPrevention: true,
      postfix: "",
      imageUploader:
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      ,
      noCode: true, onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      );



      );













      draft saved

      draft discarded


















      StackExchange.ready(
      function ()
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fretrocomputing.stackexchange.com%2fquestions%2f11451%2fdetails-of-video-memory-access-arbitration-in-space-invaders%23new-answer', 'question_page');

      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      4














      Space Invaders uses a simple display format where bytes are read from memory in order via an address counter, and shifted out via a shift register. Timing is controlled by discrete hardware.



      The video hardware has priority over the CPU. When it needs to read a byte it asserts the 8080's /WAIT signal, giving it exclusive access to the memory bus. This can be seen on the schematic.



      This technique has the advantage of the 8080 not having to be synchronized with the display hardware at all.






      share|improve this answer



























        4














        Space Invaders uses a simple display format where bytes are read from memory in order via an address counter, and shifted out via a shift register. Timing is controlled by discrete hardware.



        The video hardware has priority over the CPU. When it needs to read a byte it asserts the 8080's /WAIT signal, giving it exclusive access to the memory bus. This can be seen on the schematic.



        This technique has the advantage of the 8080 not having to be synchronized with the display hardware at all.






        share|improve this answer

























          4












          4








          4







          Space Invaders uses a simple display format where bytes are read from memory in order via an address counter, and shifted out via a shift register. Timing is controlled by discrete hardware.



          The video hardware has priority over the CPU. When it needs to read a byte it asserts the 8080's /WAIT signal, giving it exclusive access to the memory bus. This can be seen on the schematic.



          This technique has the advantage of the 8080 not having to be synchronized with the display hardware at all.






          share|improve this answer













          Space Invaders uses a simple display format where bytes are read from memory in order via an address counter, and shifted out via a shift register. Timing is controlled by discrete hardware.



          The video hardware has priority over the CPU. When it needs to read a byte it asserts the 8080's /WAIT signal, giving it exclusive access to the memory bus. This can be seen on the schematic.



          This technique has the advantage of the 8080 not having to be synchronized with the display hardware at all.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered 7 hours ago









          useruser

          5,68410 silver badges26 bronze badges




          5,68410 silver badges26 bronze badges























              3














              This is rather generic answer. As you point that Space Invaders uses 8080 CPU, it is known that 8080 accesses memory at the rate of 1 access per 3 clock cycles (max.). Other two cycles are freely available for the video system to fetch the required data.



              For this kind of access to work reliably, DRAM chips must be able to operate at CPU clock speed (i.e. the timings of the whole access including /RAS and /CAS stages must fit in single CPU clock).



              An example is this schematics http://www.spetsialist-mx.ru/schemes/Spetsialist.png of the USSR i8080-based computer. DD43 here is the i8080 (its USSR clone), DD15-DD18 are address multiplexers which route addresses from both video circuit and CPU to the DRAM, DD12.1 flip-flop (1/2 of 7474) is the arbiter that determines whether video circuit or CPU accesses the DRAM at any given clock cycle.



              However, the most correct answer сould be immediately determined from the schematics of Space Invaders.






              share|improve this answer



























                3














                This is rather generic answer. As you point that Space Invaders uses 8080 CPU, it is known that 8080 accesses memory at the rate of 1 access per 3 clock cycles (max.). Other two cycles are freely available for the video system to fetch the required data.



                For this kind of access to work reliably, DRAM chips must be able to operate at CPU clock speed (i.e. the timings of the whole access including /RAS and /CAS stages must fit in single CPU clock).



                An example is this schematics http://www.spetsialist-mx.ru/schemes/Spetsialist.png of the USSR i8080-based computer. DD43 here is the i8080 (its USSR clone), DD15-DD18 are address multiplexers which route addresses from both video circuit and CPU to the DRAM, DD12.1 flip-flop (1/2 of 7474) is the arbiter that determines whether video circuit or CPU accesses the DRAM at any given clock cycle.



                However, the most correct answer сould be immediately determined from the schematics of Space Invaders.






                share|improve this answer

























                  3












                  3








                  3







                  This is rather generic answer. As you point that Space Invaders uses 8080 CPU, it is known that 8080 accesses memory at the rate of 1 access per 3 clock cycles (max.). Other two cycles are freely available for the video system to fetch the required data.



                  For this kind of access to work reliably, DRAM chips must be able to operate at CPU clock speed (i.e. the timings of the whole access including /RAS and /CAS stages must fit in single CPU clock).



                  An example is this schematics http://www.spetsialist-mx.ru/schemes/Spetsialist.png of the USSR i8080-based computer. DD43 here is the i8080 (its USSR clone), DD15-DD18 are address multiplexers which route addresses from both video circuit and CPU to the DRAM, DD12.1 flip-flop (1/2 of 7474) is the arbiter that determines whether video circuit or CPU accesses the DRAM at any given clock cycle.



                  However, the most correct answer сould be immediately determined from the schematics of Space Invaders.






                  share|improve this answer













                  This is rather generic answer. As you point that Space Invaders uses 8080 CPU, it is known that 8080 accesses memory at the rate of 1 access per 3 clock cycles (max.). Other two cycles are freely available for the video system to fetch the required data.



                  For this kind of access to work reliably, DRAM chips must be able to operate at CPU clock speed (i.e. the timings of the whole access including /RAS and /CAS stages must fit in single CPU clock).



                  An example is this schematics http://www.spetsialist-mx.ru/schemes/Spetsialist.png of the USSR i8080-based computer. DD43 here is the i8080 (its USSR clone), DD15-DD18 are address multiplexers which route addresses from both video circuit and CPU to the DRAM, DD12.1 flip-flop (1/2 of 7474) is the arbiter that determines whether video circuit or CPU accesses the DRAM at any given clock cycle.



                  However, the most correct answer сould be immediately determined from the schematics of Space Invaders.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered 8 hours ago









                  lvdlvd

                  3,2007 silver badges22 bronze badges




                  3,2007 silver badges22 bronze badges



























                      draft saved

                      draft discarded
















































                      Thanks for contributing an answer to Retrocomputing Stack Exchange!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid


                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.

                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function ()
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fretrocomputing.stackexchange.com%2fquestions%2f11451%2fdetails-of-video-memory-access-arbitration-in-space-invaders%23new-answer', 'question_page');

                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      Canceling a color specificationRandomly assigning color to Graphics3D objects?Default color for Filling in Mathematica 9Coloring specific elements of sets with a prime modified order in an array plotHow to pick a color differing significantly from the colors already in a given color list?Detection of the text colorColor numbers based on their valueCan color schemes for use with ColorData include opacity specification?My dynamic color schemes

                      Invision Community Contents History See also References External links Navigation menuProprietaryinvisioncommunity.comIPS Community ForumsIPS Community Forumsthis blog entry"License Changes, IP.Board 3.4, and the Future""Interview -- Matt Mecham of Ibforums""CEO Invision Power Board, Matt Mecham Is a Liar, Thief!"IPB License Explanation 1.3, 1.3.1, 2.0, and 2.1ArchivedSecurity Fixes, Updates And Enhancements For IPB 1.3.1Archived"New Demo Accounts - Invision Power Services"the original"New Default Skin"the original"Invision Power Board 3.0.0 and Applications Released"the original"Archived copy"the original"Perpetual licenses being done away with""Release Notes - Invision Power Services""Introducing: IPS Community Suite 4!"Invision Community Release Notes

                      François Viète Contents Biography Work and thought Bibliography See also Notes Further reading External links Navigation menup. 21Google Bookspp. 75–77Google BooksDe thou (from University of Saint Andrews)ArchivedGoogle BooksGoogle BooksGoogle BooksGoogle booksGoogle Bookscc-parthenay.frL'histoire universelle (fr)Universal History (en)ArchivedAdsabs.harvard.eduPagesperso-orange.frArchive.orgChikara Sasaki. Descartes' mathematical thought p.259Google BooksGoogle BooksGoogle Bookspp. 152 and onwardGoogle BooksGoogle BooksScribd.comGoogle Books1257-7979Google BooksGoogle BooksGoogle BooksGoogle BooksGoogle BooksGoogle BooksGallica.bnf.frGoogle BooksGoogle Books"François Viète"Francois Viète: Father of Modern Algebraic NotationThe Lawyer and the GamblerAbout TarporleySite de Jean-Paul GuichardL'algèbre nouvelle"About the Harmonicon"cb120511976(data)1188044800000 0001 0913 5903n82164680ola2013766880073431702w6vt1sb70287374827140948071409480