[movitz-cvs] CVS movitz/losp/x86-pc

ffjeld ffjeld at common-lisp.net
Thu Jul 19 21:49:34 UTC 2007


Update of /project/movitz/cvsroot/movitz/losp/x86-pc
In directory clnet:/tmp/cvs-serv30885

Added Files:
	bochs-vbe.lisp 
Log Message:
>From Martin Bealby, via movitz-devel.



--- /project/movitz/cvsroot/movitz/losp/x86-pc/bochs-vbe.lisp	2007/07/19 21:49:34	NONE
+++ /project/movitz/cvsroot/movitz/losp/x86-pc/bochs-vbe.lisp	2007/07/19 21:49:34	1.1
;;;; bochs-vbe.lisp
;;;; Support for the bochs/qemu video bios extensions

;;;; Martin Bealby 2007

(require :x86-pc/package)
(provide :x86-pc/bochs-vbe)

(in-package muerte.x86-pc)

;;
;; Port constants
;;
(defconstant +bochs-vbe-ioport-index+ #x01ce)
(defconstant +bochs-vbe-ioport-data+ #x01cf)

;;
;; Register constants
;;
(defconstant +bochs-vbe-index-id+ #x0)
(defconstant +bochs-vbe-index-width+ #x1)
(defconstant +bochs-vbe-index-height+ #x2)
(defconstant +bochs-vbe-index-bits-per-pixel+ #x3)
(defconstant +bochs-vbe-index-enable+ #x4)
(defconstant +bochs-vbe-index-bank+ #x5)
(defconstant +bochs-vbe-index-virtual-width+ #x6)
(defconstant +bochs-vbe-index-virtual-height+ #x7)
(defconstant +bochs-vbe-index-x-offset+ #x8)
(defconstant +bochs-vbe-index-y-offset+ #x9)

;;
;; Command constants
;;
(defconstant +bochs-vbe-command-disable+ #x00)
(defconstant +bochs-vbe-command-enable+ #x01)
(defconstant +bochs-vbe-command-getcaps+ #x02)
(defconstant +bochs-vbe-command-8bit-dac+ #x20)
(defconstant +bochs-vbe-command-linear-framebuffer+ #x40)
(defconstant +bochs-vbe-command-noclearmem+ #x80)


;;
;; Parameters
;;
(defvar *bochs-vbe-framebuffer-width* 0)
(defvar *bochs-vbe-framebuffer-height* 0)
(defvar *bochs-vbe-framebuffer-bits-per-pixel* 0)

;;
;; Support functions
;;
(defun bochs-vbe-write-to-ports (index value)
  "Writes to the Bochs VBE ports."
  (setf (io-port +bochs-vbe-ioport-index+ :unsigned-byte16) index)
  (setf (io-port +bochs-vbe-ioport-data+ :unsigned-byte16) value))


;;
;; Interface functions
;;
(defun bochs-vbe-set-video-mode (width height bits-per-pixel)
  "Sets the video mode to the specified parameters."
  (bochs-vbe-write-to-ports +bochs-vbe-index-enable+
			    +bochs-vbe-command-disable+)
  (bochs-vbe-write-to-ports +bochs-vbe-index-width+
			    width)
  (bochs-vbe-write-to-ports +bochs-vbe-index-height+
			    height)
  (bochs-vbe-write-to-ports +bochs-vbe-index-bits-per-pixel+
			    bits-per-pixel)
  (bochs-vbe-write-to-ports +bochs-vbe-index-enable+
			    (logior +bochs-vbe-command-enable+
				    +bochs-vbe-command-linear-framebuffer+))
  (setf *bochs-vbe-framebuffer-width* width)
  (setf *bochs-vbe-framebuffer-height* height)
  (setf *bochs-vbe-framebuffer-bits-per-pixel* bits-per-pixel))

(defun bochs-vbe-get-framebuffer-address ()
  "Returns the address of the framebuffer."
  #xe0000000)



More information about the Movitz-cvs mailing list