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?

Three knights or knaves, three different hair colors

Does science define life as "beginning at conception"?

Which values for voltage divider

How can I reduce the size of matrix?

Why is unzipped file smaller than zipped file

Is being an extrovert a necessary condition to be a manager?

csname in newenviroment

What does it mean for something to be strictly less than epsilon for an arbitrary epsilon?

How to test if argument is a single space?

Managing heat dissipation in a magic wand

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

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

Ribbon Cable Cross Talk - Is there a fix after the fact?

Are clauses with "который" restrictive or non-restrictive by default?

"Official wife" or "Formal wife"?

Way of refund if scammed?

How to safely discharge oneself

Singular Integration

Why is this integration method not valid?

Proto-Indo-European (PIE) words with IPA

Why do testers need root cause analysis?

Are there historical examples of audiences drawn to a work that was "so bad it's good"?

Wifi light switch needs neutral wire. Why? AND Can that wire be a skinny one?

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



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?













1















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.























    1















    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.





















      1












      1








      1








      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

      82




      82




      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


















          4















          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









            4















            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















            4















            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













            4












            4








            4








            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 2 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

                    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

                    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

                    Ласкавець круглолистий Зміст Опис | Поширення | Галерея | Примітки | Посилання | Навігаційне меню58171138361-22960890446Bupleurum rotundifoliumEuro+Med PlantbasePlants of the World Online — Kew ScienceGermplasm Resources Information Network (GRIN)Ласкавецькн. VI : Літери Ком — Левиправивши або дописавши її