From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 22389 invoked from network); 1 Apr 2022 16:02:36 -0000 Received: from minnie.tuhs.org (45.79.103.53) by inbox.vuxu.org with ESMTPUTF8; 1 Apr 2022 16:02:36 -0000 Received: by minnie.tuhs.org (Postfix, from userid 112) id 5F3279D718; Sat, 2 Apr 2022 02:02:31 +1000 (AEST) Received: from minnie.tuhs.org (localhost [127.0.0.1]) by minnie.tuhs.org (Postfix) with ESMTP id 77C399D6FA; Sat, 2 Apr 2022 02:00:05 +1000 (AEST) Authentication-Results: minnie.tuhs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=dartmouth.edu header.i=@dartmouth.edu header.b="MiaU9FoQ"; dkim-atps=neutral Received: by minnie.tuhs.org (Postfix, from userid 112) id 25B729D6FA; Sat, 2 Apr 2022 02:00:00 +1000 (AEST) Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com [209.85.221.50]) by minnie.tuhs.org (Postfix) with ESMTPS id 200939D6F9 for ; Sat, 2 Apr 2022 01:59:59 +1000 (AEST) Received: by mail-wr1-f50.google.com with SMTP id c7so4995149wrd.0 for ; Fri, 01 Apr 2022 08:59:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dartmouth.edu; s=google1; h=mime-version:from:date:message-id:subject:to; bh=UIDN7EmgWvq/3jIZ2HmgKEHWnOexCY1SOOXz8J6ohMw=; b=MiaU9FoQB8TVrSfrDxaOtv7VrMyD4rNiVbDT9mn88ecBcFUJdAHG53aYMN1m/0kV2w KJKy/b4PYppWqZ8CQVE5LA0bPnUVPqZwmu4RI88NBkvoYLcqnrylDl5hAVBd/QKAGB/2 IK5eIAqK+C33/fMMxFK5kWCSWrs1ogOByLoxdHoMJeRimTj/brqmUhRkzRnw0fySv6uE yxVtm9hNrzYGnF/HEDvz3gt8BUN+0K+QyjNEowQxPq5wSR3UKHKot7L25QOH/FLv8BOV gxN20zEOOZ9PrDvk7Apq8F9I8mxUGERenM0B3f8EoIf1M0dqWD2OdNzRBoYGC+BeTaH1 LHTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=UIDN7EmgWvq/3jIZ2HmgKEHWnOexCY1SOOXz8J6ohMw=; b=XfZy2tWC9tS9+PvLShSv624AqF1lwHVzlXuhL7/jOhIiLCqYbVavlVgJHcMs15OE+n 0UUzBzjq0pmfPZFRfX5eHa8q9NUX6NoIxsj2LUBDTiXAZhiH61KT5FPMIeyWC49vF5wJ mjU3yTdd/02ApGYDAq8Ed3OnUwX0POKgJ+hu4WYtvbw9yfdACbgDmiXB0/XR1bkwUVqO MnJwo6XJjTdGGQ0uurRVezcEkBJhK69odU0Zc0FRgqbQzfVzvhD44R4D9J5UfWYR9df3 dGHnpMn4dRxo561tnM0D0Jl6xOE8UUo3M28DRP+gvFW/tVMEVKlUYqupEXmXHI2ZcfXI /VKA== X-Gm-Message-State: AOAM5332Eb6LedM7248MOFScgY9+/l9FzKu84BDFbwuRg1i8IxO7qwAn Pjx4KLVpi2wlXJdXqP+9c4iMvJuOrzvuKGZ5NhlcgksdBW5xhw== X-Google-Smtp-Source: ABdhPJyYX2dHrJpSRT9MxGZA9dSA1NLQB/A9j1qhYlrbqadBolhXlKxb2eZ5UvoVcBxQ9biOdn/cY+sYzEU35L7XWns= X-Received: by 2002:a5d:5387:0:b0:204:182a:e60a with SMTP id d7-20020a5d5387000000b00204182ae60amr8215980wrv.329.1648828796931; Fri, 01 Apr 2022 08:59:56 -0700 (PDT) MIME-Version: 1.0 From: Douglas McIlroy Date: Fri, 1 Apr 2022 11:59:41 -0400 Message-ID: To: TUHS main list Content-Type: text/plain; charset="UTF-8" Subject: [TUHS] A Reiser tour de force X-BeenThere: tuhs@minnie.tuhs.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: The Unix Heritage Society mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: tuhs-bounces@minnie.tuhs.org Sender: "TUHS" The recent discussion about Research choosing BSD's paging over Reiser-London's brought to mind a stunning program by Reiser that Research did adopt. A critical primitive in the Blit terminal was bitblt (block transfer of a rectangular area). It was used ubiquitously, for example to refresh data when window-stacking changed, to move data within a window, or to pop up a menu.. The display memory was word-oriented, so bitblt was fraught with niggling details about bit alignment and overlap of source and destination. A general bitblt subroutine was a rats' nest of conditionals--grossly inefficient for important special cases like scrolling. Bitblt got refined (i.e. elaborated) several times before Reiser did away with it entirely. Instead he wrote a just-in-time generator of optimal code. Thousands of distinct variants, which varied in size from 16 to 72 bytes, could be produced by the same 400 lines of assembler code. Doug