1
0
mirror of https://github.com/PDP-10/its.git synced 2026-02-16 21:01:16 +00:00
Files
PDP-10.its/src/rrs/mtprim.urs010
Lars Brinkhoff 6307208718 Extract archive.
2021-02-09 20:44:08 +01:00

182 lines
4.5 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<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 <>>