;;; -*- Mode:LISP; Package:GREY; Base:8 -*- ;; Copyright LISP Machine, Inc. 1984 ;; See filename "Copyright" for ;; licensing and release information. ;;;;WINDOW SYSTEM CODE (DEFVAR GREY-SCREEN) (DEFFLAVOR GREY-SCREEN (LAYOUT (COLOR-MAP-CONTROL-WINDOW nil)) (grey-screen-download-mixin TV:STANDARD-SCREEN) (:INITABLE-INSTANCE-VARIABLES LAYOUT) (:GETTABLE-INSTANCE-VARIABLES LAYOUT COLOR-MAP-CONTROL-WINDOW) (:SETTABLE-INSTANCE-VARIABLES COLOR-MAP-CONTROL-WINDOW)) (DEFFLAVOR GREY-SCREEN-PLANE () (grey-screen-download-mixin TV:STANDARD-SCREEN)) (DEFFLAVOR GREY-SCREEN-DOWNLOAD-MIXIN () () (:DOCUMENTATION "Makes sure the board is downloaded before anybody tries to :EXPOSE it, which would reference it as memory.")) ;; next time we build from scratch change this to an :around method. (DEFWRAPPER (GREY-SCREEN-DOWNLOAD-MIXIN :EXPOSE) (IGNORE . BODY) "Don't actually expose the color screen if there is no color monitor. This function is a TOTAL KLUDGE." `(COND ((GREY-EXISTS-AND-IF-SO-DOWNLOADED-P SELF) ;; always write this since it is cheap and fixes the bug of ;; a board actually allocated and downloaded, but our virtual memory not set up ;; because we have cold booted the machine. someday we will handle these issues ;; in the device-allocation code itself. (WRITE-METER 'SI:%LOWEST-DIRECT-VIRTUAL-ADDRESS VIDEO-BUFFER-BASE-VIRTUAL-ADDRESS) . ,BODY))) (DEFVAR GREY-SCREEN0) (DEFVAR GREY-SCREEN1) (DEFVAR GREY-SCREEN2) (DEFVAR GREY-SCREEN3) (DEFVAR GREY-SCREEN4) (DEFVAR GREY-SCREEN5) (DEFVAR GREY-SCREEN6) (DEFVAR GREY-SCREEN7) (DEFVAR GREY-SCREEN-ARRAY) (DEFVAR GREY-SCREEN-ARRAY0) (DEFVAR GREY-SCREEN-ARRAY1) (DEFVAR GREY-SCREEN-ARRAY2) (DEFVAR GREY-SCREEN-ARRAY3) (DEFVAR GREY-SCREEN-ARRAY4) (DEFVAR GREY-SCREEN-ARRAY5) (DEFVAR GREY-SCREEN-ARRAY6) (DEFVAR GREY-SCREEN-ARRAY7) ;these kind of screens are pretty useless for the time being. (DEFUN MAKE-GREY-SCREEN (&OPTIONAL (LAYOUT ':PORTRAIT) (NAME "GREY") (XBUS-ADR VIDEO-BUFFER-BASE-VIRTUAL-ADDRESS-AS-FIXNUM) (CONTROL-ADR nil)) ;377530 (loop for s in tv:all-the-screens if (string-equal name (funcall s ':name)) do (progn (format t "~%There is already a screen with name ~S. Do you want to create another?" name) (if (null (y-or-n-p)) (return s))) finally (return (LET ((HEIGHT (SELECTQ LAYOUT (:PORTRAIT 454.) (:SQUARE 512.) (OTHERWISE (FERROR NIL "UNKNOWN LAYOUT")))) (WIDTH (SELECTQ LAYOUT (:PORTRAIT 576.) (:SQUARE 512.)))) (TV:DEFINE-SCREEN 'GREY-SCREEN NAME ':BITS-PER-PIXEL 8 ':BUFFER XBUS-ADR ':HEIGHT HEIGHT ':WIDTH WIDTH ':CONTROL-ADDRESS CONTROL-ADR ':LAYOUT LAYOUT ':PROPERTY-LIST `(:VIDEO :COLOR :CONTROLLER :LMGREY :HARDWARE-COLOR-MAP ,(MAKE-pixel-ARRAY 400 3 ':type ART-8B))))))) (DEFUN GET-GREY-SCREEN-ARRAY (&OPTIONAL (L ':PORTRAIT)) (COND ((BOUNDP 'GREY-SCREEN-ARRAY) GREY-SCREEN-ARRAY) (T (SETQ GREY-SCREEN-ARRAY (TV:SHEET-SCREEN-ARRAY (COND ((BOUNDP 'GREY-SCREEN) GREY-SCREEN) (T (SETQ GREY-SCREEN (MAKE-GREY-SCREEN L))))))))) (DEFUN KILL-SCREENS () "CALL THIS IF YOU WANT TO REMAKE THE GREY SCREEN" (COND ((BOUNDP 'GREY-SCREEN) ; (FUNCALL GREY-SCREEN ':KILL) ;****BOMBS TRYING TO SEND MSG TO SUPERIOR ;FIX THIS (SETQ TV:ALL-THE-SCREENS (DELQ GREY-SCREEN TV:ALL-THE-SCREENS)) (MAKUNBOUND 'GREY-SCREEN))) (MAKUNBOUND 'GREY-SCREEN-ARRAY) (COND ((BOUNDP 'GREY-SCREEN0) (SETQ TV:ALL-THE-SCREENS (DELQ GREY-SCREEN0 TV:ALL-THE-SCREENS)) (MAKUNBOUND 'GREY-SCREEN0))) (MAKUNBOUND 'GREY-SCREEN-ARRAY0) (COND ((BOUNDP 'GREY-SCREEN1) (SETQ TV:ALL-THE-SCREENS (DELQ GREY-SCREEN1 TV:ALL-THE-SCREENS)) (MAKUNBOUND 'GREY-SCREEN1))) (MAKUNBOUND 'GREY-SCREEN-ARRAY1) (COND ((BOUNDP 'GREY-SCREEN2) (SETQ TV:ALL-THE-SCREENS (DELQ GREY-SCREEN2 TV:ALL-THE-SCREENS)) (MAKUNBOUND 'GREY-SCREEN2))) (MAKUNBOUND 'GREY-SCREEN-ARRAY2) (COND ((BOUNDP 'GREY-SCREEN3) (SETQ TV:ALL-THE-SCREENS (DELQ GREY-SCREEN3 TV:ALL-THE-SCREENS)) (MAKUNBOUND 'GREY-SCREEN3))) (MAKUNBOUND 'GREY-SCREEN-ARRAY3) (COND ((BOUNDP 'GREY-SCREEN4) (SETQ TV:ALL-THE-SCREENS (DELQ GREY-SCREEN4 TV:ALL-THE-SCREENS)) (MAKUNBOUND 'GREY-SCREEN4))) (MAKUNBOUND 'GREY-SCREEN-ARRAY4) (COND ((BOUNDP 'GREY-SCREEN5) (SETQ TV:ALL-THE-SCREENS (DELQ GREY-SCREEN5 TV:ALL-THE-SCREENS)) (MAKUNBOUND 'GREY-SCREEN5))) (MAKUNBOUND 'GREY-SCREEN-ARRAY5) (COND ((BOUNDP 'GREY-SCREEN6) (SETQ TV:ALL-THE-SCREENS (DELQ GREY-SCREEN6 TV:ALL-THE-SCREENS)) (MAKUNBOUND 'GREY-SCREEN6))) (MAKUNBOUND 'GREY-SCREEN-ARRAY6) (COND ((BOUNDP 'GREY-SCREEN7) (SETQ TV:ALL-THE-SCREENS (DELQ GREY-SCREEN7 TV:ALL-THE-SCREENS)) (MAKUNBOUND 'GREY-SCREEN7))) (MAKUNBOUND 'GREY-SCREEN-ARRAY7)) (DEFUN MAKE-PLANE-SCREEN ( PLANE &OPTIONAL (NAME (STRING-APPEND "grey-plane" (FORMAT NIL "~D" PLANE))) (XBUS-ADR (+ VIDEO-BUFFER-BASE-VIRTUAL-ADDRESS-AS-FIXNUM 200000 (* PLANE 20000)))) (TV:DEFINE-SCREEN 'GREY-SCREEN-PLANE NAME ':BUFFER XBUS-ADR ':CONTROL-ADDRESS nil ;377530 ':PROPERTY-LIST '(:VIDEO :COLOR-PLANE :CONTROLLER :LMGREY) ':HEIGHT 454. ':WIDTH 576.)) (DEFUN GET-GREY-SCREEN-ARRAY0 () (COND ((BOUNDP 'GREY-SCREEN-ARRAY0) GREY-SCREEN-ARRAY0) (T (SETQ GREY-SCREEN-ARRAY0 (TV:SHEET-SCREEN-ARRAY (COND ((BOUNDP 'GREY-SCREEN0) GREY-SCREEN0) (T (SETQ GREY-SCREEN0 (MAKE-PLANE-SCREEN 0))))))))) (DEFUN GET-GREY-SCREEN-ARRAY1 () (COND ((BOUNDP 'GREY-SCREEN-ARRAY1) GREY-SCREEN-ARRAY1) (T (SETQ GREY-SCREEN-ARRAY1 (TV:SHEET-SCREEN-ARRAY (COND ((BOUNDP 'GREY-SCREEN1) GREY-SCREEN1) (T (SETQ GREY-SCREEN1 (MAKE-PLANE-SCREEN 1))))))))) (DEFUN GET-GREY-SCREEN-ARRAY2 () (COND ((BOUNDP 'GREY-SCREEN-ARRAY2) GREY-SCREEN-ARRAY2) (T (SETQ GREY-SCREEN-ARRAY2 (TV:SHEET-SCREEN-ARRAY (COND ((BOUNDP 'GREY-SCREEN2) GREY-SCREEN2) (T (SETQ GREY-SCREEN2 (MAKE-PLANE-SCREEN 2))))))))) (DEFUN GET-GREY-SCREEN-ARRAY3 () (COND ((BOUNDP 'GREY-SCREEN-ARRAY3) GREY-SCREEN-ARRAY3) (T (SETQ GREY-SCREEN-ARRAY3 (TV:SHEET-SCREEN-ARRAY (COND ((BOUNDP 'GREY-SCREEN3) GREY-SCREEN3) (T (SETQ GREY-SCREEN3 (MAKE-PLANE-SCREEN 3))))))))) (DEFUN GET-GREY-SCREEN-ARRAY4 () (COND ((BOUNDP 'GREY-SCREEN-ARRAY4) GREY-SCREEN-ARRAY4) (T (SETQ GREY-SCREEN-ARRAY4 (TV:SHEET-SCREEN-ARRAY (COND ((BOUNDP 'GREY-SCREEN4) GREY-SCREEN4) (T (SETQ GREY-SCREEN4 (MAKE-PLANE-SCREEN 4))))))))) (DEFUN GET-GREY-SCREEN-ARRAY5 () (COND ((BOUNDP 'GREY-SCREEN-ARRAY5) GREY-SCREEN-ARRAY5) (T (SETQ GREY-SCREEN-ARRAY5 (TV:SHEET-SCREEN-ARRAY (COND ((BOUNDP 'GREY-SCREEN5) GREY-SCREEN5) (T (SETQ GREY-SCREEN5 (MAKE-PLANE-SCREEN 5))))))))) (DEFUN GET-GREY-SCREEN-ARRAY6 () (COND ((BOUNDP 'GREY-SCREEN-ARRAY6) GREY-SCREEN-ARRAY6) (T (SETQ GREY-SCREEN-ARRAY6 (TV:SHEET-SCREEN-ARRAY (COND ((BOUNDP 'GREY-SCREEN6) GREY-SCREEN6) (T (SETQ GREY-SCREEN6 (MAKE-PLANE-SCREEN 6))))))))) (DEFUN GET-GREY-SCREEN-ARRAY7 () (COND ((BOUNDP 'GREY-SCREEN-ARRAY7) GREY-SCREEN-ARRAY7) (T (SETQ GREY-SCREEN-ARRAY7 (TV:SHEET-SCREEN-ARRAY (COND ((BOUNDP 'GREY-SCREEN7) GREY-SCREEN7) (T (SETQ GREY-SCREEN7 (MAKE-PLANE-SCREEN 7))))))))) (DEFUN SCREEN-INITIALIZE NIL (COND ((NOT (BOUNDP 'GREY-SCREEN)) (select si:processor-type-code (si:cadr-type-code (USE-DIRECT)) (si:lambda-type-code (use-lam-direct))) ;So following MAKE-GREY-SCREEN will work (ADD-INITIALIZATION "Grey Make Screen" '(SETQ GREY-SCREEN (MAKE-GREY-SCREEN)) '(ONCE))) )) ;Grey font hackery (convert a font to be usable on the grey screen in old-style pixel mode) (DEFUN MAKE-GREY-FONT (BW-FONT &OPTIONAL (BIT-LIST '(1 1 1 1 1 1 1 1)) (FONT-NAME-SUFFIX "")) (COND ((FIXP BIT-LIST) (DO ((I 0 (1+ I)) (X BIT-LIST) (L NIL)) ((>= I 8) (SETQ BIT-LIST (NREVERSE L))) (PUSH (LDB 0001 X) L) (SETQ X (LSH X -1)))) ((OR ( (LENGTH BIT-LIST) 8) (DOLIST (B BIT-LIST) (OR (NUMBERP B) (RETURN T)))) (FERROR NIL "Illegal format for bit list ~S" BIT-LIST))) (LET ((FIT) (MAXW 1) (SIZE 0) (RASTER-WIDTH) (WORDS-PER-CHAR) (RASTERS-PER-WORD) (GREY-FONT) (NEW-FIT) (FONT-NAME (INTERN (STRING-APPEND "GREY-" (FONT-NAME BW-FONT) FONT-NAME-SUFFIX) 'FONTS))) (IF (SETQ FIT (FONT-INDEXING-TABLE BW-FONT)) (DOTIMES (CHAR 200) (SETQ MAXW (MAX MAXW (- (AREF FIT (1+ CHAR)) (AREF FIT CHAR)))))) (SETQ MAXW (* (FONT-RASTER-WIDTH BW-FONT) MAXW 8)) (COND ((> MAXW 32.) ;Will need a font indexing table, make raster width 32., and ;figure out the size of the array (SETQ RASTERS-PER-WORD 1 WORDS-PER-CHAR (FONT-RASTER-HEIGHT BW-FONT) RASTER-WIDTH 32.) (COND ((NULL FIT) ;Old font has no indexing table, so every character is same size (SETQ SIZE (* (// (+ MAXW 31.) 32.) WORDS-PER-CHAR 200))) (T ;Otherwise, loop through and figure out size on a per character basis (DOTIMES (CHAR 200) (SETQ SIZE (+ SIZE (* 8 WORDS-PER-CHAR (- (AREF FIT (1+ CHAR)) (AREF FIT CHAR))))))))) ((NULL FIT) ;Won't need an indexing table, and didn't have one (SETQ RASTER-WIDTH MAXW) (SETQ RASTERS-PER-WORD (// 32. RASTER-WIDTH)) (SETQ WORDS-PER-CHAR (// (+ (FONT-RASTER-HEIGHT BW-FONT) (1- RASTERS-PER-WORD)) RASTERS-PER-WORD)) (SETQ SIZE (* WORDS-PER-CHAR 200))) (T (FERROR NIL "We don't need an indexing table, but black-and-white font did?"))) (SETQ GREY-FONT (MAKE-ARRAY (* SIZE 32.) ':TYPE 'ART-1B ':LEADER-LENGTH TV:FONT-LEADER-SIZE ':NAMED-STRUCTURE-SYMBOL 'FONT)) (SETF (ARRAY-LEADER GREY-FONT 0) 0) ;Fill pointer (SETF (FONT-NAME GREY-FONT) FONT-NAME) (SET FONT-NAME GREY-FONT) ;Copy parameters which are the same (SETF (FONT-CHAR-HEIGHT GREY-FONT) (FONT-CHAR-HEIGHT BW-FONT)) (SETF (FONT-CHAR-WIDTH GREY-FONT) (FONT-CHAR-WIDTH BW-FONT)) ;Software width is the same (SETF (FONT-RASTER-HEIGHT GREY-FONT) (FONT-RASTER-HEIGHT BW-FONT)) (SETF (FONT-RASTER-WIDTH GREY-FONT) RASTER-WIDTH) (SETF (FONT-RASTERS-PER-WORD GREY-FONT) RASTERS-PER-WORD) (SETF (FONT-WORDS-PER-CHAR GREY-FONT) WORDS-PER-CHAR) (SETF (FONT-BASELINE GREY-FONT) (FONT-BASELINE BW-FONT)) (SETF (FONT-CHAR-WIDTH-TABLE GREY-FONT) (FONT-CHAR-WIDTH-TABLE BW-FONT)) (SETF (FONT-LEFT-KERN-TABLE GREY-FONT) (FONT-LEFT-KERN-TABLE BW-FONT)) (SETF (FONT-BLINKER-WIDTH GREY-FONT) (FONT-BLINKER-WIDTH BW-FONT)) (SETF (FONT-BLINKER-HEIGHT GREY-FONT) (FONT-BLINKER-HEIGHT BW-FONT)) ;Setup new font indexing table if necessary (IF (> MAXW 32.) (SETF (FONT-INDEXING-TABLE GREY-FONT) (SETQ NEW-FIT (MAKE-ARRAY 201)))) (COND ((NULL NEW-FIT) ;This is pretty easy -- loop over each char and duplicate bits (LET ((RAS-PER-W (FONT-RASTERS-PER-WORD BW-FONT)) (RW (FONT-RASTER-WIDTH BW-FONT))) (DOTIMES (CHAR 200) (LET ((BW-BASE (* CHAR (FONT-WORDS-PER-CHAR BW-FONT) 32.)) (CBASE (* CHAR WORDS-PER-CHAR 32.)) (CPIX)) ;Generator loop, calls sink on every bit (DOTIMES (RAS (FONT-RASTER-HEIGHT BW-FONT)) (SETQ CPIX 0) (DOTIMES (PIX RW) ;Here once for each pixel of bw font (LET ((PIXEL (AREF BW-FONT (+ BW-BASE ;Offset (* 32. (// RAS RAS-PER-W)) ;Number of words in (* RW (\ RAS RAS-PER-W)) ;Num rasters in word PIX)))) ;Pixel within raster (DOLIST (B BIT-LIST) ;Now store pixel eight times (ASET (* PIXEL B) GREY-FONT (+ CBASE (* 32. (// RAS RASTERS-PER-WORD)) (* RASTER-WIDTH (\ RAS RASTERS-PER-WORD)) CPIX)) (SETQ CPIX (1+ CPIX)))))))))) (T ;We will have an indexing table (LET ((RAS-PER-W (FONT-RASTERS-PER-WORD BW-FONT)) (RW (FONT-RASTER-WIDTH BW-FONT)) (GREY-IDX -1)) (DOTIMES (CHAR 200) (ASET (1+ GREY-IDX) NEW-FIT CHAR) (LET* ((BW-IDX (IF FIT (AREF FIT CHAR) CHAR)) (BW-NWIDE (IF FIT (- (AREF FIT (1+ CHAR)) BW-IDX) 1)) (BW-BASE) (CBASE) (IDX) (CPIX)) (DOTIMES (RAS (FONT-RASTER-HEIGHT BW-FONT)) (SETQ IDX GREY-IDX CPIX RASTER-WIDTH) (DOTIMES (CHAR-WITHIN-CHAR BW-NWIDE) (SETQ BW-BASE (* (FONT-WORDS-PER-CHAR BW-FONT) (+ BW-IDX CHAR-WITHIN-CHAR) 32.)) (DOTIMES (PIX RW) ;Here once for each pixel of bw font (LET ((PIXEL (AREF BW-FONT (+ BW-BASE ;Offset (* 32. (// RAS RAS-PER-W)) ;Number of words in (* RW (\ RAS RAS-PER-W)) ;Num rasters in word PIX)))) ;Pixel within raster (DOLIST (B BIT-LIST) ;Now store pixel eight times (SETQ CPIX (1+ CPIX)) (IF ( CPIX RASTER-WIDTH) (SETQ IDX (1+ IDX) CPIX 0 CBASE (* IDX WORDS-PER-CHAR 32.))) (ASET (* PIXEL B) GREY-FONT (+ CBASE (* 32. (// RAS RASTERS-PER-WORD)) (* RASTER-WIDTH (\ RAS RASTERS-PER-WORD)) CPIX))))))) (SETQ GREY-IDX IDX))) (ASET (1+ GREY-IDX) NEW-FIT 200)))) (PUTPROP FONT-NAME T 'GREY-FONT) (PUTPROP FONT-NAME (FONT-NAME BW-FONT) 'FONTS:CPT-FONT) (PUTPROP (FONT-NAME BW-FONT) FONT-NAME 'FONTS:GREY-FONT) GREY-FONT)) (DEFMETHOD (GREY-SCREEN :PARSE-FONT-DESCRIPTOR) (FD) (SETQ FD (TV:SCREEN-PARSE-FONT-DESCRIPTOR FD 'FONTS:GREY-FONT)) (OR (GET (FONT-NAME FD) 'GREY-FONT) (SETQ FD (MAKE-GREY-FONT FD))) FD) (DEFMETHOD (GREY-SCREEN :PARSE-FONT-SPECIFIER) (FD) (SETQ FD (TV:SCREEN-PARSE-FONT-DESCRIPTOR FD 'FONTS:GREY-FONT)) (OR (GET (FONT-NAME FD) 'GREY-FONT) (SETQ FD (MAKE-GREY-FONT FD))) FD) (DEFMETHOD (GREY-SCREEN :BLT-COLOR-MAP) (ARRAY) (LET ((HARDWARE-COLOR-MAP (GET (LOCF (TV:SCREEN-PROPERTY-LIST SELF)) ':HARDWARE-COLOR-MAP)) ) (DOTIMES (I (ARRAY-DIMENSION HARDWARE-COLOR-MAP 0)) (WRITE-COLOR-MAP I (FIX (ar-2-reverse ARRAY I 0)) (FIX (ar-2-reverse ARRAY I 1)) (FIX (ar-2-reverse ARRAY I 2)) NIL SELF) ; (AS-2-reverse (- 377 (FIX (AR-2-reverse ARRAY I 0))) HARDWARE-COLOR-MAP I 0) ; (AS-2-reverse (- 377 (FIX (AR-2-reverse ARRAY I 1))) HARDWARE-COLOR-MAP I 1) ; (AS-2-reverse (- 377 (FIX (AR-2-reverse ARRAY I 2))) HARDWARE-COLOR-MAP I 2) ) ; (LMGREY-BLT-COLOR-MAP-TO-HARDWARE HARDWARE-COLOR-MAP) )) (defmethod (grey-screen :device-attached?) () (grey-exists-and-if-so-downloaded-p)) (defmethod (grey-screen :WRITE-COLOR-MAP) (LOC R G B &OPTIONAL (SYNCHRONIZE NIL)) (write-color-map loc r g b synchronize self)) (defmethod (grey-screen :read-color-map) (loc) (READ-COLOR-MAP LOC self)) (DEFUN LMGREY-BLT-COLOR-MAP-TO-HARDWARE (MAP) (DOTIMES (I (ARRAY-DIMENSION MAP 0)) (WRITE-COLOR-MAP-IMMEDIATE I (AR-2-reverse MAP I 0) (Ar-2-reverse MAP I 1) (AR-2-reverse MAP I 2)))) (DEFUN PRINT-MAP (MAP) (DOTIMES (I (ARRAY-DIMENSION MAP 0)) (FORMAT T "~%~S,~S,~S" (AR-2-reverse MAP I 0) (AR-2-reverse MAP I 1) (AR-2-reverse MAP I 2)))) (DEFUN REINITIALIZE-SCREEN () (select si:processor-type-code (si:cadr-type-code (USE-DIRECT)) (si:lambda-type-code (use-lam-direct))) (INIT) (START) (KILL-SCREENS) (SCREEN-INITIALIZE) (SETQ GREY-ARRAY (GET-GREY-SCREEN-ARRAY)) (SETQ GREY-ARRAY0 (GET-GREY-SCREEN-ARRAY0)) (SETQ GREY-ARRAY1 (GET-GREY-SCREEN-ARRAY1)) (SETQ GREY-ARRAY2 (GET-GREY-SCREEN-ARRAY2)) (SETQ GREY-ARRAY3 (GET-GREY-SCREEN-ARRAY3)) (SETQ GREY-ARRAY4 (GET-GREY-SCREEN-ARRAY4)) (SETQ GREY-ARRAY5 (GET-GREY-SCREEN-ARRAY5)) (SETQ GREY-ARRAY6 (GET-GREY-SCREEN-ARRAY6)) (SETQ GREY-ARRAY7 (GET-GREY-SCREEN-ARRAY7)) (STRAIGHT-MAP)) (COMPILE-FLAVOR-METHODS GREY-SCREEN GREY-SCREEN-PLANE) (DEFUN CREATE-USEFUL-GREY-FONTS () (DOLIST (A-FONT-NAME 'FONTS:(HL12I MEDFNT MOUSE SEARCH CPTFONT 5X5)) ;; list determined by calling (FIND-GREY-FONTS-CREATED) ;; after making and running windows (make-instance x ':superior grey-screen) ;; for x = tv:lisp-listener and zwei:zmacs-frame and putting the mouse and ;; a system menu on the grey screen. (OR (GET A-FONT-NAME 'FONTS:GREY-FONT) (MAKE-GREY-FONT (SYMEVAL A-FONT-NAME))))) (IF (EQ SI:PROCESSOR-TYPE-CODE SI:LAMBDA-TYPE-CODE) (CREATE-USEFUL-GREY-FONTS)) (DEFVAR FIND-GREY-FONTS-CREATED NIL) (DEFUN FIND-GREY-FONTS-CREATED () (SETQ FIND-GREY-FONTS-CREATED NIL) (MAPATOMS #'(LAMBDA (X) (IF (GET X 'FONTS:GREY-FONT) (PUSH X FIND-GREY-FONTS-CREATED))) "FONTS") FIND-GREY-FONTS-CREATED)