;;; -*- Mode:LISP; Package:SYSTEM-INTERNALS; Base:8; Readtable:T -*- ;;; (c) Copyright 1986, Lisp Machine Incorporated. ; "rominfo" structure at #x90 in multibus ram ; The structure is set up only by LMI version SDU ROMs (SDU Monitor V102+). ; Be sure to qualify every reference with (rominfo-valid-p); ; the accessors will return garbage if the structure is not present. ; Ideally, (define-accessors-for-structure) should make every function ; conditional on a test for validity. ; /usr/86include/rominfo.h (defconst rominfo-qs '( %rominfo-magic-42 ;magic number 42. %rominfo-size-in-words ;size of active structure %rominfo-version-number ;100+ for LMI roms %rominfo-console-type ;console types CT_ from sysconfig.h %rominfo-slot-if-video ;slot number of boot console, if video %rominfo-screen-if-quad ;screen number, for quad %rominfo-sysconf-nubus-addr ;nubus addr of sysconf, set up by newboot %rominfo-rom-font-addr ;8086 ptr to rom font %rominfo-init-vector ;8086 ptr to monitor re-init entry point %rominfo-optinfo ;if non-zero, ptr to more stuff )) (mapc #'(lambda (x) (putprop x t 'system-constant)) rominfo-qs) (assign-values rominfo-qs) (define-accessors-for-structure rominfo-qs) (defconst rom-info (make-array 20. :type :art-16b :displaced-to (+ multibus-virtual-address (// #x90 4)) :named-structure-symbol 'rom-info :leader-length 3)) (defselect ((rom-info named-structure-invoke)) (:describe (struct) (format t "~&~S:" struct) (dolist (q rominfo-qs) (print-sysconf-entry q struct))) (:print-self (struct stream ignore ignore) (printing-random-object (struct stream :typep) (format stream "Multibus:#x~16r" (* 4 (- (%p-contents-offset rom-info (array-data-offset rom-info)) multibus-virtual-address)) ))) (:which-operations (ignore) '(:describe :print-self :which-operations))) (defprop %rominfo-magic-42 t :decimal) (defprop %rominfo-size-in-words t :decimal) (defprop %rominfo-version-number t :decimal) (defprop %rominfo-slot-if-video t :decimal) (defprop %rominfo-sysconf-nubus-addr t :nubus-physical-adr) (defprop %rominfo-rom-font-addr t :nubus-physical-adr) (defprop %rominfo-init-vector t :nubus-physical-adr) (defprop %rominfo-optinfo t :nubus-physical-adr) (defsubst rominfo-valid-p () (= (%rominfo-magic-42 rom-info) 42.))