[LispM-Hackers] {CAR,CDR}-{SYM,NUM}-MODE

Paul Fuqua pf@ti.com
Fri, 21 Dec 2001 12:15:25 -0600


    Date: 20 Dec 2001 23:24:15 -0900
    From: james@unlambda.com (James A. Crippen)
    
    QBBFL: false - xyzzy

I wish I could remember what that was about.  The couple mentions I can
find suggest it indicates that a block of special-variable bindings is
associated with the top frame.  (BBFL:  Binding-Block FLag.)

    CAR-SYM-MODE: 1 - error except (CAR NIL) is NIL
    CAR-NUM-MODE: 0 - error
    CDR-SYM-MODE: 1 - error except (CDR NIL) is NIL
    CDR-NUM-MODE: 0 - error

Once upon a time the lispm was a university project, and they
experimented with stuff.  This is one of the places that wasn't cleaned
up too well for production:  you could actually change the behavior of
CAR and CDR for symbols and numbers, making it error or maybe do other
things, as well as what became the official Common Lisp behavior.

    DONT-SWAP-IN: false
    TRAP-ENABLE: false

Don't remember these.

    MAR-MODE: read-trap=false; write-trap=false

MAR mode was equivalent to what some debuggers call "watchpoints";  it
would trap if the specified address were read or written, depending on
the flags.  (MAR stands for "Memory Address Register.")  It even worked,
sometimes, but we didn't officially support it;  it only allowed
watching one address.

    PGF-WRITE: false

PGF is usually an abbreviation for "page fault," but I don't know what
this is.

    INTERRUPT-FLAG: false
    SCAVENGE-FLAG: false
    TRANSPORT-FLAG: false
    STACK-GROUP-SWITCH-FLAG: false

Not sure what the flags are for.  "Scavenge" and "transport" are GC
terms.

    DEFERRED-SEQUENCE-BREAK-FLAG: true

A "sequence break" is a process switch, but I can't remember why one
would be deferred.  Maybe it has something to do with inhibiting
interrupts.

    METER-ENABLE: false

Metering was what is usually called "profiling" now, you could collect
scads of information about execution times.  "Submetering," introduced
later, was faster and often more useful.

    TRAP-ON-CALL: false
    
I think this was related to the BREAKON command, which let you trap on
entry to a given function.

                              pf