Who set the 640K limit?

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











up vote
2
down vote

favorite












We all know that "640K should be enough for everyone". But who actually set this limit? The quote is often attributed to Bill Gates, but it doesn't seem like a decision for an Operating System vendor to make. And does MS-DOS have some kind of 640K limit? Doesn't it just come from the hardware?



But maybe Bill Gates was consulted on the matter, perhaps? And if he was, by who?



I feel we need to establish a timeline of key decisions made in the IBM PC memory architecture. When did Microsoft become involved with the IBM PC design? Was the 8086 processor already designed?



As far as I know, the 8086 has two magical addresses. The first is the beginning of vectors, which is address zero. The vectors need to be mutable, so RAM must be attached to this address. Thus each 8086 system needs RAM at address zero, the beginning of address space.



The second magical address is the Instruction Pointer reset value, the location from where the 8086 starts execution. Since that boot firmware must be fixed, there must be ROM at that address. The end of memory space was chosen for this location, address 0xFFFF0 to be exact.



Was Microsoft involved in these two decisions, which must have been done at Intel? I find that hard to believe. Who at Intel chose these addresses? Was it Stephen P. Morse, the 8086 principal architect?



This leads to the biggest question at hand, the 640K limit. Who set it? Where does it come from? I know that EGA and VGA video cards have memory at that address, address 0xA0000 onwards. But didn't these cards come, like, a decade after the release of 8086 and the first version of IBM PC?



So, was there a 640K limit in the original IBM PC? Or did that come later? Was there something attached to the 0xA0000 address in the original PC? Some original video card that was used on the PC? Something else? Who designed that hardware and chose that it would use the memory at 0xA0000?



Having designed quite a few embedded computers already back in the days when external logic was always needed for address encoding, I can kind of see how it could have happened. In my imagination it's like "Ok, I've got this RAM at zero and the BIOS eprom at 0xF0000 so where should I place the video RAM...? Hmm, somewhere near the end, I think, so I can expand the main RAM... but not at the very end so I can expand the video RAM too... let's put it a 0xA0000, it's a nice round figure... we can change it at the next PCB revision anyway... Ok, ship it." But would it have happened like this?



Was there some early consencus on breaking the continuous memory address space at 0xA0000? Who chose it? Was it some clerk behind a typewriter, making history? Some engineers at a meeting, late for a lunch appointment? Maybe some guy with a soldering iron or a wirewrap gun, hacking up the first prototype of... what?



We need to get to the bottom of this, the world needs to know!










share|improve this question

























    up vote
    2
    down vote

    favorite












    We all know that "640K should be enough for everyone". But who actually set this limit? The quote is often attributed to Bill Gates, but it doesn't seem like a decision for an Operating System vendor to make. And does MS-DOS have some kind of 640K limit? Doesn't it just come from the hardware?



    But maybe Bill Gates was consulted on the matter, perhaps? And if he was, by who?



    I feel we need to establish a timeline of key decisions made in the IBM PC memory architecture. When did Microsoft become involved with the IBM PC design? Was the 8086 processor already designed?



    As far as I know, the 8086 has two magical addresses. The first is the beginning of vectors, which is address zero. The vectors need to be mutable, so RAM must be attached to this address. Thus each 8086 system needs RAM at address zero, the beginning of address space.



    The second magical address is the Instruction Pointer reset value, the location from where the 8086 starts execution. Since that boot firmware must be fixed, there must be ROM at that address. The end of memory space was chosen for this location, address 0xFFFF0 to be exact.



    Was Microsoft involved in these two decisions, which must have been done at Intel? I find that hard to believe. Who at Intel chose these addresses? Was it Stephen P. Morse, the 8086 principal architect?



    This leads to the biggest question at hand, the 640K limit. Who set it? Where does it come from? I know that EGA and VGA video cards have memory at that address, address 0xA0000 onwards. But didn't these cards come, like, a decade after the release of 8086 and the first version of IBM PC?



    So, was there a 640K limit in the original IBM PC? Or did that come later? Was there something attached to the 0xA0000 address in the original PC? Some original video card that was used on the PC? Something else? Who designed that hardware and chose that it would use the memory at 0xA0000?



    Having designed quite a few embedded computers already back in the days when external logic was always needed for address encoding, I can kind of see how it could have happened. In my imagination it's like "Ok, I've got this RAM at zero and the BIOS eprom at 0xF0000 so where should I place the video RAM...? Hmm, somewhere near the end, I think, so I can expand the main RAM... but not at the very end so I can expand the video RAM too... let's put it a 0xA0000, it's a nice round figure... we can change it at the next PCB revision anyway... Ok, ship it." But would it have happened like this?



    Was there some early consencus on breaking the continuous memory address space at 0xA0000? Who chose it? Was it some clerk behind a typewriter, making history? Some engineers at a meeting, late for a lunch appointment? Maybe some guy with a soldering iron or a wirewrap gun, hacking up the first prototype of... what?



    We need to get to the bottom of this, the world needs to know!










    share|improve this question























      up vote
      2
      down vote

      favorite









      up vote
      2
      down vote

      favorite











      We all know that "640K should be enough for everyone". But who actually set this limit? The quote is often attributed to Bill Gates, but it doesn't seem like a decision for an Operating System vendor to make. And does MS-DOS have some kind of 640K limit? Doesn't it just come from the hardware?



      But maybe Bill Gates was consulted on the matter, perhaps? And if he was, by who?



      I feel we need to establish a timeline of key decisions made in the IBM PC memory architecture. When did Microsoft become involved with the IBM PC design? Was the 8086 processor already designed?



      As far as I know, the 8086 has two magical addresses. The first is the beginning of vectors, which is address zero. The vectors need to be mutable, so RAM must be attached to this address. Thus each 8086 system needs RAM at address zero, the beginning of address space.



      The second magical address is the Instruction Pointer reset value, the location from where the 8086 starts execution. Since that boot firmware must be fixed, there must be ROM at that address. The end of memory space was chosen for this location, address 0xFFFF0 to be exact.



      Was Microsoft involved in these two decisions, which must have been done at Intel? I find that hard to believe. Who at Intel chose these addresses? Was it Stephen P. Morse, the 8086 principal architect?



      This leads to the biggest question at hand, the 640K limit. Who set it? Where does it come from? I know that EGA and VGA video cards have memory at that address, address 0xA0000 onwards. But didn't these cards come, like, a decade after the release of 8086 and the first version of IBM PC?



      So, was there a 640K limit in the original IBM PC? Or did that come later? Was there something attached to the 0xA0000 address in the original PC? Some original video card that was used on the PC? Something else? Who designed that hardware and chose that it would use the memory at 0xA0000?



      Having designed quite a few embedded computers already back in the days when external logic was always needed for address encoding, I can kind of see how it could have happened. In my imagination it's like "Ok, I've got this RAM at zero and the BIOS eprom at 0xF0000 so where should I place the video RAM...? Hmm, somewhere near the end, I think, so I can expand the main RAM... but not at the very end so I can expand the video RAM too... let's put it a 0xA0000, it's a nice round figure... we can change it at the next PCB revision anyway... Ok, ship it." But would it have happened like this?



      Was there some early consencus on breaking the continuous memory address space at 0xA0000? Who chose it? Was it some clerk behind a typewriter, making history? Some engineers at a meeting, late for a lunch appointment? Maybe some guy with a soldering iron or a wirewrap gun, hacking up the first prototype of... what?



      We need to get to the bottom of this, the world needs to know!










      share|improve this question













      We all know that "640K should be enough for everyone". But who actually set this limit? The quote is often attributed to Bill Gates, but it doesn't seem like a decision for an Operating System vendor to make. And does MS-DOS have some kind of 640K limit? Doesn't it just come from the hardware?



      But maybe Bill Gates was consulted on the matter, perhaps? And if he was, by who?



      I feel we need to establish a timeline of key decisions made in the IBM PC memory architecture. When did Microsoft become involved with the IBM PC design? Was the 8086 processor already designed?



      As far as I know, the 8086 has two magical addresses. The first is the beginning of vectors, which is address zero. The vectors need to be mutable, so RAM must be attached to this address. Thus each 8086 system needs RAM at address zero, the beginning of address space.



      The second magical address is the Instruction Pointer reset value, the location from where the 8086 starts execution. Since that boot firmware must be fixed, there must be ROM at that address. The end of memory space was chosen for this location, address 0xFFFF0 to be exact.



      Was Microsoft involved in these two decisions, which must have been done at Intel? I find that hard to believe. Who at Intel chose these addresses? Was it Stephen P. Morse, the 8086 principal architect?



      This leads to the biggest question at hand, the 640K limit. Who set it? Where does it come from? I know that EGA and VGA video cards have memory at that address, address 0xA0000 onwards. But didn't these cards come, like, a decade after the release of 8086 and the first version of IBM PC?



      So, was there a 640K limit in the original IBM PC? Or did that come later? Was there something attached to the 0xA0000 address in the original PC? Some original video card that was used on the PC? Something else? Who designed that hardware and chose that it would use the memory at 0xA0000?



      Having designed quite a few embedded computers already back in the days when external logic was always needed for address encoding, I can kind of see how it could have happened. In my imagination it's like "Ok, I've got this RAM at zero and the BIOS eprom at 0xF0000 so where should I place the video RAM...? Hmm, somewhere near the end, I think, so I can expand the main RAM... but not at the very end so I can expand the video RAM too... let's put it a 0xA0000, it's a nice round figure... we can change it at the next PCB revision anyway... Ok, ship it." But would it have happened like this?



      Was there some early consencus on breaking the continuous memory address space at 0xA0000? Who chose it? Was it some clerk behind a typewriter, making history? Some engineers at a meeting, late for a lunch appointment? Maybe some guy with a soldering iron or a wirewrap gun, hacking up the first prototype of... what?



      We need to get to the bottom of this, the world needs to know!







      ibm-pc memory-layout






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked 1 hour ago









      PkP

      24116




      24116




















          1 Answer
          1






          active

          oldest

          votes

















          up vote
          4
          down vote













          There was a 640K limit on the original IBM PC: it’s the largest contiguous amount of memory which can be provided without eating into reserved areas. The IBM PC Technical Reference includes a system memory map (page 2-25):



          IBM PC system memory map



          which is detailed on subsequent pages: the system is supposed to provide between 16 and 64K of RAM on the motherboard, then up to 192K as expansion, with an additional 384K possible in the future (providing 640K RAM in total); then there’s a 16K reserved block, 112K for the video buffers (of which 16K at B0000 were used for MDA, 16K at B8000 for CGA in the IBM PC), followed by 192K reserved for a “memory expansion area”, then 16K reserved, and 48K for the base system ROM at F4000.



          DOS itself isn’t limited to 640K. Any amount of RAM (within the 8086 memory model’s limitations, i.e. up to slightly over 1MiB) could be used — this was the case in some DOS-compatible computers (such as the Tandy 2000 or the Apricot PC, and the original SCP systems on which 86-DOS was developed), and in systems with memory available at 640K, typically provided by a VGA adapter, drivers could be used to add the memory from 640K up to 736K to the memory pool, increasing the maximum runnable program size. (This worked fine for programs which only used colour text mode, or CGA graphics.) Additional memory available in separate areas above 640K could also be added as separate memory pools, but that didn’t help run larger programs.



          Note that the 640K quote is likely apocryphal.



          As to why this limit was chosen, I don’t have a definitive answer, but there are a number of factors to consider:



          • the IBM PC wasn’t designed as a family of computers, at least not past the 8086 and 8088;

          • 640K was huge compared to micro-computer memory sizes at the time, both in terms of program requirements and in terms of cost;

          • the memory map was probably designed the way it was in order to provide a balanced set of expansion possibilities: a lot of memory, a decent amount of display buffers, and room for ROM expansion (in the IBM PC, there were no option ROMs; those appeared with the XT).





          share|improve this answer






















          • Good explanation, except, I would start with making clear, that there is no 640 KiB linmit per se, but the way mamory mapped expansion is defined, the largest block of continous memory while keeping the expansion area untouched is 640 KiB. And that this is strictly (IBM) hardware/implementation related, not related to MS-DOS - there other DOS machines, including the oroginal SCP ones (where DOS was designed for) that offered the full MiB to DOS.
            – Raffzahn
            46 mins ago










          • @Raffzahn the question as stated in the question body is “So, was there a 640K limit in the original IBM PC?”, that’s why I started by saying there is, in the IBM PC, as described in its memory map. I also mention that DOS doesn’t have that limit...
            – Stephen Kitt
            44 mins ago










          • @Raffzahn is the first sentence better now?
            – Stephen Kitt
            38 mins ago










          • Ok, the final question now is who made this system memory map, and why are there separate "384K Memory Future Expansion" and "Expansion Memory 216KB" blocks? It looks like perhaps someone already had made a video card with a fixed address before this architecture diagram was drawn...?
            – PkP
            31 mins ago











          • Note the right-hand side of the diagram: the 216K block is within the ROM address space, so it’s intended as room for additional ROM, not RAM. There was no graphics adapter at A0000 when the IBM was designed; I suspect the designers thought that 128K would be a nice, safe amount of address space to set aside for video. (If one imagined future graphics with 4 bits per pixel at MDA resolutions, 128K would provide just enough room.)
            – Stephen Kitt
            23 mins ago










          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%2f7817%2fwho-set-the-640k-limit%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
          4
          down vote













          There was a 640K limit on the original IBM PC: it’s the largest contiguous amount of memory which can be provided without eating into reserved areas. The IBM PC Technical Reference includes a system memory map (page 2-25):



          IBM PC system memory map



          which is detailed on subsequent pages: the system is supposed to provide between 16 and 64K of RAM on the motherboard, then up to 192K as expansion, with an additional 384K possible in the future (providing 640K RAM in total); then there’s a 16K reserved block, 112K for the video buffers (of which 16K at B0000 were used for MDA, 16K at B8000 for CGA in the IBM PC), followed by 192K reserved for a “memory expansion area”, then 16K reserved, and 48K for the base system ROM at F4000.



          DOS itself isn’t limited to 640K. Any amount of RAM (within the 8086 memory model’s limitations, i.e. up to slightly over 1MiB) could be used — this was the case in some DOS-compatible computers (such as the Tandy 2000 or the Apricot PC, and the original SCP systems on which 86-DOS was developed), and in systems with memory available at 640K, typically provided by a VGA adapter, drivers could be used to add the memory from 640K up to 736K to the memory pool, increasing the maximum runnable program size. (This worked fine for programs which only used colour text mode, or CGA graphics.) Additional memory available in separate areas above 640K could also be added as separate memory pools, but that didn’t help run larger programs.



          Note that the 640K quote is likely apocryphal.



          As to why this limit was chosen, I don’t have a definitive answer, but there are a number of factors to consider:



          • the IBM PC wasn’t designed as a family of computers, at least not past the 8086 and 8088;

          • 640K was huge compared to micro-computer memory sizes at the time, both in terms of program requirements and in terms of cost;

          • the memory map was probably designed the way it was in order to provide a balanced set of expansion possibilities: a lot of memory, a decent amount of display buffers, and room for ROM expansion (in the IBM PC, there were no option ROMs; those appeared with the XT).





          share|improve this answer






















          • Good explanation, except, I would start with making clear, that there is no 640 KiB linmit per se, but the way mamory mapped expansion is defined, the largest block of continous memory while keeping the expansion area untouched is 640 KiB. And that this is strictly (IBM) hardware/implementation related, not related to MS-DOS - there other DOS machines, including the oroginal SCP ones (where DOS was designed for) that offered the full MiB to DOS.
            – Raffzahn
            46 mins ago










          • @Raffzahn the question as stated in the question body is “So, was there a 640K limit in the original IBM PC?”, that’s why I started by saying there is, in the IBM PC, as described in its memory map. I also mention that DOS doesn’t have that limit...
            – Stephen Kitt
            44 mins ago










          • @Raffzahn is the first sentence better now?
            – Stephen Kitt
            38 mins ago










          • Ok, the final question now is who made this system memory map, and why are there separate "384K Memory Future Expansion" and "Expansion Memory 216KB" blocks? It looks like perhaps someone already had made a video card with a fixed address before this architecture diagram was drawn...?
            – PkP
            31 mins ago











          • Note the right-hand side of the diagram: the 216K block is within the ROM address space, so it’s intended as room for additional ROM, not RAM. There was no graphics adapter at A0000 when the IBM was designed; I suspect the designers thought that 128K would be a nice, safe amount of address space to set aside for video. (If one imagined future graphics with 4 bits per pixel at MDA resolutions, 128K would provide just enough room.)
            – Stephen Kitt
            23 mins ago














          up vote
          4
          down vote













          There was a 640K limit on the original IBM PC: it’s the largest contiguous amount of memory which can be provided without eating into reserved areas. The IBM PC Technical Reference includes a system memory map (page 2-25):



          IBM PC system memory map



          which is detailed on subsequent pages: the system is supposed to provide between 16 and 64K of RAM on the motherboard, then up to 192K as expansion, with an additional 384K possible in the future (providing 640K RAM in total); then there’s a 16K reserved block, 112K for the video buffers (of which 16K at B0000 were used for MDA, 16K at B8000 for CGA in the IBM PC), followed by 192K reserved for a “memory expansion area”, then 16K reserved, and 48K for the base system ROM at F4000.



          DOS itself isn’t limited to 640K. Any amount of RAM (within the 8086 memory model’s limitations, i.e. up to slightly over 1MiB) could be used — this was the case in some DOS-compatible computers (such as the Tandy 2000 or the Apricot PC, and the original SCP systems on which 86-DOS was developed), and in systems with memory available at 640K, typically provided by a VGA adapter, drivers could be used to add the memory from 640K up to 736K to the memory pool, increasing the maximum runnable program size. (This worked fine for programs which only used colour text mode, or CGA graphics.) Additional memory available in separate areas above 640K could also be added as separate memory pools, but that didn’t help run larger programs.



          Note that the 640K quote is likely apocryphal.



          As to why this limit was chosen, I don’t have a definitive answer, but there are a number of factors to consider:



          • the IBM PC wasn’t designed as a family of computers, at least not past the 8086 and 8088;

          • 640K was huge compared to micro-computer memory sizes at the time, both in terms of program requirements and in terms of cost;

          • the memory map was probably designed the way it was in order to provide a balanced set of expansion possibilities: a lot of memory, a decent amount of display buffers, and room for ROM expansion (in the IBM PC, there were no option ROMs; those appeared with the XT).





          share|improve this answer






















          • Good explanation, except, I would start with making clear, that there is no 640 KiB linmit per se, but the way mamory mapped expansion is defined, the largest block of continous memory while keeping the expansion area untouched is 640 KiB. And that this is strictly (IBM) hardware/implementation related, not related to MS-DOS - there other DOS machines, including the oroginal SCP ones (where DOS was designed for) that offered the full MiB to DOS.
            – Raffzahn
            46 mins ago










          • @Raffzahn the question as stated in the question body is “So, was there a 640K limit in the original IBM PC?”, that’s why I started by saying there is, in the IBM PC, as described in its memory map. I also mention that DOS doesn’t have that limit...
            – Stephen Kitt
            44 mins ago










          • @Raffzahn is the first sentence better now?
            – Stephen Kitt
            38 mins ago










          • Ok, the final question now is who made this system memory map, and why are there separate "384K Memory Future Expansion" and "Expansion Memory 216KB" blocks? It looks like perhaps someone already had made a video card with a fixed address before this architecture diagram was drawn...?
            – PkP
            31 mins ago











          • Note the right-hand side of the diagram: the 216K block is within the ROM address space, so it’s intended as room for additional ROM, not RAM. There was no graphics adapter at A0000 when the IBM was designed; I suspect the designers thought that 128K would be a nice, safe amount of address space to set aside for video. (If one imagined future graphics with 4 bits per pixel at MDA resolutions, 128K would provide just enough room.)
            – Stephen Kitt
            23 mins ago












          up vote
          4
          down vote










          up vote
          4
          down vote









          There was a 640K limit on the original IBM PC: it’s the largest contiguous amount of memory which can be provided without eating into reserved areas. The IBM PC Technical Reference includes a system memory map (page 2-25):



          IBM PC system memory map



          which is detailed on subsequent pages: the system is supposed to provide between 16 and 64K of RAM on the motherboard, then up to 192K as expansion, with an additional 384K possible in the future (providing 640K RAM in total); then there’s a 16K reserved block, 112K for the video buffers (of which 16K at B0000 were used for MDA, 16K at B8000 for CGA in the IBM PC), followed by 192K reserved for a “memory expansion area”, then 16K reserved, and 48K for the base system ROM at F4000.



          DOS itself isn’t limited to 640K. Any amount of RAM (within the 8086 memory model’s limitations, i.e. up to slightly over 1MiB) could be used — this was the case in some DOS-compatible computers (such as the Tandy 2000 or the Apricot PC, and the original SCP systems on which 86-DOS was developed), and in systems with memory available at 640K, typically provided by a VGA adapter, drivers could be used to add the memory from 640K up to 736K to the memory pool, increasing the maximum runnable program size. (This worked fine for programs which only used colour text mode, or CGA graphics.) Additional memory available in separate areas above 640K could also be added as separate memory pools, but that didn’t help run larger programs.



          Note that the 640K quote is likely apocryphal.



          As to why this limit was chosen, I don’t have a definitive answer, but there are a number of factors to consider:



          • the IBM PC wasn’t designed as a family of computers, at least not past the 8086 and 8088;

          • 640K was huge compared to micro-computer memory sizes at the time, both in terms of program requirements and in terms of cost;

          • the memory map was probably designed the way it was in order to provide a balanced set of expansion possibilities: a lot of memory, a decent amount of display buffers, and room for ROM expansion (in the IBM PC, there were no option ROMs; those appeared with the XT).





          share|improve this answer














          There was a 640K limit on the original IBM PC: it’s the largest contiguous amount of memory which can be provided without eating into reserved areas. The IBM PC Technical Reference includes a system memory map (page 2-25):



          IBM PC system memory map



          which is detailed on subsequent pages: the system is supposed to provide between 16 and 64K of RAM on the motherboard, then up to 192K as expansion, with an additional 384K possible in the future (providing 640K RAM in total); then there’s a 16K reserved block, 112K for the video buffers (of which 16K at B0000 were used for MDA, 16K at B8000 for CGA in the IBM PC), followed by 192K reserved for a “memory expansion area”, then 16K reserved, and 48K for the base system ROM at F4000.



          DOS itself isn’t limited to 640K. Any amount of RAM (within the 8086 memory model’s limitations, i.e. up to slightly over 1MiB) could be used — this was the case in some DOS-compatible computers (such as the Tandy 2000 or the Apricot PC, and the original SCP systems on which 86-DOS was developed), and in systems with memory available at 640K, typically provided by a VGA adapter, drivers could be used to add the memory from 640K up to 736K to the memory pool, increasing the maximum runnable program size. (This worked fine for programs which only used colour text mode, or CGA graphics.) Additional memory available in separate areas above 640K could also be added as separate memory pools, but that didn’t help run larger programs.



          Note that the 640K quote is likely apocryphal.



          As to why this limit was chosen, I don’t have a definitive answer, but there are a number of factors to consider:



          • the IBM PC wasn’t designed as a family of computers, at least not past the 8086 and 8088;

          • 640K was huge compared to micro-computer memory sizes at the time, both in terms of program requirements and in terms of cost;

          • the memory map was probably designed the way it was in order to provide a balanced set of expansion possibilities: a lot of memory, a decent amount of display buffers, and room for ROM expansion (in the IBM PC, there were no option ROMs; those appeared with the XT).






          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited 38 mins ago

























          answered 54 mins ago









          Stephen Kitt

          30.6k4125147




          30.6k4125147











          • Good explanation, except, I would start with making clear, that there is no 640 KiB linmit per se, but the way mamory mapped expansion is defined, the largest block of continous memory while keeping the expansion area untouched is 640 KiB. And that this is strictly (IBM) hardware/implementation related, not related to MS-DOS - there other DOS machines, including the oroginal SCP ones (where DOS was designed for) that offered the full MiB to DOS.
            – Raffzahn
            46 mins ago










          • @Raffzahn the question as stated in the question body is “So, was there a 640K limit in the original IBM PC?”, that’s why I started by saying there is, in the IBM PC, as described in its memory map. I also mention that DOS doesn’t have that limit...
            – Stephen Kitt
            44 mins ago










          • @Raffzahn is the first sentence better now?
            – Stephen Kitt
            38 mins ago










          • Ok, the final question now is who made this system memory map, and why are there separate "384K Memory Future Expansion" and "Expansion Memory 216KB" blocks? It looks like perhaps someone already had made a video card with a fixed address before this architecture diagram was drawn...?
            – PkP
            31 mins ago











          • Note the right-hand side of the diagram: the 216K block is within the ROM address space, so it’s intended as room for additional ROM, not RAM. There was no graphics adapter at A0000 when the IBM was designed; I suspect the designers thought that 128K would be a nice, safe amount of address space to set aside for video. (If one imagined future graphics with 4 bits per pixel at MDA resolutions, 128K would provide just enough room.)
            – Stephen Kitt
            23 mins ago
















          • Good explanation, except, I would start with making clear, that there is no 640 KiB linmit per se, but the way mamory mapped expansion is defined, the largest block of continous memory while keeping the expansion area untouched is 640 KiB. And that this is strictly (IBM) hardware/implementation related, not related to MS-DOS - there other DOS machines, including the oroginal SCP ones (where DOS was designed for) that offered the full MiB to DOS.
            – Raffzahn
            46 mins ago










          • @Raffzahn the question as stated in the question body is “So, was there a 640K limit in the original IBM PC?”, that’s why I started by saying there is, in the IBM PC, as described in its memory map. I also mention that DOS doesn’t have that limit...
            – Stephen Kitt
            44 mins ago










          • @Raffzahn is the first sentence better now?
            – Stephen Kitt
            38 mins ago










          • Ok, the final question now is who made this system memory map, and why are there separate "384K Memory Future Expansion" and "Expansion Memory 216KB" blocks? It looks like perhaps someone already had made a video card with a fixed address before this architecture diagram was drawn...?
            – PkP
            31 mins ago











          • Note the right-hand side of the diagram: the 216K block is within the ROM address space, so it’s intended as room for additional ROM, not RAM. There was no graphics adapter at A0000 when the IBM was designed; I suspect the designers thought that 128K would be a nice, safe amount of address space to set aside for video. (If one imagined future graphics with 4 bits per pixel at MDA resolutions, 128K would provide just enough room.)
            – Stephen Kitt
            23 mins ago















          Good explanation, except, I would start with making clear, that there is no 640 KiB linmit per se, but the way mamory mapped expansion is defined, the largest block of continous memory while keeping the expansion area untouched is 640 KiB. And that this is strictly (IBM) hardware/implementation related, not related to MS-DOS - there other DOS machines, including the oroginal SCP ones (where DOS was designed for) that offered the full MiB to DOS.
          – Raffzahn
          46 mins ago




          Good explanation, except, I would start with making clear, that there is no 640 KiB linmit per se, but the way mamory mapped expansion is defined, the largest block of continous memory while keeping the expansion area untouched is 640 KiB. And that this is strictly (IBM) hardware/implementation related, not related to MS-DOS - there other DOS machines, including the oroginal SCP ones (where DOS was designed for) that offered the full MiB to DOS.
          – Raffzahn
          46 mins ago












          @Raffzahn the question as stated in the question body is “So, was there a 640K limit in the original IBM PC?”, that’s why I started by saying there is, in the IBM PC, as described in its memory map. I also mention that DOS doesn’t have that limit...
          – Stephen Kitt
          44 mins ago




          @Raffzahn the question as stated in the question body is “So, was there a 640K limit in the original IBM PC?”, that’s why I started by saying there is, in the IBM PC, as described in its memory map. I also mention that DOS doesn’t have that limit...
          – Stephen Kitt
          44 mins ago












          @Raffzahn is the first sentence better now?
          – Stephen Kitt
          38 mins ago




          @Raffzahn is the first sentence better now?
          – Stephen Kitt
          38 mins ago












          Ok, the final question now is who made this system memory map, and why are there separate "384K Memory Future Expansion" and "Expansion Memory 216KB" blocks? It looks like perhaps someone already had made a video card with a fixed address before this architecture diagram was drawn...?
          – PkP
          31 mins ago





          Ok, the final question now is who made this system memory map, and why are there separate "384K Memory Future Expansion" and "Expansion Memory 216KB" blocks? It looks like perhaps someone already had made a video card with a fixed address before this architecture diagram was drawn...?
          – PkP
          31 mins ago













          Note the right-hand side of the diagram: the 216K block is within the ROM address space, so it’s intended as room for additional ROM, not RAM. There was no graphics adapter at A0000 when the IBM was designed; I suspect the designers thought that 128K would be a nice, safe amount of address space to set aside for video. (If one imagined future graphics with 4 bits per pixel at MDA resolutions, 128K would provide just enough room.)
          – Stephen Kitt
          23 mins ago




          Note the right-hand side of the diagram: the 216K block is within the ROM address space, so it’s intended as room for additional ROM, not RAM. There was no graphics adapter at A0000 when the IBM was designed; I suspect the designers thought that 128K would be a nice, safe amount of address space to set aside for video. (If one imagined future graphics with 4 bits per pixel at MDA resolutions, 128K would provide just enough room.)
          – Stephen Kitt
          23 mins ago

















           

          draft saved


          draft discarded















































           


          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fretrocomputing.stackexchange.com%2fquestions%2f7817%2fwho-set-the-640k-limit%23new-answer', 'question_page');

          );

          Post as a guest













































































          Comments

          Popular posts from this blog

          What does second last employer means? [closed]

          List of Gilmore Girls characters

          Confectionery