Tue Feb 22 08:43:44 1983 by jkf force jump to vecindexerr to use 'jmp', since the object file might be large and the assembler is stupid (now: version 8.22) Thu Feb 10 20:39:42 1983 by jkf open coded vectorp and vectorip, vsize-... (now: version 8.21) Thu Jan 20 01:57:01 1983 by layer Added three features to liszt command line processing: -e <expr> evaluates <expr> before compilation. -i <filename> loads <filename> before compilation. -S -o filename names .s file. file: tlev.l (now: version 8.20) Mon Jan 17 09:41:12 1983 by jkf added arg number checking and open coded &keywords. (now: version 8.19) Sun Jan 16 10:05:01 1983 by jkf fixed nasty bug in d-exp which would show up if a macro returned a recursive call it itself (now: version 8.18) Wed Jan 12 10:43:53 1983 by jkf added open coding of vref functions (now: version 8.17) Wed Oct 27 20:24:47 1982 by jkf removed references to sys_ functions, replaced them with sys: functions so code will be more portable. file: tlev.l Wed Oct 27 08:15:14 1982 by jkf discovered that making 'declare' a function is a bad idea because if the compiler executes an interpreted function with local declarations, those local declarations will seem like declarations for the function begin compiled. Thus declare is no longer a special function in the compiler: it must be seen by the compiler to have an effect. Added the user callable function liszt-declare which will have an effect just like declare used to: the compiler will recognize it when compiling and it can be evaluated by a user function. (now: version 8.16) Mon Oct 25 22:55:37 1982 by jkf removed If macro definition from cmacros.l . It is now in the default franz. Mon Oct 25 09:15:18 1982 by jkf catch the sigterm signal and die after removing the /tmp file. (now: version 8.15) Tue Oct 19 15:56:07 1982 by jkf fixed bugin cc-arg wherein a (arg (foo)) would be compiled incorrectly (it was calling zerop on a non number). Added checks for cmacro and macro-autoload properties. When doing macro expansion, had it stop if the same car was returned. (now: version 8.14) Mon Oct 18 23:27:14 1982 by layer Fixed bug in function cc-quote. Parens in an If statement were messed up. Sat Oct 9 04:35:23 PDT 1982 by layer Np-reg, Lbot-reg, oLbot-reg are now constants. Changes made to expr.l and io.l. Thu Oct 7 01:02:26 1982 by jkf fixed bug in the compiler. The compiler had neglected to enforce the rule that 'macros' not be defined as local functions. Now that is checked (modification to tlev.l). Wed Oct 6 22:53:36 1982 by jkf added check to make sure that a file doesn't declare a function to be local that has already had a compiled call made to it. This is done by placing a t under indicator g-stdref for all symbols called in the 'standard' way. (now: version 8.13) Wed Oct 6 13:29:27 PDT 1982 by layer put the loading of chead.l (in array.l datab.l decl.l expr.l fixnum.l funa.l funb.l func.l io.l tlev.l util.l) under include-if control. Also changed chead.l. Tue Oct 5 23:36:09 PDT 1982 by layer removed function d-call from expr.l, since it isn't used anymore. Tue Oct 5 23:00:09 PDT 1982 by layer added sccs'ed file scmake.l, so that an all interp'd version of the compiler can be made without deleting all the .o files. Changes were also make to the Makefile. snliszt (formerly slownliszt) now depends on source files (like nliszt depends on .o files). Tue Oct 5 22:22:59 1982 by jkf added argument checking. This involved mods to expr.l to do the checking and to tlev.l to save argument number info while compiling. The file /usr/lib/lisp/fcninfo.l contains a description of what is known about C functions. (now: version 8.12) Mon Oct 4 14:23:29 1982 by jkf turn off [load ...] message when loading in lisztrc file Tue Sep 28 09:30:36 1982 by jkf change tmp file name back to jkfnnnnn (now: version 8.11) Wed Jul 21 13:43:56 PDT 1982 by layer function "liszt" in tlev.l now returns the true assembler exit status (if the compile goes that far). Sat Jul 3 18:01:25 1982 by jkf open code getaux and getaccess (now: version 8.10) Wed Jun 30 18:58:32 1982 by jkf look for liszt rc files without extensions. now we look in 12 places for the lisp init file: { . , $HOME } { .lisztrc , lisztrc } { .o , .l , } (now: version 8.09) Thu May 27 08:19:00 1982 by jkf fixed bug in d-fixnump which caused liszt to assume too often that arguments are all fixnums (now: version 8.08) Wed May 12 13:46:03 1982 by jkf new declaration scheme died when the object being declared was a list. e.g (declare (fixnum (foo fixnum flonum)). Fixed declare-handler so that cases like this are ignored. (now: version 8.07) Fri May 7 19:28:04 1982 by jkf allow (function (nlambda ()...)) and (function (lambda () ..)) (now: version 8.06) Thu May 6 15:03:50 1982 by jkf support local declarations. They are stacked on g-decls. localf and macarray don't fit in too well, they should be fixed. fixnum declarations now have meaning. They will allow the compiler to convert from functions like 'add1' to 1+. 'declare' is now a function in the compiler so declarations may be fasl'ed in. [this was removed Oct 27, 1982] Thu Apr 22 20:48:25 1982 by jkf #' returns a symbol now, instead of the getd of the symbol. This was required for maclisp compatibility. (now: version 8.05) Wed Apr 21 07:50:41 1982 by jkf load in init file before compiling. look in . first, then $HOME. look for .liszt.o, .lisztrc.l, lisztrc.o, lisztrc.l Upon interrupt, remove temp file and exit (now: version 8.04) Mon Apr 12 23:22:37 1982 by jkf open code 'function'. Now it will cause another function to be generated and compiled and the function call returns the bcd header for the newly created function liszt-process-forms may be filled with forms to compile while compiling a form. Unlike liszt-eof-forms, liszt-process-forms are compiled at the next opportunity. (now: version 8.03) Wed Mar 31 08:47:46 1982 by jkf fixed bug in which (> (or nil 9) 0) would return true. cc-eq now rebinds g-trueop and g-falseop. (now: version 8.02) Wed Mar 31 08:24:27 1982 by jkf added a new file to liszt: lversion.l It is not sccsed and it just contains the version number. This will allow the version number to be changed with ease whenever a modification is made. start it at 8.01 (now: version 8.01) Fri Mar 19 11:17:12 1982 by jkf did distribution. (now: version 8.00) Fri Feb 19 09:56:50 1982 by jkf fixed e-docomment so that newlines in the comment will not cause assembler problems [io.l] Wed Feb 17 12:46:24 1982 by jkf to version 8.0 (to correspond with Opus 38) Wed Feb 10 21:28:41 1982 by jkf fixed a bug in the return function and a possible bug in go. both bugs have to do with returning or going through a catch or errset, which is a pretty strange thing to do anyway. The fix was to keep track of the number of catches and errsets before the prog to be returned from or gone into. I modified d-pushframe to always push 3 args, so we can know how long each frame we pop will be. Sat Dec 5 11:58:36 1981 by jkf open coded boole (mods to decl.l and funa.l). used the open coding capability of fixnums. Added three internal functions fixnum-BitXor, fixnum-BitAndNot fixnum-BitOr, which are the three functions which the vax can do. Mon Oct 26 21:15:36 1981 by jkf fixed bug in d-supercxr (funa.l) which made this function (cond ((setq y (cxr n zip)) (print 'hi)) (t (print 'lo))) always prints 'hi'. The problem was that only jump on true was checked if the value of a cxr was stored somewhere. In the case above we want to jump on nil. Sat Oct 24 16:41:03 1981 by jkf -*- to version 7.1 -*- Added the 'a' option to liszt, which if set will cause a special form to be output after a function is defined. that special form will put a 'fcn-info' property on the function's property list. the form of the fcn-info property is (argdesc compileinfo) argdesc may be nil or (x . y), the later meaning that there are a minumum of x args required and a maximum of y. Currently lexprs just put 'nil' there, but soon I will introduce a way to declare min and max args for lexprs via a declare. The compileinfo is a string saying what file this came from and when it was compiled. Wed Oct 21 20:19:53 1981 by jkf added functions <&, =&, and >& which are fixnum only versions of <,= and >. Tue Oct 20 22:14:41 1981 by jkf fix < and > compiling so that they are only open coded if we can be sure that both operands are fixnums. For now this amounts to checking that one of the operands is a fixnum. We should augment to this check also for type declarations. Sat Oct 17 11:47:50 1981 by jkf since most fixnums are in the range 0 to 1023 we can probably win by doing inline checking in that range. Thus I've added the function d-fixnumbox which does an inline reboxing if the number is between 0 and 1023 and otherwise calls qnewint. The file changed was fixnum.l Thu Oct 8 23:35:34 1981 by jkf added cc-= to open code = if possible. It looks for a fixnum as one of the arguments and converts the = expression to (eq (cdr ..) (cdr ..)) which should do the trick.