https://github.com/bobbae/gosling-emacs Skip to content Toggle navigation Sign up * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code + Explore + All features + Documentation + GitHub Skills + Blog * Solutions + For + Enterprise + Teams + Startups + Education + By Solution + CI/CD & Automation + DevOps + DevSecOps + Case Studies + Customer Stories + Resources * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles + Repositories + Topics + Trending + Collections * Pricing [ ] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this user All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} bobbae / gosling-emacs Public * Notifications * Fork 3 * Star 16 Gosling emacs from early 1980s 16 stars 3 forks Star Notifications * Code * Issues 0 * Pull requests 0 * Actions * Projects 0 * Security * Insights More * Code * Issues * Pull requests * Actions * Projects * Security * Insights bobbae/gosling-emacs This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. master Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags Name already in use A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch? Cancel Create 1 branch 0 tags Code * Local * Codespaces * Clone HTTPS GitHub CLI [https://github.com/b] Use Git or checkout with SVN using the web URL. [gh repo clone bobbae] Work fast with our official CLI. Learn more. * Open with GitHub Desktop * Download ZIP Sign In Required Please sign in to use Codespaces. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching Xcode If nothing happens, download Xcode and try again. Launching Visual Studio Code Your codespace will open once ready. There was a problem preparing your codespace, please try again. Latest commit @bobbae bobbae Update README ... 8fdda53 May 7, 2020 Update README 8fdda53 Git stats * 4 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time Newmchan import into github May 7, 2020 09:17 RCS import into github May 7, 2020 09:17 indent import into github May 7, 2020 09:17 lib import into github May 7, 2020 09:17 maclib import into github May 7, 2020 09:17 man import into github May 7, 2020 09:17 .emacs_101 import into github May 7, 2020 09:17 ChangeLog import into github May 7, 2020 09:17 ERRS import into github May 7, 2020 09:17 GemacsDiffs import into github May 7, 2020 09:17 Installation import into github May 7, 2020 09:17 README Update README May 7, 2020 09:27 SampleProfile import into github May 7, 2020 09:17 Trm.h import into github May 7, 2020 09:17 TrmAmb.c import into github May 7, 2020 09:17 TrmC100.c import into github May 7, 2020 09:17 TrmC100.c.save import into github May 7, 2020 09:17 TrmC100.c.v1 import into github May 7, 2020 09:17 TrmGG.c import into github May 7, 2020 09:17 TrmI400.c import into github May 7, 2020 09:17 TrmMiniB.c import into github May 7, 2020 09:17 TrmT1061.c import into github May 7, 2020 09:17 TrmTEK4025.c import into github May 7, 2020 09:17 TrmTERM.c import into github May 7, 2020 09:17 TrmTERM.c.sv import into github May 7, 2020 09:17 TrmVS100.c import into github May 7, 2020 09:17 TrmVS100.old.c import into github May 7, 2020 09:17 TrmVT100.c import into github May 7, 2020 09:17 TrmVT100.c.save import into github May 7, 2020 09:17 TrmXEmacs.c import into github May 7, 2020 09:17 UtahChanges import into github May 7, 2020 09:17 Write import into github May 7, 2020 09:17 a.tmp import into github May 7, 2020 09:17 abbrev.c import into github May 7, 2020 09:17 abbrev.h import into github May 7, 2020 09:17 abspath.c import into github May 7, 2020 09:17 abspath.haynes import into github May 7, 2020 09:17 arithmetic.c import into github May 7, 2020 09:17 buffer.c import into github May 7, 2020 09:17 buffer.h import into github May 7, 2020 09:17 calendar import into github May 7, 2020 09:17 casefiddle.c import into github May 7, 2020 09:17 collect.c import into github May 7, 2020 09:17 collectmail.c import into github May 7, 2020 09:17 columns.c import into github May 7, 2020 09:17 compare import into github May 7, 2020 09:17 config.h import into github May 7, 2020 09:17 config.h.new import into github May 7, 2020 09:17 config.new.h import into github May 7, 2020 09:17 cpyn.c import into github May 7, 2020 09:17 d.haynes import into github May 7, 2020 09:17 dbadd.c import into github May 7, 2020 09:17 dbcreate import into github May 7, 2020 09:17 dblist.c import into github May 7, 2020 09:17 dbmanager.c import into github May 7, 2020 09:17 dbprint.c import into github May 7, 2020 09:17 display.c import into github May 7, 2020 09:17 display.h import into github May 7, 2020 09:17 dist.sh import into github May 7, 2020 09:17 dsp.c import into github May 7, 2020 09:17 e.out import into github May 7, 2020 09:17 emacs.c import into github May 7, 2020 09:17 errlog.c import into github May 7, 2020 09:17 filecomp.c import into github May 7, 2020 09:17 fileio.c import into github May 7, 2020 09:17 fileio.c.new import into github May 7, 2020 09:17 fileio.c.old import into github May 7, 2020 09:17 fileio.new.c import into github May 7, 2020 09:17 fileio.old.c import into github May 7, 2020 09:17 files import into github May 7, 2020 09:17 filesort.c import into github May 7, 2020 09:17 gosling-emacs import into github May 7, 2020 09:17 grep.c import into github May 7, 2020 09:17 keyboard.c import into github May 7, 2020 09:17 keyboard.h import into github May 7, 2020 09:17 lispfuncs.c import into github May 7, 2020 09:17 loadst.c import into github May 7, 2020 09:17 loadst.c.v0 import into github May 7, 2020 09:17 lock.c import into github May 7, 2020 09:17 macros.c import into github May 7, 2020 09:17 macros.h import into github May 7, 2020 09:17 makefile import into github May 7, 2020 09:17 makefile.alpha import into github May 7, 2020 09:17 makefile.i386 import into github May 7, 2020 09:17 makefile.mips import into github May 7, 2020 09:17 makefile.new import into github May 7, 2020 09:17 makefile.pmax import into github May 7, 2020 09:17 makefile.vax import into github May 7, 2020 09:17 makemail.c import into github May 7, 2020 09:17 manytries import into github May 7, 2020 09:17 mchan.c import into github May 7, 2020 09:17 mchan.c.old import into github May 7, 2020 09:17 mchan.h import into github May 7, 2020 09:17 metacoms.c import into github May 7, 2020 09:17 minibuf.c import into github May 7, 2020 09:17 mlisp.c import into github May 7, 2020 09:17 mlisp.h import into github May 7, 2020 09:17 ndbm.c import into github May 7, 2020 09:17 ndbm.h import into github May 7, 2020 09:17 options.c import into github May 7, 2020 09:17 pchan.c import into github May 7, 2020 09:17 picture.doc import into github May 7, 2020 09:17 prog import into github May 7, 2020 09:17 push.ml import into github May 7, 2020 09:17 quickinfo.sh import into github May 7, 2020 09:17 quit.c import into github May 7, 2020 09:17 recognize.c import into github May 7, 2020 09:17 search.c import into github May 7, 2020 09:17 search.h import into github May 7, 2020 09:17 sigkludge.c import into github May 7, 2020 09:17 simplecoms.c import into github May 7, 2020 09:17 sindex.c import into github May 7, 2020 09:17 srclist import into github May 7, 2020 09:17 strcpyn.c import into github May 7, 2020 09:17 subproc.c import into github May 7, 2020 09:17 syntax.c import into github May 7, 2020 09:17 syntax.h import into github May 7, 2020 09:17 test import into github May 7, 2020 09:17 test.c import into github May 7, 2020 09:17 test.test import into github May 7, 2020 09:17 testcase import into github May 7, 2020 09:17 tmp import into github May 7, 2020 09:17 ttyaccept.c import into github May 7, 2020 09:17 ttyaccept.c.v0 import into github May 7, 2020 09:17 ttyconnect.c import into github May 7, 2020 09:17 undo.c import into github May 7, 2020 09:17 undo.h import into github May 7, 2020 09:17 undob1 import into github May 7, 2020 09:17 undobug import into github May 7, 2020 09:17 unexec.c import into github May 7, 2020 09:17 unexec.c.old import into github May 7, 2020 09:17 version.c import into github May 7, 2020 09:17 window.c import into github May 7, 2020 09:17 window.h import into github May 7, 2020 09:17 windowman.c import into github May 7, 2020 09:17 xxx import into github May 7, 2020 09:17 View code README This is retrieved from https://github.com/larsbrinkhoff/emacs-history/blob/sources/reid.org/%7Ebrian/misc/gosling-emacs-1999.tar which is untarred and imported here. I wanted to archive here simply because it is the first big chunk of C code I read and I learned a lot from reading the code in the early 1980s. By then James Gosling had sold rights to Unipress and the company I worked for used to have source code license. We studied it extensively and made our own version of the editor at the time. James Gosling's emacs was there to be useful to Unix users before GNU emacs was available on Unix machines. GNU didn't exist back then. Although my first emacs was TECO based emacs on TOPS-20 on DEC-10 machines, the Gosling emacs was faithful enough and had enough enhancements to make it very useful. The "mock Lisp" was derided by many who were used to MacLisp at the time, but it was the first editor I encountered that had Lisp like language as basis for many features and customizations at the time. GNU emacs was the second. My favorite source code here is display.c. Infamous for its ASCII skull rendering at the beginning, it is also basis of a lot of very old controversy and disputes between James Gosling and Richard Stallman, as to the alleged theft of the display update algorithm. Here is the beginning of the display.c: /-------------\ / \ / \ / \ | XXXX XXXX | | XXXX XXXX | | XXX XXX | \ X / --\ XXX /-- | | XXX | | | | | | | I I I I I I I | | I I I I I I | \ / -- -- \-------/ XXX XXX XXXXX XXXXX XXXXXXXXX XXXXXXXXXX XXXXX XXXXX XXXXXXX XXXXX XXXXX XXXXXXXXX XXXXXXXXXX XXXXX XXXXX XXX XXX ************** * BEWARE!! * ************** All ye who enter here: Most of the code in this module is twisted beyond belief! Tread carefully. If you think you understand it, You Don't, So Look Again. The following is the original README ========= This is Gosling Emacs, version 84S, locally modified at decwrl. THE OFFICIAL SOURCES FOR EMACS ARE KEPT ON acetes:/usr/src/local/emacs under RCS control. If you modify the sources on acetes, you are are NOT done until you update mopar, generate a new version of emacs and test it on a Titan! The Makefile for the Titan version is kept on circe. See below. *********** The Titan and Vax versions of emacs have been merged as of 6 May 1986. If you wish to construct a new version of the Titan emacs, you must generate the program on mopar:/tunix/src/local/emacs. The Makefile on the *tunix* subdirectory is different; the rest consists of symbolic links to mopar:/usr/src/local/emacs. YOU MUST MANUALLY UPDATE mopar:/usr/src/local/emacs from acetes after making changes. Eg., "rdist -c *.c mopar:/usr/src/local/emacs". The Vax version of emacs uses the ibis libraries. The InsertLines and DeleteLines (note PLURAL) code has been ifdef'd OUT of the TrmVS100.c driver because it did not work on the Vax or the Titan. Some comments about the Titan version: 1) unexec does not work -- the Titan version of unix is different and I have not fixed unexec. 2) There are numerous problems I fixed in emacs for the Titan. If you decide to add features to emacs here are a few things that might bite you when you try to get it to run on the Titan: a) Malloc returns a byte pointer and you must coerce its results into a word pointer as required: p = (struct foo *) malloc(sizeof(foo)); b) Realloc's parameter must be coerced back into a byte pointer as required: p = (struct foo *) realloc( (char *)p, sizeof(foo)*2); c) Polymorphic routines (initialization routines especially) cause problems if you coerce pointer types to match the parameter declaration. Consider macros.DefMac: DefMac (s, bodyparm, IsMlisp) char *s, *bodyparm; Now in emacs.c there is initialization code that calls DefMac with bodyparm=word pointer. For example: DefMac ("ESC-prefix", &ESCmap, -2); Your natural thought mmight be to write DefMac ("ESC-prefix", (char *)&ESCmap, -2); unfortunately this is a bug. The third parameter declares the type of the bodyparm. By coercing &ESCmap into a char * you'll cause the wrong value to be stored into body.b_bound.b_keymap. Don't use type casts here! d) Cast the data for ioctl's into word pointers: ioctl(fd, ioctl, (waddr_t)&tlbytes ); 3) Hey, hey, let's be careful out there. Gene McDaniel 6 May 86 ********** EMACS sources are kept on ACETES. DO NOT MODIFY ANY source files without checking them out from acetes -- the emacs sources are kept under RCS control Gene McDaniel 16 Apr 86 About Gosling emacs from early 1980s Resources Readme Stars 16 stars Watchers 3 watching Forks 3 forks Releases No releases published Packages 0 No packages published Languages * OCaml 56.1% * C 34.5% * Standard ML 6.5% * Shell 1.6% * SystemVerilog 0.4% * Roff 0.4% * Other 0.5% Footer (c) 2023 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.