What undocumented 8085 instructions is Steven Morse referring to in “In The Beginning”?

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











up vote
4
down vote

favorite












In S. P. Morse's 1980 allegory, "In The Beginning", he writes




And Intel said, "Let there be an 8085 with an oscillator on the same chip as the processor, and let an on-chip system controller separate the data from the control lines." And Intel made a firmament and divided the added instructions which were under the firmament from the added instructions which were above the firmament. And Intel called the first set of instructions RIM and SIM. And the other instructions Intel never announced.




Given the context of the creation of the "Intel 8085", I think to satisfy this claim all of the following must be applicable,



  • instructions in the Intel 8085

  • instructions not present in the Intel 8080

  • instructions that are not documented

  • instructions that are neither SIM nor RIM

What instructions is Steven Morse referring to?










share|improve this question



























    up vote
    4
    down vote

    favorite












    In S. P. Morse's 1980 allegory, "In The Beginning", he writes




    And Intel said, "Let there be an 8085 with an oscillator on the same chip as the processor, and let an on-chip system controller separate the data from the control lines." And Intel made a firmament and divided the added instructions which were under the firmament from the added instructions which were above the firmament. And Intel called the first set of instructions RIM and SIM. And the other instructions Intel never announced.




    Given the context of the creation of the "Intel 8085", I think to satisfy this claim all of the following must be applicable,



    • instructions in the Intel 8085

    • instructions not present in the Intel 8080

    • instructions that are not documented

    • instructions that are neither SIM nor RIM

    What instructions is Steven Morse referring to?










    share|improve this question

























      up vote
      4
      down vote

      favorite









      up vote
      4
      down vote

      favorite











      In S. P. Morse's 1980 allegory, "In The Beginning", he writes




      And Intel said, "Let there be an 8085 with an oscillator on the same chip as the processor, and let an on-chip system controller separate the data from the control lines." And Intel made a firmament and divided the added instructions which were under the firmament from the added instructions which were above the firmament. And Intel called the first set of instructions RIM and SIM. And the other instructions Intel never announced.




      Given the context of the creation of the "Intel 8085", I think to satisfy this claim all of the following must be applicable,



      • instructions in the Intel 8085

      • instructions not present in the Intel 8080

      • instructions that are not documented

      • instructions that are neither SIM nor RIM

      What instructions is Steven Morse referring to?










      share|improve this question















      In S. P. Morse's 1980 allegory, "In The Beginning", he writes




      And Intel said, "Let there be an 8085 with an oscillator on the same chip as the processor, and let an on-chip system controller separate the data from the control lines." And Intel made a firmament and divided the added instructions which were under the firmament from the added instructions which were above the firmament. And Intel called the first set of instructions RIM and SIM. And the other instructions Intel never announced.




      Given the context of the creation of the "Intel 8085", I think to satisfy this claim all of the following must be applicable,



      • instructions in the Intel 8085

      • instructions not present in the Intel 8080

      • instructions that are not documented

      • instructions that are neither SIM nor RIM

      What instructions is Steven Morse referring to?







      intel instruction-set 8085






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 7 hours ago









      Raffzahn

      39k487157




      39k487157










      asked 8 hours ago









      Evan Carroll

      794219




      794219




















          1 Answer
          1






          active

          oldest

          votes

















          up vote
          5
          down vote













          Ken Shirriff has, as so often a nice table to start with - especially nice to detect the 'undocumented' ones. All opcodes in lower case are 'undokumented'. With sorting his table accoding to the 'octal' (2-3-3) decoding logic the 8085 uses (*1), the first are nicely grouped where the 8080 only did decode NOP:



          • (NOP - Not undocumented, but on the 8080 it filled the whole 0-x-0 group)


          • DSUB - 16 bit subtract HL - BC


          • ARHL - Arithmetic Right shift HL


          • RDEL - Rotate (shift) DE Left into carry, fill in zero

          • (RIM - Not undocumented, but added with the 8085)


          • LDHI - Load DE with HL plus Immediat8 (HL+i8->DE)

          • (SIM - Not undocumented, but added with the 8085)


          • LDSI - Load DE with SP plus Immediat8 (HL+i8->DE)



            The others are scattered in remaining holes for 16 bit operations and jumps (where they belong anyway)



          • RSTV - ReSTart if V is set



          • SHLX - Store HL indeXed by DE [DE]=HL


          • JNK - Jump on Not K


          • LHLX - Load HL indeXed by DE HL=[DE]


          • JK - Jump on K

          JK/JNK are about the (equaly undocumented) K-flag (*2), while RSTV is about the (similar undokumented) V-Flag (*3).



          These instructions would have made DE a quite versitaile register for 16 bit address calculation in indirect operations (*4). These instructions were present in all 8085, including second source, I ever tested (*5).



          I seriously have no idea why they where kept 'secret', as they would have improved HLL handling a lot. Morse offers an explanation in his paper Intel Microprocessors: 8008-8086 (MS-Word Document) published in IEEE Computer, Vol 13, No. 10, page 46, October 1980




          Several other instructions that had been contemplated were not made available because of the software ramifications and the compatibility constraints they would place on the forthcoming 8086.




          This is not only incorrect, as these instructions were available, but, to me it sounds quite like hindsight, as the 8085 was delivered a full two years before the 8086, about the time the 8086 project started. Further all of the 16 bit instructions are (in some form) present in the 8086 (as well as the Overflow Flag) and translation would have been as straight foreward as with the rest. Even more so, the only two instructions officially added, RIM and SIM, are among the ones explicit not supported by the 8086. (*6)




          *1 - Less obvious in Pastraiser's 8085 opcode table in classic hex notation - but maybe more like we're used to.



          *2 - Which might have been the one intended for signed comparision, but that's a different story.



          *3 - The V-Flag signals overflow, much like the V flag on the 6502. With RSTV this might have been intended for easy inertation of overflow exception handling.



          *4 - I realy used them a lot, as DE now became a quite usefule register instead of being a mere second HL usable via XHNG. Addrss calculation for structures became quite doable without bloating the instruction set.



          *5 - Mostly SIEMENS SAB8085, but also Toshiba, NEC, AMD and maybe others.



          *6 - My personal speculation is thatit wasn't, as so often, not a technical or design decision but made on management level to keep it '100%' 8080 compatible (whatever that ment for management blurb at that time) and thus supressing the nice add ons enginering had made (*7). RIM and SIM eventually as exception, as they where needed to support the new interrupt feature.



          *7 - Which leads to another thought: Having the ability for fast offset calculation to a memory (HL or stack pointer, 16 bit left shift for word address calculation and 16 bit indexed loads is quite pleasing for HLL programming. So while Mr. Morse does rightfuly deserve credit for making the 8086 with HLL in mind, these instructions indicate that others at Intel already tried to push into that direction before him and he knew about - and joined the treck.






          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',
            convertImagesToLinks: false,
            noModals: false,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: null,
            bindNavPrevention: true,
            postfix: "",
            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%2f8040%2fwhat-undocumented-8085-instructions-is-steven-morse-referring-to-in-in-the-begi%23new-answer', 'question_page');

            );

            Post as a guest






























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes








            up vote
            5
            down vote













            Ken Shirriff has, as so often a nice table to start with - especially nice to detect the 'undocumented' ones. All opcodes in lower case are 'undokumented'. With sorting his table accoding to the 'octal' (2-3-3) decoding logic the 8085 uses (*1), the first are nicely grouped where the 8080 only did decode NOP:



            • (NOP - Not undocumented, but on the 8080 it filled the whole 0-x-0 group)


            • DSUB - 16 bit subtract HL - BC


            • ARHL - Arithmetic Right shift HL


            • RDEL - Rotate (shift) DE Left into carry, fill in zero

            • (RIM - Not undocumented, but added with the 8085)


            • LDHI - Load DE with HL plus Immediat8 (HL+i8->DE)

            • (SIM - Not undocumented, but added with the 8085)


            • LDSI - Load DE with SP plus Immediat8 (HL+i8->DE)



              The others are scattered in remaining holes for 16 bit operations and jumps (where they belong anyway)



            • RSTV - ReSTart if V is set



            • SHLX - Store HL indeXed by DE [DE]=HL


            • JNK - Jump on Not K


            • LHLX - Load HL indeXed by DE HL=[DE]


            • JK - Jump on K

            JK/JNK are about the (equaly undocumented) K-flag (*2), while RSTV is about the (similar undokumented) V-Flag (*3).



            These instructions would have made DE a quite versitaile register for 16 bit address calculation in indirect operations (*4). These instructions were present in all 8085, including second source, I ever tested (*5).



            I seriously have no idea why they where kept 'secret', as they would have improved HLL handling a lot. Morse offers an explanation in his paper Intel Microprocessors: 8008-8086 (MS-Word Document) published in IEEE Computer, Vol 13, No. 10, page 46, October 1980




            Several other instructions that had been contemplated were not made available because of the software ramifications and the compatibility constraints they would place on the forthcoming 8086.




            This is not only incorrect, as these instructions were available, but, to me it sounds quite like hindsight, as the 8085 was delivered a full two years before the 8086, about the time the 8086 project started. Further all of the 16 bit instructions are (in some form) present in the 8086 (as well as the Overflow Flag) and translation would have been as straight foreward as with the rest. Even more so, the only two instructions officially added, RIM and SIM, are among the ones explicit not supported by the 8086. (*6)




            *1 - Less obvious in Pastraiser's 8085 opcode table in classic hex notation - but maybe more like we're used to.



            *2 - Which might have been the one intended for signed comparision, but that's a different story.



            *3 - The V-Flag signals overflow, much like the V flag on the 6502. With RSTV this might have been intended for easy inertation of overflow exception handling.



            *4 - I realy used them a lot, as DE now became a quite usefule register instead of being a mere second HL usable via XHNG. Addrss calculation for structures became quite doable without bloating the instruction set.



            *5 - Mostly SIEMENS SAB8085, but also Toshiba, NEC, AMD and maybe others.



            *6 - My personal speculation is thatit wasn't, as so often, not a technical or design decision but made on management level to keep it '100%' 8080 compatible (whatever that ment for management blurb at that time) and thus supressing the nice add ons enginering had made (*7). RIM and SIM eventually as exception, as they where needed to support the new interrupt feature.



            *7 - Which leads to another thought: Having the ability for fast offset calculation to a memory (HL or stack pointer, 16 bit left shift for word address calculation and 16 bit indexed loads is quite pleasing for HLL programming. So while Mr. Morse does rightfuly deserve credit for making the 8086 with HLL in mind, these instructions indicate that others at Intel already tried to push into that direction before him and he knew about - and joined the treck.






            share|improve this answer


























              up vote
              5
              down vote













              Ken Shirriff has, as so often a nice table to start with - especially nice to detect the 'undocumented' ones. All opcodes in lower case are 'undokumented'. With sorting his table accoding to the 'octal' (2-3-3) decoding logic the 8085 uses (*1), the first are nicely grouped where the 8080 only did decode NOP:



              • (NOP - Not undocumented, but on the 8080 it filled the whole 0-x-0 group)


              • DSUB - 16 bit subtract HL - BC


              • ARHL - Arithmetic Right shift HL


              • RDEL - Rotate (shift) DE Left into carry, fill in zero

              • (RIM - Not undocumented, but added with the 8085)


              • LDHI - Load DE with HL plus Immediat8 (HL+i8->DE)

              • (SIM - Not undocumented, but added with the 8085)


              • LDSI - Load DE with SP plus Immediat8 (HL+i8->DE)



                The others are scattered in remaining holes for 16 bit operations and jumps (where they belong anyway)



              • RSTV - ReSTart if V is set



              • SHLX - Store HL indeXed by DE [DE]=HL


              • JNK - Jump on Not K


              • LHLX - Load HL indeXed by DE HL=[DE]


              • JK - Jump on K

              JK/JNK are about the (equaly undocumented) K-flag (*2), while RSTV is about the (similar undokumented) V-Flag (*3).



              These instructions would have made DE a quite versitaile register for 16 bit address calculation in indirect operations (*4). These instructions were present in all 8085, including second source, I ever tested (*5).



              I seriously have no idea why they where kept 'secret', as they would have improved HLL handling a lot. Morse offers an explanation in his paper Intel Microprocessors: 8008-8086 (MS-Word Document) published in IEEE Computer, Vol 13, No. 10, page 46, October 1980




              Several other instructions that had been contemplated were not made available because of the software ramifications and the compatibility constraints they would place on the forthcoming 8086.




              This is not only incorrect, as these instructions were available, but, to me it sounds quite like hindsight, as the 8085 was delivered a full two years before the 8086, about the time the 8086 project started. Further all of the 16 bit instructions are (in some form) present in the 8086 (as well as the Overflow Flag) and translation would have been as straight foreward as with the rest. Even more so, the only two instructions officially added, RIM and SIM, are among the ones explicit not supported by the 8086. (*6)




              *1 - Less obvious in Pastraiser's 8085 opcode table in classic hex notation - but maybe more like we're used to.



              *2 - Which might have been the one intended for signed comparision, but that's a different story.



              *3 - The V-Flag signals overflow, much like the V flag on the 6502. With RSTV this might have been intended for easy inertation of overflow exception handling.



              *4 - I realy used them a lot, as DE now became a quite usefule register instead of being a mere second HL usable via XHNG. Addrss calculation for structures became quite doable without bloating the instruction set.



              *5 - Mostly SIEMENS SAB8085, but also Toshiba, NEC, AMD and maybe others.



              *6 - My personal speculation is thatit wasn't, as so often, not a technical or design decision but made on management level to keep it '100%' 8080 compatible (whatever that ment for management blurb at that time) and thus supressing the nice add ons enginering had made (*7). RIM and SIM eventually as exception, as they where needed to support the new interrupt feature.



              *7 - Which leads to another thought: Having the ability for fast offset calculation to a memory (HL or stack pointer, 16 bit left shift for word address calculation and 16 bit indexed loads is quite pleasing for HLL programming. So while Mr. Morse does rightfuly deserve credit for making the 8086 with HLL in mind, these instructions indicate that others at Intel already tried to push into that direction before him and he knew about - and joined the treck.






              share|improve this answer
























                up vote
                5
                down vote










                up vote
                5
                down vote









                Ken Shirriff has, as so often a nice table to start with - especially nice to detect the 'undocumented' ones. All opcodes in lower case are 'undokumented'. With sorting his table accoding to the 'octal' (2-3-3) decoding logic the 8085 uses (*1), the first are nicely grouped where the 8080 only did decode NOP:



                • (NOP - Not undocumented, but on the 8080 it filled the whole 0-x-0 group)


                • DSUB - 16 bit subtract HL - BC


                • ARHL - Arithmetic Right shift HL


                • RDEL - Rotate (shift) DE Left into carry, fill in zero

                • (RIM - Not undocumented, but added with the 8085)


                • LDHI - Load DE with HL plus Immediat8 (HL+i8->DE)

                • (SIM - Not undocumented, but added with the 8085)


                • LDSI - Load DE with SP plus Immediat8 (HL+i8->DE)



                  The others are scattered in remaining holes for 16 bit operations and jumps (where they belong anyway)



                • RSTV - ReSTart if V is set



                • SHLX - Store HL indeXed by DE [DE]=HL


                • JNK - Jump on Not K


                • LHLX - Load HL indeXed by DE HL=[DE]


                • JK - Jump on K

                JK/JNK are about the (equaly undocumented) K-flag (*2), while RSTV is about the (similar undokumented) V-Flag (*3).



                These instructions would have made DE a quite versitaile register for 16 bit address calculation in indirect operations (*4). These instructions were present in all 8085, including second source, I ever tested (*5).



                I seriously have no idea why they where kept 'secret', as they would have improved HLL handling a lot. Morse offers an explanation in his paper Intel Microprocessors: 8008-8086 (MS-Word Document) published in IEEE Computer, Vol 13, No. 10, page 46, October 1980




                Several other instructions that had been contemplated were not made available because of the software ramifications and the compatibility constraints they would place on the forthcoming 8086.




                This is not only incorrect, as these instructions were available, but, to me it sounds quite like hindsight, as the 8085 was delivered a full two years before the 8086, about the time the 8086 project started. Further all of the 16 bit instructions are (in some form) present in the 8086 (as well as the Overflow Flag) and translation would have been as straight foreward as with the rest. Even more so, the only two instructions officially added, RIM and SIM, are among the ones explicit not supported by the 8086. (*6)




                *1 - Less obvious in Pastraiser's 8085 opcode table in classic hex notation - but maybe more like we're used to.



                *2 - Which might have been the one intended for signed comparision, but that's a different story.



                *3 - The V-Flag signals overflow, much like the V flag on the 6502. With RSTV this might have been intended for easy inertation of overflow exception handling.



                *4 - I realy used them a lot, as DE now became a quite usefule register instead of being a mere second HL usable via XHNG. Addrss calculation for structures became quite doable without bloating the instruction set.



                *5 - Mostly SIEMENS SAB8085, but also Toshiba, NEC, AMD and maybe others.



                *6 - My personal speculation is thatit wasn't, as so often, not a technical or design decision but made on management level to keep it '100%' 8080 compatible (whatever that ment for management blurb at that time) and thus supressing the nice add ons enginering had made (*7). RIM and SIM eventually as exception, as they where needed to support the new interrupt feature.



                *7 - Which leads to another thought: Having the ability for fast offset calculation to a memory (HL or stack pointer, 16 bit left shift for word address calculation and 16 bit indexed loads is quite pleasing for HLL programming. So while Mr. Morse does rightfuly deserve credit for making the 8086 with HLL in mind, these instructions indicate that others at Intel already tried to push into that direction before him and he knew about - and joined the treck.






                share|improve this answer














                Ken Shirriff has, as so often a nice table to start with - especially nice to detect the 'undocumented' ones. All opcodes in lower case are 'undokumented'. With sorting his table accoding to the 'octal' (2-3-3) decoding logic the 8085 uses (*1), the first are nicely grouped where the 8080 only did decode NOP:



                • (NOP - Not undocumented, but on the 8080 it filled the whole 0-x-0 group)


                • DSUB - 16 bit subtract HL - BC


                • ARHL - Arithmetic Right shift HL


                • RDEL - Rotate (shift) DE Left into carry, fill in zero

                • (RIM - Not undocumented, but added with the 8085)


                • LDHI - Load DE with HL plus Immediat8 (HL+i8->DE)

                • (SIM - Not undocumented, but added with the 8085)


                • LDSI - Load DE with SP plus Immediat8 (HL+i8->DE)



                  The others are scattered in remaining holes for 16 bit operations and jumps (where they belong anyway)



                • RSTV - ReSTart if V is set



                • SHLX - Store HL indeXed by DE [DE]=HL


                • JNK - Jump on Not K


                • LHLX - Load HL indeXed by DE HL=[DE]


                • JK - Jump on K

                JK/JNK are about the (equaly undocumented) K-flag (*2), while RSTV is about the (similar undokumented) V-Flag (*3).



                These instructions would have made DE a quite versitaile register for 16 bit address calculation in indirect operations (*4). These instructions were present in all 8085, including second source, I ever tested (*5).



                I seriously have no idea why they where kept 'secret', as they would have improved HLL handling a lot. Morse offers an explanation in his paper Intel Microprocessors: 8008-8086 (MS-Word Document) published in IEEE Computer, Vol 13, No. 10, page 46, October 1980




                Several other instructions that had been contemplated were not made available because of the software ramifications and the compatibility constraints they would place on the forthcoming 8086.




                This is not only incorrect, as these instructions were available, but, to me it sounds quite like hindsight, as the 8085 was delivered a full two years before the 8086, about the time the 8086 project started. Further all of the 16 bit instructions are (in some form) present in the 8086 (as well as the Overflow Flag) and translation would have been as straight foreward as with the rest. Even more so, the only two instructions officially added, RIM and SIM, are among the ones explicit not supported by the 8086. (*6)




                *1 - Less obvious in Pastraiser's 8085 opcode table in classic hex notation - but maybe more like we're used to.



                *2 - Which might have been the one intended for signed comparision, but that's a different story.



                *3 - The V-Flag signals overflow, much like the V flag on the 6502. With RSTV this might have been intended for easy inertation of overflow exception handling.



                *4 - I realy used them a lot, as DE now became a quite usefule register instead of being a mere second HL usable via XHNG. Addrss calculation for structures became quite doable without bloating the instruction set.



                *5 - Mostly SIEMENS SAB8085, but also Toshiba, NEC, AMD and maybe others.



                *6 - My personal speculation is thatit wasn't, as so often, not a technical or design decision but made on management level to keep it '100%' 8080 compatible (whatever that ment for management blurb at that time) and thus supressing the nice add ons enginering had made (*7). RIM and SIM eventually as exception, as they where needed to support the new interrupt feature.



                *7 - Which leads to another thought: Having the ability for fast offset calculation to a memory (HL or stack pointer, 16 bit left shift for word address calculation and 16 bit indexed loads is quite pleasing for HLL programming. So while Mr. Morse does rightfuly deserve credit for making the 8086 with HLL in mind, these instructions indicate that others at Intel already tried to push into that direction before him and he knew about - and joined the treck.







                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited 1 hour ago









                dirkt

                8,13812243




                8,13812243










                answered 7 hours ago









                Raffzahn

                39k487157




                39k487157



























                     

                    draft saved


                    draft discarded















































                     


                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fretrocomputing.stackexchange.com%2fquestions%2f8040%2fwhat-undocumented-8085-instructions-is-steven-morse-referring-to-in-in-the-begi%23new-answer', 'question_page');

                    );

                    Post as a guest













































































                    Popular posts from this blog

                    How to check contact read email or not when send email to Individual?

                    Displaying single band from multi-band raster using QGIS

                    How many registers does an x86_64 CPU actually have?