(FILECREATED "13-Oct-85 14:00:00" {ERIS}<LISPCORE>SOURCES>DOVEINPUTOUTPUT.;24 4474   

      changes to:  (FNS \DoveIO.InitializeIORegionPtrs)

      previous date: "16-Sep-85 13:08:31" {ERIS}<LISPCORE>SOURCES>DOVEINPUTOUTPUT.;23)


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

(PRETTYCOMPRINT DOVEINPUTOUTPUTCOMS)

(RPAQQ DOVEINPUTOUTPUTCOMS ((FNS \DoveIO.EQOpieAddrs \DoveIO.GetHandlerIORegionPtr \DoveIO.Init 
				   \DoveIO.InitializeIORegionPtrs \DoveIO.MakeOpieAddress 
				   \DoveIO.NilOpieAddress \DoveIO.PointerFromOpieAddress)
			      (DECLARE: EVAL@COMPILE DONTCOPY (FILES (SOURCE)
								     DOVEDECLS)
					(EXPORT (MACROS \DoveIO.InitFCBPtr)))
			      (DECLARE: DONTEVAL@LOAD DOCOPY (P (\DoveIO.Init)))))
(DEFINEQ

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

(\DoveIO.GetHandlerIORegionPtr
  (LAMBDA (HandlerID)                                        (* ejs: "12-Sep-85 19:08")

          (* * Return the base address of the pointer to the requested handler)


    (\ADDBASE \DoveIORegion (ITIMES DoveIO.SegmentGranularity
				    (IDIFFERENCE (\DoveIO.ByteSwap (fetch (DoveIO.SegmentRec 
										  ioRegionSegment)
								      of (\ADDBASE
									   (fetch (DoveIO.IORTable
										    segments)
									      of \DoveIORegion)
									   (ITIMES HandlerID
										   (MESASIZE 
										DoveIO.SegmentRec)))))
						 DoveIO.iorSegmentBase)))))

(\DoveIO.Init
  (LAMBDA NIL                                                (* ejs: "16-Sep-85 13:03")
    (MAPC (QUOTE (\DoveIO.MakeOpieAddress \DoveIO.PointerFromOpieAddress \DoveIO.NilOpieAddress 
					  \DoveIO.EQOpieAddrs \DoveIO.InitializeIORegionPtrs))
	  (FUNCTION \LOCKFN))))

(\DoveIO.InitializeIORegionPtrs
  (LAMBDA NIL                                                (* ejs: "13-Oct-85 13:59")

          (* * Set the values of the FCB pointers in the Dove IO Region)


    (\DoveIO.InitFCBPtr \DoveBeep.FCBPointer DoveIO.beepHandler)
    (\DoveIO.InitFCBPtr \DoveDisk.FCBPointer DoveIO.diskHandler)
    (\DoveIO.InitFCBPtr \DoveDisplay.FCBPointer DoveIO.displayHandler)
    (\DoveIO.InitFCBPtr \DoveEther.FCBPointer DoveIO.ethernetHandler)
    (\DoveIO.InitFCBPtr \DoveFloppy.FCBPointer DoveIO.floppyHandler)
    (\DoveIO.InitFCBPtr \DoveKyMo.FCBPointer DoveIO.kymoHandler)
    (\DoveIO.InitFCBPtr \DoveProcessor.FCBPointer DoveIO.lispHandler)
    (\DoveIO.InitFCBPtr \DoveMP.FCBPointer DoveIO.mpHandler)))

(\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 DONTCOPY 
(FILESLOAD (SOURCE)
	   DOVEDECLS)

(* FOLLOWING DEFINITIONS EXPORTED)


(DECLARE: EVAL@COMPILE 
(DEFMACRO \DoveIO.InitFCBPtr (FCBPointer HandlerID)
	  (COND ((NOT (BOUNDP FCBPointer))
		 (printout T "*** WARNING: " FCBPointer 
			   " is unbound in call to \DoveIO.InitFCBPtr ***"
			   T)))
	  (COND ((NOT (BOUNDP HandlerID))
		 (printout T "*** WARNING: " HandlerID 
			   " is unbound in call to \DoveIO.InitFCBPtr ***"
			   T)))
	  (BQUOTE (SETQ , FCBPointer (\DoveIO.GetHandlerIORegionPtr , HandlerID))))
)


(* END EXPORTED DEFINITIONS)

)
(DECLARE: DONTEVAL@LOAD DOCOPY 
(\DoveIO.Init)
)
(PUTPROPS DOVEINPUTOUTPUT COPYRIGHT ("Xerox Corporation" 1985))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (756 3758 (\DoveIO.EQOpieAddrs 766 . 933) (\DoveIO.GetHandlerIORegionPtr 935 . 1582) (
\DoveIO.Init 1584 . 1891) (\DoveIO.InitializeIORegionPtrs 1893 . 2638) (\DoveIO.MakeOpieAddress 2640
 . 3392) (\DoveIO.NilOpieAddress 3394 . 3543) (\DoveIO.PointerFromOpieAddress 3545 . 3756)))))
STOP