(FILECREATED "23-Feb-86 15:26:27" ("compiled on " {ERIS}LIBRARY>BUSEXTENDER.;3) "20-Feb-86 23:08:17" recompiled changes: BX.INPUT BX.OUTPUT BX.READSTATUS \MISC1.UFN \MISC2.UFN in "Xerox Lisp 20-Feb-86 ..." dated "20-Feb-86 23:44:46") (FILECREATED "23-Feb-86 15:26:16" {ERIS}LIBRARY>BUSEXTENDER.;3 8455 changes to: (VARS BUSEXTENDERCOMS) (FNS BX.INPUT BX.OUTPUT BX.READSTATUS \MISC1.UFN \MISC2.UFN) previous date: "19-Aug-85 11:14:06" {ERIS}LIBRARY>BUSEXTENDER.;2) BX.INPUT D1 (L (0 ADDR)) @l@kjl l xNIL NIL () BX.OUTPUT D1 (L (1 ADDR 0 DATUM)) @AlAkjl jyNIL NIL () BX.READSTATUS D1 NIL jlylxlNIL NIL () \MISC1.UFN D1 (I 1 ALPHA I 0 ARG) Ako oA (23Q RAID 12Q ERROR) NIL ( 17Q "Unimplemented MISC1 op" 7 "Attempt to access bus extender option on a machine which does not support it") \MISC2.UFN D1 (I 2 ALPHA I 1 ARG1 I 0 ARG0) Blo oB (24Q RAID 13Q ERROR) NIL ( 20Q "Unimplemented MISC2 op" 10Q "Attempt to access bus extender option on a machine which does not support it") (PRETTYCOMPRINT BUSEXTENDERCOMS) (RPAQQ BUSEXTENDERCOMS ((FNS BX.INPUT BX.OUTPUT BX.READSTATUS) (* so that the macros will loadcomp from the compiled file) (DECLARE: DOCOPY (DECLARE: EVAL@LOAD EVAL@COMPILE (MACROS BX.INPUT BX.OUTPUT)) ) (* to generate errors on non-1109s) (FNS \MISC1.UFN \MISC2.UFN))) (DECLARE: EVAL@LOAD EVAL@COMPILE (DECLARE: EVAL@COMPILE (PUTPROPS BX.INPUT DMACRO (ARGLIST (PROG ( ADDRARG LISTOFADDRVAL ADDRVAL) (* * The point of this macro is that almost all of the code of the function can be computed at compile time if the argument is known at compile time -- The function is -- (\DEVICE.INPUT (IPLUS (LLSH (LOGAND ADDR 30) 3) (if (ZEROP (LOGAND ADDR 1)) then 10 else 9)))) (* * ht put the expansions for \DEVICE.INPUT in by hand instead of defining a macro on the grounds that this way if the opcode ever changes only BUSMASTER/EXTENDER users are screwed, not random folk who happen to have compiled something which includes a \DEVICE.INPUT) (SETQ ADDRARG (CAR ARGLIST)) (RETURN (COND ((AND (SETQ LISTOFADDRVAL (CONSTANTEXPRESSIONP ADDRARG)) (SMALLP (SETQ ADDRVAL (CAR LISTOFADDRVAL)))) (BQUOTE ((OPCODES MISC1 1) , (IPLUS (LLSH (LOGAND ADDRARG 30) 3) (COND ((ZEROP ( LOGAND ADDRARG 1)) 10) (T 9)))))) (T (BQUOTE ((OPCODES MISC1 1) (IPLUS (LLSH (LOGAND , ADDRARG 30) 3) (COND ((ZEROP (LOGAND , ADDRARG 1)) 10) (T 9))))))))))) (PUTPROPS BX.OUTPUT DMACRO (ARGLIST (PROG ( DATUMARG ADDRARG LISTOFADDRVAL ADDRVAL) (* * The point of this macro is that almost all of the code of the function can be computed at compile time if the argument is known at compile time -- The function is -- (\DEVICE.OUTPUT DATUM (IPLUS (LLSH (LOGAND ADDR 30) 3) (if (ZEROP (LOGAND ADDR 1)) then 11 else 0)))) (* * ht put the expansions for \DEVICE.OUTPUT in by hand instead of defining a macro on the grounds that this way if the opcode ever changes only BUSMASTER/EXTENDER users are screwed, not random folk who happen to have compiled something which includes a \DEVICE.OUTPUT) (SETQ DATUMARG (CAR ARGLIST)) (SETQ ADDRARG (CADR ARGLIST)) (RETURN (COND ((AND (SETQ LISTOFADDRVAL (CONSTANTEXPRESSIONP ADDRARG)) (SMALLP (SETQ ADDRVAL (CAR LISTOFADDRVAL)))) (BQUOTE ((OPCODES MISC2 2) , DATUMARG , (IPLUS (LLSH (LOGAND ADDRARG 30) 3) (COND ((ZEROP (LOGAND ADDRARG 1)) 11) (T 0)))))) (T (BQUOTE ((OPCODES MISC2 2) , DATUMARG (IPLUS (LLSH (LOGAND , ADDRARG 30) 3) (COND ((ZEROP (LOGAND , ADDRARG 1)) 11) (T 0 ))))))))))))) (PUTPROPS BUSEXTENDER COPYRIGHT ("Xerox Corporation" 1984 1985 1986)) NIL