(FILECREATED "20-Feb-87 17:06:40" {DSK}<LISPFILES>STC>PATCH>DV-RS232CPATCH.;1 18252 changes to: (VARS DV-RS232CPATCHCOMS) (FNS \DVRS232C.SET.PARAMETERS \DVRS232C.ISSUE.SHORT.COMMAND)) (PRETTYCOMPRINT DV-RS232CPATCHCOMS) (RPAQQ DV-RS232CPATCHCOMS ((FNS \DVRS232C.SET.PARAMETERS \DVRS232C.ISSUE.SHORT.COMMAND))) (DEFINEQ (\DVRS232C.SET.PARAMETERS [LAMBDA (PARAMETERLIST) (* AS "20-Feb-87 16:47") (* * PARAMETERLIST is in property list format. This function sets the parameters of the IOP accordingly) (COND (PARAMETERLIST (bind (rsWorkListImage ← (\DoveIO.ByteSwap (fetch (Dove.RS232DCB rsWorkList) of \DoveRS232C.DCBPointer))) (rsCommandWorkListImage ← (\DoveIO.ByteSwap (fetch (Dove.RS232DCB rsCommandWorkList) of \DoveRS232C.DCBPointer))) MAJORFLG COMMANDWORK PROP VAL for PROP.VAL in PARAMETERLIST do ((SETQ PROP (CAR PROP.VAL)) (SETQ VAL (CDR PROP.VAL)) (SELECTQ PROP [FRAME.TIMEOUT (COND ((NEQ VAL (\DoveIO.ByteSwap (fetch (Dove.RS232DCB rsFrameTimeoutValue) of \DoveRS232C.DCBPointer))) (replace (Dove.RS232DCB rsFrameTimeoutValue) of \DoveRS232C.DCBPointer with (\DoveIO.ByteSwap (FIX (TIMES 10 VAL] [CORRESPONDENT (replace (Dove.RS232DCB rsTTYHost) of \DoveRS232C.DCBPointer with (COND ((EQ VAL RS232C.CP.TTYHOST) \DoveIO.ByteTRUE) (T \DoveIO.ByteFALSE] (SYNCH.CHAR (* Not supported on Dove) NIL) [(STOP.BITS NoOfStopBits) (replace (RS232C.INIT NoOfStopBits) of RS232C.DEFAULT.INIT.INFO with VAL) (COND ((NEQ (fetch (Dove.i8274.WR4 stopBits) of (LOCF (fetch (Dove.RS232DCB rsWR4ofi8274) of \DoveRS232C.DCBPointer))) (SELECTC VAL (1 oneStopBit) (2 twoStopBits) (\ILLEGAL.ARG 0))) (SETQ MAJORFLG T) (SETQ rsWorkListImage (BITSET rsWorkListImage rsWorkWR4)) (replace (Dove.i8274.WR4 stopBits) of (LOCF (fetch (Dove.RS232DCB rsWR4ofi8274) of \DoveRS232C.DCBPointer)) with (SELECTC VAL (1 oneStopBit) (2 twoStopBits) (\ILLEGAL.ARG 0] [(PARITY Parity) (replace (RS232C.INIT Parity) of RS232C.DEFAULT.INIT.INFO with VAL) (COND ([NEQ VAL (COND ([NOT (fetch (Dove.i8274.WR4 enableParity) of (LOCF (fetch (Dove.RS232DCB rsWR4ofi8274) of \DoveRS232C.DCBPointer] (QUOTE NONE)) ((EQ (fetch (Dove.i8274.WR4 enableParity) of (LOCF (fetch (Dove.RS232DCB rsWR4ofi8274) of \DoveRS232C.DCBPointer))) parityOdd) (QUOTE ODD)) ((EQ (fetch (Dove.i8274.WR4 enableParity) of (LOCF (fetch (Dove.RS232DCB rsWR4ofi8274) of \DoveRS232C.DCBPointer))) parityEven) (QUOTE EVEN] (SETQ MAJORFLG T) (SETQ rsWorkListImage (BITSET rsWorkListImage rsWorkWR4)) (COND ((EQ VAL (QUOTE NONE)) (replace (Dove.i8274.WR4 enableParity) of (LOCF (fetch (Dove.RS232DCB rsWR4ofi8274) of \DoveRS232C.DCBPointer)) with NIL)) (T (replace (Dove.i8274.WR4 enableParity) of (LOCF (fetch (Dove.RS232DCB rsWR4ofi8274) of \DoveRS232C.DCBPointer)) with T) (replace (Dove.i8274.WR4 parityOddOrEven) of (LOCF (fetch (Dove.RS232DCB rsWR4ofi8274) of \DoveRS232C.DCBPointer)) with (SELECTQ VAL (EVEN parityEven) (ODD parityOdd) (\ILLEGAL.ARG VAL] [(CHAR.LENGTH BitsPerSerialChar) (replace (RS232C.INIT BitsPerSerialChar) of RS232C.DEFAULT.INIT.INFO with VAL) (SETQ VAL (SELECTQ VAL (8 3) (7 1) (6 2) (5 0) (\ILLEGAL.ARG VAL))) (COND ([NEQ VAL (fetch (Dove.i8274.WR5 txCharLength) of (LOCF (fetch (Dove.RS232DCB rsWR5ofi8274) of \DoveRS232C.DCBPointer] (SETQ MAJORFLG T) (SETQ rsWorkListImage (BITSET rsWorkListImage (LOGOR rsWorkWR3 rsWorkWR5))) (replace (Dove.i8274.WR5 txCharLength) of (LOCF (fetch (Dove.RS232DCB rsWR5ofi8274) of \DoveRS232C.DCBPointer)) with VAL) (replace (Dove.i8274.WR3 rxCharLength) of (LOCF (fetch (Dove.RS232DCB rsWR3ofi8274) of \DoveRS232C.DCBPointer)) with VAL] (SYNCH.COUNT (* Not implemented on Daybreak) NIL) [(LINE.SPEED BaudRate) (replace (RS232C.INIT BaudRate) of RS232C.DEFAULT.INIT.INFO with VAL) (SETQ \DLRS232C.OUTPUT.TIMEOUT (\RS232C.PACKET.TIMEOUT VAL)) (COND ([AND (SETQ VAL (CDR (SASSOC VAL \DVRS232C.BAUD.RATES))) (NEQ VAL (\DoveIO.ByteSwap (fetch (Dove.RS232DCB rsBaudRateChA) of \DoveRS232C.DCBPointer] (SETQ MAJORFLG T) (SETQ rsWorkListImage (BITSET rsWorkListImage rsNewBaudRate)) (replace (Dove.RS232DCB rsBaudRateChA) of \DoveRS232C.DCBPointer with (\DoveIO.ByteSwap VAL] [(FLOW.CONTROL FlowControl) (SETQ MAJORFLG T) (replace (RS232C.INIT FlowControl) of RS232C.DEFAULT.INIT.INFO with VAL) [COND ((EQ VAL (QUOTE XOnXOff)) (SETQ VAL (CONSTANT (create RS232C.XONXOFF FLAG ← 1 XON.CHAR ← (CHARCODE ↑Q) XOFF.CHAR ← (CHARCODE ↑S] (COND [(LISTP VAL) (replace (Dove.RS232FlowControl type) of (fetch (Dove.RS232DCB rs232FlowControl) of \DoveRS232C.DCBPointer) with (COND ((ZEROP (fetch (RS232C.XONXOFF FLAG) of VAL)) noFlowControl) (T XOnXOffFlowControl))) (replace (Dove.RS232FlowControl XOn) of (fetch (Dove.RS232DCB rs232FlowControl) of \DoveRS232C.DCBPointer) with (\DoveIO.ByteSwap (OR (fetch (RS232C.XONXOFF XON.CHAR) of VAL) 0))) (replace (Dove.RS232FlowControl XOff) of (fetch (Dove.RS232DCB rs232FlowControl) of \DoveRS232C.DCBPointer) with (\DoveIO.ByteSwap (OR (fetch (RS232C.XONXOFF XOFF.CHAR) of VAL) 0] (T (replace (Dove.RS232FlowControl type) of (fetch (Dove.RS232DCB rs232FlowControl) of \DoveRS232C.DCBPointer) with noFlowControl] [LINE.TYPE (LET [(WR1Base (LOCF (fetch (Dove.RS232DCB rsWR1ofi8274) of \DoveRS232C.DCBPointer))) (WR3Base (LOCF (fetch (Dove.RS232DCB rsWR3ofi8274) of \DoveRS232C.DCBPointer))) (WR4Base (LOCF (fetch (Dove.RS232DCB rsWR4ofi8274) of \DoveRS232C.DCBPointer))) (WR5Base (LOCF (fetch (Dove.RS232DCB rsWR5ofi8274) of \DoveRS232C.DCBPointer))) (WR7Base (LOCF (fetch (Dove.RS232DCB rsWR7ofi8274) of \DoveRS232C.DCBPointer] (SELECTC VAL (RS232C.LT.ASYNCH (replace (Dove.RS232DCB rs232Mode) of \DoveRS232C.DCBPointer with asynchMode) (replace (Dove.i8274.WR1 extInterruptEnable) of WR3Base with NIL) (replace (Dove.i8274.WR3 enterHuntMode) of WR3Base with NIL) (replace (Dove.i8274.WR3 rxCRCenable) of WR3Base with NIL) (replace (Dove.i8274.WR3 addrSearchMode) of WR3Base with NIL) (replace (Dove.i8274.WR4 clockRate) of WR4Base with x16clk) (replace (Dove.i8274.WR5 txCRCenable) of WR5Base with NIL) (SETQ rsWorkListImage (BITSET rsWorkListImage (LOGOR rsWorkWR1 rsWorkWR3 rsWorkWR4 rsWorkWR5))) (SETQ MAJORFLG T)) (RS232C.LT.BIT.SYNCH (HELP "Bit synchronous RS232 not implemented yet")) (ERROR "Illegal line type" VAL] (RESET.RING.HEARD (replace (Dove.RSLatchedStatus ringHeard) of (LOCF (fetch (Dove.RS232DCB rsLatchedStatus) of \DoveRS232C.DCBPointer)) with NIL)) (RESET.BREAK.DETECTED (replace (Dove.RSLatchedStatus breakDetected) of (LOCF (fetch (Dove.RS232DCB rsLatchedStatus) of \DoveRS232C.DCBPointer)) with NIL)) (RESET.DATA.LOST (replace (Dove.RSLatchedStatus dataLost) of (LOCF (fetch (Dove.RS232DCB rsLatchedStatus) of \DoveRS232C.DCBPointer)) with NIL)) [(REQUEST.TO.SEND RTS) (SETQ COMMANDWORK T) (SETQ rsWorkListImage (BITSET rsWorkListImage rsWorkWR5)) (COND ((replace (Dove.i8274.WR5 rts) of (LOCF (fetch (Dove.RS232DCB rsWR5ofi8274) of \DoveRS232C.DCBPointer)) with VAL) (SETQ rsCommandWorkListImage (BITSET rsCommandWorkListImage rtsCommand))) (T (SETQ rsCommandWorkListImage (BITCLEAR rsCommandWorkListImage rtsCommand] [(DATA.TERMINAL.READY DTR) (SETQ COMMANDWORK T) (SETQ rsWorkListImage (BITSET rsWorkListImage rsWorkWR5)) (COND ((replace (Dove.i8274.WR5 dtr) of (LOCF (fetch (Dove.RS232DCB rsWR5ofi8274) of \DoveRS232C.DCBPointer)) with VAL) (SETQ rsCommandWorkListImage (BITSET rsCommandWorkListImage dtrCommand))) (T (SETQ rsCommandWorkListImage (BITCLEAR rsCommandWorkListImage dtrCommand] (ModemControl (for SIGNAL in VAL do (SELECTQ SIGNAL [RTS (SETQ COMMANDWORK T) (SETQ rsWorkListImage (BITSET rsWorkListImage rsWorkWR5)) (COND ((replace (Dove.i8274.WR5 rts) of (LOCF (fetch (Dove.RS232DCB rsWR5ofi8274) of \DoveRS232C.DCBPointer)) with VAL) (SETQ rsCommandWorkListImage (BITSET rsCommandWorkListImage rtsCommand))) (T (SETQ rsCommandWorkListImage (BITCLEAR rsCommandWorkListImage rtsCommand] [DTR (SETQ COMMANDWORK T) (SETQ rsWorkListImage (BITSET rsWorkListImage rsWorkWR5)) (COND ((replace (Dove.i8274.WR5 dtr) of (LOCF (fetch (Dove.RS232DCB rsWR5ofi8274) of \DoveRS232C.DCBPointer)) with VAL) (SETQ rsCommandWorkListImage (BITSET rsCommandWorkListImage dtrCommand))) (T (SETQ rsCommandWorkListImage (BITCLEAR rsCommandWorkListImage dtrCommand] NIL))) NIL)) finally (COND (COMMANDWORK (replace (Dove.RS232DCB rsCommandWorkList) of \DoveRS232C.DCBPointer with (\DoveIO.ByteSwap rsCommandWorkListImage)) (SETQ MAJORFLG T))) (COND ((NOT MAJORFLG) (RETURN T)) (T (SETQ rsWorkListImage (BITSET rsWorkListImage workFori8274)) (replace (Dove.RS232DCB rsWorkList) of \DoveRS232C.DCBPointer with (\DoveIO.ByteSwap rsWorkListImage)) (\DoveIO.NotifyIOP (fetch (Dove.RS232FCB rs232WorkMask) of \DoveRS232C.FCBPointer)) (repeatwhile (BITTEST (\DoveIO.ByteSwap (fetch (Dove.RS232DCB rsWorkList) of \DoveRS232C.DCBPointer)) workFori8274) do (BLOCK)) (RETURN T]) (\DVRS232C.ISSUE.SHORT.COMMAND [LAMBDA (COMMAND) (* AS "20-Feb-87 17:03") (* * Issue a simple command to Opie. Tis a pity issuing such commands isn't as simple as it was on the DLion) (DECLARE (GLOBALVARS \DLRS232C.COMMAND.LOCK)) (LET (rsCommandWorkListImage rsWorkListImage) (WITH.FAST.MONITOR \DLRS232C.COMMAND.LOCK (while (BITTEST (\DoveIO.ByteSwap (fetch (Dove.RS232DCB rsCommandWorkList) of \DoveRS232C.DCBPointer) ) rsCommandInProgress) do (BLOCK)) (SETQ rsCommandWorkListImage (\DoveIO.ByteSwap (fetch (Dove.RS232DCB rsCommandWorkList) of \DoveRS232C.DCBPointer))) (SETQ rsWorkListImage (\DoveIO.ByteSwap (fetch (Dove.RS232DCB rsWorkList) of \DoveRS232C.DCBPointer)) ) (SELECTC COMMAND (ABORT.INPUT (SETQ rsCommandWorkListImage (BITSET rsCommandWorkListImage abortRx))) (ABORT.OUTPUT (SETQ rsCommandWorkListImage (BITSET rsCommandWorkListImage abortTx))) [BREAK.ON (replace (Dove.i8274.WR5 sendBreak) of (LOCF (fetch (Dove.RS232DCB rsWR5ofi8274) of \DoveRS232C.DCBPointer)) with T) (SETQ rsWorkListImage (BITSET rsWorkListImage (LOGOR rsWorkWR5 workFori8274] [BREAK.OFF (replace (Dove.i8274.WR5 sendBreak) of (LOCF (fetch (Dove.RS232DCB rsWR5ofi8274) of \DoveRS232C.DCBPointer)) with NIL) (SETQ rsWorkListImage (BITSET rsWorkListImage (LOGOR rsWorkWR5 workFori8274] (GET.STATUS (SETQ rsCommandWorkListImage (BITSET rsCommandWorkListImage getDeviceStatus))) (OFF (replace (Dove.i8274.WR3 rxEnable) of (LOCF (fetch (Dove.RS232DCB rsWR3ofi8274) of \DoveRS232C.DCBPointer)) with NIL) (replace (Dove.i8274.WR3 autoEnable) of (LOCF (fetch (Dove.RS232DCB rsWR3ofi8274) of \DoveRS232C.DCBPointer)) with NIL) (replace (Dove.i8274.WR5 txEnable) of (LOCF (fetch (Dove.RS232DCB rsWR5ofi8274) of \DoveRS232C.DCBPointer)) with NIL) (replace (Dove.i8274.WR1 txIntDMAenable) of (LOCF (fetch (Dove.RS232DCB rsWR1ofi8274) of \DoveRS232C.DCBPointer)) with NIL) (replace (Dove.i8274.WR1 extInterruptEnable) of (LOCF (fetch (Dove.RS232DCB rsWR1ofi8274) of \DoveRS232C.DCBPointer)) with NIL) (SETQ rsWorkListImage (BITSET rsWorkListImage (LOGOR rsWorkWR1 rsWorkWR3 rsWorkWR5 workFori8274) )) (replace (Dove.RS232DCB rsClientType) of \DoveRS232C.DCBPointer with rsNoClient)) [ON (replace (Dove.i8274.WR3 rxEnable) of (LOCF (fetch (Dove.RS232DCB rsWR3ofi8274) of \DoveRS232C.DCBPointer)) with T) (replace (Dove.i8274.WR5 txEnable) of (LOCF (fetch (Dove.RS232DCB rsWR5ofi8274) of \DoveRS232C.DCBPointer)) with T) (replace (Dove.i8274.WR1 txIntDMAenable) of (LOCF (fetch (Dove.RS232DCB rsWR1ofi8274) of \DoveRS232C.DCBPointer)) with T) (replace (Dove.i8274.WR1 interruptCondition) of (LOCF (fetch (Dove.RS232DCB rsWR1ofi8274) of \DoveRS232C.DCBPointer)) with intOnAllRxParityAffectsVector) (replace (Dove.RS232DCB rsClientType) of \DoveRS232C.DCBPointer with rsNormal) (SETQ rsWorkListImage (BITSET rsWorkListImage (LOGOR rsWorkWR1 rsWorkWR3 rsWorkWR5 workFori8274] NIL) [COND ((BITTEST rsWorkListImage workFori8274) (replace (Dove.RS232DCB rsWorkList) of \DoveRS232C.DCBPointer with (\DoveIO.ByteSwap rsWorkListImage] (replace (Dove.RS232DCB rsCommandWorkList) of \DoveRS232C.DCBPointer with (\DoveIO.ByteSwap (BITSET rsCommandWorkListImage rsCommandInProgress))) (\DoveIO.NotifyIOP (fetch (Dove.RS232FCB rs232WorkMask) of \DoveRS232C.FCBPointer)) (repeatwhile (BITTEST (\DoveIO.ByteSwap (fetch (Dove.RS232DCB rsCommandWorkList) of \DoveRS232C.DCBPointer)) rsCommandInProgress) do (BLOCK)) (\DVRS232C.GATHER.STATUS]) ) (DECLARE: DONTCOPY (FILEMAP (NIL (338 18230 (\DVRS232C.SET.PARAMETERS 348 . 13176) (\DVRS232C.ISSUE.SHORT.COMMAND 13178 . 18228))))) STOP