Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.1 6/24/83; site allegra.UUCP
Path: utzoo!watmath!clyde!floyd!harpo!eagle!allegra!jdd
From: jdd@allegra.UUCP (John DeTreville)
Newsgroups: net.arch
Subject: Re: Re: Complement Arithmetic - (not really)
Message-ID: <2266@allegra.UUCP>
Date: Wed, 8-Feb-84 14:19:10 EST
Article-I.D.: allegra.2266
Posted: Wed Feb  8 14:19:10 1984
Date-Received: Fri, 10-Feb-84 02:22:03 EST
References: <5448@uiucdcs.UUCP>
Organization: AT&T Bell Laboratories, Murray Hill
Lines: 22


    Somebody, somewhere had to initalize them anyway :-). I was actually
    refering to runtime costs - you don't have to generate code to test
    for the illegal value before each statement. At least one compiler
    (the Waterloo Fortran V) does this now. It's a good idea, but the
    cost!  [If you're interested, the value is 2 * '    '.]

Ah, this brings back fond memories of WATFOR on the IBM 7040/7044.  These
machines had 36-bit words with an extra parity bit, but IBM let you twiddle
the parity, and WATFOR used this "feature" (which was not documented in the
Principles of Operation).  Variables were initialized to contain bad parity,
and normal-parity loads, adds, etc. would trap if done prior to a normal-
parity store.

Another trick was that the ASSIGN statement stored reversed parity into the
variable named, and ASSIGNed GOTO's used a reversed-parity load to access
the contents; this kept you from storing an arbitrary value into a variable
and then using it in an ASSIGNed GOTO.

Cheers,
John ("Bad Parity") DeTreville
Bell Labs, Murray Hill