Machine-Independent MDL for TOPS-20 and VAX.
[pdp10-muddle.git] / mim / development / mim / vax / vs / foo.mud
1 <USE "VS100">
2 <INCLUDE "VSUTYPES" "VSUDEFS">
3
4 <SETG MENU-STUFF '["FOO" "BAR" "BLETCH" "MUMBLE"]>
5
6 <DEFINE BAR (CH "AUX" EVENT)
7   <REPEAT (OX OY OLD)
8      <BUFOUT .CH>
9      <COND (<TYPE? <SET EVENT <CHANNEL-OP .CH READ-BYTE-IMMEDIATE>> CHARACTER>
10             <CHANNEL-OP .CH WRITE-BUFFER .EVENT>)
11            (<TYPE? .EVENT FIX>)
12            (<TYPE? .EVENT WINDOW-EVENT>
13             <RECYCLE-EVENTS .EVENT>)
14            (<==? <ME-KIND .EVENT> ,ME-LEFT-PRESSED>
15             <SET OLD <CHANNEL-OP .CH MOUSE-MOVE? ,MOUSE-LEFT>>
16             <SET OX <ME-X .EVENT>>
17             <SET OY <ME-Y .EVENT>>
18             <RECYCLE-EVENTS .EVENT>
19             <REPEAT ()
20                <COND (<TYPE? <SET EVENT <CHANNEL-OP .CH READ-BYTE-IMMEDIATE>>
21                              MOUSE-EVENT>
22                       <COND (<OR <==? <ME-KIND .EVENT> ,ME-MOVED>
23                                  <==? <ME-KIND .EVENT> ,ME-LEAVE-WINDOW>>
24                              <CHANNEL-OP .CH DRAW-LINE ,GX-XOR .OX .OY
25                                          <SET OX <ME-X .EVENT>>
26                                          <SET OY <ME-Y .EVENT>>>
27                              <RECYCLE-EVENTS .EVENT>)
28                             (<==? <ME-KIND .EVENT> ,ME-LEFT-RELEASED>
29                              <RECYCLE-EVENTS .EVENT>
30                              <CHANNEL-OP .CH MOUSE-MOVE? .OLD>
31                              <RETURN>)
32                             (<==? <ME-KIND .EVENT> ,ME-ENTER-WINDOW>
33                              <SET OX <ME-X .EVENT>>
34                              <SET OY <ME-Y .EVENT>>
35                              <RECYCLE-EVENTS .EVENT>)
36                             (T
37                              <RECYCLE-EVENTS .EVENT>)>)
38                      (<TYPE? .EVENT WINDOW-EVENT>
39                       <RECYCLE-EVENTS .EVENT>)>>)
40            (T
41             <RECYCLE-EVENTS .EVENT>)>>>
42
43 <DEFINE FOO (CH "AUX" EVENT MW)
44    <REPEAT ()
45       <BUFOUT .CH>
46       <COND (<TYPE? <SET EVENT <CHANNEL-OP .CH READ-BYTE-IMMEDIATE>> CHARACTER>
47              <CHANNEL-OP .CH WRITE-BUFFER .EVENT>)
48             (<TYPE? .EVENT FIX>)
49             (<TYPE? .EVENT WINDOW-EVENT>
50              <RECYCLE-EVENTS .EVENT>)
51             (<==? <ME-KIND .EVENT> ,ME-LEFT-PRESSED>
52              <RECYCLE-EVENTS .EVENT>
53              <PROG (CC H (CY 0))
54                 <SET CC <CHANNEL-OP .CH MAKE-TEMP-WINDOW 
55                                     <* 4 <SET H <CHANNEL-OP .CH LINE-HEIGHT>>>
56                                     60>>
57                 <MAPF <>
58                       <FUNCTION (STR)
59                          <CHANNEL-OP .CC MAKE-MENU-WINDOW .H 60 0 .CY .STR>
60                          <SET CY <+ .CY .H>>>
61                       ,MENU-STUFF>
62                 <CHANNEL-OP .CC SELECT-MENU-WINDOW>
63                 <REPEAT (KIND (CWIND NULL))
64                    <COND (<TYPE? <SET EVENT <CHANNEL-OP .CC READ-BYTE-IMMEDIATE>>
65                                  MOUSE-EVENT>
66                           <COND (<==? <SET KIND <ME-KIND .EVENT>>
67                                      ,ME-ENTER-WINDOW>
68                                  <COND (<TYPE? <ME-SUBWINDOW .EVENT> 
69                                                MENU-WINDOW>
70                                         <CHANNEL-OP .CC INVERT-MENU-WINDOW
71                                                     <ME-SUBWINDOW .EVENT>>
72                                         <SET CWIND
73                                              <MW-OBJ <ME-SUBWINDOW .EVENT>>>)>)
74                                 (<==? .KIND ,ME-LEAVE-WINDOW>
75                                  <COND (<TYPE? <ME-SUBWINDOW .EVENT>
76                                                MENU-WINDOW>
77                                         <CHANNEL-OP .CC INVERT-MENU-WINDOW
78                                                     <ME-SUBWINDOW .EVENT>>
79                                         <SET CWIND <>>)>)
80                                 (<==? .KIND ,ME-LEFT-RELEASED>
81                                  <CLOSE .CC>
82                                  <PRINT .CWIND>
83                                  <RECYCLE-EVENTS .EVENT>
84                                  <RETURN>)>)>
85                    <RECYCLE-EVENTS .EVENT>>>)
86             (T
87              <RECYCLE-EVENTS .EVENT>)>>>