(FILECREATED "28-MAR-83 12:00:37" <NEWLISP>COMMENT.;1 22415  

      changes to:  (FNS FONTNAME)

      previous date: " 9-MAR-83 21:53:07" <LISP>COMMENT.;157)


(* Copyright (c) 1983 by Xerox Corporation)

(PRETTYCOMPRINT COMMENTCOMS)

(RPAQQ COMMENTCOMS [(VARS LCASELST UCASELST ABBREVLST)
		    [COMS (* * PRINTFN)
			  (FNS PF PF* PMORE PRINTFN PRINTFNDEF FINDFNDEF FINDBCPLDEF FINDSUBRDEF 
			       SEARCHFILEMAP)
			  (E (* currently PFDEFAULT has 3 possible settings: COPYBYTES means always 
				use COPYBYTES to print the functions. - NIL means use the PFCOPYBYTES 
				function, which prints comments as **COMMENT**FLG, and reduces the 
				spacing from the left margin by 1/2 and gets rid of the changechar 
				indicators. - PFDEFAULT=T uses PFCOPYBYTES, but leaves the spacing 
				as-is))
			  (INITVARS PFDEFAULT (LASTFNDEF))
			  (P (MOVD? (QUOTE COPYBYTES)
				    (QUOTE PFCOPYBYTES)))
			  (USERMACROS PF)
			  (PROP MAC SUBR)
			  (BLOCKS (NIL PRINTFN PF PF* PMORE PRINTFNDEF (LOCALVARS . T)
				       (GLOBALVARS **COMMENT**FLG LASTFNDEF LASTWORD PFDEFAULT 
						   FILERDTBL))
				  (NIL FINDFNDEF FINDSUBRDEF FINDBCPLDEF SEARCHFILEMAP
				       (GLOBALVARS FILERDTBL BUILDMAPFLG ERRORTYPELST USEMAPFLG)
				       (NOLINKFNS . T]
		    [COMS (* * FONT)
			  (FNS FONTSET FONTNAME FONTPROFILE FONTPROFILE1)
			  (INITVARS (FONTESCAPECHAR (CHARACTER 6))
				    (FONTFNS)
				    (FONTWORDS))
			  (VARS FONTDEFSVARS)
			  [ADDVARS (FONTSETUPFNS)
				   (FONTDEFS (STANDARD (FONTCHANGEFLG)
						       (FILELINELENGTH . 72)
						       (COMMENTLINELENGTH . 72)
						       (LAMBDAFONTLINELENGTH . 72)
						       (FIRSTCOL . 48)
						       (PRETTYLCOM . 14)
						       (LISTFILESTR . "
")
						       (FONTPROFILE (DEFAULTFONT)
								    (USERFONT)
								    (COMMENTFONT)
								    (LAMBDAFONT)
								    (SYSTEMFONT)
								    (CLISPFONT)
								    (CHANGEFONT)
								    (PRETTYCOMFONT)
								    (BIGFONT)
								    (LITTLEFONT)
								    (BOLDFONT)))
					     (SMALL (FONTCHANGEFLG)
						    (FILELINELENGTH . 96)
						    (COMMENTLINELENGTH . 96)
						    (LAMBDAFONTLINELENGTH . 96)
						    (FIRSTCOL . 60)
						    (PRETTYLCOM . 14)
						    (LISTFILESTR . "
")
						    (FONTPROFILE (DEFAULTFONT)
								 (USERFONT)
								 (COMMENTFONT)
								 (LAMBDAFONT)
								 (SYSTEMFONT)
								 (CLISPFONT)
								 (CHANGEFONT)
								 (PRETTYCOMFONT)
								 (BIGFONT)
								 (LITTLEFONT)
								 (BOLDFONT]
			  [DECLARE: DONTEVAL@LOAD DOCOPY (P (FONTSET (QUOTE STANDARD]
			  (BLOCKS (NIL FONTSET FONTNAME FONTPROFILE FONTPROFILE1 (LOCALVARS . T)
				       (GLOBALVARS FONTPROFILE FONTCHANGEFLG FONTESCAPECHAR FONTDEFS 
						   FONTDEFSVARS]
		    (COMS (* Some prettyprint macros)
			  (FNS LONGLAMBDA.PPMACRO LONGPROGN.PPMACRO))
		    (DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS
			      (ADDVARS (NLAMA PF* PF)
				       (NLAML)
				       (LAMA])

(RPAQQ LCASELST (A ADD AN AND ARRAY ARRAYS AS ATOM ATOMIC ATOMS ATTACH BETWEEN BY CALLS CHARACTER 
		   CHART COLLECT COMMENT CONTROL COPY COUNT CREATE DEFINE DIFFERENCE DISPLAY DIVIDE 
		   DO E EDIT EITHER ELSE EQ EQUAL EQUALS ERROR EVERY FINALLY FIRST FIX FIXED FLOATING 
		   FOR FROM FUNCTION GET GO GREATER HELP IF IN INPUT INTEGER INTEGERS IS JOIN LAST 
		   LENGTH LESS LIST LISTS LITATOM LITATOMS LITERAL MARK MEMB MEMBER MEMBERS MINUS 
		   MIXED MOVE MOVES NEGATIVE NOT NTH NULL NUMBER NUMBERS OF OLD ON OR OUTPUT PLUS 
		   POINT POSITION PRETTY PRINT PUSH PUT QUIT READ REMOVE RESET RESTORE RESULTS RETURN 
		   REVERSE SAVED SET SIDE SKIP SMALL SOME SORT START STRING STRINGS TAIL THAN THE 
		   THEN THRU TIME TIMES TO UNLESS UNTIL USED VARIABLES WHEN WHERE WHILE))

(RPAQQ UCASELST NIL)

(RPAQQ ABBREVLST (ETC. I.E. E.G. etc. i.e. e.g.))
(* * PRINTFN)

(DEFINEQ

(PF
  [NLAMBDA FN                                          (* rmk: "18-AUG-81 13:38")
    (RESETLST 

          (* Print from files known to masterscope database before looking at whereis 
	  database. Note, however, that it also prefers the masterscope database to incore 
	  files)


	      (PROG (OUT OTHERARGS)
		    [COND
		      ((LISTP FN)
			(SETQ OTHERARGS (CDR FN))
			(SETQ FN (CAR FN]
		    (COND
		      (FN (SETQ LASTWORD FN))
		      (T (SETQ FN LASTWORD)))
		    [RESETSAVE (OUTPUT (COND
					 ((CADR OTHERARGS)
					   (OR (OPENP (CADR OTHERARGS)
						      (QUOTE OUTPUT))
					       (PROGN [RESETSAVE (SETQ OUT (OPENFILE (CADR OTHERARGS)
										     (QUOTE OUTPUT)))
								 (QUOTE (PROGN (CLOSEF? OLDVALUE]
						      OUT)))
					 (T T]
		    (COND
		      ((CAR OTHERARGS)
			(for FILE inside (CAR OTHERARGS) do (PRINTFN FN FILE)))
		      (T (WHEREIS FN (QUOTE FNS)
				  T
				  (FUNCTION PRINTFN])

(PF*
  [NLAMBDA FN                                   (* lmm "30-MAR-78 23:40")
    (RESETVARS (**COMMENT**FLG)
	       (APPLY (FUNCTION PF)
		      FN])

(PMORE
  (LAMBDA NIL                                               (* lmm " 9-AUG-78 17:21")
                                                            (* lmm "17-MAY-78 15:38")
    (PRINTFNDEF (CAR LASTFNDEF)
		T
		(CADDR LASTFNDEF)
		-1
		(CADDDR LASTFNDEF))))

(PRINTFN
  (LAMBDA (FN FROMFILE TOFILE)                              (* lmm " 9-AUG-78 17:21")
    (PROG ((LOC (FINDFNDEF FN FROMFILE)))
          (COND
	    (LOC (SETQ LASTFNDEF LOC)
		 (PRINTFNDEF (CAR LOC)
			     TOFILE
			     (CADR LOC)
			     (CADDR LOC)
			     (CADDDR LOC))
		 (RETURN FN))))))

(PRINTFNDEF
  [LAMBDA (SRCFIL DSTFIL START END TYPE)        (* rmk: " 1-MAR-82 15:45"
)
    (RESETLST (PROG (TEM)
		    [COND
		      ((NULL DSTFIL)
			(SETQ DSTFIL (OUTPUT)))
		      ((SETQ TEM (OPENP DSTFIL))
			(SETQ DSTFIL TEM))
		      (T (RESETSAVE (SETQ DSTFIL (OPENFILE
					DSTFIL
					(QUOTE OUTPUT)))
				    (QUOTE (PROGN (CLOSEF? OLDVALUE]
		    [COND
		      ((SETQ TEM (OPENP SRCFIL (QUOTE INPUT)))
			(RESETSAVE NIL (LIST (QUOTE SETFILEPTR)
					     TEM
					     (GETFILEPTR TEM)))
			(SETQ SRCFIL TEM))
		      (T (RESETSAVE (SETQ SRCFIL (OPENFILE
					SRCFIL
					(QUOTE INPUT)))
				    (QUOTE (PROGN (CLOSEF? OLDVALUE]
		    (PRIN1 "{from " DSTFIL)
		    (PRIN2 SRCFIL DSTFIL T)
		    (PRIN1 "}
" DSTFIL))
	      (COND
		((OR (NEQ DSTFIL T)
		     (EQ PFDEFAULT (QUOTE COPYBYTES))
		     (EQ TYPE (QUOTE MAC)))
		  (COPYBYTES SRCFIL DSTFIL START END))
		(T (PFCOPYBYTES SRCFIL DSTFIL START END PFDEFAULT)))
	      (TERPRI DSTFIL])

(FINDFNDEF
  [LAMBDA (FN FROMFILE)                         (* rmk: " 1-MAR-82 15:43"
)
    (PROG (FULL ST TEM MAP)
          [COND
	    [(SETQ TEM (GETP FROMFILE (QUOTE MAC)))
	      (RETURN (FINDSUBRDEF FN (CAR TEM)
				   (CADR TEM)
				   (CADDR TEM]
	    ((SETQ TEM (GETP FROMFILE (QUOTE BCPL)))
	      (RETURN (FINDBCPLDEF FN (CAR TEM)
				   (CADR TEM)
				   (CADDR TEM]
          (RETURN
	    (AND
	      (SETQ FULL (OR (AND [SETQ TEM (LISTP (GETP FROMFILE
							 (QUOTE 
							  FILEDATES]
				  (INFILEP (CDAR TEM)))
			     (FINDFILE FROMFILE T)))
	      (COND
		((AND USEMAPFLG (SETQ MAP (GETP (NAMEFIELD FULL)
						(QUOTE FILEMAP)))
		      (EQ FULL (CAR MAP)))      (* quick check when the 
						file already has a map)
		  (SEARCHFILEMAP FN MAP))
		(T
		  (RESETLST
		    (RESETSAVE (INPUT))
		    (INFILE FULL)
		    (RESETSAVE NIL (LIST (QUOTE CLOSEF?)
					 (INPUT)))
		    (RESETSAVE (SETREADTABLE FILERDTBL))
		    (SELECTQ
		      (SETQ ST (RATOM))
		      [%(                       (* Assume it's a lisp 
						file)
			(COND
			  ([AND
			      USEMAPFLG
			      (EQ (RATOM)
				  (QUOTE FILECREATED))
			      [PROGN (SKREAD)   (* DATE)
				     (SKREAD)   (* NAME)
				     (FIXP (SETQ ST (RATOM]
			      [PROGN
				(SETFILEPTR NIL ST)

          (* next expression checks to make sure FILEMAP is 
	  valid, e.g. file may have been ftped to dorado.
	  reason for the errorset is if file map is not valid,
	  may read off of end of file.)


				(AND
				  [RESETVARS (ERRORTYPELST)
					     (RETURN
					       (NLSETQ
						 (PROGN (READC)
							(SETQ TEM
							  (RATOM]
				  (EQ TEM (QUOTE FILEMAP]
			      (SETQ ST (FFILEPOS (CONCAT " (" FN " ")
						 (INPUT)
						 ST NIL NIL NIL
						 (SEPRCASE)))
			      (OR (EQ (RATOM)
				      FN)
				  (EQ (RATOM)
				      FN))
			      (FIXP (SETQ ST (RATOM)))
			      (EQ (RATOM)
				  (QUOTE %.))
			      (FIXP (SETQ TEM (RATOM]
			    (LIST (INPUT)
				  ST TEM (QUOTE SCAN)))
			  ((AND BUILDMAPFLG (SETQ MAP (LOADFILEMAP
				    FULL)))     (* will rebuild filemap.
						rewrite it on file if 
						updatemapflg is T.)
			    (SEARCHFILEMAP FN (LIST FULL MAP]
		      ((TITLE Title title)
			(FINDSUBRDEF FN))
		      (SELCHARQ (NTHCHARCODE ST 1)
				((; *)
				  (FINDSUBRDEF FN))
				(/ (FINDBCPLDEF FN))
				NIL])

(FINDBCPLDEF
  [LAMBDA (FN FROMFILES DIRS INDEX)                         (* rmk: " 5-MAY-81 22:00")
    (RESETLST (PROG ((LABEL FN)
		     TEM BCPLFILE TEM2 INDEXFILE LABLEN)
		    [SETQ LABLEN (NCHARS (SETQ LABEL (CONCAT " " LABEL "("]
		    (RETURN (for BC in (OR (LISTP FROMFILES)
					   (SETQ FROMFILES (LIST FROMFILES)))
			       do (COND
				    ((SETQ BCPLFILE (FINDFILE (PACKFILENAME (QUOTE BODY)
									    BC
									    (QUOTE EXTENSION)
									    (QUOTE BCPL))
							      T DIRS))
				      [RESETSAVE NIL (LIST (QUOTE CLOSEF?)
							   (INPUT (INFILE BCPLFILE]
				      (SETFILEPTR BCPLFILE 0)
				      (COND
					([SETQ TEM
					    (PROG NIL
					      LP  (COND
						    ((SETQ TEM (FFILEPOS LABEL BCPLFILE))
						      (SETFILEPTR BCPLFILE (SETQ TEM
								    (IDIFFERENCE TEM 3)))
						      (COND
							[(FMEMB (U-CASE (RATOM BCPLFILE FILERDTBL))
								(QUOTE (AND LET)))
							  (RETURN (LIST BCPLFILE TEM
									(PROGN (FFILEPOS "[" BCPLFILE)
									       (SKREAD BCPLFILE)
									       (GETFILEPTR BCPLFILE))
									(QUOTE BCPL]
							(T (SETFILEPTR BCPLFILE (IPLUS TEM LABLEN 3))
							   (GO LP]
					  (MOVETOP BC FROMFILES)
					  (RETURN TEM])

(FINDSUBRDEF
  [LAMBDA (FN FROMFILES DIRS INDEX)             (* rmk: " 6-JUN-82 15:28"
)
    (RESETLST
      (PROG ((LABEL FN)
	     TEM MACFILE TEM2 INDEXFILE)
	    [COND
	      ((EQ (NTHCHARCODE LABEL -1)
		   (CHARCODE :)))
	      ((NULL INDEX)
		(RETURN))
	      ((AND (CAR INDEX)
		    (SETQ INDEXFILE (FINDFILE (PACK* (CAR INDEX)
						     ".MAC")
					      T DIRS))
		    (FFILEPOS
		      (CONCAT (CADR INDEX)
			      LABEL
			      (CADDR INDEX))
		      (PROGN [RESETSAVE NIL
					(LIST (QUOTE CLOSEF?)
					      (SETQ INDEXFILE
						(INPUT (INFILE 
							  INDEXFILE]
			     INDEXFILE)
		      (CADDDR INDEX)
		      NIL NIL T))
		(SETQ TEM (RSTRING INDEXFILE T))
		(SELECTQ
		  (CADDDR (CDR INDEX))
		  [EXEC
		    (SETQ LABEL
		      (COND
			((SETQ TEM2 (STRPOS "," TEM))
			  (SUBSTRING TEM (ADD1 TEM2)
				     -1))
			(T (CONCAT "."
				   (COND
				     ((NOT (IGREATERP (NCHARS LABEL)
						      5))
				       LABEL)
				     (T (SUBSTRING LABEL 1 5 TEM]
		  (SETQ LABEL (SUBSTRING TEM 1
					 (SUB1 (OR (STRPOS "," TEM)
						   0))
					 TEM]
	    [SETQ LABEL (CONCAT "
" LABEL (COND
				  ((EQ (NTHCHARCODE LABEL -1)
				       (CHARCODE :))
				    "")
				  (T (QUOTE :]
	    (RETURN
	      (for MC inside (OR FROMFILES (INPUT))
		 do
		  [AND (SETQ MACFILE (FINDFILE (PACKFILENAME
						 (QUOTE BODY)
						 MC
						 (QUOTE EXTENSION)
						 (QUOTE MAC))
					       T DIRS))
		       (OR (EQ MACFILE INDEXFILE)
			   (RESETSAVE NIL (LIST (QUOTE CLOSEF?)
						(INPUT (INFILE MACFILE]
		  (COND
		    ((SETQ TEM (FFILEPOS LABEL MACFILE 0))
		      (PROG (CR (MAXBEG (IPLUS TEM 2))
				(MINBEG 0)
				(TRY (IDIFFERENCE TEM 80))
				(ENDTRY (IDIFFERENCE TEM 2))
				MAXP MINP)
			LP  (COND
			      ((ILESSP TRY MINBEG)
				(SETQ TRY MINBEG)))
			    (SETQ CR TRY)
			    [while (SETQ CR
				     (FFILEPOS "
" MACFILE CR ENDTRY NIL T))
			       do (SELECTQ (PEEKC MACFILE)
					   ((; *)
					     (OR MAXP (SETQ MAXP CR)))
					   (%
)
					   (PROGN (SETQ MAXP NIL)
						  (SETQ MINP CR]
			    (COND
			      (MAXP (SETQ MAXBEG MAXP)))
			    (COND
			      ((AND (NULL MINP)
				    (IGREATERP TRY MINBEG))
				(SETQ ENDTRY TRY)
				(SETQ TRY (IDIFFERENCE TRY 80))
				(GO LP)))
			    (SETQ TEM2 MAXBEG))
		      (AND (LISTP FROMFILES)
			   (MOVETOP MC FROMFILES))
		      (RETURN
			(LIST
			  MACFILE TEM2
			  [SUB1
			    (OR (FFILEPOS (OR (CADDDR (CDDR INDEX))
					      "")
					  MACFILE TEM)
				(ADD1 (GETEOFPTR MACFILE]
			  (QUOTE MAC])

(SEARCHFILEMAP
  (LAMBDA (FN MAP)                                          (* lmm " 9-AUG-78 17:20")
    (PROG (VALUE)
          (AND (SOME (CDADR MAP)
		     (FUNCTION (LAMBDA (X)
			 (SETQ VALUE (FASSOC FN X)))))
	       (RETURN (LIST (CAR MAP)
			     (CADR VALUE)
			     (CDDR VALUE)
			     (QUOTE MAP)))))))
)

(RPAQ? PFDEFAULT NIL)

(RPAQ? LASTFNDEF )
(MOVD? (QUOTE COPYBYTES)
       (QUOTE PFCOPYBYTES))

(ADDTOVAR EDITMACROS [PF NIL (ORR [(E (APPLY* (QUOTE PF)
					      (FIRSTATOM (##]
				  ((E (QUOTE PF?])

(ADDTOVAR EDITCOMSA PF)

(PUTPROPS SUBR MAC ((ATHASH LISP GC SWAP BYTE)
		    (NEWLISP LISP NETLISP)
		    (LISP "ATM <" ">," 250000 LISP)))
[DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY
(BLOCK: NIL PRINTFN PF PF* PMORE PRINTFNDEF (LOCALVARS . T)
	(GLOBALVARS **COMMENT**FLG LASTFNDEF LASTWORD PFDEFAULT FILERDTBL))
(BLOCK: NIL FINDFNDEF FINDSUBRDEF FINDBCPLDEF SEARCHFILEMAP (GLOBALVARS FILERDTBL BUILDMAPFLG 
									ERRORTYPELST USEMAPFLG)
	(NOLINKFNS . T))
]
(* * FONT)

(DEFINEQ

(FONTSET
  [LAMBDA (NAME)                                            (* rmk: "22-NOV-81 14:36")
    (PROG (TEM)
          (RETURN (COND
		    ((SETQ TEM (FASSOC NAME FONTDEFS))      (* Looks up NAME on FONTSLST and sets 
							    apropriate parameters.
							    entries are added to fontslst by 
							    FONTNAME.)
		      [MAPC (CDR TEM)
			    (FUNCTION (LAMBDA (X)
				(/SETATOMVAL (CAR X)
					     (CDR X]
		      (FONTPROFILE FONTPROFILE)
		      (SETQ FONTNAME NAME))
		    (T (ERROR NAME "not a defined font configuration"])

(FONTNAME
  [LAMBDA (NAME)                   (* lmm "28-MAR-83 12:00")
                                   (* Defines NAME to correspond to current setting of various parameters, and adds 
				   to FONTDEFS)
    (PROG [TEM (L (CONS NAME (MAPCAR FONTDEFSVARS (FUNCTION (LAMBDA (X)
					 (CONS X (GETATOMVAL X]
          (RETURN (COND
		    [(SETQ TEM (FASSOC NAME FONTDEFS))
		      (/RPLACD TEM (CDR L))
		      (RETURN (LIST NAME (QUOTE redefined]
		    (T (/SETATOMVAL (QUOTE FONTDEFS)
				    (CONS L FONTDEFS))
		       NAME])

(FONTPROFILE
  [LAMBDA (PROFILE)                             (* rmk: "23-NOV-81 16:47"
)

          (* The user defines a font configurationby setting 
	  the variables DEFAULTFONT, CLISPFONT, SYSTEMFONT, 
	  USERFONT, LAMBDAFONT, COMMENTFONT.
	  If non-NIL they define the font to be used on 
	  corresonding class of WORDS as follows: 
	  (1 words) CLISPFONT is font to be used on cispwords,
	  USERFONT all members of the list FONTFNS, or if 
	  FONTFNS=T, all members of FILEFNS.
	  USERFONT also applies to all members of FONTWORDS, 
	  initially NIL. SYSTEMFONT used for other functions.
	  COMMENTFONT for printing comments, and LAMBDAFONT 
	  for printing the function name before its 
	  definition. The same font name can be given to more 
	  than one of th above, although there is a limit on 
	  the xgp of 3 fonts. The psuedo-font UNDERLINE is 
	  also avaiaable, e.g. CLISPFONT=UNDERLINE means 
	  underline all clispwords.)


    (DECLARE (GLOBALVARS FONTSETUPFNS))
    [PROG (BASICCLASSES)
          [MAPC
	    PROFILE
	    (FUNCTION (LAMBDA (X)
		(PROG (SEEN (NAME (CAR X))
			    (FONTS X))
		  LP  [COND
			((MEMB (CAR FONTS)
			       SEEN)
			  (ERROR "Circular font profile specification" 
				 X))
			(T (push SEEN (CAR FONTS]
		      [SETQ FONTS (CDR (COND
					 ((OR (NULL (CADR FONTS))
					      (LISTP (CADR FONTS)))
                                                (* This skips over the 
						now-defunct NIL or 
						list-of-escape sequence)
					   (CDR FONTS))
					 (T FONTS]
		      [COND
			((OR (NLISTP FONTS)
			     (LITATOM (CAR FONTS)))
                                                (* Indirect thru 
						another's font spec)
			  (AND
			    (SETQ FONTS
			      (ASSOC
				(SELECTQ
				  (CAR (LISTP FONTS))
				  ((NIL DEFAULTFONT)
                                                (* Don't let DEFAULTFONT
						loop thru itself)
				    (AND (NOT (MEMB (QUOTE DEFAULTFONT)
						    SEEN))
					 (QUOTE DEFAULTFONT)))
				  (CAR FONTS))
				PROFILE))
			    (GO LP)))
			(T (push BASICCLASSES (CONS NAME FONTS))

          (* The CONS is needed to compensate for the old 
	  style specification, with the smash-cell.)


			   (SETQ FONTS (FONTPROFILE1 NAME FONTS]
		      (AND NAME (/SETATOMVAL NAME FONTS))

          (* NIL for the class-name means just establish the 
	  font-correspondences but don't connect them up with 
	  a pretty class name.)


		      (RETURN]
          (MAPC FONTSETUPFNS (FUNCTION (LAMBDA (FNS)

          (* FONTSETUPFNS supplies device-dependent fontsetup 
	  functions. CAR of the pairs on FONTSETUPFNS are 
	  executed after all fonts have been processed.
	  This is used typically to set up inverse mappings 
	  between font numbers and device-dependent fonts The 
	  CADR is executed in FONTPROFILE1 on each element to 
	  produce individual descriptors.)


		    (AND (CADR FNS)
			 (APPLY* (CADR FNS)
				 BASICCLASSES]
    T])

(FONTPROFILE1
  [LAMBDA (NAME FONTLIST)                                   (* rmk: "21-NOV-81 13:56")

          (* Internalizes a FONTLIST of user-readable font specifications for various 
	  devices. The device-dependent setup function is obtained from the parallel list 
	  FONTSETUPFNS, which can be initialized to NIL when only symbolic file escape 
	  sequences are specified.)


    (DECLARE (GLOBALVARS FONTSETUPFNS FONTESCAPECHAR))
    (for FNS in (OR FONTSETUPFNS (QUOTE (NIL))) as FONT in FONTLIST collect (COND
									      ((CAR FNS)
                                                            (* NAME enables, e.g., global var 
							    declarations.)
										(APPLY* (CAR FNS)
											NAME FONT))
									      ((NULL FONT)
                                                            (* Now starts the generic setup, suitable 
							    only for symbolic files)
										NIL)
									      ((FIXP FONT)
										(PACK* FONTESCAPECHAR
										       (CHARACTER
											 FONT)))
									      (T (ERROR 
								     "illegal font specification"
											FONT])
)

(RPAQ? FONTESCAPECHAR (CHARACTER 6))

(RPAQ? FONTFNS )

(RPAQ? FONTWORDS )

(RPAQQ FONTDEFSVARS (FONTCHANGEFLG FILELINELENGTH COMMENTLINELENGTH FIRSTCOL PRETTYLCOM LISTFILESTR 
				   FONTPROFILE FONTESCAPECHAR))

(ADDTOVAR FONTSETUPFNS )

(ADDTOVAR FONTDEFS (STANDARD (FONTCHANGEFLG)
			     (FILELINELENGTH . 72)
			     (COMMENTLINELENGTH . 72)
			     (LAMBDAFONTLINELENGTH . 72)
			     (FIRSTCOL . 48)
			     (PRETTYLCOM . 14)
			     (LISTFILESTR . "
")
			     (FONTPROFILE (DEFAULTFONT)
					  (USERFONT)
					  (COMMENTFONT)
					  (LAMBDAFONT)
					  (SYSTEMFONT)
					  (CLISPFONT)
					  (CHANGEFONT)
					  (PRETTYCOMFONT)
					  (BIGFONT)
					  (LITTLEFONT)
					  (BOLDFONT)))
		   (SMALL (FONTCHANGEFLG)
			  (FILELINELENGTH . 96)
			  (COMMENTLINELENGTH . 96)
			  (LAMBDAFONTLINELENGTH . 96)
			  (FIRSTCOL . 60)
			  (PRETTYLCOM . 14)
			  (LISTFILESTR . "
")
			  (FONTPROFILE (DEFAULTFONT)
				       (USERFONT)
				       (COMMENTFONT)
				       (LAMBDAFONT)
				       (SYSTEMFONT)
				       (CLISPFONT)
				       (CHANGEFONT)
				       (PRETTYCOMFONT)
				       (BIGFONT)
				       (LITTLEFONT)
				       (BOLDFONT))))
(DECLARE: DONTEVAL@LOAD DOCOPY 
(FONTSET (QUOTE STANDARD))
)
[DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY
(BLOCK: NIL FONTSET FONTNAME FONTPROFILE FONTPROFILE1 (LOCALVARS . T)
	(GLOBALVARS FONTPROFILE FONTCHANGEFLG FONTESCAPECHAR FONTDEFS FONTDEFSVARS))
]



(* Some prettyprint macros)

(DEFINEQ

(LONGLAMBDA.PPMACRO
  [LAMBDA (FORM)                                             (* bvm: " 2-MAR-83 15:35")

          (* Prettyprintmacro for forms whose CAR is a long word and look like a lambda--first arg wants to be on first 
	  line, others after it)


    (COND
      ((AND (LISTP FORM)
	    (LISTP (CDR FORM))
	    (LISTP (CDDR FORM)))
	(PROG [(POS (IPLUS 4 (POSITION]
	      (PRIN1 "(")
	      (PRIN2 (CAR FORM))
	      (SPACES 1)
	      (PRINTDEF (CADR FORM)
			(POSITION))
	      (OR [EQ COMMENTFLG (CAAR (SETQ FORM (CDDR FORM]
		  (TAB POS 0))
	      (PRINTDEF FORM POS T T FNSLST)
	      (PRIN1 ")")
	      (RETURN NIL)))
      (T FORM])

(LONGPROGN.PPMACRO
  [LAMBDA (FORM)                                             (* bvm: " 2-MAR-83 15:37")
                                                             (* Prettyprintmacro for forms whose CAR is a long word 
							     and look like a progn--all args equal weight, one below 
							     another)
    (COND
      ((AND (LISTP FORM)
	    (LISTP (CDR FORM)))
	(PROG [(POS (IPLUS 4 (POSITION]
	      (PRIN1 "(")
	      (PRIN2 (CAR FORM))
	      (OR [EQ COMMENTFLG (CAAR (SETQ FORM (CDR FORM]
		  (TAB POS 0))
	      (PRINTDEF FORM POS T T FNSLST)
	      (PRIN1 ")")
	      (RETURN NIL)))
      (T FORM])
)
(DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS 

(ADDTOVAR NLAMA PF* PF)

(ADDTOVAR NLAML )

(ADDTOVAR LAMA )
)
(PUTPROPS COMMENT COPYRIGHT ("Xerox Corporation" 1983))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (3949 13293 (PF 3961 . 4920) (PF* 4924 . 5086) (PMORE 5090 . 5374) (PRINTFN 5378 . 5706)
 (PRINTFNDEF 5710 . 6695) (FINDFNDEF 6699 . 9098) (FINDBCPLDEF 9102 . 10358) (FINDSUBRDEF 10362 . 
12957) (SEARCHFILEMAP 12961 . 13290)) (14028 19292 (FONTSET 14040 . 14593) (FONTNAME 14597 . 15155) (
FONTPROFILE 15159 . 18164) (FONTPROFILE1 18168 . 19289)) (20829 22188 (LONGLAMBDA.PPMACRO 20841 . 
21528) (LONGPROGN.PPMACRO 21532 . 22185)))))
STOP