(FILECREATED "12-Aug-85 07:33:23" {ERIS}<LISPCORE>SOURCES>DOVEINPUTOUTPUT.;17 10568  

      changes to:  (FNS \DoveIO.MakeOpieAddress)
		   (VARS DOVEINPUTOUTPUTCOMS \#WDS.OpieAddress)

      previous date: "12-Aug-85 02:34:47" {ERIS}<LISPCORE>SOURCES>DOVEINPUTOUTPUT.;16)


(* Copyright (c) 1985 by Xerox Corporation. All rights reserved.)

(PRETTYCOMPRINT DOVEINPUTOUTPUTCOMS)

(RPAQQ DOVEINPUTOUTPUTCOMS ((MACROS \Dove.ClearQueueBlock \DoveIO.ByteSwap \DoveIO.IORegionOffset 
				    \DoveIO.LockMem \DoveIO.NotifyIOP \DoveFCBAt)
			    (FNS \DoveIO.EQOpieAddrs \DoveIO.MakeOpieAddress \DoveIO.NilOpieAddress 
				 \DoveIO.PointerFromOpieAddress)
			    (CONSTANTS \DoveIO.ADD \DoveIO.AND \DoveIO.OR \DoveIO.OVERWRITEIFNIL 
				       \DoveIO.XCHG \#WDS.OpieAddress)
			    (DECLARE: DONTCOPY (CONSTANTS * DOVEIOREGIONOFFSETS)
				      (CONSTANTS * DOVEOPIEADDRESSTYPES)
				      (VARS \Dove.FCBSizes)
				      (FNS \Dove.InitializeFCBOffsets))
			    (CONSTANTS \DoveIO.ByteFALSE \DoveIO.ByteTRUE)
			    (DECLARE: DONTCOPY (EXPORT (RECORDS Dove.OpieAddress)))
			    (DECLARE: DONTEVAL@LOAD DOCOPY (P (\LOCKFN (FUNCTION 
									  \DoveIO.MakeOpieAddress))))
			    (PROP ARGNAMES \DoveFCBAt)))
(DECLARE: EVAL@COMPILE 
(DEFMACRO \Dove.ClearQueueBlock (BASE)
	  (BQUOTE (\CLEARWORDS , BASE \DoveEther.QueuePtrSize)))
(PUTPROPS \DoveIO.ByteSwap DMACRO (ARGS (LET ((X (CAR ARGS)))
					     (BQUOTE ((OPCODES DOVEMISC 4)
						      , X)))))
(DEFMACRO \DoveIO.IORegionOffset (X)
	  (BQUOTE (IDIFFERENCE (\LOLOC , X)
			       (\LOLOC \DoveIORegion))))
(PUTPROPS \DoveIO.LockMem DMACRO (ARGS (LET ((MASK (CAR ARGS))
					     (VALUE (CADR ARGS))
					     (ADDR (CADDR ARGS))
					     (OP (CADDDR ARGS)))
					    (BQUOTE ((OPCODES DOVEMISC 5)
						     , OP , ADDR , VALUE , MASK)))))
(PUTPROPS \DoveIO.NotifyIOP DMACRO (ARGS (LET ((MASK (CAR ARGS)))
					      (BQUOTE ((OPCODES DOVEMISC 6)
						       , MASK)))))
(DEFMACRO \DoveFCBAt (X)
	  (BQUOTE (\ADDBASE \DoveIORegion , X)))
)
(DEFINEQ

(\DoveIO.EQOpieAddrs
  [LAMBDA (A1 A2)
    (AND (EQ (\GETBASE A1 0)
	     (\GETBASE A2 0))
	 (EQ (\GETBASE A1 1)
	     (\GETBASE A2 1])

(\DoveIO.MakeOpieAddress
  (LAMBDA (DESTLOC SRCPTR)                                   (* ejs: "12-Aug-85 07:01")

          (* * This function takes SRCPTR as a Lisp pointer and smashes the two words at DESTLOC with an OpieAddress that 
	  corresponds to the pointer)


    (replace (Dove.OpieAddress LoPart.BS) of DESTLOC with (\DoveIO.ByteSwap (\LOLOC SRCPTR)))
    (replace (Dove.OpieAddress HiPart) of DESTLOC with (\HILOC SRCPTR))
    (COND
      ((NEQ (\HILOC SRCPTR)
	    0)
	(replace (Dove.OpieAddress AddrType) of DESTLOC with \DoveIO.VirtualWordType))
      (T (replace (Dove.OpieAddress AddrType) of DESTLOC with \DoveIO.VirtualFirst64KRelativeType)))))

(\DoveIO.NilOpieAddress
  [LAMBDA (PTRTOADDRESS)
    (AND (EQ 0 (\GETBASE PTRTOADDRESS 0))
	 (EQ 0 (\GETBASE PTRTOADDRESS 1])

(\DoveIO.PointerFromOpieAddress
  [LAMBDA (ADDRESSLOC)
    (\VAG2 (fetch (Dove.OpieAddress HiPart) of ADDRESSLOC)
	   (\DoveIO.ByteSwap (fetch (Dove.OpieAddress LoPart.BS) of ADDRESSLOC])
)
(DECLARE: EVAL@COMPILE 

(RPAQQ \DoveIO.ADD 0)

(RPAQQ \DoveIO.AND 1)

(RPAQQ \DoveIO.OR 2)

(RPAQQ \DoveIO.OVERWRITEIFNIL 4)

(RPAQQ \DoveIO.XCHG 3)

(RPAQQ \#WDS.OpieAddress 2)

(CONSTANTS \DoveIO.ADD \DoveIO.AND \DoveIO.OR \DoveIO.OVERWRITEIFNIL \DoveIO.XCHG \#WDS.OpieAddress)
)
(DECLARE: DONTCOPY 

(RPAQQ DOVEIOREGIONOFFSETS (\Dove.VmemPageRunTableOffset \Dove.PCEFloppyFCBOffset 
							 \Dove.PCEDiskFCBOffset 
							 \Dove.PCERS232CFCBOffset 
							 \Dove.PCEKeyboardFCBOffset 
							 \Dove.PCEDisplayFCBOffset 
							 \Dove.PCEParallelFCBOffset 
							 \Dove.PCETimerFCBOffset 
							 \Dove.PCEDispatcherFCBOffset 
							 \Dove.MesaClientFCBOffset 
							 \Dove.ProcessorFCBOffset 
							 \Dove.RS232CFCBOffset \Dove.TTYFCBOffset 
							 \Dove.RemoteMemoryFCBOffset 
							 \Dove.UnservicedFCBOffset 
							 \Dove.WorkNotifierFCBOffset 
							 \Dove.BindweedFCBOffset 
							 \Dove.BootStrapFCBOffset 
							 \Dove.WatchDogFCBOffset 
							 \Dove.FloppyFCBOffset \Dove.DiskFCBOffset 
							 \Dove.TestClientFCBOffset 
							 \Dove.EthernetFCBOffset \Dove.TimerFCBOffset 
							 \Dove.DisplayFCBOffset \Dove.BeepFCBOffset 
							 \Dove.Keyboard&MouseFCBOffset 
							 \Dove.UmbilicalFCBOffset 
							 \Dove.ParityFCBOffset 
							 \Dove.MaintPanelFCBOffset 
							 \Dove.OpieFCBOffset \Dove.BermudaFCBOffset 
							 \Dove.MesaPageMapLocationOffset 
							 \Dove.WorkMaskAreaOffset \Dove.MesaIOPOffset)
)
(DECLARE: EVAL@COMPILE 

(RPAQQ \Dove.VmemPageRunTableOffset 5760)

(RPAQQ \Dove.PCEFloppyFCBOffset 5242)

(RPAQQ \Dove.PCEDiskFCBOffset 5146)

(RPAQQ \Dove.PCERS232CFCBOffset 5050)

(RPAQQ \Dove.PCEKeyboardFCBOffset 4954)

(RPAQQ \Dove.PCEDisplayFCBOffset 4858)

(RPAQQ \Dove.PCEParallelFCBOffset 4762)

(RPAQQ \Dove.PCETimerFCBOffset 4666)

(RPAQQ \Dove.PCEDispatcherFCBOffset 4570)

(RPAQQ \Dove.MesaClientFCBOffset 4474)

(RPAQQ \Dove.ProcessorFCBOffset 4378)

(RPAQQ \Dove.RS232CFCBOffset 4238)

(RPAQQ \Dove.TTYFCBOffset 4142)

(RPAQQ \Dove.RemoteMemoryFCBOffset 3911)

(RPAQQ \Dove.UnservicedFCBOffset 3815)

(RPAQQ \Dove.WorkNotifierFCBOffset 3719)

(RPAQQ \Dove.BindweedFCBOffset 3623)

(RPAQQ \Dove.BootStrapFCBOffset 3527)

(RPAQQ \Dove.WatchDogFCBOffset 3431)

(RPAQQ \Dove.FloppyFCBOffset 3306)

(RPAQQ \Dove.DiskFCBOffset 3156)

(RPAQQ \Dove.TestClientFCBOffset 2816)

(RPAQQ \Dove.EthernetFCBOffset 966)

(RPAQQ \Dove.TimerFCBOffset 870)

(RPAQQ \Dove.DisplayFCBOffset 774)

(RPAQQ \Dove.BeepFCBOffset 749)

(RPAQQ \Dove.Keyboard&MouseFCBOffset 574)

(RPAQQ \Dove.UmbilicalFCBOffset 478)

(RPAQQ \Dove.ParityFCBOffset 382)

(RPAQQ \Dove.MaintPanelFCBOffset 286)

(RPAQQ \Dove.OpieFCBOffset 30)

(RPAQQ \Dove.BermudaFCBOffset 26)

(RPAQQ \Dove.MesaPageMapLocationOffset 24)

(RPAQQ \Dove.WorkMaskAreaOffset 7)

(RPAQQ \Dove.MesaIOPOffset 2)

(CONSTANTS \Dove.VmemPageRunTableOffset \Dove.PCEFloppyFCBOffset \Dove.PCEDiskFCBOffset 
	   \Dove.PCERS232CFCBOffset \Dove.PCEKeyboardFCBOffset \Dove.PCEDisplayFCBOffset 
	   \Dove.PCEParallelFCBOffset \Dove.PCETimerFCBOffset \Dove.PCEDispatcherFCBOffset 
	   \Dove.MesaClientFCBOffset \Dove.ProcessorFCBOffset \Dove.RS232CFCBOffset 
	   \Dove.TTYFCBOffset \Dove.RemoteMemoryFCBOffset \Dove.UnservicedFCBOffset 
	   \Dove.WorkNotifierFCBOffset \Dove.BindweedFCBOffset \Dove.BootStrapFCBOffset 
	   \Dove.WatchDogFCBOffset \Dove.FloppyFCBOffset \Dove.DiskFCBOffset 
	   \Dove.TestClientFCBOffset \Dove.EthernetFCBOffset \Dove.TimerFCBOffset 
	   \Dove.DisplayFCBOffset \Dove.BeepFCBOffset \Dove.Keyboard&MouseFCBOffset 
	   \Dove.UmbilicalFCBOffset \Dove.ParityFCBOffset \Dove.MaintPanelFCBOffset 
	   \Dove.OpieFCBOffset \Dove.BermudaFCBOffset \Dove.MesaPageMapLocationOffset 
	   \Dove.WorkMaskAreaOffset \Dove.MesaIOPOffset)
)


(RPAQQ DOVEOPIEADDRESSTYPES (\DoveIO.ExtendedBusType \DoveIO.IOPIORegionRelativeType 
						     \DoveIO.IOPLogicalType \DoveIO.PCLogicalType 
						     \DoveIO.VirtualFirst64KRelativeType 
						     \DoveIO.VirtualPageType \DoveIO.VirtualWordType))
(DECLARE: EVAL@COMPILE 

(RPAQQ \DoveIO.ExtendedBusType 16)

(RPAQQ \DoveIO.IOPIORegionRelativeType 81)

(RPAQQ \DoveIO.IOPLogicalType 80)

(RPAQQ \DoveIO.PCLogicalType 144)

(RPAQQ \DoveIO.VirtualFirst64KRelativeType 225)

(RPAQQ \DoveIO.VirtualPageType 240)

(RPAQQ \DoveIO.VirtualWordType 224)

(CONSTANTS \DoveIO.ExtendedBusType \DoveIO.IOPIORegionRelativeType \DoveIO.IOPLogicalType 
	   \DoveIO.PCLogicalType \DoveIO.VirtualFirst64KRelativeType \DoveIO.VirtualPageType 
	   \DoveIO.VirtualWordType)
)


(RPAQQ \Dove.FCBSizes ((NIL 2)
		       (\Dove.MesaIOPOffset 5)
		       (\Dove.WorkMaskAreaOffset 17)
		       (\Dove.MesaPageMapLocationOffset 2)
		       (\Dove.BermudaFCBOffset 4)
		       (\Dove.OpieFCBOffset 256)
		       (\Dove.MaintPanelFCBOffset 96)
		       (\Dove.ParityFCBOffset 96)
		       (\Dove.UmbilicalFCBOffset 96)
		       (\Dove.Keyboard&MouseFCBOffset 175)
		       (\Dove.BeepFCBOffset 25)
		       (\Dove.DisplayFCBOffset 96)
		       (\Dove.TimerFCBOffset 96)
		       (\Dove.EthernetFCBOffset 1850)
		       (\Dove.TestClientFCBOffset 340)
		       (\Dove.DiskFCBOffset 150)
		       (\Dove.FloppyFCBOffset 125)
		       (\Dove.WatchDogFCBOffset 96)
		       (\Dove.BootStrapFCBOffset 96)
		       (\Dove.BindweedFCBOffset 96)
		       (\Dove.WorkNotifierFCBOffset 96)
		       (\Dove.UnservicedFCBOffset 96)
		       (\Dove.RemoteMemoryFCBOffset 231)
		       (\Dove.TTYFCBOffset 96)
		       (\Dove.RS232CFCBOffset 140)
		       (\Dove.ProcessorFCBOffset 96)
		       (\Dove.MesaClientFCBOffset 96)
		       (\Dove.PCEDispatcherFCBOffset 96)
		       (\Dove.PCETimerFCBOffset 96)
		       (\Dove.PCEParallelFCBOffset 96)
		       (\Dove.PCEDisplayFCBOffset 96)
		       (\Dove.PCEKeyboardFCBOffset 96)
		       (\Dove.PCERS232CFCBOffset 96)
		       (\Dove.PCEDiskFCBOffset 96)
		       (\Dove.PCEFloppyFCBOffset 160)))

(DEFINEQ

(\Dove.InitializeFCBOffsets
  [LAMBDA (Configuration)                                    (* MPL "14-Jun-85 18:47")

          (* * This function initializes all of the constants which refer to the offsets into the IORegion of the various 
	  device drivers)


    (PROG ((Count 0)
	   (VarNames NIL))
          [for I in Configuration
	     do (COND
		  ((CAR I)
		    (SETQ VarNames (CONS (CAR I)
					 VarNames))
		    (SET (CAR I)
			 Count)))
		(SETQ Count (IPLUS Count (CADR I]
          (SETQ DOVEIOREGIONOFFSETS VarNames)
          (RETURN VarNames])
)
)
(DECLARE: EVAL@COMPILE 

(RPAQQ \DoveIO.ByteFALSE 0)

(RPAQQ \DoveIO.ByteTRUE 255)

(CONSTANTS \DoveIO.ByteFALSE \DoveIO.ByteTRUE)
)
(DECLARE: DONTCOPY 
(* FOLLOWING DEFINITIONS EXPORTED)


[DECLARE: EVAL@COMPILE 

(BLOCKRECORD Dove.OpieAddress ((LoPart.BS WORD)
			       (HiPart BYTE)
			       (AddrType BYTE)))
]


(* END EXPORTED DEFINITIONS)

)
(DECLARE: DONTEVAL@LOAD DOCOPY 
(\LOCKFN (FUNCTION \DoveIO.MakeOpieAddress))
)

(PUTPROPS \DoveFCBAt ARGNAMES (OFFSET))
(PUTPROPS DOVEINPUTOUTPUT COPYRIGHT ("Xerox Corporation" 1985))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (2005 3302 (\DoveIO.EQOpieAddrs 2015 . 2182) (\DoveIO.MakeOpieAddress 2184 . 2936) (
\DoveIO.NilOpieAddress 2938 . 3087) (\DoveIO.PointerFromOpieAddress 3089 . 3300)) (9344 9993 (
\Dove.InitializeFCBOffsets 9354 . 9991)))))
STOP