LISTING FOR >special_ldd>install>MR12.0-1136>e_internal_macros_ COMPILED BY Multics LISP Compiler, Version 2.13c, July 11, 1983 ON 08/20/86 2248.9 mst Wed IN BEHALF OF Martinson.SysMaint.a ;;; *********************************************************** ;;; * * ;;; * Copyright, (C) Honeywell Information Systems Inc., 1985 * ;;; * * ;;; *********************************************************** ;;; Macros used internally in Emacs. ;;; HISTORY COMMENTS: ;;; 1) change(85-01-05,Margolin), approve(86-02-24,MCR7186), ;;; audit(86-08-12,Harvey), install(86-08-20,MR12.0-1136): ;;; Created. Mark and eline definitions taken from e_basic_.lisp, and ;;; turned into defstructs. ;;; 2) change(86-02-24,Margolin), approve(86-02-24,MCR7325), ;;; audit(86-08-12,Harvey), install(86-08-20,MR12.0-1136): ;;; Added file-object, pathname, and packed-pointer structures, and ;;; associated macros. ;;; END HISTORY COMMENTS (%include sharpsign) (%include defstruct) (%include defmacro) (declare (macros t)) ;;; The "eline" (editor-line) datatype is constructed as such: ;;; ;;; (line-contents . (previous-line . next-line)) ;;; ;;; previous-line and next-line are other editor lines; line-contents ;;; is either a Lisp string or a "filecons", which is constructed ;;; as follows: ;;; ;;; (char-ptr . linel) ;;; ;;; char-ptr is a fixnum-encoded pointer to the starting character ;;; of a line in a temp-seg into which e_pl1_ copied a file at read-in ;;; time. linel is the length of that line, including the mandatory ;;; newline at the end. (defstruct (eline (:type tree) (:conc-name)) (contents nil) (previous nil) (next nil)) ;;; Some special cases (defmacro prevline () '(eline-previous curline)) (defmacro nextline () '(eline-next curline)) ;;; No need for the old curelevator, it was only directly referenced in ;;; one place, and that was fixed. ;;; If this format ever changes, e_lap_.lap will have to be changed. ;;; It expects a cons. (defstruct (filecons (:type tree) (:conc-name)) pointer length) ;;; The format of a mark is (eline . position) (defstruct (mark (:type tree) (:conc-name)) eline position) ;;; ;;; The Multics file interface in EMACS operates on a "file-object". A ;;; file-object is the following list: ;;; ;;; (CONTENTS ABSPATH UID FCB_PTR) ;;; ;;; where: ;;; ;;; CONTENTS ;;; a list of fileconses (ptr .length) to the segments that ;;; make up the file (one if it is an archive component or SSF, ;;; multiple if it is an MSF), ;;; ABSPATH ;;; is the absolute pathname of the Multics file (segment), ;;; UID ;;; is the Multics unique-id of the file and is used by find-file, ;;; FCB_PTR ;;; is a pointer to the msf_manager_ file control block for the file. ;;; DTCM ;;; is a fixnum representing the time the file was last modified. ;;; ORIGINAL-ACCESS ;;; if non-nil is a pointer to a data structure used to restore ;;; access after it was forced. (defstruct (file-object (:type list) (:conc-name fobj-)) contents path uid (fcb-ptr nil) dtcm (original-access nil)) ;;; A couple of special cases for segment 0 (defmacro fobj-seg0 (file-object) `(first (fobj-contents ,file-object))) (defmacro fobj-pointer (file-object) `(filecons-pointer (fobj-seg0 ,file-object))) (defmacro fobj-length (file-object) `(filecons-length (fobj-seg0 ,file-object))) ;;; And a common combination (defmacro fobj-abs-path (file-object) `(absolute-pathname (fobj-path ,file-object))) ;;; A PATHNAME consists of a directory, an entryname, and an archive component ;;; name. If it isn't an archive component, pn-component is the null string. ;;; The expand-pathname and absolute-pathname functions in e_multics_files_ ;;; translate from and to a single character string. Absolute-pathname ;;; encaches the absolute pathname in the abs-path component, to speed up ;;; repetitive calls. (defstruct (pathname (:type list) (:conc-name pn-)) (directory "") (entry "") (component "") (abs-path nil)) ;;; ;;; The packed-pointer defstruct is usable for manipulating ;;; pointers expressed as a Lisp fixnum. (defstruct (packed-pointer (:type fixnum) (:conc-name pptr-)) ((bit-offset #o3606) (seg-number #o2214) (word-offset #o0022))) INCLUDE FILE >ldd>include>sharpsign.incl.lisp ;; -*- Mode: Lisp; Lowercase: True -*- ;; sharpsign.incl.lisp - Loads lisp_sharpsign_ into either the compiler or ;; interpreter environment. ;; Written: October 1982 by Carl Hoffman (eval-when (eval compile) (or (status feature sharpsign) (load (catenate (car (namelist (truename infile))) ">lisp_sharpsign_")))) INCLUDE FILE >ldd>include>defstruct.incl.lisp ;; -*- Mode: Lisp; Lowercase: True -*- ;; defstruct.incl.lisp - Loads lisp_defstruct_ and lisp_setf_ into either the ;; compiler or interpreter environment. ;; Written: October 1982 by Alan Bawden, Carl Hoffman, and Rich Lamson (eval-when (eval compile) (or (status feature setf) (load (catenate (car (namelist (truename infile))) ">lisp_setf_"))) (or (status feature defstruct) (load (catenate (car (namelist (truename infile))) ">lisp_defstruct_")))) INCLUDE FILE >ldd>include>defmacro.incl.lisp ;; -*- Mode: Lisp; Lowercase: True -*- ;; defmacro.incl.lisp - Loads lisp_backquote_, lisp_destructuring_let_, ;; and lisp_defmacro_ into either the compiler or interpreter environment. ;; Written: October 1982 by Carl Hoffman ;; Defmacro needs destructuring_let to run. ;; It can run without backquote, but would be useless. (eval-when (eval compile) (or (status feature backquote) (load (catenate (car (namelist (truename infile))) ">lisp_backquote_"))) (or (status feature destructuring_let) (load (catenate (car (namelist (truename infile))) ">lisp_destructuring_let_"))) (or (status feature defmacro) (load (catenate (car (namelist (truename infile))) ">lisp_defmacro_")))) ;; This is necessary for (defprop a b macro) forms and defuns produced ;; by defmacro to appear in the object segment. Let the default be ;; the right thing for naive users. (declare (macros t)) Functions Defined Name Offset Offset Name fobj-abs-path macro 251 0 prevline macro fobj-length macro 200 27 nextline macro fobj-pointer macro 127 56 fobj-seg0 macro fobj-seg0 macro 56 127 fobj-pointer macro nextline macro 27 200 fobj-length macro prevline macro 0 251 fobj-abs-path macro Functions Referenced error displace length ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved