diff --git a/src/e142/einit.:ej b/src/e142/einit.:ej
new file mode 100644
index 00000000..c1108618
--- /dev/null
+++ b/src/e142/einit.:ej
@@ -0,0 +1,442 @@
+xW
+[0+8+FQ(+4)[1
+0FO10F"G+Q1
+'W+FQ()+4U1
+FQ1"L0'
+,Q1:M(Q1+4(]1]0))
+  )#2|/f/ozT^.e.o5,531z22j2}4V4b1X1e0m0z3x40O0Y0D0K5u5{? Generate EMACS81,m.m& File PURIFY Loaded+1"G
+m(m.mLoad Library)EMACS;PURIFY'
+fsosteco"e
+m(m.mGenerate Library)EMACS;DSK:[PURE] >EMACS1;DOCUSRCOM^RBASEWRDLSTINDENTSEARCHFILESSUPPRTISEARCWINDOWBUFFERCRLVARS
+m(m.mGenerate Library)EMACS;DSK:[PRFY] >EMACS1;PURIFYCCL
+m(m.mGenerate Library)EMACS;DSK:EINITEMACS1;EINIT'
+"#
+m(m.mGenerate Library)EMACS;DSK:[PURE] >DOCUSRCOM^RBASEWRDLSTINDENTSEARCHFILESSUPPRTISEARCWINDOWBUFFERCRLVARS
+m(m.mGenerate Library)EMACS;PURIFYPURIFYCCL
+m(m.mGenerate Library)EMACS;DSK:EINITEINIT'
+? Document EMACS>m(m.mLoad Lib)EMACS;ABSTR
+f[bbindf[dfile
+m(m.mWall Chart).X
+fsosteco"e
+ji;NOXGP
+;SKIP 1
+'
+etEMACS;EMACS CHARTeihpef
+hk
+fsosteco"e
+ji;NOXGP
+;SKIP 1
+'
+m(m.mAbstract Redefinitions)
+m(m.mAbstract File) CEMACS
+m(m.mAbstract File) CTAGS
+m(m.mAbstract File) CTMACS
+m(m.mAbstract File) CSLOWLY
+m(m.mAbstract File) CWORDAB
+m(m.mAbstract File) CPICTUR
+m(m.mAbstract File) CABSTR
+m(m.mAbstract File) CPURIFY
+etEMACS;EMACS NDOCeihpef
+1:<edEMACS ODOC>
+1:<enEMACS DOCEMACS ODOC>
+enEMACS NDOCEMACS DOC
+& Load Default Environment/[0[1[2
+@:I*|FSECHOLINES-3"G
+3FSECHOLINES'
+|FSTTYMACRO
+M.M& Toplevel ^RU..L
+M.M& Secretary MacroU..F
+Q..FU.F
+M.M& Real-time InterruptFSCLKMACRO
+M.M& Recursive ^R Set ModeFS^RENTER
+M.M^R Backwards Kill CharactersFSRUBMACRO
+-1UDisplay Matching Paren
+:IR:,.F
+201.@FS^RInitU1255U0
+400.+A@FS^RInitU2
+256<%0W
+Q0#Q2"EQ1U0'
+>
+Q1U.T
+Q2U..IQ2U...L
+Q2U..._
+M.M^R Complement SAIL ModeU.B
+FS^RINITUH
+M.M^R Indent According to ModeUI
+M.M^R Indent New LineUJ
+M.M^R Indent New Comment LineU..JQ..JU..J
+M.M^R CRLFUM
+M.M^R Set/Pop MarkU. Q. U.@
+M.M^R Replace StringU.%
+M.M^R Query ReplaceU..%
+M.M^R Find TagU...
+M.M^R Indent For CommentU.;Q.;U..;
+M.M^R Kill CommentU...;
+M.M^R Mark BeginningU.<
+M.M^R Goto BeginningU..<
+M.M^R Where Am IU.=
+M.M^R Count Lines RegionU..=
+M.M^R Mark EndU.>
+M.M^R Goto EndU..>
+M.M^R DescribeU..?Q..?U../
+M.M^R DocumentationF(U...?)FSHELPMAC
+M.M^R Kill LineU.K
+M.M^R New WindowU.L
+M.M^R Down Real LineU.N
+M.M^R Down Comment LineU..N
+M.M^R Up Real LineU.P
+M.M^R Up Comment LineU..P
+M.M^R Quoted InsertU.Q
+M.M^R Reverse SearchU.R
+M.M^R Move To Screen EdgeU..R
+M.M^R Reposition WindowU...R
+M.M^R Incremental SearchU.S
+M.M^R Transpose CharactersU.T
+M.M^R Universal ArgumentU.U
+M.M^R Next ScreenU.V
+M.M^R Previous ScreenU..V
+M.M^R Scroll Other WindowU...V
+M.M^R Kill RegionU.W
+M.M^R Copy RegionU..W
+M.M^R Append Next KillU...W
+M.M^R Extended CommandU..X
+M.M^R Instant Extended CommandU...X
+M.M^R Un-KillU.Y
+M.M^R Un-Kill PopU..Y
+M.M^R Return To SuperiorU.Z
+M.M^R Prefix MetaU
+33.FS^RINITU.Q.U...C
+M.M^R Execute MiniU..
+433.^FS^RINITU...
+M.M^R Prefix MetaU.\
+M.M^R Prefix ControlU.^
+M.M^R Prefix Control-MetaU.C
+M.MAbort Recursive EditU.]
+M.M^R Buffer Not ModifiedU..~
+M.M^R Back to IndentationU..MQ..MU...M
+Q..MF(U..M)U...M
+M.M^R Delete Horizontal SpaceU..\
+M.M^R Indent RegionU...\
+M.M^R Split LineU...O
+M.M^R Change Font WordU..#
+M.M^R Upcase DigitU..'
+M.M^R Mark WordU..@
+M.M^R Backward SentenceU..A
+M.M^R Backward WordU..B
+M.M^R Uppercase InitialU..C
+M.M^R Kill WordU..D
+M.M^R Forward SentenceU..E
+M.M^R Forward WordU..F
+M.M^R Fill RegionU..G
+M.M^R Mark ParagraphU..H
+M.M^R Tab to Tab StopU..I
+M.M^R Kill SentenceU..K
+M.M^R Lowercase WordU..L
+M.M^R Fill ParagraphU..Q
+M.M^R Center LineU..S
+M.M^R Transpose WordsU..T
+M.M^R Uppercase WordU..U
+M.M^R Backward ParagraphU..[
+M.M^R Forward ParagraphU..]
+M.M^R Delete IndentationU..^
+M.M^R Underline WordU.._
+M.M^R Backward Kill WordU..
+M.M^R Make ()U..(
+M.M^R Move Over )U..)
+M.M^R Backward Up ListU...(Q...(U...U
+M.M^R Forward Up ListU...)
+M.M^R Mark SexpU...@
+M.M^R Backward SexpU...B
+M.M^R Down ListU...D
+M.M^R Forward SexpU...F
+M.M^R Format CodeU...G
+M.M^R Mark DefunU...HQ...HU...H
+M.M^R Indent for LispU...IQ...IU...I
+M.M^R Kill SexpU...K
+M.M^R Forward ListU...N
+M.M^R Backward ListU...P
+M.M^R Indent SexpU...Q
+M.M^R Transpose SexpsU...T
+M.M^R Beginning of DefunU...[Q...[U...A
+M.M^R End of DefunU...]Q...]U...E
+M.M^R Delete IndentationU...^
+M.M^R Backward Kill SexpU...
+128M(M.MMAKE PREFIX).XU.X
+:IPrefix Char ListX.X  
+M.MList BuffersU:.X()
+M.M^R Return to SuperiorU:.X()
+M.M^R Directory DisplayU:.X()
+M.M^R Command ^X ^E FlushedU:.X()
+M.MFind FileU:.X()
+M.M^R Indent RigidlyU:.X(9)
+M.M^R Lowercase RegionU:.X()
+M.M^R Set Goal ColumnU:.X()
+M.M^R Delete Blank LinesU:.X()
+M.M^R Mark PageU:.X()
+M.M^R Do Not Write FileU:.X()
+M.M^R Read FileU:.X()
+M.M^R Save FileU:.X()
+M.M^R Transpose LinesU:.X()
+M.M^R Uppercase RegionU:.X()
+M.M^R Visit FileU:.X()
+M.MWrite FileU:.X()
+M.M^R Exchange Point And MarkU:.X()
+M.M^R Re-execute MiniU:.X()
+M.M^R Change Font RegionU:.X(#)
+M.M^R Start Kbd MacroU:.X(()
+M.M^R Set Fill PrefixU:.X(.)
+M.M^R One WindowU:.X(1)
+M.M^R Two WindowsU:.X(2)
+M.M^R View Two WindowsU:.X(3)
+M.M^R Modified Two WindowsU:.X(4)
+M.M^R Set Comment ColumnU:.X(;)
+M.M^R Where Am IU:.X(=)
+M.M^R Append to BufferU:.X(A)
+M.MSelect BufferU:.X(B)
+M.M^R DIREDU:.X(D)
+M.M^R Set Fill ColumnU:.X(F)
+M.M^R Get Q-regU:.X(G)
+M.M^R Mark Whole BufferU:.X(H)
+M.M^R InfoU:.X(I)
+M.MKill BufferU:.X(K)
+M.M^R Count Lines PageU:.X(L)
+M.MMAILU:.X(M)
+M.M^R Set Bounds RegionU:.X(N)
+M.M^R Other WindowU:.X(O)
+M.M^R Set Bounds PageU:.X(P)
+M.MRead MailU:.X(R)
+M.M^R Set Bounds FullU:.X(W)
+M.M^R Put Q-regU:.X(X)
+M.M^R Previous PageU:.X([)
+M.M^R Next PageU:.X(])
+M.M^R Grow WindowU:.X(^)
+M.M^R Underline RegionU:.X(_)
+M.M^R Backward Kill SentenceU:.X(127)
+fsosteco"n
+@ft0
+M.M^R Prefix Control-MetaU.Z
+33.FS^RINITU...Z
+M.M^R Return To SuperiorU:.X()
+37.FSHELPCHARW
+0"n
+M.M^R Exit to ExecU.C
+632.@FS^RINITU...C
+0U:.X()
+'
+'
+@ft1
+1FSTTMODEW
+1FS^RSCANW
+1FS^RECHOW
+1FSRUBCRLFW
+0FS%TOPW
+0FS%BOTTOMW
+35FS%ENDW
+500FS^RMDLYW
+M.M^R Auto-fill SpaceFS^RECSD
+@ft2
+:I..JEMACS 
+:I*EMACSM.VEditor Name
+M.M& Find BufferM.VMM & Find Buffer
+M.M& Find FileM.VMM & Find File
+M.M& Get Library PointerM.VMM & Get Library Pointer
+M.M& Kill TextM.VMM & Kill Text
+M.M& Matching ParenM.VMM & Matching Paren
+M.M& Process File OptionsM.VMM & Process File Options
+M.M& Read LineM.VMM & Read Line
+M.M& Set Mode LineM.VMM & Set Mode Line
+M.MLoad LibraryM.VMM Load Library
+@ft3
+M.M& AutoloadU.A
+M.M& Set Variable CommentU.C
+M.M& Prepare For InputU.I
+M.MMake Local VariableU.L
+M.M& Macro ExecuteUM
+M.M& Macro GetU.M
+M.M& Prefix Character DriverU.P
+M.M& Make VariableU.V
+M.M& Set Mode LineFSMODEMAC
+FSOSTECO"E
+M.M& Default FS SuperiorFSSUPERIOR'
+M.M& F^K HookU*F Hook*
+M.M& Subset Directory ListingUDirectory Lister
+@ft4
+M.M& Error HandlerU..P
+ & Load Essential Environment2#5FSQVECTORU..Q
+3U:..Q(0)
+1FSSERROR
+-1FS^IDISABLE
+1FS_DISABLE
+-1FSFNAMSYNTAX
+1FSBOTHCASE
+-1FSECHOFLUSH
+1FS^LINSERT
+1FSVARMAC
+0U.H
+:i.w
+10*5FSQVECTORU..K
+Q..K[..OJ5D]..O
+-1U09<0U:..K(%0)>
+5*5FSQVECTORU..U
+0U:..U(0)10000000U:..U(2)
+6*8FSQVECTORU.N
+[..OQ.NU..OJ5D]..O
+:I*[1-1[2
+FQ.N/5<Q1U:.N(%2)>
+!"!1M(M.M& Alter ..D)[(]){(})|A/A'A
+!"!2M(M.M& Alter ..D)][)(><}{'"!'!
+M.M& Macro ExecuteUM
+M.M& Prepare For InputU.I
+M.M& Prefix Character DriverU.P
+M.M& AutoloadU.A
+M.M& Make VariableU.V
+M.M& Set Variable CommentU.C
+M.M& Set Mode LineFSMODEMAC
+1FSMODECHANGE
+M.M& F^K HookM.V*F Hook*
+M.M& Check Top LevelM.VMM & Check Top Level
+M.M& Maybe Push PointM.VMM & Maybe Push Point
+M.M& Maybe Display DirectoryM.VMM & Maybe Display Directory
+0M.VAbort Resumption Message
+0M.CAtom Word Mode!* 1 => word commands deal with LISP atoms!
+:I.W"n:I.W@'1FSMODECH
+0M.CAuto Directory Display* 1 => display dir after writes, -1 => reads too
+0M.CAuto Fill Mode!* 1 => Auto Fill (break long lines at margin)!
+1FSMODECH
+32FS^RINITU "E'
+M.M^R Auto-Fill SpaceU 
+500M.CAuto Push Point Option* Searches moving this far set mark at old point
+:I* ^@M.CAuto Push Point Notification* Searches setting mark type this
+500M.CAuto Save Interval!* number of characters between auto-saves!
+fs^rmdlywfs^rmcnt
+0M.CAuto Save Visited File* 1=> auto save under visited filename
+0M.CAutoarg Mode!* 1 => digits before control chars set arg!
+0FS^RINIT[2
+"NM.M^R AutoargU2'
+Q2-Q0"E'
+Q2U0Q2U1Q2U2Q2U3Q2U4
+Q2U5Q2U6Q2U7Q2U8Q2U9
+1M.CCase Replace* 1 => Replace commands preserve case
+0M.CComment Begin* String for beginning new comments
+32M.CComment Column* Column to start comments in
+0M.CComment Start* String that indicates the start of a comment
+:I*M.CComment End* String that ends comments
+:I*/8+1*8M.CComment Rounding* Hairy - see code for ^R Indent for Comment
+0M.CDisplay Matching Paren!* Controls action of ) in showing the matching (!
+"NM.M& Matching Paren'"#0'FS^RPAREN
+70M.CFill Column!* Page width for filling and grinding!
+FSADLINE
+:I*.?!M.CFill Extra Space List* punctuations that need 2 spaces
+:I*M.CFill Prefix* String to put before each line when filling
+0M.CFind File Inhibit Write* initializes Inhibit Write for Find File
+0M.CFS CTLMTA!!FSCTLMTA
+0M.CInhibit Write!* -1 => Never save automatically on switching files!
+1FSMODECH
+0M.CLISP Indent Offset* See ^R Indent for LISP
+0M.COverwrite Mode!* Overwrite Mode status (see MM Overwrite Mode)!
+1FSMODECH
+FS^RREPLACE
+:I*M.CPage Delimiter* Search string for finding page boundaries
+:I*.	 M.CParagraph Delimiter* Lines starting with these chars start paragraphs
+-1M.CPermit Unmatched Paren* 1 => allow unmatched ), -1 => only in Lispish modes
+0M.CRead Line DelayPausing this many 1/30 sec causes echoing
+5000M.CRegion Query Size* Some commands need confirmation if region this big
+:I*M.VSet Mode Line Hook
+0M.CSpace Indent Flag* If nonzero, Auto Fill indents new lines
+:I*MEMOXGP@XGPUNFASLOUTPUTOLREC M.CTemp File FN2 List* Reap File deletes these FN2s
+:I*FundamentalM.CModeDo MM FOO to enter FOO mode
+:I*M.CSubmode!!1FSMODECH
+M.M& Subset Directory ListingM.CDirectory ListerMacro to use to list directories
+15FSQVECTOR[1Q1M.VSearch Default Ring
+:I:1(0):I:1(1):I:1(2)]1
+:I..GQ..H"EMDirectory Lister'
+0M.VBacktrace Temp
+:I*M.VEditor Name
+:I*M.VEditor Type
+:I*M.VPrefix Char List
+M.M& Indent with TabsM.VMM & Indent
+M.M& Xindent with TabsM.VMM & Xindent
+:I*        :       :       :       :       :       :       :       :       :       :       :       :M.CTab Stop Definitions* Tab stops for ^R Tab to Tab Stop
+0M.VNext Bfr Number
+9*5FSQVECTORU.B
+9U:.B(0)
+:I*MainU:.B(1)
+0U:.B(2)
+:I*FundamentalU:.B(3)
+Q..ZU:.B(4)
+0U:.B(5)
+0U:.B(6)
+%Next Bfr NumberU:.B(7)
+0U:.B(8)
+0M.VBuffer Filenames
+Q:.B(1)M.VBuffer Name
+0M.VBuffer Index
+Q:.B(1)M.VPrevious Buffer
+FSOSTECO"E
+M.M& Default FS SuperiorFSSUPERIOR'
+M.MMake Local VariableU.L
+0M.VAuto Save Mode
+M.LAuto Save Mode
+0M.CAuto Save Default!* Default value of Auto Save Mode for new files!
+1FSMODECH
+:I*M.CAuto Save Filenames* Filename for Auto Save Files
+2M.CAuto Save Max* # of saves to keep
+M.LAuto Save Delete
+M.LAuto Save Size
+M.LAuto Save Count
+M.LInhibit Write
+5M.VInitial Local Count
+Purify Variablesm[1[2[3
+m.m&& Variable Name Listu2
+<q2+fq2+4u2-fq2;
+:fo..q2u1
+q1"gf~:..q(q1)2"e
+q2u:..q(q1)
+q2+fq2+4u3
+q:..q(q1+2)"n
+f~:..q(q1+2)3"e
+q3u:..q(q1+2)'''
+0u3
+fq.b/5<fq:.b(q3)"gf~:.b(q3)2"e
+q2u:.b(q3)''
+%3>
+'>
+& Load Patches*f[bbindqEMACS Version:\[1
+f[dfileetemacs;pat1 >
+1:<er@y>"l'
+z"e'
+@f
+k
+f[:ejpage
+m(m.mLoad Library)PURIFY
+<m(m.mTCompile)
+:s
+
+;>
+hk~Filename~	EINIT~DOC~ ~Filename~(Macros for installing a new EMACS.
+~DOC~ ? Generate EMACS<? Create EMACS :EJ file from sources.
+Compresses the source files that need compression,
+then concatenates the COMPRS files and purifies, writing
+the result out as EMACS;[PURE] >.
+~DOC~ ? Document EMACS)? Create EMACS DOC and EMACS CHART.
+$~DOC~ & Load Default Environment<S Create the default environment.
+Assuming that the pure files are already loaded
+and the "essential" environment is set up, set up the standard
+EMACS ^R command definitions, etc.
+&~DOC~ & Load Essential EnvironmentvS Does what's needed for EMACS macros to work at all.
+A given environment (such as EMACS, TME, etc.) may set up
+other variables, and redefine ^R characters.  That is all optional.
+But code may fail to work if these variables are missing.
+~DOC~ Purify Variables"C Make var names in symtab pure.
+For each symbol, sees whether there is a pure string for
+its name, and if so makes the sym tab point at that pure string.
+~DOC~ & Load PatchesS Load patches (made since [pure] file) before dumping.
+Essentially, we do a Compile One Macro on each page of
+the patch file EMACS;PATnnn >
+~DIRECTORY~? Generate EMACS
+? Document EMACS
+& Load Default Environment
+& Load Essential Environment
+Purify Variables
+& Load Patches
+~INVERT~[1<Q1-1U1Q1FP;>Q1
diff --git a/src/e142/emacs.:ej b/src/e142/emacs.:ej
new file mode 100644
index 00000000..30b97fee
Binary files /dev/null and b/src/e142/emacs.:ej differ
