Why do the i8080 I/O instructions take a byte-sized operand to determine the port?Why did Pokémon Red have so many overflow bugs?DIY Project using 1970s 8-bit CPU, is it possible?What is the relative code density of 8-bit microprocessors?Why was the 8080's JumP immediate instruction placed where it was?Intel 8080 - Behaviour of the carry bit when comparing a value with 0The start of x86: Intel 8080 vs Intel 8086?Intel 8080 and Altair 8800. 256 I/0 ports, but only 7 free RST (interrupt subroutine) - how it works?What is the difference between an 8080 and an 8051?Comparing Signed Numbers on Z80 (8080) in AssemblyWhere can I find and download emulator of Altair 8800 with Intel 8080 processor for Windows?

Caught with my phone during an exam

nginx conf: http2 module not working in Chrome in ubuntu 18.04

Real Analysis: Proof of the equivalent definitions of the derivative.

How to test if argument is a single space?

Negative impact of having the launch pad away from the Equator

Is it OK to look at the list of played moves during the game to determine the status of the 50 move rule?

How could the B-29 bomber back up under its own power?

Proto-Indo-European (PIE) words with IPA

What does it mean when みたいな is at the end of a sentence?

Does the fact that we can only measure the two-way speed of light undermine the axiom of invariance?

Why "strap-on" boosters, and how do other people say it?

To exponential digit growth and beyond!

What happens when redirecting with 3>&1 1>/dev/null?

Why is 'additive' EQ more difficult to use than 'subtractive'?

What defines a person who is circumcised "of the heart"?

Does science define life as "beginning at conception"?

How can I reduce the size of matrix?

How to make Flex Markers appear in Logic Pro X?

Split into three!

If a character has cast the Fly spell on themselves, can they "hand off" to the Levitate spell without interruption?

Is it normal to "extract a paper" from a master thesis?

What is the required burn to keep a satellite at a Lagrangian point?

How to safely discharge oneself

Efficient Algorithms for Destroyed Document Reconstruction



Why do the i8080 I/O instructions take a byte-sized operand to determine the port?


Why did Pokémon Red have so many overflow bugs?DIY Project using 1970s 8-bit CPU, is it possible?What is the relative code density of 8-bit microprocessors?Why was the 8080's JumP immediate instruction placed where it was?Intel 8080 - Behaviour of the carry bit when comparing a value with 0The start of x86: Intel 8080 vs Intel 8086?Intel 8080 and Altair 8800. 256 I/0 ports, but only 7 free RST (interrupt subroutine) - how it works?What is the difference between an 8080 and an 8051?Comparing Signed Numbers on Z80 (8080) in AssemblyWhere can I find and download emulator of Altair 8800 with Intel 8080 processor for Windows?













2















I thought the i8080 had 8 16-bit IN ports and 8 16-bit OUT ports. Doesn't that mean the instructions



IN d8 ; only index 0-7?
OUT d8


can only take 8 possible values? What would it be indexing otherwise?










share|improve this question







New contributor



David Tran is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.























    2















    I thought the i8080 had 8 16-bit IN ports and 8 16-bit OUT ports. Doesn't that mean the instructions



    IN d8 ; only index 0-7?
    OUT d8


    can only take 8 possible values? What would it be indexing otherwise?










    share|improve this question







    New contributor



    David Tran is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.





















      2












      2








      2








      I thought the i8080 had 8 16-bit IN ports and 8 16-bit OUT ports. Doesn't that mean the instructions



      IN d8 ; only index 0-7?
      OUT d8


      can only take 8 possible values? What would it be indexing otherwise?










      share|improve this question







      New contributor



      David Tran is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      I thought the i8080 had 8 16-bit IN ports and 8 16-bit OUT ports. Doesn't that mean the instructions



      IN d8 ; only index 0-7?
      OUT d8


      can only take 8 possible values? What would it be indexing otherwise?







      8080






      share|improve this question







      New contributor



      David Tran is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.










      share|improve this question







      New contributor



      David Tran is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.








      share|improve this question




      share|improve this question






      New contributor



      David Tran is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.








      asked 6 hours ago









      David TranDavid Tran

      132




      132




      New contributor



      David Tran is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.




      New contributor




      David Tran is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






















          2 Answers
          2






          active

          oldest

          votes


















          5















          I thought the i8080 had 8 16-bit IN ports and 8 16-bit OUT ports.




          The 8080 does not have any I/O Ports. It's a microprocessor, not a microcontroller.



          (Maybe the system you're playing with does have these 8+8 ports, but they are always external to the CPU)



          The 8080 features a 16 bit data/program address space and an 8 bit I/O i/o address space. Or in other words it can address 64KiB of memory and 256 I/O locations. Each of them wit 8 Bit.






          share|improve this answer




















          • 1





            Which locations are in and which are out? Is it like 0-127 and 128-256 kinda thing?

            – David Tran
            6 hours ago











          • No. it's an address space. Not ports. What responds to each address, and if its read only, write only or read/write depends on the I/O unit assigned to that address. Keep in mind, the 8080 is a microprocessor, not a microcontroller there are no build in ports.

            – Raffzahn
            6 hours ago











          • Ahhh okay thank you. Makes sense now.

            – David Tran
            6 hours ago


















          1














          The question of whether something is "memory" or "I/O" depends upon how it responds to various control signals. There is nothing that would prevent anyone from wiring an I/O device so that it would respond to a range of "memory" addresses, and for some kinds of I/O device that could be more useful than wiring it to the "I/O" read/write signals. On the other hand, an I/O device which is wired to behave as a memory device will respond to an instruction that writes to HL whenever HL holds its address, without regard for whether HL was supposed to hold that address. An I/O device that response to I/O address 0x57 by contrast will only respond to an "out 57h" instruction, and the likelihood of the processor encountering that byte sequence by chance is smaller than the likelihood that HL might end up with a bogus address.



          While it would have been possible to make the OUT nn instruction take a two-byte address operand, that would have made the opcode bigger and slower while offering little benefit for most applications, especially given that the applications which would need more than 256 bytes of I/O space would also need to access I/O devices using register-based addresses and should thus likely be wired as "memory" devices.






          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
            );



            );






            David Tran is a new contributor. Be nice, and check out our Code of Conduct.









            draft saved

            draft discarded


















            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fretrocomputing.stackexchange.com%2fquestions%2f11052%2fwhy-do-the-i8080-i-o-instructions-take-a-byte-sized-operand-to-determine-the-por%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









            5















            I thought the i8080 had 8 16-bit IN ports and 8 16-bit OUT ports.




            The 8080 does not have any I/O Ports. It's a microprocessor, not a microcontroller.



            (Maybe the system you're playing with does have these 8+8 ports, but they are always external to the CPU)



            The 8080 features a 16 bit data/program address space and an 8 bit I/O i/o address space. Or in other words it can address 64KiB of memory and 256 I/O locations. Each of them wit 8 Bit.






            share|improve this answer




















            • 1





              Which locations are in and which are out? Is it like 0-127 and 128-256 kinda thing?

              – David Tran
              6 hours ago











            • No. it's an address space. Not ports. What responds to each address, and if its read only, write only or read/write depends on the I/O unit assigned to that address. Keep in mind, the 8080 is a microprocessor, not a microcontroller there are no build in ports.

              – Raffzahn
              6 hours ago











            • Ahhh okay thank you. Makes sense now.

              – David Tran
              6 hours ago















            5















            I thought the i8080 had 8 16-bit IN ports and 8 16-bit OUT ports.




            The 8080 does not have any I/O Ports. It's a microprocessor, not a microcontroller.



            (Maybe the system you're playing with does have these 8+8 ports, but they are always external to the CPU)



            The 8080 features a 16 bit data/program address space and an 8 bit I/O i/o address space. Or in other words it can address 64KiB of memory and 256 I/O locations. Each of them wit 8 Bit.






            share|improve this answer




















            • 1





              Which locations are in and which are out? Is it like 0-127 and 128-256 kinda thing?

              – David Tran
              6 hours ago











            • No. it's an address space. Not ports. What responds to each address, and if its read only, write only or read/write depends on the I/O unit assigned to that address. Keep in mind, the 8080 is a microprocessor, not a microcontroller there are no build in ports.

              – Raffzahn
              6 hours ago











            • Ahhh okay thank you. Makes sense now.

              – David Tran
              6 hours ago













            5












            5








            5








            I thought the i8080 had 8 16-bit IN ports and 8 16-bit OUT ports.




            The 8080 does not have any I/O Ports. It's a microprocessor, not a microcontroller.



            (Maybe the system you're playing with does have these 8+8 ports, but they are always external to the CPU)



            The 8080 features a 16 bit data/program address space and an 8 bit I/O i/o address space. Or in other words it can address 64KiB of memory and 256 I/O locations. Each of them wit 8 Bit.






            share|improve this answer
















            I thought the i8080 had 8 16-bit IN ports and 8 16-bit OUT ports.




            The 8080 does not have any I/O Ports. It's a microprocessor, not a microcontroller.



            (Maybe the system you're playing with does have these 8+8 ports, but they are always external to the CPU)



            The 8080 features a 16 bit data/program address space and an 8 bit I/O i/o address space. Or in other words it can address 64KiB of memory and 256 I/O locations. Each of them wit 8 Bit.







            share|improve this answer














            share|improve this answer



            share|improve this answer








            edited 4 hours ago

























            answered 6 hours ago









            RaffzahnRaffzahn

            58.2k6142237




            58.2k6142237







            • 1





              Which locations are in and which are out? Is it like 0-127 and 128-256 kinda thing?

              – David Tran
              6 hours ago











            • No. it's an address space. Not ports. What responds to each address, and if its read only, write only or read/write depends on the I/O unit assigned to that address. Keep in mind, the 8080 is a microprocessor, not a microcontroller there are no build in ports.

              – Raffzahn
              6 hours ago











            • Ahhh okay thank you. Makes sense now.

              – David Tran
              6 hours ago












            • 1





              Which locations are in and which are out? Is it like 0-127 and 128-256 kinda thing?

              – David Tran
              6 hours ago











            • No. it's an address space. Not ports. What responds to each address, and if its read only, write only or read/write depends on the I/O unit assigned to that address. Keep in mind, the 8080 is a microprocessor, not a microcontroller there are no build in ports.

              – Raffzahn
              6 hours ago











            • Ahhh okay thank you. Makes sense now.

              – David Tran
              6 hours ago







            1




            1





            Which locations are in and which are out? Is it like 0-127 and 128-256 kinda thing?

            – David Tran
            6 hours ago





            Which locations are in and which are out? Is it like 0-127 and 128-256 kinda thing?

            – David Tran
            6 hours ago













            No. it's an address space. Not ports. What responds to each address, and if its read only, write only or read/write depends on the I/O unit assigned to that address. Keep in mind, the 8080 is a microprocessor, not a microcontroller there are no build in ports.

            – Raffzahn
            6 hours ago





            No. it's an address space. Not ports. What responds to each address, and if its read only, write only or read/write depends on the I/O unit assigned to that address. Keep in mind, the 8080 is a microprocessor, not a microcontroller there are no build in ports.

            – Raffzahn
            6 hours ago













            Ahhh okay thank you. Makes sense now.

            – David Tran
            6 hours ago





            Ahhh okay thank you. Makes sense now.

            – David Tran
            6 hours ago











            1














            The question of whether something is "memory" or "I/O" depends upon how it responds to various control signals. There is nothing that would prevent anyone from wiring an I/O device so that it would respond to a range of "memory" addresses, and for some kinds of I/O device that could be more useful than wiring it to the "I/O" read/write signals. On the other hand, an I/O device which is wired to behave as a memory device will respond to an instruction that writes to HL whenever HL holds its address, without regard for whether HL was supposed to hold that address. An I/O device that response to I/O address 0x57 by contrast will only respond to an "out 57h" instruction, and the likelihood of the processor encountering that byte sequence by chance is smaller than the likelihood that HL might end up with a bogus address.



            While it would have been possible to make the OUT nn instruction take a two-byte address operand, that would have made the opcode bigger and slower while offering little benefit for most applications, especially given that the applications which would need more than 256 bytes of I/O space would also need to access I/O devices using register-based addresses and should thus likely be wired as "memory" devices.






            share|improve this answer



























              1














              The question of whether something is "memory" or "I/O" depends upon how it responds to various control signals. There is nothing that would prevent anyone from wiring an I/O device so that it would respond to a range of "memory" addresses, and for some kinds of I/O device that could be more useful than wiring it to the "I/O" read/write signals. On the other hand, an I/O device which is wired to behave as a memory device will respond to an instruction that writes to HL whenever HL holds its address, without regard for whether HL was supposed to hold that address. An I/O device that response to I/O address 0x57 by contrast will only respond to an "out 57h" instruction, and the likelihood of the processor encountering that byte sequence by chance is smaller than the likelihood that HL might end up with a bogus address.



              While it would have been possible to make the OUT nn instruction take a two-byte address operand, that would have made the opcode bigger and slower while offering little benefit for most applications, especially given that the applications which would need more than 256 bytes of I/O space would also need to access I/O devices using register-based addresses and should thus likely be wired as "memory" devices.






              share|improve this answer

























                1












                1








                1







                The question of whether something is "memory" or "I/O" depends upon how it responds to various control signals. There is nothing that would prevent anyone from wiring an I/O device so that it would respond to a range of "memory" addresses, and for some kinds of I/O device that could be more useful than wiring it to the "I/O" read/write signals. On the other hand, an I/O device which is wired to behave as a memory device will respond to an instruction that writes to HL whenever HL holds its address, without regard for whether HL was supposed to hold that address. An I/O device that response to I/O address 0x57 by contrast will only respond to an "out 57h" instruction, and the likelihood of the processor encountering that byte sequence by chance is smaller than the likelihood that HL might end up with a bogus address.



                While it would have been possible to make the OUT nn instruction take a two-byte address operand, that would have made the opcode bigger and slower while offering little benefit for most applications, especially given that the applications which would need more than 256 bytes of I/O space would also need to access I/O devices using register-based addresses and should thus likely be wired as "memory" devices.






                share|improve this answer













                The question of whether something is "memory" or "I/O" depends upon how it responds to various control signals. There is nothing that would prevent anyone from wiring an I/O device so that it would respond to a range of "memory" addresses, and for some kinds of I/O device that could be more useful than wiring it to the "I/O" read/write signals. On the other hand, an I/O device which is wired to behave as a memory device will respond to an instruction that writes to HL whenever HL holds its address, without regard for whether HL was supposed to hold that address. An I/O device that response to I/O address 0x57 by contrast will only respond to an "out 57h" instruction, and the likelihood of the processor encountering that byte sequence by chance is smaller than the likelihood that HL might end up with a bogus address.



                While it would have been possible to make the OUT nn instruction take a two-byte address operand, that would have made the opcode bigger and slower while offering little benefit for most applications, especially given that the applications which would need more than 256 bytes of I/O space would also need to access I/O devices using register-based addresses and should thus likely be wired as "memory" devices.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered 3 hours ago









                supercatsupercat

                8,7701144




                8,7701144




















                    David Tran is a new contributor. Be nice, and check out our Code of Conduct.









                    draft saved

                    draft discarded


















                    David Tran is a new contributor. Be nice, and check out our Code of Conduct.












                    David Tran is a new contributor. Be nice, and check out our Code of Conduct.











                    David Tran is a new contributor. Be nice, and check out our Code of Conduct.














                    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%2f11052%2fwhy-do-the-i8080-i-o-instructions-take-a-byte-sized-operand-to-determine-the-por%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

                    ParseJSON using SSJSUsing AMPscript with SSJS ActivitiesHow to resubscribe a user in Marketing cloud using SSJS?Pulling Subscriber Status from Lists using SSJSRetrieving Emails using SSJSProblem in updating DE using SSJSUsing SSJS to send single email in Marketing CloudError adding EmailSendDefinition using SSJS

                    Кампала Садржај Географија Географија Историја Становништво Привреда Партнерски градови Референце Спољашње везе Мени за навигацију0°11′ СГШ; 32°20′ ИГД / 0.18° СГШ; 32.34° ИГД / 0.18; 32.340°11′ СГШ; 32°20′ ИГД / 0.18° СГШ; 32.34° ИГД / 0.18; 32.34МедијиПодациЗванични веб-сајту

                    19. јануар Садржај Догађаји Рођења Смрти Празници и дани сећања Види још Референце Мени за навигацијуу