home *** CD-ROM | disk | FTP | other *** search
- ;; -*- package: NotInROM -*-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; +Power.Lisp
- ;;
- ;; Copyright ⌐ 1992 Northwestern University Institute for the Learning Sciences
- ;; All Rights Reserved
- ;;
- ;; author: Michael S. Engber
- ;;
- ;; Provides missing Power Manager Routines
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
- (eval-when (:compile-toplevel :load-toplevel :execute)
- (require :NotInROM-u)
- (in-package :NotInROM))
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
- ;;These are taken pretty much straight from interfaces.lisp
- ;;I don't claim to fully understand them. They're all descibed
- ;;in the Power Manager section of IM VI, but no hint is given
- ;;as to how to implement them.
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
- (eval-when (:compile-toplevel :load-toplevel :execute)
-
- (defrecord (PMParamBlock :pointer)
- (selector :integer)
- (quayle2 :integer)
- (variant
- ((quayle4 :long))
- ((quayle4-bytes (array :byte 4))))
- (quayle8 :pointer))
-
- )
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
- (deftrap-NotInROM _SetWUTime :OSErr ((WUTime :signed-long))
- (rlet ((pb :PMParamBlock
- :selector #x0080
- :quayle2 4
- :quayle4 WUTime))
- (register-trap #xA085 :a0 pb :d0 0 (:signed-integer :d0))))
-
- (deftrap-NotInROM _DisableWUTime :OSErr ()
- (rlet ((pb :PMParamBlock
- :selector #x0082
- :quayle2 0
- :quayle4 0))
- (register-trap #xA085 :a0 pb :d0 0 (:signed-integer :d0))))
-
- (deftrap-NotInROM _GetWUTime :OSErr ((WUTime (:pointer :signed-long)) (WUFlag (:pointer :byte)))
- (rlet ((pb :PMParamBlock
- :selector #x0088
- :quayle2 0
- :quayle4 0
- :quayle8 (%null-ptr)))
- (prog1
- (register-trap #xA085 :a0 pb :d0 0 (:signed-integer :d0))
- (#_BlockMove (pref pb :PMParamBlock.quayle8) WUTime #.(nth-value 2 (field-info :PMParamBlock :quayle8)))
- (%put-byte WUFlag (pref pb (:PMParamBlock.quayle4-bytes 0))))))
-
- (deftrap-NotInROM _ModemStatus :OSErr ((Status (:pointer :byte)))
- (rlet ((pb :PMParamBlock
- :selector #x0058
- :quayle2 0
- :quayle4 0
- :quayle8 (%null-ptr)))
- (prog1
- (register-trap #xA085 :a0 pb :d0 0 (:signed-integer :d0))
- (%put-byte Status (%get-byte (pref pb (:PMParamBlock.quayle8)))))))
-
-
- (deftrap-NotInROM _BatteryStatus :OSErr ((Status (:pointer :byte)) (Power (:pointer :byte)))
- (rlet ((pb :PMParamBlock
- :selector #x0068
- :quayle2 0
- :quayle4 0
- :quayle8 (%null-ptr)))
- (prog1
- (register-trap #xA085 :a0 pb :d0 0 (:signed-integer :d0))
- (%put-byte Power (pref pb (:PMParamBlock.quayle4-bytes 0)))
- (%put-byte Status (%get-byte (pref pb :PMParamBlock.quayle8))))))
-