Machine-Independent MDL for TOPS-20 and VAX.
[pdp10-muddle.git] / mim / development / mim / vax / nvs / foo.mud
diff --git a/mim/development/mim/vax/nvs/foo.mud b/mim/development/mim/vax/nvs/foo.mud
new file mode 100644 (file)
index 0000000..71418f4
--- /dev/null
@@ -0,0 +1,87 @@
+<USE "VS100">
+<INCLUDE "VSUTYPES" "VSUDEFS">
+
+<SETG MENU-STUFF '["FOO" "BAR" "BLETCH" "MUMBLE"]>
+
+<DEFINE BAR (CH "AUX" EVENT)
+  <REPEAT (OX OY OLD)
+     <BUFOUT .CH>
+     <COND (<TYPE? <SET EVENT <CHANNEL-OP .CH READ-BYTE-IMMEDIATE>> CHARACTER>
+           <CHANNEL-OP .CH WRITE-BUFFER .EVENT>)
+          (<TYPE? .EVENT FIX>)
+          (<TYPE? .EVENT WINDOW-EVENT>
+           <RECYCLE-EVENTS .EVENT>)
+          (<==? <ME-KIND .EVENT> ,ME-LEFT-PRESSED>
+           <SET OLD <CHANNEL-OP .CH MOUSE-MOVE? ,MOUSE-LEFT>>
+           <SET OX <ME-X .EVENT>>
+           <SET OY <ME-Y .EVENT>>
+           <RECYCLE-EVENTS .EVENT>
+           <REPEAT ()
+              <COND (<TYPE? <SET EVENT <CHANNEL-OP .CH READ-BYTE-IMMEDIATE>>
+                            MOUSE-EVENT>
+                     <COND (<OR <==? <ME-KIND .EVENT> ,ME-MOVED>
+                                <==? <ME-KIND .EVENT> ,ME-LEAVE-WINDOW>>
+                            <CHANNEL-OP .CH DRAW-LINE ,GX-XOR .OX .OY
+                                        <SET OX <ME-X .EVENT>>
+                                        <SET OY <ME-Y .EVENT>>>
+                            <RECYCLE-EVENTS .EVENT>)
+                           (<==? <ME-KIND .EVENT> ,ME-LEFT-RELEASED>
+                            <RECYCLE-EVENTS .EVENT>
+                            <CHANNEL-OP .CH MOUSE-MOVE? .OLD>
+                            <RETURN>)
+                           (<==? <ME-KIND .EVENT> ,ME-ENTER-WINDOW>
+                            <SET OX <ME-X .EVENT>>
+                            <SET OY <ME-Y .EVENT>>
+                            <RECYCLE-EVENTS .EVENT>)
+                           (T
+                            <RECYCLE-EVENTS .EVENT>)>)
+                    (<TYPE? .EVENT WINDOW-EVENT>
+                     <RECYCLE-EVENTS .EVENT>)>>)
+          (T
+           <RECYCLE-EVENTS .EVENT>)>>>
+
+<DEFINE FOO (CH "AUX" EVENT MW)
+   <REPEAT ()
+      <BUFOUT .CH>
+      <COND (<TYPE? <SET EVENT <CHANNEL-OP .CH READ-BYTE-IMMEDIATE>> CHARACTER>
+            <CHANNEL-OP .CH WRITE-BUFFER .EVENT>)
+           (<TYPE? .EVENT FIX>)
+           (<TYPE? .EVENT WINDOW-EVENT>
+            <RECYCLE-EVENTS .EVENT>)
+           (<==? <ME-KIND .EVENT> ,ME-LEFT-PRESSED>
+            <RECYCLE-EVENTS .EVENT>
+            <PROG (CC H (CY 0))
+               <SET CC <CHANNEL-OP .CH MAKE-TEMP-WINDOW 
+                                   <* 4 <SET H <CHANNEL-OP .CH LINE-HEIGHT>>>
+                                   60>>
+               <MAPF <>
+                     <FUNCTION (STR)
+                        <CHANNEL-OP .CC MAKE-MENU-WINDOW .H 60 0 .CY .STR>
+                        <SET CY <+ .CY .H>>>
+                     ,MENU-STUFF>
+               <CHANNEL-OP .CC SELECT-MENU-WINDOW>
+               <REPEAT (KIND (CWIND NULL))
+                  <COND (<TYPE? <SET EVENT <CHANNEL-OP .CC READ-BYTE-IMMEDIATE>>
+                                MOUSE-EVENT>
+                         <COND (<==? <SET KIND <ME-KIND .EVENT>>
+                                    ,ME-ENTER-WINDOW>
+                                <COND (<TYPE? <ME-SUBWINDOW .EVENT> 
+                                              MENU-WINDOW>
+                                       <CHANNEL-OP .CC INVERT-MENU-WINDOW
+                                                   <ME-SUBWINDOW .EVENT>>
+                                       <SET CWIND
+                                            <MW-OBJ <ME-SUBWINDOW .EVENT>>>)>)
+                               (<==? .KIND ,ME-LEAVE-WINDOW>
+                                <COND (<TYPE? <ME-SUBWINDOW .EVENT>
+                                              MENU-WINDOW>
+                                       <CHANNEL-OP .CC INVERT-MENU-WINDOW
+                                                   <ME-SUBWINDOW .EVENT>>
+                                       <SET CWIND <>>)>)
+                               (<==? .KIND ,ME-LEFT-RELEASED>
+                                <CLOSE .CC>
+                                <PRINT .CWIND>
+                                <RECYCLE-EVENTS .EVENT>
+                                <RETURN>)>)>
+                  <RECYCLE-EVENTS .EVENT>>>)
+           (T
+            <RECYCLE-EVENTS .EVENT>)>>>