1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-15 08:03:19 +00:00
PDP-10.its/src/macsym/script.begin
2018-07-16 07:04:57 -07:00

264 lines
13 KiB
Plaintext
Executable File

;; (c) Copyright 1983 Massachusetts Institute of Technology
;;
;; Enhancements (c) 1983, Symbolics, Inc. All Rights Reserved.
;; The data and information in the Enhancements is proprietary
;; to, and a valuable trade secret of, SYMBOLICS, INC., a
;; Delaware corporation. It is given in confidence by
;; SYMBOLICS, and may not be used as the basis of manufacture,
;; or be reproduced or copied, or distributed to any other
;; party, in whole or in part, without the prior written
;; consent of SYMBOLICS.
;;
(SETQ $LOADPRINT NIL)
;This shouldn't be needed any more --kmp
;(COND ((STATUS FEATURE MACLISP) (LOAD '((LISP)DEFMAX))))
(DEFSCRIPT $CONSOLEPRIMER
"Welcome to the MACSYMA Primer. This section of the Primer
is called the CONSOLEPRIMER because it is intended to be
used by people who have not had previous experience
interacting with a computer console."
(COND ((AND $PAGEPAUSE CURSORPOS)(SCRIPT 'CRTCONSOLE NIL)))
(SLEEP 2)
"You will notice that your console looks much like a typewriter, except
for having a few special keys. The two most important special
keys are the 'altmode' and the 'control' key. The 'altmode'
may be labeled 'alt', 'esc', '(sel)', or 'escape'. The 'control'
key may be labeled 'CTRL' or 'CNTL'. The altmode is used to
enter the MACSYMA editor. Do not attempt to use the editor while
you are in the Primer since it may tend to confuse you. A future
script will deal with editing. The control key is used in
the same fashion as the shift key on the typwriter, i.e. you hold
it down and type the character whose 'control' value you wish.
For example, to type control-Z, you would hold down the control
key and type a Z. Don't do that now, as control-Z is the control
character that will return you to top level when you are ready
to log out."
(SLEEP 2)
"The Primer will explain some of the aspects of MACSYMA to you and allow
you to try out various examples. Your responses to
the Primer must end with a semi-colon (;). That is the one
thing which the Primer cannot correct you on, since it will not
even see your response until you have typed the semi-colon. Thus
if nothing seems to be happening, check that you have typed the
semi-colon."
"In the Primer you should answer all questions the system asks. There
are three kinds of questions:"
"1. Questions you can answer with a yes or a no. You type the word
YES or the word NO followed immediately by a semi-colon (;) to
answer these. Case does not matter, upper or lower will do.
Try it here: Type YES; or NO;"
(AND (YESORNO) (TERPRI))
"2. Questions which require you to select a script or an option. The system
will print out a list, for example:"
(MENU '($SIMPLIFICATION $SCRATCHPAD $ASSIGNMENT))
"This list is called the 'menu', the list of scripts available.
You select a script to see by typing the number of your choice
followed by a semi-colon (;), to answer these. E.g."
"3;"
"Now you try it."
(MENU '($SIMPLIFICATION $SCRATCHPAD $ASSIGNMENT))
(NUMCHK 3)
"3. Requests to type in commands to MACSYMA. The system will make a
request, such as 'Type in a polynomial in X,' and then give you
a dummy MACSYMA command line number. You then type the command,
followed by a semi-colon. This is to give you a chance to practice
what you are learning. If you type the command correctly, the
system will pass what you type to MACSYMA, and MACSYMA will
evaluate it and return a response. If you make a mistake the
system will attempt to tell you what you did wrong, and will
offer you a chance to try again. Here, try typing X+2;"
(INCHK '((MPLUS) $X 2))
"The response, as you see, is just the expression itself, since
no simplification or operation was necessary or specified."
"Do you know how to type 'control-characters'?"
(AND (NOT (YESORNO)) (SCRIPT 'CTRLCHAR NIL))
"Control-G is the QUIT command for MACSYMA."
"The other control characters you should know about for MACSYMA are:"
"Control-L: this reprints the command line you are typing. On a display
console it will also clear the screen. It is particularly useful
if you have used rubout (delete) a lot and want to verify that you
have everything right."
"Control-^: this will put you into LISP, the language MACSYMA is written in.
You will not usually want to use it, but should know about it so
you can avoid typing it. If you do type it by mistake, control-G
will get you back to a MACSYMA command line."
"Control-A: this enters a MACSYMA break. This suspends the current
computation, and allows you to 'poke around' in your MACSYMA,
perhaps to open a file for output, or to see what the value of
some variable is. To get out of the 'break' and resume the
computation, type 'exit;'"
"Control-]: this prints out the time used by the computation so far.
You can type it at any point during a computation. Try it now to
see how much CPU time this PRIMER session has used:"
(SLEEP 8)
"Now you are ready to move along to the Introductory Script of the Primer."
(COND ((EQ 'WSMR (STATUS UNAME))(SCRIPT '$INTRO NIL))
(T (SEEN (STATUS UNAME) '$CONSOLEPRIMER)))
(SCRIPT '$INTRO NIL))
(DEFSCRIPT $FRANZPRIMER
"Welcome to the MACSYMA Primer. This section of the Primer
is called the FRANZPRIMER because it is intended to be
used by people who have not had previous experience
interacting with a Franz Lisp version of MACSYMA, or
maybe even with a computer console."
(COND ((AND $PAGEPAUSE CURSORPOS)(SCRIPT 'CRTCONSOLE NIL)))
"You will notice that your console looks much like a typewriter, except
for having a few special keys. The two most important special
keys are the 'altmode' and the 'control' key. The 'altmode'
may be labeled 'alt', 'esc', '(sel)', or 'escape'. The 'control'
key may be labeled 'CTRL' or 'CNTL'. The altmode is used to
enter the MACSYMA editor. Do not attempt to use the editor while
you are in the Primer since it may tend to confuse you. A future
script will deal with editing. The control key is used in
the same fashion as the shift key on the typwriter, i.e. you hold
it down and type the character whose 'control' value you wish.
For example, to type control-Z, you would hold down the control
key and type a Z. Don't do that now, as control-Z is the control
character that will return you to top level if you wish to interrupt
your MACSYMA briefly."
"The Primer will explain some of the aspects of MACSYMA to you and allow
you to try out various examples. Your responses to
the Primer must end with a semi-colon (;) followed by a carriage return
(newline). That is the one
thing which the Primer cannot correct you on, since it will not
even see your response until you have typed the semi-colon and the
carriage return. Thus
if nothing seems to be happening, check that you have typed
semi-colon carriage return."
"In the Primer you should answer all questions the system asks. There
are three kinds of questions:"
"1. Questions you can answer with a yes or a no. You type the word
YES or the word NO followed immediately by a semi-colon (;) and a
carriage return to
answer these. By convention in the primer we use upper case to
make what you wish to type stand out from the rest of the text.
However, in your answers you should use lower case.
Try it here: Type YES; or NO;"
(AND (YESORNO) (TERPRI))
"2. Questions which require you to select a script or an option. The system
will print out a list, for example:"
(MENU '($SIMPLIFICATION $SCRATCHPAD $ASSIGNMENT))
"This list is called the 'menu', the list of scripts available.
You select a script to see by typing the number of your choice
followed by a semi-colon (;) and a carriage return, to answer
these. E.g."
"3;"
"Now you try it."
(MENU '($SIMPLIFICATION $SCRATCHPAD $ASSIGNMENT))
(NUMCHK 3)
"3. Requests to type in commands to MACSYMA. The system will make a
request, such as 'Type in a polynomial in X,' and then give you
a dummy MACSYMA command line number. You then type the command,
followed by a semi-colon. This is to give you a chance to practice
what you are learning. If you type the command correctly, the
system will pass what you type to MACSYMA, and MACSYMA will
evaluate it and return a response. If you make a mistake the
system will attempt to tell you what you did wrong, and will
offer you a chance to try again. Here, try typing X+2; followed
by a carriage return."
(INCHK '((MPLUS) $X 2))
"The response, as you see, is just the expression itself, since
no simplification or operation was necessary or specified."
"Do you know how to type 'control-characters'?"
(AND (NOT (YESORNO)) (SCRIPT 'FRANZCTRLCHAR NIL))
"Control-C is the QUIT command for MACSYMA.
It places you in a break loop from which you may return to MACSYMA,
enter Lisp, enter a MACSYMA break for debugging, or return to
the shell, killing MACSYMA."
"The other control characters you should know about for MACSYMA are:"
"Control-L: this reprints the command line you are typing.
It is particularly useful
if you have used (delete) a lot and want to verify that you
have everything right."
"Control-D: this will put you into LISP, the language MACSYMA is written in.
You will not usually want to use it, but should know about it so
you can avoid typing it. If you do type it by mistake, a second
control-D
will get you back to a MACSYMA command line."
"Control-H (backspace): this deletes (erases) the last character you
typed. It may be used repeatedly."
(SLEEP 8)
"Now you are ready to move along to the Introductory Script of the Primer."
(COND ((EQ 'WSMR (STATUS UNAME))(SCRIPT '$INTRO NIL))
(T (SEEN (sys-user-id) '$franzprimer)))
(SCRIPT '$INTRO NIL))
(DEFSCRIPT CRTCONSOLE
"Since you have a display (CRT) console, there is one special
thing you must know before we proceed: When the printout
reaches the bottom of your screen, the system will print
**MORE**, --More Display?--, or --Pause--, and the output
will pause, leaving you as much time as you like to read
what has been printed. When you are ready to continue, you
hit the space bar once. The system will print --Continued--
and output will resume." )
(DEFSCRIPT CTRLCHAR
(SSTATUS TTYINT 7 'NIL)
"To type a control-character you use the key on your console labeled
'CTRL' or 'Control' in the same fashion as you would use the
'shift' key, that is you hold down the key labeled 'CTRL' and
strike the key you want to make a control-character. The
control-character which you will probably find the most useful
in MACSYMA, is control-G.
This is MACSYMA's 'QUIT' character, that is the character which
will cause MACSYMA to stop what it is doing and accept more input
from you. It is sort of the 'panic button', and will stop infinite
loops. So you can find it and practice
typing it, it is temporarily disabled as a 'QUIT' character."
"Try typing it now:"
(QUITCHK)
(SSTATUS TTYINT 7 'MQUIT))
(DEFSCRIPT FRANZCTRLCHAR
"To type a control-character you use the key on your console labeled
'CTRL' or 'Control' in the same fashion as you would use the
'shift' key, that is you hold down the key labeled 'CTRL' and
strike the key you want to make a control-character. The
control-character which you will probably find the most useful
in MACSYMA, is control-C.
This is MACSYMA's 'QUIT' character, that is the character which
will cause MACSYMA to stop what it is doing and accept more input
from you. It is sort of the 'panic button', and will stop infinite
loops."
)
(DEFUN NUMCHK (NUM)
(TERPRI)
(DO ANS (RETRIEVE NIL NIL) (RETRIEVE NIL NIL) NIL
(COND ((EQ '$NO ANS)
(TERPRI) (PRINC '|Well, all right, I'll show you.|)
(TERPRI)(PRIN1 NUM)(PRINC '|;|)(RETURN (TERPRI)))
((NOT (EQ (TYPEP ANS) 'FIXNUM))
(TERPRI)(PRINC '|That isn't a number.|)
(TERPRI)(PRINC '|Try again.|)(TERPRI))
((AND (> ANS 0)(NOT (> ANS NUM)))(RETURN (TERPRI)))
(T (TERPRI) (PRINC '|That number isn't in the list. Try again.|)
(TERPRI)))))
(DEFUN QUITCHK ()
(TERPRI)
(DO ((X (TYI)(TYI))) (NIL)
(COND ((OR (= X 103) (= X 71))
(TERPRI)
(PRINC '|That was just a G, try again.|)
(TERPRI)
(PRINC '|Hold down the control key.|)(TERPRI))
((= X 7)
(TERPRI)
(PRINC '|That's it, very good.|)
(TERPRI)
(PRINC '|Now we'll make it a quit character again, so|)
(TERPRI)
(PRINC '|only type it if you want to quit out of the PRIMER.|)
(RETURN (TERPRI)))
(T (TERPRI)
(PRINC '|Nope, not quite. Try again, hold down the control key|)
(TERPRI)
(PRINC '|and hit the G.|)(TERPRI)))))