RELEASE 2 OF LISP THIS RELEASE HAS THE FOLLOWING DIFFERENCES FROM RELEASE 1: 1. CORRECTION MADE FOR NIL,0 NIL1, 0 2. CORRECTION MADE IN LINE EDITOR FOR ^C TO RESET THE TELETYPE BUFFER. 3. ADDITION OF ZEXPR ROUTINE AND FOUR SUPPLEMENTAL ROUTINES (ONE TO STORE A VALUE IN FIELD 0, ONE TO LOAD A VALUE FROM FIELD 0, ONE TO MOVE A1P,A2P,AND A3P TO FIELD 0, AND ONE TO PRINT AN ASCII CHARACTER ON THE LINE PRINTER.) ADDITIONS TO LISP MANUAL ********* ** **** ****** SOMETIMES A LISP USER HAS SPECIALIZED FUNCTIONS WHICH HE EXPECTS TO PERFORM A NUMBER OF TIMES. BECAUSE OF MEMORY LIMITATIONS AND TIME LIMITATIONS, IT IS OFTEN DESIRABLE TO IMPLEMENT THESE FUNCTIONS IN MACHINE LANGUAGE, AND CALL THEM FROM A LISP PROGRAM. SINCE THE LIST SPACE COULD NOT BE EXTENDED TO A WHOLE FLD (BECAUSE OF DESIGN DECISIONS WHEN LISP 102A WAS WRITTEN) A LARGE PORTION OF FIELD 0 IS NOW UNUSED (LOCATIONS 0-34, 47-77, 2000-5400). A NEW FUNCTON HAS BEEN ADDED TO LISP CALLED ZEXPR, WHICH HAS 3 ARUMENTS. THE USER CAN WRITE HIS OWN FUNCTIONS IN PAL8 WHICH USE THE FREE SPACE IN FIELD 0. AFTER ASSEMBLING THESE PROGRAMS, HE CAN THEN USE ABSLDR TO LOAD THEM OVER LISP, AND SAVE THE NEW PROGRAM. THEN IN LISP, HE CAN TRANSFER TO THESE ROUTINES USING ZEXPR(W,X,Y). W IS THE ADDRESS TO TRANSFER TO, X IS THE FIRST ARGUMENT, AND Y IS THE SECOND ARGUMENT. EXAMPLE ******* ASSUME THE USER HAS 2 OVERLAYS, OVL1.BN, D OVL2.BN .R ABSLDR *LISP.SV/I *OVL1,OVL2$ .SA SYS:LISPN;13000 .R LISPN ZEXPR ***** ZEXPR( SIMILAR TO EXPR ,EXCEPT USING FIELD 0) IS A FUNCTION OF THREE ARGUMENTS. THE ARGUMENTS ARE SUPPOSED TO EVALUATE TO NUMERICAL VALUES (UNLESS NOT USED). THIS JUMPS TO THE FIELD ZERO MACHINE ADDRESS INDICATED IN THE FIRST ARGUMENT WITH THE NUMERICAL VALUE OF THE SECOND ARGUMENT IN THE ACCUMULATOR. THE POINTER TO THE SECOND ARGUMENT CAN BE FOUND IN FIELD 0 LOCATION 37, AND THE POINTER TOHE THIRD ARGUMENT CAN BE FOUND IN FIELD 0 LOCATION 41. THE MACHINE CODE PROGRAM CAN RETURN TO THE LISP SYSTEM WITH THE INSTRUCTION JMP 42 IN CASE THAT NO VALUE NEED BE RETURNED (CLEAR AC BEFORE RETURNING). IF A NUMERICAL VALUE MUST BE RETURNED, THIS CAN BE DONE BY HAVING T VALUE IN THE AC, AND DOING A JMP 44. BACK IN LISP, ONE THEN HAS A POINTER TO THAT VALUE AS A VALUE. SPECIAL LOCATIONS ******* ********* ZEXPR(1703 X Y) WILL STORE IN FIELD ZERO LOCATION X THE VALUE Y ZEXPR (1713 X 0) WILL PRINT THE ASCII CHARACTER REPRESENTED IN THE LOW ORDER 8 BITS OF THE AC ON THE LINE PRINTER. IT RETURNS WITH THE AC CLEAR. USING THIS, ONE CAN PRINT ON THE LINE PRINTER EVEN IF ANOTHER OUTPUT FILE IS OPEN. ZEXPR(1710 X 0) WILL REURN THE CONTENTS OF FIELD 0 LOCATION X AS ITS VALUE.