• Re: the 286, Byte ordering

    From John Levine@21:1/5 to All on Sun Jan 5 02:56:08 2025
    According to Anton Ertl <anton@mips.complang.tuwien.ac.at>: >antispam@fricas.org (Waldek Hebisch) writes:
    From my point of view main drawbacks of 286 is poor support for
    large arrays and problem for Lisp-like system which have a lot
    of small data structures and traverse then via pointers.

    Yes. In the first case the segments are too small, in the latter case
    there are too few segments (if you have one segment per object).

    Intel clearly had some strong opinions about how people would program
    the 286, which turned out to bear almost no relation to the way we
    actually wanted to program it.

    Some of the stuff they did was just perverse, like putting flag
    bits in the low part of the segment number rather than the high
    bit. If you had objects bigger than 64K, you had to shift
    the segment number three bits to the left when computing
    addresses.

    They also apparently didn't expect people to switch segments much.
    If you loaded a segment register with the value it already contained,
    it still fetched all of the stuff from memory. How many gates would
    it have taken to check for the same value and bypass the loads? If
    they had done that, we could have used large model calls everywhere
    since long and short calls would be about the same speed, and not
    had to screw around deciding what was a long call and what was short
    and writing glue codes to allow both kinds.

    --
    Regards,
    John Levine, johnl@taugh.com, Primary Perpetrator of "The Internet for Dummies",
    Please consider the environment before reading this e-mail. https://jl.ly

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From MitchAlsup1@21:1/5 to John Levine on Sun Jan 5 03:55:39 2025
    On Sun, 5 Jan 2025 2:56:08 +0000, John Levine wrote:

    According to Anton Ertl <anton@mips.complang.tuwien.ac.at>:
    antispam@fricas.org (Waldek Hebisch) writes:
    From my point of view main drawbacks of 286 is poor support for
    large arrays and problem for Lisp-like system which have a lot
    of small data structures and traverse then via pointers.

    Yes. In the first case the segments are too small, in the latter case >>there are too few segments (if you have one segment per object).

    Intel clearly had some strong opinions about how people would program
    the 286, which turned out to bear almost no relation to the way we
    actually wanted to program it.

    Clearly, Intel thought that .text, .data, .stack, and .heap were
    about all anyone would ever need.

    Some of the stuff they did was just perverse, like putting flag
    bits in the low part of the segment number rather than the high
    bit. If you had objects bigger than 64K, you had to shift
    the segment number three bits to the left when computing
    addresses.

    Let us just agree that whatever they were thinking, they blew it.

    They also apparently didn't expect people to switch segments much.

    Clearly. They expected segments to be essentially stagnant--unlike
    the people trying to do things with x86s...

    If you loaded a segment register with the value it already contained,
    it still fetched all of the stuff from memory.

    If segment LD was 1 cycle, the number of segment changes would be
    fine. But since LDing a segment was so expensive, they probably
    could not afford the transistors and wires to do what you suggest.

    How many gates would
    it have taken to check for the same value and bypass the loads?

    286:: 180 gates per segment register
    386:: 360 gates per segment register

    If
    they had done that, we could have used large model calls everywhere
    since long and short calls would be about the same speed, and not
    had to screw around deciding what was a long call and what was short
    and writing glue codes to allow both kinds.

    If you had 32 segment registers, it probably would not have mattered
    that segment LD was slow. And if you had 32 pointing registers, you
    would not have need a LD-OP ISA.

    Sigh ...

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Lurndal@21:1/5 to John Dallman on Sun Jan 5 15:23:38 2025
    jgd@cix.co.uk (John Dallman) writes:
    In article <6d5fa21e63e14491948ffb6a9d08485a@www.novabbs.org>, >mitchalsup@aol.com (MitchAlsup1) wrote:
    On Sun, 5 Jan 2025 2:56:08 +0000, John Levine wrote:
    They also apparently didn't expect people to switch segments much.

    Clearly. They expected segments to be essentially stagnant--unlike
    the people trying to do things with x86s...

    An idea: The target markets for the 8080 and 8085 were clearly embedded >systems. The Z80 and 6502 rapidly became popular in the micro-computer >market, but the 808[05] did not. Intel may still have been thinking in
    terms of embedded systems when designing the 80286.

    I suspect that we don't, today, recall all the constraints that
    were facing Intel with respect to processor ASIC development in the
    late 70's and early 80's.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From John Dallman@21:1/5 to mitchalsup@aol.com on Sun Jan 5 15:15:00 2025
    In article <6d5fa21e63e14491948ffb6a9d08485a@www.novabbs.org>, mitchalsup@aol.com (MitchAlsup1) wrote:
    On Sun, 5 Jan 2025 2:56:08 +0000, John Levine wrote:
    They also apparently didn't expect people to switch segments much.

    Clearly. They expected segments to be essentially stagnant--unlike
    the people trying to do things with x86s...

    An idea: The target markets for the 8080 and 8085 were clearly embedded systems. The Z80 and 6502 rapidly became popular in the micro-computer
    market, but the 808[05] did not. Intel may still have been thinking in
    terms of embedded systems when designing the 80286.

    The IBM PC was launched in August 1981 and around a year passed before it became clear that this machine was having a huge and lasting effect on
    the market. The 80286 was released on February 1st 1982, although it
    wasn't used much in PCs until the IBM PC/AT in August 1984.

    The 80386 sampled in 1985 and was mass-produced in 1986. That would seem
    to have been the first version of x86 where it was obvious at the start
    of design that use in general-purpose computers would be important. It
    was far more suitable for the job than the 80286, and things developed
    from there.

    John

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Anton Ertl@21:1/5 to John Dallman on Sun Jan 5 17:51:34 2025
    jgd@cix.co.uk (John Dallman) writes:
    An idea: The target markets for the 8080 and 8085 were clearly embedded >systems. The Z80 and 6502 rapidly became popular in the micro-computer >market, but the 808[05] did not.

    The 8080 was used in the first microcomputers, e.g., the 1974 Altair
    8800 and the IMSAI 8080. It was important for all the CP/M machines,
    because the CP/M software (both the OS and the programs running on it)
    were written to use the 8080 instruction set, not the Z80 instruction
    set. And CP/M was the professional microcomputer OS before the IBM PC compatible market took off, despite the fact that the most popular microcomputers of the time (such as the Apple II, TRS-80 ad PET) did
    not use it; there was an add-on card for the Apple II with a Z80 for
    running CP/M, though, which shows the importance of CP/M.

    Anyway, while Zilog may have taken their sales, I very much believe
    that Intel was aware of the general-purpose computing market, and the
    iAPX432 clearly showed that they wanted to be dominant there. It's an
    irony of history that the 8086/8088 actually went where the action
    was.

    Intel released the MCS-51 (aka 8051) in 1980 for embedded systems, and
    it's very successful there, and before that came the MCS-48 (8048) in
    1976.

    Intel may still have been thinking in
    terms of embedded systems when designing the 80286.

    I very much doubt that the segments and the 24 address bits were
    designed for embedded systems. The segments look more like an echo of
    the iAPX432 than of anything designed for embedded systems.

    The idea of some static allocation of memory for which segments might
    work may come from old mainframe systems, where programs were (in my impression) more static than PC programs and modern computing. Even
    in Unix programs, which were more dynamic than mainframe programs had
    quite a bit of static allocation in the early days; this is reflected
    in the paragraph in the GNU coding standards:

    |Avoid arbitrary limits on the length or number of any data structure, |including file names, lines, files, and symbols, by allocating all
    |data structures dynamically. In most Unix utilities, "long lines are
    |silently truncated". This is not acceptable in a GNU utility.

    The IBM PC was launched in August 1981 and around a year passed before it >became clear that this machine was having a huge and lasting effect on
    the market. The 80286 was released on February 1st 1982, although it
    wasn't used much in PCs until the IBM PC/AT in August 1984.

    The 80286 project was started in 1978, before any use of the 8086. <https://timeline.intel.com/1978/kicking-off-the-80286> claims that
    they "spent six months on field research into customers' needs alone";
    Judging by the results, maybe the customers were clueless, or maybe
    Intel asked the wrong questions.

    The 80386 sampled in 1985 and was mass-produced in 1986. That would seem
    to have been the first version of x86 where it was obvious at the start
    of design that use in general-purpose computers would be important.

    Actually, reading the oral history of the 386, at the start the 386
    project was just an unimportant followon of the 286, while the main
    action was expected to be on the BiiN project (from which the i960
    came). Only sometime during that project the IBM PC market exploded
    and the 386 became the most important project of the company.

    But yes, they were very much aware of the needs of programmers in the
    386 project, and would probably have done something with just paging
    and no segments if they did not have the 8086 and 80286 legacy.

    - anton
    --
    'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
    Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From John Levine@21:1/5 to All on Sun Jan 5 20:01:25 2025
    According to Anton Ertl <anton@mips.complang.tuwien.ac.at>:
    Anyway, while Zilog may have taken their sales, I very much believe
    that Intel was aware of the general-purpose computing market, and the
    iAPX432 clearly showed that they wanted to be dominant there. It's an
    irony of history that the 8086/8088 actually went where the action
    was.

    I have heard that the IBM PC was originally designed with a Z80, and fairly late
    in the process someone decided (not unreasonably) that it wouldn't be different enough from all the other Z80 boxes to be an interesting product. They wanted a 16 bit processor but for time and money reasons they stayed with the 8 bit bus they already had. The options were 68008 and 8088. Moto was only shipping samples of the 68008 while Intel could provide 8088 in quantity, so they went with the 8088.

    If Moto had been a little farther along, the history of the PC industry
    could have been quite different.
    --
    Regards,
    John Levine, johnl@taugh.com, Primary Perpetrator of "The Internet for Dummies",
    Please consider the environment before reading this e-mail. https://jl.ly

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From MitchAlsup1@21:1/5 to Anton Ertl on Sun Jan 5 19:40:42 2025
    On Sun, 5 Jan 2025 17:51:34 +0000, Anton Ertl wrote:

    jgd@cix.co.uk (John Dallman) writes:
    An idea: The target markets for the 8080 and 8085 were clearly embedded >>systems. The Z80 and 6502 rapidly became popular in the micro-computer >>market, but the 808[05] did not.

    The 8080 was used in the first microcomputers, e.g., the 1974 Altair
    8800 and the IMSAI 8080. It was important for all the CP/M machines,
    because the CP/M software (both the OS and the programs running on it)
    were written to use the 8080 instruction set, not the Z80 instruction
    set. And CP/M was the professional microcomputer OS before the IBM PC compatible market took off, despite the fact that the most popular microcomputers of the time (such as the Apple II, TRS-80 ad PET) did
    not use it; there was an add-on card for the Apple II with a Z80 for
    running CP/M, though, which shows the importance of CP/M.

    Anyway, while Zilog may have taken their sales, I very much believe
    that Intel was aware of the general-purpose computing market, and the
    iAPX432 clearly showed that they wanted to be dominant there. It's an
    irony of history that the 8086/8088 actually went where the action
    was.

    Intel released the MCS-51 (aka 8051) in 1980 for embedded systems, and
    it's very successful there, and before that came the MCS-48 (8048) in
    1976.

    Intel may still have been thinking in
    terms of embedded systems when designing the 80286.

    I very much doubt that the segments and the 24 address bits were
    designed for embedded systems. The segments look more like an echo of
    the iAPX432 than of anything designed for embedded systems.

    The idea of some static allocation of memory for which segments might
    work may come from old mainframe systems, where programs were (in my impression) more static than PC programs and modern computing. Even
    in Unix programs, which were more dynamic than mainframe programs had
    quite a bit of static allocation in the early days; this is reflected
    in the paragraph in the GNU coding standards:

    |Avoid arbitrary limits on the length or number of any data structure, |including file names, lines, files, and symbols, by allocating all
    |data structures dynamically. In most Unix utilities, "long lines are |silently truncated". This is not acceptable in a GNU utility.

    The IBM PC was launched in August 1981 and around a year passed before it >>became clear that this machine was having a huge and lasting effect on
    the market. The 80286 was released on February 1st 1982, although it
    wasn't used much in PCs until the IBM PC/AT in August 1984.

    The 80286 project was started in 1978, before any use of the 8086. <https://timeline.intel.com/1978/kicking-off-the-80286> claims that
    they "spent six months on field research into customers' needs alone"; Judging by the results, maybe the customers were clueless, or maybe
    Intel asked the wrong questions.

    Or perhaps what Intel thought they heard was not closely related
    to what the customers were actually saying.

    The 80386 sampled in 1985 and was mass-produced in 1986. That would seem
    to have been the first version of x86 where it was obvious at the start
    of design that use in general-purpose computers would be important.

    Actually, reading the oral history of the 386, at the start the 386
    project was just an unimportant followon of the 286, while the main
    action was expected to be on the BiiN project (from which the i960
    came). Only sometime during that project the IBM PC market exploded
    and the 386 became the most important project of the company.

    But yes, they were very much aware of the needs of programmers in the
    386 project, and would probably have done something with just paging
    and no segments if they did not have the 8086 and 80286 legacy.

    Oh well ...

    - anton

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From MitchAlsup1@21:1/5 to John Levine on Sun Jan 5 20:55:20 2025
    On Sun, 5 Jan 2025 20:01:25 +0000, John Levine wrote:

    According to Anton Ertl <anton@mips.complang.tuwien.ac.at>:
    Anyway, while Zilog may have taken their sales, I very much believe
    that Intel was aware of the general-purpose computing market, and the >>iAPX432 clearly showed that they wanted to be dominant there. It's an >>irony of history that the 8086/8088 actually went where the action
    was.

    I have heard that the IBM PC was originally designed with a Z80, and
    fairly late
    in the process someone decided (not unreasonably) that it wouldn't be different
    enough from all the other Z80 boxes to be an interesting product. They
    wanted a
    16 bit processor but for time and money reasons they stayed with the 8
    bit bus
    they already had. The options were 68008 and 8088. Moto was only
    shipping
    samples of the 68008 while Intel could provide 8088 in quantity, so they
    went
    with the 8088.

    If Moto had been a little farther along, the history of the PC industry
    could have been quite different.

    If Moto had done 68008 first, it may very well have turned out
    differently.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Brett@21:1/5 to John Levine on Sun Jan 5 20:46:43 2025
    John Levine <johnl@taugh.com> wrote:
    According to Anton Ertl <anton@mips.complang.tuwien.ac.at>:
    Anyway, while Zilog may have taken their sales, I very much believe
    that Intel was aware of the general-purpose computing market, and the
    iAPX432 clearly showed that they wanted to be dominant there. It's an
    irony of history that the 8086/8088 actually went where the action
    was.

    I have heard that the IBM PC was originally designed with a Z80, and fairly late
    in the process someone decided (not unreasonably) that it wouldn't be different
    enough from all the other Z80 boxes to be an interesting product. They wanted a
    16 bit processor but for time and money reasons they stayed with the 8 bit bus
    they already had. The options were 68008 and 8088. Moto was only shipping samples of the 68008 while Intel could provide 8088 in quantity, so they went with the 8088.

    If Moto had been a little farther along, the history of the PC industry
    could have been quite different.

    The 8088 was not a threat to any of IBM’s existing products, the 68x00 was.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Terje Mathisen@21:1/5 to All on Sun Jan 5 22:01:36 2025
    MitchAlsup1 wrote:
    On Sun, 5 Jan 2025 20:01:25 +0000, John Levine wrote:

    According to Anton Ertl <anton@mips.complang.tuwien.ac.at>:
    Anyway, while Zilog may have taken their sales, I very much believe
    that Intel was aware of the general-purpose computing market, and the
    iAPX432 clearly showed that they wanted to be dominant there.  It's an
    irony of history that the 8086/8088 actually went where the action
    was.

    I have heard that the IBM PC was originally designed with a Z80, and
    fairly late
    in the process someone decided (not unreasonably) that it wouldn't be
    different
    enough from all the other Z80 boxes to be an interesting product. They
    wanted a
    16 bit processor but for time and money reasons they stayed with the 8
    bit bus
    they already had. The options were 68008 and 8088. Moto was only
    shipping
    samples of the 68008 while Intel could provide 8088 in quantity, so they
    went
    with the 8088.

    If Moto had been a little farther along, the history of the PC industry
    could have been quite different.

    If Moto had done 68008 first, it may very well have turned out
    differently.

    But neither of these were possible (i.e. available) when IBM picked
    their CPU.

    I do believe that IBM did seriously consider the risk of making the PC
    too good, so that it would compete directly with their low-end systems (8100?).

    At least, that's what I assumed when the PC-AT only ran at 6MHz on a CPU
    which was designed for 8 MHz. I fondly remember a bunch of overclocking
    hacks on various 286 machines, most of them ran at 9 MHz, and I don't
    think I saw any that didn't handle 8 MHz.

    Terje

    --
    - <Terje.Mathisen at tmsw.no>
    "almost all programming can be viewed as an exercise in caching"

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From John Dallman@21:1/5 to Mathisen on Mon Jan 6 00:35:00 2025
    In article <vlervh$174vb$1@dont-email.me>, terje.mathisen@tmsw.no (Terje Mathisen) wrote:

    I do believe that IBM did seriously consider the risk of making the
    PC too good, so that it would compete directly with their low-end
    systems (8100?).

    I recall reading back in the 1980s that the PC was intended to be
    incapable of competing with the System/36 minis, and the previous
    System/34 and /32 machines. It rather failed at that.

    John

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From MitchAlsup1@21:1/5 to John Dallman on Mon Jan 6 03:02:22 2025
    On Thu, 1 Jan 1970 0:00:00 +0000, John Dallman wrote:

    In article <vlervh$174vb$1@dont-email.me>, terje.mathisen@tmsw.no (Terje Mathisen) wrote:

    I do believe that IBM did seriously consider the risk of making the
    PC too good, so that it would compete directly with their low-end
    systems (8100?).

    I recall reading back in the 1980s that the PC was intended to be
    incapable of competing with the System/36 minis, and the previous
    System/34 and /32 machines. It rather failed at that.

    Perhaps IBM should have made them more performant !?!

    John

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Michael S@21:1/5 to mitchalsup@aol.com on Mon Jan 6 15:19:32 2025
    On Mon, 6 Jan 2025 03:02:22 +0000
    mitchalsup@aol.com (MitchAlsup1) wrote:

    On Thu, 1 Jan 1970 0:00:00 +0000, John Dallman wrote:

    In article <vlervh$174vb$1@dont-email.me>, terje.mathisen@tmsw.no
    (Terje Mathisen) wrote:

    I do believe that IBM did seriously consider the risk of making the
    PC too good, so that it would compete directly with their low-end
    systems (8100?).

    I recall reading back in the 1980s that the PC was intended to be
    incapable of competing with the System/36 minis, and the previous
    System/34 and /32 machines. It rather failed at that.

    Perhaps IBM should have made them more performant !?!


    Impossible. More performant S/36 would undermine S/38.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)