• Re: Bill Atkinson, rest in peace

    From Kerr-Mudd, John@admin@127.0.0.1 to comp.misc,alt.lang.asm,comp.os.msdos.programmer on Fri Jun 13 14:18:33 2025
    From Newsgroup: comp.os.msdos.programmer

    On Sun, 8 Jun 2025 23:39:35 -0000 (UTC)
    Lawrence D'Oliveiro <ldo@nz.invalid> wrote:

    On 08 Jun 2025 03:21:43 GMT, Retrograde wrote:

    I say this with no hyperbole: Bill Atkinson may well have been the best computer programmer who ever lived. Without question, herCOs on the short list.

    He was brilliant, but there were others of comparable brilliancy, I would say. Just within the Apple world: Steve Wozniak and Andy Hertzfeld come to mind. And it takes more than programmers: without Susan Kare, the
    Macintosh UI could have ended up looking like ... the Amiga.

    I'm currently attempting to draw a roundrect using x86 asm.
    Ok, it's a hobby.
    --
    Bah, and indeed, Humbug
    --- Synchronet 3.21d-Linux NewsLink 1.2
  • From legalize+jeeves@legalize+jeeves@mail.xmission.com (Richard) to comp.misc,alt.lang.asm,comp.os.msdos.programmer on Fri Jun 13 15:33:58 2025
    From Newsgroup: comp.os.msdos.programmer

    [Please do not mail me a copy of your followup]

    "Kerr-Mudd, John" <admin@127.0.0.1> spake the secret code <20250613141833.038a305eca2288e871bdac0f@127.0.0.1> thusly:

    I'm currently attempting to draw a roundrect using x86 asm.

    You might find this interesting then: <https://blend2d.com/>
    --
    "The Direct3D Graphics Pipeline" free book <http://tinyurl.com/d3d-pipeline>
    The Terminals Wiki <http://terminals-wiki.org>
    The Computer Graphics Museum <http://computergraphicsmuseum.org>
    Legalize Adulthood! (my blog) <http://legalizeadulthood.wordpress.com>
    --- Synchronet 3.21d-Linux NewsLink 1.2
  • From Lawrence D'Oliveiro@ldo@nz.invalid to comp.misc,alt.lang.asm,comp.os.msdos.programmer on Fri Jun 13 23:48:04 2025
    From Newsgroup: comp.os.msdos.programmer

    On Fri, 13 Jun 2025 14:18:33 +0100, Kerr-Mudd, John wrote:

    I'm currently attempting to draw a roundrect using x86 asm. Ok, it's
    a hobby.

    For some reason, the QuickDraw graphics engine never included B|-zier
    curves. If you have those, then itrCOs not hard to compute a fillet
    (rounding curve) on the intersection of two lines (e.g. a corner of a rectangle). And they donrCOt even have to be at right angles.

    See the rCLPath TechniquesrCY notebook here <https://gitlab.com/ldo/qahirah_notebooks>.
    --- Synchronet 3.21d-Linux NewsLink 1.2
  • From Kerr-Mudd, John@admin@127.0.0.1 to comp.misc,alt.lang.asm,comp.os.msdos.programmer on Sat Jun 14 13:17:42 2025
    From Newsgroup: comp.os.msdos.programmer

    On Fri, 13 Jun 2025 15:33:58 -0000 (UTC)
    legalize+jeeves@mail.xmission.com (Richard) wrote:

    [Please do not mail me a copy of your followup]

    "Kerr-Mudd, John" <admin@127.0.0.1> spake the secret code <20250613141833.038a305eca2288e871bdac0f@127.0.0.1> thusly:

    I'm currently attempting to draw a roundrect using x86 asm.

    You might find this interesting then: <https://blend2d.com/>


    Written in C/C++? no I'm focussed on x86 only.
    --
    Bah, and indeed Humbug.
    --- Synchronet 3.21d-Linux NewsLink 1.2
  • From Kerr-Mudd, John@admin@127.0.0.1 to comp.misc,alt.lang.asm,comp.os.msdos.programmer on Sat Jun 14 13:19:01 2025
    From Newsgroup: comp.os.msdos.programmer

    On Fri, 13 Jun 2025 23:48:04 -0000 (UTC)
    Lawrence D'Oliveiro <ldo@nz.invalid> wrote:

    On Fri, 13 Jun 2025 14:18:33 +0100, Kerr-Mudd, John wrote:

    I'm currently attempting to draw a roundrect using x86 asm. Ok, it's
    a hobby.

    For some reason, the QuickDraw graphics engine never included B|-zier
    curves. If you have those, then itrCOs not hard to compute a fillet
    (rounding curve) on the intersection of two lines (e.g. a corner of a rectangle). And they donrCOt even have to be at right angles.

    See the rCLPath TechniquesrCY notebook here <https://gitlab.com/ldo/qahirah_notebooks>.

    I tried; I got a spinning circle; maybe it 'needs' javascript, or
    something else I don't/won't use.
    --
    Bah, and indeed Humbug.
    --- Synchronet 3.21d-Linux NewsLink 1.2
  • From Kerr-Mudd, John@admin@127.0.0.1 to comp.misc,alt.lang.asm,comp.os.msdos.programmer on Sat Jun 14 13:28:14 2025
    From Newsgroup: comp.os.msdos.programmer

    On Sat, 14 Jun 2025 13:19:01 +0100
    "Kerr-Mudd, John" <admin@127.0.0.1> wrote:

    On Fri, 13 Jun 2025 23:48:04 -0000 (UTC)
    Lawrence D'Oliveiro <ldo@nz.invalid> wrote:

    On Fri, 13 Jun 2025 14:18:33 +0100, Kerr-Mudd, John wrote:

    I'm currently attempting to draw a roundrect using x86 asm. Ok, it's
    a hobby.

    For some reason, the QuickDraw graphics engine never included B|-zier curves. If you have those, then itrCOs not hard to compute a fillet (rounding curve) on the intersection of two lines (e.g. a corner of a rectangle). And they donrCOt even have to be at right angles.

    See the rCLPath TechniquesrCY notebook here <https://gitlab.com/ldo/qahirah_notebooks>.

    I tried; I got a spinning circle; maybe it 'needs' javascript, or
    something else I don't/won't use.


    Anyhow looks like this
    https://en.wikipedia.org/wiki/Midpoint_circle_algorithm

    is what I need to implement.

    --
    Bah, and indeed Humbug.
    --
    Bah, and indeed Humbug.
    --- Synchronet 3.21d-Linux NewsLink 1.2
  • From legalize+jeeves@legalize+jeeves@mail.xmission.com (Richard) to comp.misc,alt.lang.asm,comp.os.msdos.programmer on Sat Jun 14 22:43:50 2025
    From Newsgroup: comp.os.msdos.programmer

    [Please do not mail me a copy of your followup]

    "Kerr-Mudd, John" <admin@127.0.0.1> spake the secret code <20250614131742.ced5e989c8c8102b0df5e148@127.0.0.1> thusly:

    On Fri, 13 Jun 2025 15:33:58 -0000 (UTC)
    legalize+jeeves@mail.xmission.com (Richard) wrote:

    "Kerr-Mudd, John" <admin@127.0.0.1> spake the secret code
    <20250613141833.038a305eca2288e871bdac0f@127.0.0.1> thusly:

    I'm currently attempting to draw a roundrect using x86 asm.

    You might find this interesting then: <https://blend2d.com/>

    Written in C/C++? no I'm focussed on x86 only.

    I guess you didn't look closely enough. It uses AsmJit to JIT emit
    assembly language that implements a custom rendering engine.
    --
    "The Direct3D Graphics Pipeline" free book <http://tinyurl.com/d3d-pipeline>
    The Terminals Wiki <http://terminals-wiki.org>
    The Computer Graphics Museum <http://computergraphicsmuseum.org>
    Legalize Adulthood! (my blog) <http://legalizeadulthood.wordpress.com>
    --- Synchronet 3.21d-Linux NewsLink 1.2
  • From Lawrence D'Oliveiro@ldo@nz.invalid to comp.misc,alt.lang.asm,comp.os.msdos.programmer on Sat Jun 14 23:13:27 2025
    From Newsgroup: comp.os.msdos.programmer

    On Sat, 14 Jun 2025 13:19:01 +0100, Kerr-Mudd, John wrote:

    On Fri, 13 Jun 2025 23:48:04 -0000 (UTC)
    Lawrence D'Oliveiro <ldo@nz.invalid> wrote:

    See the rCLPath TechniquesrCY notebook here
    <https://gitlab.com/ldo/qahirah_notebooks>.

    I tried; I got a spinning circle; maybe it 'needs' javascript, or
    something else I don't/won't use.

    Those are Jupyter notebooks <https://jupyter.org/>. You need to run them
    from within a Jupyter installation.

    If you really want to run them online, try accessing them through MyBinder <https://mybinder.org/>.
    --- Synchronet 3.21d-Linux NewsLink 1.2
  • From John Ames@commodorejohn@gmail.com to comp.misc,alt.lang.asm,comp.os.msdos.programmer on Mon Jun 16 08:07:36 2025
    From Newsgroup: comp.os.msdos.programmer

    On Fri, 13 Jun 2025 23:48:04 -0000 (UTC)
    Lawrence D'Oliveiro <ldo@nz.invalid> wrote:
    For some reason, the QuickDraw graphics engine never included B|-zier
    curves. If you have those, then itrCOs not hard to compute a fillet
    (rounding curve) on the intersection of two lines (e.g. a corner of a rectangle).
    I don't know why they weren't added later (assuming they weren't,) but
    the reason RoundRects were a primitive unto themselves was performance. Plotting B|-zier curves in a generalized way requires *way* more math
    than Atkinson's technique, which doesn't even require multiplication: https://folklore.org/Round_Rects_Are_Everywhere.html?sort=date
    On an 8 Mhz 68000, that makes quite a bit of difference.
    --- Synchronet 3.21d-Linux NewsLink 1.2
  • From Richard Kettlewell@invalid@invalid.invalid to comp.misc,alt.lang.asm,comp.os.msdos.programmer on Mon Jun 16 17:25:48 2025
    From Newsgroup: comp.os.msdos.programmer

    John Ames <commodorejohn@gmail.com> writes:
    Lawrence D'Oliveiro <ldo@nz.invalid> wrote:
    For some reason, the QuickDraw graphics engine never included B|-zier
    curves. If you have those, then itrCOs not hard to compute a fillet
    (rounding curve) on the intersection of two lines (e.g. a corner of a
    rectangle).

    I don't know why they weren't added later (assuming they weren't,) but
    the reason RoundRects were a primitive unto themselves was performance. Plotting B|-zier curves in a generalized way requires *way* more math
    than Atkinson's technique, which doesn't even require multiplication:

    https://folklore.org/Round_Rects_Are_Everywhere.html?sort=date

    On an 8 Mhz 68000, that makes quite a bit of difference.

    That was a bit hard to do on the Macintosh, since the math for circles
    usually involved taking square roots, and the 68000 processor in the
    Lisa and Macintosh didn't support floating point operations. But Bill
    had come up with a clever way to do the circle calculation that only
    used addition and subtraction, not even multiplication or division,
    which the 68000 could do, but was kind of slow at.

    AFAIK the algorithm goes back to Bresenham in the 1960s - although itrCOs certainly possible Atkinson rediscovered it.
    --
    https://www.greenend.org.uk/rjk/
    --- Synchronet 3.21d-Linux NewsLink 1.2
  • From John Ames@commodorejohn@gmail.com to comp.misc,alt.lang.asm,comp.os.msdos.programmer on Mon Jun 16 10:09:05 2025
    From Newsgroup: comp.os.msdos.programmer

    On Mon, 16 Jun 2025 17:25:48 +0100
    Richard Kettlewell <invalid@invalid.invalid> wrote:
    AFAIK the algorithm goes back to Bresenham in the 1960s - although
    itrCOs certainly possible Atkinson rediscovered it.
    Might well be - I yield to those with more knowledge on that point.
    --- Synchronet 3.21d-Linux NewsLink 1.2
  • From Lawrence D'Oliveiro@ldo@nz.invalid to comp.misc,alt.lang.asm,comp.os.msdos.programmer on Mon Jun 16 23:18:04 2025
    From Newsgroup: comp.os.msdos.programmer

    On Mon, 16 Jun 2025 08:07:36 -0700, John Ames wrote:

    I don't know why they weren't added later (assuming they weren't,) but
    the reason RoundRects were a primitive unto themselves was performance.

    Au contraire. Atkinson was actually going to drop them from Macintosh QuickDraw (they were present in Lisa QuickDraw). There is an anecdote
    related somewhere on one of the Macintosh nostalgia sites where Steve Jobs took Bill out to the building grounds and walked him around a bit, showing
    him how often round rects occurred in nature and everyday surroundings,
    and therefore he *had* to include them as a drawing primitive.

    (No, I have no idea what examples of real-life round rects he came up
    with.)

    Plotting B|-zier curves in a generalized way requires *way* more math
    than Atkinson's technique, which doesn't even require multiplication:

    Oh, come on. De CasteljaurCOs algorithm was already well known. Decomposing
    a B|-zier into two sub-curves only requires additions and divisions by 2.
    As the pieces get smaller, they get closer to straight lines. Once each
    piece gets small enough, you draw it as a straight line; if itrCOs not small enough, you divide it and look at its sub-sub-pieces, and so on.

    Computing the deviations from a straight-line approximation for a curve segment does require multiplications and divisions, but the 68000 did have hardware integer multiply and divide, after all.
    --- Synchronet 3.21d-Linux NewsLink 1.2