Machine-Independent MDL for TOPS-20 and VAX.
[pdp10-muddle.git] / mim / development / mim / vax / mimlib / redef.mud
diff --git a/mim/development/mim/vax/mimlib/redef.mud b/mim/development/mim/vax/mimlib/redef.mud
new file mode 100644 (file)
index 0000000..aea5db0
--- /dev/null
@@ -0,0 +1,67 @@
+<PACKAGE "REDEF">
+
+<USE "TTY">
+
+<ENTRY REDEF-HANDLER>
+
+<COND (<NOT <GASSIGNED? REDEF-THIS-CHAN>>
+       <SETG REDEF-THIS-CHAN %<>>
+       <SETG REDEF? %<>>)>
+
+<DEFINE ERR-REDEF (IGNORE ERR-FRM "TUPLE" ARGS "AUX" NAME CHAR
+                  (FLOAD-CHAN <COND (<ASSIGNED? LOAD-CHANNEL> .LOAD-CHANNEL)>)
+                  (INCHAN ,DEBUG-CHANNEL) (OUTCHAN .INCHAN))
+  #DECL ((ERR-FRM) FRAME (NAME) STRING (CHAR) CHARACTER 
+        (FLOAD-CHAN) <OR CHANNEL FALSE> (INCHAN OUTCHAN) <SPECIAL ANY>)
+  <COND (<AND <G=? <LENGTH .ARGS> 2>
+             <==? <2 .ARGS>
+                  ALREADY-DEFINED-ERRET-NON-FALSE-TO-REDEFINE!-ERRORS>>
+        <COND (<AND .FLOAD-CHAN <==? ,REDEF-THIS-CHAN .FLOAD-CHAN>>
+               <DISMISS ,REDEF? .ERR-FRM>)>
+        <SET NAME <SPNAME <1 .ARGS>>>
+        <PRINTSTRING "Redefine ">
+        <PRINTSTRING .NAME>
+        <PRINTSTRING " ? ">
+        <CHANNEL-OP .INCHAN SET-ECHO-MODE T>
+        <REPEAT ()
+          <SET CHAR <TYI>>
+           <COND (<MEMQ .CHAR "YyTt"> <CRLF> <DISMISS T .ERR-FRM>)
+                (<MEMQ .CHAR "NnFf"> <CRLF> <DISMISS %<> .ERR-FRM>)
+                (<==? .CHAR !\^>
+                 <CRLF>
+                 <SETG REDEF-THIS-CHAN .FLOAD-CHAN>
+                 <SETG REDEF? %<>>
+                 <DISMISS %<> .ERR-FRM>)
+                (<==? .CHAR !\*>
+                  <CRLF>
+                 <SETG REDEF-THIS-CHAN .FLOAD-CHAN>
+                 <SETG REDEF? T>
+                 <DISMISS T .ERR-FRM>)
+                 (<MEMQ .CHAR "Rr">
+                  <CRLF>
+                  <SET REDEFINE T>
+                  <DISMISS T .ERR-FRM>)
+                (<==? .CHAR !\?>
+                 <PRINTSTRING "
+       T or Y  redefine function
+       F or N  don't redefine function
+       R       redefine function and <SET REDEFINE T>
+       *       redefine the rest of the functions from this file
+       ^       don't redefine any more functions from this file
+       ?       print this cruft
+Redefine ">
+                 <PRINTSTRING .NAME>
+                 <PRINTSTRING " ? ">)
+                (ELSE
+                 <CHANNEL-OP .OUTCHAN ERASE-CHAR>
+                 <CHANNEL-OP .OUTCHAN IMAGE-OUT %<ASCII 7>>
+                 <CHANNEL-OP .OUTCHAN SET-IMAGE-MODE %<>>
+                 <CHANNEL-OP .OUTCHAN PAGE-X
+                             <+ 12 <LENGTH .NAME>>>)>>)>>
+
+<COND (<NOT <FEATURE? "COMPILER">>
+       <COND (<GASSIGNED? REDEF-HANDLER> <OFF ,REDEF-HANDLER>)>
+       <SETG REDEF-HANDLER <HANDLER "ERROR" ,ERR-REDEF 1>>
+       <ON ,REDEF-HANDLER>)>
+
+<ENDPACKAGE>