(FILECREATED " 8-Feb-86 15:10:43" {DSK}<LISPFILES2>IMPROVEDDCOMS>LOAD.;1 23817  

      changes to:  (VARS LOADCOMS))


(* Copyright (c) 1986 by Quintus Computer Systems, Inc. All rights reserved.)

(PRETTYCOMPRINT LOADCOMS)

(RPAQQ LOADCOMS ((ADDVARS (GLOBALVARS QP.LAST.CLAUSE.RECORD) (GLOBALVARS QP.CLAUSE.OFFSET) (
GLOBALVARS QP.DUMMY.CLAUSE) (GLOBALVARS QP.DEBUG.CLAUSE) (GLOBALVARS QP.INTERPRET.CLAUSE) (GLOBALVARS 
QP.UNDEFINED.CLAUSE) (GLOBALVARS QP.FAILURE.CLAUSE)) (MACROS QP.REGISTER.OR.MEMORY.1 \LEFTBYTE 
\RIGHTBYTE) (FNS ASSEMBLE.CLAUSE QP.ADD.CLAUSE QP.ALLOCATE.CLAUSE.RECORD QP.AREG.REGISTER 
QP.ATTACH.CLAUSE.RECORD QP.INITIALIZE.PROLOG QP.LOOK QP.LOOK.ATOM QP.LOOK.BYTE QP.LOOK.BYTE.ATOM 
QP.LOOK.BYTE.BYTE QP.LOOK.BYTE.CELL QP.LOOK.BYTE.FUNCTOR QP.LOOK.CELL QP.LOOK.CLAUSE QP.LOOK.CONSTANT 
QP.LOOK.EXTEND QP.LOOK.EXTEND.CELL QP.LOOK.EXTEND.WORD QP.LOOK.FUNCTOR QP.LOOK.INSTR QP.LOOK.NULL 
QP.LOOK.OFFSET QP.LOOK.ONE.CLAUSE QP.LOOK.OPCODE QP.LOOK.PROCEDURE QP.LOOK.SIZE.OFFSET 
QP.LOOK.SIZE.PROCEDURE QP.OBJ.TAG QP.RECONSULT QP.STORE.INCORE QP.STORE.INDEX QP.STORE.INSTR 
QP.STORE.INSTR.AREG QP.STORE.INSTR.ATOM QP.STORE.INSTR.BYTE QP.STORE.INSTR.BYTE.ATOM 
QP.STORE.INSTR.BYTE.BYTE QP.STORE.INSTR.BYTE.CELL QP.STORE.INSTR.BYTE.FUNCTOR QP.STORE.INSTR.CELL 
QP.STORE.INSTR.EXTEND QP.STORE.INSTR.EXTEND.CELL QP.STORE.INSTR.EXTEND.WORD QP.STORE.INSTR.FUNCTOR 
QP.STORE.INSTR.NULL QP.STORE.INSTR.OFFSET QP.STORE.INSTR.PROCEDURE QP.STORE.INSTR.SIZE.OFFSET 
QP.STORE.INSTR.SIZE.PROCEDURE QP.TRAP.CLAUSE QP.UNIT.CLAUSE) (VARS (QP.LAST.CLAUSE.RECORD NIL))))

(ADDTOVAR GLOBALVARS QP.LAST.CLAUSE.RECORD)

(ADDTOVAR GLOBALVARS QP.CLAUSE.OFFSET)

(ADDTOVAR GLOBALVARS QP.DUMMY.CLAUSE)

(ADDTOVAR GLOBALVARS QP.DEBUG.CLAUSE)

(ADDTOVAR GLOBALVARS QP.INTERPRET.CLAUSE)

(ADDTOVAR GLOBALVARS QP.UNDEFINED.CLAUSE)

(ADDTOVAR GLOBALVARS QP.FAILURE.CLAUSE)
(DECLARE: EVAL@COMPILE 
(PUTPROPS QP.REGISTER.OR.MEMORY.1 MACRO (**MACROARG** (LET ((AREG (CAR (NTH **MACROARG** 1))) (OPCODE 
(CAR (NTH **MACROARG** 2)))) (BQUOTE (COND ((GREATERP (\, AREG) 4) (SETQ (\, OPCODE) (IPLUS 512 (\, 
OPCODE)))) (T (SETQ (\, AREG) (QP.AREG.REGISTER (\, AREG)))))))))
(PUTPROPS \LEFTBYTE MACRO (X (APPLY (FUNCTION (LAMBDA (BASE OFFSET) (BQUOTE (\GETBASEBYTE (\, BASE) (
Twice (\, OFFSET) 0))))) X)))
(PUTPROPS \RIGHTBYTE MACRO (X (APPLY (FUNCTION (LAMBDA (BASE OFFSET) (BQUOTE (\GETBASEBYTE (\, BASE) (
Twice (\, OFFSET) 1))))) X)))
)
(DEFINEQ

(ASSEMBLE.CLAUSE
(NLAMBDA THEARGS (LET* ((PROCLIST (CAR THEARGS)) (PROC (QP.LOCAL.PREDICATE (CAR PROCLIST) (CADR 
PROCLIST) (CADDR PROCLIST))) (LENGTH (CADR THEARGS)) (INSTRS (CDDR THEARGS)) (CLAUSEPTR (
QP.CLAUSE.ALLOC (IPLUS 3 LENGTH)))) (SETQ QP.CLAUSE.OFFSET 2) (PROG ((INSTRS INSTRS)) LP (COND ((NULL 
INSTRS) (RETURN NIL)) (T (LET ((INSTR (CAR INSTRS))) (SETQ INSTRS (CDR INSTRS)) (QP.STORE.INSTR 
CLAUSEPTR (CAR INSTR) (CADR INSTR) (CADDR INSTR) (CADDDR INSTR) (CAR (CDDDDR INSTR)))) (GO LP)))) (if 
QP.INDEXP then (QP.ADD.CLAUSE CLAUSEPTR PROC) else (QP.ASSERT.INDEXED PROC CLAUSEPTR NIL)))))

(QP.ADD.CLAUSE
(LAMBDA (CLAUSE PROCRECORD) (COND ((EQ (QP.GET.PREDICATE.STATE PROCRECORD) 0) (SETF (PROC.CLAUSES 
PROCRECORD) CLAUSE) (SETF (PROC.LOFLAG PROCRECORD) 1) (QP.STORE.INDEX CLAUSE (QUOTE just.me.else))) ((
EQ (\GETBASEBYTE (PROC.LASTCLAUSE PROCRECORD) 0) (QP.OP.CODE (QUOTE just.me.else))) (QP.STORE.INDEX (
PROC.LASTCLAUSE PROCRECORD) (QUOTE try.me.else) CLAUSE) (QP.STORE.INDEX CLAUSE (QUOTE trust.me.else)))
 ((EQ (\GETBASEBYTE (PROC.LASTCLAUSE PROCRECORD) 0) (QP.OP.CODE (QUOTE trust.me.else))) (
QP.STORE.INDEX (PROC.LASTCLAUSE PROCRECORD) (QUOTE retry.me.else) CLAUSE) (QP.STORE.INDEX CLAUSE (
QUOTE trust.me.else)))) (SETF (PROC.LASTCLAUSE PROCRECORD) CLAUSE)))

(QP.ALLOCATE.CLAUSE.RECORD
(LAMBDA (SIZE) (SETQ QP.CLAUSE.OFFSET 2) (SETQ QP.LAST.CLAUSE.RECORD (QP.CLAUSE.ALLOC (IPLUS SIZE 3)))
))

(QP.AREG.REGISTER
(LAMBDA (AREG) (ITIMES 2 (IDIFFERENCE AREG 1))))

(QP.ATTACH.CLAUSE.RECORD
(LAMBDA (PROC) (if QP.INDEXP then (QP.ADD.CLAUSE QP.LAST.CLAUSE.RECORD PROC) else (QP.ASSERT.INDEXED 
PROC QP.LAST.CLAUSE.RECORD))))

(QP.INITIALIZE.PROLOG
(LAMBDA NIL (QP.INIT.PROCEDURES) (SETQ BYTE.BUFFER.LENGTH 0) (SETQ BYTE.BUFFER (ALLOCSTRING 4096 0 
BYTE.BUFFER)) (QP.INIT.IO) (SETQ QP.SCRATCH.STRING (ALLOCSTRING 256)) (PROG ((X (\ALLOCBLOCK 5))) (
\PUTBASE X 0 (QP.OP.CODE (QUOTE ignore.me))) (\PUTBASE X 1 (QP.OP.CODE (QUOTE fail.on.retry))) (
\PUTBASEPTR X 2 NIL) (\PUTBASEPTR X 4 NIL) (\PUTBASEPTR X 6 0) (\PUTBASEPTR X 8 0) (SETQ 
QP.DUMMY.CLAUSE X)) (QP.TRAP.CLAUSE QP.UNDEFINED.CLAUSE $interpreter←hook 2 interp) (QP.TRAP.CLAUSE 
QP.INTERPRET.CLAUSE $interpreter←hook 2 interp) (QP.TRAP.CLAUSE QP.DEBUG.CLAUSE $debug←trap 2 interp) 
(QP.UNIT.CLAUSE apply apply 3 si) (QP.UNIT.CLAUSE store.skeleton store←skeleton 1 si) (SETQ 
QP.FAILURE.CLAUSE (QP.UNIT.CLAUSE fail fail 0 si)) (ASSEMBLE.CLAUSE (portray 1 user) 1 (fail)) T))

(QP.LOOK
(LAMBDA (PROC ARITY MODULE) (PROG (CLAUSE) (COND ((NOT (TYPENAMEP PROC (QUOTE QP.PROCEDURE.RECORD))) (
SETQ PROC (QP.LOCAL.PREDICATE PROC (OR ARITY 0) (OR MODULE (QUOTE si)))))) (SETQ CLAUSE (PROC.CLAUSES 
PROC)) (COND ((EQ CLAUSE QP.EMPTY.PROC.ADDRESS) (PRIN3 "No clauses for this procedure (0!!!)") (RETURN
)) ((EQ CLAUSE QP.UNDEFINED.CLAUSE) (PRIN3 "No clauses for this procedure") (RETURN))) L (COND ((
TYPENAMEP CLAUSE (QUOTE INDEX.BLOCK)) (SETQ CLAUSE (\GETBASEPTR CLAUSE 4)))) (TERPRI) (
QP.LOOK.ONE.CLAUSE CLAUSE) (SETQ CLAUSE (\GETBASEPTR CLAUSE 0)) (COND ((NEQ CLAUSE QP.FAILURE.CLAUSE) 
(GO L))))))

(QP.LOOK.ATOM
(LAMBDA (CLAUSE INSTR) (PRINT (LIST INSTR (\VAG2 0 (\GETBASE CLAUSE (ADD1 QP.CLAUSE.OFFSET))))) (INCR 
QP.CLAUSE.OFFSET 2)))

(QP.LOOK.BYTE
(LAMBDA (CLAUSE INSTR TYPE) (PRINT (LIST INSTR (LET ((BYTE (\RIGHTBYTE CLAUSE QP.CLAUSE.OFFSET))) (
SELECTQ TYPE ((a1 byte) BYTE) (y1 (IDIFFERENCE BYTE QP.PERMANENT.OFFSET)) (SHOULDNT))))) (INCR 
QP.CLAUSE.OFFSET)))

(QP.LOOK.BYTE.ATOM
(LAMBDA (CLAUSE INSTR) (PRINT (LIST INSTR (\RIGHTBYTE CLAUSE QP.CLAUSE.OFFSET) (\VAG2 0 (\GETBASE 
CLAUSE (ADD1 QP.CLAUSE.OFFSET))))) (INCR QP.CLAUSE.OFFSET 2)))

(QP.LOOK.BYTE.BYTE
(LAMBDA (CLAUSE INSTR REVERSAL TYPE2) (LET ((SRC1 (\RIGHTBYTE CLAUSE QP.CLAUSE.OFFSET)) (SRC2 (
\RIGHTBYTE CLAUSE (ADD1 QP.CLAUSE.OFFSET))) DEST1 DEST2) (COND ((EQ REVERSAL (QUOTE REVERSED)) (SETQ 
DEST1 SRC2) (SETQ DEST2 SRC1)) (T (SETQ DEST1 SRC1) (SETQ DEST2 SRC2))) (PRINT (LIST INSTR DEST1 (COND
 ((EQ TYPE2 (QUOTE PERMANENT)) (IDIFFERENCE DEST2 QP.PERMANENT.OFFSET)) (T DEST2)))) (INCR 
QP.CLAUSE.OFFSET 2))))

(QP.LOOK.BYTE.CELL
(LAMBDA (CLAUSE INSTR) (PRINT (LIST INSTR (\RIGHTBYTE CLAUSE QP.CLAUSE.OFFSET) (\GETBASEPTR CLAUSE (
ADD1 QP.CLAUSE.OFFSET)))) (INCR QP.CLAUSE.OFFSET 3)))

(QP.LOOK.BYTE.FUNCTOR
(LAMBDA (CLAUSE INSTR) (PRINT (LIST INSTR (\RIGHTBYTE CLAUSE QP.CLAUSE.OFFSET) (\VAG2 0 (\GETBASE 
CLAUSE (IPLUS 2 QP.CLAUSE.OFFSET))) (\RIGHTBYTE CLAUSE (ADD1 QP.CLAUSE.OFFSET)))) (INCR 
QP.CLAUSE.OFFSET 3)))

(QP.LOOK.CELL
(LAMBDA (CLAUSE INSTR) (PRINT (LIST INSTR (\VAG2 (\RIGHTBYTE CLAUSE (ADD1 QP.CLAUSE.OFFSET)) (\GETBASE
 CLAUSE (IPLUS QP.CLAUSE.OFFSET 2))))) (INCR QP.CLAUSE.OFFSET 3)))

(QP.LOOK.CLAUSE
(LAMBDA (CLAUSE INSTR) (PRINT (LIST INSTR (LIST (QUOTE CLAUSE) (\RIGHTBYTE CLAUSE QP.CLAUSE.OFFSET) (
\GETBASE CLAUSE (ADD1 QP.CLAUSE.OFFSET))))) (INCR QP.CLAUSE.OFFSET 2)))

(QP.LOOK.CONSTANT
(LAMBDA (CLAUSE INSTR) (PRINT (LIST INSTR (\GETBASEPTR CLAUSE (ADD1 QP.CLAUSE.OFFSET)))) (INCR 
QP.CLAUSE.OFFSET 3)))

(QP.LOOK.EXTEND
(LAMBDA (CLAUSE INSTR) (PRINT (LIST INSTR)) (INCR QP.CLAUSE.OFFSET)))

(QP.LOOK.EXTEND.CELL
(LAMBDA (CLAUSE INSTR) (LET* ((CELL (\GETBASEPTR CLAUSE (ADD1 QP.CLAUSE.OFFSET)))) (PRINT (LIST INSTR 
CELL)) (INCR QP.CLAUSE.OFFSET 3))))

(QP.LOOK.EXTEND.WORD
(LAMBDA (CLAUSE INSTR) (LET ((WORD (\GETBASE CLAUSE (ADD1 QP.CLAUSE.OFFSET)))) (PRINT (LIST INSTR (RSH
 (LLSH WORD 16) 16))) (INCR QP.CLAUSE.OFFSET 2))))

(QP.LOOK.FUNCTOR
(LAMBDA (CLAUSE INSTR) (PRINT (LIST INSTR (\VAG2 0 (\GETBASE CLAUSE (IPLUS 2 QP.CLAUSE.OFFSET))) (
\RIGHTBYTE CLAUSE (ADD1 QP.CLAUSE.OFFSET)))) (INCR QP.CLAUSE.OFFSET 3)))

(QP.LOOK.INSTR
(LAMBDA (CLAUSE) (LET* ((OPCODE (\LEFTBYTE CLAUSE QP.CLAUSE.OFFSET)) (FIELDS (CADDR (GETHASH OPCODE 
QP.INSTRUCTION.HARRAY))) (INSTR (CAR (GETHASH OPCODE QP.INSTRUCTION.HARRAY))) (MAYBESTAR (CADR (
GETHASH OPCODE QP.INSTRUCTION.HARRAY)))) (TAB 4) (COND ((EQ MAYBESTAR (QUOTE *)) (LET* ((INSTR2 FIELDS
) (OPCODE2 (GETHASH INSTR2 QP.INSTRUCTION.HARRAY)) (FIELDS2 (CADDR (GETHASH OPCODE2 
QP.INSTRUCTION.HARRAY)))) (QP.LOOK.OPCODE CLAUSE OPCODE FIELDS2 INSTR))) (T (QP.LOOK.OPCODE CLAUSE 
OPCODE FIELDS INSTR))))))

(QP.LOOK.NULL
(LAMBDA (CLAUSE INSTR) (PRINT (LIST INSTR)) (INCR QP.CLAUSE.OFFSET)))

(QP.LOOK.OFFSET
(LAMBDA (CLAUSE INSTR) (LET* ((CLAUSE.HILOC (\HILOC CLAUSE)) (CLAUSE.LOLOC (\LOLOC CLAUSE)) (
CLAUSE.BEGIN (IPLUS (LLSH CLAUSE.HILOC 16) CLAUSE.LOLOC)) (INSTR.ADDR (IPLUS (ITIMES (\RIGHTBYTE 
CLAUSE QP.CLAUSE.OFFSET) 65536) (\GETBASE CLAUSE (ADD1 QP.CLAUSE.OFFSET)))) (OFFSET (IDIFFERENCE 
INSTR.ADDR CLAUSE.BEGIN))) (PRINT (LIST INSTR (QUOTE +) OFFSET)) (INCR QP.CLAUSE.OFFSET 2))))

(QP.LOOK.ONE.CLAUSE
(LAMBDA (CLAUSE) (PROG NIL (SETQ QP.CLAUSE.OFFSET 0) LP (COND ((QP.LOOK.INSTR CLAUSE) (GO LP))))))

(QP.LOOK.OPCODE
(LAMBDA (CLAUSE OPCODE FIELDS INSTR) (COND ((EQ OPCODE 0) NIL) ((EQ OPCODE QP.EXTENSION.OPCODE) (LET* 
((EXTENSION (\RIGHTBYTE CLAUSE QP.CLAUSE.OFFSET)) (INSTR2 (CAR (GETHASH EXTENSION QP.EXTENSION.HARRAY)
)) (FIELDS2 (CDR (GETHASH EXTENSION QP.EXTENSION.HARRAY)))) (COND ((EQUAL FIELDS2 (QUOTE (extend word)
)) (QP.LOOK.EXTEND.WORD CLAUSE INSTR2)) ((EQUAL FIELDS2 (QUOTE (extend cell))) (QP.LOOK.EXTEND.CELL 
CLAUSE INSTR2)) (T (QP.LOOK.EXTEND CLAUSE INSTR2))))) ((EQUAL FIELDS NIL) (QP.LOOK.NULL CLAUSE INSTR))
 ((MEMBER FIELDS (QUOTE ((byte) (y1) (a1)))) (QP.LOOK.BYTE CLAUSE INSTR (CAR FIELDS))) ((EQUAL FIELDS 
(QUOTE (cell))) (QP.LOOK.CELL CLAUSE INSTR)) ((EQUAL FIELDS (QUOTE (functor))) (QP.LOOK.FUNCTOR CLAUSE
 INSTR)) ((EQUAL FIELDS (QUOTE (atom))) (QP.LOOK.ATOM CLAUSE INSTR)) ((EQUAL FIELDS (QUOTE (a1 cell)))
 (QP.LOOK.BYTE.CELL CLAUSE INSTR)) ((MEMBER FIELDS (QUOTE ((a1 y2) (a2 y1) (a2 a1) (a1 a2)))) (
QP.LOOK.BYTE.BYTE CLAUSE INSTR (SELECTQ (CAR FIELDS) (a1 (QUOTE NORMAL)) (a2 (QUOTE REVERSED)) (
SHOULDNT)) (SELECTQ (CADR FIELDS) ((y1 y2) (QUOTE PERMANENT)) ((a1 a2) (QUOTE ARGUMENT)) (SHOULDNT))))
 ((EQUAL FIELDS (QUOTE (a1 functor))) (QP.LOOK.BYTE.FUNCTOR CLAUSE INSTR)) ((EQUAL FIELDS (QUOTE (a1 
atom))) (QP.LOOK.BYTE.ATOM CLAUSE INSTR)) ((EQUAL FIELDS (QUOTE (size procedure))) (
QP.LOOK.SIZE.PROCEDURE CLAUSE INSTR)) ((EQUAL FIELDS (QUOTE (size offset))) (QP.LOOK.SIZE.OFFSET 
CLAUSE INSTR)) ((EQUAL FIELDS (QUOTE (procedure))) (QP.LOOK.PROCEDURE CLAUSE INSTR)) ((EQUAL FIELDS (
QUOTE (offset))) (QP.LOOK.OFFSET CLAUSE INSTR)) ((EQUAL FIELDS (QUOTE (clause))) (QP.LOOK.CLAUSE 
CLAUSE INSTR)) (T (PRINT (LIST OPCODE INSTR FIELDS)) (SHOULDNT)))))

(QP.LOOK.PROCEDURE
(LAMBDA (CLAUSE INSTR) (PRINT (CONS INSTR (QP.P.PROCEDURE (\GETBASEPTR CLAUSE QP.CLAUSE.OFFSET)))) (
INCR QP.CLAUSE.OFFSET 2)))

(QP.LOOK.SIZE.OFFSET
(LAMBDA (CLAUSE INSTR) (LET* ((CLAUSE.HILOC (\HILOC CLAUSE)) (CLAUSE.LOLOC (\LOLOC CLAUSE)) (
CLAUSE.BEGIN (IPLUS (LLSH CLAUSE.HILOC 16) CLAUSE.LOLOC)) (INSTR.ADDR (IPLUS (ITIMES (\RIGHTBYTE 
CLAUSE QP.CLAUSE.OFFSET) 65536) (\GETBASE CLAUSE (ADD1 QP.CLAUSE.OFFSET)))) (OFFSET (IDIFFERENCE 
INSTR.ADDR CLAUSE.BEGIN))) (PRINT (LIST INSTR (IQUOTIENT (\GETBASE CLAUSE (IPLUS QP.CLAUSE.OFFSET 2)) 
2) (QUOTE +) OFFSET)) (INCR QP.CLAUSE.OFFSET 3))))

(QP.LOOK.SIZE.PROCEDURE
(LAMBDA (CLAUSE INSTR) (PRINT (NCONC (LIST INSTR (IQUOTIENT (\GETBASE CLAUSE (IPLUS QP.CLAUSE.OFFSET 2
)) 2)) (QP.P.PROCEDURE (\GETBASEPTR CLAUSE QP.CLAUSE.OFFSET)))) (INCR QP.CLAUSE.OFFSET 3)))

(QP.OBJ.TAG
(LAMBDA (OBJ) (SELECTQ (TYPENAME OBJ) (LITATOM symbol.tag.16) (SMALLP immed.tag.16) (FIXP boxed.tag.16
) (FLOATP float.tag.16) (BIGNUM boxed.tag.16) (SHOULDNT (QUOTE QP.OBJ.TAG)))))

(QP.RECONSULT
(LAMBDA (FILE) (LET ((FORM NIL) (TABLE (HASHARRAY 500 1.5)) (STREAM (OPENSTREAM FILE (QUOTE INPUT)))) 
(UNTIL (EQ (SETQ FORM (READ STREAM T)) (QUOTE STOP)) DO (PROGN (COND ((EQ (CAR FORM) (QUOTE 
ASSEMBLE.CLAUSE)) (LET* ((PROC (CADR FORM)) (NAME (CAR PROC)) (ARITY (CADR PROC)) (MODULE (CADDR PROC)
) (PROCREC (QP.LOCAL.PREDICATE NAME ARITY MODULE))) (COND ((NOT (GETHASH PROCREC TABLE)) (PUTHASH 
PROCREC T TABLE) (QP.ABOLISH NAME ARITY MODULE))) (EVAL FORM))) (T (EVAL FORM))))) (PRINT (CLOSEF 
STREAM)))))

(QP.STORE.INCORE
(LAMBDA (INSTR ARG1 ARG2 ARG3 ARG4) (QP.STORE.INSTR QP.LAST.CLAUSE.RECORD INSTR ARG1 ARG2 ARG3 ARG4)))

(QP.STORE.INDEX
(LAMBDA (CLAUSE INSTR NEXTCLAUSE) (\PUTBASEPTR CLAUSE 0 (OR NEXTCLAUSE QP.FAILURE.CLAUSE)) (\PUTBASE 
CLAUSE 0 (IPLUS (\GETBASE CLAUSE 0) (QP.LEFT.OP.CODE INSTR)))))

(QP.STORE.INSTR
(LAMBDA ARGLIST (LET* ((CLAUSE (ARG ARGLIST 1)) (INSTR (ARG ARGLIST 2)) (OPCODE (GETHASH INSTR 
QP.INSTRUCTION.HARRAY)) (FIELDS (CADR (GETHASH OPCODE QP.INSTRUCTION.HARRAY)))) (COND ((EQUAL INSTR (
QUOTE load.pvar.address)) (SHOULDNT (QUOTE load.pvar.address))) ((EQUAL OPCODE QP.EXTENSION.OPCODE) (
LET ((TYPE (CADDR (GETHASH (GETHASH INSTR QP.EXTENSION.HARRAY) QP.EXTENSION.HARRAY)))) (COND ((EQ TYPE
 (QUOTE word)) (QP.STORE.INSTR.EXTEND.WORD CLAUSE INSTR (ARG ARGLIST 3))) ((EQ TYPE (QUOTE cell)) (
QP.STORE.INSTR.EXTEND.CELL CLAUSE INSTR (ARG ARGLIST 3))) (T (QP.STORE.INSTR.EXTEND CLAUSE INSTR))))) 
(T (SELECTQ FIELDS (NIL (QP.STORE.INSTR.NULL CLAUSE INSTR)) (a1.cell (QP.STORE.INSTR.BYTE.CELL CLAUSE 
INSTR (ARG ARGLIST 3) (ARG ARGLIST 4))) (a1.atom (QP.STORE.INSTR.BYTE.ATOM CLAUSE INSTR (ARG ARGLIST 3
) (ARG ARGLIST 4))) (a1.functor (QP.STORE.INSTR.BYTE.FUNCTOR CLAUSE INSTR (ARG ARGLIST 3) (ARG ARGLIST
 4) (ARG ARGLIST 5))) (a1.y2 (QP.STORE.INSTR.BYTE.BYTE CLAUSE INSTR (ARG ARGLIST 3) (ARG ARGLIST 4) (
QUOTE a1) (QUOTE y2))) (a2.y1 (QP.STORE.INSTR.BYTE.BYTE CLAUSE INSTR (ARG ARGLIST 3) (ARG ARGLIST 4) (
QUOTE a2) (QUOTE y1))) (a2.a1 (QP.STORE.INSTR.BYTE.BYTE CLAUSE INSTR (ARG ARGLIST 3) (ARG ARGLIST 4) (
QUOTE a2) (QUOTE a1))) (a1.a2 (QP.STORE.INSTR.BYTE.BYTE CLAUSE INSTR (ARG ARGLIST 3) (ARG ARGLIST 4) (
QUOTE a1) (QUOTE a2))) (a1 (QP.STORE.INSTR.AREG CLAUSE INSTR (ARG ARGLIST 3))) (y1 (
QP.STORE.INSTR.BYTE CLAUSE INSTR (ARG ARGLIST 3) (QUOTE y1))) (byte (QP.STORE.INSTR.BYTE CLAUSE INSTR 
(ARG ARGLIST 3) (QUOTE byte))) (cell (QP.STORE.INSTR.CELL CLAUSE INSTR (ARG ARGLIST 3))) (functor (
QP.STORE.INSTR.FUNCTOR CLAUSE INSTR (ARG ARGLIST 3) (ARG ARGLIST 4))) (atom (QP.STORE.INSTR.ATOM 
CLAUSE INSTR (ARG ARGLIST 3))) (size.procedure (QP.STORE.INSTR.SIZE.PROCEDURE CLAUSE INSTR (ARG 
ARGLIST 3) (ARG ARGLIST 4) (ARG ARGLIST 5) (ARG ARGLIST 6))) (size.offset (QP.STORE.INSTR.SIZE.OFFSET 
CLAUSE INSTR (ARG ARGLIST 3) (ARG ARGLIST 4))) (offset (QP.STORE.INSTR.OFFSET CLAUSE INSTR (ARG 
ARGLIST 3))) (procedure (QP.STORE.INSTR.PROCEDURE CLAUSE INSTR (ARG ARGLIST 3) (ARG ARGLIST 4) (ARG 
ARGLIST 5))) (PROGN (PRINT (LIST OPCODE INSTR FIELDS)) (SHOULDNT))))))))

(QP.STORE.INSTR.AREG
(LAMBDA (CLAUSEPTR INSTR BYTE) (LET ((OPCODE (QP.LEFT.OP.CODE INSTR))) (QP.REGISTER.OR.MEMORY.1 BYTE 
OPCODE) (\PUTBASE CLAUSEPTR QP.CLAUSE.OFFSET (IPLUS BYTE OPCODE)) (INCR QP.CLAUSE.OFFSET 1))))

(QP.STORE.INSTR.ATOM
(LAMBDA (CLAUSEPTR INSTR ATOM) (LET ((PLACE (\ADDBASE CLAUSEPTR QP.CLAUSE.OFFSET))) (\PUTBASE PLACE 0 
(QP.LEFT.OP.CODE INSTR)) (\PUTBASE PLACE 1 (\LOLOC ATOM))) (INCR QP.CLAUSE.OFFSET 2)))

(QP.STORE.INSTR.BYTE
(LAMBDA (CLAUSEPTR INSTR BYTE TYPE) (\PUTBASE CLAUSEPTR QP.CLAUSE.OFFSET (IPLUS (SELECTQ TYPE ((a1 
byte) BYTE) (y1 (IPLUS BYTE QP.PERMANENT.OFFSET)) (SHOULDNT)) (QP.LEFT.OP.CODE INSTR))) (INCR 
QP.CLAUSE.OFFSET 1)))

(QP.STORE.INSTR.BYTE.ATOM
(LAMBDA (CLAUSEPTR INSTR BYTE ATOM) (LET ((OPCODE (QP.LEFT.OP.CODE INSTR))) (QP.REGISTER.OR.MEMORY.1 
BYTE OPCODE) (\PUTBASE CLAUSEPTR QP.CLAUSE.OFFSET (IPLUS BYTE OPCODE)) (\PUTBASE CLAUSEPTR (ADD1 
QP.CLAUSE.OFFSET) (\LOLOC ATOM)) (INCR QP.CLAUSE.OFFSET 2))))

(QP.STORE.INSTR.BYTE.BYTE
(LAMBDA (CLAUSEPTR INSTR BYTE1 BYTE2 FIELD1 FIELD2) (LET ((OPCODE (QP.LEFT.OP.CODE INSTR)) (HAS.Y.REG 
(OR (MEMBER FIELD1 (QUOTE (y1 y2))) (MEMBER FIELD2 (QUOTE (y1 y2)))))) (COND ((EQ FIELD1 (QUOTE a1)) (
COND ((GREATERP BYTE1 4) (INCR OPCODE 512)) (T (SETQ BYTE1 (QP.AREG.REGISTER BYTE1))))) ((EQ FIELD2 (
QUOTE a1)) (COND ((GREATERP BYTE2 4) (INCR OPCODE 512)) (T (SETQ BYTE2 (QP.AREG.REGISTER BYTE2)))))) (
COND ((EQ FIELD1 (QUOTE a2)) (COND ((MEMBER FIELD2 (QUOTE (y1 y2))) (COND ((GREATERP BYTE1 4) (INCR 
OPCODE 512)) (T (SETQ BYTE1 (QP.AREG.REGISTER BYTE1))))) (T (COND ((GREATERP BYTE1 4) (INCR OPCODE 
1024)) (T (SETQ BYTE1 (QP.AREG.REGISTER BYTE1))))))) ((EQ FIELD2 (QUOTE a2)) (COND ((MEMBER FIELD2 (
QUOTE (y1 y2))) (COND ((GREATERP BYTE2 4) (INCR OPCODE 512)) (T (SETQ BYTE2 (QP.AREG.REGISTER BYTE2)))
)) (T (COND ((GREATERP BYTE2 4) (INCR OPCODE 1024)) (T (SETQ BYTE2 (QP.AREG.REGISTER BYTE2)))))))) (
LET (DEST1 DEST2) (COND ((MEMBER FIELD2 (QUOTE (y1 y2))) (SETQ BYTE2 (IPLUS BYTE2 QP.PERMANENT.OFFSET)
))) (COND ((EQ FIELD1 (QUOTE a2)) (SETQ DEST1 BYTE2) (SETQ DEST2 BYTE1)) ((EQ FIELD1 (QUOTE a1)) (SETQ
 DEST1 BYTE1) (SETQ DEST2 BYTE2)) (T (SHOULDNT))) (\PUTBASE CLAUSEPTR QP.CLAUSE.OFFSET (IPLUS DEST1 
OPCODE)) (\PUTBASE CLAUSEPTR (ADD1 QP.CLAUSE.OFFSET) DEST2) (INCR QP.CLAUSE.OFFSET 2)))))

(QP.STORE.INSTR.BYTE.CELL
(LAMBDA (CLAUSEPTR INSTR BYTE CELL) (LET ((OPCODE (QP.LEFT.OP.CODE INSTR))) (QP.REGISTER.OR.MEMORY.1 
BYTE OPCODE) (\PUTBASE CLAUSEPTR QP.CLAUSE.OFFSET (IPLUS BYTE OPCODE)) (LET ((NEXT (ADD1 
QP.CLAUSE.OFFSET))) (QP.LOAD.GC.PROTECT CELL) (\PUTBASE CLAUSEPTR NEXT (PLUS (QP.OBJ.TAG CELL) (\HILOC
 CELL))) (\PUTBASE CLAUSEPTR (ADD1 NEXT) (\LOLOC CELL)) (INCR QP.CLAUSE.OFFSET 3)))))

(QP.STORE.INSTR.BYTE.FUNCTOR
(LAMBDA (CLAUSEPTR INSTR BYTE NAME ARITY) (LET ((PLACE (\ADDBASE CLAUSEPTR QP.CLAUSE.OFFSET)) (OPCODE 
(QP.LEFT.OP.CODE INSTR))) (QP.REGISTER.OR.MEMORY.1 BYTE OPCODE) (\PUTBASE PLACE 0 (PLUS BYTE OPCODE)) 
(\PUTBASE PLACE 1 (PLUS symbol.tag.16 ARITY)) (\PUTBASE PLACE 2 (\LOLOC NAME))) (INCR QP.CLAUSE.OFFSET
 3)))

(QP.STORE.INSTR.CELL
(LAMBDA (CLAUSEPTR INSTR CELL) (QP.LOAD.GC.PROTECT CELL) (LET ((PLACE (\ADDBASE CLAUSEPTR 
QP.CLAUSE.OFFSET))) (\PUTBASE PLACE 0 (QP.LEFT.OP.CODE INSTR)) (\PUTBASE PLACE 1 (PLUS (QP.OBJ.TAG 
CELL) (\HILOC CELL))) (\PUTBASE PLACE 2 (\LOLOC CELL))) (INCR QP.CLAUSE.OFFSET 3)))

(QP.STORE.INSTR.EXTEND
(LAMBDA (CLAUSEPTR INSTR) (LET ((SECONDARY (GETHASH INSTR QP.EXTENSION.HARRAY))) (\PUTBASE CLAUSEPTR 
QP.CLAUSE.OFFSET (IPLUS (LLSH QP.EXTENSION.OPCODE 8) SECONDARY)) (INCR QP.CLAUSE.OFFSET 1))))

(QP.STORE.INSTR.EXTEND.CELL
(LAMBDA (CLAUSEPTR INSTR CELL) (LET ((SECONDARY (GETHASH INSTR QP.EXTENSION.HARRAY))) (\PUTBASE 
CLAUSEPTR QP.CLAUSE.OFFSET (IPLUS (LLSH QP.EXTENSION.OPCODE 8) SECONDARY)) (QP.LOAD.GC.PROTECT CELL) (
\PUTBASE CLAUSEPTR (ADD1 QP.CLAUSE.OFFSET) (IPLUS (QP.OBJ.TAG CELL) (\HILOC CELL))) (\PUTBASE 
CLAUSEPTR (IPLUS QP.CLAUSE.OFFSET 2) (\LOLOC CELL)) (INCR QP.CLAUSE.OFFSET 3))))

(QP.STORE.INSTR.EXTEND.WORD
(LAMBDA (CLAUSEPTR INSTR WORD) (LET ((SECONDARY (GETHASH INSTR QP.EXTENSION.HARRAY))) (\PUTBASE 
CLAUSEPTR QP.CLAUSE.OFFSET (IPLUS (LLSH QP.EXTENSION.OPCODE 8) SECONDARY)) (\PUTBASE CLAUSEPTR (ADD1 
QP.CLAUSE.OFFSET) (\LOLOC WORD)) (INCR QP.CLAUSE.OFFSET 2))))

(QP.STORE.INSTR.FUNCTOR
(LAMBDA (CLAUSEPTR INSTR NAME ARITY) (LET ((PLACE (\ADDBASE CLAUSEPTR QP.CLAUSE.OFFSET))) (\PUTBASE 
PLACE 0 (QP.LEFT.OP.CODE INSTR)) (\PUTBASE PLACE 1 (IPLUS symbol.tag.16 ARITY)) (\PUTBASE PLACE 2 (
\LOLOC NAME))) (INCR QP.CLAUSE.OFFSET 3)))

(QP.STORE.INSTR.NULL
(LAMBDA (CLAUSEPTR INSTR) (\PUTBASE CLAUSEPTR QP.CLAUSE.OFFSET (QP.LEFT.OP.CODE INSTR)) (INCR 
QP.CLAUSE.OFFSET 1)))

(QP.STORE.INSTR.OFFSET
(LAMBDA (CLAUSEPTR INSTR OFFSET) (LET* ((CLAUSE.HILOC (\HILOC CLAUSEPTR)) (CLAUSE.LOLOC (\LOLOC 
CLAUSEPTR)) (ADDRESS (IPLUS OFFSET (LLSH CLAUSE.HILOC 16) CLAUSE.LOLOC)) (ADDRESS.HILOC (LRSH ADDRESS 
16)) (ADDRESS.LOLOC (LOGAND ADDRESS 65535))) (\PUTBASE CLAUSEPTR QP.CLAUSE.OFFSET (IPLUS (
QP.LEFT.OP.CODE INSTR) ADDRESS.HILOC)) (\PUTBASE CLAUSEPTR (ADD1 QP.CLAUSE.OFFSET) ADDRESS.LOLOC) (
INCR QP.CLAUSE.OFFSET 2))))

(QP.STORE.INSTR.PROCEDURE
(LAMBDA (CLAUSEPTR INSTR NAME ARITY MODULE) (LET ((PROC (QP.LOCAL.PREDICATE NAME ARITY MODULE)) (PLACE
 (\ADDBASE CLAUSEPTR QP.CLAUSE.OFFSET))) (\PUTBASE PLACE 0 (PLUS (QP.LEFT.OP.CODE INSTR) (\HILOC PROC)
)) (\PUTBASE PLACE 1 (\LOLOC PROC))) (INCR QP.CLAUSE.OFFSET 2)))

(QP.STORE.INSTR.SIZE.OFFSET
(LAMBDA (CLAUSEPTR INSTR SIZE OFFSET) (LET* ((CLAUSE.HILOC (\HILOC CLAUSEPTR)) (CLAUSE.LOLOC (\LOLOC 
CLAUSEPTR)) (ADDRESS (IPLUS OFFSET (LLSH CLAUSE.HILOC 16) CLAUSE.LOLOC)) (ADDRESS.HILOC (LRSH ADDRESS 
16)) (ADDRESS.LOLOC (LOGAND ADDRESS 65535))) (\PUTBASE CLAUSEPTR QP.CLAUSE.OFFSET (IPLUS (
QP.LEFT.OP.CODE INSTR) ADDRESS.HILOC)) (\PUTBASE CLAUSEPTR (ADD1 QP.CLAUSE.OFFSET) ADDRESS.LOLOC) (
\PUTBASE CLAUSEPTR (IPLUS QP.CLAUSE.OFFSET 2) (ITIMES 2 SIZE)) (INCR QP.CLAUSE.OFFSET 3))))

(QP.STORE.INSTR.SIZE.PROCEDURE
(LAMBDA (CLAUSEPTR INSTR SIZE NAME ARITY MODULE) (LET ((PROC (QP.LOCAL.PREDICATE NAME ARITY MODULE))) 
(\PUTBASE CLAUSEPTR QP.CLAUSE.OFFSET (IPLUS (QP.LEFT.OP.CODE INSTR) (\HILOC PROC))) (\PUTBASE 
CLAUSEPTR (ADD1 QP.CLAUSE.OFFSET) (\LOLOC PROC)) (\PUTBASE CLAUSEPTR (IPLUS QP.CLAUSE.OFFSET 2) (
ITIMES 2 SIZE)) (INCR QP.CLAUSE.OFFSET 3))))

(QP.TRAP.CLAUSE
(NLAMBDA (CLAUSE NAME ARITY MODULE) (SETQ CLAUSE (SETTOPVAL CLAUSE (\MAKENUMBER 2 0))) (\PUTBASEPTR 
CLAUSE 0 (QP.LOCAL.PREDICATE NAME ARITY MODULE)) (\PUTBASEBYTE CLAUSE 0 (QP.OP.CODE (QUOTE trap)))))

(QP.UNIT.CLAUSE
(NLAMBDA (OPCODE NAME ARITY MODULE) (SETQ NAME (QP.LOCAL.PREDICATE NAME ARITY MODULE)) (SETQ OPCODE (
\MAKENUMBER (QP.LEFT.OP.CODE OPCODE) 0)) (\ADDREF OPCODE) (SETF (PROC.CLAUSES NAME) OPCODE) (SETF (
PROC.LASTCLAUSE NAME) QP.FAILURE.CLAUSE) (SETF (PROC.LOFLAG NAME) 1) OPCODE))
)

(RPAQQ QP.LAST.CLAUSE.RECORD NIL)
(PRETTYCOMPRINT LOADCOMS)

(RPAQQ LOADCOMS ((ADDVARS (GLOBALVARS QP.LAST.CLAUSE.RECORD) (GLOBALVARS QP.CLAUSE.OFFSET) (
GLOBALVARS QP.DUMMY.CLAUSE) (GLOBALVARS QP.DEBUG.CLAUSE) (GLOBALVARS QP.INTERPRET.CLAUSE) (GLOBALVARS 
QP.UNDEFINED.CLAUSE) (GLOBALVARS QP.FAILURE.CLAUSE)) (MACROS QP.REGISTER.OR.MEMORY.1 \LEFTBYTE 
\RIGHTBYTE) (FNS ASSEMBLE.CLAUSE QP.ADD.CLAUSE QP.ALLOCATE.CLAUSE.RECORD QP.AREG.REGISTER 
QP.ATTACH.CLAUSE.RECORD QP.INITIALIZE.PROLOG QP.LOOK QP.LOOK.ATOM QP.LOOK.BYTE QP.LOOK.BYTE.ATOM 
QP.LOOK.BYTE.BYTE QP.LOOK.BYTE.CELL QP.LOOK.BYTE.FUNCTOR QP.LOOK.CELL QP.LOOK.CLAUSE QP.LOOK.CONSTANT 
QP.LOOK.EXTEND QP.LOOK.EXTEND.CELL QP.LOOK.EXTEND.WORD QP.LOOK.FUNCTOR QP.LOOK.INSTR QP.LOOK.NULL 
QP.LOOK.OFFSET QP.LOOK.ONE.CLAUSE QP.LOOK.OPCODE QP.LOOK.PROCEDURE QP.LOOK.SIZE.OFFSET 
QP.LOOK.SIZE.PROCEDURE QP.OBJ.TAG QP.RECONSULT QP.STORE.INCORE QP.STORE.INDEX QP.STORE.INSTR 
QP.STORE.INSTR.AREG QP.STORE.INSTR.ATOM QP.STORE.INSTR.BYTE QP.STORE.INSTR.BYTE.ATOM 
QP.STORE.INSTR.BYTE.BYTE QP.STORE.INSTR.BYTE.CELL QP.STORE.INSTR.BYTE.FUNCTOR QP.STORE.INSTR.CELL 
QP.STORE.INSTR.EXTEND QP.STORE.INSTR.EXTEND.CELL QP.STORE.INSTR.EXTEND.WORD QP.STORE.INSTR.FUNCTOR 
QP.STORE.INSTR.NULL QP.STORE.INSTR.OFFSET QP.STORE.INSTR.PROCEDURE QP.STORE.INSTR.SIZE.OFFSET 
QP.STORE.INSTR.SIZE.PROCEDURE QP.TRAP.CLAUSE QP.UNIT.CLAUSE) (VARS (QP.LAST.CLAUSE.RECORD NIL)) (
DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA ASSEMBLE.CLAUSE) (NLAML 
QP.UNIT.CLAUSE QP.TRAP.CLAUSE) (LAMA QP.STORE.INSTR)))))
(DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS 

(ADDTOVAR NLAMA ASSEMBLE.CLAUSE)

(ADDTOVAR NLAML QP.UNIT.CLAUSE QP.TRAP.CLAUSE)

(ADDTOVAR LAMA QP.STORE.INSTR)
)
(PUTPROPS LOAD COPYRIGHT ("Quintus Computer Systems, Inc" 1986))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (2458 21969 (ASSEMBLE.CLAUSE 2468 . 3072) (QP.ADD.CLAUSE 3074 . 3757) (
QP.ALLOCATE.CLAUSE.RECORD 3759 . 3895) (QP.AREG.REGISTER 3897 . 3967) (QP.ATTACH.CLAUSE.RECORD 3969 . 
4130) (QP.INITIALIZE.PROLOG 4132 . 4940) (QP.LOOK 4942 . 5564) (QP.LOOK.ATOM 5566 . 5708) (
QP.LOOK.BYTE 5710 . 5943) (QP.LOOK.BYTE.ATOM 5945 . 6129) (QP.LOOK.BYTE.BYTE 6131 . 6569) (
QP.LOOK.BYTE.CELL 6571 . 6748) (QP.LOOK.BYTE.FUNCTOR 6750 . 6985) (QP.LOOK.CELL 6987 . 7174) (
QP.LOOK.CLAUSE 7176 . 7369) (QP.LOOK.CONSTANT 7371 . 7510) (QP.LOOK.EXTEND 7512 . 7601) (
QP.LOOK.EXTEND.CELL 7603 . 7766) (QP.LOOK.EXTEND.WORD 7768 . 7946) (QP.LOOK.FUNCTOR 7948 . 8140) (
QP.LOOK.INSTR 8142 . 8672) (QP.LOOK.NULL 8674 . 8761) (QP.LOOK.OFFSET 8763 . 9166) (QP.LOOK.ONE.CLAUSE
 9168 . 9290) (QP.LOOK.OPCODE 9292 . 10982) (QP.LOOK.PROCEDURE 10984 . 11134) (QP.LOOK.SIZE.OFFSET 
11136 . 11604) (QP.LOOK.SIZE.PROCEDURE 11606 . 11828) (QP.OBJ.TAG 11830 . 12027) (QP.RECONSULT 12029
 . 12555) (QP.STORE.INCORE 12557 . 12680) (QP.STORE.INDEX 12682 . 12867) (QP.STORE.INSTR 12869 . 15071
) (QP.STORE.INSTR.AREG 15073 . 15294) (QP.STORE.INSTR.ATOM 15296 . 15510) (QP.STORE.INSTR.BYTE 15512
 . 15753) (QP.STORE.INSTR.BYTE.ATOM 15755 . 16046) (QP.STORE.INSTR.BYTE.BYTE 16048 . 17391) (
QP.STORE.INSTR.BYTE.CELL 17393 . 17803) (QP.STORE.INSTR.BYTE.FUNCTOR 17805 . 18152) (
QP.STORE.INSTR.CELL 18154 . 18453) (QP.STORE.INSTR.EXTEND 18455 . 18677) (QP.STORE.INSTR.EXTEND.CELL 
18679 . 19086) (QP.STORE.INSTR.EXTEND.WORD 19088 . 19380) (QP.STORE.INSTR.FUNCTOR 19382 . 19653) (
QP.STORE.INSTR.NULL 19655 . 19796) (QP.STORE.INSTR.OFFSET 19798 . 20243) (QP.STORE.INSTR.PROCEDURE 
20245 . 20545) (QP.STORE.INSTR.SIZE.OFFSET 20547 . 21066) (QP.STORE.INSTR.SIZE.PROCEDURE 21068 . 21443
) (QP.TRAP.CLAUSE 21445 . 21666) (QP.UNIT.CLAUSE 21668 . 21967)))))
STOP