Category : Miscellaneous Language Source Code
Archive   : XLISP21D.ZIP
Filename : INIT.LSP

 
Output of file : INIT.LSP contained in archive : XLISP21D.ZIP
; initialization file for XLISP-PLUS 2.1c

(princ "XLISP-PLUS contains contributed code by:
Tom Almy, Mikael Pettersson, Neal Holtz, Johnny Greenblatt, Ken Whedbee,
Blake McBride, and Pete Yadlowsky.
Portions Copyright (c) 1988, Luke Tierney.\n")

(defun strcat (&rest str) ;; Backwards compatibility
(apply #'concatenate 'string str))


; (fmakunbound sym) - make a symbol function be unbound
(defun fmakunbound (sym) (setf (symbol-function sym) '*unbound*) sym)

; (mapcan fun list [ list ]...)
; (defmacro mapcan (&rest args) `(apply #'nconc (mapcar ,@args)))

; (mapcon fun list [ list ]...)
; (defmacro mapcon (&rest args) `(apply #'nconc (maplist ,@args)))

; (set-macro-character ch fun [ tflag ])
(defun set-macro-character (ch fun &optional tflag)
(setf (aref *readtable* (char-int ch))
(cons (if tflag :tmacro :nmacro) fun))
t)

; (get-macro-character ch)
(defun get-macro-character (ch)
(if (consp (aref *readtable* (char-int ch)))
(cdr (aref *readtable* (char-int ch)))
nil))

; (savefun fun) - save a function definition to a file
(defmacro savefun (fun)
`(let* ((fname (strcat (symbol-name ',fun) ".lsp"))
(fval (get-lambda-expression (symbol-function ',fun)))
(fp (open fname :direction :output)))
(cond (fp (print (cons (if (eq (car fval) 'lambda)
'defun
'defmacro)
(cons ',fun (cdr fval))) fp)
(close fp)
fname)
(t nil))))

; (debug) - enable debug breaks
(defun debug ()
(setq *breakenable* t))

; (nodebug) - disable debug breaks
(defun nodebug ()
(setq *breakenable* nil))

; initialize to enable breaks but no trace back
(setq *breakenable* t *tracenable* nil)


; macros get displaced with expansion
; Good feature -- but be warned that it creates self modifying code!
(setq *displace-macros* t)

; Enable the following to have DOS do the line editing
; (setq *dos-input* t)

;; Select one of these three choices
;; Other modes will not read in other standard lsp files


; print in upper case, case insensitive input
(setq *print-case* :upcase *readtable-case* :upcase)

; print in lower case
; (setq *print-case* :downcase *readtable-case* :upcase)

; case sensitive, lowercase and uppercase swapped (favors lower case)
; (setq *print-case* :downcase *readtable-case* :invert)


;; Define Class and Object to be class and object when in case sensitive
;; mode

(when (eq *readtable-case* :invert)
(defconstant Class class)
(defconstant Object object))


  3 Responses to “Category : Miscellaneous Language Source Code
Archive   : XLISP21D.ZIP
Filename : INIT.LSP

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/