(FILECREATED "16-Sep-84 21:32:24" {ERIS}<HERRING>BUSEXTENDER.;8 3309
changes to: (VARS BUSEXTENDERCOMS)
previous date: "14-Sep-84 17:39:12" {ERIS}<HERRING>BUSEXTENDER.;7)
(* Copyright (c) 1984 by Xerox Corporation. All rights reserved.)
(PRETTYCOMPRINT BUSEXTENDERCOMS)
(RPAQQ BUSEXTENDERCOMS ((FNS BX.INPUT BX.OUTPUT BX.READSTATUS)
(MACROS BX.INPUT BX.OUTPUT)))
(DEFINEQ
(BX.INPUT
[LAMBDA (ADDR) (* jmh "8-Sep-84 15:50")
(* * return the datum at the BX address = SUA.4-7,,fY.1)
(\DEVICE.INPUT (IPLUS (LLSH (LOGAND ADDR 30)
3)
(if (ZEROP (LOGAND ADDR 1))
then 10
else 9])
(BX.OUTPUT
[LAMBDA (DATUM ADDR) (* jmh "8-Sep-84 15:50")
(* * write the datum to the BX address = SUA.4-7,,fY.1)
(\DEVICE.OUTPUT DATUM (IPLUS (LLSH (LOGAND ADDR 30)
3)
(if (ZEROP (LOGAND ADDR 1))
then 11
else 0])
(BX.READSTATUS
[LAMBDA NIL (* jmh " 8-Sep-84 15:50")
(* * return FPI.0-3 -- get them from PPort -- have to enable them onto PPort first)
(\DEVICE.OUTPUT 0 14)
(LOGAND 15 (LRSH (\DEVICE.INPUT 7)
4])
)
(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]
(SETQ ADDRARG (CAR ARGLIST))
(RETURN (if [AND (SETQ LISTOFADDRVAL (CONSTANTEXPRESSIONP ADDRARG))
(SMALLP (SETQ ADDRVAL (CAR LISTOFADDRVAL]
then
[BQUOTE (\DEVICE.INPUT , (IPLUS (LLSH (LOGAND ADDRARG 30)
3)
(if (ZEROP (LOGAND ADDRARG 1))
then 10 else 9]
else
(BQUOTE (\DEVICE.INPUT (IPLUS (LLSH (LOGAND , ADDRARG 30)
3)
(if (ZEROP (LOGAND , ADDRARG 1))
then 10 else 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]
(SETQ DATUMARG (CAR ARGLIST))
(SETQ ADDRARG (CADR ARGLIST))
(RETURN (if [AND (SETQ LISTOFADDRVAL (CONSTANTEXPRESSIONP ADDRARG))
(SMALLP (SETQ ADDRVAL (CAR LISTOFADDRVAL]
then
[BQUOTE (\DEVICE.OUTPUT , DATUMARG ,
(IPLUS (LLSH (LOGAND ADDRARG 30)
3)
(if (ZEROP (LOGAND ADDRARG 1))
then 11 else 0]
else
(BQUOTE (\DEVICE.OUTPUT , DATUMARG
(IPLUS (LLSH (LOGAND , ADDRARG 30)
3)
(if (ZEROP (LOGAND , ADDRARG 1))
then 11 else 0])
)
(PUTPROPS BUSEXTENDER COPYRIGHT ("Xerox Corporation" 1984))
(DECLARE: DONTCOPY
(FILEMAP (NIL (398 1336 (BX.INPUT 408 . 719) (BX.OUTPUT 721 . 1046) (BX.READSTATUS 1048 . 1334)))))
STOP