perm filename BB18[206,LSP] blob sn#128918 filedate 1974-10-24 generic text, type T, neo UTF8

(DEFPROP BBFCNS
 (BBFCNS BBXGP
	 BBPUB
	 BBTTY
	 BBLPT
	 NEWFONTS
	 XGP
	 FONTLIST
	 NUMFONTS
	 MINFONT
	 GETFONT
	 MAXFONT
	 LINL
	 BBTTYLPT
	 SIN
	 FIN
	 HIN
	 MAXF
	 BBPPROPS
	 BBPPROP
	 BBPROPS
	 TTYMSG
	 NEWLINE
	 PREX
	 BBEX
	 BBVALDEF
	 BBFUNDEF
	 MAK
	 BBFUN
	 BBARGS
	 XBLANK
	 XSYM
	 XCONST
	 BRACKET
	 BBEXL
	 INPUNA
	 XL
	 FNTLENGTH
	 FSIZEL
	 FSIZE
	 PSIZE
	 CHVAL
	 XVAR
	 SMALLNAM
	 SMALL
	 SUMLEN
	 BBLIST
	 BBLAMBDA
	 PARENS
	 BBLAMBDAF
	 BBVARS
	 BINOPB
	 BBCOND
	 BBQUOTE
	 BBLISTF
	 BBFUNCTION
	 BBPROG
	 UNOP
	 BBSELECTQ
	 BBSELECTA
	 XLL
	 XBOLD
	 BBPROGA
	 LABL
	 ALPHABETIC
	 ALPHANUM
	 BBQUOTEL
	 BBELSE
	 INOPB
	 INOPBB
	 SIMPLEPRINT
	 PREH
	 PRA
	 PRF
	 PRT
	 PRINX
	 PRINXX
	 SELECTCHAR
	 FONTSYMS
	 ULINE
	 PRINDEC
	 XSPACE
	 PFONTS
	 PRINTC
	 BBXGPPUB
	 XGPLINL
	 CHARW
	 SCANTABLE
	 SETBITS
	 CLEARBITS
	 SLASHIFY
	 SETSLASHES
	 SETSCANTABLE
	 SCANPUSH
	 SCANPOP)
VALUE)

(DEFPROP BBXGP
 (LAMBDA(U)
  (SETQ SELECTCHAR (MAKNAM (LIST (QUOTE //) (ASCII 177) (QUOTE ↓))))
  (SETQ	FONTSYMS
	(LIST (QUOTE ↓)
	      (QUOTE α)
	      (QUOTE β)
	      (QUOTE ∧)
	      (QUOTE ¬)
	      (QUOTE ε)
	      (ASCII 7)
	      (QUOTE λ)
	      (ASCII 11)
	      (ASCII 12)
	      (ASCII 13)
	      (ASCII 14)
	      (ASCII 15)
	      (ASCII 16)
	      (ASCII 17)))
  (SETQ PUB NIL)
  (BBXGPPUB U)
  NIL)
EXPR)

(DEFPROP BBPUB
 (LAMBDA(U)
  (PROG	(CH)
	(SETQ SELECTCHAR (QUOTE %))
	(SETQ FONTSYMS PFONTS)
	(SETQ PUB T)
	(SETSLASHES (QUOTE (∂ { % //)))
	(PRINTC (QUOTE /.BEGIN/ NOFILL))
	(PRINTC (QUOTE /.VARIABLE/ CHW))
	(PRINTC (QUOTE /.CHW/ ←/ CHARW))
	(PRINTC (QUOTE /.TURN/ OFF/ /"βα#\←∞↑↓∪/"))
	(PRINTC (QUOTE /.TURN/ ON/ /"∂{%/"))
	(PRINTC (QUOTE /.TURN/ ON/ /"///"/ FOR/ /"α/"))
	(PRINTC (QUOTE /.AT/ /"∂∂/(/"/ CH/ /"/)/"/ ⊂/ CHARW←CH}∂/(2/){CHARW←CHW/ ⊃))
	(BBXGPPUB U)
	(PRINTC (QUOTE /.END))
	(SETQ CH (OUTC NIL NIL))
	(SCANPUSH)
	(PRINTC (QUOTE PUB/ FONTS:))
	(MAPC (FUNCTION (LAMBDA (V) (PRINTC (CAR (NTH PFONTS (CADR V)))) (PRINC (QUOTE / )) (PRINC (CADDR V))))
	      FONTLIST)
	(OUTC CH NIL)))
EXPR)

(DEFPROP BBTTY
 (LAMBDA (U) (SETQ LINL 105) (BBTTYLPT U))
EXPR)

(DEFPROP BBLPT
 (LAMBDA (U) (SETQ LINL 160) (BBTTYLPT U))
EXPR)

(DEFPROP NEWFONTS
 (LAMBDA NIL
  (SETQ XGP T)
  (SETQ FONTLIST NIL)
  (SETQ NUMFONTS MINFONT)
  (GETFONT (QUOTE SYM))
  (GETFONT (QUOTE VAR))
  (GETFONT (QUOTE BOLD))
  (GETFONT (QUOTE CONST))
  NIL)
EXPR)

(DEFPROP XGP
 (XGP . T)
VALUE)

(DEFPROP FONTLIST
 (FONTLIST (CONST 4
		  BDR30
		  (176 . 15)
		  (175 . 21)
		  (174 . 7)
		  (173 . 15)
		  (172 . 16)
		  (171 . 20)
		  (170 . 17)
		  (167 . 27)
		  (166 . 20)
		  (165 . 17)
		  (164 . 14)
		  (163 . 15)
		  (162 . 15)
		  (161 . 16)
		  (160 . 16)
		  (157 . 20)
		  (156 . 17)
		  (155 . 25)
		  (154 . 10)
		  (153 . 20)
		  (152 . 12)
		  (151 . 10)
		  (150 . 17)
		  (147 . 16)
		  (146 . 13)
		  (145 . 17)
		  (144 . 17)
		  (143 . 16)
		  (142 . 17)
		  (141 . 15)
		  (140 . 7)
		  (137 . 22)
		  (136 . 16)
		  (135 . 11)
		  (134 . 24)
		  (133 . 11)
		  (132 . 23)
		  (131 . 23)
		  (130 . 24)
		  (127 . 33)
		  (126 . 25)
		  (125 . 25)
		  (124 . 24)
		  (123 . 17)
		  (122 . 22)
		  (121 . 30)
		  (120 . 20)
		  (117 . 30)
		  (116 . 24)
		  (115 . 31)
		  (114 . 21)
		  (113 . 23)
		  (112 . 15)
		  (111 . 11)
		  (110 . 23)
		  (107 . 24)
		  (106 . 21)
		  (105 . 22)
		  (104 . 26)
		  (103 . 24)
		  (102 . 21)
		  (101 . 26)
		  (100 . 26)
		  (77 . 15)
		  (76 . 24)
		  (75 . 16)
		  (74 . 22)
		  (73 . 10)
		  (72 . 10)
		  (71 . 16)
		  (70 . 16)
		  (67 . 16)
		  (66 . 16)
		  (65 . 16)
		  (64 . 16)
		  (63 . 16)
		  (62 . 16)
		  (61 . 16)
		  (60 . 16)
		  (57 . 24)
		  (56 . 6)
		  (55 . 16)
		  (54 . 7)
		  (53 . 16)
		  (52 . 24)
		  (51 . 12)
		  (50 . 12)
		  (47 . 7)
		  (46 . 26)
		  (45 . 21)
		  (44 . 17)
		  (43 . 20)
		  (42 . 15)
		  (41 . 10)
		  (40 . 13)
		  (37 . 26)
		  (36 . 16)
		  (35 . 24)
		  (34 . 22)
		  (33 . 16)
		  (32 . 24)
		  (31 . 22)
		  (30 . 17)
		  (27 . 25)
		  (26 . 23)
		  (25 . 22)
		  (24 . 26)
		  (23 . 20)
		  (22 . 20)
		  (21 . 26)
		  (20 . 25)
		  (17 . 21)
		  (16 . 34)
		  (15 . 1)
		  (14 . 1)
		  (13 . 1)
		  (12 . 1)
		  (11 . 1)
		  (10 . 22)
		  (7 . 25)
		  (6 . 16)
		  (5 . 16)
		  (4 . 26)
		  (3 . 27)
		  (2 . 32)
		  (1 . 16))
	   (BOLD 3
		 BASB30
		 (172 . 14)
		 (171 . 21)
		 (170 . 23)
		 (167 . 26)
		 (166 . 17)
		 (165 . 21)
		 (164 . 13)
		 (163 . 14)
		 (162 . 14)
		 (161 . 21)
		 (160 . 22)
		 (157 . 17)
		 (156 . 22)
		 (155 . 33)
		 (154 . 11)
		 (153 . 21)
		 (152 . 14)
		 (151 . 12)
		 (150 . 21)
		 (147 . 21)
		 (146 . 16)
		 (145 . 15)
		 (144 . 20)
		 (143 . 16)
		 (142 . 21)
		 (141 . 17)
		 (140 . 6)
		 (132 . 23)
		 (131 . 26)
		 (130 . 27)
		 (127 . 36)
		 (126 . 27)
		 (125 . 30)
		 (124 . 26)
		 (123 . 21)
		 (122 . 27)
		 (121 . 30)
		 (120 . 24)
		 (117 . 27)
		 (116 . 27)
		 (115 . 33)
		 (114 . 23)
		 (113 . 30)
		 (112 . 16)
		 (111 . 15)
		 (110 . 30)
		 (107 . 26)
		 (106 . 22)
		 (105 . 23)
		 (104 . 27)
		 (103 . 25)
		 (102 . 23)
		 (101 . 26)
		 (77 . 12)
		 (73 . 6)
		 (72 . 7)
		 (71 . 16)
		 (70 . 17)
		 (67 . 16)
		 (66 . 16)
		 (65 . 17)
		 (64 . 21)
		 (63 . 16)
		 (62 . 16)
		 (61 . 14)
		 (60 . 16)
		 (57 . 12)
		 (56 . 7)
		 (55 . 11)
		 (54 . 6)
		 (52 . 14)
		 (51 . 10)
		 (50 . 11)
		 (47 . 6)
		 (46 . 27)
		 (44 . 16)
		 (43 . 23)
		 (41 . 6)
		 (40 . 12)
		 (37 . 22)
		 (36 . 21)
		 (35 . 25)
		 (34 . 31)
		 (33 . 31)
		 (30 . 22)
		 (16 . 31)
		 (5 . 24))
	   (VAR	2
		BASI30
		(176 . 14)
		(175 . 21)
		(174 . 7)
		(173 . 14)
		(172 . 15)
		(171 . 15)
		(170 . 17)
		(167 . 24)
		(166 . 16)
		(165 . 21)
		(164 . 12)
		(163 . 14)
		(162 . 14)
		(161 . 15)
		(160 . 22)
		(157 . 14)
		(156 . 21)
		(155 . 26)
		(154 . 11)
		(153 . 20)
		(152 . 10)
		(151 . 11)
		(150 . 17)
		(147 . 20)
		(146 . 14)
		(145 . 14)
		(144 . 20)
		(143 . 13)
		(142 . 14)
		(141 . 17)
		(140 . 7)
		(137 . 23)
		(136 . 17)
		(135 . 20)
		(134 . 17)
		(133 . 20)
		(132 . 23)
		(131 . 23)
		(130 . 27)
		(127 . 36)
		(126 . 22)
		(125 . 26)
		(124 . 25)
		(123 . 22)
		(122 . 27)
		(121 . 23)
		(120 . 26)
		(117 . 24)
		(116 . 33)
		(115 . 36)
		(114 . 24)
		(113 . 30)
		(112 . 25)
		(111 . 14)
		(110 . 33)
		(107 . 25)
		(106 . 26)
		(105 . 25)
		(104 . 27)
		(103 . 23)
		(102 . 24)
		(101 . 24)
		(100 . 24)
		(77 . 13)
		(76 . 17)
		(75 . 22)
		(74 . 17)
		(73 . 11)
		(72 . 7)
		(71 . 20)
		(70 . 21)
		(67 . 16)
		(66 . 21)
		(65 . 21)
		(64 . 17)
		(63 . 22)
		(62 . 21)
		(61 . 14)
		(60 . 21)
		(57 . 12)
		(56 . 6)
		(55 . 11)
		(54 . 6)
		(53 . 15)
		(52 . 16)
		(51 . 13)
		(50 . 13)
		(47 . 7)
		(46 . 32)
		(45 . 20)
		(44 . 22)
		(43 . 21)
		(42 . 14)
		(41 . 13)
		(40 . 12)
		(37 . 23)
		(36 . 21)
		(35 . 23)
		(34 . 17)
		(33 . 30)
		(32 . 5)
		(31 . 23)
		(30 . 21)
		(27 . 23)
		(26 . 21)
		(25 . 20)
		(24 . 21)
		(23 . 17)
		(22 . 17)
		(21 . 21)
		(20 . 21)
		(17 . 20)
		(16 . 30)
		(14 . 21)
		(10 . 20)
		(7 . 21)
		(6 . 14)
		(5 . 27)
		(4 . 22)
		(3 . 25)
		(2 . 27)
		(1 . 17))
	   (SYM	1
		BDR30
		(176 . 15)
		(175 . 21)
		(174 . 7)
		(173 . 15)
		(172 . 16)
		(171 . 20)
		(170 . 17)
		(167 . 27)
		(166 . 20)
		(165 . 17)
		(164 . 14)
		(163 . 15)
		(162 . 15)
		(161 . 16)
		(160 . 16)
		(157 . 20)
		(156 . 17)
		(155 . 25)
		(154 . 10)
		(153 . 20)
		(152 . 12)
		(151 . 10)
		(150 . 17)
		(147 . 16)
		(146 . 13)
		(145 . 17)
		(144 . 17)
		(143 . 16)
		(142 . 17)
		(141 . 15)
		(140 . 7)
		(137 . 22)
		(136 . 16)
		(135 . 11)
		(134 . 24)
		(133 . 11)
		(132 . 23)
		(131 . 23)
		(130 . 24)
		(127 . 33)
		(126 . 25)
		(125 . 25)
		(124 . 24)
		(123 . 17)
		(122 . 22)
		(121 . 30)
		(120 . 20)
		(117 . 30)
		(116 . 24)
		(115 . 31)
		(114 . 21)
		(113 . 23)
		(112 . 15)
		(111 . 11)
		(110 . 23)
		(107 . 24)
		(106 . 21)
		(105 . 22)
		(104 . 26)
		(103 . 24)
		(102 . 21)
		(101 . 26)
		(100 . 26)
		(77 . 15)
		(76 . 24)
		(75 . 16)
		(74 . 22)
		(73 . 10)
		(72 . 10)
		(71 . 16)
		(70 . 16)
		(67 . 16)
		(66 . 16)
		(65 . 16)
		(64 . 16)
		(63 . 16)
		(62 . 16)
		(61 . 16)
		(60 . 16)
		(57 . 24)
		(56 . 6)
		(55 . 16)
		(54 . 7)
		(53 . 16)
		(52 . 24)
		(51 . 12)
		(50 . 12)
		(47 . 7)
		(46 . 26)
		(45 . 21)
		(44 . 17)
		(43 . 20)
		(42 . 15)
		(41 . 10)
		(40 . 13)
		(37 . 26)
		(36 . 16)
		(35 . 24)
		(34 . 22)
		(33 . 16)
		(32 . 24)
		(31 . 22)
		(30 . 17)
		(27 . 25)
		(26 . 23)
		(25 . 22)
		(24 . 26)
		(23 . 20)
		(22 . 20)
		(21 . 26)
		(20 . 25)
		(17 . 21)
		(16 . 34)
		(15 . 1)
		(14 . 1)
		(13 . 1)
		(12 . 1)
		(11 . 1)
		(10 . 22)
		(7 . 25)
		(6 . 16)
		(5 . 16)
		(4 . 26)
		(3 . 27)
		(2 . 32)
		(1 . 16)))
VALUE)

(DEFPROP NUMFONTS
 (NUMFONTS . 4)
VALUE)

(DEFPROP MINFONT
 (MINFONT . 0)
VALUE)

(DEFPROP GETFONT
 (LAMBDA(FONT)
  (COND	((NOT XGP) (QUOTE (NIL NIL)))
	(T
	 ((LAMBDA(V)
	   (COND ((NULL V)
		  (PROG	(CH)
			(SETQ CH (OUTC NIL NIL))
			(PRINC (QUOTE FONT/ ))
			(PRINC (ADD1 NUMFONTS))
			(PRINC (QUOTE / ))
			(PRINC FONT)
			(OUTC CH NIL)
			(INC (EVAL (CONS (QUOTE INPUT) (CONS (QUOTE DSK:) (LINEREAD)))) NIL)
			(SETQ V
			      (CONS (COND ((EQ NUMFONTS MAXFONT) (ERROR (QUOTE (TOO MANY FONTS))))
					  (T (SETQ NUMFONTS (ADD1 NUMFONTS))))
				    (READ)))
			(INC NIL T)
			(SETQ FONTLIST (CONS (CONS FONT V) FONTLIST))
			(RETURN V)))
		 (T (CDR V))))
	  (ASSOC FONT FONTLIST)))))
EXPR)

(DEFPROP MAXFONT
 (MAXFONT . 17)
VALUE)

(DEFPROP LINL
 (LINL . 2424)
VALUE)

(DEFPROP BBTTYLPT
 (LAMBDA(U)
  (LINELENGTH LINL)
  (SETQ SINDENT SIN)
  (SETQ FINDENT FIN)
  (SETQ HINDENT HIN)
  (SETQ FMAX MAXF)
  (SETQ XGP NIL)
  (SETQ PUB NIL)
  (MAPC (FUNCTION BBPPROPS) U)
  (LINELENGTH 105)
  NIL)
EXPR)

(DEFPROP SIN
 (SIN . 1)
VALUE)

(DEFPROP FIN
 (FIN . 2)
VALUE)

(DEFPROP HIN
 (HIN . 2)
VALUE)

(DEFPROP MAXF
 (MAXF . 10)
VALUE)

(DEFPROP BBPPROPS
 (LAMBDA(V)
  (COND ((ATOM V) (MAPC (FUNCTION (LAMBDA (X) (BBPPROP V X (GET V X)))) BBPROPS)) (T (BBPPROP NIL NIL V))))
EXPR)

(DEFPROP BBPPROP
 (LAMBDA(ATM PROP V)
  (COND	((NULL V) NIL)
	(T (TTYMSG ATM)
	   (TERPRI)
	   (TERPRI)
	   (NEWLINE (COND (XGP 60) (T 3)))
	   (PREX (COND ((NULL PROP) (CDR (BBEX V)))
		       ((EQ PROP (QUOTE VALUE)) (BBVALDEF ATM (CDR V)))
		       (T (BBFUNDEF ATM (CADR V) (CDDR V) PROP)))
		 0
		 0)
	   (TERPRI))))
EXPR)

(DEFPROP BBPROPS
 (BBPROPS EXPR FEXPR)
VALUE)

(DEFPROP TTYMSG
 (LAMBDA (MSG) (PROG (CH) (SETQ CH (OUTC NIL NIL)) (PRINT MSG) (OUTC CH NIL)))
EXPR)

(DEFPROP NEWLINE
 (LAMBDA(N)
  (COND	(PUB (TERPRI) (SETQ IND N) (SETQ POS IND) (PRINC (QUOTE ∂∂)) (PRINDEC (LIST N)))
	(XGP
	 (PROG NIL
	       (TERPRI)
	       (SETQ IND N)
	       (SETQ POS 0)
	  A    (COND ((EQ POS IND) (RETURN NIL))
		     ((LESSP (DIFFERENCE IND POS) 100)
		      (XSPACE (DIFFERENCE IND POS))
		      (SETQ POS IND)
		      (RETURN NIL))
		     (T (XSPACE 77)))
	       (SETQ POS (PLUS POS 77))
	       (GO A)))
	(T
	 (PROG NIL
	       (TERPRI)
	       (SETQ IND N)
	       (SETQ POS 0)
	  A    (COND ((EQ POS IND) (RETURN NIL)))
	       (PRINC (QUOTE / ))
	       (SETQ POS (ADD1 POS))
	       (GO A)))))
EXPR)

(DEFPROP PREX
 (LAMBDA(E IM R)
  (COND	((NOT (GREATERP (PLUS (CAR E) POS R) LINL)) (SIMPLEPRINT E))
	(T
	 (SELECTQ (CADR E)
		  (E (PREH E IM R POS))
		  (H (PREH E IM R (PLUS POS HINDENT)))
		  (A (PRA E IM R))
		  ((B U) (PRF E IM R 255))
		  (F (PRF E IM R FMAX))
		  (T (PRT E IM R))
		  (PRINX E)))))
EXPR)

(DEFPROP BBEX
 (LAMBDA(E)
  (COND	((ATOM E) (CONS 144 (MAK (QUOTE X) (LIST (XVAR E)))))
	((ATOM (CAR E))
	 ((LAMBDA(U)
	   (COND ((NULL U) (BBFUN (CAR E) (BBARGS (CDR E))))
		 ((NULL (CDDR U)) ((CADR U) (CDR E)))
		 (T ((CADR U) (CDR E) (CDDR U)))))
	  (ASSOC (CAR E) BBLIST)))
	((EQ (CAAR E) (QUOTE LAMBDA)) (BBLAMBDA (CDAR E) (BBARGS (CDR E))))
	(T (BBFUN (QUOTE APPLY$) (BBARGS E)))))
EXPR)

(DEFPROP BBVALDEF
 (LAMBDA (NAME VAL) (CDR (BBEX (LIST (QUOTE SETQ) NAME (LIST (QUOTE QUOTE) VAL)))))
EXPR)

(DEFPROP BBFUNDEF
 (LAMBDA(NAME ARGS BODY PROP)
  (MAK (QUOTE F)
       (LIST (MAK (QUOTE A)
		  (LIST	(CDR (BBFUN NAME (BBARGS ARGS)))
			(MAK (QUOTE X)
			     (COND ((EQ PROP (QUOTE EXPR)) (LIST (XBLANK) (XSYM (QUOTE ←/ ))))
				   (T
				    (LIST (XBLANK)
					  (XSYM (QUOTE /())
					  (XCONST (QUOTE FEXPR))
					  (XSYM (QUOTE /)/ ←/ ))))))))
	     (BRACKET (BBEXL BODY) 5))))
EXPR)

(DEFPROP MAK
 (LAMBDA (A U) (CONS (SUMLEN U) (CONS A U)))
EXPR)

(DEFPROP BBFUN
 (LAMBDA(FN ARGS)
  (CONS	132
	(COND ((NULL ARGS) (MAK (QUOTE X) (LIST (XVAR FN) (XSYM (QUOTE /[/])))))
	      ((NULL (CDR ARGS)) (MAK (QUOTE F) (LIST (MAK (QUOTE X) (LIST (XVAR FN) (XBLANK))) (CDAR ARGS))))
	      (T
	       (MAK (QUOTE F)
		    (LIST (MAK (QUOTE X) (LIST (XVAR FN) (XSYM (QUOTE /[))))
			  (MAK (QUOTE A)
			       (LIST (MAK (QUOTE E) (INPUNA (MAK (QUOTE X) (LIST (XSYM (QUOTE /,/ )))) ARGS))
				     (MAK (QUOTE X) (LIST (XSYM (QUOTE /]))))))))))))
EXPR)

(DEFPROP BBARGS
 (LAMBDA (U) (MAPCAR (FUNCTION BBEX) U))
EXPR)

(DEFPROP XBLANK
 (LAMBDA NIL (XL (QUOTE SYM) (QUOTE / )))
EXPR)

(DEFPROP XSYM
 (LAMBDA (V) (XL (QUOTE SYM) V))
EXPR)

(DEFPROP XCONST
 (LAMBDA (V) (XL (QUOTE CONST) V))
EXPR)

(DEFPROP BRACKET
 (LAMBDA(U PREC)
  (COND	((NOT (GREATERP (CAR U) PREC))
	 (MAK (QUOTE B)
	      (LIST (MAK (QUOTE X) (LIST (XSYM (QUOTE /[))))
		    (MAK (QUOTE A) (LIST (CDR U) (MAK (QUOTE X) (LIST (XSYM (QUOTE /])))))))))
	(T (CDR U))))
EXPR)

(DEFPROP BBEXL
 (LAMBDA(U)
  (COND	((NULL U) (BBEX (QUOTE ****)))
	((NULL (CDR U)) (BBEX (CAR U)))
	(T (CONS 5 (MAK (QUOTE E) (INPUNA (MAK (QUOTE X) (LIST (XSYM (QUOTE /,/ )))) (BBARGS U)))))))
EXPR)

(DEFPROP INPUNA
 (LAMBDA(P U)
  (COND	((NULL U) NIL)
	((NULL (CDR U)) (NCONS (CDAR U)))
	(T (CONS (MAK (QUOTE A) (LIST (CDAR U) P)) (INPUNA P (CDR U))))))
EXPR)

(DEFPROP XL
 (LAMBDA (FONT V) (FNTLENGTH (GETFONT FONT) (LIST V)))
EXPR)

(DEFPROP FNTLENGTH
 (LAMBDA (FNT U) (CONS (FSIZEL U (CDDR FNT)) (CONS (CAR FNT) U)))
EXPR)

(DEFPROP FSIZEL
 (LAMBDA (U WIDTHS) (COND ((NULL U) 0) (T (PLUS (FSIZE (CAR U) WIDTHS) (FSIZEL (CDR U) WIDTHS)))))
EXPR)

(DEFPROP FSIZE
 (LAMBDA (U WIDTHS) (COND (XGP (PSIZE (EXPLODEC U) WIDTHS)) (T (FLATSIZEC U))))
EXPR)

(DEFPROP PSIZE
 (LAMBDA(U WIDTHS)
  (COND	((NULL U) 0)
	(T
	 (PLUS ((LAMBDA (V) (COND ((NULL V) 0) (T (CDR V)))) (ASSOC (CHVAL (CAR U)) WIDTHS))
	       (PSIZE (CDR U) WIDTHS)))))
EXPR)

(DEFPROP CHVAL
 (LAMBDA (Z) (COND ((NUMBERP Z) (PLUS Z 60)) (T (CHRVAL Z))))
EXPR)

(DEFPROP XVAR
 (LAMBDA (E) (COND ((OR (NULL E) (EQ E T) (NUMBERP E)) (XCONST E)) (T (XL (QUOTE VAR) (SMALLNAM E)))))
EXPR)

(DEFPROP SMALLNAM
 (LAMBDA (E) (MAKNAM (MAPCAR (FUNCTION SMALL) (EXPLODE E))))
EXPR)

(DEFPROP SMALL
 (LAMBDA(C)
  (COND	((NUMBERP C) C)
	(T ((LAMBDA (X) (COND ((AND (GREATERP X 100) (LESSP X 133)) (ASCII (PLUS X 40))) (T C))) (CHRVAL C)))))
EXPR)

(DEFPROP SUMLEN
 (LAMBDA (U) (COND ((NULL U) 0) (T (PLUS (CAAR U) (SUMLEN (CDR U))))))
EXPR)

(DEFPROP BBLIST
 (BBLIST (CONS BINOPB 24 (SYM / ) (SYM /. / ))
	 (APPEND BINOPB 12 (SYM / ) (SYM * / ))
	 (COND BBCOND)
	 (QUOTE BBQUOTE)
	 (OR BINOPB 24 (SYM / ) (SYM ∨ / ))
	 (AND BINOPB 24 (SYM / ) (SYM ∧/ ))
	 (LIST BBLISTF)
	 (LAMBDA BBLAMBDAF)
	 (FUNCTION BBFUNCTION)
	 (PLUS BINOPB 40 (SYM / ) (SYM + / ))
	 (GREATERP BINOPB 30 (SYM / ) (SYM > / ))
	 (LESSP BINOPB 30 (SYM / ) (SYM < / ))
	 (PROG BBPROG)
	 (NULL UNOP 132 (BOLD n/ ))
	 (MINUS UNOP 132 (SYM -))
	 (CAR UNOP 132 (BOLD a/ ))
	 (CDR UNOP 132 (BOLD d/ ))
	 (CADR UNOP 132 (BOLD ad/ ))
	 (CDAR UNOP 132 (BOLD da/ ))
	 (CDDR UNOP 132 (BOLD dd/ ))
	 (CAAR UNOP 132 (BOLD aa/ ))
	 (CAAAR UNOP 132 (BOLD aaa/ ))
	 (CAADR UNOP 132 (BOLD aad/ ))
	 (CADAR UNOP 132 (BOLD ada/ ))
	 (CADDR UNOP 132 (BOLD add/ ))
	 (CDAAR UNOP 132 (BOLD daa/ ))
	 (CDADR UNOP 132 (BOLD dad/ ))
	 (CDDAR UNOP 132 (BOLD dda/ ))
	 (CDDDR UNOP 132 (BOLD ddd/ ))
	 (CAAAAR UNOP 132 (BOLD aaaa/ ))
	 (CAAADR UNOP 132 (BOLD aaad/ ))
	 (CAADAR UNOP 132 (BOLD aada/ ))
	 (CAADDR UNOP 132 (BOLD aadd/ ))
	 (CADAAR UNOP 132 (BOLD adaa/ ))
	 (CADADR UNOP 132 (BOLD adad/ ))
	 (CADDAR UNOP 132 (BOLD adda/ ))
	 (CADDDR UNOP 132 (BOLD addd/ ))
	 (CDAAAR UNOP 132 (BOLD daaa/ ))
	 (CDAADR UNOP 132 (BOLD daad/ ))
	 (CDADAR UNOP 132 (BOLD dada/ ))
	 (CDADDR UNOP 132 (BOLD dadd/ ))
	 (CDDAAR UNOP 132 (BOLD ddaa/ ))
	 (CDDADR UNOP 132 (BOLD ddad/ ))
	 (CDDDAR UNOP 132 (BOLD ddda/ ))
	 (CDDDDR UNOP 132 (BOLD dddd/ ))
	 (ATOM UNOP 132 (BOLD at/ ))
	 (EQ BINOPB 30 (SYM / ) (BOLD eq/ ))
	 (MEMBER BINOPB 30 (SYM / ) (SYM ε/ ))
	 (NOT UNOP 132 (SYM ¬))
	 (DIFFERENCE BINOPB 40 (SYM / ) (SYM -/ ))
	 (SETQ BINOPB 20 (SYM / ) (SYM ←/ ))
	 (SELECTQ BBSELECTQ))
VALUE)

(DEFPROP BBLAMBDA
 (LAMBDA(U ARGS)
  (CONS	144
	(MAK (QUOTE T)
	     (LIST (PARENS (MAK (QUOTE X) (LIST (XSYM (QUOTE {)))) (MAK (QUOTE X) (LIST (XSYM (QUOTE })))) ARGS)
		   (CDR (BBLAMBDAF U))))))
EXPR)

(DEFPROP PARENS
 (LAMBDA(LEFT RIGHT ARGS)
  (MAK (QUOTE B)
       (LIST LEFT
	     (MAK (QUOTE A)
		  (LIST (MAK (QUOTE E) (INPUNA (MAK (QUOTE X) (LIST (XSYM (QUOTE /,/ )))) ARGS)) RIGHT)))))
EXPR)

(DEFPROP BBLAMBDAF
 (LAMBDA(U)
  (CONS	144
	(MAK (QUOTE F)
	     (LIST (MAK	(QUOTE B)
			(LIST (MAK (QUOTE X) (LIST (XSYM (QUOTE /[λ))))
			      (MAK (QUOTE A)
				   (LIST (BBVARS (CAR U)) (MAK (QUOTE X) (LIST (XSYM (QUOTE /./ ))))))))
		   (MAK	(QUOTE A)
			(LIST (BRACKET (BBEXL (CDR U)) 5) (MAK (QUOTE X) (LIST (XSYM (QUOTE /]))))))))))
EXPR)

(DEFPROP BBVARS
 (LAMBDA(U)
  (MAK (QUOTE E)
       (INPUNA (MAK (QUOTE X) (LIST (XSYM (QUOTE /,/ ))))
	       (MAPCAR (FUNCTION (LAMBDA (V) (CONS 144 (MAK (QUOTE X) (LIST (XVAR V)))))) U))))
EXPR)

(DEFPROP BINOPB
 (LAMBDA(ARGS V)
  (CONS (CAR V) (MAK (QUOTE E) (INOPB (MAK (QUOTE X) (MAPCAR (FUNCTION XLL) (CDR V))) (BBARGS ARGS) (CAR V)))))
EXPR)

(DEFPROP BBCOND
 (LAMBDA(U)
  (CONS	12
	(COND ((NULL U) (MAK (QUOTE X) (LIST (XVAR NIL))))
	      (T
	       (MAK (QUOTE E)
		    (CONS (MAK (QUOTE T)
			       (LIST (MAK (QUOTE B)
					  (LIST	(MAK (QUOTE X) (LIST (XBOLD (QUOTE if)) (XBLANK)))
						(BRACKET (BBEX (CAAR U)) 12)))
				     (MAK (QUOTE B)
					  (LIST	(MAK (QUOTE X) (LIST (XBLANK) (XBOLD (QUOTE then)) (XBLANK)))
						(BRACKET (BBEXL (CDAR U)) 12)))))
			  (BBELSE (CDR U))))))))
EXPR)

(DEFPROP BBQUOTE
 (LAMBDA(E)
  (CONS	144
	(COND ((ATOM (CAR E))
	       (MAK (QUOTE X)
		    (COND ((OR (NUMBERP (CAR E))
			       (AND (ALPHABETIC (CHRVAL (CAR E))) (ALPHANUM (CDR (EXPLODEC (CAR E))))))
			   (LIST (XCONST (CAR E))))
			  ((STRINGP (CAR E))
			   (COND (PUB (LIST (XCONST (CAR E))))
				 (T (LIST (XSYM (QUOTE /")) (XCONST (CAR E)) (XSYM (QUOTE /"))))))
			  (T (LIST (XBLANK) (XSYM (QUOTE `)) (XCONST (CAR E)) (XSYM (QUOTE '/ )))))))
	      (T
	       (MAK (QUOTE B)
		    (LIST (MAK (QUOTE X) (LIST (XSYM (QUOTE /())))
			  (MAK (QUOTE A)
			       (LIST (MAK (QUOTE E) (BBQUOTEL (CAR E)))
				     (MAK (QUOTE X) (LIST (XSYM (QUOTE /)))))))))))))
EXPR)

(DEFPROP BBLISTF
 (LAMBDA(U)
  (CONS	144
	(PARENS (MAK (QUOTE X) (LIST (XSYM (QUOTE <)))) (MAK (QUOTE X) (LIST (XSYM (QUOTE >)))) (BBARGS U))))
EXPR)

(DEFPROP BBFUNCTION
 (LAMBDA (E) (BBEX (CAR E)))
EXPR)

(DEFPROP BBPROG
 (LAMBDA(U)
  (CONS	12
	(MAK (QUOTE B)
	     (LIST (MAK (QUOTE X) (LIST (XBOLD (QUOTE prog)) (XBLANK)))
		   (CONS 10000
			 (CONS (QUOTE E) (CONS (BRACKET (CONS 0 (BBVARS (CAR U))) 0) (BBPROGA (CDR U)))))))))
EXPR)

(DEFPROP UNOP
 (LAMBDA(ARGS V)
  (CONS	(CAR V)
	(MAK (QUOTE F) (LIST (MAK (QUOTE X) (MAPCAR (FUNCTION XLL) (CDR V))) (BRACKET (BBEX (CAR ARGS)) 131)))))
EXPR)

(DEFPROP BBSELECTQ
 (LAMBDA(U)
  (COND	((LESSP (LENGTH U) 3) (BBFUN (QUOTE SELECTQ) (BBARGS U)))
	(T (BBFUN (QUOTE SELECTQ) (CONS (BBEX (CAR U)) (BBSELECTA (CDR U)))))))
EXPR)

(DEFPROP BBSELECTA
 (LAMBDA(U)
  (COND	((NULL (CDR U)) (LIST (BBEX (CAR U))))
	(T
	 (CONS (CONS 0
		     (MAK (QUOTE B)
			  (LIST	(MAK (QUOTE A) (LIST (CDR (BBQUOTE (CAR U))) (MAK (QUOTE X) (LIST (XBLANK)))))
				(BRACKET (BBEXL (CDAR U)) 5))))
	       (BBSELECTA (CDR U))))))
EXPR)

(DEFPROP XLL
 (LAMBDA (U) (FNTLENGTH (GETFONT (CAR U)) (CDR U)))
EXPR)

(DEFPROP XBOLD
 (LAMBDA (V) (XL (QUOTE BOLD) V))
EXPR)

(DEFPROP BBPROGA
 (LAMBDA(U)
  (COND	((NULL U) NIL)
	((ATOM (CAR U))
	 (COND ((NULL (CDR U)) (LIST (MAK (QUOTE U) (LIST (LABL (CAR U))))))
	       (T (CONS (MAK (QUOTE U) (LIST (LABL (CAR U)) (CDR (BBEX (CADR U))))) (BBPROGA (CDDR U))))))
	(T (CONS (CDR (BBEX (CAR U))) (BBPROGA (CDR U))))))
EXPR)

(DEFPROP LABL
 (LAMBDA (U) (MAK (QUOTE X) (LIST (XVAR U) (XBLANK))))
EXPR)

(DEFPROP ALPHABETIC
 (LAMBDA (V) (AND (GREATERP V 100) (LESSP V 133)))
EXPR)

(DEFPROP ALPHANUM
 (LAMBDA (U) (OR (NULL U) (AND (OR (NUMBERP (CAR U)) (ALPHABETIC (CHRVAL (CAR U)))) (ALPHANUM (CDR U)))))
EXPR)

(DEFPROP BBQUOTEL
 (LAMBDA(E)
  (COND	((NULL (CDR E)) (LIST (CDR (BBQUOTE E))))
	((ATOM (CDR E))
	 (LIST (CDR (BBQUOTE E))
	       (MAK (QUOTE B)
		    (LIST (MAK (QUOTE X) (LIST (XBLANK) (XSYM (QUOTE /./ )))) (CDR (BBQUOTE (LIST (CDR E))))))))
	(T (CONS (MAK (QUOTE A) (LIST (CDR (BBQUOTE E)) (MAK (QUOTE X) (LIST (XBLANK))))) (BBQUOTEL (CDR E))))))
EXPR)

(DEFPROP BBELSE
 (LAMBDA(U)
  (COND	((NULL U) NIL)
	((EQ (CAAR U) (QUOTE T))
	 (LIST
	  (MAK (QUOTE B)
	       (LIST (MAK (QUOTE X) (LIST (XBLANK) (XBOLD (QUOTE else)) (XBLANK)))
		     (BRACKET (BBEXL (CDAR U)) 5)))))
	(T
	 (CONS (MAK (QUOTE T)
		    (LIST (MAK (QUOTE B)
			       (LIST (MAK (QUOTE X) (LIST (XBLANK) (XBOLD (QUOTE else/ if)) (XBLANK)))
				     (BRACKET (BBEX (CAAR U)) 12)))
			  (MAK (QUOTE B)
			       (LIST (MAK (QUOTE X) (LIST (XBLANK) (XBOLD (QUOTE then)) (XBLANK)))
				     (BRACKET (BBEXL (CDAR U)) 12)))))
	       (BBELSE (CDR U))))))
EXPR)

(DEFPROP INOPB
 (LAMBDA (P U PREC) (COND ((NULL U) NIL) (T (CONS (BRACKET (CAR U) PREC) (INOPBB P (CDR U) PREC)))))
EXPR)

(DEFPROP INOPBB
 (LAMBDA(P U PREC)
  (COND ((NULL U) NIL) (T (CONS (MAK (QUOTE B) (LIST P (BRACKET (CAR U) PREC))) (INOPBB P (CDR U) PREC)))))
EXPR)

(DEFPROP SIMPLEPRINT
 (LAMBDA (E) (COND ((EQ (CADR E) (QUOTE X)) (PRINX E)) (T (MAPC (FUNCTION SIMPLEPRINT) (CDDR E)))))
EXPR)

(DEFPROP PREH
 (LAMBDA(E IM R I2)
  (PROG	(IB IMM)
	(SETQ IB (MAX I2 IM))
	(SETQ IMM (PLUS IB SINDENT))
	(SETQ E (CDDR E))
	(COND ((NULL E) (RETURN NIL)))
   A	(PREX (CAR E) IMM (COND ((NULL (CDR E)) R) (T 0)))
	(SETQ E (CDR E))
	(COND ((NULL E) (RETURN NIL)) (T (ULINE IB (CAR E)) (GO A)))))
EXPR)

(DEFPROP PRA
 (LAMBDA (E IM R) (PREX (CADDR E) IM (PLUS R (CAAR (CDDDR E)))) (PREX (CADDDR E) IM R))
EXPR)

(DEFPROP PRF
 (LAMBDA(E IM R M)
  (COND	((OR (GREATERP (PLUS (CAADDR E) POS (MINUS IND)) M) (GREATERP (PLUS (CAADDR E) POS) LINL))
	 (PROG (I)
	       (SETQ I (MAX IM (PLUS IND FINDENT)))
	       (PREX (CADDR E) (PLUS I SINDENT) 0)
	       (NEWLINE I)
	       (PREX (CADDDR E) I R)))
	(T (PREX (CADDR E) 0 0) (PREX (CADDDR E) IM R))))
EXPR)

(DEFPROP PRT
 (LAMBDA(E IM R)
  ((LAMBDA(I)
    (COND ((NOT (GREATERP (PLUS (CAADDR E) (CAADDR (CADDDR E)) POS) LINL))
	   (PREX (CADDR E) 0 0)
	   (PREX (CADDR (CADDDR E)) 0 0)
	   (NEWLINE I)
	   (PREX (CADDDR (CADDDR E)) I R))
	  (T (PREX (CADDR E) (PLUS I SINDENT) 0) (NEWLINE I) (PREX (CADDDR E) (PLUS I SINDENT) R))))
   (MAX IM (PLUS IND HINDENT))))
EXPR)

(DEFPROP PRINX
 (LAMBDA (E) (MAPC (FUNCTION PRINXX) (CDDR E)))
EXPR)

(DEFPROP PRINXX
 (LAMBDA(E)
  (COND	((AND (EQ POS IND) (EQ (CADDR E) (QUOTE / ))) NIL)
	(T
	 (PROG2	(COND (PUB (PRINC SELECTCHAR)
			   (PRINC (CAR (NTH FONTSYMS (CADR E))))
			   (MAPC (FUNCTION PRIN1) (CDDR E)))
		      (XGP (PRINC SELECTCHAR)
			   (PRINC (CAR (NTH FONTSYMS (CADR E))))
			   (MAPC (FUNCTION PRINC) (CDDR E)))
		      (T (MAPC (FUNCTION PRINC) (CDDR E))))
		(SETQ POS (PLUS POS (CAR E)))))))
EXPR)

(DEFPROP SELECTCHAR
 (SELECTCHAR . %)
VALUE)

(DEFPROP FONTSYMS
 (FONTSYMS /2 /3 /4 /5 /6 /7 /8 /9 A B C D E F G)
VALUE)

(DEFPROP ULINE
 (LAMBDA (I E) (COND ((EQ (CADR E) (QUOTE U)) (NEWLINE (MAX (DIFFERENCE I (CAADDR E)) 0))) (T (NEWLINE I))))
EXPR)

(DEFPROP PRINDEC
 (LAMBDA(U)
  (PROG	(B P)
	(SETQ B BASE)
	(SETQ P *NOPOINT)
	(SETQ BASE 12)
	(SETQ *NOPOINT T)
	(PRINC U)
	(SETQ BASE B)
	(SETQ *NOPOINT P)))
EXPR)

(DEFPROP XSPACE
 (LAMBDA (N) (COND ((EQ N 0) NIL) (T (PRINC (ASCII 177)) (PRINC (QUOTE α)) (PRINC (ASCII N)))))
EXPR)

(DEFPROP PFONTS
 (PFONTS /2 /3 /4 /5 /6 /7 /8 /9 A B C D E F G)
VALUE)

(DEFPROP PRINTC
 (LAMBDA (U) (TERPRI) (PRINC U))
EXPR)

(DEFPROP BBXGPPUB
 (LAMBDA(U)
  (SETQ LINL XGPLINL)
  (LINELENGTH 10000)
  (SETQ SINDENT (TIMES SIN CHARW))
  (SETQ FINDENT (TIMES FIN CHARW))
  (SETQ HINDENT (TIMES HIN CHARW))
  (SETQ FMAX (TIMES MAXF CHARW))
  (SETQ XGP T)
  (MAPC (FUNCTION BBPPROPS) U)
  (LINELENGTH 105))
EXPR)

(DEFPROP XGPLINL
 (XGPLINL . 2424)
VALUE)

(DEFPROP CHARW
 (CHARW . 20)
VALUE)

(DEFPROP SCANTABLE
 (LAMBDA NIL
  (PROG	(N TBL)
	(SETQ N 200)
	(SETQ TBL NIL)
   L	(SETQ N (SUB1 N))
	(SETQ TBL (CONS (MODCHR N NIL) TBL))
	(COND ((GREATERP N 0) (GO L)))
	(RETURN TBL)))
EXPR)

(DEFPROP SETBITS
 (LAMBDA (N M) (BOOLE 7 N M))
EXPR)

(DEFPROP CLEARBITS
 (LAMBDA (N M) (BOOLE 2 M N))
EXPR)

(DEFPROP SLASHIFY
 (LAMBDA(U)
  (PROG	(N)
	(SETQ N 0)
   L	(COND ((MEMBER N U) (MODCHR N (CLEARBITS (MODCHR N NIL) -200000000000)))
	      (T (MODCHR N (SETBITS (MODCHR N NIL) -200000000000))))
	(SETQ N (ADD1 N))
	(COND ((LESSP N 200) (GO L)))))
EXPR)

(DEFPROP SETSLASHES
 (LAMBDA(U)
  (SETQ LISPSCAN (SCANTABLE))
  (SLASHIFY (MAPCAR (FUNCTION CHRVAL) U))
  (SETQ PROGSCAN (SCANTABLE))
  (SETQ %SCANSETFLAG% (GET (QUOTE SCANPUSH) (QUOTE SUBR))))
EXPR)

(DEFPROP SETSCANTABLE
 (LAMBDA (U) (PROG (N) (SETQ N 0) L (MODCHR N (CAR U)) (SETQ N (ADD1 N)) (SETQ U (CDR U)) (COND (U (GO L)))))
EXPR)

(DEFPROP SCANPUSH
 (LAMBDA NIL (SETSCANTABLE LISPSCAN))
EXPR)

(DEFPROP SCANPOP
 (LAMBDA NIL (SETSCANTABLE PROGSCAN))
EXPR)