(DEFPROP DSKIN
(LAMBDA (%L %C)
(SETQ %C (INC (APPLY INPUT (CONS T %L))))
(ERRSET (PROG NIL T (EVAL (READ)) (GO T)))
(INC %C T))
FEXPR)
(SETQ DSKIN @DSKIN)
(DEFPROP %DEFINE
(LAMBDA (X P R)
(SETQ
R
(COND
((GETL (SETQ R (CAR X)) @(EXPR FEXPR SUBR FSUBR MACRO))
(LIST R @REDEFINED))
(R)))
(PUTPROP (CAR X) (CONS LAMBDA (CDR X)) P)
(RETURN R))
EXPR)
(SETQ %DEFINE @%DEFINE)
(DEFPROP DE
(LAMBDA (L) (%DEFINE L EXPR))
FEXPR)
(SETQ DE @DE)
(DEFPROP DF
(LAMBDA (L) (%DEFINE L FEXPR))
FEXPR)
(SETQ DF @DF)
(DEFPROP DM
(LAMBDA (L) (%DEFINE L MACRO))
FEXPR)
(SETQ DM @DM)
(SETQ RETFROM @RETFROM)
(PUTPROP RETFROM 222 SUBR)
(PROG NIL
(CLRBFI)
(PRINC "LOAD EXTENDED LIBRARY")
((EQ (PROG2 (PROMPT 77) (TYI) (PROMPT 52)) 116)
(ERR $EOF$)))
(DEFPROP DSKOUT
(LAMBDA (%%L %%C)
(SETQ %%C (OUTC (APPLY OUTPUT (LIST T (CAR %%L)))))
A (COND
((SETQ %%L (CDR %%L)) (EVAL (LIST GRINL (CAR %%L))) (GO A)))
(OUTC %%C T))
FEXPR)
(SETQ DSKOUT @DSKOUT)
(DEFPROP GRINL
(LAMBDA (%L %X %Y %Z)
A ((NULL %L) (RETURN))
(SETQ %X (EVAL (CAR %L)))
((CONSP (CAR %L)) (GO C))
(EVAL (CONS GRINDEF (CONS (CAR %L) %X)))
B ((NULL %X) (GO C))
(SETQ %Y (CAR %X))
(COND
((SETQ %Z (GET %Y READMACRO))
(TERPRI)
(SPRINT
(LIST (COND ((ONEP (REMAINDER (CHRVAL %Y) 10)) DSM) (DRM))
%Y
%Z)
1)
(TERPRI)))
(SETQ %X (CDR %X))
(GO B)
C (SETQ %L (CDR %L))
(GO A))
FEXPR)
(SETQ GRINL @GRINL)
(DEFPROP GRINDEF
(LAMBDA (%%L %%F %%G)
A (COND ((NULL %%L) (TERPRI) (RETURN)))
(COND
((CONSP (SETQ %%F (CAR %%L)))
(TERPRI)
(TERPRI)
(SPRINT %%F 1)
(GO D)))
(SETQ %%F GRINPROPS)
B (COND
((SETQ %%G (GET (CAR %%L) (CAR %%F)))
(TERPRI)
(TERPRI)
(PRINC "(DEFPROP ")
(PRIN1 (CAR %%L))
(TERPRI)
(SPRINT %%G 2)
(TERPRI)
(PRIN1 (CAR %%F))
(PRINC ")")))
(COND ((SETQ %%F (CDR %%F)) (GO B)))
C (COND
((SETQ %%G (ERRSET (EVAL (CAR %%L)) NIL))
(TERPRI)
(TERPRI)
(PRINC "(SETQ ")
(PRIN1 (CAR %%L))
(SPRINT (CONS QUOTE %%G)
(ADD 2 (SUB (LINELENGTH) (CHRCT)))
1)
(PRINC ")")))
D (SETQ %%L (CDR %%L))
(GO A))
FEXPR)
(SETQ GRINDEF @GRINDEF)
(SETQ GRINPROPS @(NIL EXPR FEXPR MACRO SUBR FSUBR))
(DEFPROP QUOTIENT
(LAMBDA (L) (*EXPAND L DIV))
MACRO)
(SETQ QUOTIENT @QUOTIENT)
(DEFPROP LDIFF
(LAMBDA (X Y Z)
((NULL Y) (RETURN X))
(SETQ Z (NCONS))
X ((EQ X Y) (RETURN (VCONC Z)))
((ATOM X) (GO Z))
(TCONC Z (CAR X))
(SETQ X (CDR X))
(GO X)
Z (ERROR "NOT A TAIL - LDIFF"))
EXPR)
(SETQ LDIFF @LDIFF)
(DEFPROP EXPLODE
(LAMBDA (X) (MAPCAR IASCII (#EXPLODE X)))
EXPR)
(SETQ EXPLODE @EXPLODE)
(DEFPROP TIMES
(LAMBDA (L) (*EXPAND L MUL))
MACRO)
(SETQ TIMES @TIMES)
(DEFPROP EXPLODEC
(LAMBDA (X) (MAPCAR IASCII (#EXPLODEC X)))
EXPR)
(SETQ EXPLODEC @EXPLODEC)
(DEFPROP *EXPAND
(LAMBDA (L FN)
(COND
((CDDR L)
(CONS (CAR L) (CONS (LIST FN (CADR L) (CADDR L)) (CDDDR L))))
((CADR L))))
EXPR)
(SETQ *EXPAND @*EXPAND)
(DEFPROP PLUS
(LAMBDA (L) (*EXPAND L ADD))
MACRO)
(SETQ PLUS @PLUS)
(DEFPROP DSM
(LAMBDA (L)
(PUTPROP (CAR L) (CADR L) READMACRO)
(SETCHR (CHRVAL (CAR L)) 1)
(RETURN (CAR L)))
FEXPR)
(SETQ DSM @DSM)
(DEFPROP REMOB
(LAMBDA (X)
(MAPC
@(LAMBDA (X)
(MAP @(LAMBDA (Y) (RPLACA Y (DREMOVE X (CAR Y)))) OBLIST))
X))
FEXPR)
(SETQ REMOB @REMOB)
(DEFPROP DRM
(LAMBDA (L)
(PUTPROP (CAR L) (CADR L) READMACRO)
(SETCHR (CHRVAL (CAR L)) 5)
(RETURN (CAR L)))
FEXPR)
(SETQ DRM @DRM)
(SETQ BREAKFNS NIL)
(DF BREAK (L) (PROGN (MAPC @%BREAK L) @OK))
(DE %BREAK (FN)
(%UNBREAK FN)
(PUTPROP FN T ERRORX)
(SETQ BREAKFNS (CONS FN BREAKFNS)))
(DF UNBREAK (L) (PROGN (MAPC @%UNBREAK (OR L (COPY BREAKFNS))) @OK))
(DE %UNBREAK (FN) (REMPROP FN ERRORX) (SETQ BREAKFNS (DREMOVE FN BREAKFNS)))