diff --git a/Makefile b/Makefile index 9047a8b0..ab73af3e 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ include conf/network SRC = system syseng sysen1 sysen2 sysen3 sysnet kshack dragon channa \ midas _teco_ emacs emacs1 rms klh syshst sra mrc ksc eak gren \ bawden _mail_ l lisp libdoc comlap lspsrc nilcom rwk chprog rg \ - inquir acount gz sys decsys ecc alan sail kcc kcc_sy c games archy + inquir acount gz sys decsys ecc alan sail kcc kcc_sy c games archy dcp DOC = info _info_ sysdoc sysnet syshst kshack _teco_ emacs emacs1 c kcc chprog BIN = sys2 device emacs _teco_ lisp liblsp alan inquir sail comlap c decsys \ moon diff --git a/build/build.tcl b/build/build.tcl index 5edd75ee..91a2dad5 100644 --- a/build/build.tcl +++ b/build/build.tcl @@ -292,6 +292,7 @@ respond ":EJ" "\033xgenerate\033emacs;delim\033emacs1;delim\r" respond ":EJ" "\033xgenerate\033emacs;dired\033emacs1;dired\r" respond ":EJ" "\033xgenerate\033emacs;doclsp\033emacs1;doclsp\r" respond ":EJ" "\033xgenerate\033emacs;docond\033emacs1;docond\r" +respond ":EJ" "\033xgenerate\033emacs;env\033dcp;eenv\r" respond ":EJ" "\033xgenerate\033emacs;elisp\033emacs1;elisp\r" respond ":EJ" "\033xgenerate\033emacs;info\033emacs1;info\r" respond ":EJ" "\033xgenerate\033emacs;kbdmac\033emacs1;kbdmac\r" diff --git a/src/dcp/eenv.130 b/src/dcp/eenv.130 new file mode 100644 index 00000000..7fbf1626 --- /dev/null +++ b/src/dcp/eenv.130 @@ -0,0 +1,445 @@ +!~Filename~:! !Emacs environment for DCP, SOLEY, BARMAR, HOBBIT, STANZE ! +EENV + +!& Setup EENV Library:! !S Setup the local environment.! + + !* Set random flags ! + + 1u Display_Matching_Paren  !* For balancing parens ! + 1m.v Tags_Find_File  !* Make ^R Find Tag create ! + !* a new buffer ! + 65m.v Fill_Column  !* Set fill column to 65 ! + -1 fs ^h print  !* Overstrike on terminals which ! + !* can do it ! + + "*5+1:F..D| !* Treat " like |! + `*5+1:F..D' !* Treat ` like '! + ,*5+1:F..D' !* Treat , like '! + [*5+1:F..D( !* Treat [ like (! + ]*5+1:F..D) !* Treat ] like )! + + +!* Bind some keys ! + +0 u:.x() !* C-X C-E too dangerous. ! + !* Normally bound to ^R Edit File. ! +m.m ^R_LEDIT_Zap_DEFUN_to_LISP u...L !* C-M-L does M-Z C-X Z ! +m.m Comment_Lisp_Text  u..J !* M-J comments paragraph ! +m.m Uncomment_Lisp_Text  u...J !* C-M-J undoes M-J ! + +m.m ^R_Select_Buffer  u:.x() !* buffer editor (from TMACS)! +m.m ^R_Draw_Vertical_Line  u..| !* Flash ! +m.m ^R_Buffer_Graph  u..+ !* and more flash ! +m.m ^R_Indent_Relative  u..I !* C-U C-I will give the standard ! + !* M-I macro ! +m.m ^R_What_Lossage  u:.x(Y) !* C-X Y lists last 60 chars typed ! +m.m Compile  u. !* Control-epsilon will compile ! + !* buffer according to mode. ! +m.m ^R_Auto-Fill_Space  u.._ !* put auto fill space on meta ! + !* space so we can always use it! +@:i..& -1-(fs ^h print)fs ^h printw& !* meta backspace is what is in there ! + +m.m Save_All_Files  u. !* attach Save All Files ! + !* to ctrl-top-b ! + +m.m ^R_Buffer_Not_Modified  u..` !* M-` says this buffer isn't ! + !* modified. ! + +m.m Soley's_Meta_Close  u..) !* Multics thing ! +m.m Soley's_Meta_Open  u..( !* More Multics ! + m.m Forgot_Open_Paren  u.. !* puts open paren before last sexp! + m.m Valret_Region  u..! !* valret region on meta excl ! + m.m Valret  u...! !* (valret (read)) on c-m-excl! + m.m Comout  u:.x() !* does a comout. Be careful ! + m.m Read_Eval_Redisplay  u:.x(î) !* C-X ! + m.m Eval_Lisp_Form  u..î !* META- ! + m.m Eval_Lisp_Form  u...M !* sigh. M-C-M! +m(m.m Add_NIL_to_M-X_Compile) + + + +!XUNAME startup:! !C Do the things that are conditional on XUNAME! + + !* Conditionalize things for specific terminals ! + + !* On non-meta keyboards, allow Alt 1 2 to mean an arg of 12.! + FS %TOFCI"E + M.M ^R_Autoarg[0 460.-1[1 + 10< Q0,%1^ FS ^R_CMAC> Q0U..- + ]1 ]0' + + 3 fs echolines  !* three echo lines, punt terminal ! + fs %TOSAI "N !* If we can print SAIL ! + 1 fs SAIL' !* do so. ! + +fs xuname -(f6DCP)"e + m(m.m Load_Library ) MODLIN  + ' + +fs xuname -(F6SOLEY)"e + m(m.m Load_Library ) BABYL  !* BABYL is better (than RMAIL)! + ft BABYL +  + m.m Babyl  u:.x(R) !* Don't want RMAIL, want Babyl! + ' + +fs xuname -(F6MERMAN)"e !* start up for MERMAN! + 1 m.v Inhibit_Help_Messages  + m(m.m Load_Library ) SORT  + m(m.m Load_Library ) MODLIN  + m(m.m Load_Library ) SENDS  + m(m.m Load_Library ) VT52  + m(m.m Load_Library ) JOURNAL  + m(m.m Load_Library ) BABYL  m.m Babyl  u:.x(R) + ' + + fs %tosai"n :i*, m(m.m ^R_Set_My_Window_Separator)' + "# + fs xuname-(f6DCP)"e + :i*-, m(m.m ^R_Set_My_Window_Separator)' + "# :i*:, m(m.m ^R_set_My_Window_Separator)'' + +fs xuname -(f6DCP )"n !* If we are not DCP ! +fs xuname -(f6MERMAN)"n !* and if not MERMAN ! + m.m Multics_C-T  u.T !* Multics control T ! + m.m Multics_M-T  u..T !* Multics meta T ! + m.m ^A_Indent_for_LISP  u..I !* ^A before indent ! + m.m Insert_File  u:.X(I) !* goes on C-X I ! + '' + + + +!Setup clock display:! !C does just that! + 0[0 + fs xuname -(f6 SOLEY )"e 1u0 ' + fs xuname -(f6 STANZE)"e 1u0 ' + fs xuname -(f6 BARMAR)"e 1u0 ' + (fs height-60)"e + (fs width-84)"e + (fs %tosai)"n 0u0 !* punt if LISPM! + ''' + q0"n + f[bbind + g(fs clk macro) 0j + @i&f[bbind eg -2d0l-5k-4di_0l0,.k 2ci: + hxEditor_Type f]bbind 1fs mode ch + & + [1 hx1 q1fs clk macro ]1 + hk + m(fs clk macro) + 1[1 fs ospeed"n fs ospeed-301"l 3u1 '' + q1*60*60fs clk interval ]1 + f]bbind + ' + ]0 + + + +!Comment Lisp Text:! !C Comments current paragraph by inserting semicolons.! +-:s  +î "e bj ' !* search backwards for ^L or 2 CRLF's -- if not found, ! + !* jump to top. Ridiculous quoting needed since ! + !* redundant CRLF's are compressed. ! +@f + [a !* look forward for first character which is not a CRLF ! +qa j !* or ^L and put in q-register A, then jump there ! + +:s "e zj ' !* search forward for ^L or 2 CRLF's ! + !* if not found, jump to bottom ! +-@f + [b ub !* look backwards for first character not a CRLF or ^L, ! + !* put in q-register B, and jump there ! +fs_z-qb f[ vz !* set virtual end of buffer to current point ! +qa j !* now go back to beginning of paragraph ! +<.-z; !* do until we reach end of paragraph ! + i;;;_ l> !* insert two semis and a space and move to next line ! +qa+3 j  !* and leave us at the start of the paragraph ! + +!Uncomment Lisp Text:! !C Removes semicolons inserted by Comment Lisp Text.! +-:s  !* This macro works just like Comment Lisp Text ! +î "e bj ' !* except that it deletes the first 3 characters on ! + !* each line. ! +@f + [a +qa j + +:s "e zj ' +-@f + [b ub + +fs_z-qb f[ vz +qa j +<.-z; 1a-;"e d w 1a-;"e d w 1a-;"e d '' w 1a-_"e d'' l> +qa j  + +!Soley's Meta Close:! !C R.M.Soley's M-)! +0l ."N -2ci)l' m(m.m ^R_Indent_for_LISP) +:l  + +!Soley's Meta Open:! !C R.M.Soley's M-(! +0l ."N -2c-dl' m(m.m ^R_Indent_for_LISP) +:l  + +!Forgot Open Paren:! !C put an open paren before last sexp! + .[1 f@m(m.m ^R_Backward_Sexp) q1+1j  + +!NIL Mode:! !C Enter NIL Mode. (Same as LISP except for mode and compiler! + m(m.m LISP_Mode) + 1M(M.M &_Set_Mode_Line)NIL + +!Add NIL to M-X Compile:! !C Allow M-X Compile to recognize NIL! + f[bbind g(m.m Compile) 0j [1 + :sLISP"l 0l + @i@F~2NIL"E +:NACOMP__1 +' +@ + hx1 q1m.v MM_Compile  + m.m Compileu. ]1 f]bbind' + +!SpanishR Mode:! !C Enter SpanishR Mode. (Same as Text except for mode and compiler! + m(m.m Text_Mode) + m(m.m &_Init_Buffer_Locals ) + 1m(m.m Auto_Fill_Mode) + 70m(m.m ^R_Set_Fill_Column ) + 1,(:i*SRP)m.l Compiler_Filename  + 1M(M.M &_Set_Mode_Line)SpanishR + +!Multics C-T:! !C C-T a la Multics! +-c 1m(m.m ^R_Transpose_Characters) + +!Multics M-T:! !C M-T a la Multics via Soley! +1 m(m.m ^R_Backward_Word) +1 m(m.m ^R_Transpose_Words) + +!^A Indent for LISP:! !C Do a ^A before indent for LISP! +0l m(m.m ^R_Indent_for_LISP) + +!Convert Region 8bit to 7bit:! !C Make press files readable from emacs! + .[1 :[2 q1-q2"g [1[2]1]2 q1j ' + 0[3 (q2-q1)/5< 0u3 5< q3*128+(1a) u3 d > q3/8u3 4 4c > ]3 + q1j ]2]1 + +!Valret Region:! !C Valret the current region to the superior! + .[1 :[2 q1-q2"e ]2]1:i*NOR No_Region_to_ValretFSERR' + q1-q2"G [1[2]1]2 ' + [3 q1,q2x3 3 ]3]2]1  + +!Valret:! !Read a command and valret it! + [1 1,m(m.m&_Read_Line)Valret:_u1 + q1"n 1 +' + ]1  + +!Comout:! !C take a command and send it to the superior (with alt-p)! + 1,m(m.m&_Read_Line)Comout:_[1 fs hsname:f6[2 + q1"n o$tty:,dsk:2;_file_output +1 +$tty: +$p m(m.mSelect_Buffer)_file m(m.m^R_Visit_File)dsk:2;_file_output +' ]2 ]1  + +!Process JCL:! !C Process the Job Command Line ! + ft JCL_Start... + + !)fs d fn2 w0fs d version !* 2 teco commands to run ! + fs hsname  fs d sname + + 0u..h + + hkfj + z"n -d0a-15."e-d'' !* get rid of terminators ! + z"n 0[6 0[7 0[8 0[9 !* Only if JCL, start with local storage ! + @i@@ @i@@ 0j <1a-32"n 0;' d> @s@@ !* and put alt at end ! + .-z"n .,zx6' .-1,zk 0j !* put TECO commands in q6 ! + z"n hx7 ' hk + q7"n m(m.m Find_File)7' !* read in a file if desired ! + q6"n m6' !* execute teco commands if present ! + ]9]8]7]6' !* restore ! + 0fs modified + + ft END + 0u..h !* do a redisplay! + + +!Dump me:! !C Dump out the EMACS into ;ts E! +:@i..l& + @:i..l%% + m(m.m XUNAME_Startup ) + m(m.m Process_JCL ) + m(m.m Setup_clock_display ) + :i Editor_Type  DUMPED  +  + & + ec + :pdump_dcp;ts_e + :kill + :e +  + + +!Send to CLOLSP:! !C sends to the lisp listening to the CLO device! + fs hsname:f6[2 + fs xuname:f6[3 + ((fs jname/100.)&7777777777.)+(f6>):f6[4 + f[ bbind  g1 i + + f[ dfile  + et dsk:2;4_input  + ei hp ef  + :ew cli:3_4  + hk i (set-next-io-streams_"dsk:2;4_input"_"clo:3;4_output")  + hp ef  + f] dfile  + f] bbind  + m(m.m Insert_file ) clo:3;4_output  + .(w):w i +i + +  + +!Eval Region:! !LISP evals the current region.! + .[1 :[2 q1-q2"g [1[2]1]2' q2j q1,q2x1 ]2 + m(m.m Send_to_CLOLSP ) ]1 +  + +!Read Eval Redisplay:! !C sends form to lisp! + 1,m(m.m &_Read_Line )Lisp_form:_[1 + m(m.m Send_to_CLOLSP ) ]1 + +!Eval LISP Form:! !C Evaulate the current form in the current LISP! + m(m.m ^R_Mark_Defun ) [1 .,(w.)x1 !* get the form into q1! + m(m.m Send_to_CLOLSP ) ]1 + +!Convert Region, Alto Font to Readable:! !C Region is ALTO font. Make it readable! + .[1 :[2 0[3 q1-q2"g [1[2]1]2' q1j + (q2-q1)/5< 0u3 5 q3/8u3 4> 4l> + q1j (q2-q1)/5*4/2 q1j ]3]2]1 + +!MINITS:! !C Setup for hacking MINITS! + [0 f[ bbind + i config, minits, fsm, user, uuo, channl, tty, compro,  + i pktncp, chsncp, ethncp,  + i ch11, dte, interl, 3com,  + 0j<.-z; @i@ m(m.m Find_File ) minits; @ s,-d 33.i 15.i 12.i> + hx0 f] bbind + m0 ]0 + m(m.m Select_Buffer ) config  +  + +!Safety:! !C Make this file safe -- send it to AI and EE! + [0 fsxuname:f6[1 w fs d fn1:f6[4 w qPrevious_Buffer[3 + hx0 m(m.m Select_Buffer ) .temp.  hk g0 + m(m.m Write_File ) AI:VSDB;1_4  + hk i +SENT-BY:1 +HEADER-FORCE:RFC733 +TO:(1@EE) +SUBJECT:_A_SAFE_COPY +TEXT;-1 + + g0 m(m.m Write_File ) mc:.mail.;mail_>  + qPrevious_Bufferu0 m(m.m Select_Buffer ) 0  + q3uPrevious_Buffer +  + +!Doverize KTV Crash reports:! !Read in the crash file and send it to the Dover.! + [Previous_Buffer + m(m.m Select_Buffer ) crash-reports  hk + [Previous_Buffer + m(m.m Insert_File ) ktv;ktv_crash  + 0j <:s; -d i.bp> 0j !* add break page! + 0j i.dv_press +.fo_0_lpt8 !* add header! +.de_headermacro +. vx_lvpu_.4i +. ns_p +. em +.de_footermacro +' bp +. em +.st_headermacro_0 +.st_footermacro_10.4i +.nf +.rs + + 0j + < !* for each crash! + :sFrom:_11DUMP; 0l3k + :sVersion:; l i.ls_2 + + s.bp 0l i.ls_1 + + > + m(m.m Write_File ) KTV;KTV_R  + +:clear_ +:$Sending_the_file_to_R...î$ +:r_"ktv;ktv_r" +:$îDPRESS??_$:if_more_0_î$(:dpress_ktv;ktvî_$) +:$îSend_it_to_the_Dover?_$:if_more_0_î$( + :dover_ktv;ktv_pressî + :listf_dvr:.file._(dir)î_$) +:$Back_to_EMACS?_$:if_more_0 +:continue + + ]0 m(m.m Select_Buffer  ) 0  + ]Previous_Buffer +  + +!@ Make Readable TECO:! !C Make printable listing of macros file. +It leaves much to be desired and isn't done right, therefore +it is a crock, but it was designed to be quick and dirty! + + f[ bbindw f[ d filew -1f[ fnam syntax [0[1[2[3[4[5[6 + e\ e[ fn e] e^ !* push input and output, and arrange for pop! + 128*5fs q vectoru0 !* create a q vector for syntax! + :i*cu1 + -1u2 128 !* everthing does nothing! + :i*1a[9 d ^iw q9#100.i ]9u1 !* control chars put uparrow in front of! + !* their readable ascii character! + -1u2 32 !* put it into the syntax of control chars! + :i*d @i@^?@ u:0(127) !* rubout is special! + :i*cu1 + q1u:0(11.) !* tab is not a control character! + q1u:0(12.) !* neither is linefeed! + q1u:0(15.) !* cariage return as well! + q1u:0(33.) !* last, but not least, altmode! + + :i*0[0 ."e %0'w 0a-12."e 2a-15."e %0''w !* must be to stay! + q0"e d@i@^L@'"#c']0u:0(14.) !* this is what control L does! + + er egj4l s: i@r :x6 !* q6 gets file name for output file! + @y !* read in the file! + zj i + !* always put a return/linefeed at end! + j w<.-z; m(q:0(1a))> !* convert the file! + fs msname fs d sname ewdsk: !* open output file on working dir.! + hp ef6 hk !* write out to it.! + er eg j4k :l .,zk hx6 !* get its real file name! + :ft Listing_File_is_6 !* tell the user! + + w + +!Process %log file:! !C Processes the %log file in the buffer and appends info to the end of .glpr.;%log count! + +0j 0u0 0u1 +< :spage; + -s: 2c \+q0u0 + ssecond -s_in_ 4c \+q1u1 + > +fs d fn2u9 +[..o 0f[ read only  + :er dsk:.glpr.;%log_count  @y + zjw q9f6 i:_ q0\ i_pages_in_ q1\ i_seconds + + ew dsk:.glpr.;  pw ef %log_count  +f] read only  ]..o + + +!* Local Modes: ! +!* Mode:Teco ! +!* Comment Column:43 ! +!* End: ! +