home *** CD-ROM | disk | FTP | other *** search
/ Otherware / Otherware_1_SB_Development.iso / mac / developm / source / oodleutl.cpt / oodles-of-utils / NotInROM / +Power.lisp < prev    next >
Encoding:
Text File  |  1992-02-21  |  2.9 KB  |  86 lines

  1. ;; -*- package: NotInROM -*-
  2. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  3. ;; +Power.Lisp
  4. ;;
  5. ;; Copyright ⌐ 1992 Northwestern University Institute for the Learning Sciences
  6. ;; All Rights Reserved
  7. ;;
  8. ;; author: Michael S. Engber
  9. ;;
  10. ;; Provides missing Power Manager Routines
  11. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  12.  
  13. (eval-when (:compile-toplevel :load-toplevel :execute)
  14.   (require    :NotInROM-u)
  15.   (in-package :NotInROM))
  16.  
  17. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  18.  
  19. ;;These are taken pretty much straight from interfaces.lisp
  20. ;;I don't claim to fully understand them. They're all descibed
  21. ;;in the Power Manager section of IM VI, but no hint is given
  22. ;;as to how to implement them.
  23.  
  24. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  25.  
  26. (eval-when (:compile-toplevel :load-toplevel :execute)
  27.   
  28.   (defrecord (PMParamBlock :pointer)
  29.     (selector :integer)
  30.     (quayle2  :integer)
  31.     (variant
  32.      ((quayle4  :long))
  33.      ((quayle4-bytes (array :byte 4))))
  34.     (quayle8  :pointer))
  35.  
  36.   )
  37.  
  38. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  39.  
  40. (deftrap-NotInROM _SetWUTime :OSErr ((WUTime :signed-long))
  41.   (rlet ((pb :PMParamBlock
  42.              :selector #x0080
  43.              :quayle2  4
  44.              :quayle4  WUTime))
  45.     (register-trap #xA085 :a0 pb :d0 0 (:signed-integer :d0))))
  46.  
  47. (deftrap-NotInROM _DisableWUTime :OSErr ()
  48.   (rlet ((pb :PMParamBlock
  49.              :selector #x0082
  50.              :quayle2  0
  51.              :quayle4  0))
  52.     (register-trap #xA085 :a0 pb :d0 0 (:signed-integer :d0))))
  53.  
  54. (deftrap-NotInROM _GetWUTime :OSErr ((WUTime (:pointer :signed-long)) (WUFlag (:pointer :byte)))
  55.   (rlet ((pb :PMParamBlock
  56.              :selector #x0088
  57.              :quayle2  0
  58.              :quayle4  0
  59.              :quayle8  (%null-ptr)))
  60.     (prog1
  61.       (register-trap #xA085 :a0 pb :d0 0 (:signed-integer :d0))
  62.       (#_BlockMove (pref pb :PMParamBlock.quayle8) WUTime #.(nth-value 2 (field-info :PMParamBlock :quayle8)))
  63.       (%put-byte WUFlag (pref pb (:PMParamBlock.quayle4-bytes 0))))))
  64.  
  65. (deftrap-NotInROM _ModemStatus :OSErr ((Status (:pointer :byte)))
  66.   (rlet ((pb :PMParamBlock
  67.              :selector #x0058
  68.              :quayle2  0
  69.              :quayle4  0
  70.              :quayle8  (%null-ptr)))
  71.     (prog1
  72.       (register-trap #xA085 :a0 pb :d0 0 (:signed-integer :d0))
  73.       (%put-byte Status (%get-byte (pref pb (:PMParamBlock.quayle8)))))))
  74.  
  75.  
  76. (deftrap-NotInROM _BatteryStatus :OSErr ((Status (:pointer :byte)) (Power (:pointer :byte)))
  77.   (rlet ((pb :PMParamBlock
  78.              :selector #x0068
  79.              :quayle2  0
  80.              :quayle4  0
  81.              :quayle8  (%null-ptr)))
  82.     (prog1
  83.       (register-trap #xA085 :a0 pb :d0 0 (:signed-integer :d0))
  84.       (%put-byte Power (pref pb (:PMParamBlock.quayle4-bytes 0)))
  85.       (%put-byte Status (%get-byte (pref pb :PMParamBlock.quayle8))))))
  86.