home *** CD-ROM | disk | FTP | other *** search
/ Enter 2004 January / enter-2004-01.iso / files / maxima-5.9.0.exe / {app} / share / maxima / 5.9.0 / src / init-cl.lisp < prev    next >
Encoding:
Text File  |  2003-02-09  |  6.3 KB  |  197 lines

  1. ;********************************************************
  2. ; file:        init-cl.lisp                              
  3. ; description: Initialize Maxima                         
  4. ; date:        Wed Jan 13 1999 - 20:27                   
  5. ; author:      Liam Healy <Liam.Healy@nrl.navy.mil>      
  6. ;********************************************************
  7.  
  8. (in-package :maxima)
  9.  
  10. ;;; An ANSI-CL portable initializer to replace init_max1.lisp
  11.  
  12. (defvar *maxima-prefix*)
  13. (defvar *maxima-datadir*)
  14. (defvar *maxima-infodir*)
  15. (defvar *maxima-plotdir*)
  16. (defvar *maxima-verpkglibexecdir*)
  17. (defvar *maxima-verpkgdatadir*)
  18. (defvar *maxima-libexecdir*)
  19. (defvar *maxima-userdir*)
  20.  
  21. (defun maxima-path (dir file)
  22.    (format nil "~a/~a/~a" *maxima-prefix* dir file))
  23.  
  24. (defun maxima-data-path (dir file)
  25.    (format nil "~a/~a/~a"
  26.        *maxima-verpkgdatadir* dir file))
  27.  
  28. (defvar $file_search_lisp nil
  29.   "Directories to search for Lisp source code.")
  30.  
  31. (defvar $file_search_maxima nil
  32.   "Directories to search for Maxima source code.")
  33.  
  34. (defvar $file_search_demo nil
  35.   "Directories to search for demos.")
  36.  
  37. (defvar $file_search_usage nil)
  38. (defvar $chemin nil)
  39.  
  40. #+gcl
  41. (defun maxima-getenv (envvar)
  42.   (si::getenv envvar))
  43.  
  44. #+allegro
  45. (defun maxima-getenv (envvar)
  46.   (system:getenv envvar))
  47.  
  48. #+cmu
  49. (defun maxima-getenv (envvar)
  50.   (cdr (assoc envvar ext:*environment-list* :test #'string=)))
  51.  
  52. #+clisp
  53. (defun maxima-getenv (envvar)
  54.   (ext:getenv envvar))
  55.  
  56. (defun set-pathnames ()
  57.   (let ((maxima-prefix-env (maxima-getenv "MAXIMA_PREFIX"))
  58.     (maxima-datadir-env (maxima-getenv "MAXIMA_DATADIR"))
  59.     (maxima-infodir-env (maxima-getenv "MAXIMA_INFODIR"))
  60.     (maxima-plotdir-env (maxima-getenv "MAXIMA_PLOTDIR"))
  61.     (maxima-userdir-env (maxima-getenv "MAXIMA_USERDIR"))
  62.     (maxima-verpkgdatadir-env (maxima-getenv "MAXIMA_VERPKGDATADIR"))
  63.     (home-env (maxima-getenv "HOME")))
  64.     ;; MAXIMA_DIRECTORY is a deprecated substitute for MAXIMA_PREFIX
  65.     (if (not maxima-prefix-env)
  66.     (setq maxima-prefix-env (maxima-getenv "MAXIMA_DIRECTORY")))
  67.     (if maxima-prefix-env
  68.     (setq *maxima-prefix* maxima-prefix-env)
  69.       (setq *maxima-prefix* *autoconf-prefix*))
  70.     (if maxima-datadir-env
  71.     (setq *maxima-datadir* maxima-datadir-env)
  72.       (if maxima-prefix-env
  73.       (setq *maxima-datadir* (concatenate 'string *maxima-prefix*
  74.                           "/"
  75.                           "share"))
  76.     (setq *maxima-datadir* *autoconf-datadir*)))
  77.     (if maxima-verpkgdatadir-env
  78.     (setq *maxima-verpkgdatadir* maxima-verpkgdatadir-env)
  79.       (setq *maxima-verpkgdatadir* (concatenate 'string
  80.                         *maxima-datadir*
  81.                         "/"
  82.                         *autoconf-package*
  83.                         "/"
  84.                         *autoconf-version*)))
  85.     (if maxima-prefix-env
  86.     (setq *maxima-libexecdir* (concatenate 'string *maxima-prefix*
  87.                            "/"
  88.                            "libexec"))
  89.       (setq *maxima-libexecdir* *autoconf-libexecdir*))
  90.     (setq *maxima-verpkglibexecdir* (concatenate 'string
  91.                          *maxima-libexecdir*
  92.                          "/"
  93.                          *autoconf-package*
  94.                          "/"
  95.                          *autoconf-version*))
  96.     (if maxima-plotdir-env
  97.     (setq *maxima-plotdir* (maxima-getenv "MAXIMA_PLOTDIR"))
  98.       (setq *maxima-plotdir* *maxima-verpkglibexecdir*))
  99.     (if maxima-infodir-env
  100.     (setq *maxima-infodir* maxima-infodir-env)
  101.       (if maxima-prefix-env
  102.       (setq *maxima-infodir* (concatenate 'string *maxima-prefix*
  103.                           "/"
  104.                           "info"))
  105.     (setq *maxima-infodir* *autoconf-infodir*)))
  106.     (if maxima-userdir-env
  107.     (setq *maxima-userdir* maxima-userdir-env)
  108.       (setq *maxima-userdir* (concatenate 'string home-env "/.maxima"))))
  109.      
  110.   
  111.   (let* ((ext #+gcl "o"
  112.           #+cmu (c::backend-fasl-file-type c::*target-backend*)
  113.           #+clisp "fas"
  114.           #+allegro "fasl"
  115.           #-(or gcl cmu clisp allegro)
  116.           "")
  117.      (lisp-patterns (concatenate 'string
  118.                      "###.{"
  119.                      (concatenate 'string ext ",lisp,lsp}")))
  120.      (share-with-subdirs "{share,share/algebra,share/calculus,share/combinatorics,share/contrib,share/diffequations,share/graphics,share/integequations,share/integration,share/macro,share/matrix,share/misc,share/numeric,share/physics,share/simplification,share/specfunctions,share/sym,share/tensor,share/trigonometry,share/utils,share/vector}"))
  121.     (setq $file_search_lisp
  122.       (list '(mlist)
  123.         ;; actually, this entry is not correct.
  124.         ;; there should be a separate directory for compiled
  125.         ;; lisp code. jfa 04/11/02
  126.         (concatenate 'string *maxima-userdir* "/" lisp-patterns)
  127.         (maxima-data-path share-with-subdirs lisp-patterns)
  128.         (maxima-data-path "src" lisp-patterns)))
  129.   (setq $file_search_maxima
  130.     (list '(mlist)
  131.           (concatenate 'string *maxima-userdir* "/" "###.{mac,mc}")
  132.           (maxima-data-path share-with-subdirs "###.{mac,mc}")))
  133.   (setq $file_search_demo
  134.     (list '(mlist)
  135.           (maxima-data-path share-with-subdirs
  136.                      "###.{dem,dm1,dm2,dm3,dmt}")
  137.           (maxima-data-path "{demo}"
  138.                      "###.{dem,dm1,dm2,dm3,dmt}")))
  139.   (setq $file_search_usage
  140.     (list '(mlist) (maxima-data-path share-with-subdirs
  141.                      "###.{usg,texi}")
  142.           (maxima-data-path "doc" "###.{mac}")))
  143.   (setq $chemin
  144.     (maxima-data-path "sym" ""))
  145.   (setq si::*info-paths* (list (concatenate 'string
  146.                         *maxima-infodir* "/"))))
  147.   )
  148.  
  149. ;#+gcl (setq si::*top-level-hook* 'user::run)
  150. (defun user::run ()
  151.   "Run Maxima in its own package."
  152.   (in-package "MAXIMA")
  153.   ; jfa new command-line communication
  154.   (let ((input-string *standard-input*)
  155.     (maxima_int_lisp_preload (maxima-getenv "MAXIMA_INT_LISP_PRELOAD"))
  156.     (maxima_int_input_string (maxima-getenv "MAXIMA_INT_INPUT_STRING"))
  157.     (batch-flag (maxima-getenv "MAXIMA_INT_BATCH_FLAG")))
  158.     (if maxima_int_lisp_preload
  159.     (load maxima_int_lisp_preload))
  160.     (if maxima_int_input_string
  161.     (setq input-string (make-string-input-stream maxima_int_input_string)))
  162.       
  163.     (catch 'to-lisp
  164.       (set-pathnames)
  165.       #+(or cmu clisp)
  166.       (progn
  167.     (loop 
  168.       (with-simple-restart (macsyma-quit "Macsyma top-level")
  169.                    (macsyma-top-level input-string batch-flag))))
  170.       #-(or cmu clisp)
  171.       (catch 'macsyma-quit
  172.     (macsyma-top-level input-string batch-flag)))))
  173.  
  174. (import 'user::run)
  175.   
  176. ($setup_autoload "eigen.mac" '$eigenvectors '$eigenvalues)
  177.  
  178. (defun $to_lisp ()
  179.   (format t "~%Type (run) to restart~%")
  180.   (throw 'to-lisp t))
  181.  
  182. (defun $jfa_lisp ()
  183.   (format t "jfa was here"))
  184.  
  185. (defvar $help "type describe(topic) or example(topic);")
  186.  
  187. (defun $help () $help)            ;
  188.  
  189. ;; CMUCL needs because when maxima reaches EOF, it calls BYE, not $QUIT.
  190. #+cmu
  191. (defun bye ()
  192.   (ext:quit))
  193.  
  194. (defun $maxima_server (port)
  195.   (load "/home/amundson/devel/maxima/archive/src/server.lisp")
  196.   (user::setup port))
  197.