mirror of
https://github.com/PDP-10/its.git
synced 2026-03-21 08:48:51 +00:00
441 lines
18 KiB
Plaintext
441 lines
18 KiB
Plaintext
|
||
<PACKAGE "MGHELP">
|
||
<ENTRY INFOT HLIST HELP1>
|
||
<SET HLIST '(("GEN";"GENERAL DISCRIPTION OF MUDDLE GRAPHICS"
|
||
<1 .INFOT>)
|
||
("MUDDLE";"SHORT AND INCOMPLETE DESCRIPTION OF MUDDLE"
|
||
<2 .INFOT>)
|
||
("ALL";"PRINTS THE WHOLE WORLD" <3 .INFOT>)
|
||
("TERMINAL";"USEFULL FACTS ABOUT SCOPES" <4 .INFOT>)
|
||
("CIRCLE" <5 .INFOT>)
|
||
("DISPLAY";"HOW TO USE THE DISPLAY COMPILER" <25 .INFOT>)
|
||
("DRAW" <6 .INFOT>)
|
||
("DSKIMAGE" <7 .INFOT>)
|
||
("ELIPSE" <8 .INFOT>)
|
||
("FNCTG" <9 .INFOT>)
|
||
("LINE" <10 .INFOT>)
|
||
("M3D" <11 .INFOT>)
|
||
("M3DSK" <12 .INFOT>)
|
||
("MIJPL" <13 .INFOT>)
|
||
("MINIMAX" <14 .INFOT>)
|
||
("MOVE" <15 .INFOT>)
|
||
("MTRIANGLE" <16 .INFOT>)
|
||
("PAGE" <17 .INFOT>)
|
||
("PARAG" <26 .INFOT>)
|
||
("PLOTV" <18 .INFOT>)
|
||
("PLOTVDSK" <19 .INFOT>)
|
||
("POINT" <20 .INFOT>)
|
||
("SEND" <21 .INFOT>)
|
||
("SFXYP" <22 .INFOT>)
|
||
("TRANS" <23 .INFOT>)
|
||
("ORG" <24 .INFOT>) )>
|
||
|
||
<DEFINE HELP1 (HLIST INFOT)
|
||
<PRINT "TYPE HELP$ (WHERE '$' IS THE ESC KEY ON THE TTY) FOR
|
||
A LIST OF THINGS THAT HELP IS AVAILALBE FOR, OR <-FUNCTION->$ (THE
|
||
NAME OF A FUNCTION), OR RETURN$ TO LEAVE HELP.">
|
||
<TERPRI>
|
||
<TERPRI>
|
||
<REPEAT (A B)
|
||
<TERPRI>
|
||
<PRINC "?">
|
||
<SET A <PNAME <READ>>>
|
||
<SET B <1 .A>>
|
||
<COND (<==? .B !"H>
|
||
<PRINT "HELP IS AVAILABLE FOR THE FOLLOWING">
|
||
<TERPRI>
|
||
<MAPF <>
|
||
#FUNCTION((X)
|
||
<TERPRI>
|
||
<PRINC <STRING <1 .X>
|
||
" "
|
||
<GET <REST .X 0>
|
||
COMMENT
|
||
" ">>>)
|
||
.HLIST> <AGAIN>)
|
||
(<==? .B !"R> <RETURN .B>)>
|
||
<TERPRI>
|
||
<SET B <SCAN .A .HLIST>>
|
||
<COND (<NOT .B> <PRINC "INVALID ENTRY">)
|
||
(<0? .B> <TERPRI><PRINC .INFO>)
|
||
(<L? .B 0> <PRINC "NO INFO YET">)
|
||
(ELSE
|
||
<TERPRI>
|
||
<PRINC <.B .INFO>> )
|
||
(ELSE <PRINC "INVALID ENTRY">)> >>
|
||
|
||
<DEFINE SCAN (KEY HLIST
|
||
"AUX" (B #FALSE())
|
||
"ACT" A1)
|
||
<COND (<NOT .B>
|
||
<MAPF <>
|
||
#FUNCTION ((X)
|
||
<COND (<=? .KEY <1 .X>>
|
||
<SET B <EVAL <2 .X>>>
|
||
<AGAIN .A1>)>)
|
||
.HLIST>)>
|
||
.B>
|
||
|
||
<SET INFO '("
|
||
SFXYP 5-9 THIS WILL PRODUCE A SURFACE PLOT
|
||
WITH HIDDEN LINE ELIM. NOTE IT IS
|
||
SLOW.
|
||
<SFXYP XL XH YL YH FUNCT PRAM
|
||
RES DSK FILE>
|
||
XL,XH ARE THE LOW AND HIGH LIMITS
|
||
ON X
|
||
YL,YH ARE THE LOW AND HIGH LIMITS
|
||
ON Y
|
||
FUNCT IS THE NAME OF THE FUNCTION
|
||
TO BE PLOTTED.
|
||
PRAM IS A LIST OF OPTIONAL ARGS
|
||
FOR THE FUNCTION
|
||
RES IS THE # OF POINTS PER LINE.
|
||
SO THE PLOT WILL CONTAIN A
|
||
TOTAL OF .RES * .RES POINTS
|
||
THE DEFAULT IS 60,USE AS FEW
|
||
POINTS AS POSSIBLE BECAUSE
|
||
RUN TIME GOES UP VERY FAST
|
||
WITH THE # OF POINTS.
|
||
DSK IF THIS ISNT #FALSE() THE
|
||
OUTPUT GOES TO A DSK FILE.
|
||
FILE IS THE NAME OF THE DSK FILE
|
||
IT IS A LIST OF THE FORM
|
||
(''F1'' ''F2'' ''DSK'' ''DIR'')
|
||
THE DEFAULT IS M3D OUTPUT.
|
||
ALL ARGS AFTER THE NAME OF THE
|
||
FUNCTION ARE OPTIONAL AND THE
|
||
ROUTINE DEFAULTS ITS OUTPUT TO THE
|
||
4010 SCOPE YOU ARE USING.
|
||
"
|
||
"
|
||
M3D 1 THIS FUNCTION TAKES AN N BY N
|
||
MATRIX AND DOES THE SURFACE PLOT
|
||
AND HIDDEN LINE ELIM. THE VALUES
|
||
OF THE ELEMENTS SHOULD BE FROM
|
||
0 TO 400 AND INTEGERS.
|
||
EXAMPLE
|
||
<SET A ILIST 20 <ILIST 20
|
||
<* 200 <+ 1 <SIN .Y>>>>>
|
||
<M3D .A>$
|
||
"
|
||
"
|
||
M3DSK 1-2 THIS IS THE SAME AS M3D, BUT THE
|
||
OUTPUT GOES TO A FILE. THE
|
||
SECOND ARG IS OPTIONAL AND THE
|
||
DEFAULT FILE IS M3D OUTPUT.
|
||
<M3DSK .A (''F1'' ''F2'' ''DSK'' ''DIR'')
|
||
"
|
||
"
|
||
DSKIMAGE 0-4 THIS FUNCTION WILL DISPLAY
|
||
THE OUTPUT GENERATED BY M3DSK
|
||
OR ANY FILE FOR THAT MATTER.
|
||
THE DEFAULT IS M3D OUTPUT.
|
||
<DSKIMAGE ''F1'' ''F2'' ''DSK'' ''DIR''>
|
||
"
|
||
"
|
||
|
||
CIRCLE 4 This draws a circle with
|
||
center x,y and radius r
|
||
and p pionts in it
|
||
<CIRCLE .X .Y .R .P>.
|
||
|
||
"
|
||
"
|
||
DRAW 2 This draws from where the
|
||
beam is to the coordinents
|
||
given to DRAW. MOVE must be
|
||
called befroe the first DRAW
|
||
because it sets the scope in
|
||
in graphics mode. the co-
|
||
ordinents should be in the
|
||
range of 0 -> 1024
|
||
<DRAW .x .y>
|
||
|
||
"
|
||
"
|
||
ELIPSE 5 THIS WILL DRAW AN ELIPSE
|
||
WITH IT CENTER AT X,Y AND
|
||
SEMI-AXISES A AND B, WITH
|
||
|
||
|
||
|
||
|
||
|
||
|
||
P PIONTS.
|
||
<ELIPSE .X .Y .A .B .P>
|
||
|
||
"
|
||
"
|
||
FNCTG 3-6 This will plot the graph of
|
||
any function of one varible.
|
||
it will auto-scale unless you
|
||
tell it not to.
|
||
<FNCTG .xl .xh .f .scl .hpts .p>
|
||
for example
|
||
<define a(x) <* .x .x>>$
|
||
<FNCTG -1 1 ,a>$ will
|
||
plot a(x) for x=-1 to 1
|
||
with auto scaling.
|
||
<FNCTG -1 1 ,a (800 800)
|
||
(.5 .5) 100>$ will not
|
||
scale for you
|
||
|
||
|
||
"
|
||
"
|
||
LINE 4 THIS FUNCTION WILL DRAW A
|
||
LINE FROM X0,Y0 TO X1,Y1
|
||
,THE COORDINATES SHOULD BE
|
||
IN THE RANGE OF 0 TO 1024.
|
||
<LINE .X0 .Y0 .X1 .Y1>
|
||
|
||
"
|
||
"
|
||
MINIMAX 1 THIS FUNCTION IS USED BY
|
||
FNCTG. GIVEN A VECTOR OR
|
||
LIST IT RETURNS A TWO ELEMENT
|
||
LIST WITH THE MINIMUM AND
|
||
MAXIMUM VALUES OF THE VECTOR.
|
||
<MINIMAX .X>
|
||
|
||
"
|
||
"
|
||
MOVE 2 THIS MOVES THE BEAM OF THE
|
||
COORDINATES GIVEN. IT ALSO
|
||
SET THE SCOPE IN GRAPHICS
|
||
MODE SO IT MUST BE CALLED BEFORE
|
||
DRAW. THE RANGE OF THE
|
||
COORDINATES IS THE SAME AS DRAW
|
||
<MOVE .X .Y>
|
||
|
||
"
|
||
"
|
||
PAGE 0 THIS ERASES THE SCREEN ON
|
||
THE 4010. YOU SHOULD GIVE THE
|
||
SCOPE ABOUT ONE SECOND BEFORE
|
||
DRAWING MORE STUFF.
|
||
<PAGE>
|
||
|
||
"
|
||
"
|
||
PLOTV 2 THIS FUNCTION WILL PLOT
|
||
TWO VECTORS OR LISTS AGAINST
|
||
EACH OTHER. IT MOVES TO THE
|
||
FIRST POINT AND DRAWS TO THE
|
||
REST. AGAIN THE COORDINATES
|
||
SHOULD BE IN THE RANGE OF 0
|
||
TO 1024. THE TWO VECTORS
|
||
MUST BE OF THE SAME LENGTH
|
||
<SET X [1 2 3 4]>$
|
||
<SET Y [2 4 8 16]>$
|
||
<PLOTV .X .Y>$
|
||
|
||
|
||
"
|
||
"
|
||
POINT 2 THIS WILL PLOT A POINT AT
|
||
X,Y. THE COORDINATES
|
||
SHOULD BE IN THE RANGE OF 0
|
||
TO 1024.
|
||
<POINT .X .Y>
|
||
"
|
||
"
|
||
TERMINAL
|
||
THIS IS NOT A FUNTCTION BUT SHOWS YOU HOW
|
||
TO TELL MIGS WHAT TYPE OF TERMINAL YOU ARE USING. WHEN MIGS ASKS
|
||
YOU WHATE TYPE YOU ARE GIVE IT ONE OF THE FOLLOWING CHARACTERS
|
||
FOLLOWED BY A ESC.
|
||
|
||
CHAR. TERMINAL
|
||
..................
|
||
A ARDS OR IMLAC
|
||
G GT42(PDP11-10) LOAD WITH PICTUREBOOK
|
||
T TEKTRONIX
|
||
""
|
||
|
||
|
||
M.I.G.S. DISPLAY COMPILER
|
||
|
||
|
||
THERE IS NOW A USEABLE DISPLAY COMPILER IN
|
||
MIGS. IT WILL ALLOW THE USER TO DO MANY OF THE THINGS THAT REQUIRED THE
|
||
E&S BEFORE. AS WITH MIGS' PRIMATIVES IT WILL SUPPORT IMLACS, ARDS, AND
|
||
TEKTRONICS SCOPES. THE DISPLAY COMPILER IS COMPILED,
|
||
WHICH MEANS IT IS FAST AT THE PRESENTTIME.
|
||
THE COMPILER AND PROCESSOR LETS THE USER CREAT A PICTURE (MCELL),
|
||
ROTATE THEM, TRANSLATE THEM, AND SCALE THEM. SUBPICTURING IS ALLOWED TO
|
||
ANY DEPTH. THE MCELLS CAN BE TWO OR THREE DIMENSIONAL AND WILL BE CLIPPED
|
||
AND PROJECTED AS NEEDED.
|
||
TO USE THE COMPILER AND PROCESSOR FLOAD RRS;MUDDLE INIT. FOLLOW MIGS'
|
||
INSTRUCTIONS TO DEFINE THE TERMINAL THAT YOU ARE USING. NEXT TYPE 'Y'
|
||
WHEN MIGS ASKS IF YOU WANT THE DISPLAY COMPILER. YOU MAY WANT TO FLOAD
|
||
RRS;TEST GRAPHS TO PLAY WITH. THE FUNCTIONS
|
||
THAT YOU NEED TO KNOW ABOUT ARE LISTED BELOW.
|
||
|
||
|
||
FUNCTION ARGS DISCRIPTION
|
||
........ .... ...........
|
||
|
||
MCELL 6 OR MORE THIS FUNCTION CREATS A MCELL (PICTURE) THE
|
||
CALL IS
|
||
<MCELL NAME () () .3D .BLK <-BODY-> >
|
||
NAME IS AN ATOM WHICH IS THE NAME OF THE
|
||
MCELL TO BE CREATED.
|
||
THE TWO LIST ARENT USED YET BUT ARE NEEDED
|
||
THE VALUE OF 3D DETERMINS IF THE MCELL IS
|
||
2 OR 3 DIMENSIONAL. IF .3D IS FALSE THE MCELL
|
||
IS 2D.
|
||
IF .BLK IS TRUE THE MCELL IS BLANKED.
|
||
THE <-BODY-> CAN BE ANY VALID MUDDLE OBJECT
|
||
OR OBECTS. HOPEFULLY THERE SHOULD BE SOME
|
||
MIGS PRIMATIVES IN IT. AT THIS TIME THERE IS
|
||
A KNOWN BUG IN MCELL, IF YOU GET AN ERROR
|
||
YOU WILL PROBABLY HAVE TO RELOAD THE MIGS
|
||
PRIMATIVES. TO DO THIS <TEKGRA-INIT>$,OR IF
|
||
YOU ARE USING AN ARDS <FLOAD ''RRS;ARDGRA >''>$
|
||
|
||
DISP 1 OR MORE THIS FUNCTION WILL DISPLAY A MCELL. THE CALL
|
||
IS <DISP NAME <-XFORMS-> >.
|
||
NAME IS AN ATOM WHICH IS THE NAME OF THE MCELL
|
||
TO BE DISPLAYED.
|
||
THE <-XFORMS-> ARE THE TRANSFORMS THAT YOU WANT
|
||
TO APPLY TO THE MCELL. THEY ARE OPTIONAL.
|
||
|
||
CALL 1 OR MORE THIS FUNCTION CALLS A SUBPICTURE. IT MUST BE
|
||
USED IN THE <-BODY-> OF A CALL TO MCELL.
|
||
<CALL NAME <-XFORMS-> >
|
||
NAME IS AN ATOM WHICH IS THE NAME OF A MCELL
|
||
WHICH IS TO BE USED AS A SUBPICTURE. IT HAD
|
||
BETTER EXIST BY THE TIME YOU DISPLAY THE MCELL
|
||
THAT DID THE CALL.
|
||
|
||
NOW HERE ARE THE TRANSFORMS THAT ARE CURRENTLY AVAILABLE. THEY MUST BE USED
|
||
IN A CALL IN A MCELL OR IN DISP. NOTE MCELL EVALS THE ARGS TO A TRANSFORM,
|
||
BUT NOT THE TRANSFORM ITSELF.SO IF YOU DONT WANT THE ARGS EVALED TILL YOU
|
||
DISPLAY THE MCELL,QUOTE THEM. TRANSFORMS ARE ANY FUNCTION THAT RETURNS AN
|
||
OBJECT OF THE FOLLOWING TYPE. FOR 2D
|
||
#DECL((VALUE)<VECTOR FIX FIX <VECTOR [9 FLOAT>]>>)
|
||
FOR 3D
|
||
#DECL ((VALUE)<VECTOR FIX FIX <VECTOR [16 FLOAT]>) WHERE THE FIRST
|
||
TWO FIXS SHOULD BE 3 FOR 2D, AND 4 FOR 3D. TO TELL IF THE MCELL THAT IS BEING
|
||
DISPLAYED IS 2D OR 3D THE TRANSFORM SHOULD LOOK AT <1 .3DSTK!-DISPCOM>. IF
|
||
IT IS TRUE THEN THE MCELL IS 3D. THE TRANSFORM SYSTEM IS BASED ON HOMOGYNIOUS
|
||
COORDINATES.THE VECTOR TO BE TRANSFORMED IS A ROW VECTOR WHICH IS MULTIPLIED
|
||
BY THE TRANSFORM MATRIX ON THE RIGHT OF THE VECTOR (I.E. V*M).
|
||
|
||
FUNCTION ARGS DISCRIPTION
|
||
........ .... ...........
|
||
|
||
XLATE 2 - 3 THIS FUNCTION TRANSLATES A MCELL.
|
||
<XLATE .X .Y .Z>
|
||
.X IS THE NUMBER OF UNITS TO MOVE IN THE X DIR.
|
||
.Y IS THE NUMBER OF UNITS TO MOVE IN THE Y DIR.
|
||
.Z IS THE NUMBER OF UNITS TO MOVE IN THE Z DIR.
|
||
(INTO THE SCREEN). IT IS OPTIONAL (Z=0) AND IS
|
||
IGNORED IN A 2D MCELL.
|
||
|
||
SCALE 1 - 3 THIS FUNCTION SCALES A MCELL.
|
||
<SCALE .X .Y .Z>
|
||
Y AND Z ARE OPTIONAL AND DEFULT TO .X.
|
||
Z IS IGNORED IN 2D MCELLS.
|
||
|
||
ROTZ 1 THIS FUNCTION WILL ROTATE A MCELL ABOUT THE
|
||
Z AXIS.
|
||
<ROTZ .T>
|
||
.T IS THE ANGLE IN RADIENS. ROTZ IS THE ONLY
|
||
ROTATION THAT CAN BE APPLIED TO A 2D MCELL.
|
||
|
||
ROTX 1 THIS ROTATES AMCELL ABOUT THE X AXIS.
|
||
<ROTX .T>
|
||
.T IS THE ANGLE IN RADIENS.
|
||
|
||
ROTY 1 THIS FUNCTION ROTATES A MCELL ABOUT THE Y AXIS.
|
||
<ROTY .T>
|
||
.T IS THE ANGLE IN RADIENS.
|
||
|
||
|
||
ONE NOTE AND THEN SOME EXAMPLES, THE ORIGEN OF THE COORDINATE SYSTEM
|
||
IS AT THE LOWER LEFT CORNER OF THE SCREEN. THE VISABLE AREA IS BOUNDED
|
||
BY THE RECTANGLE (0,0),(0,1023),(1023,1023),(1023,0).
|
||
|
||
EXAMPLE 1
|
||
|
||
<PAGE>;''CLEAR THE SCREEN''$
|
||
<MCELL TRI () () <> <>
|
||
<MOVE 0 200> <DRAW 141 -141><DRAW -141 -141><DRAW 0 200>>
|
||
;''CREAT A MCELL CALLED TRI THAT HAS A TRIANGLE IN IT. TRI IS A 2D MCELL''$
|
||
<DISP TRI <XLATE 500 500>>;''DISPLAY IT AT THE CENTER OF THE SCREEN.''$
|
||
|
||
EXAMPLE 2
|
||
|
||
<MCELL NTRI () () <> <>
|
||
<CALL TRI <ROTZ </ 3.14159 6>> <XLATE 500 500>> >
|
||
;''MAKE A NEW MCELL CALLED NTRI THAT HAS THE TRIANGLE ROTATED 30 DEGREES
|
||
AND MOVED TO THE CENTER OF THE SCREEN.''$
|
||
<DISP NTRI>;''LETS HAVE A LOOK AT IT.''$
|
||
|
||
EXAMPLE 3
|
||
<FLOAD ''RRS;TEST GRAPHS''>;''GET SOME GOODIES TO PLAY WITH''$
|
||
<MCELL C () () 3D <>
|
||
<CUBE -50 -50 -50 50 50 50>>;''A CUBE AROUND THE ORIGEN.''$
|
||
<PAGE>$
|
||
<DISP C>;'' LETS HAVE A LOOK AT IT.''
|
||
<DISP C <ROTY </ 3.14159 6>> <ROTX </ 3.14159 4>> <XLATE 500 500 0>>
|
||
;''ROTATE THE CUBE 30 DEGREES ABOUT Y AND 45 DEGREES ABOUT X, THEN
|
||
MOVE TO THE CENTER OF THE SCREEN''$
|
||
|
||
EXAMPLE 4
|
||
|
||
<MCELL TRIP () () 3D <>
|
||
<REPEAT ( (8PI <* 8 3.14159>)
|
||
(T .8PI)
|
||
(DT </ 50 .8PI>)
|
||
(SF </ 500 .8PI>))
|
||
<CALL C <ROTZ <- .T>>
|
||
<XLATE <* .SF .T <COS .T>>
|
||
<* .SF .T <SIN .T>>
|
||
<- 10000 <* 20 .SF .T>> >>
|
||
<COND (<L? <SET T <- .T .DT>> 0> <RETURN T>)> >>$
|
||
<PAGE>
|
||
<DISP TRIP <XLATE 500 500>>;''TRY IT YOU'LL LIKE IT''$
|
||
|
||
|
||
"
|
||
"
|
||
PARAG 4-8 THIS FUNCTION WILL PRODUCE A
|
||
PARAMETRIC PLOT OF TWO
|
||
FUNCTIONS.
|
||
<PARAG .TL .TH FOO BAR
|
||
.P .MODE .SCL .XYDIS>
|
||
TL IS THE LOWWER LIMIT OF THE
|
||
THE PARAMETER, AND TH IS THE
|
||
HIGH LIMIT. FOO AND BAR
|
||
ARE THE ATOMS WHO ARE THE NAMES
|
||
TWO FUNCTIONS TO BE PLOTED. THE
|
||
REST OF THE ARGS. ARE OPTIONAL.
|
||
P IS THE NUMBER OF POINTS TO BE
|
||
PLOTED. MODE CONTROLS THE SCAL ING,
|
||
IF .MODE =''SAS'' (THE DEFALT)
|
||
PARAG WILL SCALE ONE AXIS TO THE
|
||
MAXIMUM SIZE ON THE SCREEN.
|
||
IF .MODE=''DAS'' PARAG WILL SCALE
|
||
BOTH X AND Y TO FULL SCREEN.
|
||
THIS HOWEVER, DOESNT PRESERV
|
||
ANGLES. IF .MODE ''NAS'' PARAG
|
||
DOESNT DO ANY AUTOSCALING, YOU
|
||
YOU HAVE TO. SCL IS A TWO
|
||
ELEMENT LIST WITH THE X AND Y
|
||
SCALES IN IT. XYDIDIS IS A TWO
|
||
ELEMENT LIST WITH THE X AND Y
|
||
DISPLACEMENTS IN IT.
|
||
EX.
|
||
<PARAG 0 6.3 SIN COS>$
|
||
")>
|
||
|
||
|
||
<SET INFOT ![-1 -1 0 15 5 6 4 7 8 9 2 3 -1 10 11 -1 12 13
|
||
-1 14 -1 1 -1 -1 16 17!]>
|
||
<ENDPACKAGE>
|
||
|