• Re: The integral type 'byte' (was Re: Suggested method for returning a

    From David Brown@21:1/5 to Keith Thompson on Tue Mar 25 10:38:31 2025
    On 24/03/2025 23:57, Keith Thompson wrote:
    Janis Papanagnou <[email protected]> writes:
    On 21.03.2025 00:10, Keith Thompson wrote:
    bart <[email protected]> writes:
    [...]
    Look at this one for example:

    typedef uint8_t byte; // from arduino.h

    I can only one of reason this exists, which is that 'byte' is a far
    nicer denotation.

    I agree in this case. "byte" documents what the type is intended for.

    I disagree on both above expressed opinions in more than one way.

    Byte is a bad term to denote a quantity or an intention. Formerly
    a "Byte" was used to carry characters; its size could be anything
    from 5 to 9 bit. There was a reason why in international standards
    documents there's the 'octet' introduced to unambiguously hint to
    an 8-bit quantity. Neither is it good, as we see in practice, to
    assume a 'byte' (whatever it actually is) to be able to carry a
    character, not even 'char' or 'unsigned char' seem to be able to
    accomplish that given the "wide character" types in the context of
    Unicode (16 bit, 32 bit) characters and (variable-length) UTF-8
    encodings.

    "Byte" is a defined term in C. The definition is "addressable
    unit of data storage large enough to hold any member of the basic
    character set of the execution environment", but other parts of
    the standard make it clear that sizeof yields a count of bytes,
    that there are CHAR_BIT bits in a byte, that types char, unsigned
    char, and signed char are all one byte in size, and that CHAR_BIT
    is at least 8 but can be bigger. I'm aware of the history, but if
    I defined a "byte" type in C that's what I would mean.

    It is IMHO unfortunate that "bytes" and "characters" are conflated
    in C. This was done before multi-byte or wide characters were a
    thing, but we're stuck with it.

    The definition above:

    typedef uint8_t byte; // from arduino.h

    is IMHO not ideal. Various language rules taken together imply
    that uint8_t *either* is exactly one byte *or* does not exist (if CHAR_BIT>8), but unsigned char is directly specified to be exactly
    one byte. But it's system-specific, so I wouldn't worry about it
    or advocate changing it.


    Personally, I think "typedef uint8_t byte;" /is/ ideal - and much better
    than "typedef unsigned char byte;" would be. I say that as someone who
    works in a field with bits and bytes more than ints and doubles.

    While the term "byte" has historically be used for different sizes, and
    has a specific meaning in the C standards, the meaning has changed and solidified over time. Using it to refer to anything other than 8-bit
    octets is archaic - it's like using the word "computer" to refer to a
    person who does calculations. That's fine for a history lesson (or the excellent film "Hidden Figures"), but not for practicality. And the use
    of the C-specific version of the term "byte" in the C standards should
    be seen as archaic - it is regularly jumbled with "char" and "unsigned
    char".

    There are C implementations for devices that have a "byte" greater than
    8 bits. I've used a few of them (DSP devices, rather than dinosaurs).
    In all their documentation, information, SDK header files, I have never
    seen "byte" in reference to addressable memory units. Instead, they are considered "word-addressable" devices - where "word" is far more
    flexible in size. (Some systems have 16-bit words, some 24-bit words,
    some 32-bit words, etc.) Any reference to "byte" is invariably 8-bit.

    Of course, the number of C programmers who ever see or target a device
    which does not have CHAR_BIT == 8 is tiny. Although there are DSP
    devices with CHAR_BIT > 8, they are /very/ niche. DSP programming is a
    highly specialised field, mostly done by small groups in tight
    cooperation with the manufacturers - and much of it is done with matlab
    or other such tools, rather than direct C programming. Almost no C code
    is written with the expectation that it will run on CHAR_BIT == 8
    machines and also CHAR_BIT > 8 machines.

    Thus pretty much any programmer in the last 50 years sees "byte" as
    synonymous with 8-bit octet, including C programmers, and for the last
    30 years or so it has been the ISO standard definition of the term.
    Allowing even the possibility of something else - as you would have by typedef'ing unsigned char - is doing the user a disservice. The term
    "byte", without very clear additional context, should be used /solely/
    to refer to 8-bit sizes. So the correct type to use for typedef'ing it
    would be "uint8_t". Code that uses a type named "byte", when compiled
    for a target with CHAR_BIT > 8, /should/ fail hard on the compile.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kaz Kylheku@21:1/5 to David Brown on Tue Mar 25 16:31:45 2025
    On 2025-03-25, David Brown <[email protected]> wrote:
    Personally, I think "typedef uint8_t byte;" /is/ ideal - and much better
    than "typedef unsigned char byte;" would be. I say that as someone who
    works in a field with bits and bytes more than ints and doubles.

    The problem is that uint8_t is not endowed with the special
    aliasing rules for accessing objects of other types as arrays
    of unsigned char. A type called byte is prone to precipitating
    into those uses.

    A platform like Arduino could assert that in their toolchain,
    the type byte does have those properties (and then somehow ensure
    that is true, in spite of it being uint8_t, like by patching
    the compiler if they have to).

    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @[email protected]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to David Brown on Tue Mar 25 19:18:14 2025
    On 25.03.2025 10:38, David Brown wrote:

    Personally, I think [...]

    (I'll skip most of that in your post.)


    Thus pretty much any programmer in the last 50 years sees "byte" as synonymous with 8-bit octet, including C programmers,

    Be careful if you are not speaking for yourself, and especially if
    you extrapolate to such a lengthy period of time.

    50 years ago was 1975 (and about the time I wrote my first programs).
    And it was even some years later that I programmed on CDC 175 or 176,
    a machine with a word length of 60 bit, 6 bit characters and Pascal's
    'text' data type was a 'packed array [1..10] of character'. (Just to
    give an example.) Computer scientists generally had a much broader
    view back these days.

    If you'd have said 40 years ago, about the time when MS DOS systems
    got popular, I would have agreed about the prevalent opinion. OTOH,
    with all this populism a lot of quality degradation entered the IT
    scenery (at least, as far as my observation goes); things were not
    taken as accurately as would have been appropriate.

    and for the last
    30 years or so it has been the ISO standard definition of the term.

    I suppose you meant the "ISO _C_ standard definition"?

    I'm asking because I was in my post already referring to international standards (ISO, CCITT/ITU-T, etc.) that have defined 'octet' for the
    purpose of unambiguously identifying an 8 bit entity. The 'octet' went
    into the ASN.1 protocol standard notation (that you will now also find
    in IETF's RFC standards).

    Janis

    [...]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From bart@21:1/5 to Janis Papanagnou on Tue Mar 25 18:50:20 2025
    On 25/03/2025 18:18, Janis Papanagnou wrote:
    On 25.03.2025 10:38, David Brown wrote:

    Personally, I think [...]

    (I'll skip most of that in your post.)


    Thus pretty much any programmer in the last 50 years sees "byte" as
    synonymous with 8-bit octet, including C programmers,

    Be careful if you are not speaking for yourself, and especially if
    you extrapolate to such a lengthy period of time.

    50 years ago was 1975 (and about the time I wrote my first programs).
    And it was even some years later that I programmed on CDC 175 or 176,
    a machine with a word length of 60 bit, 6 bit characters and Pascal's
    'text' data type was a 'packed array [1..10] of character'. (Just to
    give an example.) Computer scientists generally had a much broader
    view back these days.

    If you'd have said 40 years ago, about the time when MS DOS systems
    got popular,

    1985? That's a bit late! 8-bit processors started around the mid-70s,
    pretty much 50 years ago. I would guess more people started using those
    during the late 70s, than were using those odd mainframes, since they
    were so much more accessible. You could literally buy a CPU from a
    corner electronics store.

    (I believe the IBM 360 used 8-bit bytes from the 1960s.)


    I'm asking because I was in my post already referring to international standards (ISO, CCITT/ITU-T, etc.) that have defined 'octet' for the
    purpose of unambiguously identifying an 8 bit entity. The 'octet' went
    into the ASN.1 protocol standard notation (that you will now also find
    in IETF's RFC standards).

    These days I officially use 'u8' for the type (which also takes care of
    any questions about its signedness), but also use a 'byte' designation,
    which has existed in my products since 1981 -- 44 years. And I doubt I
    was the first!

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Kaz Kylheku on Tue Mar 25 19:23:14 2025
    On 25/03/2025 17:31, Kaz Kylheku wrote:
    On 2025-03-25, David Brown <[email protected]> wrote:
    Personally, I think "typedef uint8_t byte;" /is/ ideal - and much better
    than "typedef unsigned char byte;" would be. I say that as someone who
    works in a field with bits and bytes more than ints and doubles.

    The problem is that uint8_t is not endowed with the special
    aliasing rules for accessing objects of other types as arrays
    of unsigned char. A type called byte is prone to precipitating
    into those uses.


    The minimum size for an "unsigned char" is 8 bits. There are no other
    standard integer types that are unsigned, have no padding bits, and can
    be 8 bits in size (except that plain "char" can be identical to
    "unsigned char"). "uint8_t" is a typedef of an integer type that is
    exactly 8 bits, with no padding. There can be no C implementation for
    which "uint8_t" can exist, and for which "unsigned char" is not an
    appropriate choice. No other standard integer types can possibly be
    suitable (except perhaps "char").

    So if "uint8_t" on an implementation is /not/ a typedef for unsigned
    char, the implementation must be providing an extended integer type of identical size and characteristics to "unsigned char". No known
    implementation of C has, to my knowledge, ever had actual extended
    integer types.

    In order for a C implementation to provide a uint8_t type that does not
    have the "magic" aliasing powers of character types (now called "byte
    types" in C23), the implementation would have to provide an extended
    integer type otherwise identical to "unsigned char" except for its
    aliasing powers, and specifically use that for "uint8_t" contrary to
    normal user expectations. I believe this is hypothetically possible,
    but so unrealistic as to be ignorable. However, if you or anyone else
    has reason to believe it /is/ realistic, I'd appreciate hearing about it.


    A platform like Arduino could assert that in their toolchain,
    the type byte does have those properties (and then somehow ensure
    that is true, in spite of it being uint8_t, like by patching
    the compiler if they have to).


    "uint8_t" is a typedef - not its own integer type. If it is a typedef
    of "unsigned char" (as it is for the AVR gcc port, used by the Arduino),
    it inherits the magic aliasing powers of "unsigned char" - typedef names
    an alias, not a new type.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to bart on Tue Mar 25 20:45:47 2025
    On 25.03.2025 19:50, bart wrote:
    On 25/03/2025 18:18, Janis Papanagnou wrote:

    If you'd have said 40 years ago, about the time when MS DOS systems
    got popular,

    1985? That's a bit late!

    I was speaking about MS-DOS systems that got available where I live
    around 1982. Few people could afford to buy the IBM systems. But they
    marked the line where these system got popular here. A non-significant
    but noticeable distribution of these systems could be observed around 1984/1985. That's about when "common folks" started to "talk IT".

    8-bit processors started around the mid-70s, pretty much 50 years ago.

    One of the first systems I used (around 1978) was a Commodore PET 2001.
    There were (very few) other folks that used the first Apple computers
    (also very expensive equipment here). There was another (I forgot the
    name; it ran the CPM OS) which was affordable, and a bit later came
    the Amiga and the Atari.

    I would guess more people started using those during the late 70s,

    The pervasion in society came much later! (It may have been different
    where you live. But I'd be surprised if it would have been a completely different situation.)

    than were using those odd mainframes, since they
    were so much more accessible.

    This is important to emphasize; because mainframes were used by IT/CS professionals, "normal users" had no access (or only as users of
    commercial application software in companies who were not interested
    in technical details, let alone information on "bit-level").

    One thing I was describing is the two groups; professionals and, say, "wannabes". While the first group had a complete view on the scenery
    the latter group's (much more limited) view determined the perception.

    You could literally buy a CPU from a corner electronics store.

    In 1978 a Commodore Pet 2001 costs 2000 DM (I think it must have been
    around 500 US$ back these days). Few people could afford to buy one.
    And most people had no use for it anyway. Only nerds with sufficient
    income could buy one to play with it.


    (I believe the IBM 360 used 8-bit bytes from the 1960s.)

    Using 8 bit for a "byte" was not uncommon; the bits are addressable by
    a power-of-2. But systems were also not that streamlined. (I worked on
    48 bit and 60 bit mainframe systems, for example.) Characters (that are
    carried by "bytes") were 6 bit, ASCII (7 bit), EBCDIC, or some specific
    8 bit character set. And even 5 bit character sets still supported. I
    never worked with a 9/36 bit system, though. One DSP I programmed had
    16 bit words (but that was not used for text processing).

    Janis

    [...]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From bart@21:1/5 to Janis Papanagnou on Tue Mar 25 23:30:45 2025
    On 25/03/2025 19:45, Janis Papanagnou wrote:
    On 25.03.2025 19:50, bart wrote:
    On 25/03/2025 18:18, Janis Papanagnou wrote:

    If you'd have said 40 years ago, about the time when MS DOS systems
    got popular,

    1985? That's a bit late!

    I was speaking about MS-DOS systems that got available where I live
    around 1982.

    Yes but you were replying to a comment about 'bytes' being commonly
    associated with 8-bit quantities for 50 years. People in computers would
    have been aware of them. You say yourself you used such a system in 1978.

    In fact BYTE magazine started in 1975 too, and originally featured such
    8-bit systems.

    Few people could afford to buy the IBM systems. But they
    marked the line where these system got popular here. A non-significant
    but noticeable distribution of these systems could be observed around 1984/1985. That's about when "common folks" started to "talk IT".

    8-bit processors started around the mid-70s, pretty much 50 years ago.

    One of the first systems I used (around 1978) was a Commodore PET 2001.
    There were (very few) other folks that used the first Apple computers
    (also very expensive equipment here). There was another (I forgot the
    name; it ran the CPM OS) which was affordable, and a bit later came
    the Amiga and the Atari.

    In the UK, a Z80 microprocessor chip cost £10 in 1981. Memory £24/KB
    (SRAM) or £6/KB (DRAM). Not cheap, but still affordable for ordinary
    people, compared with the £500,000 my college's mainframe cost in mid-78s.

    (Which had 36-bit words, was only word-addresseable and variable-sized
    packed bytes. The new architectures that microprocessors made popular
    were much more practical.)

    One thing I was describing is the two groups; professionals and, say, "wannabes". While the first group had a complete view on the scenery
    the latter group's (much more limited) view determined the perception.

    I don't have time for such elitism.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Keith Thompson on Wed Mar 26 10:33:22 2025
    On 25/03/2025 21:14, Keith Thompson wrote:
    David Brown <[email protected]> writes:
    On 25/03/2025 17:31, Kaz Kylheku wrote:
    On 2025-03-25, David Brown <[email protected]> wrote:
    Personally, I think "typedef uint8_t byte;" /is/ ideal - and much better >>>> than "typedef unsigned char byte;" would be. I say that as someone who >>>> works in a field with bits and bytes more than ints and doubles.
    The problem is that uint8_t is not endowed with the special
    aliasing rules for accessing objects of other types as arrays
    of unsigned char. A type called byte is prone to precipitating
    into those uses.

    The minimum size for an "unsigned char" is 8 bits. There are no other
    standard integer types that are unsigned, have no padding bits, and
    can be 8 bits in size (except that plain "char" can be identical to
    "unsigned char"). "uint8_t" is a typedef of an integer type that is
    exactly 8 bits, with no padding. There can be no C implementation for
    which "uint8_t" can exist, and for which "unsigned char" is not an
    appropriate choice. No other standard integer types can possibly be
    suitable (except perhaps "char").

    So if "uint8_t" on an implementation is /not/ a typedef for unsigned
    char, the implementation must be providing an extended integer type of
    identical size and characteristics to "unsigned char". No known
    implementation of C has, to my knowledge, ever had actual extended
    integer types.

    In order for a C implementation to provide a uint8_t type that does
    not have the "magic" aliasing powers of character types (now called
    "byte types" in C23), the implementation would have to provide an
    extended integer type otherwise identical to "unsigned char" except
    for its aliasing powers, and specifically use that for "uint8_t"
    contrary to normal user expectations. I believe this is
    hypothetically possible, but so unrealistic as to be ignorable.
    However, if you or anyone else has reason to believe it /is/
    realistic, I'd appreciate hearing about it.


    A platform like Arduino could assert that in their toolchain,
    the type byte does have those properties (and then somehow ensure
    that is true, in spite of it being uint8_t, like by patching
    the compiler if they have to).


    "uint8_t" is a typedef - not its own integer type. If it is a typedef
    of "unsigned char" (as it is for the AVR gcc port, used by the
    Arduino), it inherits the magic aliasing powers of "unsigned char" -
    typedef names an alias, not a new type.

    If it requires that long a line of reasoning to prove that uint8_t is
    *very probably* an appropriate byte type, why not just use unsigned
    char, which is guaranteed to be an appropriate byte type?


    Perhaps I was not clear in my argument above.

    If "uint8_t" is /not/ an appropriate type for a typedef "byte", then
    there are /no/ appropriate choices for a typedef of that name.

    "unsigned char" is always an appropriate type for a typedef
    "c_standard_byte" - but not necessarily for what the majority of
    programmers - C programmers or otherwise - see as a "byte".

    The problem is that the C standards use an obscure, non-standard and potentially confusing definition of the normal, standardised computer
    science term "byte". If code is going to use the word "byte" at all, it
    should be used in the sense that is standard for the most important
    people involved - the human programmers - while not conflicting with the
    C definition of the term. If the target does not support a type that
    acts like a "byte" in the common programming sense /and/ in the C
    standards sense, then it is a mistake to use the word "byte" at all in
    the code.


    If you like, you can add:

    #if CHAR_BIT != 8
    #error "Nope"
    #endif


    I prefer not to clutter my code with such unnecessary checks - I use
    "uint8_t", knowing that it has a built-in compile-time check that
    CHAR_BIT is 8, and that it explicitly says exactly what I intend it to say.

    I accept that this reduces the portability of my code. For one thing,
    it is not portable to targets that have CHAR_BIT > 8. That's fine - if
    I am working with a target with CHAR_BIT > 8, I know that I am working
    on such a target.

    And within compilers with CHAR_BIT == 8, my code is also limited in
    portability to real-world compilers. I don't see that as a hinder, at
    least for the work I do.


    (Of course I don't complain if some header for an Arduino typedef's byte
    as "unsigned char" - I already know that the target device has 8-bit
    char, and that it will work as I expect.)



    When I'm writing C, "byte" doesn't mean 8 bits. It means CHAR_BIT bits.


    It's worth remembering that you are in the tiny fraction of C
    programmers who think that way. "Normal" C programmers can, do, and
    arguably should assume that CHAR_BIT is always 8.

    But that's okay. Different programmers do different kinds of work, and
    can and should make different choices and assumptions.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Janis Papanagnou on Wed Mar 26 11:10:54 2025
    On 25/03/2025 19:18, Janis Papanagnou wrote:
    On 25.03.2025 10:38, David Brown wrote:

    Personally, I think [...]

    (I'll skip most of that in your post.)


    Thus pretty much any programmer in the last 50 years sees "byte" as
    synonymous with 8-bit octet, including C programmers,

    Be careful if you are not speaking for yourself, and especially if
    you extrapolate to such a lengthy period of time.

    50 years ago was 1975 (and about the time I wrote my first programs).
    And it was even some years later that I programmed on CDC 175 or 176,
    a machine with a word length of 60 bit, 6 bit characters and Pascal's
    'text' data type was a 'packed array [1..10] of character'. (Just to
    give an example.) Computer scientists generally had a much broader
    view back these days.

    If you'd have said 40 years ago, about the time when MS DOS systems
    got popular, I would have agreed about the prevalent opinion. OTOH,
    with all this populism a lot of quality degradation entered the IT
    scenery (at least, as far as my observation goes); things were not
    taken as accurately as would have been appropriate.


    OK, let's say 40 years ago. But even by 1975, it was clear that 8-bit groupings were already dominant and other sizes were only going to see
    usage in niche devices or for compatibility with existing older designs.
    Basically, the future of programming belonged to microprocessors, and
    they used 8-bit bytes (except for the smallest embedded devices with
    4-bit nibbles).

    and for the last
    30 years or so it has been the ISO standard definition of the term.

    I suppose you meant the "ISO _C_ standard definition"?

    No, I meant ISO standards. ISO 2382, ISO 60027, ISO 80000. These are
    the standards that cover all sorts of terms and units for science,
    mathematics, engineering - including computing. They are how we know
    that when you buy 1 GiB of ram, you have 1024 ^ 3 bytes with each byte consisting of 8 bits. They are why other ISO standards for other
    programming languages don't have to define what they mean by "byte" -
    it's only languages that deviate from the ISO standard definitions that
    need to be explicit because they define terms in a different way from
    the commonly accepted terms. (To be clear here - the ISO C90 standard
    predates these ISO quantities standards.)


    I'm asking because I was in my post already referring to international standards (ISO, CCITT/ITU-T, etc.) that have defined 'octet' for the
    purpose of unambiguously identifying an 8 bit entity. The 'octet' went
    into the ASN.1 protocol standard notation (that you will now also find
    in IETF's RFC standards).


    Yes, "octet" (or "octad") was used in some contexts before "byte" was standardised at 8 bits, and was standardised in communications and
    networking documents before "byte" was standardised. It is still used
    in such contexts, due to the historical momentum - no one is going to
    revise all the RFC's to change the wording.

    But the fact that "octet" was a standardised term for 8 bits prior to
    the standardisation of the term "byte", does not change the fact that
    the term "byte" was standardised as 8 bits - in common computing usage
    by at least 40 years ago (though I still think 50 years ago is
    reasonable), and in official international standards by at least 30
    years ago.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Keith Thompson on Wed Mar 26 11:33:33 2025
    On 25/03/2025 21:16, Keith Thompson wrote:
    David Brown <[email protected]> writes:
    [...]
    Thus pretty much any programmer in the last 50 years sees "byte" as
    synonymous with 8-bit octet, including C programmers, and for the last
    30 years or so it has been the ISO standard definition of the
    term.

    What ISO standard definition are you referring to? The ISO C standard certainly doesn't define a "byte" to be 8 bits. I'd be surprised if any other ISO standard did so.


    I haven't read the relevant standards (they cost a lot of money, and I
    doubt if they are particularly exciting reading), but Wikipedia refers
    to several - basically the standards covering units of measurements and technical terms used in science, mathematics, engineering, etc.

    The C standards are the exception here, not the rule. (But they predate
    the ISO standardisation of the term, as far as I can see.)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Janis Papanagnou on Wed Mar 26 11:29:59 2025
    On 25/03/2025 20:45, Janis Papanagnou wrote:
    On 25.03.2025 19:50, bart wrote:
    On 25/03/2025 18:18, Janis Papanagnou wrote:

    If you'd have said 40 years ago, about the time when MS DOS systems
    got popular,

    1985? That's a bit late!

    I was speaking about MS-DOS systems that got available where I live
    around 1982. Few people could afford to buy the IBM systems. But they
    marked the line where these system got popular here. A non-significant
    but noticeable distribution of these systems could be observed around 1984/1985. That's about when "common folks" started to "talk IT".

    8-bit processors started around the mid-70s, pretty much 50 years ago.

    One of the first systems I used (around 1978) was a Commodore PET 2001.
    There were (very few) other folks that used the first Apple computers
    (also very expensive equipment here). There was another (I forgot the
    name; it ran the CPM OS) which was affordable, and a bit later came
    the Amiga and the Atari.

    I would guess more people started using those during the late 70s,

    The pervasion in society came much later! (It may have been different
    where you live. But I'd be surprised if it would have been a completely different situation.)

    In the UK at least, home computers were wildly popular from the start of
    the 1980's, when they became much cheaper, had usable BASIC languages,
    and a wide supply of games. DOS and CP/M systems were pretty much
    business only - home computers hugely outnumbered such systems.
    Virtually all home computers were 8-bit - though most users would have
    little knowledge of that.


    In 1978 a Commodore Pet 2001 costs 2000 DM (I think it must have been
    around 500 US$ back these days). Few people could afford to buy one.
    And most people had no use for it anyway. Only nerds with sufficient
    income could buy one to play with it.


    The Pet was early and expensive - my father had one at home in
    connection with his job. (I never got to program it, but I was six at
    the time.) But the market exploded a few years after that with a wide
    variety of home computers. By the mid eighties, a large proportion of households in the UK with teenage boys had a home computer of some sort.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Harnden@21:1/5 to David Brown on Wed Mar 26 11:02:59 2025
    On 26/03/2025 10:10, David Brown wrote:
    But the fact that "octet" was a standardised term for 8 bits prior to
    the standardisation of the term "byte", does not change the fact that
    the term "byte" was standardised as 8 bits - in common computing usage
    by at least 40 years ago (though I still think 50 years ago is
    reasonable), and in official international standards by at least 30
    years ago.

    I was taught - probably wrongly - that byte was a contraction of 'binary-eight'.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Richard Harnden on Wed Mar 26 12:47:35 2025
    On 26/03/2025 12:02, Richard Harnden wrote:
    On 26/03/2025 10:10, David Brown wrote:
    But the fact that "octet" was a standardised term for 8 bits prior to
    the standardisation of the term "byte", does not change the fact that
    the term "byte" was standardised as 8 bits - in common computing usage
    by at least 40 years ago (though I still think 50 years ago is
    reasonable), and in official international standards by at least 30
    years ago.

    I was taught - probably wrongly - that byte was a contraction of 'binary-eight'.


    As far as I know, it was just a re-spelling (to avoid mixups with "bit")
    of the word "bite" that was used to indicate a small chunk of something.
    Certainly the word was used before its size was fixed at 8 bits.

    The word "bit", on the other hand, is often said to come from "binary
    digit" or "binary information digit". Personally, I think it is a lot
    simpler - it's the smallest usable bit of information you can have.
    Saying it is a "binary digit" just makes it clearer how big a bit you have.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From bart@21:1/5 to David Brown on Wed Mar 26 13:12:28 2025
    On 26/03/2025 11:47, David Brown wrote:
    On 26/03/2025 12:02, Richard Harnden wrote:
    On 26/03/2025 10:10, David Brown wrote:
    But the fact that "octet" was a standardised term for 8 bits prior to
    the standardisation of the term "byte", does not change the fact that
    the term "byte" was standardised as 8 bits - in common computing
    usage by at least 40 years ago (though I still think 50 years ago is
    reasonable), and in official international standards by at least 30
    years ago.

    I was taught - probably wrongly - that byte was a contraction of
    'binary-eight'.


    As far as I know, it was just a re-spelling (to avoid mixups with "bit")
    of the word "bite" that was used to indicate a small chunk of something.
     Certainly the word was used before its size was fixed at 8 bits.

    The word "bit", on the other hand, is often said to come from "binary
    digit" or "binary information digit".  Personally, I think it is a lot simpler - it's the smallest usable bit of information you can have.
    Saying it is a "binary digit" just makes it clearer how big a bit you have.


    So where did a 'bit' being 1/8th of a dollar come from? (As in, two bits
    being 25 cents.) Maybe a coincidence?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to bart on Wed Mar 26 14:48:02 2025
    On 26/03/2025 14:12, bart wrote:
    On 26/03/2025 11:47, David Brown wrote:
    On 26/03/2025 12:02, Richard Harnden wrote:
    On 26/03/2025 10:10, David Brown wrote:
    But the fact that "octet" was a standardised term for 8 bits prior
    to the standardisation of the term "byte", does not change the fact
    that the term "byte" was standardised as 8 bits - in common
    computing usage by at least 40 years ago (though I still think 50
    years ago is reasonable), and in official international standards by
    at least 30 years ago.

    I was taught - probably wrongly - that byte was a contraction of
    'binary-eight'.


    As far as I know, it was just a re-spelling (to avoid mixups with
    "bit") of the word "bite" that was used to indicate a small chunk of
    something.   Certainly the word was used before its size was fixed at
    8 bits.

    The word "bit", on the other hand, is often said to come from "binary
    digit" or "binary information digit".  Personally, I think it is a lot
    simpler - it's the smallest usable bit of information you can have.
    Saying it is a "binary digit" just makes it clearer how big a bit you
    have.


    So where did a 'bit' being 1/8th of a dollar come from? (As in, two bits being 25 cents.) Maybe a coincidence?

    I would guess it came from silver dollars being cut into bits for "small change". With silver coins, people often used "hack-silver" - coins or
    other silver items chopped up. Cutting a coin into eight bits is
    probably as small as you can get with a reasonable accuracy, and with reasonable confidence that the parts are actually bits of a dollar coin.

    The practice probably pre-dates the American dollar (certainly
    hack-silver is as old as silver coins), and is probably the origin of
    "pieces of eight".

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to bart on Wed Mar 26 14:59:04 2025
    On 26.03.2025 00:30, bart wrote:
    On 25/03/2025 19:45, Janis Papanagnou wrote:

    One thing I was describing is the two groups; professionals and, say,
    "wannabes". While the first group had a complete view on the scenery
    the latter group's (much more limited) view determined the perception.

    I don't have time for such elitism.

    Of course not; and very understandable given what your posts show where
    you're coming from.

    But my statement stems more from decades long suffering in contexts of
    folks who constantly repeat the MS marketing division's advertisements
    how good their IT stuff is, their OS and software tools. They presented
    bad systems and bad software, bad in any respect, non-standard, buggy,
    and continued for decades not implementing state of the art software of
    minimum necessary quality. - I'm sure your mileage varies.

    Janis

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to David Brown on Wed Mar 26 15:08:16 2025
    On 26.03.2025 11:29, David Brown wrote:

    In the UK at least, home computers were wildly popular from the start of
    the 1980's, when they became much cheaper, had usable BASIC languages,
    and a wide supply of games. DOS and CP/M systems were pretty much
    business only - home computers hugely outnumbered such systems.
    Virtually all home computers were 8-bit - though most users would have
    little knowledge of that.

    I basically agree. Only that those geeks and nerds who privately
    bought such computer systems here were mostly informed about the
    technical details.

    (Ah, now I remember the system name I forgot in a previous post;
    it was a "Schneider" PC with CPM. And some toy called Sinclair ZX
    or so.)


    In 1978 a Commodore Pet 2001 costs 2000 DM (I think it must have been
    around 500 US$ back these days). Few people could afford to buy one.
    And most people had no use for it anyway. Only nerds with sufficient
    income could buy one to play with it.

    The Pet was early and expensive - my father had one at home in
    connection with his job. (I never got to program it, but I was six at
    the time.)

    I had the opportunity that there was a huge office equipment shop
    nearby; they sold the successor (CBM 3016, 3032, IIRC) and since
    there were almost no customers around they didn't mind that I sat
    on those systems to "play" with them. So there was no pressing
    need for me to buy one.

    But the market exploded a few years after that with a wide
    variety of home computers. By the mid eighties, a large proportion of households in the UK with teenage boys had a home computer of some sort.

    Janis

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to David Brown on Wed Mar 26 15:22:54 2025
    On 26.03.2025 11:10, David Brown wrote:
    On 25/03/2025 19:18, Janis Papanagnou wrote:
    [...]

    OK, let's say 40 years ago. But even by 1975, it was clear that 8-bit groupings were already dominant and other sizes were only going to see
    usage in niche devices or for compatibility with existing older designs.

    Yes, back these days 8 bit bases were prevalent. - The point of my
    post was that it's problematic if you use ambiguous, suboptimal
    terminology. While 8 bit Bytes were common a definition that since
    then a "Byte" would be only 8 bit would just (and also did) create
    confusion. That's why the 'octet' was instead used in international
    standards. A similar thing was the kilo and mega unit scalers. How
    long did it last until the "kibi" were introduced to disambiguate
    KB, MB, etc. The problem was the huge group of newbies ("experts")
    who didn't see the issues.

    Janis

    [...]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to David Brown on Wed Mar 26 15:40:56 2025
    On 26.03.2025 12:47, David Brown wrote:

    The word "bit", on the other hand, is often said to come from "binary
    digit" or "binary information digit".

    Yes, "binary digit".

    Personally, I think it is a lot
    simpler - it's the smallest usable bit of information you can have.
    Saying it is a "binary digit" just makes it clearer how big a bit you have.

    I think we should note that bit is used in two ways; it's first of all
    the _unit_ of information in information theory, and then it's used as
    a sort of "tangible" entity. And here (DE) we have different writings,
    entities are written in capitals (with a plural where necessary), like
    "The registers comprise either 1 Bit or 8 Bits.", and the unit written
    in singular and lowercase "The data rate is 8 bit per second."[*]

    Jnais

    [*] Note: that's just a lexical transcription to English, not meant as
    if that would be correct English (it isn't).

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Janis Papanagnou on Wed Mar 26 17:50:19 2025
    On 26/03/2025 15:08, Janis Papanagnou wrote:
    On 26.03.2025 11:29, David Brown wrote:

    In the UK at least, home computers were wildly popular from the start of
    the 1980's, when they became much cheaper, had usable BASIC languages,
    and a wide supply of games. DOS and CP/M systems were pretty much
    business only - home computers hugely outnumbered such systems.
    Virtually all home computers were 8-bit - though most users would have
    little knowledge of that.

    I basically agree. Only that those geeks and nerds who privately
    bought such computer systems here were mostly informed about the
    technical details.

    That would, I think, apply to the technically-minded adults who bought
    early computers themselves - rather than the kids whose parents bought them.


    (Ah, now I remember the system name I forgot in a previous post;
    it was a "Schneider" PC with CPM. And some toy called Sinclair ZX
    or so.)

    The Sinclair computers (ZX81, ZX Spectrum) launched a generation of
    programmers and technically-minded kids in the UK - it was much more
    than a toy. I learned machine code programming on a Spectrum (along
    with a BBC Micro), as well as some Forth, C, Pascal and Logo, in
    addition to the built-in BASIC.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to David Brown on Wed Mar 26 19:09:47 2025
    On 26.03.2025 17:50, David Brown wrote:
    On 26/03/2025 15:08, Janis Papanagnou wrote:
    On 26.03.2025 11:29, David Brown wrote:

    In the UK at least, home computers were wildly popular from the start of >>> the 1980's, when they became much cheaper, had usable BASIC languages,
    and a wide supply of games. DOS and CP/M systems were pretty much
    business only - home computers hugely outnumbered such systems.
    Virtually all home computers were 8-bit - though most users would have
    little knowledge of that.

    I basically agree. Only that those geeks and nerds who privately
    bought such computer systems here were mostly informed about the
    technical details.

    That would, I think, apply to the technically-minded adults who bought
    early computers themselves - rather than the kids whose parents bought
    them.

    Actually, as to my observations, the "parents" were a negligible
    community regarding use of computers, it were mostly folks of
    ages 16-30 (back these days and in our country). Nerds or geeks,
    as to a characterization. The social situation is very different
    nowadays.



    (Ah, now I remember the system name I forgot in a previous post;
    it was a "Schneider" PC with CPM. And some toy called Sinclair ZX
    or so.)

    The Sinclair computers (ZX81, ZX Spectrum) launched a generation of programmers and technically-minded kids in the UK - it was much more
    than a toy. I learned machine code programming on a Spectrum (along
    with a BBC Micro), as well as some Forth, C, Pascal and Logo, in
    addition to the built-in BASIC.

    Oh, please, don't get me wrong. Of course you could do a lot of
    geeky stuff with those devices and learn a lot about that (then
    "new") technology. The "toy" character as I named it I perceived
    from the lousy hardware (membrane keyboard, TV as display, etc. -
    unless I am confusing things) and also what seems to have been
    mostly done with those devices.

    On the minus side, if you wanted to learn about IT or CS - we've
    got a lot of bad paragons from many of these primitive systems;
    OSes like DOS, languages like BASIC, primitive CPU architectures,
    and whatnot. (YMMV)

    Janis

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kaz Kylheku@21:1/5 to Richard Harnden on Wed Mar 26 18:29:43 2025
    On 2025-03-26, Richard Harnden <[email protected]d> wrote:
    On 26/03/2025 10:10, David Brown wrote:
    But the fact that "octet" was a standardised term for 8 bits prior to
    the standardisation of the term "byte", does not change the fact that
    the term "byte" was standardised as 8 bits - in common computing usage
    by at least 40 years ago (though I still think 50 years ago is
    reasonable), and in official international standards by at least 30
    years ago.

    I was taught - probably wrongly - that byte was a contraction of 'binary-eight'.

    That legend is entirely apocryphal. How we can tell is that the word
    byte was used long before the world settled on almost universally
    equating it with 8 bits.

    We do not require any urban legends or etymological hypotheses in this
    area, because the origins of bit and byte are precisely known. They were
    coined by specific people in computing, who documented the origin.

    Bit stands for "binary digit". This contraction was invented in
    1948 by Claude Shannon.

    Bit is also the past participle of the verb "to bite", inviting
    puns about biting.

    The word "byte" was invented by Werner Buchholz, an employee of IBM,
    in 1956. He explained it as bing "coined from bite, but respelled to
    avoid accidental mutation to bit".

    The exact origin of "nybble" is not as clear. Obviously, a nibble
    is a small or partial bite, so how it related to "byte" is clear.
    Just the when and who is unclear. It may have been coined in 1958
    by a David B. Benson, a professor emeritus at Washington State U.
    If that is so, at the time he must have just had become familiar with Buchholz's byte term. Since it was the same year "byte" was coined,
    it's unlikely that someone independently derived "nybble" from "byte"
    earlier than Benson. So I'm tending to accept Benson's hypothesis
    that he originated "nybble".


    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @[email protected]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Janis Papanagnou on Wed Mar 26 21:39:30 2025
    On 26/03/2025 19:09, Janis Papanagnou wrote:
    On 26.03.2025 17:50, David Brown wrote:
    On 26/03/2025 15:08, Janis Papanagnou wrote:
    On 26.03.2025 11:29, David Brown wrote:

    In the UK at least, home computers were wildly popular from the start of >>>> the 1980's, when they became much cheaper, had usable BASIC languages, >>>> and a wide supply of games. DOS and CP/M systems were pretty much
    business only - home computers hugely outnumbered such systems.
    Virtually all home computers were 8-bit - though most users would have >>>> little knowledge of that.

    I basically agree. Only that those geeks and nerds who privately
    bought such computer systems here were mostly informed about the
    technical details.

    That would, I think, apply to the technically-minded adults who bought
    early computers themselves - rather than the kids whose parents bought
    them.

    Actually, as to my observations, the "parents" were a negligible
    community regarding use of computers, it were mostly folks of
    ages 16-30 (back these days and in our country). Nerds or geeks,
    as to a characterization. The social situation is very different
    nowadays.


    Parents were rarely /users/ of computers - they just paid for them :-)

    (My father was a mathematician, so he was a bit different in that regard.)



    (Ah, now I remember the system name I forgot in a previous post;
    it was a "Schneider" PC with CPM. And some toy called Sinclair ZX
    or so.)

    The Sinclair computers (ZX81, ZX Spectrum) launched a generation of
    programmers and technically-minded kids in the UK - it was much more
    than a toy. I learned machine code programming on a Spectrum (along
    with a BBC Micro), as well as some Forth, C, Pascal and Logo, in
    addition to the built-in BASIC.

    Oh, please, don't get me wrong. Of course you could do a lot of
    geeky stuff with those devices and learn a lot about that (then
    "new") technology. The "toy" character as I named it I perceived
    from the lousy hardware (membrane keyboard, TV as display, etc. -
    unless I am confusing things) and also what seems to have been
    mostly done with those devices.


    That makes more sense. Yes, the chewing-gum keyboard of the ZX Spectrum
    was famous. I had a mongrel system I made with the keyboard of a broken
    TI 99/4A rewired and attached to a Spectrum.

    For my machine code programming, I would write the assembly code on
    paper, hand-assembly it to hex, type in a BASIC program for a hex
    loader, fill in the hex code, and debug based on the different buzzing
    sounds from the Spectrum's power supply. If the code hung, the only
    option was to power-cycle the machine and hope that the unreliable tape recorder had worked this time. It taught me the value of writing code accurately from the start!

    On the minus side, if you wanted to learn about IT or CS - we've
    got a lot of bad paragons from many of these primitive systems;
    OSes like DOS, languages like BASIC, primitive CPU architectures,
    and whatnot. (YMMV)


    I learned a lot of good stuff with these systems. The bad reputation of
    BASIC is poorly deserved, IMHO.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Lurndal@21:1/5 to bart on Wed Mar 26 23:51:32 2025
    bart <[email protected]> writes:
    On 26/03/2025 18:09, Janis Papanagnou wrote:

    8-bit architectures were fine, just a bit short of registers and with >limitation instruction sets. But that is to be expected with only 27,000 >transistors on a chip or whatever it was for Z80.

    (BTW, have a go at emulating such a processor in sofware; tell me in 3
    months how you got on.)

    Emulating processors in software is my day job. It's gone
    quite well; the count is up to 8 or nine at this point,
    including mainframe, cortex-M and ARMv8. The last one
    is described by about 20,000 pages of documentation,
    so emulation isn't simple.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From bart@21:1/5 to Janis Papanagnou on Wed Mar 26 23:21:18 2025
    On 26/03/2025 18:09, Janis Papanagnou wrote:
    On 26.03.2025 17:50, David Brown wrote:
    On 26/03/2025 15:08, Janis Papanagnou wrote:
    On 26.03.2025 11:29, David Brown wrote:

    In the UK at least, home computers were wildly popular from the start of >>>> the 1980's, when they became much cheaper, had usable BASIC languages, >>>> and a wide supply of games. DOS and CP/M systems were pretty much
    business only - home computers hugely outnumbered such systems.
    Virtually all home computers were 8-bit - though most users would have >>>> little knowledge of that.

    I basically agree. Only that those geeks and nerds who privately
    bought such computer systems here were mostly informed about the
    technical details.

    That would, I think, apply to the technically-minded adults who bought
    early computers themselves - rather than the kids whose parents bought
    them.

    Actually, as to my observations, the "parents" were a negligible
    community regarding use of computers, it were mostly folks of
    ages 16-30 (back these days and in our country). Nerds or geeks,
    as to a characterization. The social situation is very different
    nowadays.



    (Ah, now I remember the system name I forgot in a previous post;
    it was a "Schneider" PC with CPM. And some toy called Sinclair ZX
    or so.)

    The Sinclair computers (ZX81, ZX Spectrum) launched a generation of
    programmers and technically-minded kids in the UK - it was much more
    than a toy. I learned machine code programming on a Spectrum (along
    with a BBC Micro), as well as some Forth, C, Pascal and Logo, in
    addition to the built-in BASIC.

    Oh, please, don't get me wrong. Of course you could do a lot of
    geeky stuff with those devices and learn a lot about that (then
    "new") technology. The "toy" character as I named it I perceived
    from the lousy hardware (membrane keyboard, TV as display, etc. -
    unless I am confusing things) and also what seems to have been
    mostly done with those devices.

    On the minus side, if you wanted to learn about IT or CS - we've

    Few played with this stuff because they wanted to learn CS. They wanted
    to do interesting fun things.

    Some commercial products were low quality because they had to be done
    for a price. I think the ZX80 was £100, at a time when my company
    produced a business computer, also Z80-based, for £1300. (One client
    used one of our machines to more easily develop Spectrum programs.)

    My own first machine was build from discrete chips, and the software had
    to be developed from *nothing* (actually, from keying in binary code
    using home-made switches). There was little scope for niceties.

    The first apps with my crude languages revolved around vector graphics,
    image processing, and frame-grabbing, *after* having to develop the
    assembler, editor, compiler and libraries needed to make it possible.

    That was an incredible learning experience, which helped me get that job
    with hardware, and formed my attitutes towards traditional tools that
    everybody is apparently still stuck with.

    got a lot of bad paragons from many of these primitive systems;
    OSes like DOS,

    I had no interest whatsover in operating systems. I did fine without one
    to start with, while CP/M (our rip-off of it) and DOS provided a file
    system and a way to launch programs; what else was there?

    languages like BASIC

    What language would you have advocated that could fit into a few KB, and
    that could run without a proper file system?

    , primitive CPU architectures,

    8-bit architectures were fine, just a bit short of registers and with limitation instruction sets. But that is to be expected with only 27,000 transistors on a chip or whatever it was for Z80.

    (BTW, have a go at emulating such a processor in sofware; tell me in 3
    months how you got on.)

    But also at that time - early 80s when Spectrums etc were popular -
    there were some wonderful new 16/32-bit processors such as 68000,
    Z8000/0 and NS32032, of which only the first survived.

    Their architecture is not that different from current machines.

    (YMMV)

    Yeah.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From bart@21:1/5 to Scott Lurndal on Thu Mar 27 00:32:20 2025
    On 26/03/2025 23:51, Scott Lurndal wrote:
    bart <[email protected]> writes:
    On 26/03/2025 18:09, Janis Papanagnou wrote:

    8-bit architectures were fine, just a bit short of registers and with
    limitation instruction sets. But that is to be expected with only 27,000
    transistors on a chip or whatever it was for Z80.

    (BTW, have a go at emulating such a processor in sofware; tell me in 3
    months how you got on.)

    Emulating processors in software is my day job. It's gone
    quite well; the count is up to 8 or nine at this point,
    including mainframe, cortex-M and ARMv8. The last one
    is described by about 20,000 pages of documentation,
    so emulation isn't simple.



    This my point. I've seen a Z80 emulator in C which was 4000 lines of
    tight code, and that is for something considered simple.

    (I can't remember if it was emulated at the granularity of clock cycles
    or coarser. My own attempt worked an instruction at time, but I got up
    to 12 opcodes before it was put aside, for other reasons.)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Waldek Hebisch@21:1/5 to bart on Thu Mar 27 01:10:11 2025
    bart <[email protected]> wrote:
    On 26/03/2025 18:09, Janis Papanagnou wrote:

    , primitive CPU architectures,

    8-bit architectures were fine, just a bit short of registers and with limitation instruction sets. But that is to be expected with only 27,000 transistors on a chip or whatever it was for Z80.

    All sources that I found say that Z80 is about 8000 transistors.
    You probably took number from 8086 which was climed to have 27000
    transitors.

    Z80 (like earlier 8080) in "general" instructions required
    accumulator as one of arguments, that severly limited utility
    of registers.

    (BTW, have a go at emulating such a processor in sofware; tell me in 3
    months how you got on.)

    Lone processor is not very interesting. I do not think coding
    simple emulator would take a lot of time. Z80 instruction set
    is a bit bulky, due to prefixed instructions, but decode could
    be done quite naively using 5 tables with 256 positions each
    (or a bit smarter using 3 tables). One needs hundreds of
    routines to implement all instructions, but large part is reasonably
    regular, so could be mechanically generated from small number
    of templates. Code implementing less regular instructions
    would take some time to write, but 3 months look like quite
    generous estimate.

    Of course I mean implementing documented Z80 instructions.
    Finding out what happens for undocumented opcodes is a can
    of worms and could take large effort.

    BTW: In old book I have table of 8080 and Z80 instructions.
    This table for each instruction has short pseudo-code
    explaining what each instructions is doing. Table has
    30 pages, but much of it is whitespace and other info,
    pseudo-code probably is less than 1000 lines. Written
    in C it will take more space, but clearly Z80 emulator
    is not going to be a big program.

    BTW2: Other 8-bit processors from that era, that is 8080 or
    6500 are simpler than Z80.

    But also at that time - early 80s when Spectrums etc were popular -
    there were some wonderful new 16/32-bit processors such as 68000,
    Z8000/0 and NS32032, of which only the first survived.

    Looking at short description of Z8000, it does not look nice:
    it has ugly "segmentation" scheme to address more than 64kB
    of memory. AFAICS the only advantage of this scheme is that
    such ugliness can not survive long (unlike 8086 segmentation).

    --
    Waldek Hebisch

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From bart@21:1/5 to Waldek Hebisch on Thu Mar 27 01:33:11 2025
    On 27/03/2025 01:10, Waldek Hebisch wrote:
    bart <[email protected]> wrote:
    On 26/03/2025 18:09, Janis Papanagnou wrote:

    , primitive CPU architectures,

    8-bit architectures were fine, just a bit short of registers and with
    limitation instruction sets. But that is to be expected with only 27,000
    transistors on a chip or whatever it was for Z80.

    All sources that I found say that Z80 is about 8000 transistors.
    You probably took number from 8086 which was climed to have 27000
    transitors.

    OK, then with 8000 it makes the capabilities even more remarkable.
    Current processors have billions of transistors.

    Z80 (like earlier 8080) in "general" instructions required
    accumulator as one of arguments, that severly limited utility
    of registers.

    (BTW, have a go at emulating such a processor in sofware; tell me in 3
    months how you got on.)

    Lone processor is not very interesting. I do not think coding
    simple emulator would take a lot of time. Z80 instruction set
    is a bit bulky, due to prefixed instructions, but decode could
    be done quite naively using 5 tables with 256 positions each
    (or a bit smarter using 3 tables)

    I don't think this is the one I saw, but the z80.c file here:

    https://github.com/redcode/Z80/tree/master/sources

    is nearly 3000 lines. There is a lot of stuff consider!

    In my case, I wanted something performant, but I could see 90% of
    emulation time being spent in multiple flags most of which would never
    be tested.

    (Of course, with emulation you need to consider the system that the CPU
    is connected to as well.)

    But, yeah, 3 months was being generous. The point is, it wouldn't be as
    trivial as some might think.

    Looking at short description of Z8000, it does not look nice:
    it has ugly "segmentation" scheme to address more than 64kB
    of memory.

    That's the thing I didn't like either. But everything else: register
    layout and instruction set, looked great. I think the Z80000 version
    took care of the memory addressing, but that didn't get off the ground.

    In the meantime, the 80386 came along in 1985, although the protected
    mode 32-bit OS to allow you to easily use the flat address space took
    another decade.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to bart on Thu Mar 27 03:24:56 2025
    On 27.03.2025 00:21, bart wrote:
    On 26/03/2025 18:09, Janis Papanagnou wrote:
    [...]

    Oh, please, don't get me wrong. Of course you could do a lot of
    geeky stuff with those devices and learn a lot about that (then
    "new") technology. The "toy" character as I named it I perceived
    from the lousy hardware (membrane keyboard, TV as display, etc. -
    unless I am confusing things) and also what seems to have been
    mostly done with those devices.

    On the minus side, if you wanted to learn about IT or CS - we've

    Few played with this stuff because they wanted to learn CS. They wanted
    to do interesting fun things.

    Call it as you like.


    Some commercial products were low quality because they had to be done
    for a price. I think the ZX80 was £100, at a time when my company
    produced a business computer, also Z80-based, for £1300. (One client
    used one of our machines to more easily develop Spectrum programs.)

    I'm speaking about all that inferior systems that had a comparably
    high price without a matching quality. And about years and years
    passing without vendors of such products changing that situation.


    My own first machine was build from discrete chips, and the software had
    to be developed from *nothing* (actually, from keying in binary code
    using home-made switches). There was little scope for niceties.

    For "niceties"? - We're obviously speaking about different things.


    The first apps with my crude languages revolved around vector graphics,
    image processing, and frame-grabbing, *after* having to develop the assembler, editor, compiler and libraries needed to make it possible.

    That was an incredible learning experience, which helped me get that job
    with hardware, and formed my attitutes towards traditional tools that everybody is apparently still stuck with.

    got a lot of bad paragons from many of these primitive systems;
    OSes like DOS,

    I had no interest whatsover in operating systems. I did fine without one
    to start with, while CP/M (our rip-off of it) and DOS provided a file
    system and a way to launch programs; what else was there?

    languages like BASIC

    What language would you have advocated that could fit into a few KB, and
    that could run without a proper file system?

    The first that comes to mind was (for example) Pascal. It actually
    became available on several platforms. But it was not comparable
    to the omnipresent [lousy] BASIC that was inherent part of the OS
    in the ROM. (Well, or on a 8" floppy; e.g. in case of the Olivetti
    P6060.) There were other languages available; someone (maybe David)
    mentioned some upthread. Myself I bought a Simula compiler for my
    Atari ST. Simula is a powerful and comparably huge language, so your
    "few KB" excuse is not convincing.

    I think it was a professor at the university who meant that anyone
    who started with BASIC would be incapable of ever doing real CS. -
    This is of course nonsense! (And such arguments say more about the
    person formulating such non-arguments. - I recall a similar nonsense
    mentioned here by someone some months ago concerning OO and Simula
    and all other OO languages that took their OO concepts from Simula.)

    The point with BASIC is that if all you know is BASIC without knowing
    anything else you probably won't be able to understand the problems
    with it. I know you have a broader language repertoire, so I presume
    you know BASIC's deficiencies (or at least the deficiencies of those
    BASIC dialects that were around until around 1980).


    , primitive CPU architectures,

    8-bit architectures were fine, just a bit short of registers and with limitation instruction sets. But that is to be expected with only 27,000 transistors on a chip or whatever it was for Z80.

    (BTW, have a go at emulating such a processor in sofware; tell me in 3
    months how you got on.)

    I don't understand your last sentence. - Are you suggesting I should
    do something stupid and unnecessary just to waste my time; why?

    In the past I had implemented an emulator for the SC 61860; if that
    helps you in any way with your argument please let me know.


    But also at that time - early 80s when Spectrums etc were popular -
    there were some wonderful new 16/32-bit processors such as 68000,
    Z8000/0 and NS32032, of which only the first survived.

    I've had contact with a couple CPUs back these days; 6502 (6510),
    68000, 8080 (Z80), another Intel thing where I forgot the number,
    SC 61860, TMS 320 C25. And I read about (but not programmed) a
    couple more (the SPARC, one from National Semiconductors) where
    I forgot the model numbers.

    The 68000, specifically, is a great example for an inferior CPU
    architecture. (Your mileage obviously varies if you think it was
    even "wonderful".)

    CPU architectures that I found to be more interesting were SPARC,
    the National Semiconductor thing (NS 32016 maybe? nor sure), and
    the TMS DSP (where I spent quite some time with), for example.

    But that all was long ago and is meaningless today. Personally
    I've occasionally programmed in assembler around 1980-1990, and
    you can imagine that I don't care much about that topic anymore.


    Their architecture is not that different from current machines.

    That would be bad news. And I have my doubts that this is true.
    (But as said, I don't care much anymore.)

    It's interesting to still see advocates of inferior IT justifying
    bad paragons, though. The situation has not changed. - Have fun!

    Janis


    (YMMV)

    Yeah.



    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to bart on Thu Mar 27 10:54:04 2025
    On 27/03/2025 02:33, bart wrote:
    On 27/03/2025 01:10, Waldek Hebisch wrote:
    bart <[email protected]> wrote:
    On 26/03/2025 18:09, Janis Papanagnou wrote:

    , primitive CPU architectures,

    8-bit architectures were fine, just a bit short of registers and with
    limitation instruction sets. But that is to be expected with only 27,000 >>> transistors on a chip or whatever it was for Z80.

    All sources that I found say that Z80 is about 8000 transistors.
    You probably took number from 8086 which was climed to have 27000
    transitors.

    OK, then with 8000 it makes the capabilities even more remarkable.
    Current processors have billions of transistors.


    Most of the bulk of current processors are arrays or repetitions -
    caches, arrays of registers, etc. The "interesting" bits are orders of magnitude smaller than the chip as a whole.

    But I am always impressed by how much older designs managed to do with
    so few transistors - even if Wikipedia says 8500 transistors rather than
    8000, and even though the logic families of such systems used fewer
    transistors per gate than modern CMOS.

    The software on these early home computers was equally impressive in the
    tricks used to fit so much into such small spaces. I've seen things
    like overlaps between character data, other tables, and code, to squeeze
    out a few more bytes.

    (I've done a little of this myself in assembly for old brain-dead microcontroller architectures, though nothing close to the level
    achieved by the folks behind systems like the ZX 81.)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From bart@21:1/5 to Janis Papanagnou on Thu Mar 27 11:14:58 2025
    On 27/03/2025 02:24, Janis Papanagnou wrote:
    On 27.03.2025 00:21, bart wrote:

    Some commercial products were low quality because they had to be done
    for a price. I think the ZX80 was £100, at a time when my company
    produced a business computer, also Z80-based, for £1300. (One client
    used one of our machines to more easily develop Spectrum programs.)

    I'm speaking about all that inferior systems that had a comparably
    high price without a matching quality. And about years and years
    passing without vendors of such products changing that situation.

    I guess ... you're talking about either the IBM PC hardware or MS
    software, or both? (Although PCs weren't expensive.)

    It was Keith Thompson who quoted the other day that C was a great
    success despite all its faults.

    What language would you have advocated that could fit into a few KB, and
    that could run without a proper file system?

    The first that comes to mind was (for example) Pascal. It actually
    became available on several platforms. But it was not comparable
    to the omnipresent [lousy] BASIC that was inherent part of the OS
    in the ROM. (Well, or on a 8" floppy; e.g. in case of the Olivetti
    P6060.) There were other languages available; someone (maybe David)
    mentioned some upthread. Myself I bought a Simula compiler for my
    Atari ST. Simula is a powerful and comparably huge language, so your
    "few KB" excuse is not convincing.

    From what I've just read about Simula [67], you can keep it. Its one redeedming feature is its Algol-like syntax.

    Also, by a 'few KB' I meant single figures, like 2-8KB for the code,
    plus RAM. That Atari seems to have a bit more available.


    I think it was a professor at the university who meant that anyone
    who started with BASIC would be incapable of ever doing real CS. -
    This is of course nonsense! (And such arguments say more about the
    person formulating such non-arguments. - I recall a similar nonsense mentioned here by someone some months ago concerning OO and Simula
    and all other OO languages that took their OO concepts from Simula.)

    The point with BASIC is that if all you know is BASIC without knowing anything else you probably won't be able to understand the problems
    with it. I know you have a broader language repertoire, so I presume
    you know BASIC's deficiencies (or at least the deficiencies of those
    BASIC dialects that were around until around 1980).

    I've never used Basic. But it is one language I admire, even if it is crude:

    10 let a=0
    20 let a=a+1
    30 if a<1000000 then 20
    40 print a


    In the past I had implemented an emulator for the SC 61860; if that
    helps you in any way with your argument please let me know.

    The argument is that even such an apparently simple processor was not as 'primitive' as you seemed to think.


    But also at that time - early 80s when Spectrums etc were popular -
    there were some wonderful new 16/32-bit processors such as 68000,
    Z8000/0 and NS32032, of which only the first survived.

    I've had contact with a couple CPUs back these days; 6502 (6510),
    68000, 8080 (Z80), another Intel thing where I forgot the number,
    SC 61860, TMS 320 C25. And I read about (but not programmed) a
    couple more (the SPARC, one from National Semiconductors) where
    I forgot the model numbers.

    The 68000, specifically, is a great example for an inferior CPU
    architecture. (Your mileage obviously varies if you think it was
    even "wonderful".)

    OK, so what's wrong with it then? (It seemed to be adequate for that Atari!)


    CPU architectures that I found to be more interesting were SPARC,
    the National Semiconductor thing (NS 32016 maybe? nor sure), and
    the TMS DSP (where I spent quite some time with), for example.

    But that all was long ago and is meaningless today.

    I find I can learn a lot from how simple things were that long ago. The
    early 80s was the golden age for that, getting away from mainframes and
    complex OSes, to much more informal systems. Now it's worse than ever.

    It's interesting to still see advocates of inferior IT justifying
    bad paragons, though.

    So you have strong opinions about languages and machine architectures
    and IT (whatever that is exactly).

    I also have strong opinions about inferior languages like C and a few
    other things. They are not that welcome in a forum like this. But I am
    at least in the same field: I code at the lower level and also develop a parallel systems language.

    The question is, what are /you/ doing here with all your lofty ideals
    and sneering at everyone who isn't an academic or a 'professional'? I'm surprised you would even deign to look at a language like C.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Lurndal@21:1/5 to David Brown on Thu Mar 27 14:09:17 2025
    David Brown <[email protected]> writes:
    On 27/03/2025 02:33, bart wrote:
    On 27/03/2025 01:10, Waldek Hebisch wrote:
    bart <[email protected]> wrote:
    On 26/03/2025 18:09, Janis Papanagnou wrote:

    , primitive CPU architectures,

    8-bit architectures were fine, just a bit short of registers and with
    limitation instruction sets. But that is to be expected with only 27,000 >>>> transistors on a chip or whatever it was for Z80.

    All sources that I found say that Z80 is about 8000 transistors.
    You probably took number from 8086 which was climed to have 27000
    transitors.

    OK, then with 8000 it makes the capabilities even more remarkable.
    Current processors have billions of transistors.


    Most of the bulk of current processors are arrays or repetitions -
    caches, arrays of registers, etc. The "interesting" bits are orders of >magnitude smaller than the chip as a whole.

    But I am always impressed by how much older designs managed to do with
    so few transistors - even if Wikipedia says 8500 transistors rather than >8000, and even though the logic families of such systems used fewer >transistors per gate than modern CMOS.

    This diagram of the 6502 shows the relative simplicity of
    the design.

    https://www.weihenstephan.org/~michaste/pagetable/6502/6502.jpg

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Lurndal@21:1/5 to bart on Thu Mar 27 13:51:34 2025
    bart <[email protected]> writes:
    On 26/03/2025 23:51, Scott Lurndal wrote:
    bart <[email protected]> writes:
    On 26/03/2025 18:09, Janis Papanagnou wrote:

    8-bit architectures were fine, just a bit short of registers and with
    limitation instruction sets. But that is to be expected with only 27,000 >>> transistors on a chip or whatever it was for Z80.

    (BTW, have a go at emulating such a processor in sofware; tell me in 3
    months how you got on.)

    Emulating processors in software is my day job. It's gone
    quite well; the count is up to 8 or nine at this point,
    including mainframe, cortex-M and ARMv8. The last one
    is described by about 20,000 pages of documentation,
    so emulation isn't simple.



    This my point. I've seen a Z80 emulator in C which was 4000 lines of
    tight code, and that is for something considered simple.

    (I can't remember if it was emulated at the granularity of clock cycles
    or coarser. My own attempt worked an instruction at time, but I got up
    to 12 opcodes before it was put aside, for other reasons.)

    There is a spectrum of granularity for differing requirements. The
    emulation can be as fine as cycle-by-cycle (e.g. verilog or very
    expensive hardware emulators based on thousands of FPGAs), timing-accurate,
    or as coarse as functional (i.e. only software visible behavior is modeled).

    The driving characteristic being performance. Booting an operating
    system on a cycle-accurate model may take days or weeks, versus a few
    minutes on a good functional model.

    The multimillion SLOC project I work on is primarily functional,
    while remaining sufficient to act as a golden model for RTL development.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Lurndal@21:1/5 to Waldek Hebisch on Thu Mar 27 14:07:18 2025
    [email protected] (Waldek Hebisch) writes:
    bart <[email protected]> wrote:
    On 26/03/2025 18:09, Janis Papanagnou wrote:

    , primitive CPU architectures,

    8-bit architectures were fine, just a bit short of registers and with
    limitation instruction sets. But that is to be expected with only 27,000
    transistors on a chip or whatever it was for Z80.

    All sources that I found say that Z80 is about 8000 transistors.
    You probably took number from 8086 which was climed to have 27000
    transitors.

    Z80 (like earlier 8080) in "general" instructions required
    accumulator as one of arguments, that severly limited utility
    of registers.

    (BTW, have a go at emulating such a processor in sofware; tell me in 3
    months how you got on.)

    Lone processor is not very interesting. I do not think coding
    simple emulator would take a lot of time. Z80 instruction set
    is a bit bulky, due to prefixed instructions, but decode could
    be done quite naively using 5 tables with 256 positions each
    (or a bit smarter using 3 tables). One needs hundreds of
    routines to implement all instructions, but large part is reasonably
    regular, so could be mechanically generated from small number
    of templates. Code implementing less regular instructions
    would take some time to write, but 3 months look like quite
    generous estimate.

    As an example, a Burroughs mainframe emulator (fully supporting a
    large set of device models, sufficient to boot and run
    the operating system, compilers and standard applications)

    SLOC Directory SLOC-by-Language (Sorted)
    18670 utilities cpp=16393,ansic=1943,sh=334
    14217 io cpp=14217
    12093 processor cpp=12093
    8054 common cpp=8054
    4513 include cpp=3521,ansic=992
    2675 mp cpp=2675
    1566 data cobol=1440,tcl=126
    678 notes ansic=456,cpp=222
    228 tests ansic=227,sh=1
    156 top_dir cpp=156
    89 pkg sh=89
    0 docs (none)
    0 lib (none)
    0 tapes (none)


    Totals grouped by language (dominant language first):
    cpp: 57331 (91.09%)
    ansic: 3618 (5.75%)
    cobol: 1440 (2.29%)
    sh: 424 (0.67%)
    tcl: 126 (0.20%)




    Total Physical Source Lines of Code (SLOC) = 62,939
    Development Effort Estimate, Person-Years (Person-Months) = 15.48 (185.81)
    (Basic COCOMO model, Person-Months = 2.4 * (KSLOC**1.05))
    Schedule Estimate, Years (Months) = 1.52 (18.20)
    (Basic COCOMO model, Months = 2.5 * (person-months**0.38))
    Estimated Average Number of Developers (Effort/Schedule) = 10.21
    Total Estimated Cost to Develop = $ 2,091,739

    The actual emulator is in the io, processor, common, mp and include directories, the rest are tests or utilites for accessing magnetic
    tape images.

    The utilities include a block-mode Unisys T-27 terminal emulator (X11-based), two external data communications processor models, an RJE client utility and
    a cross-assembler.

    Leaving aside the estimated cost, I wrote it over a 6 month period
    after my first retirement. Granted, I was part of the team that
    developed the operating system for the updated architecture in the
    early 80s so I was intimately familiar with the entire architecture.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Janis Papanagnou on Thu Mar 27 15:04:57 2025
    On 27/03/2025 03:24, Janis Papanagnou wrote:
    On 27.03.2025 00:21, bart wrote:
    On 26/03/2025 18:09, Janis Papanagnou wrote:
    [...]


    I had no interest whatsover in operating systems. I did fine without one
    to start with, while CP/M (our rip-off of it) and DOS provided a file
    system and a way to launch programs; what else was there?

    languages like BASIC

    What language would you have advocated that could fit into a few KB, and
    that could run without a proper file system?

    The first that comes to mind was (for example) Pascal. It actually
    became available on several platforms. But it was not comparable
    to the omnipresent [lousy] BASIC that was inherent part of the OS
    in the ROM. (Well, or on a 8" floppy; e.g. in case of the Olivetti
    P6060.) There were other languages available; someone (maybe David)
    mentioned some upthread. Myself I bought a Simula compiler for my
    Atari ST. Simula is a powerful and comparably huge language, so your
    "few KB" excuse is not convincing.


    Many of the BASIC's on home computers were quite sophisticated - the BBC
    Micro (and later Archimedes) versions were famously advanced. Of course versions for things like the ZX80 - with 4 KB rom, and 1 KB ram (for
    screen memory, OS data, interpreter data, BASIC program, and BASIC data)
    were very limited.

    Pascal would have been hopeless on such systems. A compiled - or even byte-compiled (such as P-code) - language would be totally out of the
    question. A minimal Pascal implementation, such as existed for the BBC
    Micros and the ZX Spectrum, needed more in the range of 16 K rom /
    program and the same again of ram for source code, compiled /
    byte-compiled code, and program data.

    Remember, these systems did not have the resources you are talking
    about. The Atari ST was a monster compared to the popular home
    computers - 512 KB ram on the cheapest version, compared to more typical
    16 KB - 32 KB ranges. And it had a price to match, way out of reach of
    most home users.

    There are only two high level languages that have had any kind of
    success on such small systems - BASIC (or variants thereof, as there is
    no single standard "BASIC" language) and Forth.

    I think it was a professor at the university who meant that anyone
    who started with BASIC would be incapable of ever doing real CS.

    It was Dijkstra who said that. As usual, his comments were
    entertainingly exaggerated when made, and then taken out of context.

    This is of course nonsense! (And such arguments say more about the
    person formulating such non-arguments. - I recall a similar nonsense mentioned here by someone some months ago concerning OO and Simula
    and all other OO languages that took their OO concepts from Simula.)

    The point with BASIC is that if all you know is BASIC without knowing anything else you probably won't be able to understand the problems
    with it. I know you have a broader language repertoire, so I presume
    you know BASIC's deficiencies (or at least the deficiencies of those
    BASIC dialects that were around until around 1980).


    That was not Dijstra's point at all - it was the "trial and error"
    attitude to programming that you got from interpreted languages that he disliked. However, your point /is/ still valid - people who are only
    familiar with one programming language will have difficulty
    understanding its limitations or seeing the benefits of other languages,
    and tend to look at problems from a perspective limited by their own
    language.



    But also at that time - early 80s when Spectrums etc were popular -
    there were some wonderful new 16/32-bit processors such as 68000,
    Z8000/0 and NS32032, of which only the first survived.

    I've had contact with a couple CPUs back these days; 6502 (6510),
    68000, 8080 (Z80), another Intel thing where I forgot the number,
    SC 61860, TMS 320 C25. And I read about (but not programmed) a
    couple more (the SPARC, one from National Semiconductors) where
    I forgot the model numbers.

    The 68000, specifically, is a great example for an inferior CPU
    architecture. (Your mileage obviously varies if you think it was
    even "wonderful".)

    What do you think is "inferior" about the 68k architecture? At the
    time, the main business-world competitor, the 8086, was 8-bit with some
    16-bit features, and built with a view towards backwards compatibility
    rather than the future. The 68k had a 32-bit ISA with a 16-bit ALU -
    looking towards the 32-bit future while accepting that it had to be cost-effective.


    CPU architectures that I found to be more interesting were SPARC,
    the National Semiconductor thing (NS 32016 maybe? nor sure), and
    the TMS DSP (where I spent quite some time with), for example.


    SPARC certainly had some interesting features and concepts. (I never
    used it, but read a fair bit about it, and briefly used the Altera NIOS
    soft core that had some similarities.) The TMS320C24x DSPs I used were
    utterly horrible.

    But that all was long ago and is meaningless today. Personally
    I've occasionally programmed in assembler around 1980-1990, and
    you can imagine that I don't care much about that topic anymore.


    Their architecture is not that different from current machines.

    That would be bad news. And I have my doubts that this is true.
    (But as said, I don't care much anymore.)

    It's interesting to still see advocates of inferior IT justifying
    bad paragons, though. The situation has not changed. - Have fun!


    There are plenty of things I find disappointingly similar between most
    cpu architectures. It's hard for novel ideas to break through. Part of
    the blame for that, of course, is the success of C - a cpu design tends
    to be successful if and only if it is efficient for the C model of
    programming, other than for a few specialised areas (like graphics work
    or some highly SIMD-friendly algorithms). I'd like to see cpu designs
    with multiple stacks, multiple register banks for fast task switching,
    hardware support for multi-tasking, locks, atomic accesses,
    transactional memory, CSP-style message passing, memory allocation,
    buffer management, etc. There are countless bits and pieces that could
    make processors much faster and much more secure for a lot of work.

    The XMOS devices are one of the few architectures to come up with really
    new ideas and have some market success.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Lurndal@21:1/5 to bart on Thu Mar 27 14:14:38 2025
    bart <[email protected]> writes:
    On 27/03/2025 02:24, Janis Papanagnou wrote:
    On 27.03.2025 00:21, bart wrote:

    Some commercial products were low quality because they had to be done
    for a price. I think the ZX80 was £100, at a time when my company
    produced a business computer, also Z80-based, for £1300. (One client
    used one of our machines to more easily develop Spectrum programs.)

    I'm speaking about all that inferior systems that had a comparably
    high price without a matching quality. And about years and years
    passing without vendors of such products changing that situation.

    I guess ... you're talking about either the IBM PC hardware or MS
    software, or both? (Although PCs weren't expensive.)

    A PC/XT with 10MB disk in 1984 cost $10,000. That's about
    $31,000 in today's dollar. You could by a new car for less.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to bart on Fri Mar 28 02:05:57 2025
    On 27.03.2025 12:14, bart wrote:
    On 27/03/2025 02:24, Janis Papanagnou wrote:

    I'm speaking about all that inferior systems that had a comparably
    high price without a matching quality. And about years and years
    passing without vendors of such products changing that situation.

    I guess ... you're talking about either the IBM PC hardware or MS
    software, or both? (Although PCs weren't expensive.)

    Here PCs were expensive; a friend of mine bought one for ~8000 DM,
    IIRC, (compare that to 2000 DM for a Commodire PET; even the first
    Apple was expensive but not that expensive as the IBM PC).

    [ memory demands ]

    Also, by a 'few KB' I meant single figures, like 2-8KB for the code,
    plus RAM. That Atari seems to have a bit more available.

    Yes, I was comparing it with the "standard" IBM PC (which had 640 kB)
    and the Atari ST had first (I think) 500 kB (mine, a later version,
    had 1 MB).

    You are right to point out that some BASIC interpreters were provided
    in a ROM. I don't recall the ROM sizes of all the PCs I used back then,
    but I remember the Sharp PC 1401 pocket calculator that had 40 kB ROM
    for the OS with BASIC.


    I've never used Basic. But it is one language I admire, even if it is
    crude:

    10 let a=0
    20 let a=a+1
    30 if a<1000000 then 20
    40 print a

    Okay, you "admire" BASIC (and you found the 68000 CPU "wonderful");
    that tells a lot about your background and expertise.



    In the past I had implemented an emulator for the SC 61860; if that
    helps you in any way with your argument please let me know.

    The argument is that even such an apparently simple processor was not as 'primitive' as you seemed to think.

    You certainly have no clue at all to guess what I _think_, given that
    you don't even understand what I am _saying_.

    I seem to recall that elsewhere in the thread you were mentioning the
    number of transistors - I understood that as if you take that being
    an indication for a complexity, non-triviality, not being "primitive".
    If that is a correct interpretation of your argument I'd like to
    suggest considering that the number of molecules (necessary to build
    up these ~8000 transistors) is even larger.

    Try for a moment to understand that the quality of a CPU architecture is
    not (for assembler programmers) something measured in transistors.

    There's huge differences in processor _architectures_, though...



    But also at that time - early 80s when Spectrums etc were popular -
    there were some wonderful new 16/32-bit processors such as 68000,
    Z8000/0 and NS32032, of which only the first survived.

    If you mention 68000 and NS32032 playing in the same architectural
    league then it's hard for me to consider you a serious discussion
    partner.


    I've had contact with a couple CPUs back these days; 6502 (6510),
    68000, 8080 (Z80), another Intel thing where I forgot the number,
    SC 61860, TMS 320 C25. And I read about (but not programmed) a
    couple more (the SPARC, one from National Semiconductors) where
    I forgot the model numbers.

    The 68000, specifically, is a great example for an inferior CPU
    architecture. (Your mileage obviously varies if you think it was
    even "wonderful".)

    OK, so what's wrong with it then? (It seemed to be adequate for that
    Atari!)

    It was chosen for the Atari. So what? The IBM PCs worked with Intel's
    x86 series. So what? - The quality of processor architectures seem
    not directly correlated to what's been used; obviously other marketing principles dominated. - I'm not up to date with recent CPU evolutions,
    but I think the sophisticated NS 32016/32 died and the 68000 survived;
    from a CPU architecture perspective I consider that a crazy fact. (But
    also not surprising, because the market is often driven by price and
    politics and not necessarily by superior technology.)

    I won't discuss the details of CPU architectures with you here; but
    if you're really interested I suggest to inspect those two processors
    more thoroughly - there's papers and documents available online.

    [...]

    But that all was long ago and is meaningless today.

    I find I can learn a lot from how simple things were that long ago. The
    early 80s was the golden age for that, getting away from mainframes and complex OSes, to much more informal systems. Now it's worse than ever.

    I'm not able two bring your two sentences together. - What is worse?

    Do you mean to qualify it as: mainframe era: bad, 1980's era: good,
    nowadays: bad again. - Is that what you wanted to say?

    The biggest problems with mainframes might be their "costs"; in every
    sense (physical size, price, energy, capacity, speed), if compared to contemporary systems. There's certainly progress, necessary progress.

    (I worked in telecom contexts where mainframes had been used and we
    supported the transition to Unix systems. The original system filled
    a sports hall, literally, and the result of the reorganization was a
    couple machines in a corner of that hall.)

    But there were also advantages compared to some later systems; I tried
    (for example) to get access to the main/core memory on a CDC 175 - to
    no avail, of course. That attack was no problem on the PC systems that
    I used in the 1980s.

    What I'd want to (positively) say is that the "good bits" of old era
    should not get forgotten! - Often (it seems) they are, sadly.


    It's interesting to still see advocates of inferior IT justifying
    bad paragons, though.

    So you have strong opinions about languages and machine architectures
    and IT (whatever that is exactly).

    Lets say I have some background to separate the wheat from the chaff.

    ("IT" means "information technology"; a common superordinate term to
    not enumerate all the subareas separately. - I'm sure you know that.)


    I also have strong opinions about inferior languages like C and a few
    other things. They are not that welcome in a forum like this. But I am
    at least in the same field: I code at the lower level and also develop a parallel systems language.

    So what? I see nothing wrong with your stance here.

    But, unless I'm in excitement, I wouldn't call "C" "inferior" per se.
    There's IMO good reasons to use it in many places and circumstances
    (I also use it; and, just for the record, more often than Simula or
    some other languages that I mentioned to have commendable properties).


    The question is, what are /you/ doing here with all your lofty ideals
    and sneering at everyone who isn't an academic or a 'professional'? I'm surprised you would even deign to look at a language like C.

    My "lofty ideals", as you call it, are the things I strive to. This is
    maybe contrary to some other folks; I don't chime in to any advertised
    hype.

    WRT academic or professionalism; actually I generally don't know (or
    need to know) whether someone has an academical background, or solid
    practical experience, or has a well built up self-educated knowledge.
    (But usually you can become quite sure about anyone's background if
    you follow what discussion partners say.)

    In my experience it's not the best for IT/CS professionals to reside
    in an (academic) ivory tower, it's also not the best to not have some
    academic background, and it's really bad if there's just IT-religious
    fanatics around.

    I try to share my knowledge and discuss topics to learn new things.
    But at some point I can also get harsh if someone obviously lacking
    even the basic CS knowledge and IT experience, and is yet constantly
    insisting and re-iterating "stupid positions".

    WRT me using "C"; I've answered that already above in this post. We
    have the choice and (usually) the freedom to make use of it. - That
    doesn't prevent me from pointing out the "good bits" of alternatives.
    After all, _I_'d like things to get better. (Not an easy position.)

    My impression is that the prevalent age here is maybe 55-75 (or so);
    it would be bad if that concentrated experience gets lost.

    Janis

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to David Brown on Fri Mar 28 02:59:42 2025
    On 27.03.2025 15:04, David Brown wrote:
    On 27/03/2025 03:24, Janis Papanagnou wrote:
    On 27.03.2025 00:21, bart wrote:
    On 26/03/2025 18:09, Janis Papanagnou wrote:
    [...]

    Many of the BASIC's on home computers were quite sophisticated - the BBC Micro (and later Archimedes) versions were famously advanced. Of course versions for things like the ZX80 - with 4 KB rom, and 1 KB ram (for
    screen memory, OS data, interpreter data, BASIC program, and BASIC data)
    were very limited.

    I've programmed with a couple BASIC dialects back these days; besides
    the mainframe thing; Olivetti, Wang, Commodore, Sharp. As seen from a
    big picture, they all were basically the same crude thing. Only few
    years later; Algol 68, Pascal, Simula, C, Fortran (half a step back),
    C++, Java, and so on. Each of these languages was a progress compared
    to BASIC (even Fortran, that I disliked as well).


    Pascal would have been hopeless on such systems. A compiled - or even byte-compiled (such as P-code) - language would be totally out of the question. A minimal Pascal implementation, such as existed for the BBC Micros and the ZX Spectrum, needed more in the range of 16 K rom /
    program and the same again of ram for source code, compiled /
    byte-compiled code, and program data.

    I seem to recall that there were Pascal compilers available for a
    couple of those old PC systems.

    Anyway, I perceived the use of anything else than BASIC a challenge
    on such systems; it seemed they were designed to just provide BASIC.


    Remember, these systems did not have the resources you are talking
    about. The Atari ST was a monster compared to the popular home
    computers - 512 KB ram on the cheapest version, compared to more typical
    16 KB - 32 KB ranges. And it had a price to match, way out of reach of
    most home users.

    Yes. I compared it to the 640 kB of the ("quasi-standard") IBM PC.

    [...]

    I think it was a professor at the university who meant that anyone
    who started with BASIC would be incapable of ever doing real CS.

    It was Dijkstra who said that. As usual, his comments were
    entertainingly exaggerated when made, and then taken out of context.

    No, I meant another professor whose lectures I attended at our
    University. - It could of course be that he was just citing Dijkstra,
    but he didn't sound as if he did; it was certainly his strong opinion.


    [...]

    The point with BASIC is that if all you know is BASIC without knowing
    anything else you probably won't be able to understand the problems
    with it. I know you have a broader language repertoire, so I presume
    you know BASIC's deficiencies (or at least the deficiencies of those
    BASIC dialects that were around until around 1980).

    That was not Dijstra's point at all - it was the "trial and error"
    attitude to programming that you got from interpreted languages that he disliked.

    As said, I wasn't attributing that to Dijkstra but a local professor.
    And the argument was not about interpreters but more about lacking
    structuring features, hard coded line numbers, gotos, and a lot more
    the like.

    However, your point /is/ still valid - people who are only
    familiar with one programming language will have difficulty
    understanding its limitations or seeing the benefits of other languages,
    and tend to look at problems from a perspective limited by their own language.

    Yes, this is actually a platitude (and I was reluctant to mention it
    in the first place), but a general phenomenon, not restricted to IT.

    [...]

    The 68000, specifically, is a great example for an inferior CPU
    architecture. (Your mileage obviously varies if you think it was
    even "wonderful".)

    What do you think is "inferior" about the 68k architecture? At the
    time, the main business-world competitor, the 8086, was 8-bit with some 16-bit features, and built with a view towards backwards compatibility
    rather than the future. The 68k had a 32-bit ISA with a 16-bit ALU -
    looking towards the 32-bit future while accepting that it had to be cost-effective.

    I wouldn't compare it to the x86 series - my opinion on that is not
    much different to the 68k. Have a look at the NS 32016/32 processors
    (around 1979/1984). If you know the 68k but not the NS 32xxx you may
    want to have a look into, e.g., "1986_National_NS32000_Databook.pdf"
    (that you will find online).

    [...]

    SPARC certainly had some interesting features and concepts. (I never
    used it, but read a fair bit about it, and briefly used the Altera NIOS
    soft core that had some similarities.) The TMS320C24x DSPs I used were utterly horrible.

    I used it for the implementation of a channel encoding system, a
    typical "signal processing" application; it was great. Imagining
    I would have to use any other processor I already knew these days
    (65xx, 68k, x86)... - that would have been really annoying.

    [...]

    There are plenty of things I find disappointingly similar between most
    cpu architectures. It's hard for novel ideas to break through.

    But there were ideas! But not only the interesting ideas (like the
    frame shift on the stack [SPARC]; one detail I memorized) should have
    been considered, also (e.g.) support of addressing data structures as
    known from (back then) contemporary languages; the NS 32xxx supported
    that for example. And these ideas were already old; see for example Seegmüller: Einführung in die Systemprogrammierung (1974)
    (And I would be surprised if he'd been the first who described that.)

    But yes, the "break through" factors (e.g. the market factors) were
    an issue.

    Part of
    the blame for that, of course, is the success of C - a cpu design tends
    to be successful if and only if it is efficient for the C model of programming, other than for a few specialised areas (like graphics work
    or some highly SIMD-friendly algorithms). I'd like to see cpu designs
    with multiple stacks, multiple register banks for fast task switching, hardware support for multi-tasking, locks, atomic accesses,
    transactional memory, CSP-style message passing, memory allocation,
    buffer management, etc. There are countless bits and pieces that could
    make processors much faster and much more secure for a lot of work.

    The XMOS devices are one of the few architectures to come up with really
    new ideas and have some market success.

    For a long time now I'm not up to date any more with CPUs and their architectural differences.

    Janis

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Janis Papanagnou on Fri Mar 28 10:13:41 2025
    On 28/03/2025 02:05, Janis Papanagnou wrote:
    On 27.03.2025 12:14, bart wrote:
    On 27/03/2025 02:24, Janis Papanagnou wrote:


    Also, by a 'few KB' I meant single figures, like 2-8KB for the code,
    plus RAM. That Atari seems to have a bit more available.

    Yes, I was comparing it with the "standard" IBM PC (which had 640 kB)
    and the Atari ST had first (I think) 500 kB (mine, a later version,
    had 1 MB).

    So you are talking about a completely different world. You are
    criticising machines of the class of ZX Spectrum, with 8-bit processors
    and 4KB - 32KB rom and ram, for using BASIC - and justifying it by
    telling us what you used on a a system more than an order of magnitude
    bigger?

    As a few other points relating to things you have been talking about -
    the original IBM PC had 32 KB rom with BASIC, and typical systems had 64
    KB ram, not 640 KB. (Of course later models and clones had more ram.)

    And the Atari ST came with BASIC, and had a 68000 processor. It is odd
    that you had that machine (which, alongside the Commodore Amiga, was
    widely and rightly considered fantastic machine, hardware and software),
    while also ridiculing two of its most important features.

    You are right to point out that some BASIC interpreters were provided
    in a ROM. I don't recall the ROM sizes of all the PCs I used back then,
    but I remember the Sharp PC 1401 pocket calculator that had 40 kB ROM
    for the OS with BASIC.


    I've never used Basic. But it is one language I admire, even if it is
    crude:

    10 let a=0
    20 let a=a+1
    30 if a<1000000 then 20
    40 print a

    Okay, you "admire" BASIC (and you found the 68000 CPU "wonderful");
    that tells a lot about your background and expertise.


    BASIC was an excellent language for the time, and for the resources
    available on these small systems. It's a poor choice for larger
    programs, but that's not an issue for small systems.

    You are the first person I have heard say that the 68000 was /not/ a
    great design - both in terms of the ISA and the implementation.


    Try for a moment to understand that the quality of a CPU architecture is
    not (for assembler programmers) something measured in transistors.

    There's huge differences in processor _architectures_, though...


    When you talk in general about a processor design, it includes /both/
    the hardware design (for which transistor count is a factor) /and/ the
    ISA, as seen by programmers. But it is fine, and often helpful, to
    separate these aspects.

    So is it the ISA of the m68k that you don't like? Given the massive
    popularity of the architecture (you can /still/ buy 68000 chips, and
    /new/ devices based on the m68k ISA were developed and released until
    about 10 years ago), it seems a minority opinion.

    I've yet to see an ISA that I think is "perfect", and popularity of use
    does not imply technical quality, but the m68k stands out as
    extraordinarily good, especially compared to other ISA's of the time.



    But also at that time - early 80s when Spectrums etc were popular -
    there were some wonderful new 16/32-bit processors such as 68000,
    Z8000/0 and NS32032, of which only the first survived.

    If you mention 68000 and NS32032 playing in the same architectural
    league then it's hard for me to consider you a serious discussion
    partner.


    Indeed. After all, the 68k was one of the most successful ISAs ever,
    and the x86 "won" for economic reasons, not technical reasons. The
    NS32000, on the other hand, is known only to a few nerds. I expect a
    large proportion of people in this newsgroup have had computers or
    devices with an 68k chip in them - Unix workstations, Apple Macs, games consoles, Wifi routers or network switches, Palm PDAs, calculators,
    printers - they were everywhere.

    To be fair on the NS32000, I don't think the ISA was the problem for
    the devices. After all, the ISA was very similar to that of the 68k,
    albeit a bit more limited. Both were multi-register orthogonal CISC (as distinct from accumulator and specialised register CISC, like the x86)
    with 8 32-bit general registers and a range of addressing modes
    including direct memory operations. Both had linear addressing spaces
    and floating point coprocessors.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Janis Papanagnou on Fri Mar 28 11:03:10 2025
    On 28/03/2025 02:59, Janis Papanagnou wrote:
    On 27.03.2025 15:04, David Brown wrote:
    On 27/03/2025 03:24, Janis Papanagnou wrote:
    On 27.03.2025 00:21, bart wrote:
    On 26/03/2025 18:09, Janis Papanagnou wrote:
    [...]

    Many of the BASIC's on home computers were quite sophisticated - the BBC
    Micro (and later Archimedes) versions were famously advanced. Of course
    versions for things like the ZX80 - with 4 KB rom, and 1 KB ram (for
    screen memory, OS data, interpreter data, BASIC program, and BASIC data)
    were very limited.

    I've programmed with a couple BASIC dialects back these days; besides
    the mainframe thing; Olivetti, Wang, Commodore, Sharp. As seen from a
    big picture, they all were basically the same crude thing. Only few
    years later; Algol 68, Pascal, Simula, C, Fortran (half a step back),
    C++, Java, and so on. Each of these languages was a progress compared
    to BASIC (even Fortran, that I disliked as well).


    Yes, each of these had advantages over BASIC and were better suited to
    many uses. So what? They are different kinds of languages. BASIC was
    useful in ways that none of these others were remotely suitable. You
    don't teach schoolkids programming with Fortran any more than you write
    linear algebra systems in BASIC. You don't put a C compiler in an
    interactive computer with 8 KB rom and ram any more than you write an OS
    in BASIC.

    Yes, BASIC was crude and limited - /all/ programming languages of that
    era were crude and limited by today's standards, because /all/ computers
    were crude and limited. BASIC was perhaps more crude and limited than
    others of the time, because it was used primarily on computers that were
    more crude and limited.

    And as computers got more powerful, so did the BASICs that ran on them -
    the BASIC on a BBC Micro was massively more powerful and structured than
    the BASIC on a ZX81.


    Pascal would have been hopeless on such systems. A compiled - or even
    byte-compiled (such as P-code) - language would be totally out of the
    question. A minimal Pascal implementation, such as existed for the BBC
    Micros and the ZX Spectrum, needed more in the range of 16 K rom /
    program and the same again of ram for source code, compiled /
    byte-compiled code, and program data.

    I seem to recall that there were Pascal compilers available for a
    couple of those old PC systems.

    Yes, as I said. I used a couple of them (though only briefly).


    Anyway, I perceived the use of anything else than BASIC a challenge
    on such systems; it seemed they were designed to just provide BASIC.

    No other language came close to BASIC as a language that could be
    implemented in very small code space, a very small ram space, and was
    easy to learn for beginners. The systems were not designed to provide
    BASIC - they were designed to be cheap and easy to use, and that meant
    putting BASIC in a rom rather than than having large and expensive ram
    or /very/ expensive disk storage.



    [...]

    I think it was a professor at the university who meant that anyone
    who started with BASIC would be incapable of ever doing real CS.

    It was Dijkstra who said that. As usual, his comments were
    entertainingly exaggerated when made, and then taken out of context.

    No, I meant another professor whose lectures I attended at our
    University. - It could of course be that he was just citing Dijkstra,
    but he didn't sound as if he did; it was certainly his strong opinion.


    You can be very confident that he was citing, or paraphrasing, Dijkstra.



    [...]

    The point with BASIC is that if all you know is BASIC without knowing
    anything else you probably won't be able to understand the problems
    with it. I know you have a broader language repertoire, so I presume
    you know BASIC's deficiencies (or at least the deficiencies of those
    BASIC dialects that were around until around 1980).

    That was not Dijstra's point at all - it was the "trial and error"
    attitude to programming that you got from interpreted languages that he
    disliked.

    As said, I wasn't attributing that to Dijkstra but a local professor.
    And the argument was not about interpreters but more about lacking structuring features, hard coded line numbers, gotos, and a lot more
    the like.

    That is like criticising the Romans for using chariots instead of cars.
    It is just prejudice and ignorance.

    Later languages were able to have better structuring, and didn't need
    line numbers, because the systems they were designed for were faster,
    and had text editors.

    And later BASICs had more structure, and dispensed with the need for
    line numbers. With BBC BASIC, for example, you very rarely referred to
    line numbers at all, and code was well structured (albeit limited to a
    single file).


    The 68000, specifically, is a great example for an inferior CPU
    architecture. (Your mileage obviously varies if you think it was
    even "wonderful".)

    What do you think is "inferior" about the 68k architecture? At the
    time, the main business-world competitor, the 8086, was 8-bit with some
    16-bit features, and built with a view towards backwards compatibility
    rather than the future. The 68k had a 32-bit ISA with a 16-bit ALU -
    looking towards the 32-bit future while accepting that it had to be
    cost-effective.

    I wouldn't compare it to the x86 series - my opinion on that is not
    much different to the 68k.

    Is that based on your ignorance of x86 or ignorance of 68k? I doubt if
    many people think the x86 has ever been a good architecture, but the 68k
    is generally viewed very differently.

    Have a look at the NS 32016/32 processors
    (around 1979/1984). If you know the 68k but not the NS 32xxx you may
    want to have a look into, e.g., "1986_National_NS32000_Databook.pdf"
    (that you will find online).

    I had a look, to augment the little I knew of the NS30000 ISA. It is
    very similar to the 68k in many ways. I think you'd have to dig into
    fine detail to see real differences.

    So, again, what do /you/ think is "inferior" about the 68k architecture?
    Either I'm missing something, or you are missing something.


    [...]

    SPARC certainly had some interesting features and concepts. (I never
    used it, but read a fair bit about it, and briefly used the Altera NIOS
    soft core that had some similarities.) The TMS320C24x DSPs I used were
    utterly horrible.

    I used it for the implementation of a channel encoding system, a
    typical "signal processing" application; it was great. Imagining
    I would have to use any other processor I already knew these days
    (65xx, 68k, x86)... - that would have been really annoying.


    There's no doubt that the TMS320 devices can be used to do many types of DSP-style operations very efficiently. That's not the point - that does
    not stop it from being horrible to work with. (It is also fair to
    characterise it as an "interesting" architecture - that is also not at
    odds with being horrible to use.)

    [...]

    There are plenty of things I find disappointingly similar between most
    cpu architectures. It's hard for novel ideas to break through.

    But there were ideas! But not only the interesting ideas (like the
    frame shift on the stack [SPARC]; one detail I memorized) should have
    been considered,

    Yes, I like the register window idea of the SPARC. But it is hard to
    make it scalable - it would be significantly more flexible if the
    register window was actually a memory window with a specialised cache setup.

    also (e.g.) support of addressing data structures as
    known from (back then) contemporary languages; the NS 32xxx supported
    that for example.

    Can you give an example?

    There was, back then, a tendency for CISC processors to have a lot of complicated addressing modes to access certain data structures. It was
    later shown that these were inefficient and limited, and it was better
    to have faster register calculations and do the addressing calculations
    in software - for the 68030 and 68040, compilers ignored the complicated addressing modes and did the scaling and indirections in software
    because it was faster. Later implementations of the 68k ISA, like the Coldfire, dropped the messiest address modes entirely. Of course, the
    NS32000 didn't have the address registers of the 68k, so the balance
    might have been different there.

    And these ideas were already old; see for example
    Seegmüller: Einführung in die Systemprogrammierung (1974)
    (And I would be surprised if he'd been the first who described that.)

    But yes, the "break through" factors (e.g. the market factors) were
    an issue.

    Part of
    the blame for that, of course, is the success of C - a cpu design tends
    to be successful if and only if it is efficient for the C model of
    programming, other than for a few specialised areas (like graphics work
    or some highly SIMD-friendly algorithms). I'd like to see cpu designs
    with multiple stacks, multiple register banks for fast task switching,
    hardware support for multi-tasking, locks, atomic accesses,
    transactional memory, CSP-style message passing, memory allocation,
    buffer management, etc. There are countless bits and pieces that could
    make processors much faster and much more secure for a lot of work.

    The XMOS devices are one of the few architectures to come up with really
    new ideas and have some market success.

    For a long time now I'm not up to date any more with CPUs and their architectural differences.


    I can recommend reading about the XMOS. (It's for embedded use, not a general-purpose processor.)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to David Brown on Fri Mar 28 11:22:58 2025
    On 28.03.2025 10:13, David Brown wrote:
    [...]

    David, you are not writing anything here that wasn't already addressed
    by me or others before, so we can skip that. (And possibly agree to
    disagree.)

    [ NS32032 ]

    Indeed. After all, the 68k was one of the most successful ISAs ever,
    and the x86 "won" for economic reasons, not technical reasons. The
    NS32000, on the other hand, is known only to a few nerds. [...]

    Given that it did not "survive" in the first place I was astonished
    that when I spoke with IT professionals in the past it was mentioned
    as outstanding (compared to a lot of other alternatives these days).
    I was also astonished that bart had it in his short-list. So I'm not
    inclined to accept your words that it's "known only to a few nerds".
    (It's not necessarily the best technologies that "survive".) YMMV.

    Janis

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Michael S@21:1/5 to David Brown on Fri Mar 28 14:01:13 2025
    On Fri, 28 Mar 2025 11:03:10 +0100
    David Brown <[email protected]> wrote:

    I used it for the implementation of a channel encoding system, a
    typical "signal processing" application; it was great. Imagining
    I would have to use any other processor I already knew these days
    (65xx, 68k, x86)... - that would have been really annoying.


    There's no doubt that the TMS320 devices can be used to do many types
    of DSP-style operations very efficiently. That's not the point -
    that does not stop it from being horrible to work with. (It is also
    fair to characterise it as an "interesting" architecture - that is
    also not at odds with being horrible to use.)


    C24->C28 is a side branch in a family of TI's fixed-point DSPs.
    The main trunk is TMS32010->20->21->C25->C50->C54-C55 (a.k.a. C5000).
    C24 and especially C28 got more of microcontroller features (and bigger
    address space in the latter) at cost of losing some of signal
    processing oriented features.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From bart@21:1/5 to Janis Papanagnou on Fri Mar 28 11:37:06 2025
    On 28/03/2025 10:22, Janis Papanagnou wrote:
    On 28.03.2025 10:13, David Brown wrote:
    [...]

    David, you are not writing anything here that wasn't already addressed
    by me or others before, so we can skip that. (And possibly agree to disagree.)

    [ NS32032 ]

    Indeed. After all, the 68k was one of the most successful ISAs ever,
    and the x86 "won" for economic reasons, not technical reasons. The
    NS32000, on the other hand, is known only to a few nerds. [...]

    Given that it did not "survive" in the first place I was astonished
    that when I spoke with IT professionals in the past it was mentioned
    as outstanding (compared to a lot of other alternatives these days).
    I was also astonished that bart had it in his short-list.

    You are astonished that I'd heard of it?

    Did I mention that I was a hardware engineer at that time?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From bart@21:1/5 to David Brown on Fri Mar 28 11:29:07 2025
    On 28/03/2025 10:03, David Brown wrote:
    On 28/03/2025 02:59, Janis Papanagnou wrote:

    Have a look at the NS 32016/32 processors
    (around 1979/1984). If you know the 68k but not the NS 32xxx you may
    want to have a look into, e.g., "1986_National_NS32000_Databook.pdf"
    (that you will find online).

    I had a look, to augment the little I knew of the NS30000 ISA.  It is
    very similar to the 68k in many ways.  I think you'd have to dig into
    fine detail to see real differences.

    So, again, what do /you/ think is "inferior" about the 68k architecture?
     Either I'm missing something, or you are missing something.

    I suspect the problem with the 68000 was that it was available to
    'ordinary' people. The NS device was more exclusive.

    Similar with BASIC.

    A one-off machine based on NS32032 and only running Simula would have
    been ideal!

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Michael S@21:1/5 to Janis Papanagnou on Fri Mar 28 14:32:30 2025
    On Fri, 28 Mar 2025 11:22:58 +0100
    Janis Papanagnou <[email protected]> wrote:

    On 28.03.2025 10:13, David Brown wrote:
    [...]

    David, you are not writing anything here that wasn't already addressed
    by me or others before, so we can skip that. (And possibly agree to disagree.)

    [ NS32032 ]

    Indeed. After all, the 68k was one of the most successful ISAs
    ever, and the x86 "won" for economic reasons, not technical
    reasons. The NS32000, on the other hand, is known only to a few
    nerds. [...]

    Given that it did not "survive" in the first place I was astonished
    that when I spoke with IT professionals in the past it was mentioned
    as outstanding (compared to a lot of other alternatives these days).
    I was also astonished that bart had it in his short-list. So I'm not
    inclined to accept your words that it's "known only to a few nerds".
    (It's not necessarily the best technologies that "survive".) YMMV.

    Janis


    I did a project with NS32K offspring somewhere around 1993-1994.
    At that time NS lost all ambitions of selling 32K into lucrative
    PC/workstation market. The chip in question was cheap "embedded
    microprocessor" that competed with Intel i960, AMD 29K and Moto 68300
    primarily on price. I did not make a wide research of available parts,
    back then it was not my job. But my educated guess would be that the
    part I used and which exact number I don't remember was one of the
    cheapest 32-bit embedded CPUs of the time and one of the slowest if not
    The Slowest. For us it didn't matter. What mattered was ability to
    address plenty of so called ARAM. (a DRAM sold for fraction of normal
    DRAM price because it had small number of defective cells, intended
    primarily for audio applications). Since performance didn't matter, I
    had no reasons to learn details of CPU architecture.
    It was a side project, most of my time I was doing other things. So I
    managed to complete a job without knowing much about NS32 ISA. And of
    course since then I forgot even a little that I had to know about it.

    Later on, on web, nearly all mentions of NS32K I encountered were in
    context of examples of extreme CISC. I.e. MUCH CISCier than x86,
    significantly CISCier than even such rather heavy CISCs as VAX and
    MC68020. Of course, not quite complicated as Intel iAPX 432. So, it
    seems, it is remembered, but not in a good way.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to bart on Fri Mar 28 12:46:20 2025
    On 28.03.2025 12:29, bart wrote:
    On 28/03/2025 10:03, David Brown wrote:
    On 28/03/2025 02:59, Janis Papanagnou wrote:

    Have a look at the NS 32016/32 processors
    (around 1979/1984). If you know the 68k but not the NS 32xxx you may
    want to have a look into, e.g., "1986_National_NS32000_Databook.pdf"
    (that you will find online).

    I had a look, to augment the little I knew of the NS30000 ISA. It is
    very similar to the 68k in many ways. I think you'd have to dig into
    fine detail to see real differences.

    So, again, what do /you/ think is "inferior" about the 68k
    architecture? Either I'm missing something, or you are missing
    something.

    I suspect the problem with the 68000 was that it was available to
    'ordinary' people.

    If that was so, that wouldn't be a problem, would it?

    The NS device was more exclusive.

    I can't tell; I never bought any processor [separately]. Was
    it significantly more expensive than the other CPUs? (That
    would at least explain its failure on the market.) Or was its
    market "failure" just the often observable effect of being a
    few cents more expensive and thus dismissed.


    Similar with BASIC.

    It was at least shipped with all the common popular systems.
    Other languages typically had to be obtained separately.


    A one-off machine based on NS32032 and only running Simula would have
    been ideal!

    The NS would probably have been fine for _any_ more progressive
    higher-level programming language.

    If folks would have learned Simula instead of BASIC it would
    have been a gain for the software evolution, for sure.

    Janis

    PS: I presume your post being meant sarcastic, but my answers
    are meant honest (and not relying on you being serious or not).

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to David Brown on Fri Mar 28 12:30:46 2025
    On 28.03.2025 11:03, David Brown wrote:
    On 28/03/2025 02:59, Janis Papanagnou wrote:

    Yes, BASIC was crude and limited - /all/ programming languages of that
    era were crude and limited by today's standards, because /all/ computers
    were crude and limited.

    No, that's just not true.

    BASIC was perhaps more crude and limited than
    others of the time, because it was used primarily on computers that were
    more crude and limited.

    Yes, that is partly true. But the language by itself is inferior;
    it was by design already so before it spread in contexts of home
    computers.


    [...]

    I think it was a professor at the university who meant that anyone
    who started with BASIC would be incapable of ever doing real CS.

    It was Dijkstra who said that. As usual, his comments were
    entertainingly exaggerated when made, and then taken out of context.

    No, I meant another professor whose lectures I attended at our
    University. - It could of course be that he was just citing Dijkstra,
    but he didn't sound as if he did; it was certainly his strong opinion.


    You can be very confident that he was citing, or paraphrasing, Dijkstra.

    Erm, no.

    You have said yourself what the focus of Dijkstra's statement was,
    and I said what the arguments of that local professor had been.
    It's unnecessary to make unfounded hypothesis just for the argument.
    Concerning BASIC, there's obviously criticism on various levels.


    As said, I wasn't attributing that to Dijkstra but a local professor.
    And the argument was not about interpreters but more about lacking
    structuring features, hard coded line numbers, gotos, and a lot more
    the like.

    That is like criticising the Romans for using chariots instead of cars.
    It is just prejudice and ignorance.

    Huh? - Really, calm down! You are talking nonsense now.


    Later languages were able to have better structuring, and didn't need
    line numbers, because the systems they were designed for were faster,
    and had text editors.

    You are talking nonsense again.


    And later BASICs had more structure, and dispensed with the need for
    line numbers. With BBC BASIC, for example, you very rarely referred to
    line numbers at all, and code was well structured (albeit limited to a
    single file).

    Yes. And you can derive a couple things from that. (Think about
    it yourself.)


    I had a look, to augment the little I knew of the NS30000 ISA. It is
    very similar to the 68k in many ways. I think you'd have to dig into
    fine detail to see real differences.

    Yes, I suggest to do that. (Some are quite obvious, not so
    much "fine details".)


    So, again, what do /you/ think is "inferior" about the 68k architecture?
    Either I'm missing something, or you are missing something.

    As said, I don't want to start a CPU discussion here and I'm
    also not interested in [to me] now irrelevant CPU specifics.
    (After that long time I could still name a couple things but
    I'll not feed fanatics with some [strange] affinity to that
    CPU.) You seem to take that technical topic very personal.

    I used it for the implementation of a channel encoding system, a
    typical "signal processing" application; it was great. Imagining
    I would have to use any other processor I already knew these days
    (65xx, 68k, x86)... - that would have been really annoying.


    There's no doubt that the TMS320 devices can be used to do many types of DSP-style operations very efficiently. That's not the point - that does
    not stop it from being horrible to work with. (It is also fair to characterise it as an "interesting" architecture - that is also not at
    odds with being horrible to use.)

    Yes, you already said so that you found work with it horrible.
    (I'm not going to argument against your personal feelings.)

    But it's not (not only) the DSP-specific "efficient operations"
    that makes the DSP architecture interesting. Although, even the
    _standard operations_ were slow on the 68k and fast on that DSP:
    +, *, / in 4-6, 80, ~150 cycles vs. 1, ~1, ~16 cycles.

    The things that I had in mind were the implicit post-increment, register-switch, scaling (during pre- and post-load) - i.e. all
    done at _no extra costs_. (BTW, things that are useful e.g. also
    for higher-level *p++ semantics; but it goes even farther.)


    [...]

    There are plenty of things I find disappointingly similar between most
    cpu architectures. It's hard for novel ideas to break through.

    But there were ideas! But not only the interesting ideas (like the
    frame shift on the stack [SPARC]; one detail I memorized) should have
    been considered,

    Yes, I like the register window idea of the SPARC. But it is hard to
    make it scalable - it would be significantly more flexible if the
    register window was actually a memory window with a specialised cache
    setup.

    Yes, sure.


    also (e.g.) support of addressing data structures as
    known from (back then) contemporary languages; the NS 32xxx supported
    that for example.

    Can you give an example?

    Consider access to nested structures of arrays/record (Pascal). I
    don't want to elaborate on all that (what I consider should be
    basic knowledge) but refer to the book I mentioned (still quoted
    below).


    There was, back then, a tendency for CISC processors to have a lot of complicated addressing modes to access certain data structures.

    Erm, no. It is not about "*certain* data structures"; it's about
    _common_ structures in contemporary languages and programming.
    (See Seegmüller.) - (Maybe you have something different in mind?)

    It was
    later shown that these were inefficient and limited, and it was better
    to have faster register calculations and do the addressing calculations
    in software - for the 68030 and 68040, compilers ignored the complicated addressing modes and did the scaling and indirections in software
    because it was faster.

    Indirections is actually one of the mentioned addressing modes;
    but not only in the later versions of (e.g.) the 68k series, but
    already in the old ("unsuccessful") NS CPU; that was the point.

    Later implementations of the 68k ISA, like the
    Coldfire, dropped the messiest address modes entirely. Of course, the NS32000 didn't have the address registers of the 68k, so the balance
    might have been different there.

    And these ideas were already old; see for example
    Seegmüller: Einführung in die Systemprogrammierung (1974)
    (And I would be surprised if he'd been the first who described that.)

    But yes, the "break through" factors (e.g. the market factors) were
    an issue.

    [...]

    I can recommend reading about the XMOS. (It's for embedded use, not a general-purpose processor.)

    Thanks. (But as said, I'm not any more interested in CPUs today.)

    Janis

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Janis Papanagnou on Fri Mar 28 13:00:12 2025
    On 28/03/2025 11:22, Janis Papanagnou wrote:
    On 28.03.2025 10:13, David Brown wrote:
    [...]


    [ NS32032 ]

    Indeed. After all, the 68k was one of the most successful ISAs ever,
    and the x86 "won" for economic reasons, not technical reasons. The
    NS32000, on the other hand, is known only to a few nerds. [...]

    Given that it did not "survive" in the first place I was astonished
    that when I spoke with IT professionals in the past it was mentioned
    as outstanding (compared to a lot of other alternatives these days).

    The 68k was outstanding. The NS32000 had a lot of similarities to the
    68k. Therefore, compared to a lot of /other/ architectures around, it
    too was outstanding. Compared to the 68k, however, it was nothing
    special - no doubt there were some pros and some cons.

    I was also astonished that bart had it in his short-list. So I'm not
    inclined to accept your words that it's "known only to a few nerds".
    (It's not necessarily the best technologies that "survive".) YMMV.


    Bart is a nerd of rare quality. (I mean that in a good way.) It does
    not surprise me that he is familiar with it.

    Remember that while the NS32000 died away fairly quickly, when it was
    around it was a reasonably well-known alternative to the bigger names.
    Someone looking for a powerful cpu and not burdened by compatibility restraints, could just as well have picked it rather than a 68k device.
    At that time, no one knew it would die away from the scene. So people
    involved in designing computer equipment at that time - such as Bart -
    would know of it and may well have used it.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to Michael S on Fri Mar 28 13:42:42 2025
    On 28.03.2025 12:32, Michael S wrote:
    [...]

    Later on, on web, nearly all mentions of NS32K I encountered were in
    context of examples of extreme CISC. I.e. MUCH CISCier than x86, significantly CISCier than even such rather heavy CISCs as VAX and
    MC68020. Of course, not quite complicated as Intel iAPX 432. So, it
    seems, it is remembered, but not in a good way.

    To me the NS beast didn't appear to be that "extreme" (rather more
    "consistent" or "orthogonal" and the like). Especially if I compare
    it to CPUs like the SC 61860 (in an 8 bit pocket calculator) which
    back these days supported (on CPU level) even a 'case' construct!
    It had been an undocumented CPU command (at least in the available
    sources I used) but upon analyzing the OS in ROM I discovered it
    being used and inferred its operational semantics from the context.
    This is what I'd call "extreme CISC". :-)

    But many years passed and I'd suppose things changed a lot recently.

    Janis

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From bart@21:1/5 to Janis Papanagnou on Fri Mar 28 12:19:10 2025
    On 28/03/2025 01:05, Janis Papanagnou wrote:
    On 27.03.2025 12:14, bart wrote:
    On 27/03/2025 02:24, Janis Papanagnou wrote:

    I'm speaking about all that inferior systems that had a comparably
    high price without a matching quality. And about years and years
    passing without vendors of such products changing that situation.

    I guess ... you're talking about either the IBM PC hardware or MS
    software, or both? (Although PCs weren't expensive.)

    Here PCs were expensive; a friend of mine bought one for ~8000 DM,
    IIRC, (compare that to 2000 DM for a Commodire PET; even the first
    Apple was expensive but not that expensive as the IBM PC).

    There were inexpensive compared to traditional computer systems. So
    small businesses could afford them and later people used them as home computers.

    Competition in the form of clones brought down the price. (My company
    toyed with making our own clone, but we moved out of making computers ourselves.)

    I've never used Basic. But it is one language I admire, even if it is
    crude:

    10 let a=0
    20 let a=a+1
    30 if a<1000000 then 20
    40 print a

    Okay, you "admire" BASIC (and you found the 68000 CPU "wonderful");
    that tells a lot about your background and expertise.

    What does it tell you, that I'm not as stuck-up as you are?

    I admired Basic for its simplicity and accessibility.

    (Actually, the first time I ever tried making a toy interpreter, it was
    cabable of running pretty much that program, but with a smaller limit.
    Written in Fortran and running on a PDP11, it managed 500 iterations per
    second IIRC.

    My latest interpreter, not for Basic, can manage 400M iterations per
    second.)


    I seem to recall that elsewhere in the thread you were mentioning the
    number of transistors - I understood that as if you take that being
    an indication for a complexity, non-triviality, not being "primitive".
    If that is a correct interpretation of your argument I'd like to
    suggest considering that the number of molecules (necessary to build
    up these ~8000 transistors) is even larger.

    Try for a moment to understand that the quality of a CPU architecture is
    not (for assembler programmers) something measured in transistors.

    I've used discrete transistors, and discrete logic gates (where you got
    4 gates in one chip). So I can imagine those as practical building blocks.

    There are so many transistors to one gate. And there are so many gates
    needed to create a single bit of register storage. You can see that 8000
    or 8500 transistors can quickly get used up!

    So my point is that these CPUs being 'primitive' can be excused to some
    extent.

    If you mention 68000 and NS32032 playing in the same architectural
    league then it's hard for me to consider you a serious discussion
    partner.

    You haven't revealed what exactly is the gulf between them. You've
    vaguely quoted elsewhere what somebody once told you.

    So it's hard for me to consider /you/ as someone who knows what they're
    talking about.


    I won't discuss the details of CPU architectures with you here; but
    if you're really interested I suggest to inspect those two processors
    more thoroughly - there's papers and documents available online.

    OK, but that won't tell me why /you/ think X is better than Y.

    [...]

    But that all was long ago and is meaningless today.

    I find I can learn a lot from how simple things were that long ago. The
    early 80s was the golden age for that, getting away from mainframes and
    complex OSes, to much more informal systems. Now it's worse than ever.

    I'm not able two bring your two sentences together. - What is worse?


    Do you mean to qualify it as: mainframe era: bad, 1980's era: good,
    nowadays: bad again. - Is that what you wanted to say?

    I'll give an analogy: going from working from a company, to becoming self-employed, to working for a company again which is now a
    mega-corporation.

    Where do think an individual would get the most freedom?


    Lets say I have some background to separate the wheat from the chaff.

    So I don't have any background? Building systems at the chip level, and building the software, the tools, the languages /and/ their
    implementations out of nothing doesn't give me any perspective?

    But you do. OK.

    ("IT" means "information technology"; a common superordinate term to
    not enumerate all the subareas separately. - I'm sure you know that.)

    I now what it stands for. An umbrella term used to wrap layers of
    obfuscation and gratuitous complexity around computer systems, so as to
    be able to make lots more money compared to keeping things simple and transparent.

    (There was a famous IT project in the UK to provide a computer system
    for its health service, where the government spent £12,000,000,000
    before it was scrapped as it didn't work.

    There was also the infamous 'track and trace' in 2020, which reportedly
    cost £37 billion, but that figure is disputed.

    This is 'IT')

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to bart on Fri Mar 28 13:53:29 2025
    On 28.03.2025 12:37, bart wrote:
    On 28/03/2025 10:22, Janis Papanagnou wrote:

    [ NS32032 ]

    Indeed. After all, the 68k was one of the most successful ISAs ever,
    and the x86 "won" for economic reasons, not technical reasons. The
    NS32000, on the other hand, is known only to a few nerds. [...]

    Given that it did not "survive" in the first place I was astonished
    that when I spoke with IT professionals in the past it was mentioned
    as outstanding (compared to a lot of other alternatives these days).
    I was also astonished that bart had it in his short-list.

    You are astonished that I'd heard of it?

    It wasn't meant personally; I was also astonished when I spoke with
    another IT professional, as said. My astonishment stems from the
    fact that everyone in the IT scene was speaking primarily about the
    Intel CPUs, then about the Intel "clones", but rarely about other architectures, let alone about "vanished" CPU variants like the NS.
    (This is of course just a personal observation from where I lived
    and worked; it may have been different in your vicinity.)


    Did I mention that I was a hardware engineer at that time?

    As said and explained above, it was not meant personal, less meant
    as disregarding your profession or engagement in any way.

    (What I *was* astonished about was that you valued the two mentioned
    processors the same. But I suppose we both can live with that.)

    Janis

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to David Brown on Fri Mar 28 14:06:50 2025
    On 28.03.2025 13:00, David Brown wrote:
    On 28/03/2025 11:22, Janis Papanagnou wrote:

    I was also astonished that bart had it in his short-list. So I'm not
    inclined to accept your words that it's "known only to a few nerds".
    (It's not necessarily the best technologies that "survive".) YMMV.

    Bart is a nerd of rare quality. (I mean that in a good way.) It does
    not surprise me that he is familiar with it.

    He's not the only one I met, as said; an IT-competent friend of mine
    (origin in Australia, so it's no "local effect") also knew it and
    perceived that CPU as one with a very interesting architecture.

    Bart's engagement, OTOH, (as I perceived it from his posts) appeared
    to me to have a comparably narrow focus. And I didn't know (or forgot)
    that he was a "hardware engineer" as he mentioned/stressed recently.

    Given the short lifetime of the NS CPU it's likely nonetheless an
    (at least now) rarely known thing.

    Janis

    [...]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Waldek Hebisch@21:1/5 to bart on Fri Mar 28 17:49:15 2025
    bart <[email protected]> wrote:
    On 27/03/2025 01:10, Waldek Hebisch wrote:
    bart <[email protected]> wrote:
    On 26/03/2025 18:09, Janis Papanagnou wrote:

    , primitive CPU architectures,

    8-bit architectures were fine, just a bit short of registers and with
    limitation instruction sets. But that is to be expected with only 27,000 >>> transistors on a chip or whatever it was for Z80.

    All sources that I found say that Z80 is about 8000 transistors.
    You probably took number from 8086 which was climed to have 27000
    transitors.

    OK, then with 8000 it makes the capabilities even more remarkable.
    Current processors have billions of transistors.

    Z80 (like earlier 8080) in "general" instructions required
    accumulator as one of arguments, that severly limited utility
    of registers.

    (BTW, have a go at emulating such a processor in sofware; tell me in 3
    months how you got on.)

    Lone processor is not very interesting. I do not think coding
    simple emulator would take a lot of time. Z80 instruction set
    is a bit bulky, due to prefixed instructions, but decode could
    be done quite naively using 5 tables with 256 positions each
    (or a bit smarter using 3 tables)

    I don't think this is the one I saw, but the z80.c file here:

    https://github.com/redcode/Z80/tree/master/sources

    is nearly 3000 lines. There is a lot of stuff consider!

    Yes, that looks like resonable size for Z80 CPU emulator. I
    have bunch of emulators that I fetched from the net and size
    of Z80 emulation seem to be between 2000 and 8000 lines.

    In my case, I wanted something performant, but I could see 90% of
    emulation time being spent in multiple flags most of which would never
    be tested.

    I am not sure why you care about performance. Currenly popular
    method to get good performance is on the fly binary translation.
    You translate short streches of instructions, that gets rid of
    most flag setting. Also, at assembly level one can take advantage
    of similarity between Z80 and x86 flags.

    I shortly looked into existing emulators and was thinking about
    making my own, but then decided that this is not worth the
    effort. I have buch of programs from period when I used Z80,
    but almost no need to use them now.

    --
    Waldek Hebisch

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to Janis Papanagnou on Mon Mar 31 21:35:10 2025
    On 28.03.2025 02:05, Janis Papanagnou wrote:
    On 27.03.2025 12:14, bart wrote:
    On 27/03/2025 02:24, Janis Papanagnou wrote:

    I'm speaking about all that inferior systems that had a comparably
    high price without a matching quality. And about years and years
    passing without vendors of such products changing that situation.

    I guess ... you're talking about either the IBM PC hardware or MS
    software, or both? (Although PCs weren't expensive.)

    Here PCs were expensive; a friend of mine bought one for ~8000 DM,
    IIRC, (compare that to 2000 DM for a Commodore PET; even the first
    Apple was expensive but not that expensive as the IBM PC).

    Upon reconsideration it appeared to me that the price estimates do
    not reflect their _original_ price. It was ~3000 DM for the PET and
    ~12000 DM for the IBM XT. (Although prices rapidly dropped after the
    first years of their release, as I've just verified; that's were my
    "2000 DM" memories stems from). - So they were actually even *more*
    expensive (and rarely commonly affordable). - That doesn't change my
    point (rather it supports it yet more), but I wanted the numbers to
    get fixed.

    Janis

    [...]

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