mirror of
https://github.com/PDP-10/its.git
synced 2026-02-16 21:01:16 +00:00
182 lines
4.5 KiB
Plaintext
182 lines
4.5 KiB
Plaintext
<SET L-NO-MAGIC T>
|
||
|
||
|
||
<PACKAGE "MTPRIM">
|
||
<ENTRY DRAW HARDCOPY LINE MIGSSEND MOVE PAGE POINT PLOTV
|
||
SETORG TRANS PLOTVDSK>
|
||
<USE "DISPLA">
|
||
<USE "SMCELLS">
|
||
|
||
<BLOCK (<GET MIGS OBLIST> <ROOT>)>
|
||
XORG YORG
|
||
<ENDBLOCK>
|
||
|
||
<BLOCK (<GET DISPCOM OBLIST> <ROOT>)>
|
||
COMSWITCH
|
||
<ENDBLOCK>
|
||
|
||
<BLOCK (!.OBLIST <GET MIGS OBLIST> <GET DISPCOM OBLIST>)>
|
||
|
||
<GDECL (XORG YORG) FIX>
|
||
|
||
<SETG XORG 0>
|
||
|
||
<SETG YORG 0>
|
||
|
||
<DEFINE SETORG ("OPTIONAL" (X 0) (Y 0))
|
||
#DECL ((X Y) <OR FIX FLOAT>
|
||
(VALUE) LIST
|
||
(COMSWITCH)<SPECIAL ANY>)
|
||
<COND (<BOUND? COMSWITCH> <APPLY ,STRG .X .Y> ())
|
||
(T (<SETG XORG <FIX .X>> <SETG YORG <FIX .Y>>))>>
|
||
|
||
<DEFINE MIGSSEND ("TUPLE" LIST)
|
||
#DECL ((LIST) <TUPLE [REST FIX]> (VALUE) ATOM)
|
||
<MAPF <> ,IMAGE .LIST>
|
||
,NULL>
|
||
|
||
<DEFINE PLOTV (X Y "TUPLE" Z)
|
||
#DECL ((X Y) <OR LIST VECTOR UVECTOR>
|
||
(VALUE) ATOM
|
||
(Z) <TUPLE [REST <OR FIX FLOAT>]>
|
||
(COMSWITCH)<SPECIAL ANY>)
|
||
<COND (<BOUND? COMSWITCH> <APPLY ,PV .X .Y !.Z>)
|
||
(T
|
||
<COND (<TYPE? .X LIST>
|
||
<PROG ((X .X)(Y .Y))
|
||
#DECL ((X Y) <LIST [REST FIX]>)
|
||
<COND (<NOT <==? <LENGTH .X> <LENGTH .Y>>>
|
||
<ERROR "LENGTHS NOT EQUAL" "PLOTV">)>
|
||
<IMAGE 29>
|
||
<MAPF <>
|
||
#FUNCTION ((XE YE)
|
||
#DECL ((XE YE) FIX)
|
||
<MAPF <> ,IMAGE <TRANS .XE .YE>>)
|
||
.X
|
||
.Y> >)
|
||
(<TYPE? .X VECTOR>
|
||
<PROG ((X .X) (Y .Y))
|
||
#DECL ((X Y) <VECTOR [REST FIX]>)
|
||
<COND (<NOT <==? <LENGTH .X> <LENGTH .Y>>>
|
||
<ERROR "LENGTHS NOT EQUAL" "PLOTV">)>
|
||
<IMAGE 29>
|
||
<MAPF <>
|
||
#FUNCTION ((XE YE)
|
||
#DECL ((XE YE) FIX)
|
||
<MAPF <> ,IMAGE <TRANS .XE .YE>>)
|
||
.X
|
||
.Y> >)
|
||
(T
|
||
<PROG ((X .X)(Y .Y))
|
||
#DECL ((X Y) <UVECTOR [REST FIX]>)
|
||
<COND (<NOT <==? <LENGTH .X> <LENGTH .Y>>>
|
||
<ERROR "LENGTHS NOT EQUAL" "PLOTV">)>
|
||
<IMAGE 29>
|
||
<MAPF <>
|
||
#FUNCTION ((XE YE)
|
||
#DECL ((XE YE) FIX)
|
||
<MAPF <> ,IMAGE <TRANS .XE .YE>>)
|
||
.X
|
||
.Y> >)>
|
||
<IMAGE 13>)>
|
||
,NULL>
|
||
|
||
<DEFINE HARDCOPY ()
|
||
#DECL ((COMSWITCH)<SPECIAL ANY>)
|
||
<COND (<BOUND? COMSWITCH> <APPLY ,HC>)
|
||
(T <MIGSSEND 27 23 7 7>)>
|
||
,NULL>
|
||
|
||
<DEFINE PAGE ()
|
||
#DECL ((COMSWITCH)<SPECIAL ANY>)
|
||
<COND (<BOUND? COMSWITCH> <APPLY ,PG>)
|
||
(T <MIGSSEND 27 12>)>
|
||
,NULL>
|
||
|
||
<DEFINE MOVE (X Y "TUPLE" Z)
|
||
#DECL ((X Y) <OR FIX FLOAT>
|
||
(Z) <TUPLE [REST <OR FIX FLOAT>]>
|
||
(COMSWITCH)<SPECIAL ANY>
|
||
(VALUE) ATOM)
|
||
<COND (<BOUND? COMSWITCH> <APPLY ,MV .X .Y !.Z>)
|
||
(T <MIGSSEND 29 !<TRANS <FIX .X> <FIX .Y>!>>)>
|
||
,NULL>
|
||
|
||
<DEFINE DRAW (X Y "TUPLE" Z)
|
||
#DECL ((X Y) <OR FIX FLOAT>
|
||
(Z) <TUPLE [REST <OR FIX FLOAT>]>
|
||
(COMSWITCH)<SPECIAL ANY>
|
||
(VALUE) ATOM)
|
||
<COND (<BOUND? COMSWITCH> <APPLY ,DR .X .Y !.Z>)
|
||
(T <MIGSSEND !<TRANS <FIX .X> <FIX .Y>>>)>
|
||
,NULL>
|
||
|
||
<DEFINE LINE (X0 Y0 X1 Y1 "TUPLE" Z)
|
||
#DECL ((X0 Y0 X1 Y1) <OR FIX FLOAT>
|
||
(Z) <TUPLE [REST <OR FIX FLOAT>]>
|
||
(COMSWITCH)<SPECIAL ANY>
|
||
(VALUE) ATOM)
|
||
<COND (<BOUND? COMSWITCH>
|
||
<APPLY ,LN .X0 .Y0 .X1 .Y1 !.Z>)
|
||
(T
|
||
<MIGSSEND 29
|
||
!<TRANS <FIX .X0> <FIX .Y0>!>
|
||
!<TRANS <FIX .X1> <FIX .Y1>!>
|
||
13>)>
|
||
,NULL>
|
||
|
||
<DEFINE POINT (X Y "TUPLE" Z "AUX" D)
|
||
#DECL ((X Y) <OR FIX FLOAT>
|
||
(Z) <TUPLE [REST <OR FIX FLOAT>]>
|
||
(COMSWITCH)<SPECIAL ANY>
|
||
(D) <LIST [4 FIX]>
|
||
(VALUE) ATOM)
|
||
<COND (<BOUND? COMSWITCH> <APPLY ,PT .X .Y !.Z>)
|
||
(T
|
||
<IMAGE 29>
|
||
<MIGSSEND !<SET D <TRANS <FIX .X> <FIX .Y>>>>
|
||
<MIGSSEND !.D 13>)>
|
||
,NULL>
|
||
|
||
<DEFINE TRANS (X1 Y1
|
||
"AUX" LX
|
||
LY
|
||
HX
|
||
HY
|
||
(X <+ .X1 ,XORG>)
|
||
(Y <+ .Y1 ,YORG>))
|
||
#DECL ((X Y X1 Y1 LX LY HX HY) FIX (VALUE) <LIST [4 FIX]>)
|
||
<SET HX <FIX </ .X 32>>>
|
||
<SET HY <FIX </ .Y 32>>>
|
||
<SET LX <- .X <* .HX 32>>>
|
||
<SET LY <- .Y <* .HY 32>>>
|
||
<SET HY <+ .HY 32>>
|
||
<SET LY <+ .LY 96>>
|
||
<SET HX <+ .HX 32>>
|
||
<SET LX <+ .LX 64>>
|
||
(.HY .LY .HX .LX)>
|
||
|
||
<DEFINE PLOTVDSK (X Y OUTCHAN)
|
||
#DECL ((X Y) <OR LIST VECTOR UVECTOR>
|
||
(VALUE) STRING
|
||
(OUTCHAN) <SPECIAL CHANNEL>)
|
||
<COND (<NOT <==? <LENGTH .X> <LENGTH .Y>>>
|
||
<ERROR "LENGTHS NOT EQUAL">)>
|
||
<PRINC <ASCII 29>>
|
||
<MAPF <>
|
||
#FUNCTION ((XE YE)
|
||
#DECL ((XE YE) FIX)
|
||
<MAPF <>
|
||
#FUNCTION ((L)
|
||
#DECL ((L) FIX)
|
||
<PRINC <ASCII .L> .OUTCHAN>)
|
||
<TRANS .XE .YE>>)
|
||
.X
|
||
.Y>
|
||
"DONE">
|
||
|
||
<ENDBLOCK>
|
||
|
||
<ENDPACKAGE>
|
||
|
||
<SET L-NO-MAGIC <>>
|
||
|
||
|