1
0
mirror of synced 2026-03-14 22:38:23 +00:00

Compare commits

...

467 Commits

Author SHA1 Message Date
Larry Masinter
4fed40bb85 Add BROWSERMAX to limit depth of paths graph (#1158)
* Add BROWSERMAX to limit depth of paths graph

* Update Browser to use left-button menu popup to select action
2023-06-30 16:56:54 -07:00
Larry Masinter
3cca8c4940 Fix places where rename of record LINE to XXLINE was incomplete (#1212) 2023-06-30 16:42:07 -07:00
Larry Masinter
b493d98aeb fix GATHER-INFO for compiled code -- globalvars vs.bounc (#1219) 2023-06-18 21:24:23 -07:00
Larry Masinter
beb4a77195 Recompile PRETTY (#1220) 2023-06-17 21:40:34 -07:00
Frank Halasz
e067e02dde Add on:schedule to buildRelease workflow so that Medley builds happen automatically on Mondays at 1am (#1225)
* Add an On:schedule to the build release and docker workflow to build a new release every Monday at 1am

* Add an On:schedule to the build release and docker workflow to build a new release every Monday at 9am UTC (1am or 2am Pacfic time, depending on daylight savings
2023-06-11 13:40:38 -07:00
Larry Masinter
1af56ddaa2 Add .tedit files for Lafite manual and release notes -- PDFs on Google Drive (#1209)
* Add .tedit files for Lafite manual and release notes -- PDFs on Google Drive

* use 'docs' for subfolder name; wliminate dup

* Remove duplicate LAFITEMANUAL-GLOSSARY-CUSTOMER.TEDIT

---------

Co-authored-by: Nick Briggs <nicholas.h.briggs@gmail.com>
2023-05-16 19:30:15 -07:00
Nick Briggs
16dd66a016 Pass --display/-d argument as -display not by setting DISPLAY env variable. (#1213) 2023-05-16 19:28:21 -07:00
Larry Masinter
81b74be043 Another pass on CLOSEALL simplify by calling (OPENP) (#1182)
* Another pass on CLOSEALL simplify by calling (OPENP)

* Put back in checks for CLOSEALL IOMODE USERVISIBLE

* \TERM.OFD and \LINEBUF.OFD are bound, no global

* getting rid of \OPENFILES everywhere

* one more \OPENFILES
2023-05-16 19:02:43 -07:00
Larry Masinter
f8a5d0fbe5 Rewrite code for deciding 'Good morning', 'Good evening' 'You're working late' Y2K (#1208) 2023-05-16 19:00:49 -07:00
Larry Masinter
3e0ec62d27 Prettyfileindex knows about :EDIT-BY (#1205) 2023-05-16 10:06:03 -07:00
Larry Masinter
654675661f Do not set keyboard type without knowing better (#1211) 2023-05-16 10:05:31 -07:00
Larry Masinter
3cb051ea7b Allow (CLOSALL) to work after all (#1164) 2023-04-19 19:47:11 -07:00
Frank Halasz
8bb283e0c4 Merge pull request #1154 from Interlisp/tweak-init2
Tweak INIT: HELPTIME 1 for more break windows; extend font profile
2023-04-19 18:03:08 -07:00
Frank Halasz
6fae5c14e9 Merge branch 'master' into tweak-init2 2023-04-19 17:54:43 -07:00
Frank Halasz
c58ef4ee56 Merge pull request #1161 from Interlisp/minor-usage-tweaks
minor usage tweaks
2023-04-19 17:53:57 -07:00
Frank Halasz
730fc5b678 Merge pull request #1153 from Interlisp/who-line-only
tweak WHO-LINE
2023-04-19 17:46:25 -07:00
Frank Halasz
8d54603329 Merge branch 'master' into who-line-only 2023-04-19 17:45:29 -07:00
Larry Masinter
21ceff5ad9 add internal/MAINTAIN.TXT to explain what MAINTAIN is 2023-04-18 15:21:35 -07:00
Larry Masinter
5a07e6c266 SYSEDIT also sets copyright flag 2023-04-18 15:16:07 -07:00
Larry Masinter
4a09d3a027 Init file set HELPTIME to 1 more break windows; copyright NEVER 2023-04-18 15:15:00 -07:00
Larry Masinter
691563024b Yet another Logo with parameters for substrings. WINDOW.BITMAP move to Window (#1151)
* Yet another Logo with parameters for substrings. WINDOW.BITMAP move to Window

* Added LOGOW.DFASL, so rm LOGOW.LCOM

* LOGOW: Add local variables for most of the hard-coded constants to make it easier to experiment with adjusting said constants.  Adding kerning for substring1.

* LOGOW: Add more kerning options.  Cretaed separate kerned.prin3 function.

* Set default params to Option 8.  Added some top and right margins when placing LOGOW in screen so it doesn't look so squished into the corner.

---------

Co-authored-by: Frank Halasz <frank@halasz.org>
2023-04-18 14:57:41 -07:00
Larry Masinter
0f49e248d3 Tweak INIT: HELPTIME 1 for more break windows; extend font profile 2023-04-13 09:56:16 -07:00
Larry Masinter
54782f5b21 tweak to WHO-LINE: hostname (don't use pup), change dir (don't offer directories that don't exist), package (sort so likely choices are at top) 2023-04-12 22:26:23 -07:00
rmkaplan
d34522d769 GITNFS: Doesn't error if clonepath defaults but is not required (#1123)
If CLONEPATH is NIL, no error if the clone can't be found, just prints a note.  If CLONEPATH is T, will error.
2023-03-30 09:59:27 -07:00
Larry Masinter
c501dc82fb add :EDIT-BY initials to FILECREATED (#1074) 2023-03-24 21:52:44 -07:00
Bill Stumbo
c256a8f411 Merge pull request #1110 from neauoire/patch-1
Changed wiki link to new docs url
2023-03-19 20:44:31 -04:00
Devine Lu Linvega
69dbe43d87 Update README.md 2023-03-19 16:45:17 -07:00
Devine Lu Linvega
989ec5b0b5 Changed wiki link to new docs url 2023-03-19 09:40:25 -07:00
rmkaplan
12b5e90727 GITFNS: Better default directory-finding, better pseudohosts (#1064) (#1065)
* GITFNS:  Better default directory-finding, better pseudohosts  (addresses #1064)

Also updated documentation

* GITFNS:  better error message in GIT-MAKE-PROJECT
2023-02-18 17:19:29 -08:00
Frank Halasz
4b95a8b5d3 Windows installer and medley script for running Medley in Docker on Windows (#1077)
* Update docker file build to use new deb linux installers;  move Dockefile to .github/workflows since its really only useable from the buildDocker.yml workflow

* Fix typo in dockerfile location

* remove extraneous " in >>GITHUB_ENV statements

* Fix handling of TARGETPLATFORM in Dockerfile

* Trying with just one platform

* Fix issues with missing man-db in docker build workflow; added man-db to depends in deb builds for linux

* Sicthed docker from tightvnc to tigervnc to match oio.  This getting the apt package name right.

* Going back to single platform to debug this thing

* Trying with just arm64

* Removing arm/v7 from docker images.  Takes too long to build and just wastes our github actions minutes.  This is assuming its a never used feature since docker is not big on raspberry pis and their ilk.

* Fix typo in control-linux; update build_deb so that files in /usr/local installed by deb are owned by root; add ubuntu user and nano in docker file for dbebugging;  when in draft only create for x86_64 platform

* Fix typo in buildDocker.yml

* Add sudo to docker image; in docker image ensure that all /usr/local/interlisp files are owned by root

* Add securityTypes none to docker entrypoint

* Updated docker base to Ubuntu 22.10 to get fixed xrdp; add xrdp to the docker image; updated user permission in docker image;

* In Dockerfile make xrdp install noninteractive

* Update medley.sh scripts to handle docker case

* Fix a couple of typos

* BuildDcoker: added pulling latest draft release (if any) when this is a draft docker build; removed checkout of medley code cause its not used

* BuildDocker: added medley checkout backin - turns pout its needed by a bunch of actions even though I dont really think they use it

* BuildDocker: moved download assets to use gh instaed of a marketplace action becauase that action could not handle draft releases.

* Tweaking medley.sh and associated tweaks to work Windows via wsl medley and docker

* adding first pass at powershell script for windows docker and wsl

* Tuning how Xvnc, medley, and vncviewer handle the various ways of exiting - eg logout vs closing viewer window.

* Tuning vncviewer launch to make sure that tty works as expected when medley.sh runs in background

* Minor typo fixes and added extra check to use of /run/shm in medley_vnc.sh

* Added SSH_KEY secret to buildReleaseIncDocker workflow

* Gertting the add SSH_KEY secret into orkflows right this time, hopefully

* Adding TERM env variable and setting USER to medley in docker image

* Debugging medley.ps1 and adding a couple of arguments

* Typo in Dockerfile medley

* Synchronizing flag processing and usage for medley.ps1 and medley.sh; refactored medley_args.sh and medley_usage.sh code.

* Adding first pass at windows installer

* Adding first pass an inno setup script for Windows installation

* Update buildLoadup workflow and downloads page for windows installer

* Fix typo in buildLoadup

* BuildLoadup make sure windows runner uses powershell

* Another typo in buildLoadup

* Another typo in buildLoadup; damn those double quotes

* Updating handling of windows installer in buildLoadup, added vncviewer to medley.iss install

* Unknown syntax error in buildLoadup

* Another damn typo from double quotes

* buildLoadup: fixed loadup job outputs

* buidLoadup: fixed bug with COMBINED_RELEASE_TAG; fixed Upload script in windows job to be compatible with actions.script v6.

* buidLoadup: upload win installer adapted to find draft releases as well as full releases

* BuildLoadup: fixing up javascript in actions in windows job to use / instead of \ in pathname

* BuildLoadup: changing win installer update to same action used for other release assets

* Fix windows installer file name; in BuildLoadup move update downl;oad page to the Windows runner because uploading the window-installer changes the release download url, so updating the downloads page must be done after the windows installer upload.; General buildLoadup cleanup

* Run md2html to update downloads page

* Fix typo in build_deb.sh

* Removing some leftover crud in medley_usage.sh

* Fixing up windows installer a bit, mostly cosmetic

* Adding support for WSL1; mostly forcing --vnc and changing how to find open ports and displays since WSL1 networking is different tha WSL2

* Update manual page for new Windows Medley script

* First pass done for man page that incorporates new Windows medley script.  Add Xvnc wait before calling run-medley in case of docker to prevent occasonal missing X windows server error.

* Change buildLoadup to update man page to a draft if this is a draft run.
2023-02-18 06:19:57 -08:00
Frank Halasz
3fa571f798 Fix buildLoadup.yml to craete TARBALL directory if it doesn't exist (#1060) 2023-01-31 00:37:23 -08:00
Frank Halasz
10a598865f Create UNIXUTILS in library to go along with UNIXPRINTER, et al (#1051)
* Create UNIXUTILS file in library with ShellWhich function - linux which command equivalent.  Also move ShellCommand from UNIXPRINT to UNIXUTILS.

* Adding UNIXUTILS to LOADUP-FULL so it gets included in full.sysout

* Change of names from open(er) to browse(r). Refine the browse(r) functions a bit

* Minor bug fixes

* Add (FILES UNIXUTILS) to UNIXPRINTCOMS so that ShellCommand is loaded in case only UNIXPRINT is loaded.  For backward compatibility.
2023-01-30 23:43:10 -08:00
Frank Halasz
f2ef7cc8f6 Installers for Linux: workflow changes and more to support standard Linux installations (#1058)
* Adding LANG environment variable to docker image; adding MAIKO_ and MEDLEY_INSTALLDIR environment variables; Changing /usr/local/bin/run-medley to a symbolic link instead of a shell script

* Added draft input to all workflows, so that can create draft releases as well as regular releases

* Update buildDocker.yml to handle deprecation of set-output and to update versions of actions to handle node 12 to node 16 transition.

* Added scripts and updated github workflows to support creation of deb installers for Linux and WSL

* Fix minor bug in buildLoadup.yml

* First pass implementation of deb installer

* Fixing wget of vncviewer in build_deb.sh

* Fix typo in buildLoadup.yml in call to build_deb.sh

* Multiple small fixes to medley.sh from debugging.  Change postinst script and how its created in build_deb.  Add postrm script in build_deb.

* Reworking vnc portion of Medley.sh - including removing dependency on startx and xinit

* Misc fixes to medley_vnc.sh script; fix creation of postinst and postrm in build_deb.sh

* Cleaning up window geometry amd screen size in medley.sh

* Created apps.sysout loadup with rooms, notecards, clos on top of full.sysout; added plumbing for -apps flag to run-medley to run this syout; created a new init file for this sysout that calls MEDLEYDIR-INIT;  all of this is based on online.sysout

* Create UNIXUTILS file in library with ShellWhich function - linux which command equivalent.  Also move ShellCommand from UNIXPRINT to UNIXUTILS.

* Adding UNIXUTILS to LOADUP-FULL so it gets included in full.sysout

* Change of names from open(er) to browse(r). Refine the browse(r) functions a bit

* Minor bug fixes

* Update Apps.ShowDoc to new ShellBrowsefunction

* Adding apps support into the .github builds;  adding xdg-utils as dependecy in debs

* fixing bug as to where notecards is checked out in BuildLoadup.  Needs to be before loadups so app.sysout can be built

* Added defaulting to Interlisp exec tomedley.sh and APPS-INIT.  Works only in apps.sysout.  Added wlsu package to wsl debs since wlsview is not always installed by defailt.  Fixed Notefiles directories issues in Apps.Init.   Made medley.sh compute medleydir based on where the script is located. Can now work for /usr/lcal/interlisp as well as local directories.

* Added -id - feature to medley.sh so id can be directory mae.  Removed extraneous set -x commands in medley.sh from debugging.  In build_deb.sh changed compression to xz for deb files since debian does not support the zstd compression that ubuntu uses.

* For wsl deb files, make sure wslu package is not 4.0 - which is bad.  Change how we choose an open port and open display in medley_vnc.sh.  Add notecards download to build_deb.sh.  Fix type in medley.sh

* Add (FILES UNIXUTILS) to UNIXPRINTCOMS so that ShellCommand is loaded in case only UNIXPRINT is loaded.  For backward compatibility.

* Moved medley.sh and associates to script/medley dir; fixed up args to medley.sh;  added usage and --help to medley.sh

* Add comprehensive tar files to releases to match deb files for local installs; add --id -- arg to medley.sh

* Remove remaining reference to usr/local/interlisp to ensure local install works

* Fix bug in buildLoadup - couldn't file install tars

* Add medley symbolic linkto loadups, so it comes thru to local install tars

* Fix up error messaging in medley.sh scripts

* Created man page for medley and added it throughout build up, installers, etc.

* Add support for a downloads page on OIO, including creating said page while building a release

* Fix full_release_tag in downloads section of buildLoadup.yml

* Misc fixups on downloads page

* Adding online man page stored on oio static server.

* Fix minor bug in man installation in deb file
2023-01-30 22:19:07 -08:00
Larry Masinter
0c9b539bc4 masterscope extensions doc (internal) + tweak helpsys (#1048) 2023-01-17 22:23:06 -08:00
rmkaplan
b53b6c4ba7 Rmk74 run with pseudohosts (#1017)
* FILEPKG: EDITCALLERS now notices possible new stream after getting filemap

* GITFNS: cdw and cdg commands preserve pseudohost

* SAMEDIR:  match all combinations of truefilename and pseudofilename

* PSEUDOHOSTS:  Bug fix--openstream failure goes thru normal error machinery

* ADIR: Put in stubs for TRUEFILENAME, PSEUDOFILENAME, PSEUDOHOSTP

Also, fix \COPYSYS so it works with pseudhosts
2023-01-16 00:36:39 -08:00
Larry Masinter
e5593ba0dc notify \IDLING.OVER in \IDLE.OUT (#973)
\IDLE.OUT is a backgrround function. For reasons not well understood, sometimes after returning from LOGOUT, the RESETSAVED notify to \IDLING.OVER doesn't happen.
This change insures that it does.
(found during testing of LOGOUT/return from LOGOUT with changing ethernet enalbing)
2022-12-31 08:44:22 -08:00
Larry Masinter
5fea4e6666 loadup-db.sh fix -- don't rely on loadups (#1035) 2022-12-29 19:11:19 -08:00
Larry Masinter
306af20e91 The macroexpansion of UNDOABLY shouldn't depend on runtime rebinding of LISPXHIST (#1023)
The history and undo code was written before the record package; but someone introduced a DEFMACRO UNDOABLY macro to do the work. But cached macroexpansions shouldn't depend on load/run/compile time values.
2022-12-29 18:48:12 -08:00
rmkaplan
bb637c5b73 UNIXCOMM: Eliminated the new shell device in favor of a single shell device (#1034)
Also removed unused functions labeled as "obsolete" after Medley 2
2022-12-23 11:37:23 -08:00
Larry Masinter
7eb12ee68b Revert "Lmm cleanup new shell device (#1006)" (#1033)
This reverts commit 97cb04be46.
2022-12-17 17:22:41 -08:00
Larry Masinter
97cb04be46 Lmm cleanup new shell device (#1006)
* reset defaultexternalformat when returning

* Replace so *SHELL-DEVICE* is default
2022-12-02 20:48:48 -08:00
Frank Halasz
62754015b0 Update Medley build workflow to add clos to release tars and to update various actions to latest versions (#1025)
* Add clos to release tars for Medley.  To ease adding clos to Medley Online.

* Fix buildLoadup.yml to account for the fact that scripts/loadup-all.sh now automatically includes scripts/copy-all.sh.  Was failing due to redundant copying of loadup files.

* Get rid of ::set-output:: in buildLoadup.yml and replace with echo >> .  This is due to that fact that ::set-output:: has been deprecated by Github and will soon cause an error if used in a workflow.

* Update actions/checkout and robinraju/release-downloader to latest versions because versions currently being used relied on Node 12, which has been deprecated.  Newer versions of these actions use Node 16, which is still supported.

* Fix typo in actions/checkout new version number

* Oops.  Node 16 is supported by actions/checkout@v3 not by ...@v2.5.0

* Update AButler/upload-release-assets fron @v2.0 to @v2.0.2 to take care of Node 12 versus Node16 issues caused by Node 12 actions being deprecated by github.

* Fix quoting bugs on conversions from ::set-output:: to

* Try switching to the ncipollo/release-action acgtion in place of using the api to create the release and then the AButler/upload-release-assets action to upload the assets.  This is to solve the failures when try to update a release using the force input parameter.

* Adding step to delete existing release with given tag, if any.  Needed when force parameter is true.

* Fixing typo?

* Typos again?

* Start changing how RELEASE_TAG environment variable is used throughout build_loadup

* Finish changing how RELEASE_TAG environment variable is used throughout build_loadup

* Update abatilo/release-info-action to v1.3.2 to take care of ::set-output:: deprecation

* Add commit to allow testing of release builds

* Fix to Issue#1022 Error during greet

* More fix to Issue#1022.  Turns out need to reset MEDLEYDIR for AFTERMAKESYS as well as at greet time.  Discovered during loadup-online.sh with no greet file.

* Removing AFTERMAKESYS event action from (MEDLEY-INIT-VARS).  Cleaning up a bit the GREET event action in (MEDLEY-INIT-VARS).  Remove issue with MEDLEY-INIT-VARS being called after the user greet file in the AFTERMAKESYS case.
2022-11-26 15:05:45 -08:00
Frank Halasz
9d09033cc4 Fix to Issue#1022 "Error during greet" (#1027)
* Fix to Issue#1022 Error during greet

* More fix to Issue#1022.  Turns out need to reset MEDLEYDIR for AFTERMAKESYS as well as at greet time.  Discovered during loadup-online.sh with no greet file.

* Removing AFTERMAKESYS event action from (MEDLEY-INIT-VARS).  Cleaning up a bit the GREET event action in (MEDLEY-INIT-VARS).  Remove issue with MEDLEY-INIT-VARS being called after the user greet file in the AFTERMAKESYS case.
2022-11-26 11:46:41 -08:00
Nick Briggs
d9c144d966 Allow user override of -title option (#1026) 2022-11-21 13:04:07 -08:00
Nick Briggs
17dd03a358 Use -title rather than -t to specify window title (#1020) 2022-11-14 09:48:21 -08:00
Larry Masinter
382881a068 fix typos EFECT vs EFFECT in templates for CL:WHEN and CL:UNLESS (#1015) 2022-11-02 11:59:39 -07:00
Larry Masinter
d0d952a10d make SETQ and typed in calls undoable (first steps) (#996)
* First steps to make UNDO to work again

* make sure the right SETQ (CL vs IL) is used

* The change surfaced a irritating warning about the variable presumed to be SPECIAL
2022-10-25 15:40:41 -07:00
Larry Masinter
d5d21397d4 another pass at variable initialization after logout savevm sysout makesys (#1003)
This corrects some errors in the handling of initializing variables across SAVEVM, LOGOUT, SYSOUT and MAKESYS.
This is all now handled by MEDLEY-INIT-VARS (function and variable) which is called as an EVENTFN.
BEFOREMAKESYS (invoked by ENDLOADUP) clears the variables to a default setting (all directories are just {DSK}).
The other "BEFORE" events save away the current values of the variables in MEDLEY-INIT-VARS.

In order to get this to work it was necessary to change a hack for deciding where to find EXPORTS.ALL and WHEREIS.HASH. Now  if you do `./scripts/loadup-all.sh` to make a full, lisp sysouts, exports.all and whereis.hash it will still build the sysouts in tmp/ but will also "link" new versions in loadups (and library for exports.all). This replaces the previous hack scanning the sysout name for "tmp/".
MEDLEY-INIT-VARS had been called both by the AROUNDEXITFN and AFTER*FORMS.
2022-10-25 14:43:57 -07:00
Larry Masinter
7a4470ce8b Rework MEDLEYDIR before/after logout to substitute instead of reset (#998)
* Rework MEDLEYDIR before/after logout to substitute instead of reset

* debugging

* working when changing home directory

* fix bug and removed redundtant declarations
2022-10-24 07:10:45 -07:00
Larry Masinter
32ff7b7649 DEFAULTPRINTINGHOST can have list members as per comments (#999) 2022-10-23 23:35:50 -07:00
Nick Briggs
096d860ac8 Update \SENDMESSAGE.RESTARTABLE usage of OPENSTRINGSTREAM (#997)
\SENDMESSAGE.RESTARTABLE unconditionally used OPENSTRINGSTREAM on its
argument, which is not usually a string. Now, only use OPENSTRINGSTREAM
if the argument is a string, otherwise pass it unchanged to TEDIT.
2022-10-16 17:31:14 -07:00
Larry Masinter
418b1df00d run-medley has a -NF option in caps used by loadup, means no fork (#978) 2022-10-13 20:35:37 -07:00
rmkaplan
ba90344080 MODERNIZE: Fix bug in MODERNWINDOW (Issue #972 ) (#976) 2022-10-13 16:08:28 -07:00
Frank Halasz
0eac6efb61 Fix Issue#985 HELPSYS/CLHS.LOOKUP fails when MEDLEYDIR not writeable. (#994) 2022-10-13 10:48:42 -07:00
Larry Masinter
540aff091c When restarting after logout, don't print warning on closed stream (#990) 2022-10-12 12:00:43 -07:00
Larry Masinter
3f244f6cd3 Change SYSTEM-EXTERNALFORMAT to more accurately guess the external format (#987) 2022-10-10 22:29:21 -07:00
Larry Masinter
58557d383a Fix simple typo in UNIXCOMM (#979) 2022-10-10 18:57:26 -07:00
Larry Masinter
882fbacf59 when constructing a stream, it might not have a FDEV -- allow it to print (#984)
* when constructing a stream, it might not have a FDEV -- alow it to print

* Stream with no FDEV just prints as Stream
2022-10-10 18:56:43 -07:00
Frank Halasz
70ce516e0c Merge pull request #983 from Interlisp/save-clhs-index
the hyperspec is static -- don't need to read the index
2022-10-10 00:03:57 -07:00
Larry Masinter
fdb573c761 the hyperspec is static -- don't need to read the index 2022-10-09 16:43:34 -07:00
Larry Masinter
06368f95eb run-medley should not quote patterns in 'case' command, either useless or broken (#977) 2022-10-08 10:04:46 -07:00
Larry Masinter
654ebc359c Temporary workaround until larger fix is done (see issue #768 (#971) 2022-10-07 15:06:32 -07:00
Frank Halasz
4e38802325 Merge pull request #965 from Interlisp/rmk71--upper-case-file-names
COMPAREDIRECTORIES:  upper-case-file-names
2022-10-04 11:32:01 -07:00
rmkaplan
b43b63b287 COMPAREDIRECTORIES: Oops 2022-10-03 12:06:38 -07:00
rmkaplan
016097e8bf COMPAREDIRECTORIES: upper-case-file-names
Plus typo fixes in the TEDIT file.

Note that the MATCHNAME has always been uppercase, and that the directory matching has been filtered using the FILEDIRCASEARRAY
2022-10-03 12:01:16 -07:00
Matt Heffron
99321e7951 Add .gitattributes so *.TEDIT, *.LCOM, *.DFASL, and *.SKETCH are always treated as binary (and the lowercase versions). (#957) 2022-10-03 08:02:30 -07:00
Frank Halasz
8e4fc4ab74 Fix Issue#961: GITFNS - {GMEDLEY} changed by LOGOUT/return from LOGOUT (#962)
* TEDIT-PF-SEE:  typo

* GITFNS:  Typo and better behavior on gwc delete

Message instead of trying to delete NIL

* GITFNS: Fix merge-base in PRC #958

* Fix Medley Issue #961 - {GMEDLEY} changed by LOGOUT/return

Co-authored-by: rmkaplan <ron.kaplan@post.harvard.edu>
2022-10-03 07:59:22 -07:00
rmkaplan
c005cf86bf Rmk70: minor fixups for GITFNS and TEDIT-PF-SEE (#956)
* TEDIT-PF-SEE:  typo

* GITFNS:  Typo and better behavior on gwc delete

Message instead of trying to delete NIL

* GITFNS: Fix merge-base in PRC #958
2022-10-01 13:54:40 -07:00
Larry Masinter
ecc2b22207 IDLE.PROFILE has LOGOUT and SAVEVM options; add some delays in IDLE hacks (#948)
* IFLE.PROFILE has LOGOUT and SAVEVM options; add some delays in IDLE hacks

* add extra delays so the demos work more like intended

* IDLEDEMO loads lispusers with idle hacks

* make sure NOTIFY.EVENT \IDLING.OVER is called

* clean up resetsave

* slow down KINETIC

* Redo logic to minimize diffs with 1992 version

* minor tweaks to \IDLER for making sure mouse doesn't hang
2022-09-28 22:39:31 -07:00
Larry Masinter
d0945f7a5f Update HELPSYS to find CLHS (Common Lisp HyperSpec) and lispusers/library docs (#917)
* Update HELPSYS to find CLHS (Common Lisp HyperSpec) and lispusers/library docs

* restore lost edits; fix package inclusion for XCL and LISP

* mere with previous commit

* try again
2022-09-22 09:01:40 -07:00
Larry Masinter
add65a9397 MANAGER.DFASL errored when loading -- cl:compile-file(manager) now (#945) 2022-09-21 18:03:08 -07:00
Matt Heffron
0474f924a4 This is the Histmenu+Manager+Clipboard branch WITHOUT the changes to Clipboard (since there were issues with conflicting key bindings) (#944) 2022-09-20 07:49:23 -07:00
rmkaplan
a387094eab Rmk68: Fix GITFNS PRC file lists, plus a few minor fixups (#937)
* INSPECT:  Allow optional user-specified tags in window titles to help keep track of multiple instances of the same datatype

* DWIM:  Remove warning about order of evaluation change that happened in 1980

* BREAK-AND-TRACE:  remake to get functions in filemap

* GITFNS, COMPAREDIRECTORIES:  prc file list correlates with github PR web page

* DWIM, DWIMIFY:  Removed WARNUSER and its calls

* INSPECT:  Value of INSPECT is the inspect window
(as IRM says it should be)
2022-09-18 08:10:15 -07:00
Larry Masinter
541a07e09b XORCursorPatch is 1186 only (#938) 2022-09-15 12:56:39 -07:00
Larry Masinter
5ee5482dd2 GETDEF binds variable when getting for edit -- needed by loops rather than a unreliable STKPOS (#926) 2022-09-13 13:22:06 -07:00
Larry Masinter
095beef454 misc lispusers changes -- UNIXYCD, lsee (#889)
* Move cd, ls, pwd to it's own little lispusers (needs documentation)

* add .TXT documentation, also patch lsee script to translate ^ and _ to up and left arrow

* Add document for CONDITIONGRAPH
2022-09-13 12:04:23 -07:00
Larry Masinter
06a7356b00 add IOCHAR to exportfiles and export \CATRANSLATE (#933) 2022-09-11 21:31:58 -07:00
Larry Masinter
147abac04c CL:ROOM no longer errors (#890)
With 4-byte atoms it no longer makes sense to report atom-space separately.
2022-09-05 20:27:08 -07:00
Larry Masinter
56a52af6b9 Revert "IDLE will LOGOUT instead of SAVEVM if ONLINEP (#904)" (#922)
This reverts commit fad70d4947.
2022-08-29 14:53:15 -07:00
Larry Masinter
fad70d4947 IDLE will LOGOUT instead of SAVEVM if ONLINEP (#904)
* IDLE will LOGOUT instead of SAVEVM if ONLINEP
* patched some idle hacks fora  better show
* idle.random chooses an idle program at random among those loaded
2022-08-26 11:27:48 -07:00
Larry Masinter
f4c91ec419 LispUsers art (#914) 2022-08-25 09:02:04 -07:00
Larry Masinter
f5e48847c9 thie problem only shows when you switch EDITMODE but have some SEDIT windows open (#912) 2022-08-24 07:24:08 -07:00
Larry Masinter
b90bf65be9 Move pick to lispusers (#881)
* Make PICK a Lispusers module

* PICK moved to lispusers, HCFILES moved to test repo (currently new/printing)

* redo PICK documentation

* Update documents and projects choices

* more testing and restore lost edits to TEDIT

* fix some typos
2022-08-14 13:25:17 -07:00
Larry Masinter
d379bcc102 Files have been commited to test repo, remove from medley (#878) 2022-08-14 12:14:54 -07:00
rmkaplan
39a7512458 Rmk66: 2 little glitches, plus GITFNS prc dealing better with forking (#887)
* VTCHAT:  Changed name of CHARSET field to avoid ambiguity

Even though field was never referenced

* INSPECT: WHERE argument was passed incorrectly to datatype subfunction

* GITFNS: Better recognition of funny cases (colon) etc

Reconciled with Larry's previous commit

* COMPAREDIRECTORIES:  Bug fix in separate-panel display
2022-08-12 22:01:04 -07:00
Larry Masinter
431d80fb3c Eliminate duplicate declarations for TABLEBROWSER record, remove TABLEBROWSERDECLS file (#877)
* Eliminate duplicate declarations for TABLEBROWSER record, remove TABLEBROWSERDECLS file

* change packages that used to load TABEBROWSERDECLS SOURCE to just LOADCOMP TABLEBROWSER

* make sure full RECORD is saved

* ARCHIVETOOL update of ARCHIVEBROWSER but no docs and looks like PARC-only
2022-08-12 11:23:40 -07:00
Larry Masinter
78b76f6801 GIT-INIT called after return to LOGOUT or SYSOUT etc; add option of making subdirectory to repo (#883) 2022-08-11 10:56:27 -07:00
Larry Masinter
16517cdfc5 Remove bignum test from \INSERTTREE -- was just a debugging aid (#863) 2022-08-10 21:09:12 -07:00
Nick Briggs
902d542121 IBM EGA fonts renamed (#882)
* Added IBM-EGA fixed pitch font files

* move IBM-EGA fonts to file names that will be recognized

Co-authored-by: Matt Heffron <heffron@alumni.caltech.edu>
2022-08-10 20:22:54 -07:00
Tim Bradshaw
c708f2ac55 make /usr/local/bin/medley run the right medley (#885)
welcome @tfeb
2022-08-10 11:12:28 -07:00
Larry Masinter
43e6801341 copying format info to match the ultimate destination doesn't work for displaystreams (#875) 2022-08-09 12:44:35 -07:00
Larry Masinter
27a6063ce9 \RPLPTR when run interpreted doesn't work with large vmem pointers (#866)
* \RPLPTR when run interpreted doesn't work with large vmem pointers

* oops, misread maiko N_OP_rplptr; this is closer

* Make LLNEW UFNs and functions run renamed match maiko interp wrt high 4 bits
2022-07-30 19:22:37 -07:00
Larry Masinter
cd6b64efa2 unsafe.to.modify only warns if redefining compiled with interpreted (or in original UNSAFE.TO.MODIFY.FNS (#852)
* unsafe.to.modify only warns if redefining compiled with interpreted (or in original UNSAFE.TO.MODIFY.FNS

* Add list of functions you said OK to modify
2022-07-26 23:15:27 -07:00
Larry Masinter
222da55f69 Compile color files to allow color imageobj -- even though color doesn't work yet (#864) 2022-07-26 23:12:42 -07:00
rmkaplan
92f85c5957 Rmk64: mainly separate panels for GITFNS display, FILEPOS speed up (#862)
* HRULE:  Add a PREPRINTFN for horizontal rules

Looks better in plaintext files

* GITFNS, COMPAREDIRECTORIES:  Group earler/later in separate segments

GIT-CDBROWSER-SEPARATE-DIRECTIONS defaults to T

* FILEIO: INITVARS rather than VARS for FILING.TYPES

To avoid contamination with values from other files (like LAFITE)

* FILEPKG: SEPRCASE in EDITCALLERS includes comma and quote even if no DWIMIFYCOMPLFG

Also seprate the caseinsensitive UPPERCASEARRAY from the SEPRCASE array

* IOCHAR: Open code the call to \INCCODE.EOLC

About a 30% speed up in the slow (casearray/skip) case.  Eventually macros should be defined for the externalformat interface functions, for now it is nice to be able to trace/break them.

* EXTERNALFORMAT: a little bit of cleanup

particularly around EOLC
2022-07-25 19:12:52 -07:00
rmkaplan
6376579b1c Rmk63 backccode peekccode eolc (#853)
* EXTERNALFORMAT,UNICODE,XCCS: Consistent naming of \PEEKCCODE(.EOL), \BACKCCODE returns the code

It was confusing that the naming of the peek functions was inconsistent with the inccode and backccode functions with respect to the EOLC qualifier.  Now uniformaly, the unqualified names (\PEEKCCODE, \BACKCCODE, \INCCODE) do not do any EOL interpretation.  The qualified-name functions (\PEEKCCODE.EOLC, \INCCODE.EOLC, \BACKCCODE.EOLC) do EOL interpretation.

Also, the \BACKCCODE interface is changed so that it returns the code corresponding to the bytes that it passed over.  This simplifies some of the callers.

* Clients of \PEEKCCODE \BACKCCODE and .EOL

Small changes either to fix inconsistencies (backing, reading, peeking with inconsistent EOL interpretation), updating the names in a few other cases, a few simplifications.

* glitches in ATERM, HARDCOPY updates
2022-07-21 10:36:19 -07:00
Larry Masinter
5db76b4998 compile COLOROBJ for image object getfn (#854) 2022-07-21 10:18:24 -07:00
rmkaplan
2b1d39b544 MAIKOCOLOR: Newer version than the one in master? (#846)
I have this one in my working directory, and it seems to be bigger than the one in the repo and its previous version is later than the version in the repo.  Maybe this is better?  I putting this out as a draft for people to look at.
2022-07-20 23:36:32 -07:00
rmkaplan
a23ce42726 Rmk62 old tedit formats and nits (#851)
* TEDIT-FIND, TEDIT-OFD: Read old-format TEDIT files

TEDIT-OFD also traps non-stream TEXT arguments that should no longer propagate

* EDITKEYS: Only BKSYSBUF when TEDIT has the TTY

Also, changed the name from Function Keys to Tedit Keys, made the shrunk window open on left-click

* COMPAREDIRECTORIES: better format when one of the columns is empty

* GITFNS: "cob next" asks to confirm the parent branch

* TEDIT-FILE:  Pass TEXTSTREAM to TEDIT.GET.OBJECT

* TEDIT-FILE again:  same problem in readers for old formats

* Eliminate (OPENTEXTSTREAM "")
2022-07-20 22:52:25 -07:00
Larry Masinter
3c26eeb964 remove .IMPTR files (byproduct of hardcopy of tedit Interlisp Manual) (#849) 2022-07-20 20:21:42 -07:00
rmkaplan
e5961cde2c Merge pull request #850 from Interlisp/loadup-passthru-NF
Use -NF (no fork) on ldinit during loadup
2022-07-20 12:01:04 -07:00
Larry Masinter
8441c257d5 Use -NF (no fork) on ldinit during loadup 2022-07-20 08:04:38 -07:00
Larry Masinter
96b5a70b90 make tmp dir if not there; add README for scripts (#844) 2022-07-18 16:22:14 -07:00
rmkaplan
0d13ed6a9d Merge pull request #847 from Interlisp/tmp-without-slash
run-medley tmp/full.sysout add tmp
2022-07-18 12:14:37 -07:00
Larry Masinter
f3b73a5756 run-medley tmp/full.sysout add tmp 2022-07-18 12:13:22 -07:00
rmkaplan
a54888734e FONT, EDITFONT: Cleanup strike font reading and writing (#845)
EDITFONThad its own slightly different version.  Now centralized in FONT with slight adjustments to internal interfaces.
Note that we don't have a way of writing AC font files, as near as I can tell
2022-07-17 21:22:56 -07:00
rmkaplan
06664219ca Rmk57 mostly gitfns improvements, other minor cleanups (#843)
* MAKEINIT:  Remove bogus non-ascii character from comments

* UPCSTATS: move to obsolete

* GITFNS: better interface to process stream

Now only looks at the process return code, gets all output only from redirected streams.  Also offers to increase the diff.renameLimit if it is too small for the branch comparison.

* COMPAREDIRECTORIES:  reformat browser output

The lengths are now in their own column.  Also, the < and > are in different columns, to make it easier to pick out which side is newer.

* CLIPBOARD.TXT: documented that it uses (SYSTEM-EXTERNALFORMAT)

* GITFNS:  Fixed a glitch in the renameLimit

* GITFNS: Test for gh

* COMPAREDIRECTORIES:  Fix loadup record sequence

* Don't overwrite fixed NCFILES in MEDLEY-UTILS

* SKETCHOBJ and TEDIT-FILE already merged

Co-authored-by: Larry Masinter <LMM@acm.org>
2022-07-17 19:13:25 -07:00
rmkaplan
331f748652 Merge pull request #837 from Interlisp/TEDIT3-Refactor-TEDIT.BUILD.PCTB
Tedit3 refactor tedit.build.pctb
2022-07-17 16:09:02 -07:00
Nick Briggs
e2748dc556 Merge branch 'master' into TEDIT3-Refactor-TEDIT.BUILD.PCTB 2022-07-17 15:51:41 -07:00
Larry Masinter
c1fb892333 fix to HCFILES to pick up sketch files; bug fix sketch (#840)
* fix to HCFILES to pick up sketch files; bug fix sketch

* redo HCFILES patch to pick up .SKETCH and .TXT files
2022-07-17 13:04:43 -07:00
Larry Masinter
c437b6c3bb fix oklibrary and use to not fail when file has been renamed (#842) 2022-07-17 05:55:03 -07:00
Frank Halasz
6ff047828e Part of fix to Issue #795. buildLoadup.yml workflow now auto-generates release notes, allowing for release to be created in non-draft status. (#841) 2022-07-16 21:38:47 -07:00
rmkaplan
4238dc3888 Rmk56 filepos with external formats #3 (#827)
* TESTUPF:  Move from internal/ to internal/test/unpackfilename

to be parallel with filepos

* IOCHAR:  FILEPOS respects external format (#3)

* FILEPKG: EDITCALLERS speed up with new FILEPOS

* internal/test/filepos:  Testing jig and cases for new FILEPOS

* EXTERNALFORMAT, IOCHAR: fix external-format glitches
2022-07-16 21:30:54 -07:00
rmkaplan
7a220ddcba Tedit2 move tedit files to separate tedit subdirectory attempt 2 (#836)
* TEDIT files: deleted from library/, renamed to library>tedit.TEDIT-xxx

* PSEUDOHOSTS:  Error if file won't open

* LOADUP-*, MEDLEYDIR, UNICODE

Adjustment for TEDIT-xxx, plus moving UNICODE to the beginning of LOADUP-LISP, with UNICODEDIRECTORIES creating in MEDLEYDIR
2022-07-16 21:24:32 -07:00
rmkaplan
41bb28f01e Merge pull request #839 from Interlisp/loadup-fixes
loadup and run-medley script bug fixes
2022-07-16 16:58:26 -07:00
Larry Masinter
2728839bc7 fix typo 2022-07-16 16:04:33 -07:00
Larry Masinter
2120f5f458 loadup and run-medley script bug fixes 2022-07-16 11:51:58 -07:00
rmkaplan
8ee32f6243 Rmk55 gitfns with redirect (#826)
* CLIPBOARD, FILEIO: external format

CLIPBOARD uses SYSTEM-EXTERNALFORMAT.
FILEIO:  added sourceparameters argument to COPYFILE, so format can be specified.

* GITFNS:  rework to avoid hanging process stream

Redirects command output to tmp output and error streams, at most only looks for a COMPLETED signal in the process stream (which still sometimes hangs)

* EXAMINEDEFS:  Asks for a menu position on a keyboard call

(Otherwise, the chunk menu may be buried under the TTY window)
2022-07-15 18:01:30 -07:00
rmkaplan
efa4ae1019 TEDIT-FILE: Split up TEDIT.BUILD.PCTB into separate subfunctions
Should be easier to update and extend.  Not clear that the code for making a string piece is still needed here, since we interpret strings as file names.  So this may be further simplified.  I hope this also will give us a better handle on some of the file inconsistencies, by isolating the readers for formatted and unformatted files.
2022-07-14 22:09:10 -07:00
rmkaplan
8c75696e65 LOADUP-*, MEDLEYDIR, UNICODE
Adjustment for TEDIT-xxx, plus moving UNICODE to the beginning of LOADUP-LISP, with UNICODEDIRECTORIES creating in MEDLEYDIR
2022-07-14 18:49:58 -07:00
rmkaplan
17792da409 PSEUDOHOSTS: Error if file won't open 2022-07-14 18:48:54 -07:00
rmkaplan
f721045f7c TEDIT files: deleted from library/, renamed to library>tedit.TEDIT-xxx 2022-07-14 18:46:04 -07:00
rmkaplan
de3185002c LLDISPLAY, WINDOW, BIGBITMAPS: share common DSPCREATE, ensure formats (#824) 2022-07-09 17:14:34 -07:00
rmkaplan
c93e620624 Rmk53 added system externalformat (#823)
* CLSTREAMS: Fix EOL/external format on error stream (synonym and 2-way) #815

* CMLFORMAT: makefile NEW to get functions in filemap

* CLSTREAMS: cleanup formats for more types

* FILEIO:  Add readonly bit in streams for external-format

* UNIXCOMM, EXTERNALFORMAT: Introduce STREAM-EXTERNALFORMAT
2022-07-09 17:12:27 -07:00
rmkaplan
718d9f988c Rmk52 fix external format for error stream (#817)
* CLSTREAMS: Fix EOL/external format on error stream (synonym and 2-way) #815

* CMLFORMAT: makefile NEW to get functions in filemap

* CLSTREAMS: cleanup formats for more types

* FILEIO:  Add readonly bit in streams for external-format
2022-07-09 17:08:16 -07:00
Larry Masinter
06953f408a fix #411 scanfilehelp suggested 1100support (#766) 2022-07-08 12:23:00 -07:00
rmkaplan
32e8f44d9a Merge pull request #804 from Interlisp/more-unsafe
mark \ fns and SI fns as potentially unsafe to run interpreted
2022-07-04 12:37:35 -07:00
Larry Masinter
25e791de4f pull more newer library lispusers internal(/library) files from envos (#813) 2022-07-03 21:24:36 -07:00
rmkaplan
d7ca40ebeb Rmk51 end game of external format integration (#814)
* Compile device-creation functions for new default interface

* UNICODE:  minor bug

* LLINTERP: MOVD? APPLY* to SPREADAPPLY*

* External format interface: a few more adjustments

* CLSTREAMS: Recompile, no source change

* PRETTYFILEINDEX: suppress when printing gitmaps to a non-display stream

* UNIXCOMM: Default format comes from device

Also, I seemed to have reverted back to LCOM with FAKE-COMPILE-FILE
2022-07-03 18:49:04 -07:00
Larry Masinter
f86be45834 Add documents from envos/LISPCORE/internal/docs (#812) 2022-07-02 22:08:47 -07:00
Larry Masinter
32128f5e19 MEDLEY-UILS loadup-db run-medley fixes (#808)
* MEDLEY-UILS loadup-db run-medley fixes

* UNIXCOMM compile to DFASL; only set UTF-8 if getenv(LANG). loadup-db no lisp.virtualmem
2022-06-28 11:45:59 -07:00
Frank Halasz
0d07ed6379 Remove Draft status from Medley release in buildoadup.yml to fix Issue #795. (#796) 2022-06-27 12:44:48 -07:00
rmkaplan
9660232d6e Rmk50: TERMINAL fonts plus fixed masterscope conflicts (#806)
* EDITFONT:  CHARSET in  interface

* IDLEHAX, LIFE, TMAX-ENDNOTE:  Clean up conflicts in making full masterscope DB

* FONT:  Add charset coercion for TERMINAL

* TERMINAL fonts:  Remove bogus character set files

so that better coercions can take place
2022-06-27 11:49:36 -07:00
rmkaplan
13e2b5cda6 Merge pull request #805 from Interlisp/process-utf8
assume process streams are UTF-8
2022-06-26 18:43:07 -07:00
rmkaplan
648335bfec Rmk49: responds to #800 (#803)
* TEDIT, TEXTOFD:  Pass FORMAT in PROPS to OPENSTREAM

In TEDIT and OPENTEXTSTREAM.  I don't think TEDIT interprets the external format, but at least the info is there

* WINDOW: CREATEW prompts on one line

It was calling PROMPTPRINT twice, which resulted in orphan-looking lines

* EXAMINEDEFS: Propagate textwidth to COMPARETEXT

* COMPARETEXT: propagate height/width of text windows, for linelength

#800

* GREP:  Will work with external formats, after FILEPOS update

Line printout could be better, if e.g. it is a Lisp source file, but...

* EXAMINEDEFS:  Propagate window width to COMPARETEXT, for LINELENGTH

* GITFNS: added fetch before git log

* PSEUDOHOSTS: Pseudohost-streams are now registered on the PH device, not the target device

* EXTERNALFORMAT, XCCS:  Globalvar declaration in wrong place

Also updated \CHECKEOLC macro

* GITFNS:  moved git fetch to beginning of prc

* GREP:  Propagated OUTSTREAM
2022-06-26 18:18:44 -07:00
Larry Masinter
8c7f42e595 assume process streams are UTF-8 2022-06-26 17:46:19 -07:00
Larry Masinter
e64a02dcfb try SYSEDIT without DFNFLG PROP 2022-06-25 18:23:01 -07:00
Larry Masinter
ae07d213f0 mark \ fns and SI fns as potentially unsafe to run interpreted 2022-06-25 18:03:00 -07:00
rmkaplan
c92622e09e Merge pull request #799 from Interlisp/rmk48
Rmk48: Miscellaneous minor updates: TEDITFILE, GITFNS, EXTERNALFORMAT, EDITINTERFACE
2022-06-22 22:52:10 -07:00
rmkaplan
90c38de8db GITFNS: If test is cloned under git-test, makes a gitfns project by default 2022-06-22 16:39:01 -07:00
rmkaplan
0ebec570e6 TEDITFILE: added TEDIT.GET.PASSWORD
Returns the password (= format version indicator) of a TEDIT formatted file, NIL if not a tedit file
2022-06-22 16:30:35 -07:00
rmkaplan
217938c104 EXTERNALFORMAT: Add \FORMATBYTESTRING, EOLC arg to \INCCODE.EOLC
Also, STREAM can be given as the format argument to \EXTERNALFORMAT, gets the stream's format.

Atoms (LF, CR, CRLF, ANY) allowed for EOL specs (caller won't need exports.all)
2022-06-22 16:28:03 -07:00
rmkaplan
5e629cebc9 EDITINTERFACE: Case-independent match of leading initials on a change-comment
Also, matching initials are recognized with or without a colon
2022-06-22 16:25:50 -07:00
rmkaplan
b320333ac1 PRINTFN: rename variabl
to clarify that it counts byte, not characters
2022-06-22 16:24:16 -07:00
Frank Halasz
16d5779db4 Fix inputs: clause in buildDocker.yml (#794) 2022-06-21 16:54:58 -07:00
rmkaplan
c5eb54a3dc Rmk46: Minor changes to comparison functions (#789)
* COMPARETEXT: Inverted nodes stay inverted when scrolled

* COMPARESOURCES: Remove unused stub for browsing in TEDIT window

* COMPAREDIRECTORIES: Upgrade to new LISPFILETYPE, add CD-COMPARE-FILES

CD-COMPARE-FILES interface to compare 2 given files, not whole directory
2022-06-13 17:07:56 -07:00
rmkaplan
3c7fb08932 Rmk47: TEDIT, GITFNS, COREIO (#791)
* COMPARETEXT: Inverted nodes stay inverted when scrolled

* COMPARESOURCES: Remove unused stub for browsing in TEDIT window

* COMPAREDIRECTORIES: Upgrade to new LISPFILETYPE, add CD-COMPARE-FILES

CD-COMPARE-FILES interface to compare 2 given files, not whole directory

* TEDIT:  Show only file name, not stream address

* COREIO: preserve STREAMPROPS on stream reopen

* GITFNS:  Various project and git-interface cleanups
2022-06-13 15:20:41 -07:00
Nick Briggs
f262c98f53 Fixes test in run-medley for inferred medley directory (#793) 2022-06-12 08:35:54 -07:00
rmkaplan
9c8d9df1ac Rmk45 testupf to internal, tedit pathnames, minor doc changes (#787)
* TESTUPF:  Moved to internal

* CLIPBOARD.TXT, MODERNIZE.TEDIT, WHEELSCROLL.TXT: Minor edits

* TEDIT, TEXTOFD:  CL:PATHNAMES are recognized as file names for opening
2022-06-04 18:32:56 -07:00
rmkaplan
894ecd6d0c Merge pull request #777 from Interlisp/rmk42--ADIR-has-new-UNPACKFILENAME.STRING
ADIR, TESTUPF:  New version of UNPACKFILENAME.STRING with test tool
2022-06-04 15:24:27 -07:00
rmkaplan
7eb0f28db4 Merge pull request #775 from Interlisp/rmk41--TEDIT-interprets-strings-as-filename
Rmk41  tedit interprets strings as filename
2022-06-04 15:23:14 -07:00
Larry Masinter
d3d2534eb1 Fixes to HCFILES from MEDLEY-UTILS to convert TEdit files to postscript 2022-06-02 17:18:29 -07:00
rmkaplan
b9994581d4 Merge pull request #780 from Interlisp/rmk44--Lispusers-to-obsolete
Rmk44  lispusers to obsolete
2022-05-24 17:36:01 -07:00
rmkaplan
ff29872150 Merge pull request #778 from Interlisp/rmk43--Move-lispusers-spline-and-c150-fonts-to-subdirectories
Move lispusers> strike and c150 fonts to subdirectories
2022-05-24 17:35:22 -07:00
rmkaplan
cb122f4c58 Move lispusers c150 and strikefont directories to obsolete/lispusers/ 2022-05-24 16:15:46 -07:00
rmkaplan
205de6fd1b ENDNOTE to obsolete (newer version in TMAX>TMAX-ENDNODE 2022-05-24 16:15:13 -07:00
rmkaplan
45b4edf040 Move lispusers> strike and c150 fonts to subdirectories
Next step will be to move the subdirectories to obsolete/
2022-05-23 22:23:06 -07:00
rmkaplan
51d9e995e1 ADIR, TESTUPF: New version of UNPACKFILENAME.STRING with test tool
See TESTUPF.TXT for testing information
2022-05-23 12:48:41 -07:00
rmkaplan
4910ea5660 MODERNIZE.TEDIT: documentation migrated from .TXT 2022-05-22 19:15:38 -07:00
rmkaplan
59f71f04c2 MACHINEINDEPENDENT: Added LISPFILETYPE
Returns type and dates in a single call
2022-05-22 14:56:47 -07:00
rmkaplan
107ea72a67 TEDIT, TEXTOFD: String TEXT is filename
Adds TEXTSTRING as a separate entry to be used when strings are not names but characters to be edited
2022-05-21 23:56:03 -07:00
rmkaplan
48ebc675a7 Rmk40 shakedown gitfns projects (#774)
* GITFNS:  smoothed out some project glitches

Also added "titlestring" to cob command when creating a new branch.
cob next "fixed a bug" will create the next branch for the current initials with the title string appended.

* MACHINEINDEPENDENT:  DOFILESLOAD tries packing on DIRECTORY as well as DIRECTORIES
2022-05-21 19:55:00 -07:00
Larry Masinter
d2ce98d131 restore-versions now sets date of version to date of commit (#624) 2022-05-16 16:49:22 -07:00
rmkaplan
8bfbe99367 Rmk38: Added git "projects" to GITFNS, plus minor updates to directory/source comparisons (#771)
* SETSTRINGLENGTH.TEDIT: Orphan TEDIT file, no code in lispusers

It will be restored when the code it goes with is moved over from LFG

* COMPAREDIRECTORIES: minor fix

* COMPARESOURCES:  Add IGNORECOMMENTS flag

* GITFNS: Add new "project" capability for multiple clones

The TEDIT file got smashed, so new features are not yet documented.  Should work as before for the Medley project.  If you set up unix variables LOOPS or NOTECARDS to point to their local clones (or just name the clones git-loops or git-notecards as sisters to your MEDLEYDIR), you should be able to do prc loops or prc notecards.

* Update GITFNS.TEDIT

Repaired the Tedit smash

* EDITINTERFACE:  All date comments at the same comment level

* EDITINTERFACE:  Improved date alignment

* GITFNS again:  added cdg and cdw commands
2022-05-13 12:50:16 -07:00
rmkaplan
d28bcf19fe Rmk36: A single commit added to rmk35 so I can test pr inclusion marking (#762)
* PSEUDOHOSTS: GETHOSTINFO of pseudohost goes to true host

* CMLPATHNAME:  Remove unused PARSE-NAMESTRING1

Avoid stumbling on it in future maintenance.  Also, remake filemap for functions and defmacros

* SAMEDIR, COMPAREDIRECTORIES: FILENAMEFIELD → FILENAMEFIELD.STRING

in a few places.  No need to hash atoms

* LLCHAR:  expose $$READONLY in inpname I.s.opr
2022-05-11 18:52:01 -07:00
rmkaplan
e0ec580fd5 Rmk35: A little FILENAMEFIELD cleanup (#763)
* PSEUDOHOSTS: GETHOSTINFO of pseudohost goes to true host

* CMLPATHNAME:  Remove unused PARSE-NAMESTRING1

Avoid stumbling on it in future maintenance.  Also, remake filemap for functions and defmacros

* SAMEDIR, COMPAREDIRECTORIES: FILENAMEFIELD → FILENAMEFIELD.STRING

in a few places.  No need to hash atoms
2022-05-11 18:48:44 -07:00
rmkaplan
b796727165 Rmk37 prc menu shows superset relations (#764)
* PSEUDOHOSTS: GETHOSTINFO of pseudohost goes to true host

* CMLPATHNAME:  Remove unused PARSE-NAMESTRING1

Avoid stumbling on it in future maintenance.  Also, remake filemap for functions and defmacros

* SAMEDIR, COMPAREDIRECTORIES: FILENAMEFIELD → FILENAMEFIELD.STRING

in a few places.  No need to hash atoms

* LLCHAR:  expose $$READONLY in inpname I.s.opr

* GITFNS: prc menu shows superset relations

* GITFNS:  Sort the prc menu

* EDITINTERFACE:  Better edit-date management

* PRETTYFILEINDEX: Destination can be any imagestream, not just display

* TEDIT-PF-SEE:  Use SEE instead of COPYTO IMAGESTREAM

to get better formatting of PRETTYFILEINDEX
2022-05-11 18:40:13 -07:00
rmkaplan
dcba1a2d60 Merge pull request #747 from Interlisp/git-release
update README and release-notes
2022-05-01 12:23:25 -07:00
rmkaplan
3f401c52a3 Merge pull request #758 from Interlisp/rmk33
Rmk33: file-system interactions:  (sub) directory enumeration (#648 #741 #752) etc.
2022-04-26 22:21:36 -07:00
rmkaplan
3de8a6d028 GITFNS: Doesn't hang on pagefull, cob improved 2022-04-24 13:53:31 -07:00
rmkaplan
d5a7d144bd COMPAREDIRECTORIES: A little bit better on DEPTH 2022-04-24 13:51:26 -07:00
rmkaplan
3364a4af07 COPYFILES: respects DEFAULTEXT/VERS in single no-stars case 2022-04-24 13:48:23 -07:00
rmkaplan
74a43b9dea LLCHAR: Expose interation variables fo I.S.OPRS instring inpname...
So can be used (carefully) in more, trickier situations.  $$OFFSET also now is the index of the current character
2022-04-24 13:46:57 -07:00
rmkaplan
3a4852cf8b UFS: Reworked directory enumeration
Eliminated dependence on DEFAULTEXT and DEFAULTVERS, better job at subdirectories
2022-04-24 13:44:39 -07:00
rmkaplan
79fd39f15c FILEPKG: Added DEPTH=2 to EDITCALLERS, reopen stream after LOADFILEMAP 2022-04-24 13:39:44 -07:00
rmkaplan
3b9a825482 ADIR: added FILENAMEFIELD.STRING 2022-04-24 13:37:49 -07:00
rmkaplan
9f5a43abd1 DIRECTORY: minor cleanup, comments 2022-04-24 13:36:50 -07:00
rmkaplan
eb33dcc7eb FILEIO: Added DEPTh parameter to \GENERATEFILES
Binds FILING.ENUMERATION.DEPTH, uses free value of DEPTH not specified
2022-04-24 13:36:31 -07:00
rmkaplan
26308b385c Rmk29: FINDFILE-WITH-EXTENSIONS, DOFILESLOAD, WHEREIS #741 (#745)
* MACHINEINDEPENDENT: better searching for foo-fie

FINDFILE-WITH-EXTENSIONS, DOFILESLOAD

* MEDLEY-UTILS, PRINTFN:  WHEREIS/PF know about foo>foo-fie

* WHERE-IS:  Just MAKEFILE-NEW to get FUNCTIONS into the filemap

* ACE does LOADCOMP itself

* MACHINEINDEPENDENT:  FINDFILE-WITH-EXTENSIONS recognized SUBDIRECTORY

* SPELLFILE:  Calls FINDFILE-WITH-EXTENSIONS at the top

So FINDFILE and FILE-NOT-FOUND will consider FOO>FOO-FIE for file FOO-FIE
2022-04-24 11:34:15 -07:00
rmkaplan
e22f10b19a Rmk30 WHEREIS for missing GETFN, TMAX fixed (#749)
* MACHINEINDEPENDENT: better searching for foo-fie

FINDFILE-WITH-EXTENSIONS, DOFILESLOAD

* MEDLEY-UTILS, PRINTFN:  WHEREIS/PF know about foo>foo-fie

* WHERE-IS:  Just MAKEFILE-NEW to get FUNCTIONS into the filemap

* ACE does LOADCOMP itself

* MACHINEINDEPENDENT:  FINDFILE-WITH-EXTENSIONS recognized SUBDIRECTORY

* SPELLFILE:  Calls FINDFILE-WITH-EXTENSIONS at the top

So FINDFILE and FILE-NOT-FOUND will consider FOO>FOO-FIE for file FOO-FIE

* WINDOWOBJ:  Missing GETFN does WHEREIS #748

* TMAX*:  Localize IMAGEFNS

The various IMAGEFNS were defined on TMAX itself, not on the file where the functions were (esp GETFN).

Also fixed some dependencies.  With new WINDOWOBJ, TMAX.TEDIT finds its image objects.

* WINDOWOBJ again:  SYSLOAD the GETFN file

Co-authored-by: Larry Masinter <LMM@acm.org>
2022-04-24 11:32:59 -07:00
rmkaplan
1eccc2e59b Rmk31 Move all TMAX* files to TMAX>TMAX* (#750)
* MACHINEINDEPENDENT: better searching for foo-fie

FINDFILE-WITH-EXTENSIONS, DOFILESLOAD

* MEDLEY-UTILS, PRINTFN:  WHEREIS/PF know about foo>foo-fie

* WHERE-IS:  Just MAKEFILE-NEW to get FUNCTIONS into the filemap

* ACE does LOADCOMP itself

* MACHINEINDEPENDENT:  FINDFILE-WITH-EXTENSIONS recognized SUBDIRECTORY

* SPELLFILE:  Calls FINDFILE-WITH-EXTENSIONS at the top

So FINDFILE and FILE-NOT-FOUND will consider FOO>FOO-FIE for file FOO-FIE

* WINDOWOBJ:  Missing GETFN does WHEREIS #748

* TMAX*:  Localize IMAGEFNS

The various IMAGEFNS were defined on TMAX itself, not on the file where the functions were (esp GETFN).

Also fixed some dependencies.  With new WINDOWOBJ, TMAX.TEDIT finds its image objects.

* Move TMAX files to TMAX>

Given the WHEREIS change for GETFN and the FINDFILE-WITH-EXTENSIONS in SPELLFILE, TEDIT(TMAX.TEDIT) opens and all of its imageobjects are found and loaded from the TMAX> files.

* Push relocated files again:  (COPYFILES screwed up)

* Delete TMAX.INDEX   garbage file
2022-04-23 21:36:23 -07:00
Fulton Browne
f9f1038efb Fixed some bad doc's (#751)
* Fixed some bad doc's

* Minor change
2022-03-22 21:56:51 -07:00
Larry Masinter
196f771c41 update README and release-notes 2022-03-16 18:06:12 -07:00
Larry Masinter
8400f7bee8 rename migration for new conventions; restore smashed IDLEHAX.TEDIT & sh permissions (#740) 2022-03-09 22:59:25 -08:00
Larry Masinter
a14d1ef405 remove controversial lispusers PAGEHOLD VTCHAT from MEDLEYDIR-INIT (#739) 2022-03-09 22:58:33 -08:00
Frank Halasz
ba8dc92045 Adding xclip into Medley docker image to support CLIPBOARD library package (#738) 2022-03-09 12:36:38 -08:00
Larry Masinter
6ec792510f simplify DEFAULTFILETYPELIST initialization (#735) 2022-03-08 09:41:50 -08:00
Larry Masinter
5e6a035614 remove fonts/xerox already in displayfonts (#734) 2022-03-07 22:06:12 -08:00
rmkaplan
43b0120f2a DIRECTORY: Added DEPTH parameter for FILEING.ENUMERATION.DEPTH (#720)
* DIRECTORY:  Added DEPTH parameter for FILEING.ENUMERATION.DEPTH

* DIRECTORY:  Added DEPTH parameter to FILDIR
2022-03-07 16:58:47 -08:00
rmkaplan
157b98fa9b Merge pull request #731 from Interlisp/rmk28
Rmk28 A few more file cleanups
2022-03-07 16:30:11 -08:00
Larry Masinter
b859649f00 moving obsolete lispusers; delete some junk files (#730)
* lispusers [HIJK]* sort out

* lispusers [LM]* sort out

* more cleanup
2022-03-07 16:19:27 -08:00
rmkaplan
3af82b4aff Create TIMESROMAN08-MIR-C0.DISPLAYFONT
For some reason, I had this but it wasn't in the master.  Don't know why.
2022-03-07 15:17:13 -08:00
rmkaplan
0f36b20f7f DocumentationTemplate.TEDIT TEDITDORADOKEYS.DATABASE
This is an old version of the template file.  The database file isn't necessary
2022-03-07 15:16:39 -08:00
rmkaplan
a84dcf8f57 CMLDEFFER: MAKEFILE-NEW to get FUNCTIONS in filemap for PF 2022-03-07 15:15:33 -08:00
rmkaplan
d035c4270f XREF is obsolete
Functionality is in TMAX-XREF
2022-03-07 15:14:54 -08:00
rmkaplan
e7e297c45c Merge pull request #729 from Interlisp/lmm17
more odds and ends from promote-internal
2022-03-07 14:50:57 -08:00
Larry Masinter
0bdba59aa9 more odds and ends from promote-internal 2022-03-07 13:15:16 -08:00
rmkaplan
831aa94cb4 Rmk27 GITFNS for renaming, minor other convenience adjustments (#728)
* GITFNS, COMPAREDIRECTORIES: more on renaming and copying

* MODERNIZE: use Wborder for the top for windows without titles

* DIRECTORY:  DEPTH as a parameter

* FILEPKG:  EDITCALLERS does FILDIR if FILES contains *

* GITFNS: Don't error on a non-existent "deleted" file
2022-03-07 12:38:35 -08:00
rmkaplan
74dc52b73f GITFNS: Fix CDGITDIR for < >, interpret C(opy) (#726) 2022-03-05 21:16:45 -08:00
rmkaplan
405845937d Merge pull request #698 from Interlisp/move-lispusers-lists
Move LispUsers documents to subdir for later sorting
2022-03-05 17:37:40 -08:00
Larry Masinter
ef24b9815d Fix MEDLEYDIR when NOERROR specified to not error and return correct path (#721) 2022-03-05 15:10:01 -08:00
rmkaplan
7bde19453e Merge pull request #711 from Interlisp/medley-logow
Medley logow
2022-03-04 21:08:44 -08:00
rmkaplan
a544855c08 Merge pull request #712 from Interlisp/odds-n-ends
Odds n ends
2022-03-04 21:08:09 -08:00
Larry Masinter
156b14851b Add MAKESYSDATE to logo window title, just delete Venue logo code 2022-03-04 19:49:07 -08:00
Larry Masinter
b95e68766d Fix bug introduced by 'changes to%' => ':CHANGES-TO' (#717) 2022-03-04 16:59:22 -08:00
Larry Masinter
3c35f6459b FINDFILE-WITH-EXTENSIONS update only (#708) 2022-03-04 16:49:05 -08:00
Larry Masinter
c68f84219a Fix bug in :CHANGES-TO :PREVIOUS-DATE not finding file changes 2022-03-02 16:53:33 -08:00
Larry Masinter
0f663ac5f5 forgot fn from KOTOLOGOW 2022-02-28 21:49:57 -08:00
Larry Masinter
6de8d3ec77 Move internal/library to internal, xerox font dirs, loadup and medleydir (#709)
* Move internal/library to internal, xerox font dirs, loadup and medleydir

* and MEDLEYDIR too

* mised some changes in 'promote/internal'

* tiny typo
2022-02-28 21:44:12 -08:00
rmkaplan
acc08e0dd7 Rmk23 Minor updates for COMPAREDIRECTORIES, GITFNS, REGIONMANAGER (#710)
* REGIONMANAGER:  TTY as a reference window

* GITFNS: Fix GITFNS.TEDIT, add DRAFTS as a prc parameter

so the menu shows the draft pr's for comparison

* COMPAREDIRECTORIES: only show differences in text-compares

Don't bother showing the unchanged chunks.
2022-02-28 21:30:26 -08:00
Larry Masinter
8eb9efdcc7 more greet file tweaks 2022-02-28 21:23:58 -08:00
Larry Masinter
f0f8b59ad8 LOGOW now Medley / based on KOTOLOGOW 2022-02-28 21:19:41 -08:00
rmkaplan
111ebe2d27 Merge pull request #706 from Interlisp/rmk22
Rmk22  Minor fix ups for comparisons, GITFNS for renamed files
2022-02-28 14:30:20 -08:00
rmkaplan
fbf33fe8e5 GITFNS: fix-ups prompted mostly by the pattern of git renames 2022-02-26 22:16:50 -08:00
rmkaplan
d3b1c6a3b4 Further cleanup of comparison functions
Mostly for cosmetics or convenience, a few glitches
2022-02-26 22:16:07 -08:00
rmkaplan
ab8da79d30 Merge pull request #703 from Interlisp/hyperdesk-needs-rooms
move hyperdesk to rooms for later review
2022-02-26 12:00:27 -08:00
Larry Masinter
c35a92db11 Loading VTCHAT should set it as default (#696) 2022-02-25 20:07:49 -08:00
Larry Masinter
601bc94fb7 obsolete many lispusers (#702)
* obsolete many lispusers

* NSDISPLAYSIZES isn't obsolete
2022-02-25 14:40:37 -08:00
rmkaplan
200b73c39d Merge pull request #699 from Interlisp/idlehax
patch some idle hacks and merge in IDLEDRAIN
2022-02-25 14:14:55 -08:00
Larry Masinter
72811d5bea move lafite files to library/lafite for later sorting (#697)
* move lafite files to library/lafite for later sorting

* more lafite lispusers
2022-02-24 20:31:39 -08:00
Larry Masinter
8045087be3 move hyperdesk to rooms for later review 2022-02-24 20:19:20 -08:00
Larry Masinter
1e4501be8e EOL convert .lisp files 2022-02-24 19:48:38 -08:00
rmkaplan
eb84efa12b Merge pull request #695 from Interlisp/tedit-no-font
Change OPENTEXTSTREAM to not error when finding display font (for hardcopy)
2022-02-24 19:34:23 -08:00
Larry Masinter
7c24032530 add lispusers/README.md 2022-02-24 19:26:25 -08:00
Larry Masinter
4002f75be8 Was merged into MEDLEY-UTILS 2022-02-24 19:23:51 -08:00
Larry Masinter
2ec33f860c useless IDLESWAP, no docs 2022-02-24 19:09:53 -08:00
Larry Masinter
071f8e5004 patch some idle hacks and merge in IDLEDRAIN 2022-02-24 19:03:49 -08:00
Larry Masinter
aad2344d82 odds and ends -- 2022-02-24 18:59:15 -08:00
Larry Masinter
018a464db4 Move LispUsers documents to subdir for later sorting 2022-02-24 18:49:08 -08:00
Larry Masinter
f940246eb1 Change OPENTEXTSTREAM to not error when finding display font (for hardcopy) 2022-02-24 17:51:37 -08:00
Larry Masinter
4ae11aebf4 get rid of unused font files from medley release (#679)
more cleanup from promote-internal destructuring
2022-02-24 10:14:16 -08:00
Larry Masinter
ae1d6536ef remove unused Xerox files.Z and shorten dir name (#692) 2022-02-24 05:06:45 -08:00
Larry Masinter
d734ec9d45 Move test files to its own repo (#691) 2022-02-23 20:00:19 -08:00
Bill Stumbo
0fc31e1183 Merge pull request #670 from Interlisp/masinter-patch-README
Update README.md
2022-02-22 07:44:16 -05:00
rmkaplan
17a3a5a93e Merge pull request #686 from Interlisp/rmk21
Rmk21 Comparison tools, Tedit string-args in Lafite files
2022-02-20 08:15:14 -08:00
rmkaplan
db8c951887 Comparison tools: Cosmetic fixes, a few glitches 2022-02-19 18:37:42 -08:00
rmkaplan
c4fac75f0a LAFITE files: Tedit--strings are filenames
more of #666
2022-02-19 18:35:11 -08:00
rmkaplan
160cf35f91 TEDITWINDOW: Fix offscreen scrolling #669 2022-02-19 18:32:24 -08:00
rmkaplan
ac1fcd2e2e BROWSER: missing specvars, added MODERNWINDOW
This should be included with Masterscope
2022-02-19 18:29:37 -08:00
Frank Halasz
e292ff99db Fixing up confusion between Docker username and Docker namespaces. Hopefully will fix docker login issues with buildDocker workflow. (#677) 2022-02-12 17:31:43 -08:00
Arun Welch
615885a0fa New version of IRM (#665)
* New version of IRM

New version of the IRM, updated to Medley.

* moved to docs/medley-irm as discussed
2022-02-12 14:05:10 -08:00
Frank Halasz
b2315a9b10 Fgh002.1: Workflow to test Docker Hub Login in this repo (#675)
* Complete revamp of the buildRelease and buildDocker workflows for Medley.  Also adding the buildReleaseInclDocker composite workflow.

* Add testLogin workflow to test Docker Hub login.
2022-02-12 09:40:01 -08:00
Frank Halasz
9dc01167c3 Complete revamp of the buildRelease and buildDocker workflows for Medley. Also adding the buildReleaseInclDocker composite workflow. (#674) 2022-02-11 21:27:28 -08:00
rmkaplan
66091a2375 Rmk20: Eliminate string arguments to TEDIT, move some bogus files to obsolete (#668)
* Eliminate string arguments to OPENTEXTSTREAM  #666

Empty string replaced by NIL, mostly.  Otherwise, string wrapped in OPENSTRINGSTREAM.  TEDIT hasn't yet been modified, just all the callers.

* INDEX, NGROUP:  move to obsolete   #667

* HELPSYS:  Add proper FILETYPE property

* ROOMS files:  Also updated for TEDIT string arguments
2022-02-07 13:56:05 -08:00
Larry Masinter
ca33b92033 Update README.md 2022-02-06 17:57:05 -08:00
rmkaplan
fe90ac5f9f Rmk19 (#664)
* PSEUDOHOSTS: Overlay a file system at the end of a path in another file system

New package, please look through it.

* REGIONMANAGER:  added RELCREATEPOSITION, allow for arguments to be spread

If the WIDTH argument looks like a list of arguments, the arguments are spread out.  Means that a relative region can be passed through intermediate functions.

* EXAMINEDEFS:  More control over regions and windows

Examination windows are returned so that callers can manipulate them

* TEDIT-PF-SEE:  tf respects reader environment and bold faces of DEFUN and DEFMACRO names

* COMPAREDIRECTORIES:  refactored for more flexibility and easier maintenance

Also, based on SPY, made more internal operations work on streams that are located and created once, rather than on file

Added CDMERGE to merge CDVALUES for different subdirectories, to permit scrolling of all differences in a single browser window

* COMPARESOURCES:  Region for CS browser is passed through, window is returned

Also tried to eliminate mismatching of simple edit timestamps

* COMPARETEXT: Files can be input streams, region is passed in, window is returned

* COMPAREDIRECTORIES again:  Fixed a promptwindow bug

* GITFNS:  New package for comparing and copying back and forth from My Medley to the git clone

* REGIONMANAGER:  Added CLOSEWITH and MOVEWITh

Primitives for building hierarchically dependent window clusters

* PSEUDOHOSTS:  Added PSEUDOHOSTNAME, hierarchical hosts #663

For hierarchical hosts (hosts whose prefixes are extensions of the prefixes of other pseudohosts), always the pseudofilename is always the shortest one.  See #663 for more details

* EXAMINEDEFS:  Fix prettyprint of non-function expressions

* GITFNS, Comparison files:  Use CLOSEWITH and MOVEWITH abstractions for window hierarchies
2022-01-31 09:51:50 -08:00
rmkaplan
b791bff070 Rmk19: Updates and remaining components for managing comparisons and interactions between git and Medley (#658)
* PSEUDOHOSTS: Overlay a file system at the end of a path in another file system

New package, please look through it.

* REGIONMANAGER:  added RELCREATEPOSITION, allow for arguments to be spread

If the WIDTH argument looks like a list of arguments, the arguments are spread out.  Means that a relative region can be passed through intermediate functions.

* EXAMINEDEFS:  More control over regions and windows

Examination windows are returned so that callers can manipulate them

* TEDIT-PF-SEE:  tf respects reader environment and bold faces of DEFUN and DEFMACRO names

* COMPAREDIRECTORIES:  refactored for more flexibility and easier maintenance

Also, based on SPY, made more internal operations work on streams that are located and created once, rather than on file

Added CDMERGE to merge CDVALUES for different subdirectories, to permit scrolling of all differences in a single browser window

* COMPARESOURCES:  Region for CS browser is passed through, window is returned

Also tried to eliminate mismatching of simple edit timestamps

* COMPARETEXT: Files can be input streams, region is passed in, window is returned

* COMPAREDIRECTORIES again:  Fixed a promptwindow bug

* GITFNS:  New package for comparing and copying back and forth from My Medley to the git clone
2022-01-27 22:32:49 -08:00
rmkaplan
ab8e97ff7b Rmk18 (#655)
* ADIR, COREIO:  Just move FILEDIRCASE array from COREIO to ADIR
Logically better place, my fear about loadup interactions was unfounded (I got burned before with bittables, but this is just a simple array)
* SPY:  Modernize the spy window
* TEDITHCPY: Make Interpress conditional on Interpress being loaded
This was an old edit that somehow got lost
* TEDITSCREEN:  Remove WAITINGCURSOR
The RESETSAVE for WAITINGCURSOR somehow wasn't working, but not worth debugging because we now don't have a wait.
* TEDITWINDOW:  Use TTYINPROMPTFORWORD instead of PROMPTFORWORD
2022-01-27 15:37:47 -08:00
Larry Masinter
f8e4bbd7cb Merge pull request #651 from Interlisp/rmk17
Rmk17:  Minor tweaks to sources
2022-01-27 10:36:15 -08:00
rmkaplan
c7272e78f2 ADIR: Only first colon before marks a device #651 2022-01-25 17:24:19 -08:00
rmkaplan
f531e89dde COREIO: More accurate directory name processing, added FILEDIRCASEARRAY
FILEDIRCASEARRAY does upper/lower case equivalents plus /<> for testing directory string equivalents.  Could be in COREIO, but that's probably too early in the loadup.
2022-01-24 21:12:56 -08:00
rmkaplan
293c973f1d EDITINTERFACE: bug fix in date-comment recognition, improvements to dated change-note behavior 2022-01-24 21:10:45 -08:00
rmkaplan
fe62e8e6e2 LLCHAR: Extend STRING.EQUAL to take CASEARRAY as argument
still defaults to the previously built-in reference to UPPERCASEARRAY
2022-01-24 21:09:15 -08:00
rmkaplan
51f0c19ad1 DMISC: Generalize argument to FLASHWINDOW 2022-01-24 21:07:01 -08:00
rmkaplan
1438ddba1f UFS, CMLFILESYS: Honor default extension and version for subdirectory enumeration 2022-01-24 21:06:20 -08:00
rmkaplan
ae3851ccf9 CMLPATHNAME: reprinted for FUNCTION/MACRO filemap 2022-01-24 21:04:10 -08:00
rmkaplan
e3f9a4ca9a FILEIO: Recirculated FDEV fields that had been evacuated during external format transformation
FDEV1...FDEV4 now available (used by PSEUDOHOSTS)
2022-01-24 21:03:15 -08:00
rmkaplan
7966704f1e PRETTY: DEFMACROS in filemap for PF, CLSTREAMS remade to test 2022-01-24 20:57:56 -08:00
rmkaplan
311e4f049c ADIR: Device colons before directories 2022-01-24 20:55:52 -08:00
rmkaplan
e119314a9e Remove move bogus % in filenames (#650) 2022-01-24 20:35:50 -08:00
rmkaplan
27d4df45e6 Merge pull request #645 from Interlisp/lmm15
Lmm15
2022-01-20 22:38:20 -08:00
Larry Masinter
312e99b0f4 Add templates for CL:WHEN CL:UNLESS 2022-01-15 20:26:40 -08:00
Larry Masinter
82eaacc542 patch some idlehacks to not draw so fast 2022-01-15 20:09:52 -08:00
Larry Masinter
479de87011 set MAKESYSNAME to MEDLEY: (e.g., as used by LOOPS) 2022-01-15 15:59:36 -08:00
Larry Masinter
5445a12b7e phase 0 of GATHER-INFO is setup for rest 2022-01-12 15:06:10 -08:00
rmkaplan
fadf81012b Rmk13: More infrastructure for flexible region management and support for comparisons (#641)
* TEXTOFD:  Property OBJECTBYTE returned instead of image objects

This allows COMPARETEXT to work on TEDIT files

* ATBL: Default reader environment uses *DEFAULT-EXTERNALFORMAT* instead of :XCCS constant

* CMLEXEC:  Fix FILETYPE property

It had CL:COMPILE-FILE, but the directory had LCOMs.  Changed to :FAKE-COMPILE-FILE.

* FILEIO:  single place for EOL specification

Now only in SETFILEINFO, not separately in \DO.PARAMS.AT.OPEN

* WINDOWOBJ:  COPYINSERT now uniformly allows lists of objects

It was incomplete.

* COMPARETEXT: Now works for TEDIT files

* EXAMINEDEFS: side-by-side attached SEDIT windows for comparing alternative definitions

* OBJECTWINDOW:  container for arbitrary image objects

* ATBL: fixed typo

* MODERNIZEP: pass shape and move to main window if PASSTOMAINCOMS

* EXAMINEDEFS:  Remove EXAMINEDEFS-REGION

Replaced by equivalent functionality in new package REGIONMANAGER

* TEDIT:  adjustments to give caller control of window region

* Revert "TEDIT:  adjustments to give caller control of window region"

This reverts commit aec12b41f0.

* Revert "EXAMINEDEFS:  Remove EXAMINEDEFS-REGION"

This reverts commit 0c670bbc56.

* TEDIT, TEDITWINDOW:  Adjustments for propagating (typed) regions

* EXAMINEDEFS: added EXAMINEFILES for looking viewing files side-by-side

Fix titling glitch, add EXAMINEFILES

* OBJECTWINDOW: minor cleanup

* REGIONMANAGER: new package for managing typed regions, relative regions, and constellation regions

* TEDIT-PF-SEE:  commands for scrollable PF and SEE alternatives
2022-01-09 09:18:28 -08:00
rmkaplan
792edfdad5 Rmk14: Browsers for COMPAREDIRECTORIES, COMPARESOURCES, COMPARETEXT for TEDIT files (#642)
* TEXTOFD:  Property OBJECTBYTE returned instead of image objects

This allows COMPARETEXT to work on TEDIT files

* ATBL: Default reader environment uses *DEFAULT-EXTERNALFORMAT* instead of :XCCS constant

* CMLEXEC:  Fix FILETYPE property

It had CL:COMPILE-FILE, but the directory had LCOMs.  Changed to :FAKE-COMPILE-FILE.

* FILEIO:  single place for EOL specification

Now only in SETFILEINFO, not separately in \DO.PARAMS.AT.OPEN

* WINDOWOBJ:  COPYINSERT now uniformly allows lists of objects

It was incomplete.

* COMPARETEXT: Now works for TEDIT files

* EXAMINEDEFS: side-by-side attached SEDIT windows for comparing alternative definitions

* OBJECTWINDOW:  container for arbitrary image objects

* ATBL: fixed typo

* MODERNIZEP: pass shape and move to main window if PASSTOMAINCOMS

* EXAMINEDEFS:  Remove EXAMINEDEFS-REGION

Replaced by equivalent functionality in new package REGIONMANAGER

* TEDIT:  adjustments to give caller control of window region

* Revert "TEDIT:  adjustments to give caller control of window region"

This reverts commit aec12b41f0.

* Revert "EXAMINEDEFS:  Remove EXAMINEDEFS-REGION"

This reverts commit 0c670bbc56.

* TEDIT, TEDITWINDOW:  Adjustments for propagating (typed) regions

* EXAMINEDEFS: added EXAMINEFILES for looking viewing files side-by-side

Fix titling glitch, add EXAMINEFILES

* OBJECTWINDOW: minor cleanup

* REGIONMANAGER: new package for managing typed regions, relative regions, and constellation regions

* TEDIT-PF-SEE:  commands for scrollable PF and SEE alternatives

* COREIO:  Fixed bug in \CORE.SETFILEINFO

* COMPAREDIRECTORIES:  Added CDBROWSER

and associated reworking

* COMPARESOURCES:  Added CSBROWSER

and associated reworking

* COMPARETEXT:  Reworked for TEDIT files

Also for better window management
2022-01-09 09:17:17 -08:00
Zoe Braiterman
fd2e5ed93e Update README.md (#643) 2022-01-08 08:57:59 -08:00
rmkaplan
e3e9156452 Merge pull request #638 from Interlisp/msnoblock
remove useless and slowing (BLOCK) from MSPRGTEMPLATE
2021-12-27 09:08:33 -08:00
Larry Masinter
f0feca759b remove useless and slowing (BLOCK) from MSPRGTEMPLATE 2021-12-26 18:47:02 -08:00
Larry Masinter
5fadc6c083 move obsolete lispusers (#635) 2021-12-22 20:57:56 -08:00
rmkaplan
2dcfac5350 Rmk12: Lispusers packages of general utility, but especially for git compare (#634)
* TEXTOFD:  Property OBJECTBYTE returned instead of image objects

This allows COMPARETEXT to work on TEDIT files

* ATBL: Default reader environment uses *DEFAULT-EXTERNALFORMAT* instead of :XCCS constant

* CMLEXEC:  Fix FILETYPE property

It had CL:COMPILE-FILE, but the directory had LCOMs.  Changed to :FAKE-COMPILE-FILE.

* FILEIO:  single place for EOL specification

Now only in SETFILEINFO, not separately in \DO.PARAMS.AT.OPEN

* WINDOWOBJ:  COPYINSERT now uniformly allows lists of objects

It was incomplete.

* COMPARETEXT: Now works for TEDIT files

* EXAMINEDEFS: side-by-side attached SEDIT windows for comparing alternative definitions

* OBJECTWINDOW:  container for arbitrary image objects
2021-12-22 20:56:57 -08:00
rmkaplan
dcd83c3753 Merge pull request #630 from Interlisp/rmk10
Rmk10: Background fixups to support git-compare
2021-12-17 22:25:56 -08:00
rmkaplan
cde5c9018d FILEIO: allow EOLCONVENTION ANY for input files
Any occurrence of CR, LF, CRLF maps to EOL, to facilitate processing of text files of unknown provenance
2021-12-16 20:11:56 -08:00
rmkaplan
1108a00b90 COMPARETEXT: upgraded to externalformat character interface
Also cleaned up some crufty code, added FILELABELS argument to give caller more precise control over the column labels.
2021-12-16 20:09:38 -08:00
rmkaplan
d9e445ad8c TEDIT: added TITLE argument to TEDIT-SEE
So caller can provide more informative information (useful in COMPAREDIRECTORIES)
2021-12-16 20:06:41 -08:00
rmkaplan
5b690d39d1 Delete STREAMDECLS
Old bogus file
2021-12-16 16:16:30 -08:00
Bill Stumbo
2573e4351f Add EOL to last line of each file. (#629) 2021-12-15 21:10:42 -08:00
Bill Stumbo
936bdd84b5 Add environment variables move medley files to /home/medley. (#627)
Add Build_Date, Maiko_Release and Medley_Release environment variables.
2021-12-14 21:58:31 -08:00
rmkaplan
c2915bf5d3 Rmk8: Revised EDITINTERFACE, another attempt at SEDIT-TOPLEVEL (#619)
* EDITINTERFACE: further cleanup

* SEDIT:  Another attempt at adding a property interface
2021-12-11 21:45:29 -08:00
Larry Masinter
40c10a7841 Shrink menu filebrowser icon restored (#595) 2021-12-09 12:32:20 -08:00
rmkaplan
362fac9389 Merge pull request #615 from Interlisp/rmk6-redux
rmk6 2nd change to EDITINTERFACE
2021-12-08 11:33:06 -08:00
Larry Masinter
db082b37e1 correct SEDIT patch 2021-12-08 19:27:27 +00:00
Larry Masinter
c0e020f033 rmk6 2nd change to EDITINTERFACE 2021-12-07 16:35:25 -08:00
Larry Masinter
9af86df169 Recompile with COMPILE-FIILE (#611) 2021-12-07 15:46:43 -08:00
Larry Masinter
6c26fe958a Revert "MKPROGN from record was overridden by the better one on WTFIX; ancient bug tickled when compiling LIFE (#612)" (#614)
This reverts commit 339bd47107.
2021-12-07 09:12:25 -08:00
Larry Masinter
339bd47107 MKPROGN from record was overridden by the better one on WTFIX; ancient bug tickled when compiling LIFE (#612) 2021-12-06 21:43:47 -08:00
Larry Masinter
3a04303d93 reduce errors during GREET from out-of-order problems (#596) 2021-12-06 21:36:01 -08:00
rmkaplan
68f1e7efe1 EDITINTERFACE: Oops, didn't trim all the white space (#602)
So it was misparsing some of the old dates
2021-12-04 10:11:05 -08:00
rmkaplan
993bdb2e00 Maintaining old edit dates #359 (#599)
* PRINTFN: Allow suppression of gratuitous TERPRI in PFCOPYBYTES

An odd feature of PFCOPYBYTES is that it was outputting a gratuitous EOL just in the case of copying a whole file, so copy-all+1.  Don't know who depends on it as is, so I added an extra argument NOTERPRI to allow clients to suppress it.

* Keep old editdates #359

Rework of the editdate capability, centralizing in EDITINTERFACE and removing the pieces that were also on FILEPKG.  Also added a new capability--edit dates can include change-log-type information.  See issue
2021-12-03 20:18:21 -08:00
Arun Welch
7a27c26f01 Update CHAPNUMBERS.TEDIT (#600)
Updated CHAPNUMBERS
2021-12-03 19:36:40 -08:00
Larry Masinter
75a031de39 change to keywords in FILECREATED expressions (#592) 2021-12-03 19:31:17 -08:00
Larry Masinter
7d656006a6 Switch (back to) SEDIT mode when reacting to a MARKASCHANGED (#597) 2021-12-03 19:30:19 -08:00
rmkaplan
1f8c123184 Merge pull request #593 from Interlisp/rmk4
Small fixes to SEDIT-TOPLEVEL, WHEELSCROLL, COMPARE
2021-12-01 22:03:56 -08:00
rmkaplan
50ce484c1b SEDIT-TOPLEVEL: added GET-WINDOW function
So window is available without declarations.   Also, there was an extra-argument error in SEDIT:SEDIT, in the calls to START-PROCESS.  Now fixed
2021-12-01 17:41:33 -08:00
rmkaplan
e3f043b40d WHEELSCROLL: Separate delta for horizontal scrolling, refixed constants 2021-11-29 22:42:51 -08:00
rmkaplan
945df5fbe8 COMPARE: Use EQUALALL instead of EQUAL 2021-11-29 22:24:29 -08:00
Arun Welch
3d8066b7e8 Migration from Interlisp to CL format (#591)
Tool for translating File Manager format files to Common Lisp format
2021-11-28 22:07:37 -08:00
rmkaplan
b303e0affa Rmk3 (#587)
* TEDITMENU:  menus don't grow vertically on reshaping

* CLSTREAMS, EDITINTERFACE:  Update filemap for FUNCTIONS

Needs to be done for most CL-function containing files.
2021-11-28 14:45:21 -08:00
rmkaplan
869b3a2e32 Merge pull request #582 from Interlisp/rmk2
Rmk2
2021-11-27 10:22:32 -08:00
rmkaplan
f19d9cc5e2 Merge pull request #581 from Interlisp/ron-1
ron-1:  a number of little cleanups in various places
2021-11-27 08:11:08 -08:00
rmkaplan
237f3aa6bf FILEBROWSER: Get right date for compiled files
Turns out that FILEDATE of a compiled file returns the creation date of the source, not the compiled file.  To get the proper date for both source and compiled files, you have to first call it with CFLG=T, if that is NIL, try with CFLG=NIL, if that's NIL it isn't a Medley file, use the creation date.

Would be more intuititive with different semantics:  (FILEDATE   xx NIL) should give you the date of this file whether compiled or not, (FILEDATE xx T) should give you the date of the source file, if it happens to be a compiled file.  I.e, CFLG → SFLG
2021-11-25 08:29:07 -08:00
rmkaplan
89a8fe183d DINFO: Menu has MIN/MAX sizes for scrolling 2021-11-25 08:22:31 -08:00
rmkaplan
8266980c22 FILEPKG: SHOWDEF uses reader environment, better COMPAREDEFS formatting 2021-11-25 08:13:15 -08:00
rmkaplan
c385039c42 IMAGEIO: Fontchange characters don't change charposition 2021-11-25 08:11:17 -08:00
rmkaplan
1ff0018772 FILESETS: Add DTDECLARE to EXPORTFILES 2021-11-25 08:10:21 -08:00
rmkaplan
6611f96702 COREIO, FASLOAD: FILEDATE and directory dates
FILEDATE was wrong for the formats on DFASL files.  COREIO wasn't maintaining directory file dates
2021-11-25 08:09:44 -08:00
rmkaplan
824e0f20b2 COMPARE: better alignment in header printing 2021-11-25 08:08:35 -08:00
rmkaplan
d479ef2ef9 IOCHAR: Fix DST comment 2021-11-25 08:07:52 -08:00
rmkaplan
98aa15455e XCCS: Mark format as unstable
byte encoding of particular characters can be different at different points in the file
2021-11-25 08:07:36 -08:00
rmkaplan
ca069578c3 Merge pull request #556 from Interlisp/lmm9
ACCESSFNS VCELL had bogus computation
2021-11-22 22:49:57 -08:00
rmkaplan
23731b05d1 Merge pull request #542 from Interlisp/lmm3
Change WHEELSCROLL constants from LEFT,RIGHT etc to \WSLEFT etc
2021-11-22 22:02:33 -08:00
Larry Masinter
ab4800054e update READMEs and BUILDING; move NOXNSPATCH and extra files in greetfiles (#545)
* update READMEs and BUILDING, move out some unused files

* update loadups/README.md
2021-11-21 17:23:13 -08:00
Larry Masinter
b1634ef140 Change init to MEDLEYDIR-INIT (suitable for run-medley configs) and added BACKGROUND-YIELD (#568)
* Change init to MEDLEYDIR-INIT (suitable for run-medley configs) and added BACKGROUND-YIELD

* fix permissions

* fix up odd characters inserted by tedit

* Editing sh files in TEdit left stuff in run-medley
2021-11-21 12:23:28 -08:00
Bill Stumbo
76a2235636 Add Maiko Release to tags. Install Maiko from Release assets. (#567) 2021-11-20 20:27:28 -08:00
Bill Stumbo
7c65b47fba Update to use Maiko release artifacts (#563) 2021-11-09 22:05:35 -08:00
Larry Masinter
a315e6926f ACCESSFNS VCELL had bogus computation 2021-10-27 22:35:23 -07:00
Larry Masinter
c3a497d8f3 Add GATHER-INFO to internal/library/MEDLEYUTILS (#549) 2021-10-27 21:35:56 -07:00
Larry Masinter
9cf54a1687 Replace (OPCODES SUBRCALL subrnumber) with (SUBRCALL subrname (#553)
* Change numeric OPCODES SUBRCALL NN to use the LLSUBRS name

* more opcodes subr# in maikoloadupfns

* even more OPCODES SUBRCALL

* Recover BIGBMAPS definitions dup (but more recent) from LLCOLOR
2021-10-27 16:41:37 -07:00
Larry Masinter
5490abb143 remove duplicate \DISPLAYLINE accidentally in MAIKOETHER (#550) 2021-10-27 12:13:23 -07:00
rmkaplan
18f5da85fd Fix DST in IOCHAR, y2k problem in TMAX-daTE, DUMPDB (#547)
* IOCHAR:  Fix daylight savings time
* TMAX: Y2K fix
   Also a little code cleanup, changing default font to TERMINAL from GACHA and making text more legible
* DATABASEFNS, ATBL:  DUMPDB with DEFINE-FILE-INFO

New database files will have standard headers, then a little special stuff for LOADDB to synchronize, old database files default to a new interlisp environment. 

 MAKE-READER-ENVIRONMENT in ATBL extended for easier specification, plus better type-testing.

* Remove duplicate comment
2021-10-27 12:05:15 -07:00
Larry Masinter
01de5a2324 Add TMAX to image-object set (#535) 2021-10-25 18:59:43 -07:00
Bill Stumbo
528776de19 Updated Docker build to use Medley Release Assets (#546) 2021-10-24 21:02:59 -07:00
Larry Masinter
1c9c1da257 Change WHEELSCROLL constants from LEFT,RIGHT etc to \WSLEFT etc 2021-10-24 11:05:41 -07:00
Bill Stumbo
b67cf5ae09 Update build (#538)
* Build loadup (#1)

* Add new GitHub action to create medley release

* Update to manual trigger with release name as input

* Build loadup (#2)

* Add new GitHub action to create medley release

* Update to manual trigger with release name as input

* Cleanup

* Build loadup (#3)

* Add new GitHub action to create medley release

* Update to manual trigger with release name as input

* Cleanup

* Cleanup

* Build loadup (#4)

* Add new GitHub action to create medley release

* Update to manual trigger with release name as input

* Cleanup

* Cleanup

* Build loadup (#5)

* Add new GitHub action to create medley release

* Update to manual trigger with release name as input

* Cleanup

* Cleanup

* Move sysouts to correct location

* Set root directory to medley
2021-10-22 22:11:08 -07:00
Larry Masinter
d1fe834e6f Move material from 'release-notes' to README (#526)
* Move material from 'release-notes' to README

* Remove extra junk files from Lispusers DATE and PLAINTEXTSTREAM

* Update README instructions per feedback; add a BUILDING readme
2021-10-21 23:19:37 -07:00
rmkaplan
c3b5e23cd9 Eliminate implicit calls to \FILEOUTCHARFN (#529)
* Eliminate implicit calls to \FILEOUTCHARFN

Also, update DATE to modern readtable (don't know what it does), add LLETHER to EXPORTFILES in FILESETS (may also need the file that exports pup records).

* Further fixups for EXPORTFILES

also fixing/compiling PLAINTEXTSTREAM

* Remove garbage files DATE and PLAINTEXTSTREAM from checkin

Co-authored-by: Larry Masinter <LMM@acm.org>
2021-10-21 16:25:16 -07:00
Larry Masinter
9b4976e33f merging PRINTFN 2021-10-21 12:51:16 -07:00
rmkaplan
31d9473184 Better control of modern windows (#527)
* MODERNIZE, FILEBROWSER: Better control of modern windows

Also fixed Y2K bug in FILEBROWSER, updated COMPAREDIRECTORIES and WHEELSCROLL documentation.  MODERNWINDOWS allows separate specification of the hot-corner region and the top margin for siphoning off left-button clicks

* MODERNIZE.LCOM: didn't get included
2021-10-21 10:02:43 -07:00
Bill Stumbo
bf5689be2a Build loadup (#534)
* Add new GitHub action to create medley release

* Update to manual trigger with release name as input

* Build loadup (#1)

* Add new GitHub action to create medley release

* Update to manual trigger with release name as input

* Cleanup

* Build loadup (#2)

* Add new GitHub action to create medley release

* Update to manual trigger with release name as input

* Cleanup

* Cleanup

* Build loadup (#3)

* Add new GitHub action to create medley release

* Update to manual trigger with release name as input

* Cleanup

* Cleanup

* Move sysouts to correct location

* Build loadup (#4)

* Add new GitHub action to create medley release

* Update to manual trigger with release name as input

* Cleanup

* Cleanup
2021-10-21 10:00:28 -07:00
rmkaplan
08bdd34e69 Tedit readonly files, cleanup filesets printfn (#532)
* FILESETS, TEDITWINDOW, TEDIT-PF-SEE

Add DTDECLARE to EXPORTFILES, fix TEDIT so that READONLY windows and processes are collected

* PRINTFN:  Eliminate PMORE
2021-10-21 09:56:36 -07:00
Larry Masinter
c7a219fd22 Use COPYCHARS instead of COPYBYTES when HPRINT is copying from NODIRCORE buffer (#506)
* Use COPYCHARS instead of COPYBYTES when HPRINT is copying from NODIRCORE buffer

* Change HPRINT of non-random-access files to use FORMAT of ultimate destination
2021-10-21 09:50:15 -07:00
rmkaplan
13cfb9b835 FILEPKG: MAKEFILE now takes format identifer (e.g. :UTF-8) in its options list (#524) 2021-10-15 11:28:51 -07:00
rmkaplan
b3219c33da Merge pull request #521 from Interlisp/Improve-TEDIT-interaction-with-MODERNIZE
Improve tedit interaction with modernize
2021-10-14 15:58:30 -07:00
rmkaplan
b0f9f2cce8 Merge pull request #523 from Interlisp/Lispusers-packages-modernize,-thinfiles,-tedit=pf=see
Lispusers packages modernize, thinfiles, tedit=pf=see
2021-10-14 15:57:32 -07:00
rmkaplan
1ad92b3dd4 TEDIT: TEDIT_SEE sets initial DEFAULTFONT for Lisp source files 2021-10-13 10:20:12 -07:00
rmkaplan
588835603c lispusers/TEDIT-PF-SEE: Explicitly give up TTY process on close
I'm not sure  why the READONLY TEDIT-SEE windows get the TTY process, that may be the underlying problem.  But at least here I now make sure that the if the window is the tty process on closing, it gives it back to the exec.  Otherwise, the window pops back up if there is input (even wheel scroll interrupts) before the user clicks somewhere else
2021-10-12 22:35:58 -07:00
rmkaplan
df70662f2c INSPECT: INSPECTCODE starts with DEFAULTFONT (presumably fixed pitch) 2021-10-12 17:22:43 -07:00
rmkaplan
32461da7eb Lispusers packages: MODERNIZE, THINFILES TEDIT-PF-SEE (new)
MODERNIZE interacts better with TEDIT split windows, THINFILES works better on filenames, not just extensions.  TEDIT-PF is new: provides commands tpf and ts for doing PFCOPYBYTES or SEE to scrollable read-only TEDIT windows, also functions for remembering and reusing the regions of windows of particular types.
2021-10-12 17:22:21 -07:00
rmkaplan
1beba945a2 PRINTFN DEXEC CMLEXEC: Cleanup PFCOPYBYTES interface
Removed unused FLG argument in PFCOPYBYTES, tried to make sense of PFDEFAULT (in preparation for TEDIT-PF. CMLEXEC just to upgrade the filemap
2021-10-12 17:20:18 -07:00
rmkaplan
e6cf869a23 Update HARDCOPY.LCOM
Forgot to include in TEDIT commit
2021-10-12 17:17:19 -07:00
rmkaplan
a6efdb3558 TEDIT fixes for format and window-splitting
Introduced an external format (:TEDIT) for Tedit, initialized TEXTOFD to use it.  Parmeterized the window split-window region to stop confusions with modernwindows.  TEDIT-SEE starts out the defaultfont for non-Tedit-format files. Restored git-lost edits to COPY.TEXT.TO.IMAGE
2021-10-12 17:16:44 -07:00
rmkaplan
e222743f74 Update lsee for UTF-8 (#518)
* Update lsee for UTF-8

Change less -R to less -r

* Minor cleanup for typo at end of script.

Co-authored-by: Nick Briggs <nicholas.h.briggs@gmail.com>
2021-10-08 23:25:31 -07:00
rmkaplan
ea0f303988 Merge pull request #505 from Interlisp/Externalformat-collected-in-a-separate-file
Externalformat collected in a separate file
2021-10-07 07:41:01 -07:00
rmkaplan
b85084ce31 LLREAD and LLREAD.LCOM: restore unversioned files 2021-10-05 19:46:07 -07:00
Larry Masinter
e39943fdcc Merge pull request #509 from Interlisp/run-medley-noscroll
Add -noscroll option to run-medley; turns off scollbars
2021-10-04 16:27:03 -07:00
Larry Masinter
a4370ae57d Put -noscroll first in usage at head 2021-10-04 15:03:49 -07:00
rmkaplan
cbfdfd6dab Merge branch 'master' into Externalformat-collected-in-a-separate-file 2021-10-01 23:13:12 -07:00
Larry Masinter
84bf09394e Merge pull request #513 from Interlisp/LAFITE-CR-to-LF
Lafite cr to lf
2021-10-01 18:57:53 -07:00
Nick Briggs
a92bce555f Fix long-standing error wherein VTCHAT.STATUS attempts to BOUT a string (#510)
In replying to a request for the cursor position, the VTCHAT.STATUS
code attempted to construct the escape-sequence response passing a
string representing the X (and Y) coordinate as text to BOUT rather
than using PRIN1.
2021-10-01 15:57:00 -07:00
Nick Briggs
ae26c3c9fa Replace chat via "rlogin" with chat via "ssh" (#512)
Modern systems are unlikely to be configured with "rlogin" access,
remote login, if available, is likely to be via "ssh", so use that.
2021-10-01 15:55:46 -07:00
rmkaplan
09fec6ac56 Add FILESETS back
For some reason, in going back and forth, the hard link between the versioned and the unversioned got lost, and the unversioned was effectively deleted.  I did a copyfile to get things back in order
2021-10-01 12:22:02 -07:00
rmkaplan
625a5a839c Convert UNICODE to LF
Don't know why it reverted.  Just a MAKEFILE NEW and recompile
2021-10-01 09:03:00 -07:00
rmkaplan
f28a7a6278 Move UNIXMAIL.* and MAILSCAVENGE.TEDIT to library/lafite 2021-10-01 08:20:38 -07:00
rmkaplan
9f85f4e17e Convert LAFITE files to LF
They missed the previous global conversion since they were in a subdirectory.  The only actual change is in LAFITETEDIT, it had the wrong name for the TEDITDCL file
2021-09-30 23:16:45 -07:00
Larry Masinter
1380722e55 Add -noscroll option to run-medley; turns off scollbars 2021-09-30 17:22:19 -07:00
rmkaplan
d6173b5269 Revert "HARDCOPY: COPY.TEXT.TO.IMAGE had Unicode-incompatible end-of-file shortcut"
This reverts commit 65a2d8000e.
2021-09-30 13:39:10 -07:00
rmkaplan
1d8fa0301d TEDIT: TEDIT-SEE treats FORMAT better for plain-text files 2021-09-29 22:27:18 -07:00
rmkaplan
65a2d8000e HARDCOPY: COPY.TEXT.TO.IMAGE had Unicode-incompatible end-of-file shortcut
Also used byte and not character-code operation in CRLF check
2021-09-29 22:26:11 -07:00
rmkaplan
388d54b713 TEDITSCREEN: Cleanup \DISPLAYLINE
Test argument validity at top so ffetch can be used consistently.  Remove unused variables, and move some other variable bindings to their proper scope
2021-09-29 22:23:45 -07:00
rmkaplan
f58936e762 PRINTFN: Fix typo, add comments 2021-09-29 10:11:31 -07:00
Larry Masinter
63904f754c two variables COPYRIGHTFLG and *REPLACE-OLD-EDIT-DATES* set for Lispcore developers (#504)
* two variables COPYRIGHTFLG and *REPLACE-OLD-EDIT-DATES* set for Lispcore developers

* COPYRIGHTFLG = PRESERVE
2021-09-28 10:21:57 -07:00
rmkaplan
2dabe594f3 Merge branch 'master' into Externalformat-collected-in-a-separate-file 2021-09-27 14:19:55 -07:00
rmkaplan
0462c1aa5e TEDITSCREEN, TEDITHCPY: Remove absolute NS charcodes (#494)
* TEDITSCREEN, TEDITHCPY: Remove absolute NS charcodes

Also eliminated \MAIKO.DISPLAYLINE.  Git got twisted up between branches, stuck in <<<< in some files, I think I unscrambled it.  (Had to copy TEDIT again separately).  Still says TEDITHCPY.LCOM is conflicted, even though I have completely TCOMPLed it.  Git sucks.

* Trying to fix master incompatibilities
2021-09-27 14:16:49 -07:00
rmkaplan
1d4c9ed6ee BOOTSTRAP: PRINT-READER-ENVIRONMENT puts out an extra EOL
To separate the DEFINE-FILE-INFO  header from the actual contents, when using TEDIT-SEE (in Medley) or lsee
2021-09-27 10:28:50 -07:00
rmkaplan
6b66665e9d BOOTSTRAP: Read initial DEFINE-FILE-INFO as a string, not an atom
If it is ead with RATOM, then e.g. LISPSOURCEFILEP gives an error if the first line of the file begins with something like (Author:
2021-09-26 23:41:52 -07:00
rmkaplan
db3ca49564 Localize external format implementation in new EXTERNALFORMAT file
Pieces moved from FILEIO and LLREAD, EXTERNALFORMAT added to FILESETS
2021-09-25 22:48:04 -07:00
rmkaplan
c89ac61d34 IMAGEIO: Separate construction of :DISPLAY external format
Defaults for 4/8/24 bit display FDEV's
2021-09-25 22:47:16 -07:00
rmkaplan
9b7464d966 MULTI-COMPILE: Just MAKEFILE-NEW to get better filemap 2021-09-25 22:40:25 -07:00
Larry Masinter
5a9bc56628 Ignore #\( #\{ patterns in 'smart' argnames when showing stack frames (#475) 2021-09-23 13:01:07 -07:00
rmkaplan
205223c9b1 Merge pull request #490 from Interlisp/TEDIT-SEE
TEDIT + FILEBROWSER:  Add function TEDIT-SEE, call from FILEBROWSER
2021-09-21 15:13:36 -07:00
Larry Masinter
ccc776608d Add Lispusers BACKGROUND-YIELD to call new subr (#488)
* Add Lispusers BACKGROUND-YIELD to call new subr

* Make BACKGROUND-YIELD a variable
2021-09-20 15:06:40 -07:00
Larry Masinter
25617e383a Add to medley release a tar of loadups-only, for those who want that (#465)
* Add to medley release a tar of loadups-only, for those who want that

* separate pieces (loadups+runtime) with 'don't need runtime if cloned'
2021-09-20 15:04:07 -07:00
rmkaplan
5e6eb4b424 HARDCOPY, TEDITHCPY: fix #491
INITVAR for PRINTFILETYPES, fix the coms for the Interpress option in TEDITHCPY

(This branch is accumulating little TEDIT glitches)
2021-09-20 11:17:55 -07:00
rmkaplan
7175669633 TEDITWINDOW: Ensure TOTOPW in tedit buttoneventfn and scrollfn #492 2021-09-20 07:36:01 -07:00
rmkaplan
21088d3eff TEDIT + FILEBROWSER: Add function TEDIT-SEE, call from FILEBROWSER 2021-09-19 19:10:18 -07:00
Larry Masinter
8ec1ca966d If lde is on path, don't bother with MAIKODIR (#478) 2021-09-13 21:34:03 -07:00
Nick Briggs
c55239f744 Minor cleanups in LLSUBRS to support new subrs.h for YIELD subr. (#479)
Keep the \INITSUBRS in sorted order: move (YIELD 210) to the end of
the list.

Change the output of WRITECALLSUBRS so that the guard wraps the whole
subrs.h include file.

Avoid using literal tabs in the output #defines, pad with spaces and
arrange the minimum field widths so that everything lines up better.
2021-09-13 20:33:43 -07:00
Larry Masinter
d6f7ad7de9 run-medley improvements (#476) 2021-09-13 05:54:31 -07:00
Larry Masinter
0236971881 Add NOERROR extra parameter to STKARGNAME, and set it in DEBUGGER (#471) 2021-09-12 11:47:14 -07:00
Larry Masinter
d04f734295 Move POSTSCRIPTSTREAM.TEDIT with its implementation (#467) 2021-09-11 17:07:57 -07:00
Larry Masinter
27a52b6ce0 Add COPYRIGHTFLG=PRESERVE meaning 'no new copyright dates, but keep previous' (#468) 2021-09-11 17:07:07 -07:00
Larry Masinter
0e2e16f183 changes from #453 redone: NOGREET for run-medley, dummy HOME LOGINDIR for loadups (#464) 2021-09-09 22:26:06 -07:00
rmkaplan
b760d005fb Second recompile fdev #457 (#463)
* FONTPROFILE:  Fix NS COMMENTFONT, delete FONTPROFILEPATCH

This reverts commit 2615140ede.

* Recompile FDEV creators with FILEIO defaulting to :XCCS

* FONTPROFILE: Fixed COMMENTFONT in BIGGERNS

* FONTPROFILE:  fixed typo
2021-09-07 11:52:14 -07:00
rmkaplan
95c9496780 Merge pull request #461 from Interlisp/revert-458-Recompile-FDEV-creators-#457
Revert "Recompiled all FDEV creators to install *DEFAULT-EXTERNALFORMAT*"
2021-09-06 10:37:05 -07:00
Larry Masinter
4bb4457d55 Revert "Recompiled all FDEV creators to install *DEFAULT-EXTERNALFORMAT* (#458)"
This reverts commit 2615140ede.
2021-09-06 09:04:00 -07:00
rmkaplan
2615140ede Recompiled all FDEV creators to install *DEFAULT-EXTERNALFORMAT* (#458) 2021-09-05 16:39:51 -07:00
Larry Masinter
77d772ae45 Duplicate files cleanup (#403)
* Duplicate POSTSCRIPT files in LispUsers and LispUsers/POSTSCRIPT

* DICOLOR on LispUsers is old version uncompiled 1985; version on internal library is newer

* missed PS-TTY in the postscript files

* Fix .gitignore no longer need diff filter; remove odd extra ~ file

* Verified POSTSCRIPT lispusers subdirectory redundant (not same hash because of EOL. POSTSCRIPT-old apparently was older version, copyright not venue

* Save postscript-old in obsolete

* move internal/library/DICOLOR to obsolete
2021-09-05 07:21:18 -07:00
Larry Masinter
995c321f59 release more (#447)
* move badfiles

* fix release to include sources

* load known, used image object defns

* add docs/Documentation Tools to release

* Avoid --exclude-backups with explicit exclude

* fix typo remove 'release-one' leftover from older regime

* update release notes
2021-09-03 14:05:09 -07:00
Larry Masinter
9d4a8796dd Move SIGMA font from LispUsers (as part of EQUATIONEDITOR) to fonts/other/c0 where FONTCREATE will find ite (#451) 2021-09-02 22:35:44 -07:00
Larry Masinter
185ee4db70 Release tweaks (#448)
* Fix release notes errors + tweaks in SYSEDIT

* releaseone.sh was for the previous setup with combined releases

* single backticks don't work in release notes
2021-09-02 20:36:05 -07:00
rmkaplan
f5205e23c6 Update unicode mapping tables (#440)
* Updated all ISO8859 and Vendor Unicode mappings from current Unicode.org information

* John Cowan says that East Asia is obsolete

* Delete obsolete file
2021-08-28 09:01:27 -07:00
Larry Masinter
b57438983b modify release notes / scripts for separate medley maiko releases (#436)
* modify release notes / scripts for separate medley maiko releases

* Tweak release notes

* more edits release notes
2021-08-28 08:41:33 -07:00
rmkaplan
f4951abf4d Merge pull request #442 from Interlisp/Adjust-TTYIN-and-LLKEY-for-character-specifications
Adjust ttyin and llkey for character specifications
2021-08-27 21:29:08 -07:00
rmkaplan
d1fb141fa1 TTYIN: Remove indirects to generic char io functions, abstract to function for TTYIN.RESTORE.BUF.CODES
Local BOUTCCODE macro replaced by call to \OUTCHAR etc.  Previously it called PRINTCCODE probably because that was the encapsulation of NSIN.  Now avoid the user-level function call, so it can be broken, go directly to the generic.
2021-08-27 17:05:55 -07:00
rmkaplan
66624477f9 LLKEY: Do the Meta/Function abstraction for \ORIGKEYACTIONS and \MAIKOKEYACTIONST4
With all the back and forth in the last branch I forgot to commit these particular changes
2021-08-27 16:20:48 -07:00
Larry Masinter
c810d2860b use 'less -R' instead of 'more' for better compatibility in lsee (#439) 2021-08-27 09:57:10 -07:00
Larry Masinter
3ef7a79b52 Restore unixmail (#385)
* Restore unixmail from archive

* Restore unixmail from archive
2021-08-26 21:40:09 -07:00
Larry Masinter
c37fed89e8 Update lsee to translate ^^ (control-circumflex) to : for define-file-info; add more (#432) 2021-08-26 21:39:10 -07:00
Larry Masinter
7897471126 no longer commit loadups; start with starter.sysout (#430)
* Start loadup using lisp.venuesysout as the base on which to build new

* Change 'starter.sysout' (taken from recent lisp.sysout)

* Fix problem with GREET ordering
2021-08-26 15:47:59 -07:00
rmkaplan
3d7905905b Merge pull request #435 from Interlisp/LLKEY-with-Meta-and-Function
LLKEY with meta and function
2021-08-25 14:55:48 -07:00
rmkaplan
439cc93ca4 TEDITWINDOW: Minor cleanup for Masterscope
Not related to the LLKEY/LLREAD, but just get it done.  The new masterscope showed that a field name wasn't qualified, and a comment was in a value context
2021-08-24 23:34:12 -07:00
rmkaplan
9282681644 LLKEY: system keyactions with Meta and Function instead of 1, and 2,
Keyaction lists have also been updated so that they contain only character specifications, not a mixture of character codes and specifications.

KEYACTION now tests its KEY argument for validity

New function \KEYNUMBERTONAME, potentially convenient for future keyboard work
2021-08-24 22:47:34 -07:00
rmkaplan
b4c5b304c4 LLREAD: CHARCODE.DECODE independent of CHARTABLE 2021-08-24 22:44:05 -07:00
Larry Masinter
6176aa9ebf Patch sketch code for Masterscope errors (#433) 2021-08-24 16:42:14 -07:00
rmkaplan
7b5541a417 Abstracting meta and function charcodes (#425)
* TTYIN: Meta chars defined by Meta charset, not specific value 1

Also, changed \TTYIN.RPEOF to use \FORMATBYTESTREAM generic function so that it does not make assumptions about the stream's external format

* LLKEY:  Respecify 535 as "Function,^W" in \ORIGKEYACTIONS

First step in anticipating moving meta and signaling characters to unoccupied parts of the Unicode code space

* Have to commit the build artifacts in order to unstash changes

* CMLSTRING:  No change, just upgrade filemap for CL Functions

* LLREAD: A little tighter on CHARCODE.DECODE

Allow hex and unicode in comma-separated specs, but must have 0X or U+ indicator.  Don't allow junk characters

* LLKEY:  Revert attempt at Meta,x and Function,x

For unknown reason, CHARTABLE isn't declared when LLREAD appears in loadup sequence.

* Unicode:  Unicode character-constants weren't properly prefixed

Needed U+ or x0

* THINFILES (again): Add version number for mis-ordered HELP

* ATBL: Change 1,0...1,377 to Meta,0...Meta,377

In anticipation of a future migration of the meta charset.

* TEDITFNKEYS:  Convert 1,x 2,x to Meta,x Function,x

In anticipation of eventual deconfliction with Unicode

* FILEBROWSER: remove reference to reader-environment field, add fix-directory-dates

Added a new submenu item under Recompute to make directory dates match the filecreated dates for Medley source/compiled files.

* SEDIT-COMMANDS:  1/2 to Meta/Function in Sedit commands

Codes in the 512+ range are now Function, anticipating eventual code-space translation

* FILEPKG:   Consistency of exports.all external format
2021-08-24 11:05:38 -07:00
Larry Masinter
c62ad47730 add big fonts, move MEDLEYDIR init (#424)
* add big fonts, move MEDLEYDIR init

* found a few more big fonts, adding them
2021-08-24 10:21:40 -07:00
rmkaplan
cdd9bc46d7 Merge pull request #417 from Interlisp/masterscope-macros
Masterscope wasn't expanding cl:defmacro defined macros
2021-08-18 16:04:54 -07:00
Larry Masinter
ab24d11371 Masterscope wasn't expanding cl:defmacro defined macros 2021-08-18 12:30:39 -07:00
rmkaplan
af16fb48fa Restore package/reatable eval in define file fino (#415)
* Adds fields to reader-environment to remember evaluation forms for reprinting

For package and readtable, not for base or external format.  This restores previous package/readtable behavior.

ATBL also is now not radix 8

* THINFILES:  now can add extensions/file names to operate on

Not related to other things in this branch, just a useful extension to a simple lispusers package.  You can now add dribble as an extension, and things like I-NEW as a name, to make it easy to clean up the tmp/ loadup directory in particular.
2021-08-18 12:22:45 -07:00
rmkaplan
0d2c6622bb Format implementation functions set a known variable *BYTECOUNTER* (#402)
* Format implementation functions set a known variable *BYTECOUNTER*

The generic functions deal with updating the application variable.
\INCHAR eliminated in favor of \INCCODE.EOLC to make clear what it does.
OPENSTRINGSTREAM streams have their own format, and the string is always fattened.
READBITMAP doesn't mix character and byte reading

* AOFD: Don't execute \STRINGSTREAM.INIT

This creates a file device that is not used anywhere.  The function OPENSTRINGSTREAM provides the functionality that this file device suggests that it would provide, but that functionality seems suspect at best.  The function is left in the system for now, probably should be deleted at some point in the future so we don't try to maintain it if we trip over it.

* TTYIN:  Fix an ancient coding error

but still doesn't solve the  (DIRECTORY ?=  problem #402

* LLREAD, FILEIO, XCCS:  Improve charcode backing, copychars

Added \BACKCCODE.EOLC that backs up over EOL encoding bytes, simplifies \RSTRING2.
\XCCSBACKCCODE returns T/NIL according to whether it succeeded.
\XCCSOUTCHAR uses IPLUS16 for CHARPOSITION
COPYCHARS makes no assumptions about EOL encoding
But still no solution for #402

* LLREAD, TTYIN.LCOM    fix #402

The bug showed up in TTYIN, but it was actually a bad edit in the generic backccode.

TTYIN.LCOM is just a recompile--that had never been done with various new declarations.
2021-08-15 18:45:04 -07:00
Larry Masinter
d6d47953d9 Add small utility 'lsee' to change lisp font-escapes to color changes (#399) 2021-08-08 13:38:33 -07:00
Larry Masinter
3569379861 Revert "duplicate definition of UNINTERRUPTABLY pp macro (#395)" (#397)
This reverts commit b07d528f22.
2021-08-06 19:50:12 -07:00
Larry Masinter
9ab24c044d Merge branch 'Miscellaneous-format-stuff' 2021-08-06 13:38:26 -07:00
rmkaplan
565f5994f2 Merge pull request #394 from Interlisp/sysedit-load-exports.all
Update SYSEDIT to load exports.all when running run-medley -new
2021-08-06 12:53:49 -07:00
Larry Masinter
93d9b7f176 Fix bitrot in manual TEdit file as per #268 (#391) 2021-08-06 12:16:17 -07:00
Larry Masinter
8a5057fbdc Remove explicit old versions from cloned repo (#392)
it took a long time to figure out how to restore old versions, using the './scripts/restore-versions file'. Now that it's there and tested  it should be ok to remove them from new 'git clone' of medley
2021-08-06 12:14:55 -07:00
Larry Masinter
b07d528f22 duplicate definition of UNINTERRUPTABLY pp macro (#395) 2021-08-06 12:09:49 -07:00
rmkaplan
3de2ebb719 FILEIO UNICODE: Fix THROUGHIN, cleanup UTF8-16 back 2021-08-06 10:36:05 -07:00
Larry Masinter
a2fdebbfa0 Update SYSEDIT to load exports.all when running run-medley -new 2021-08-06 07:41:06 -07:00
rmkaplan
b1d209484a FILEIO, MACHINEINDEPENDENT
\EXTERNALFORMAT extracts the format from a reader-environment
WRITEFILE uses the format in *OLD-IINTERLISP-READ-ENVIRONMENT* (now :XCCS)
2021-08-05 21:08:05 -07:00
rmkaplan
c2cff44a64 MACHIINEINDEPENDENT
MAKEFILE NEW with Interlisp read table, as per Larry's request
2021-08-05 15:17:41 -07:00
rmkaplan
c94e044bf3 FILEIO: Fix bad IF statement in \EXTERNALFORMAT 2021-08-05 14:44:01 -07:00
rmkaplan
d64e9282bf DEFINE-FILE-INFO with its own reader environment (#381)
* DEFINE-FILE-INFO with its own reader environment

Including format.  That reader environment also allows colon as a package delimiter, in addition to the funky control and upper panel character.

"Function" is now a synonym for character set 2.  WITH-READER-ENVIRONMENT doesn't bind EXTERNALFORMAT.

* Changed *DEFAULT-MAKEFILE-ENVIRONMENT* to use Interlisp rdtbl

* Store FDEV's default externalformat in the FDEV

And related adjustments so that the display output stream (which is created in various places) is always created with the right (CR) EOL convention.  Also a little simpler interface for creating external formats.
2021-08-05 13:43:08 -07:00
Larry Masinter
3fc26567c0 git on WSL doesn't remember +x bit (#387) 2021-08-05 09:53:34 -07:00
Bill Stumbo
25c397ccdf Git hub build (#374)
* GibHubBuild of Medley container.

* Add build.yml to master

* fix version

* add gitHubBuild branch

* cleanup

* add in gitHubBuild

* GibHubBuild of Medley container.

* cleanup

* Cleanup
2021-08-02 20:26:47 -07:00
Larry Masinter
b18d16b807 fixes Issue #375 -- make 'loadup-full' start with loadups/lisp.sysout (#379) 2021-08-02 20:16:09 -07:00
Larry Masinter
9b7df4a022 Add option (mainly for Ron) to add tmp to front of directories where exports.all and other newly created sources will come from (when using SIMPLE-INIT). Modified fn MEDLEY-INIT-VARS in LOADUP-LISP. (#383) 2021-08-02 20:14:54 -07:00
rmkaplan
4ea68c6746 Store FDEV's default externalformat in the FDEV
And related adjustments so that the display output stream (which is created in various places) is always created with the right (CR) EOL convention.  Also a little simpler interface for creating external formats.
2021-08-02 19:56:19 -07:00
rmkaplan
ff134ecd23 Changed *DEFAULT-MAKEFILE-ENVIRONMENT* to use Interlisp rdtbl 2021-08-01 21:03:24 -07:00
rmkaplan
925adc1deb DEFINE-FILE-INFO with its own reader environment
Including format.  That reader environment also allows colon as a package delimiter, in addition to the funky control and upper panel character.

"Function" is now a synonym for character set 2.  WITH-READER-ENVIRONMENT doesn't bind EXTERNALFORMAT.
2021-07-30 19:37:48 -07:00
Larry Masinter
4efe2f93af Merge (rebase) Cleanup-character-IO-interfaces with master (#356)
* Cleanup  of character IO interface

Committing this branch for further testing.  I know at least that the TTY output stream somehow is defaulting to :XCCS, which is wrong, but I haven't yet found the interface for that.

* Clean out \NSIN etc

No top-level calls to the NS specific functions, just to the generic \OUTCHAR etc.

Updated full.database

* MODERNIZE: added dragging for fixed-menu windows

They can be dragged by their title bars

* UNICODE:  Added Greek to the default set

Also made spelling of default-externalformats consistent with FILEIO

* FASLOAD: EOL conversion in FASL::READ-TEXT

EOL's printed as LF's will be read as EOL

* LLREAD:  Added meta as a CHARACTERSETNAME

meta,a maps to 1,a now.  But slowly propagating this to TEDIT, SEDIT, etc will make it easier to change the coding of meta characters, e.g. as part of a Unicode transition.

* APRINT FILEIO LLREAD: \OUTCHAR now a closed function

Removed the macro

* LLKEY: call CHARCODE.DECODE directory in \KEYACTION1

Minor cleanup, avoid typical user entry and APPLY*

* WHEELSCROLL: re-enable on AFTERMAKESYS/SYSOUT FORMS

Also sets up mappings in the \COMMANDKEYACTIONS, whatever that is

* ABASIC:  NILL and ZERO change from LAMBDA NOBIND to LAMBDA NIL

So that things like Masterscope don't break

* MASTERSCOPE:  Added WHEREIS as last-resort for CONTAINS

Looks at the WHEREIS database, if present, for FNS and FUNCTIONS if it has no other information.  . WHO CONTAINS ANY CALLING FOO works, but not the inverse:  . WHO DOES FUM CONTAIN.  We still need to figure out why the CONTAINS table isn't populated

* POSTSCRIPTSTREAM: use standard \OUTCHAR conventions

Now uses generic \OUTCHAR to get the proper function from the stream (or default)

* Recompile with right EXPORTS.ALL

Some of the macros weren't correct.

* Fix POSTSCRIPTSTREAM

Cleaner separation between external \OUTCHAR and internal BOUT

* POSTSCRIPTSTREAM gets its own external format

* Minor fix

* Compile-time warning about EXPORTS.ALL

* MODERNIZE:  Modern button fn has same args as the original

For Notecards  #343

* Fixed another glitch in the MODERNIZE  arglist thing

\TEDIT.BUTTONEVENTFN actually takes a second STREAM argument.  I don't see where it is ever called with that.  The modernize replacement binds that argument, but it isn't being passed to the original.

* FILEWATCH:  added missing record field

* Update FILEWATCH.LCOM

* Eliminating record/type name conflicts

Mostly just qualifying references, more work to get BIGBITMAP stuff out of ADISPLAY and to eliminate ambiguity of LINE record (now XXLINE in XXGEOM)

* Compile away open calls to \OUTCHAR, add loadups/full.database

Mostly new LCOMS where \OUTCHAR calls were compiled open

* Remove garbage library/XCCS

Old tools for reading wikipedia XCCS tables, sources/XCCS will deal with XCCS external format

* Next step:  Remove open input-character calls, factor XCCS to separate file

XCCS is the default, but can be swapped out (eventually) by setting a few variables, without recompiling everything

* Lots of residual cleanup for XCCS isolation

* Delete old file MACINTERFACE (migrated to MODERNIZE)

* Eliminate straggling NS calls:  LAFITE, READINTERPRESS

* Typo

* READINTERPRESS:  removed CHARSET

* MODERNIZE: Interface to control title-bar response (for Notecards)

* Many changes for external format name consistency

Very close to the end of this

* Put :FORMAT in file info, fix TEDIT plaintext hardcopy

I distributed :FORMAT :XCCS as the default marking, but somehow one of the variables seems to get revert during the loadup.  This is correct, as far as it goes.

* Getting the format in the file-info

This is all very twisty, different variables set in different places.  It now seems to do the right thing, at least for new files.  Marks them with :FORMAT :XCCS.

* Another fileinfo glitch

* CLIPBOARD -UNICODE:  Make UTF8 to UTF-8 to match standards

* MODERNIZE:  fix bug in MODERWINDOW

* External format as MAKEFILE option, LOAD applies the file's format

(MAKEFILE 'XX '((FORMAT :UTF-8)))
  will dump XX as a UTF-8 file.  LOAD will load it back to XCCS internal.

* Compilers respect DEFINE-FILE-INFO format

* MODERNIZE:  little glitch

* Delete old FILEIO.LCOM

* More edge cases of external format thru MAKEFILE, PRETTY, PRETTYFILEINDEX etc.

* FILEBROWSER:  Can SEE UTF-8 Lisp sourcefile

* INSPECT:  Better macro for inspecting readtables

* recompile changed files and do new loadup

Co-authored-by: rmkaplan <ron.kaplan@post.harvard.edu>
2021-07-29 17:07:23 -07:00
rmkaplan
4fac4e3e96 Merge pull request #352 from Interlisp/restore-versions
Add small util for restoring versions from git history
2021-07-21 17:14:53 -07:00
Larry Masinter
966b837351 Add small util for restoring versions from git history 2021-07-21 17:09:40 -07:00
rmkaplan
dac0acd0d5 Merge pull request #346 from Interlisp/recover-unversioned
Some files were checked in with only versioned files (from unix side)
2021-07-21 16:43:24 -07:00
Larry Masinter
105b0d1f3a Some files were checked in with only versioned files (from unix side) 2021-06-23 20:52:49 -07:00
Larry Masinter
10e3916e7e See PR #275 for discusssion 2021-05-06 16:24:43 -07:00
Larry Masinter
2cf33cebcf new loadups without ron's init or etherwait 2021-05-06 15:29:22 -07:00
Larry Masinter
d40aeffdc7 Remove unused file reference to PSETF and (lower case) psetf macro (#318) 2021-05-06 15:12:52 -07:00
Larry Masinter
6f9cafc578 Add a loadups/full.database masterscope database (#323) 2021-05-06 15:10:23 -07:00
Larry Masinter
a781751832 Better handling of no-ether when starting without ethernet (#327)
* Better handling of no-ether when starting without ethernet

* before save, with ether, clear \ETHERPORTS, passwords

* move SUBRCALL to separate function
2021-05-06 15:05:19 -07:00
Larry Masinter
d5b26c1352 switch around -nt because ldeinit phase can take less than a second (#329)
minor script bugfix
2021-05-06 15:03:41 -07:00
Larry Masinter
0a5ff04393 Use .CM to loadup full, to avoid GREET call (#322) 2021-05-01 20:43:14 -07:00
Larry Masinter
a946a90ef8 left out from PR #324 2021-05-01 09:08:43 -07:00
rmkaplan
66fa5e42cf Upgrade TEDIT to LF (#324)
* Upgrade TEDIT to LF

Fixes the black boxes in the Tedit menus.
TEDIT had a built-in bias towards CR in files and in displaying them.  I changed the bias to LF.

* TEDITDCL had no content

Its COMS specified lots of records etc from other TEDIT files, but none of those were actually in the symbolic file (the LCOM was OK).  I loaded all of the other TEDIT files and remade/recompiled this, looks like it captured everything
2021-04-30 20:45:52 -07:00
rmkaplan
05df858e55 Revert Linebuffer to CR
Explicitly made LINEBUFFER in ATERM specify CR independent of the new default stream EOLCONVENTION of LF in FILEIO.  Don't know why the TTY editor needs CR.
2021-04-29 09:53:56 -07:00
Larry Masinter
f64f8bbb87 loadup cleanups (#306) 2021-04-28 18:07:23 -07:00
Larry Masinter
2388f730ca fix permissions (#307) 2021-04-28 17:57:07 -07:00
Larry Masinter
607d9ab2e7 Add a brief sanity check to loadup process (#314)
Each step of the loadup now starts with a 'touch' to create a timestamp. At the end of the loadup, it makes sure the files needed by the next step are newer. This will catch some of the problems.
2021-04-28 17:15:35 -07:00
rmkaplan
f0ad3c5f60 All source files converted to LF (#315)
* All source files converted to LF

Also, HPRINT:  EQUALALL knows about CL arrays
FILEIO:  STREAM record with fields for external format functions

* Delete makeinit.dribble

* Converted CR to LF on internal/library and docs/Documentation Tools
2021-04-28 15:36:03 -07:00
rmkaplan
179325c528 Remove SEDIT-GAP from lispusers/ISO8859IO
Also converted to LF, while I was at it
2021-04-24 17:20:30 -07:00
rmkaplan
21c8759084 Change default EOL to LF on UFS (#312)
UFS changes the the default in \UFSeol to LF.EOLC.  LLREAD changes \rprint2 to convert EOL to LF if escaped in a string.  NSPROTECTION eliminates literal EOL
2021-04-22 21:10:48 -07:00
Nick Briggs
f0b9ce3dae Fix eolconv.sh script so tr doesn't choke on bad UTF-8 data (#309) 2021-04-17 22:47:31 -07:00
Larry Masinter
1d81350714 guard didn't include #endif 2021-04-05 21:56:17 -07:00
Larry Masinter
5a83a9cd8f Add writing guard and running again 2021-04-05 21:56:17 -07:00
Larry Masinter
ba70b3a126 spell nightly correctly 2021-04-05 21:55:22 -07:00
Larry Masinter
26e4af726a Default tag to nightly 2021-04-05 21:55:22 -07:00
Larry Masinter
ad912885aa needed updated release-notes.md 2021-04-05 21:55:22 -07:00
Larry Masinter
ee5efd782f add missing font directories 2021-04-05 21:55:22 -07:00
Larry Masinter
9ddef79484 add scripts to release 2021-04-05 21:55:22 -07:00
Larry Masinter
5a04b88dcc tar files have version tag 2021-04-05 21:55:22 -07:00
Larry Masinter
945ffe56f8 Second try release scripts 2021-04-05 21:55:22 -07:00
Larry Masinter
7d8efbdfd6 Fix MAKESYSNAME (misspelled) and move GATHER-INFO to my personal init 2021-04-05 21:53:13 -07:00
Larry Masinter
6e9791ad0a Add back in files that were in lisp.venuesysout 2021-04-05 21:53:13 -07:00
Larry Masinter
3e64317db5 TEMPORARILY add files needed to compile (or load) that had been moved to 'obsolete/' 2021-03-31 14:07:31 -07:00
Larry Masinter
78d53039c5 dwim dwimify checktran fix (#295)
* Use checktran for all uses except in newfault1 block

* Replace CHECKTRAN+ with /DWIMCHECKTRAN only used in DWIM to undoably /RPLNODE the original, e.g. for spelling correction. Should be fixed for CL:LAMBDA
2021-03-22 20:25:17 -07:00
Larry Masinter
094f0146c9 sysout logout version (#296)
* Fix sysout makesys to make new versions

* redoing some lost edits
2021-03-22 20:22:22 -07:00
5771 changed files with 1267223 additions and 335420 deletions

9
.gitattributes vendored Normal file
View File

@@ -0,0 +1,9 @@
# Denote all files that are truly binary and should not be modified.
*.tedit binary
*.lcom binary
*.sketch binary
*.dfasl binary
*.TEDIT binary
*.LCOM binary
*.SKETCH binary
*.DFASL binary

78
.github/workflows/Dockerfile_medley vendored Normal file
View File

@@ -0,0 +1,78 @@
#*******************************************************************************
#
# Dockerfile to build Medley image from latest Maiko image
# plus latest release tars from github
#
# Copyright 2022-2023 by Interlisp.org
#
# ******************************************************************************
FROM ubuntu:22.10
ARG TARGETPLATFORM
# Handle ARGs, ENV variables, and LABELs
ARG BUILD_DATE=unknown
ARG MEDLEY_RELEASE=unknown
ARG MAIKO_RELEASE=unknown
ARG REPO_OWNER=Interlisp
LABEL name="Medley"
LABEL description="The Medley Interlisp environment"
LABEL url="https://github.com/${REPO_OWNER}/medley"
LABEL build-date=$BUILD_DATE
LABEL medley_release=$MEDLEY_RELEASE
LABEL maiko_release=$MAIKO_RELEASE
ENV MEDLEY_DOCKER_BUILD_DATE=$BUILD_DATE
ENV MEDLEY_RELEASE=$MEDLEY_RELEASE
ENV MAIKO_RELEASE=$MAIKO_RELEASE
ENV LANG=C.UTF-8
# Copy over the release deb files
ADD ./*.deb /tmp
# Install Medley/Maiko and add tightvnc server and xclip to the image
RUN apt-get update \
&& apt-get install -y apt-utils \
&& apt-get install -y tigervnc-standalone-server \
&& apt-get install -y xclip \
&& apt-get install -y man-db \
&& apt-get install -y nano \
&& apt-get install -y sudo \
&& p=$(echo "${TARGETPLATFORM}" | sed -e "s#linux/##") \
&& p=$( \
if [ "$p" = "amd64" ]; \
then echo "x86_64"; \
elif [ "$p" = "arm64" ]; \
then echo "aarch64"; \
elif [ "$p" = "arm/v7" ]; \
then echo "armv7l"; \
else \
echo "x86_64"; \
fi \
) \
&& deb="medley-full-${MEDLEY_RELEASE#medley-}" \
&& deb=${deb}_${MAIKO_RELEASE#maiko-}-linux-${p}.deb \
&& apt-get install -y /tmp/${deb} \
&& chown --recursive root:root /usr/local/interlisp \
&& (if [ -n "$(which unminimize)" ]; then (yes | unminimize); fi)
# "Finalize" image
EXPOSE 5900
RUN adduser --gecos "" medley \
&& adduser --gecos "" ubuntu \
&& adduser medley sudo \
&& adduser ubuntu sudo \
&& (echo 'medley:yeldem' | chpasswd ) \
&& (echo 'ubuntu:utnubu' | chpasswd ) \
&& echo "medley ALL=(ALL) NOPASSWD:ALL" >>/etc/sudoers \
&& echo "ubuntu ALL=(ALL) NOPASSWD:ALL" >>/etc/sudoers \
&& mkdir -p /home/medley/il \
&& chown medley:medley /home/medley/il
ENV TERM=xterm
USER medley
WORKDIR /home/medley
#ENTRYPOINT USER=medley Xvnc -SecurityTypes none -geometry 1280x720 :0 & DISPLAY=:0 medley --full -g 1280x720
ENTRYPOINT /bin/bash

266
.github/workflows/buildDocker.yml vendored Normal file
View File

@@ -0,0 +1,266 @@
#*******************************************************************************
# buidDocker.yml
#
# Workflow to build and push a multiplatform (amd64, arm64 & arm7) Linux Docker
# image for Medley. This workflow uses the latest Maiko docker image and the
# latest Medley release on github.
#
# This workflow contains a sentry that causes it to skip the build (as identified
# by its commit SHA) if its already been done. Setting the "force" input to true
# will bypass this sentry,
#
# Updated 2022-01-18 by Frank Halasz from on earlier buildDocker.yml
#
# Copyright 2022 by Interlisp.org
#
# ******************************************************************************
name: 'Build/Push Docker Image'
# Run this workflow on ...
on:
workflow_dispatch:
inputs:
draft:
description: "Mark this as a draft release"
type: choice
options:
- 'false'
- 'true'
force:
description: "Force build even if build already successfully completed for this commit"
type: choice
options:
- 'false'
- 'true'
workflow_call:
outputs:
successful:
description: "'True' if medley docker build completed successully"
value: ${{ jobs.complete.outputs.build_successful }}
inputs:
draft:
description: "Mark this as a draft release"
required: false
type: string
default: 'false'
force:
description: "Force build even if build already successfully completed for this commit"
required: false
type: string
default: 'false'
secrets:
DOCKER_USERNAME:
required: true
DOCKER_PASSWORD:
required: true
defaults:
run:
shell: bash
jobs:
######################################################################################
# Regularize the inputs so they can be referenced the same way whether they are
# the result of a workflow_dispatch or a workflow_call
inputs:
runs-on: ubuntu-latest
outputs:
draft: ${{ steps.one.outputs.draft }}
force: ${{ steps.one.outputs.force }}
steps:
- id: one
run: >
if [ '${{ toJSON(inputs) }}' = 'null' ];
then
echo "workflow_dispatch";
echo "draft=${{ github.event.inputs.draft }}" >> $GITHUB_OUTPUT;
echo "force=${{ github.event.inputs.force }}" >> $GITHUB_OUTPUT;
else
echo "workflow_call";
echo "draft=${{ inputs.draft }}" >> $GITHUB_OUTPUT;
echo "force=${{ inputs.force }}" >> $GITHUB_OUTPUT;
fi
######################################################################################
# Use sentry-action to determine if this release has already been built
# based on the latest commit to the repo
sentry:
needs: inputs
runs-on: ubuntu-latest
outputs:
release_not_built: ${{ steps.check.outputs.release_not_built }}
steps:
# Checkout the actions for this repo owner
- name: Checkout Actions
uses: actions/checkout@v3
with:
repository: ${{ github.repository_owner }}/.github
path: ./Actions_${{ github.sha }}
- run: mv ./Actions_${{ github.sha }}/actions ../actions && rm -rf ./Actions_${{ github.sha }}
# Check if build already run for this commit
- name: Build already completed?
id: check
continue-on-error: true
uses: ./../actions/check-sentry-action
with:
tag: "docker"
######################################################################################
#
# Build and push the medley docker image
#
build_and-push:
runs-on: ubuntu-latest
needs: [inputs, sentry]
if: |
needs.sentry.outputs.release_not_built == 'true'
|| needs.inputs.outputs.force == 'true'
steps:
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v3
# Find latest release (draft or normal)
# and download its assets
- name: Download linux debs from latest (draft) release
run: |
tag=""
if [ "${{ needs.inputs.outputs.draft }}" = "true" ];
then
tag=$(gh release list | grep Draft | head -n 1 | awk '{ print $3 }')
fi
if [ -z "${tag}" ];
then
tag=$(gh release list | grep Latest | head -n 1 | awk '{ print $3 }')
fi
mkdir -p release_debs
gh release download ${tag} -D release_debs -p '*-linux-*.deb'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Get Maiko and Medley release information from name of deb files
# just downloaded from the Medley latest release
- name: Get info about Miako and Medley releases
id: release_info
run: |
regex="^[^0-9]*\([^_]*\)_\([^-]*-[^-]*\)-\([^-]*\)-\([^.]*\).*\$"
ls -1 release_debs | head -n 1 > debname.tmp
medley_release="medley-$(sed -e "s/${regex}/\1/" debname.tmp)"
maiko_release="maiko-$(sed -e "s/${regex}/\2/" debname.tmp)"
rm -f debname.tmp
echo "MEDLEY_RELEASE=${medley_release}" >> ${GITHUB_ENV}
echo "MAIKO_RELEASE=${maiko_release}" >> ${GITHUB_ENV}
# Set repo env variables
- name: Set repo/docker env variables
id: repo_env
run: |
repo_name="${GITHUB_REPOSITORY#*/}"
docker_namespace="$(echo "${{ github.repository_owner }}" | tr '[:upper:]' '[:lower:]')"
docker_image="${docker_namespace}/${repo_name}"
if [ "${{ needs.inputs.outputs.draft }}" = "false" ];
then
docker_tags="${docker_image}:latest,${docker_image}:${MEDLEY_RELEASE#*-}_${MAIKO_RELEASE#*-}"
platforms="linux/amd64,linux/arm64"
else
docker_tags="${docker_image}:draft"
platforms="linux/amd64"
fi
echo "REPO_NAME=${repo_name}" >> ${GITHUB_ENV}
echo "DOCKER_NAMESPACE=${docker_namespace}" >> ${GITHUB_ENV}
echo "DOCKER_IMAGE=${docker_image}" >> ${GITHUB_ENV}
echo "DOCKER_TAGS=${docker_tags}" >> ${GITHUB_ENV}
echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> ${GITHUB_ENV}
echo "PLATFORMS=${platforms}" >> ${GITHUB_ENV}
#linux/amd64,linux/arm64,linux/arm/v7
# Setup the Docker Machine Emulation environment.
- name: Set up QEMU
uses: docker/setup-qemu-action@master
with:
platforms: linux/amd64,linux/arm64,linux/arm/v7
# Setup the Docker Buildx funtion
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@master
# Login into DockerHub - required to store the created image
- name: Login to DockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
# Do the Docker Build using the Dockerfile in the repository
# checked out and the release tars just downloaded.
# Push the result to Docker Hub
- name: Build Docker Image for Push to Docker Hub
uses: docker/build-push-action@v3
with:
builder: ${{ steps.buildx.outputs.name }}
build-args: |
BUILD_DATE=${{ env.BUILD_DATE }}
MEDLEY_RELEASE=${{ env.MEDLEY_RELEASE }}
MAIKO_RELEASE=${{ env.MAIKO_RELEASE }}
REPO_OWNER=${{ github.repository_owner }}
context: ./release_debs
file: ./.github/workflows/Dockerfile_medley
platforms: ${{ env.PLATFORMS }}
# Push the result to DockerHub
push: true
tags: ${{ env.DOCKER_TAGS }}
######################################################################################
# Use set-sentry-action to determine set the sentry that says this release has
# been successfully built
complete:
runs-on: ubuntu-latest
outputs:
build_successful: ${{ steps.output.outputs.build_successful }}
needs: [inputs, sentry, build_and-push]
steps:
# Checkout the actions for this repo owner
- name: Checkout Actions
uses: actions/checkout@v3
with:
repository: ${{ github.repository_owner }}/.github
path: ./Actions_${{ github.sha }}
- run: mv ./Actions_${{ github.sha }}/actions ../actions && rm -rf ./Actions_${{ github.sha }}
# Set sentry
- name: Set flag that build for this commit has been completed
id: set
uses: ./../actions/set-sentry-action
with:
tag: "docker"
- name: Output
id: output
run: |
echo "build_successful='true'" >> ${GITHUB_OUTPUT}
######################################################################################

462
.github/workflows/buildLoadup.yml vendored Normal file
View File

@@ -0,0 +1,462 @@
#*******************************************************************************
# buidLoadup.yml
#
# Interlisp workflow to build Medley release and push it to github. This workflow
# is platform independent - but runs on Linux/amd64.
#
# This workflow contains a sentry that causes it to skip the build (as identified
# by its commit SHA) if its already been done. Setting the "force" input to true
# will bypass this sentry,
#
# 2022-01-17 Frank Halasz based on an earlier version of buildLoadup for Medley.
#
# Copyright 2022-2023 by Interlisp.org
#
# ******************************************************************************
name: Build/Push Medley Release
# Run this workflow on ...
on:
workflow_dispatch:
inputs:
draft:
description: "Mark this as a draft release"
type: choice
options:
- 'false'
- 'true'
force:
description: "Force build even if build already successfully completed for this commit"
type: choice
options:
- 'false'
- 'true'
workflow_call:
outputs:
successful:
description: "'True' if medley build completed successully"
value: ${{ jobs.complete.outputs.build_successful }}
inputs:
draft:
description: "Mark this as a draft release"
required: false
type: string
default: 'false'
force:
description: "Force build even if build already successfully completed for this commit"
required: false
type: string
default: 'false'
secrets:
OIO_SSH_KEY:
required: true
defaults:
run:
shell: bash
jobs:
######################################################################################
# Regularize the inputs so they can be referenced the same way whether they are
# the result of a workflow_dispatch or a workflow_call
inputs:
runs-on: ubuntu-latest
outputs:
draft: ${{ steps.one.outputs.draft }}
force: ${{ steps.one.outputs.force }}
steps:
- id: one
run: >
if [ '${{ toJSON(inputs) }}' = 'null' ];
then
echo "workflow_dispatch";
echo "draft=${{ github.event.inputs.draft }}" >> $GITHUB_OUTPUT;
echo "force=${{ github.event.inputs.force }}" >> $GITHUB_OUTPUT;
else
echo "workflow_call";
echo "draft=${{ inputs.draft }}" >> $GITHUB_OUTPUT;
echo "force=${{ inputs.force }}" >> $GITHUB_OUTPUT;
fi
######################################################################################
# Use sentry-action to determine if this release has already been built
# based on the latest commit to the repo
sentry:
needs: inputs
runs-on: ubuntu-latest
outputs:
release_not_built: ${{ steps.check.outputs.release_not_built }}
steps:
# Checkout the actions for this repo owner
- name: Checkout Actions
uses: actions/checkout@v3
with:
repository: ${{ github.repository_owner }}/.github
path: ./Actions_${{ github.sha }}
- run: mv ./Actions_${{ github.sha }}/actions ../actions && rm -rf ./Actions_${{ github.sha }}
# Check if build already run for this commit
- name: Build already completed?
id: check
continue-on-error: true
uses: ./../actions/check-sentry-action
with:
tag: "loadup"
######################################################################################
#
# Do the loadup
#
loadup:
runs-on: ubuntu-latest
outputs:
combined_release_tag: ${{ steps.job_outputs.outputs.COMBINED_RELEASE_TAG }}
medley_release_tag: ${{ steps.job_outputs.outputs.MEDLEY_RELEASE_TAG }}
medley_short_release_tag: ${{ steps.job_outputs.outputs.MEDLEY_SHORT_RELEASE_TAG }}
debs_filename_base: ${{ steps.debs.outputs.DEBS_FILENAME_BASE }}
needs: [inputs, sentry]
if: |
needs.sentry.outputs.release_not_built == 'true'
|| needs.inputs.outputs.force == 'true'
steps:
# Checkout the actions for this repo owner
- name: Checkout Actions
uses: actions/checkout@v3
with:
repository: ${{ github.repository_owner }}/.github
path: ./Actions_${{ github.sha }}
- run: mv ./Actions_${{ github.sha }}/actions ../actions && rm -rf ./Actions_${{ github.sha }}
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v3
# Setup release tag
- name: Setup Release Tag
id: tag
uses: ./../actions/release-tag-action
# Get Maiko release information, retrieves the name of the latest
# release. Used to download the correct Maiko release
- name: Get Maiko Release Information
id: maiko
uses: abatilo/release-info-action@v1.3.2
with:
owner: ${{ github.repository_owner }}
repo: maiko
# Setup environment variables & establish job outputs
- name: Setup Environment Variables
run: |
echo "build_time=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> ${GITHUB_OUTPUT}
echo "TARBALL_DIR=installers/deb/tmp/tarballs" >>${GITHUB_ENV}
echo "DEBS_DIR=installers/deb/debs" >>${GITHUB_ENV}
echo "TARS_DIR=installers/deb/tars" >>${GITHUB_ENV}
echo "MEDLEY_RELEASE_TAG=${RELEASE_TAG}" >>${GITHUB_ENV}
echo "MAIKO_RELEASE_TAG=${{ steps.maiko.outputs.latest_tag }}" >>${GITHUB_ENV}
- name: More Environment Variables
run: |
echo "MEDLEY_SHORT_RELEASE_TAG=${MEDLEY_RELEASE_TAG#medley-}" >>${GITHUB_ENV}
echo "MAIKO_SHORT_RELEASE_TAG=${MAIKO_RELEASE_TAG#maiko-}" >>${GITHUB_ENV}
- name: Even More Environment Variables
run: |
echo "COMBINED_RELEASE_TAG=${MEDLEY_SHORT_RELEASE_TAG}_${MAIKO_SHORT_RELEASE_TAG}" >>${GITHUB_ENV}
- name: Establish job outputs
id: job_outputs
run: |
echo "COMBINED_RELEASE_TAG=${COMBINED_RELEASE_TAG}" >> $GITHUB_OUTPUT;
echo "MEDLEY_RELEASE_TAG=${MEDLEY_RELEASE_TAG}" >> $GITHUB_OUTPUT;
echo "MEDLEY_SHORT_RELEASE_TAG=${MEDLEY_SHORT_RELEASE_TAG}" >> $GITHUB_OUTPUT;
# Setup some needed dirs in workspace
- name: Create work dirs
run: mkdir -p ${TARBALL_DIR}
# Download Maiko Release Assets
- name: Download Release Assets
uses: robinraju/release-downloader@v1.6
with:
repository: ${{ github.repository_owner }}/maiko
token: ${{ secrets.GITHUB_TOKEN }}
latest: true
out-file-path: ${{ env.TARBALL_DIR }}
fileName: "${{ env.MAIKO_RELEASE_TAG }}-linux.*.tgz"
- name: Untar Maiko Release for use in loadup
run: |
tar -xzf "${TARBALL_DIR}/${{ env.MAIKO_RELEASE_TAG }}-linux.x86_64.tgz"
# Checkout Notecards and tar it in the tarballsdir
- name: Checkout Notecards
uses: actions/checkout@v3
with:
repository: ${{ github.repository_owner }}/notecards
path: ./notecards
- run: mv ./notecards ../notecards
- name: Tar notecards into tarball dir
run: |
cd ..
tar cfz medley/${TARBALL_DIR}/notecards.tgz notecards
# Install vnc
- name: Install vnc
run: sudo apt-get update && sudo apt-get install -y tightvncserver
- name: Build Loadup sysouts and databases
run: |
Xvnc -geometry 1280x720 :0 &
export DISPLAY=":0"
PATH="$PWD/maiko:$PATH"
scripts/loadup-all.sh -apps
- name: Build loadups release tar
run: |
cd ..
mkdir -p medley/${TARBALL_DIR}
tar cfz medley/${TARBALL_DIR}/${MEDLEY_RELEASE_TAG}-loadups.tgz \
medley/loadups/lisp.sysout \
medley/loadups/full.sysout \
medley/loadups/apps.sysout \
medley/loadups/whereis.hash \
medley/library/exports.all
- name: Build runtime release tar
run: |
cd ..
mkdir -p medley/${TARBALL_DIR}
tar cfz medley/${TARBALL_DIR}/${MEDLEY_RELEASE_TAG}-runtime.tgz \
--exclude "*~" --exclude "*#*" \
--exclude exports.all \
medley/clos \
medley/docs/dinfo \
medley/docs/man-page/medley.1.gz \
medley/doctools \
medley/greetfiles \
medley/rooms \
medley/medley \
medley/run-medley \
medley/scripts \
medley/fonts/displayfonts \
medley/fonts/altofonts \
medley/fonts/adobe \
medley/fonts/postscriptfonts \
medley/library \
medley/lispusers \
medley/sources \
medley/internal
# Build the deb files as well as the tgz files
- name: Build .deb files for 3 architectures
id: debs
run: |
cd installers/deb
debs_filename_base=$(./build_deb.sh)
echo "DEBS_FILENAME_BASE=${debs_filename_base}" >> $GITHUB_ENV;
echo "DEBS_FILENAME_BASE=${debs_filename_base}" >> $GITHUB_OUTPUT;
# Push the release up to github releases
- name: Delete existing release with same tag (if any)
uses: cb80/delrel@latest
with:
tag: ${{ env.MEDLEY_RELEASE_TAG }}
continue-on-error: true
- name: Push the release
id: push_release
uses: ncipollo/release-action@v1
with:
allowUpdates: true
artifacts:
${{ env.TARBALL_DIR }}/${{ env.MEDLEY_RELEASE_TAG }}-loadups.tgz,
${{ env.TARBALL_DIR }}/${{ env.MEDLEY_RELEASE_TAG }}-runtime.tgz,
${{ env.DEBS_DIR }}/*.deb,
${{ env.TARS_DIR }}/*.tgz
tag: ${{ env.MEDLEY_RELEASE_TAG }}
draft: ${{ needs.inputs.outputs.draft }}
prerelease: false
generateReleaseNotes: true
token: ${{ secrets.GITHUB_TOKEN }}
#
# Create the Windows installer, push it up to the release on github and
# update the downloads page on OIO
#
windows_installer:
runs-on: windows-latest
needs: [inputs, sentry, loadup]
if: |
needs.sentry.outputs.release_not_built == 'true'
|| needs.inputs.outputs.force == 'true'
steps:
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v3
# Store the values output from loadup job as environment variables
- name: Environment Variables
shell: powershell
run: |
$crt="${{ needs.loadup.outputs.combined_release_tag }}"
echo "COMBINED_RELEASE_TAG=$crt" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
$mrt="${{ needs.loadup.outputs.medley_release_tag }}"
echo "MEDLEY_RELEASE_TAG=$mrt" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
$msrt="${{ needs.loadup.outputs.medley_short_release_tag }}"
echo "MEDLEY_SHORT_RELEASE_TAG=$msrt" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
$debs="${{ needs.loadup.outputs.debs_filename_base }}"
echo "DEBS_FILENAME_BASE=$debs" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
# Download vnc viewer
- name: Download vncviewer
shell: powershell
run: |
$url = "https://sourceforge.net/projects/tigervnc/files/stable/1.12.0/vncviewer64-1.12.0.exe"
$output = "installers\win\vncviewer64-1.12.0.exe"
(New-Object System.Net.WebClient).DownloadFile($url, $output)
# Run iscc.exe to compile the installer
- name: Compile medley.iss
shell: powershell
run: |
iscc installers\win\medley.iss
$filename="medley-install_${env:COMBINED_RELEASE_TAG}_x64.exe"
echo "INSTALLER_FILENAME=$filename" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
# Upload windows installer to release
- name: Upload windows installer to release
id: push
uses: ncipollo/release-action@v1
with:
allowUpdates: true
artifacts: installers/win/${{ env.INSTALLER_FILENAME }}
tag: ${{ env.MEDLEY_RELEASE_TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
omitBodyDuringUpdate: true
omitDraftDuringUpdate: true
omitNameDuringUpdate: true
omitPrereleaseDuringUpdate: true
# Install the OpenSSH Client
- name: Install the OpenSSH Client
shell: powershell
run: |
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
# Update the downloads page and the man page on OIO
- name: Update the downloads page and the man page to the OIO static page host
shell: bash
run: |
# Figure out filenames
download_url="${{ steps.push.outputs.html_url }}"
download_url="${download_url/\/tag\//\/download\/}"
local_template="installers/downloads_page/medley_downloads.html"
local_filename="medley_downloads.html"
local_manpath="docs/man-page/man_medley.html"
if [ "${{ needs.inputs.outputs.draft }}" = "true" ];
then
remote_filename="draft_downloads"
remote_manname="man_draft.html"
else
remote_filename="${local_filename%.html}"
remote_manname="man_medley.html"
fi
remote_filepath="/srv/oio/static/${remote_filename}"
remote_manpath="/srv/oio/static/${remote_manname}"
# Fill in downloads page template
sed \
-e "s/@@@MEDLEY.SHORT.RELEASE.TAG@@@/${MEDLEY_SHORT_RELEASE_TAG}/g" \
-e "s~@@@DOWNLOAD_URL@@@~${download_url}~g" \
-e "s/@@@DEBS.FILENAME.BASE@@@/${DEBS_FILENAME_BASE}/g" \
-e "s/@@@WINDOWS.INSTALLER.FILENAME@@@/${INSTALLER_FILENAME}/g" \
< "${local_template}" > "${local_filename}"
# Create sftp instruction file
echo "-rm ${remote_filepath}.oldold" > batch
echo "-rename ${remote_filepath}.old ${remote_filepath}.oldold" >> batch
echo "-rename ${remote_filepath}.html ${remote_filepath}.old" >> batch
echo "-put ${local_filename} ${remote_filepath}.html" >> batch
echo "-put ${local_manpath} ${remote_manpath}" >> batch
# Do the sftp
eval $(ssh-agent)
ssh-add - <<< "${SSH_KEY}"
sftp -o StrictHostKeyChecking=no -b batch ubuntu@online.interlisp.org
env:
SSH_KEY: ${{ secrets.OIO_SSH_KEY }}
######################################################################################
# Use set-sentry-action to determine set the sentry that says this release has
# been successfully built
complete:
runs-on: ubuntu-latest
outputs:
build_successful: ${{ steps.output.outputs.build_successful }}
needs: [inputs, sentry, loadup, windows_installer]
steps:
# Checkout the actions for this repo owner
- name: Checkout Actions
uses: actions/checkout@v3
with:
repository: ${{ github.repository_owner }}/.github
path: ./Actions_${{ github.sha }}
- run: mv ./Actions_${{ github.sha }}/actions ../actions && rm -rf ./Actions_${{ github.sha }}
# Set sentry
- name: Set flag that build for this commit has been completed
id: set
uses: ./../actions/set-sentry-action
with:
tag: "loadup"
- name: Output
id: output
run: |
echo "build_successful='true'" >> $GITHUB_OUTPUT
######################################################################################
# - name: Download the Windows installer created in windows job
# uses: actions/download-artifact@v3
# with:
# name: windows_installer
# path: installers/win
# - name: Rename the Windows installer w/ version tag
# run: |
# maiko_release_tag="${{ steps.maiko.outputs.latest_tag }}"
# combined_release_tag="${MEDLEY_RELEASE_TAG#medley-}_${maiko_release_tag#maiko-}"
# windows_installer_filename="medley_install_${combined_release_tag}_x64.exe"
# cd installers/win
# mv medley_install_vXXXVERSIONXXX_x64.exe "${windows_installer_filename}"
# echo "WINDOWS_INSTALLER_FILENAME=${windows_installer_filename}" >>${GITHUB_ENV}

View File

@@ -0,0 +1,115 @@
#*******************************************************************************
# buidReleaseInclDocker.yml
#
# Interlisp webflow to build a Medley release and push it to github.
# And to build a multiplatform Docker image for the release and push it to Docker Hub.
#
# This workflow just calls two reuseable workflows to the two task:
# buildLoadup.yml and buildDocker.yml
#
# 2022-01-18 Frank Halasz
#
# Copyright 2022 by Interlisp.org
#
# ******************************************************************************
name: "Build/Push Release & Docker"
# Run this workflow on ...
on:
schedule:
- cron: '0 9 * * 1'
workflow_dispatch:
inputs:
draft:
description: "Mark this as a draft release"
type: choice
options:
- 'false'
- 'true'
force:
description: "Force build even if build already successfully completed for this commit"
type: choice
options:
- 'false'
- 'true'
workflow_call:
outputs:
successful:
description: "'True' if medley build completed successully"
value: ${{ jobs.complete.outputs.build_successful }}
inputs:
draft:
description: "Mark this as a draft release"
required: false
type: string
default: 'false'
force:
description: "Force build even if build already successfully completed for this commit"
required: false
type: string
default: 'false'
defaults:
run:
shell: bash
# Jobs that compose this workflow
jobs:
######################################################################################
# Regularize the inputs so they can be referenced the same way whether they are
# the result of a workflow_dispatch or a workflow_call
inputs:
runs-on: ubuntu-latest
outputs:
draft: ${{ steps.one.outputs.draft }}
force: ${{ steps.one.outputs.force }}
steps:
- id: one
run: >
if [ '${{ toJSON(inputs) }}' != 'null' ];
then
echo "draft=${{ inputs.draft }}" >> $GITHUB_OUTPUT;
echo "force=${{ inputs.force }}" >> $GITHUB_OUTPUT;
else
echo "draft=false" >> $GITHUB_OUTPUT;
echo "force=false" >> $GITHUB_OUTPUT;
fi
######################################################################################
# Build Loadup
do_release:
needs: inputs
uses: ./.github/workflows/buildLoadup.yml
with:
draft: ${{ needs.inputs.outputs.draft }}
force: ${{ needs.inputs.outputs.force }}
secrets:
OIO_SSH_KEY: ${{ secrets.OIO_SSH_KEY }}
######################################################################################
# Build Docker Image
do_docker:
needs: [inputs, do_release]
uses: ./.github/workflows/buildDocker.yml
with:
draft: ${{ needs.inputs.outputs.draft }}
force: ${{ needs.inputs.outputs.force }}
secrets:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
######################################################################################

22
.gitignore vendored
View File

@@ -1,7 +1,20 @@
# loadup interim steps
tmp/*
loadups/init*
# all loadup files
library/exports.all
library/RDSYS*
loadups/lisp.sysout
loadups/full.sysout
loadups/*.dribble
loadups/whereis.hash
loadups/apps.sysout
# manual cross-reference files
*.IMPTR
#compiled code -- leave in for now
@@ -24,6 +37,9 @@ core
# Mac OS detritus
.DS_Store
*.PS
# nano detritus
*.swp
*.save
# set up by install-diff-filter.sh script
.gitattributes

34
BUILDING.md Normal file
View File

@@ -0,0 +1,34 @@
# How to build a medley release
Originally done only with shell scripts:
```
./scripts/loadup-all.sh
```
to make the loadups
```
./scripts/loadup-and-release.sh
```
to go on to make the tgz files and release them
# Using github actions
In the github medley repository (Interlisp/medley) go to the Actions tab.
It will list the available github actions, select: **Build Medley Release**.
In the middle of the screen there's a box labeled workflow runs.
There should be a row in it that states 'This workflow has a workflow_dispatch event trigger' with a drop down menu (it really looks more like a button) on the right side labeled 'Run workflow'. Select that and you'll get a form allowing you to select the branch (I've only used Master) and enter the release name. Enter a name or leave it empty and press the green 'Run workflow' button. The workflow should queue up and run.
# How to create a Docker image for the latest Medley release
In the github medley repository (Interlisp/medley) go to the Actions tab.
It will list the available github actions, select: **Build Medley Docker image**.
A table is presented which lists the previous runs of the workflow. If the workflow has never been run, it will be empty. A the top of the list is a row labeled, 'This workflow has a workflow_dispatch event trigger.' with a drop down menu labeled 'Run workflow'. Select it.
A box will be presented asking, 'Use workflow from' with a drop down menu of all available branches. The default branch is **master**. Leave it selected and push the green 'Run workflow' button.
The workflow will be queued to run and start running.
The workflow pulls the latest Maiko image from Docker Hub and the Release Assets from the latest Medley release, generally defined as medley-YYMMDD. The Medley Docker image adds in Tight VNC Server and retrieves the two tarballs associated with a release, one containing the sysouts and the other the other needed files source, fonts, etc. The contents are uncompressed and loaded into the Medley directory structure.

View File

@@ -1,248 +0,0 @@
(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE "XCL")
(IL:FILECREATED "24-Mar-92 14:56:18" IL:|{DSK}<usr>local>lde>lispcore>sources>CMLDEFFER.;3| 40644
IL:|changes| IL:|to:| (IL:VARS IL:CMLDEFFERCOMS)
IL:|previous| IL:|date:| " 4-Jan-92 15:32:26"
IL:|{DSK}<usr>local>lde>lispcore>sources>CMLDEFFER.;2|)
; Copyright (c) 1986, 1900, 1987, 1988, 1990, 1992 by Venue & Xerox Corporation. All rights reserved.
(IL:PRETTYCOMPRINT IL:CMLDEFFERCOMS)
(IL:RPAQQ IL:CMLDEFFERCOMS ((IL:* IL:|;;;| "DEF-DEFINE-TYPE and DEFDEFINER -- Your One-Stop Providers of Customized File Manager Facilities.") (IL:* IL:|;;| "BE VERY CAREFUL CHANGING ANYTHING IN THIS FILE!!! It is heavily self-referential and thick with bootstrapping problems. All but the most trivial changes (and some of those) are very tricky to make without blowing yourself out of the water... You have been warned.") (IL:* IL:|;;;| "Also see the file deffer-runtime for stuff that must be defined before fasl files may be loaded into the init") (IL:COMS (IL:* IL:\; "Filepkg interface") (IL:FUNCTIONS REMOVE-COMMENTS PPRINT-DEFINER PPRINT-DEFINER-FITP PPRINT-DEFINER-RECURSE) (IL:VARIABLES IL:*REMOVE-INTERLISP-COMMENTS*) (IL:* IL:\; "Share with xcl?") (IL:FUNCTIONS %DEFINE-TYPE-DELDEF %DEFINE-TYPE-GETDEF %DEFINE-TYPE-FILE-DEFINITIONS %DEFINE-TYPE-FILEGETDEF %DEFINE-TYPE-SAVE-DEFN %DEFINE-TYPE-PUTDEF)) (IL:COMS (IL:* IL:\; "Compatibility with old cmldeffer") (IL:DECLARE\: IL:DOCOPY IL:DONTEVAL@LOAD (IL:P (IL:MOVD (QUOTE %DEFINE-TYPE-DELDEF) (QUOTE IL:\\DEFINE-TYPE-DELDEF)) (IL:MOVD (QUOTE %DEFINE-TYPE-GETDEF) (QUOTE IL:\\DEFINE-TYPE-GETDEF)) (IL:MOVD (QUOTE %DEFINE-TYPE-FILE-DEFINITIONS) (QUOTE IL:\\DEFINE-TYPE-FILE-DEFINITIONS)) (IL:MOVD (QUOTE %DEFINE-TYPE-FILEGETDEF) (QUOTE IL:\\DEFINE-TYPE-FILEGETDEF)) (IL:MOVD (QUOTE %DEFINE-TYPE-SAVE-DEFN) (QUOTE IL:\\DEFINE-TYPE-SAVE-DEFN)) (IL:MOVD (QUOTE %DEFINE-TYPE-PUTDEF) (QUOTE IL:\\DEFINE-TYPE-PUTDEF)) (IL:MOVD (QUOTE PPRINT-DEFINER) (QUOTE IL:PPRINT-DEFINER))))) (IL:DECLARE\: IL:DOCOPY IL:DONTEVAL@LOAD (IL:P (IL:* IL:|;;| "Set up fake definer prototype stuff for FNS") (ADD-PROTOTYPE-FN (QUOTE IL:FNS) (QUOTE IL:NLAMBDA) (FUNCTION (LAMBDA (NAME) (AND (SYMBOLP NAME) (IL:BQUOTE (IL:DEFINEQ ((IL:\\\, NAME) (IL:NLAMBDA (IL:\\\,@ (%MAKE-FUNCTION-PROTOTYPE)))))))))) (ADD-PROTOTYPE-FN (QUOTE IL:FNS) (QUOTE IL:LAMBDA) (FUNCTION (LAMBDA (NAME) (AND (SYMBOLP NAME) (IL:BQUOTE (IL:DEFINEQ ((IL:\\\, NAME) (IL:LAMBDA (IL:\\\,@ (%MAKE-FUNCTION-PROTOTYPE)))))))))))) (IL:COMS (IL:* IL:\; "The groundwork for bootstrapping ") (IL:DEFINE-TYPES IL:DEFINE-TYPES IL:FUNCTIONS IL:VARIABLES) (IL:* IL:\; "DefDefiner itself and friends") (IL:FUNCTIONS SI::EXPANSION-FUNCTION SI::MACRO-FUNCALL WITHOUT-FILEPKG)) (IL:COMS (IL:* IL:\; "Compatibility with old cmldeffer") (IL:FUNCTIONS IL:WITHOUT-FILEPKG)) (IL:COMS (IL:* IL:\; "Some special forms") (IL:FUNCTIONS DEFINER DEFINER-VARIABLE-TYPE NAMED-PROGN)) (IL:COMS (IL:* IL:\; "Auxiliary functions") (IL:FUNCTIONS GET-DEFINER-NAME %DELETE-DEFINER) (IL:FUNCTIONS DEF-DEFINE-TYPE DEFDEFINER DEFDEFINER-VARIABLE-TYPE) (IL:FUNCTIONS %EXPAND-DEFINER %DEFINER-NAME)) (IL:COMS (IL:* IL:\; "The most commonly-used definers") (IL:FUNCTIONS DEFUN DEFINLINE DEFMACRO) (IL:FUNCTIONS DEFVAR DEFPARAMETER DEFCONSTANT DEFGLOBALVAR DEFGLOBALPARAMETER)) (IL:COMS (IL:* IL:\; "Here so that the evaluator can be in the init without definers being in the init.") (IL:DEFINE-TYPES IL:SPECIAL-FORMS) (IL:FUNCTIONS %REMOVE-SPECIAL-FORM) (IL:FUNCTIONS DEFINE-SPECIAL-FORM) (IL:* IL:\; "Form for defining interpreters of special forms")) (IL:COMS (IL:* IL:\; "Don't note changes to these properties/variables") (IL:PROP IL:PROPTYPE IL:MACRO-FN :UNDEFINERS IL:UNDEFINERS :DEFINER-FOR IL:DEFINER-FOR :DEFINED-BY IL:DEFINED-BY :DEFINITION-NAME IL:DEFINITION-NAME) (IL:* IL:\; "Templates for definers not defined here. These should really be where they're defined.") (IL:PROP :DEFINITION-PRINT-TEMPLATE DEFCOMMAND DEFINE-CONDITION DEFINE-MODIFY-MACRO DEFINE-SETF-METHOD DEFSETF DEFSTRUCT DEFTYPE)) (IL:* IL:|;;| "Arrange for the correct compiler to be used.") (IL:PROP (IL:FILETYPE IL:MAKEFILE-ENVIRONMENT) IL:CMLDEFFER)))
(IL:* IL:|;;;|
"DEF-DEFINE-TYPE and DEFDEFINER -- Your One-Stop Providers of Customized File Manager Facilities.")
(IL:* IL:|;;|
"BE VERY CAREFUL CHANGING ANYTHING IN THIS FILE!!! It is heavily self-referential and thick with bootstrapping problems. All but the most trivial changes (and some of those) are very tricky to make without blowing yourself out of the water... You have been warned."
)
(IL:* IL:|;;;|
"Also see the file deffer-runtime for stuff that must be defined before fasl files may be loaded into the init"
)
(IL:* IL:\; "Filepkg interface")
(DEFUN REMOVE-COMMENTS (X) (IL:* IL:|;;;| "Removes SEdit-style comments from the given list structure.") (COND ((NOT (CONSP X)) X) ((AND (CONSP (CAR X)) (EQ (CAAR X) (QUOTE IL:*)) (CONSP (CDAR X)) (OR (MEMBER (CADAR X) (QUOTE (IL:\; IL:|;;| IL:|;;;| IL:|;;;;| IL:\|)) :TEST (FUNCTION EQ)) (IL:* IL:\; "a sedit comment") (EQ IL:*REMOVE-INTERLISP-COMMENTS* T) (IL:* IL:\; "always strip") (PROGN (IF (EQ IL:*REMOVE-INTERLISP-COMMENTS* (QUOTE :WARN)) (WARN "Possible comment not stripped ~S" (CAR X))) NIL))) (REMOVE-COMMENTS (CDR X))) (T (LET ((A (REMOVE-COMMENTS (CAR X))) (D (REMOVE-COMMENTS (CDR X)))) (IF (AND (EQ A (CAR X)) (EQ D (CDR X))) X (CONS A D))))))
(DEFUN PPRINT-DEFINER (DEFINE-EXPRESSION) (DECLARE (SPECIAL IL:FORMFLG IL:SPACEWIDTH)) (IL:* IL:\; "Bound in prettyprinter") (COND ((OR (NULL IL:FORMFLG) (ATOM (CDR DEFINE-EXPRESSION))) (IL:* IL:\; "Degenerate cases or printing as a quoted form--punt to default prettyprinting") DEFINE-EXPRESSION) (T (LET ((IL:TAIL DEFINE-EXPRESSION) (IL:LEFT (IL:DSPXPOSITION)) TEMPLATE TOP-LEVEL-P NEXT TYPE FORM NEWLINEP) (DECLARE (SPECIAL IL:TAIL IL:LEFT)) (IL:* IL:\; "For comment printer") (SETQ TOP-LEVEL-P (EQ IL:LEFT (IL:DSPLEFTMARGIN))) (IL:* IL:\; "Printing definition to file, etc.") (SETQ IL:LEFT (+ IL:LEFT (* 3 IL:SPACEWIDTH))) (IL:* IL:\; "Place we will indent body") (IL:PRIN1 "(") (IL:PRIN2 (CAR IL:TAIL)) (SETQ TEMPLATE (OR (GET (POP IL:TAIL) :DEFINITION-PRINT-TEMPLATE) (QUOTE (:NAME)))) (IL:* IL:|;;| "This code should, and doesn't, pay attention to the NAME function to determine where the name is to decide what should and shouldn't be bold. Right now, it always bolds the second thing. Fortunately, we currently don't have any definers that don't have either the second or CAR of the second as the definition name.") (IL:* IL:|;;| "Also, this code should be careful about calling the NAME function on the form. Sometimes, the form is not really a call to the definer but instead a back-quoted expression in a macro. In most such cases, the name is not really there; some comma-quoted expression is there instead.") (IL:WHILE (CONSP IL:TAIL) IL:DO (COND ((AND (LISTP (SETQ NEXT (CAR IL:TAIL))) (EQ (CAR NEXT) IL:COMMENTFLG) (IL:SEMI-COLON-COMMENT-P NEXT)) (IL:* IL:\; "Comments can appear anywhere, so print this one without consuming the template. ENDLINE has side effect of printing comments") (IL:SUBPRINT/ENDLINE IL:LEFT *STANDARD-OUTPUT*) (SETQ NEWLINEP T)) ((OR (ATOM TEMPLATE) (EQ (SETQ TYPE (POP TEMPLATE)) :BODY)) (IL:* IL:\; "Once we hit the body, there's nothing more special to do.") (RETURN)) (T (IL:SPACES 1) (CASE TYPE (:NAME (IL:* IL:\; "Embolden the name of this thing") (SETQ NEWLINEP NIL) (COND ((NOT TOP-LEVEL-P) (IL:* IL:\; "Nothing special here--could even be a backquoted thing") (PPRINT-DEFINER-RECURSE)) (T (POP IL:TAIL) (COND ((CONSP NEXT) (IL:* IL:\; "Name is a list. Assume the real name is the car and the rest is an options list or something") (UNLESS (EQ (IL:DSPYPOSITION) (PROGN (IL:PRIN1 "(") (IL:PRINTOUT NIL IL:.FONT IL:LAMBDAFONT IL:.P2 (CAR NEXT) IL:.FONT IL:DEFAULTFONT) (IL:SPACES 1) (IL:PRINTDEF (CDR NEXT) T T T IL:FNSLST) (IL:PRIN1 ")") (IL:DSPYPOSITION))) (IL:* IL:\; "This thing took more than one line to print, so go to new line") (IL:SUBPRINT/ENDLINE IL:LEFT *STANDARD-OUTPUT*) (SETQ NEWLINEP T))) (T (IL:* IL:\; "Atomic name is bold") (IL:PRINTOUT NIL IL:.FONT IL:LAMBDAFONT IL:.P2 NEXT IL:.FONT IL:DEFAULTFONT)))))) (:ARG-LIST (IL:* IL:\; "NEXT is some sort of argument list. ") (COND ((NULL NEXT) (IL:* IL:\; "If NIL, be sure to print as ()") (IL:PRIN1 "()") (POP IL:TAIL)) (T (PPRINT-DEFINER-RECURSE))) (SETQ NEWLINEP NIL)) (T (IL:* IL:\; "Just print it, perhaps starting a new line") (UNLESS (OR NEWLINEP (PPRINT-DEFINER-FITP NEXT)) (IL:* IL:\; "Go to new line if getting crowded") (IL:PRINENDLINE IL:LEFT)) (PPRINT-DEFINER-RECURSE) (SETQ NEWLINEP NIL)))))) (IL:* IL:|;;| "We've now gotten to the end of stuff we know how to print. Just prettyprint the rest") (UNLESS (NULL IL:TAIL) (COND (NEWLINEP (IL:* IL:\; "Already on new line")) ((OR (EQ TYPE :BODY) (NOT (PPRINT-DEFINER-FITP (CAR IL:TAIL)))) (IL:* IL:\; "Go to new line and indent a bit. Always do this for the part matching &BODY, whether or not the prettyprinter thought that the remainder would \"fit\"") (IL:PRINENDLINE IL:LEFT NIL T)) (T (IL:SPACES 1))) (IL:WHILE (AND (CONSP IL:TAIL) (ATOM (SETQ FORM (CAR IL:TAIL)))) IL:DO (IL:* IL:|;;| "Print this doc string or whatever on its own line. This is because otherwise the prettyprinter gets confused and tries to put the next thing after the string") (PPRINT-DEFINER-RECURSE) (WHEN (AND (KEYWORDP FORM) (CONSP IL:TAIL)) (IL:* IL:\; "Some sort of keyword-value pair stuff--print it on same line") (IL:SPACES 1) (PPRINT-DEFINER-RECURSE)) (WHEN (NULL IL:TAIL) (RETURN)) (IL:SUBPRINT/ENDLINE IL:LEFT *STANDARD-OUTPUT*)) (IL:PRINTDEF IL:TAIL T T T IL:FNSLST)) (IL:PRIN1 ")") NIL))))
(DEFUN PPRINT-DEFINER-FITP (ITEM) (IL:* IL:|;;| "True if it won't look silly to try to print ITEM at current position instead of starting new line") (IF (CONSP ITEM) (OR (EQ (CAR ITEM) IL:COMMENTFLG) (AND (< (IL:COUNT ITEM) 20) (IL:FITP ITEM))) (< (+ (IL:DSPXPOSITION) (IL:STRINGWIDTH ITEM *STANDARD-OUTPUT*)) (IL:DSPRIGHTMARGIN))))
(DEFUN PPRINT-DEFINER-RECURSE NIL (IL:* IL:|;;| "Print and pop the next element. Prettyprinter uses the variable IL:TAIL for lookahead") (DECLARE (SPECIAL IL:TAIL)) (IL:SUPERPRINT (CAR IL:TAIL) IL:TAIL NIL *STANDARD-OUTPUT*) (SETQ IL:TAIL (CDR IL:TAIL)))
(DEFVAR IL:*REMOVE-INTERLISP-COMMENTS* (QUOTE :WARN) "Either NIL (don't) T (always do) or :WARN (don't and warn)")
(IL:* IL:\; "Share with xcl?")
(DEFUN %DEFINE-TYPE-DELDEF (NAME TYPE) (IL:* IL:|;;| "DELETE definition of definer-defined NAME as TYPE ") (UNDOABLY-SETF (DOCUMENTATION NAME TYPE) NIL) (LET* ((HT (GETHASH TYPE *DEFINITION-HASH-TABLE*)) (DEFN (AND HT (GETHASH NAME HT)))) (AND HT (IL:/PUTHASH NAME NIL HT)) (DOLIST (FN (OR (GET TYPE (QUOTE :UNDEFINERS)) (GET TYPE (QUOTE IL:UNDEFINERS)))) (FUNCALL FN NAME)) (DOLIST (FN (OR (GET (CAR DEFN) (QUOTE :UNDEFINERS)) (GET (CAR DEFN) (QUOTE IL:UNDEFINERS)))) (FUNCALL FN NAME)) NAME))
(DEFUN %DEFINE-TYPE-GETDEF (NAME TYPE OPTIONS) (IL:* IL:|;;| "GETDEF method for all definers. The EDIT is so that when you say EDITDEF you get a copy & can know when you made edits.") (LET* ((HASH-TABLE (GETHASH TYPE *DEFINITION-HASH-TABLE*)) (DEFN (AND HASH-TABLE (GETHASH NAME HASH-TABLE)))) (IF (TYPECASE OPTIONS (CONS (MEMBER (QUOTE IL:EDIT) OPTIONS :TEST (FUNCTION EQ))) (T (EQ OPTIONS (QUOTE IL:EDIT)))) (COPY-TREE DEFN) DEFN)))
(DEFUN %DEFINE-TYPE-FILE-DEFINITIONS (TYPE NAMES) (IL:* IL:|;;| "get the definitions for NAMES suitable for printing on a file. Like GETDEF but checks.") (MAPCAR (FUNCTION (LAMBDA (NAME) (LET ((DEF (%DEFINE-TYPE-GETDEF NAME TYPE (QUOTE (IL:NOCOPY))))) (IF (NULL DEF) (ERROR (QUOTE IL:NO-SUCH-DEFINITION) :NAME NAME :TYPE TYPE) DEF)))) NAMES))
(DEFUN %DEFINE-TYPE-FILEGETDEF (NAME TYPE SOURCE OPTIONS NOTFOUND) (LET ((VAL (IL:LOADFNS NIL SOURCE (QUOTE IL:GETDEF) (IL:* IL:|;;| "The bletcherous lambda form is require by the interface to loadfns (can't pass a closure)") (IL:BQUOTE (IL:LAMBDA (FIRST SECOND) (AND (MEMBER FIRST (QUOTE (IL:\\\, (OR (GET TYPE (QUOTE :DEFINED-BY)) (GET TYPE (QUOTE IL:DEFINED-BY))))) :TEST (FUNCTION EQ)) (LET ((NAMER (OR (GET FIRST (QUOTE :DEFINITION-NAME)) (GET FIRST (QUOTE IL:DEFINITION-NAME)) (QUOTE SECOND)))) (IF (EQ NAMER (QUOTE SECOND)) (EQUAL SECOND (QUOTE (IL:\\\, NAME))) (EQUAL (FUNCALL NAMER (REMOVE-COMMENTS (IL:READ))) (QUOTE (IL:\\\, NAME))))))))))) (COND ((EQ (CAAR VAL) (QUOTE IL:NOT-FOUND\:)) NOTFOUND) ((CDR VAL) (CONS (QUOTE PROGN) VAL)) (T (CAR VAL)))))
(DEFUN %DEFINE-TYPE-SAVE-DEFN (NAME TYPE DEFINITION) (SETQ TYPE (IL:GETFILEPKGTYPE TYPE (QUOTE TYPE))) (LET ((HASH-TABLE (GETHASH TYPE *DEFINITION-HASH-TABLE*))) (WHEN (NULL HASH-TABLE) (WARN "Couldn't find a hash-table for ~S definitions.~%One will be created." TYPE) (SETQ HASH-TABLE (SETF (GETHASH TYPE *DEFINITION-HASH-TABLE*) (MAKE-HASH-TABLE :TEST (FUNCTION EQUAL) :SIZE 50 :REHASH-SIZE 50)))) (LET ((OLD-DEFINITION (GETHASH NAME HASH-TABLE))) (UNLESS (EQUAL DEFINITION OLD-DEFINITION) (WHEN (AND OLD-DEFINITION (NOT (EQ IL:DFNFLG T))) (FORMAT *TERMINAL-IO* "~&New ~A definition for ~S~:[~; (but not installed)~].~%" TYPE NAME (MEMBER IL:DFNFLG (QUOTE (IL:PROP IL:ALLPROP)) :TEST (FUNCTION EQ)))) (IL:/PUTHASH NAME DEFINITION HASH-TABLE) (IL:MARKASCHANGED NAME TYPE (IF OLD-DEFINITION (QUOTE IL:CHANGED) (QUOTE IL:DEFINED)))))))
(DEFUN %DEFINE-TYPE-PUTDEF (NAME TYPE DEFINITION REASON) (IF (NULL DEFINITION) (%DEFINE-TYPE-DELDEF NAME TYPE) (LET ((DEFN-WITHOUT-COMMENTS (REMOVE-COMMENTS DEFINITION))) (UNLESS (AND (CONSP DEFN-WITHOUT-COMMENTS) (MEMBER (CAR DEFN-WITHOUT-COMMENTS) (OR (GET TYPE (QUOTE :DEFINED-BY)) (GET TYPE (QUOTE IL:DEFINED-BY))) :TEST (FUNCTION EQ)) (EQUAL NAME (FUNCALL (OR (GET (CAR DEFN-WITHOUT-COMMENTS) (QUOTE :DEFINITION-NAME)) (GET (CAR DEFN-WITHOUT-COMMENTS) (QUOTE IL:DEFINITION-NAME)) (QUOTE SECOND)) DEFN-WITHOUT-COMMENTS))) (SIGNAL (QUOTE IL:DEFINER-MISMATCH) :NAME NAME :TYPE TYPE :DEFINITION DEFINITION)) (SETQ DEFINITION (COPY-TREE DEFINITION)) (EVAL (IF IL:LISPXHIST (MAKE-UNDOABLE DEFINITION) DEFINITION)))))
(IL:* IL:\; "Compatibility with old cmldeffer")
(IL:DECLARE\: IL:DOCOPY IL:DONTEVAL@LOAD
(IL:MOVD (QUOTE %DEFINE-TYPE-DELDEF) (QUOTE IL:\\DEFINE-TYPE-DELDEF))
(IL:MOVD (QUOTE %DEFINE-TYPE-GETDEF) (QUOTE IL:\\DEFINE-TYPE-GETDEF))
(IL:MOVD (QUOTE %DEFINE-TYPE-FILE-DEFINITIONS) (QUOTE IL:\\DEFINE-TYPE-FILE-DEFINITIONS))
(IL:MOVD (QUOTE %DEFINE-TYPE-FILEGETDEF) (QUOTE IL:\\DEFINE-TYPE-FILEGETDEF))
(IL:MOVD (QUOTE %DEFINE-TYPE-SAVE-DEFN) (QUOTE IL:\\DEFINE-TYPE-SAVE-DEFN))
(IL:MOVD (QUOTE %DEFINE-TYPE-PUTDEF) (QUOTE IL:\\DEFINE-TYPE-PUTDEF))
(IL:MOVD (QUOTE PPRINT-DEFINER) (QUOTE IL:PPRINT-DEFINER))
)
(IL:DECLARE\: IL:DOCOPY IL:DONTEVAL@LOAD
(IL:* IL:|;;| "Set up fake definer prototype stuff for FNS")
(ADD-PROTOTYPE-FN (QUOTE IL:FNS) (QUOTE IL:NLAMBDA) (FUNCTION (LAMBDA (NAME) (AND (SYMBOLP NAME) (IL:BQUOTE (IL:DEFINEQ ((IL:\\\, NAME) (IL:NLAMBDA (IL:\\\,@ (%MAKE-FUNCTION-PROTOTYPE))))))))))
(ADD-PROTOTYPE-FN (QUOTE IL:FNS) (QUOTE IL:LAMBDA) (FUNCTION (LAMBDA (NAME) (AND (SYMBOLP NAME) (IL:BQUOTE (IL:DEFINEQ ((IL:\\\, NAME) (IL:LAMBDA (IL:\\\,@ (%MAKE-FUNCTION-PROTOTYPE))))))))))
)
(IL:* IL:\; "The groundwork for bootstrapping ")
(DEF-DEFINE-TYPE IL:DEFINE-TYPES "Definition type")
(DEF-DEFINE-TYPE IL:FUNCTIONS "Common Lisp functions/macros" :UNDEFINER IL:UNDOABLY-FMAKUNBOUND)
(DEF-DEFINE-TYPE IL:VARIABLES "Common Lisp variables" :UNDEFINER UNDOABLY-MAKUNBOUND)
(IL:* IL:\; "DefDefiner itself and friends")
(DEFUN SI::EXPANSION-FUNCTION (NAME ARG-LIST BODY) (IL:* IL:|;;;| "Shared code between DEFMACRO and DEFDEFINER. Takes the parts of a DEFMACRO and returns two values: a LAMBDA form for the expansion function, and the documentation string found, if any.") (MULTIPLE-VALUE-BIND (PARSED-BODY PARSED-DECLARATIONS PARSED-DOCSTRING) (IL:PARSE-DEFMACRO ARG-LIST (QUOTE SI::$$MACRO-FORM) BODY NAME NIL :ENVIRONMENT (QUOTE SI::$$MACRO-ENVIRONMENT)) (VALUES (IL:BQUOTE (LAMBDA (SI::$$MACRO-FORM SI::$$MACRO-ENVIRONMENT) (IL:\\\,@ PARSED-DECLARATIONS) (BLOCK (IL:\\\, NAME) (IL:\\\, PARSED-BODY)))) PARSED-DOCSTRING)))
(DEFMACRO SI::MACRO-FUNCALL (EXPANSION-FUNCTION MACRO-CALL ENV) (IL:* IL:|;;;| "Used by DEFDEFINER as a mechanism for delaying macro-expansion until after checking the value of DFNFLG. The arguments (unevaluated) are a macro-expansion function and a call on that macro. The call to MACRO-FUNCALL should expand into the result of expanding the given macro-call.") (FUNCALL EXPANSION-FUNCTION MACRO-CALL ENV))
(DEFMACRO WITHOUT-FILEPKG (&BODY BODY) (IL:BQUOTE (PROGN (EVAL-WHEN (LOAD) (IL:\\\,@ BODY)) (EVAL-WHEN (EVAL) (UNLESS (OR (EQ IL:DFNFLG (QUOTE IL:PROP)) (EQ IL:DFNFLG (QUOTE IL:ALLPROP))) (LET ((IL:FILEPKGFLG NIL) (IL:DFNFLG T)) (IL:\\\,@ BODY)))))))
(IL:* IL:\; "Compatibility with old cmldeffer")
(DEFMACRO IL:WITHOUT-FILEPKG (&BODY BODY) (IL:BQUOTE (WITHOUT-FILEPKG (IL:\\\,@ BODY))))
(IL:* IL:\; "Some special forms")
(DEFMACRO DEFINER (TYPE NAME DEFINITION &OPTIONAL ENV) (LET* ((EXPANDER (GET NAME :DEFINITION-EXPANDER)) (DEFINITION-WITHOUT-COMMENTS (REMOVE-COMMENTS DEFINITION)) (DEFINITION-NAME (FUNCALL (GET NAME :DEFINITION-NAME) DEFINITION-WITHOUT-COMMENTS))) (IL:BQUOTE (PROGN (WITHOUT-FILEPKG (SI::MACRO-FUNCALL (IL:\\\, EXPANDER) (IL:\\\, DEFINITION-WITHOUT-COMMENTS) (IL:\\\, ENV))) (EVAL-WHEN (EVAL) (UNLESS (NULL IL:FILEPKGFLG) (%DEFINE-TYPE-SAVE-DEFN (QUOTE (IL:\\\, DEFINITION-NAME)) (QUOTE (IL:\\\, TYPE)) (QUOTE (IL:\\\, DEFINITION))))) (QUOTE (IL:\\\, DEFINITION-NAME))))))
(DEFMACRO DEFINER-VARIABLE-TYPE (NAME DEFINITION &OPTIONAL ENV) (LET* ((DEFINITION-WITHOUT-COMMENTS (REMOVE-COMMENTS DEFINITION)) (TYPE (FUNCALL (GET NAME :TYPE-DISCRIMINATOR) DEFINITION-WITHOUT-COMMENTS)) (EXPANDER (GETF (GET NAME :DEFINITION-EXPANDER) TYPE)) (DEFINITION-NAME (FUNCALL (GET NAME :DEFINITION-NAME) DEFINITION-WITHOUT-COMMENTS))) (IL:BQUOTE (PROGN (WITHOUT-FILEPKG (SI::MACRO-FUNCALL (IL:\\\, EXPANDER) (IL:\\\, DEFINITION-WITHOUT-COMMENTS) (IL:\\\, ENV))) (EVAL-WHEN (EVAL) (UNLESS (NULL IL:FILEPKGFLG) (%DEFINE-TYPE-SAVE-DEFN (QUOTE (IL:\\\, DEFINITION-NAME)) (QUOTE (IL:\\\, TYPE)) (QUOTE (IL:\\\, DEFINITION))))) (QUOTE (IL:\\\, DEFINITION-NAME))))))
(DEFMACRO NAMED-PROGN (DEFINER NAME &REST FORMS) (IL:* IL:|;;| "Used by the compiler when processing definers") (IL:BQUOTE (PROGN (IL:\\\,@ FORMS) (QUOTE (IL:\\\, NAME)))))
(IL:* IL:\; "Auxiliary functions")
(DEFUN GET-DEFINER-NAME (DEFINER STRING) (VALUES (INTERN (CONCATENATE (QUOTE STRING) STRING (STRING DEFINER)) (SYMBOL-PACKAGE DEFINER))))
(DEFUN %DELETE-DEFINER (NAME) (AND (SYMBOLP NAME) (LET ((TYPE (OR (GET NAME (QUOTE :DEFINER-FOR)) (GET NAME (QUOTE IL:DEFINER-FOR))))) (IL:/REMPROP NAME (QUOTE :DEFINER-FOR)) (IL:/REMPROP NAME (QUOTE IL:DEFINER-FOR)) (IL:/REMPROP NAME (QUOTE :DEFINITION-NAME)) (IL:/REMPROP NAME (QUOTE IL:DEFINITION-NAME)) (IL:/REMPROP NAME (QUOTE :DEFINITION-EXPANDER)) (WHEN TYPE (IF (GET TYPE (QUOTE :DEFINED-BY)) (IL:/PUTPROP TYPE (QUOTE :DEFINED-BY) (REMOVE NAME (GET TYPE (QUOTE :DEFINED-BY)))) (IL:/PUTPROP TYPE (QUOTE IL:DEFINED-BY) (REMOVE NAME (GET TYPE (QUOTE IL:DEFINED-BY))))) (IL:* IL:|;;| "need to remove the prototype function!") (LET* ((LOOKUP-TYPE (ASSOC TYPE *DEFINITION-PROTOTYPES* :TEST (FUNCTION EQ)))) (IL:/RPLACD LOOKUP-TYPE (REMOVE NAME (CDR LOOKUP-TYPE) :KEY (FUNCTION CAR))))))))
(DEFDEFINER (DEF-DEFINE-TYPE (:PROTOTYPE (LAMBDA (NAME) (AND (SYMBOLP NAME) (IL:BQUOTE (DEF-DEFINE-TYPE (IL:\\\, NAME) "Description string")))))) IL:DEFINE-TYPES (NAME DESCRIPTION &KEY UNDEFINER &AUX (CHANGELST (INTERN (CONCATENATE (QUOTE STRING) "CHANGED" (STRING NAME) "LST") (SYMBOL-PACKAGE NAME)))) "Define NAME as a new definition type" (IL:* IL:|;;| "This definition is a clean interface to a hokey implementation. It works even before the file package is loaded.") (IL:BQUOTE (PROGN (SETF (DOCUMENTATION (QUOTE (IL:\\\, NAME)) (QUOTE IL:DEFINE-TYPES)) (QUOTE (IL:\\\, DESCRIPTION))) (PUSHNEW (QUOTE ((IL:\\\, NAME) X (IL:P IL:* (%DEFINE-TYPE-FILE-DEFINITIONS (QUOTE (IL:\\\, NAME)) (QUOTE X))))) IL:PRETTYDEFMACROS :TEST (QUOTE EQUAL)) (IL:* IL:|;;| "the information about a type in the file package is split up into a number of different places. PRETTYTYPELST contains a random amount: the changelist is the variable whose top level value contains the list of changed items, and the description is a string used by files? This is duplicated in the CL:DOCUMENTATION mechanism") (PUSHNEW (QUOTE ((IL:\\\, CHANGELST) (IL:\\\, NAME) (IL:\\\, DESCRIPTION))) IL:PRETTYTYPELST :TEST (QUOTE EQUAL)) (DEFGLOBALVAR (IL:\\\, CHANGELST) NIL) (IL:* IL:|;;| "the definition hash table is where the definitions are really stored. Create an entry for this type. Note that definitions are compared using CL:EQUAL so that names can be strings, lists, etc.") (UNLESS (GETHASH (QUOTE (IL:\\\, NAME)) *DEFINITION-HASH-TABLE*) (SETF (GETHASH (QUOTE (IL:\\\, NAME)) *DEFINITION-HASH-TABLE*) (MAKE-HASH-TABLE :TEST (QUOTE EQUAL) :SIZE 50 :REHASH-SIZE 50))) (PUSHNEW (QUOTE (IL:\\\, NAME)) IL:FILEPKGTYPES) (SETF (GET (QUOTE (IL:\\\, NAME)) (QUOTE IL:GETDEF)) (QUOTE %DEFINE-TYPE-GETDEF)) (SETF (GET (QUOTE (IL:\\\, NAME)) (QUOTE IL:DELDEF)) (QUOTE %DEFINE-TYPE-DELDEF)) (SETF (GET (QUOTE (IL:\\\, NAME)) (QUOTE IL:PUTDEF)) (QUOTE %DEFINE-TYPE-PUTDEF)) (SETF (GET (QUOTE (IL:\\\, NAME)) (QUOTE IL:FILEGETDEF)) (QUOTE %DEFINE-TYPE-FILEGETDEF)) (SETF (GET (QUOTE (IL:\\\, NAME)) (QUOTE IL:FILEPKGCONTENTS)) (QUOTE IL:NILL)) (IL:\\\,@ (WHEN UNDEFINER (IL:BQUOTE ((PUSHNEW (QUOTE (IL:\\\, UNDEFINER)) (GET (QUOTE (IL:\\\, NAME)) (QUOTE :UNDEFINERS))))))))))
(DEFDEFINER (DEFDEFINER (:NAME (LAMBDA (WHOLE) (LET ((NAME (SECOND WHOLE))) (IF (CONSP NAME) (CAR NAME) NAME)))) (:PROTOTYPE (LAMBDA (NAME) (AND (SYMBOLP NAME) (IL:BQUOTE (DEFDEFINER (IL:\\\, NAME) (IL:\\\, (IF (EQ (IL:EDITMODE) (QUOTE IL:SEDIT)) (SYMBOL-VALUE (INTERN "BASIC-GAP" "SEDIT")) "Type")) (IL:\\\,@ (%MAKE-FUNCTION-PROTOTYPE))))))) (:UNDEFINER %DELETE-DEFINER) (:TEMPLATE (:NAME :TYPE :ARG-LIST :BODY))) IL:FUNCTIONS (NAME TYPE ARG-LIST &BODY BODY) (LET* ((OPTIONS (COND ((CONSP NAME) (PROG1 (CDR NAME) (SETQ NAME (CAR NAME)))) (T NIL))) (NAME-FN NIL) (UNDEFINER NIL) (PROTOTYPE-FN NIL) (TEMPLATE NIL) (PRETTYMACRO NIL) (EDITDATE-OFFSET NIL)) (DOLIST (OPT-LIST OPTIONS) (CASE (CAR OPT-LIST) ((:UNDEFINER) (SETQ UNDEFINER (CADR OPT-LIST))) ((:NAME) (SETQ NAME-FN (CADR OPT-LIST))) ((:PROTOTYPE) (SETQ PROTOTYPE-FN (CADR OPT-LIST))) ((:TEMPLATE) (SETQ TEMPLATE (CADR OPT-LIST))) ((:PRETTYPRINTMACRO) (SETQ PRETTYMACRO (CADR OPT-LIST))) ((:EDITDATE-OFFSET) (SETQ EDITDATE-OFFSET (CADR OPT-LIST))) (OTHERWISE (CERROR "Ignore the option" "Unrecognized option to DefDefiner: ~S" OPT-LIST)))) (IL:* IL:|;;| "Crap out now if junk in EDITDATE-OFFSET") (WHEN (AND EDITDATE-OFFSET (NOT (INTEGERP EDITDATE-OFFSET))) (ERROR ":EDITDATE-OFFSET must be an integer, not ~a" EDITDATE-OFFSET)) (MULTIPLE-VALUE-BIND (EXPANSION-FN DOC) (SI::EXPANSION-FUNCTION NAME ARG-LIST BODY) (UNLESS (OR TEMPLATE PRETTYMACRO (NOT (MEMBER (QUOTE &BODY) ARG-LIST))) (IL:* IL:\; "Tell default prettyprinter where the body is") (SETQ TEMPLATE (NCONC (IL:FOR X IL:IN ARG-LIST IL:UNTIL (EQ X (QUOTE &BODY)) IL:UNLESS (MEMBER X LAMBDA-LIST-KEYWORDS) IL:COLLECT NIL) (LIST :BODY))) (WHEN (AND (NULL (CAR TEMPLATE)) (NULL NAME-FN)) (IL:* IL:\; "Name is in default place") (SETF (CAR TEMPLATE) :NAME))) (LET ((EXPANDER-NAME (GET-DEFINER-NAME NAME "definition-expander-")) (NAME-FN-NAME (IF (CONSP NAME-FN) (GET-DEFINER-NAME NAME "name-fn-")))) (IL:BQUOTE (PROGN (EVAL-WHEN (LOAD EVAL ) (SETF (GET (QUOTE (IL:\\\, NAME)) (QUOTE :DEFINER-FOR)) (QUOTE (IL:\\\, TYPE))) (PUSHNEW (QUOTE (IL:\\\, NAME)) (GET (QUOTE (IL:\\\, TYPE)) (QUOTE :DEFINED-BY))) (SETF (SYMBOL-FUNCTION (QUOTE (IL:\\\, EXPANDER-NAME))) (FUNCTION (IL:\\\, EXPANSION-FN))) (SETF (GET (QUOTE (IL:\\\, NAME)) (QUOTE :DEFINITION-EXPANDER)) (QUOTE (IL:\\\, EXPANDER-NAME))) (IL:\\\,@ (IF NAME-FN-NAME (IL:BQUOTE ((SETF (SYMBOL-FUNCTION (QUOTE (IL:\\\, NAME-FN-NAME))) (FUNCTION (IL:\\\, NAME-FN))))))) (SETF (GET (QUOTE (IL:\\\, NAME)) (QUOTE :DEFINITION-NAME)) (QUOTE (IL:\\\, (OR NAME-FN-NAME NAME-FN (QUOTE SECOND))))) (IL:\\\,@ (AND UNDEFINER (LET ((UNDEFINER-FN-NAME (GET-DEFINER-NAME NAME "undefiner-fn-"))) (IL:BQUOTE ((SETF (SYMBOL-FUNCTION (QUOTE (IL:\\\, UNDEFINER-FN-NAME))) (FUNCTION (IL:\\\, UNDEFINER))) (PUSHNEW (QUOTE (IL:\\\, UNDEFINER-FN-NAME)) (GET (QUOTE (IL:\\\, NAME)) (QUOTE :UNDEFINERS)))))))) (IL:\\\,@ (AND PROTOTYPE-FN (LET ((PROTOTYPE-FN-NAME (GET-DEFINER-NAME NAME "prototype-fn-"))) (IL:BQUOTE ((SETF (SYMBOL-FUNCTION (QUOTE (IL:\\\, PROTOTYPE-FN-NAME))) (FUNCTION (IL:\\\, PROTOTYPE-FN))) (ADD-PROTOTYPE-FN (QUOTE (IL:\\\, TYPE)) (QUOTE (IL:\\\, NAME)) (QUOTE (IL:\\\, PROTOTYPE-FN-NAME)))))))) (IL:\\\,@ (AND DOC (IL:BQUOTE ((SETF (DOCUMENTATION (QUOTE (IL:\\\, NAME)) (QUOTE FUNCTION)) (IL:\\\, DOC)))))) (IL:\\\,@ (AND TEMPLATE (IL:BQUOTE ((SETF (GET (QUOTE (IL:\\\, NAME)) (QUOTE :DEFINITION-PRINT-TEMPLATE)) (QUOTE (IL:\\\, TEMPLATE))))))) (IL:\\\,@ (AND EDITDATE-OFFSET (IL:BQUOTE ((SETF (GET (QUOTE (IL:\\\, NAME)) :EDITDATE-OFFSET) (IL:\\\, EDITDATE-OFFSET)))))) (PUSHNEW (QUOTE ((IL:\\\, NAME) (IL:\\\,@ (OR PRETTYMACRO (QUOTE PPRINT-DEFINER))))) IL:PRETTYPRINTMACROS :TEST (QUOTE EQUAL))) (DEFMACRO (IL:\\\, NAME) (&WHOLE DEFINITION &ENVIRONMENT ENV) (IL:BQUOTE (DEFINER (IL:\\\, (QUOTE (IL:\\\, TYPE))) (IL:\\\, (QUOTE (IL:\\\, NAME))) (IL:\\\, DEFINITION) (IL:\\\, ENV))))))))))
(DEFDEFINER (DEFDEFINER-VARIABLE-TYPE (:NAME (LAMBDA (WHOLE) (LET ((NAME (SECOND WHOLE))) (IF (CONSP NAME) (CAR NAME) NAME)))) (:PROTOTYPE (LAMBDA (NAME) (AND (SYMBOLP NAME) (IL:BQUOTE (DEFDEFINER-VARIABLE-TYPE (IL:\\\, NAME) (IL:\\\, (IF (EQ (IL:EDITMODE) (INTERN "SEDIT" "SEDIT")) (SYMBOL-VALUE (INTERN "BASIC-GAP" "SEDIT")) "Type")) (IL:\\\,@ (%MAKE-FUNCTION-PROTOTYPE))))))) (:UNDEFINER %DELETE-DEFINER) (:TEMPLATE (:NAME :TYPE :ARG-LIST :BODY))) IL:FUNCTIONS (NAME TYPES ARG-LIST &BODY BODY) (IL:* IL:|;;| "An extension to the DEFDEFINER universe, this allows the creation of definers that map to multiple file-package types. The test case, and the only case guaranteed to work, is DEFUN (which now must accept (DEFUN (SETF FOO)...), which needs to be stored as a SETFS file type).") (LET* ((OPTIONS (COND ((CONSP NAME) (PROG1 (CDR NAME) (SETQ NAME (CAR NAME)))) (T NIL))) (NAME-FN NIL) (UNDEFINERS NIL) (PROTOTYPE-FNS NIL) (TEMPLATE NIL) (PRETTYMACRO NIL) (TYPE-DISCRIMINATOR NIL) (EXPANSION-FNS NIL) (DOCS NIL) (EDITDATE-OFFSET NIL)) (DOLIST (OPT-LIST OPTIONS) (CASE (CAR OPT-LIST) ((:UNDEFINERS) (SETQ UNDEFINERS (CDR OPT-LIST))) ((:NAME) (SETQ NAME-FN (CADR OPT-LIST))) ((:PROTOTYPES) (SETQ PROTOTYPE-FNS (CDR OPT-LIST))) ((:TEMPLATE) (SETQ TEMPLATE (CADR OPT-LIST))) ((:PRETTYPRINTMACRO) (SETQ PRETTYMACRO (CADR OPT-LIST))) ((:TYPE-DISCRIMINATOR) (SETQ TYPE-DISCRIMINATOR (CADR OPT-LIST))) ((:EDITDATE-OFFSET) (SETQ EDITDATE-OFFSET (CADR OPT-LIST))) (OTHERWISE (CERROR "Ignore the option" "Unrecognized option to DefDefiner: ~S" OPT-LIST)))) (UNLESS TYPE-DISCRIMINATOR (ERROR "DEFDEFINER-VARIABLE-TYPE must have a TYPE-DISCRIMINATOR")) (IL:* IL:|;;| "Crap out now if junk in EDITDATE-OFFSET") (WHEN (AND EDITDATE-OFFSET (NOT (INTEGERP EDITDATE-OFFSET))) (ERROR ":EDITDATE-OFFSET must be an integer, not ~a" EDITDATE-OFFSET)) (DOLIST (TYPE TYPES) (MULTIPLE-VALUE-BIND (EXPANSION-FN DOC) (SI::EXPANSION-FUNCTION NAME ARG-LIST (LET ((TB (GETF BODY TYPE))) (IF TB (LIST TB) (ERROR "No expansion-function for ~A" TYPE)))) (SETF (GETF EXPANSION-FNS TYPE) EXPANSION-FN) (WHEN DOC (SETQ DOCS (CONCATENATE (QUOTE STRING) DOCS (OR DOCS "
") (SYMBOL-NAME TYPE) ": " DOC))))) (UNLESS (OR TEMPLATE PRETTYMACRO (NOT (MEMBER (QUOTE &BODY) ARG-LIST))) (IL:* IL:\; "Tell default prettyprinter where the body is") (SETQ TEMPLATE (NCONC (IL:FOR X IL:IN ARG-LIST IL:UNTIL (EQ X (QUOTE &BODY)) IL:UNLESS (MEMBER X LAMBDA-LIST-KEYWORDS) IL:COLLECT NIL) (LIST :BODY))) (WHEN (AND (NULL (CAR TEMPLATE)) (NULL NAME-FN)) (IL:* IL:\; "Name is in default place") (SETF (CAR TEMPLATE) :NAME))) (LET ((NAME-FN-NAME (IF (CONSP NAME-FN) (GET-DEFINER-NAME NAME "name-fn-"))) (TYPE-DISCRIMINATOR-NAME (GET-DEFINER-NAME NAME "type-discriminator-fn-"))) (IL:BQUOTE (PROGN (EVAL-WHEN (LOAD EVAL ) (SETF (GET (QUOTE (IL:\\\, NAME)) (QUOTE :DEFINER-FOR)) (QUOTE (IL:\\\, TYPES))) (SETF (SYMBOL-FUNCTION (QUOTE (IL:\\\, TYPE-DISCRIMINATOR-NAME))) (FUNCTION (IL:\\\, TYPE-DISCRIMINATOR))) (SETF (GET (QUOTE (IL:\\\, NAME)) (QUOTE :TYPE-DISCRIMINATOR)) (QUOTE (IL:\\\, TYPE-DISCRIMINATOR-NAME))) (IL:\\\,@ (AND PROTOTYPE-FNS (MAPCAN (FUNCTION (LAMBDA (TYPE) (LET ((PROTOTYPE-FN-NAME (GET-DEFINER-NAME NAME (CONCATENATE (QUOTE STRING) (SYMBOL-NAME TYPE) "-prototype-fn-")))) (IL:BQUOTE ((SETF (SYMBOL-FUNCTION (QUOTE (IL:\\\, PROTOTYPE-FN-NAME))) (FUNCTION (IL:\\\, (GETF PROTOTYPE-FNS TYPE)))) (ADD-PROTOTYPE-FN (QUOTE (IL:\\\, TYPE)) (QUOTE (IL:\\\, NAME)) (QUOTE (IL:\\\, PROTOTYPE-FN-NAME)))))))) TYPES))) (IL:\\\,@ (AND DOCS (IL:BQUOTE ((SETF (DOCUMENTATION (QUOTE (IL:\\\, NAME)) (QUOTE FUNCTION)) (IL:\\\, DOCS)))))) (IL:\\\,@ (AND TEMPLATE (IL:BQUOTE ((SETF (GET (QUOTE (IL:\\\, NAME)) (QUOTE :DEFINITION-PRINT-TEMPLATE)) (QUOTE (IL:\\\, TEMPLATE))))))) (SETF (GET (QUOTE (IL:\\\, NAME)) (QUOTE :DEFINITION-NAME)) (QUOTE (IL:\\\, (OR NAME-FN-NAME NAME-FN (QUOTE SECOND))))) (IL:\\\,@ (MAPCAN (FUNCTION (LAMBDA (TYPE) (LET ((EXPANDER-NAME (GET-DEFINER-NAME NAME (CONCATENATE (QUOTE STRING) (SYMBOL-NAME TYPE) "-definition-expander-"))) (EXPANSION-FN (GETF EXPANSION-FNS TYPE))) (IL:BQUOTE ((PUSHNEW (QUOTE (IL:\\\, NAME)) (GET (QUOTE (IL:\\\, TYPE)) (QUOTE :DEFINED-BY))) (SETF (SYMBOL-FUNCTION (QUOTE (IL:\\\, EXPANDER-NAME))) (FUNCTION (IL:\\\, EXPANSION-FN))) (SETF (GETF (GET (QUOTE (IL:\\\, NAME)) (QUOTE :DEFINITION-EXPANDER)) (QUOTE (IL:\\\, TYPE))) (QUOTE (IL:\\\, EXPANDER-NAME)))))))) TYPES)) (IL:\\\,@ (IF NAME-FN-NAME (IL:BQUOTE ((SETF (SYMBOL-FUNCTION (QUOTE (IL:\\\, NAME-FN-NAME))) (FUNCTION (IL:\\\, NAME-FN))))))) (IL:\\\,@ (AND UNDEFINERS (MAPCAN (FUNCTION (LAMBDA (TYPE) (WHEN (GETF UNDEFINERS TYPE) (LET ((UNDEFINER-FN-NAME (GET-DEFINER-NAME NAME (CONCATENATE (QUOTE STRING) (SYMBOL-NAME TYPE) "-undefiner-fn-")))) (IL:BQUOTE ((SETF (SYMBOL-FUNCTION (QUOTE (IL:\\\, UNDEFINER-FN-NAME))) (FUNCTION (IL:\\\, (GETF UNDEFINERS TYPE)))) (PUSHNEW (QUOTE (IL:\\\, UNDEFINER-FN-NAME)) (GETF (GET (QUOTE (IL:\\\, NAME)) (QUOTE :UNDEFINERS)) (QUOTE (IL:\\\, TYPE)))))))))) TYPES))) (IL:\\\,@ (AND EDITDATE-OFFSET (IL:BQUOTE ((SETF (GET (QUOTE (IL:\\\, NAME)) :EDITDATE-OFFSET) (IL:\\\, EDITDATE-OFFSET)))))) (PUSHNEW (QUOTE ((IL:\\\, NAME) (IL:\\\,@ (OR PRETTYMACRO (QUOTE PPRINT-DEFINER))))) IL:PRETTYPRINTMACROS :TEST (QUOTE EQUAL))) (DEFMACRO (IL:\\\, NAME) (&WHOLE DEFINITION &ENVIRONMENT ENV) (IL:BQUOTE (DEFINER-VARIABLE-TYPE (IL:\\\, (QUOTE (IL:\\\, NAME))) (IL:\\\, DEFINITION) (IL:\\\, ENV)))))))))
(DEFUN %EXPAND-DEFINER (DEFINER DEFINITION-WITHOUT-COMMENTS &OPTIONAL ENV) (FUNCALL (GET DEFINER :DEFINITION-EXPANDER) DEFINITION-WITHOUT-COMMENTS ENV))
(DEFUN %DEFINER-NAME (DEFINER DEFINITION-WITHOUT-COMMENTS) (FUNCALL (GET DEFINER :DEFINITION-NAME) DEFINITION-WITHOUT-COMMENTS))
(IL:* IL:\; "The most commonly-used definers")
(DEFDEFINER-VARIABLE-TYPE (DEFUN (:TYPE-DISCRIMINATOR (LAMBDA (WHOLE) (LET ((NAME (SECOND WHOLE))) (COND ((SYMBOLP NAME) (QUOTE IL:FUNCTIONS)) ((CL::SETF-NAME-P NAME) (QUOTE IL:SETFS)) (T (ERROR "Can't determine type for DEFUN: ~s" NAME)))))) (:NAME (LAMBDA (WHOLE) (LET ((NAME (SECOND WHOLE))) (COND ((SYMBOLP NAME) NAME) ((CL::SETF-NAME-P NAME) (CADR NAME)) (T (ERROR "Bad function-name for DEFUN: ~s" NAME)))))) (:PROTOTYPES IL:FUNCTIONS (LAMBDA (NAME) (IL:BQUOTE (DEFUN (IL:\\\, NAME) (IL:\\\,@ (%MAKE-FUNCTION-PROTOTYPE))))) IL:SETFS (LAMBDA (NAME) (IL:BQUOTE (DEFUN (SETF (IL:\\\, NAME)) (IL:\\\,@ (%MAKE-FUNCTION-PROTOTYPE)))))) (:TEMPLATE (:NAME :ARG-LIST :BODY)) (:EDITDATE-OFFSET 3)) (IL:FUNCTIONS IL:SETFS) (NAME ARGS &BODY (BODY DECLS DOCUMENTATION) &ENVIRONMENT ENV) IL:FUNCTIONS (IL:BQUOTE (PROGN (SETF (SYMBOL-FUNCTION (QUOTE (IL:\\\, NAME))) (FUNCTION (LAMBDA (IL:\\\, ARGS) (IL:\\\,@ DECLS) (BLOCK (IL:\\\, NAME) (IL:\\\,@ BODY))))) (IL:\\\,@ (AND DOCUMENTATION (IL:BQUOTE ((SETF (DOCUMENTATION (QUOTE (IL:\\\, NAME)) (QUOTE FUNCTION)) (IL:\\\, DOCUMENTATION)))))))) IL:SETFS (IL:* IL:|;;| "The form is (defun (setf foo) (store-var &rest args) body)") (IL:* IL:|;;| "Strategy is to give the code a name with DEFUN-SETF-NAME. The name is stored on the :SETF-DEFUN property of the accessor. This name is there for convenience/documentation only; the name can't be reliably changed by smashing this property (i.e. (SETF (FDEFINITION '(SETF FOO)) #'BAR) essentially does (SETF (SYMBOL-FUNCTION (DEFUN-SETF-NAME 'FOO)) #'BAR); it does NOT change the :SETF-DEFUN property on FOO).") (LET* ((REAL-NAME (SECOND NAME)) (DEFUN-SETF-NAME (DEFUN-SETF-NAME REAL-NAME))) (IL:BQUOTE (PROGN (SETF (SYMBOL-FUNCTION (QUOTE (IL:\\\, DEFUN-SETF-NAME))) (FUNCTION (LAMBDA (IL:\\\, ARGS) (IL:\\\,@ DECLS) (BLOCK (IL:\\\, REAL-NAME) (IL:\\\,@ BODY))))) (SET-DEFUN-SETF (QUOTE (IL:\\\, REAL-NAME)) (QUOTE (IL:\\\, DEFUN-SETF-NAME))) (IL:\\\,@ (AND DOCUMENTATION (IL:BQUOTE ((SETF (DOCUMENTATION (QUOTE (IL:\\\, REAL-NAME)) (QUOTE SETF)) (IL:\\\, DOCUMENTATION))))))))))
(DEFDEFINER (DEFINLINE (:PROTOTYPE (LAMBDA (NAME) (AND (SYMBOLP NAME) (IL:BQUOTE (DEFINLINE (IL:\\\, NAME) (IL:\\\,@ (%MAKE-FUNCTION-PROTOTYPE))))))) (:TEMPLATE (:NAME :ARG-LIST :BODY))) IL:FUNCTIONS (NAME ARG-LIST &BODY BODY &ENVIRONMENT ENV) (IL:* IL:|;;;| "This is an INTERIM version of DEFINLINE. Eventually, this will just turn into a DEFUN and a PROCLAIM INLINE. (It says so right here.) If you're using this one, DO NOT make any recursive calls in the body of the DEFINLINE. If you do, the compiler will run forever trying to expand the optimizer... Once the INLINE version gets working (in the PavCompiler only) that restriction will be lifted.") (MULTIPLE-VALUE-BIND (CODE DECLS DOC) (PARSE-BODY BODY ENV T) (LET ((NEW-LAMBDA (IL:BQUOTE ((IL:\\\, (QUOTE LAMBDA)) (IL:\\\, ARG-LIST) (IL:\\\,@ DECLS) (BLOCK (IL:\\\, NAME) (IL:\\\,@ CODE)))))) (IL:BQUOTE (PROGN (DEFUN (IL:\\\, NAME) (IL:\\\, ARG-LIST) (IL:\\\,@ BODY)) (DEFOPTIMIZER (IL:\\\, NAME) (IL:\\\, (PACK (LIST "definline-" NAME) (SYMBOL-PACKAGE NAME))) (&REST ARGS) (CONS (QUOTE (IL:\\\, NEW-LAMBDA)) ARGS)))))))
(DEFDEFINER (DEFMACRO (:PROTOTYPE (LAMBDA (NAME) (AND (SYMBOLP NAME) (IL:BQUOTE (DEFMACRO (IL:\\\, NAME) (IL:\\\,@ (%MAKE-FUNCTION-PROTOTYPE))))))) (:UNDEFINER (LAMBDA (NAME) (REMPROP NAME (QUOTE IL:ARGNAMES)))) (:TEMPLATE (:NAME :ARG-LIST :BODY))) IL:FUNCTIONS (NAME DEFMACRO-ARGS &BODY DEFMACRO-BODY) (UNLESS (AND NAME (SYMBOLP NAME)) (ERROR "Illegal name used in DEFMACRO: ~S" NAME)) (LET ((CMACRONAME (PACK (LIST "expand-" NAME) (SYMBOL-PACKAGE NAME)))) (MULTIPLE-VALUE-BIND (EXPANSION-FN DOC-STRING) (SI::EXPANSION-FUNCTION NAME DEFMACRO-ARGS DEFMACRO-BODY) (IL:BQUOTE (PROGN (SETF (SYMBOL-FUNCTION (QUOTE (IL:\\\, CMACRONAME))) (FUNCTION (IL:\\\, EXPANSION-FN))) (SETF (MACRO-FUNCTION (QUOTE (IL:\\\, NAME))) (QUOTE (IL:\\\, CMACRONAME))) (IL:\\\,@ (AND DOC-STRING (IL:BQUOTE ((SETF (DOCUMENTATION (QUOTE (IL:\\\, NAME)) (QUOTE FUNCTION)) (IL:\\\, DOC-STRING)))))) (IL:\\\,@ (WHEN COMPILER::*NEW-COMPILER-IS-EXPANDING* (IL:BQUOTE ((SETF (GET (QUOTE (IL:\\\, NAME)) (QUOTE IL:ARGNAMES)) (QUOTE (IL:\\\, (MAPCAR (FUNCTION (LAMBDA (ARG) (IF (MEMBER ARG LAMBDA-LIST-KEYWORDS) ARG (PRIN1-TO-STRING ARG)))) (IL:\\SIMPLIFY.CL.ARGLIST DEFMACRO-ARGS))))))))))))))
(DEFDEFINER (DEFVAR (:PROTOTYPE (LAMBDA (NAME) (AND (SYMBOLP NAME) (IL:BQUOTE (DEFVAR (IL:\\\, NAME))))))) IL:VARIABLES (NAME &OPTIONAL (INITIAL-VALUE NIL IVP) DOCUMENTATION) (IL:BQUOTE (PROGN (PROCLAIM (QUOTE (SPECIAL (IL:\\\, NAME)))) (IL:\\\,@ (AND IVP (IL:BQUOTE ((OR (BOUNDP (QUOTE (IL:\\\, NAME))) (SETQ (IL:\\\, NAME) (IL:\\\, INITIAL-VALUE))))))) (IL:\\\,@ (AND DOCUMENTATION (IL:BQUOTE ((SETF (DOCUMENTATION (QUOTE (IL:\\\, NAME)) (QUOTE VARIABLE)) (IL:\\\, DOCUMENTATION)))))))))
(DEFDEFINER (DEFPARAMETER (:PROTOTYPE (LAMBDA (NAME) (AND (SYMBOLP NAME) (IL:BQUOTE (DEFPARAMETER (IL:\\\, NAME) "Value" "Documentation string")))))) IL:VARIABLES (NAME INITIAL-VALUE &OPTIONAL DOCUMENTATION) (IL:BQUOTE (PROGN (PROCLAIM (QUOTE (SPECIAL (IL:\\\, NAME)))) (SETQ (IL:\\\, NAME) (IL:\\\, INITIAL-VALUE)) (IL:\\\,@ (AND DOCUMENTATION (IL:BQUOTE ((SETF (DOCUMENTATION (QUOTE (IL:\\\, NAME)) (QUOTE VARIABLE)) (IL:\\\, DOCUMENTATION)))))))))
(DEFDEFINER (DEFCONSTANT (:PROTOTYPE (LAMBDA (NAME) (AND (SYMBOLP NAME) (IL:BQUOTE (DEFCONSTANT (IL:\\\, NAME) "Value" "Documentation string")))))) IL:VARIABLES (NAME VALUE &OPTIONAL DOCUMENTATION) (IL:BQUOTE (PROGN (IL:\\\,@ (IF (CONSTANTP NAME) (IL:BQUOTE ((SET-CONSTANTP (QUOTE (IL:\\\, NAME)) NIL))))) (SETQ (IL:\\\, NAME) (IL:\\\, VALUE)) (PROCLAIM (QUOTE (SI::CONSTANT (IL:\\\, NAME)))) (IL:\\\,@ (AND DOCUMENTATION (IL:BQUOTE ((SETF (DOCUMENTATION (QUOTE (IL:\\\, NAME)) (QUOTE VARIABLE)) (IL:\\\, DOCUMENTATION)))))))))
(DEFDEFINER (DEFGLOBALVAR (:PROTOTYPE (LAMBDA (NAME) (AND (SYMBOLP NAME) (IL:BQUOTE (DEFGLOBALVAR (IL:\\\, NAME))))))) IL:VARIABLES (NAME &OPTIONAL (INITIAL-VALUE NIL IVP) DOCUMENTATION) (IL:* IL:|;;| "Use IL:SETQ here or the INIT dies.") (IL:BQUOTE (PROGN (PROCLAIM (QUOTE (GLOBAL (IL:\\\, NAME)))) (IL:\\\,@ (AND IVP (IL:BQUOTE ((OR (BOUNDP (QUOTE (IL:\\\, NAME))) (SETQ (IL:\\\, NAME) (IL:\\\, INITIAL-VALUE))))))) (IL:\\\,@ (AND DOCUMENTATION (IL:BQUOTE ((SETF (DOCUMENTATION (QUOTE (IL:\\\, NAME)) (QUOTE VARIABLE)) (IL:\\\, DOCUMENTATION)))))))))
(DEFDEFINER (DEFGLOBALPARAMETER (:PROTOTYPE (LAMBDA (NAME) (AND (SYMBOLP NAME) (IL:BQUOTE (DEFGLOBALPARAMETER (IL:\\\, NAME) "Value" "Documentation string")))))) IL:VARIABLES (NAME INITIAL-VALUE &OPTIONAL DOCUMENTATION) (IL:BQUOTE (PROGN (PROCLAIM (QUOTE (GLOBAL (IL:\\\, NAME)))) (SETQ (IL:\\\, NAME) (IL:\\\, INITIAL-VALUE)) (IL:\\\,@ (AND DOCUMENTATION (IL:BQUOTE ((SETF (DOCUMENTATION (QUOTE (IL:\\\, NAME)) (QUOTE VARIABLE)) (IL:\\\, DOCUMENTATION)))))))))
(IL:* IL:\; "Here so that the evaluator can be in the init without definers being in the init.")
(DEF-DEFINE-TYPE IL:SPECIAL-FORMS "Common Lisp special forms" :UNDEFINER %REMOVE-SPECIAL-FORM)
(DEFUN %REMOVE-SPECIAL-FORM (X) (IL:/REMPROP X (QUOTE IL:SPECIAL-FORM)))
(DEFDEFINER (DEFINE-SPECIAL-FORM (:TEMPLATE (:NAME :ARG-LIST :BODY))) IL:SPECIAL-FORMS (NAME ARGS &REST BODY) (COND ((NULL BODY) (ASSERT (SYMBOLP NAME) NIL "Ill-formed short DEFINE-SPECIAL-FORM; ~S is not a symbol." ARGS) (IL:BQUOTE (SETF (GET (QUOTE (IL:\\\, NAME)) (QUOTE IL:SPECIAL-FORM)) (QUOTE (IL:\\\, ARGS))))) (T (LET ((SF (INTERN (CONCATENATE (QUOTE STRING) "interpret-" (STRING NAME)) (SYMBOL-PACKAGE NAME)))) (MULTIPLE-VALUE-BIND (PARSED-BODY DECLS DOC) (IL:PARSE-DEFMACRO ARGS (QUOTE $$TAIL) BODY NAME NIL :PATH (QUOTE $$TAIL) :ENVIRONMENT (QUOTE $$ENV)) (IL:BQUOTE (PROGN (SETF (SYMBOL-FUNCTION (QUOTE (IL:\\\, SF))) (FUNCTION (LAMBDA ($$TAIL $$ENV) (IL:\\\,@ DECLS) (BLOCK (IL:\\\, NAME) (IL:\\\, PARSED-BODY))))) (SETF (GET (QUOTE (IL:\\\, NAME)) (QUOTE IL:SPECIAL-FORM)) (QUOTE (IL:\\\, SF))))))))))
(IL:* IL:\; "Form for defining interpreters of special forms")
(IL:* IL:\; "Don't note changes to these properties/variables")
(IL:PUTPROPS IL:MACRO-FN IL:PROPTYPE IL:FUNCTIONS)
(IL:PUTPROPS :UNDEFINERS IL:PROPTYPE IGNORE)
(IL:PUTPROPS IL:UNDEFINERS IL:PROPTYPE IGNORE)
(IL:PUTPROPS :DEFINER-FOR IL:PROPTYPE IGNORE)
(IL:PUTPROPS IL:DEFINER-FOR IL:PROPTYPE IGNORE)
(IL:PUTPROPS :DEFINED-BY IL:PROPTYPE IGNORE)
(IL:PUTPROPS IL:DEFINED-BY IL:PROPTYPE IGNORE)
(IL:PUTPROPS :DEFINITION-NAME IL:PROPTYPE IGNORE)
(IL:PUTPROPS IL:DEFINITION-NAME IL:PROPTYPE IGNORE)
(IL:* IL:\;
"Templates for definers not defined here. These should really be where they're defined.")
(IL:PUTPROPS DEFCOMMAND :DEFINITION-PRINT-TEMPLATE (:NAME :ARG-LIST :BODY))
(IL:PUTPROPS DEFINE-CONDITION :DEFINITION-PRINT-TEMPLATE (:NAME :VALUE :BODY))
(IL:PUTPROPS DEFINE-MODIFY-MACRO :DEFINITION-PRINT-TEMPLATE (:NAME :ARG-LIST))
(IL:PUTPROPS DEFINE-SETF-METHOD :DEFINITION-PRINT-TEMPLATE (:NAME NIL NIL :BODY))
(IL:PUTPROPS DEFSETF :DEFINITION-PRINT-TEMPLATE (:NAME :ARG-LIST :ARG-LIST :BODY))
(IL:PUTPROPS DEFSTRUCT :DEFINITION-PRINT-TEMPLATE (:NAME :BODY))
(IL:PUTPROPS DEFTYPE :DEFINITION-PRINT-TEMPLATE (:NAME NIL :BODY))
(IL:* IL:|;;| "Arrange for the correct compiler to be used.")
(IL:PUTPROPS IL:CMLDEFFER IL:FILETYPE :COMPILE-FILE)
(IL:PUTPROPS IL:CMLDEFFER IL:MAKEFILE-ENVIRONMENT (:READTABLE "XCL" :PACKAGE "XCL"))
(IL:PUTPROPS IL:CMLDEFFER IL:COPYRIGHT ("Venue & Xerox Corporation" 1986 1900 1987 1988 1990 1992))
(IL:DECLARE\: IL:DONTCOPY
(IL:FILEMAP (NIL)))
IL:STOP

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,24 +0,0 @@
FROM ubuntu:focal
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y build-essential clang libx11-dev
COPY maiko /build/
WORKDIR /build/bin
RUN rm -rf /build/linux*
RUN ./makeright x
FROM ubuntu:focal
ENV DEBIAN_FRONTEND=noninteractive
EXPOSE 5900
RUN apt-get update && apt-get install -y tightvncserver
RUN mkdir /app
WORKDIR /app
COPY basics ./
COPY --from=0 /build/linux.x86_64/* ./
RUN adduser --disabled-password --gecos "" medley
USER medley
ENTRYPOINT USER=medley Xvnc -geometry 1270x720 :0 & DISPLAY=:0 /app/ldex -g 1280x720 full.sysout

108
README.md
View File

@@ -1,26 +1,72 @@
# Medley
This repository is for the Lisp environment of [Medley Interlisp](https://Interlisp.org).
We've made great process in sorting out what we have (some dusty corners notwithstanding), but there's quite a bit more work to do. Please report problems!
See the [Documentation links](https://github.com/Interlisp/medley/wiki/Documentation) for an overview and pointers to documentation.
In particular [Running](https://github.com/Interlisp/medley/wiki/Running) explains other methods of getting Medley Interlisp.
See [Medley Interlisp Wiki](https://github.com/Interlisp/medley/wiki/) for an overview, and other pointers.
[Interlisp/maiko](https://github.com/Interlisp/maiko), is the repo for the implementation (in C) of the Medley virtual machine.
A sub-project is [Interlisp/maiko](https://github.com/Interlisp/maiko), which is the implementation (in C) of the Medley virtual machine.
## Using releases
There currently are separate releases of medley and maiko; get the latest version of each.
## Instructions for Building and Running
### Getting releases
Get the Maiko release [here](https://github.com/Interlisp/maiko/releases). You'll need the .tgz file corresponding to your operating system and processor (for Windows with WSL or Intel Linux, use `linux.x86_64`; for Macs use `darwin.x86_64` for Intel and `darwin.aarch64` for M1.)
Or, build your own maiko (the binaries `lde` `ldex` and `ldeinit`) We can build for other OS arch pairs depending on what is available for GitHub actions.
The medley release comes in two parts, found [here](https://github.com/Interlisp/medley/releases)
1. The "loadups" (download `medley-`YYMMDD`-loadups.tgz`)
2. The "runtime" (download `medley-`YYMMDD`-runtime.tgz`)
You don't need the "runtime" if you've cloned this (medley) repo, but you'll still need the "loadups" release.
If you happen to have the 'gh' GitHub command line installed you can download both using
```
gh release download -R Interlisp/medley -p "*"
```
but otherwise just click on the link(s) below to the parts you need.
### Unpacking releases
From a shell/terminal window:
1. Choose where you want to install medley and maiko.
Unpack the medley loadups file
* `cd ` ~parent~
* `tar xvzf medley-`YYMMDD`-loadups.tgz`
2. Unpack the medley runtime OR clone the Medley repo
(the "medley runtime" is just a subset of the whole repo)
* `tar xvzf medley-`YYMMDD`-runtime.tgz`
OR
```
git clone https://github.com/Interlisp/medley
```
3. Unpack the maiko file for your operating system and CPU type, e.g.,
```
tar xvzf maiko-210823.linux.x86_64.tgz
```
3. This should leave you with two directories, `medley` and `maiko`.
### Setting up X
Medley Interlisp needs an X-Server to manage its display. Most Linux desktops have one. There are a number of free open source X-servers for windows. Mac users should head over to [XQuartz.org](https://xquartz.org/releases) -- be sure to pick a version if you have a newer Mac.
Medley Interlisp currently needs an X-Server to manage its display. Most Linux desktops have one. Windows 11 with WSL includes an X-Server. For Windows 10 with WSL2, there are a number of open-source X servers; for example vcxsrv.
Mac users should get [XQuartz from XQuartz.org](https://xquartz.org/releases).
Medley manages the display entirely, doesn't use X fonts and manages it's own window system.
If you have a high-resolution display, note that much of the graphics was designed for a low-resolution display, so an X-server that does "pixel doublilng" is best. (E.g., Raspberry Pi does pixel doubling on 4K displays.) It also presumes you have a 3-button mouse; the scroll-wheel on some mice act as one with some difficulty.) XQuartz Preferences/Input has "Emulate three button mouse" option.
### Running Medley Interlisp
The `run-medley` script in this repo sets up some convenient defaults. Running Medley can be done by typing:
@@ -35,9 +81,6 @@ Or, if you wish to start Medley up with a different SYSOUT:
$ cd medley
$ ./run-medley <SYSOUT-file-name>
```
Once the system comes up, give it a few seconds to initialize.
The first time the system is run it loads the system image that comes
with the system. When you exit the system (or "do a `SaveVM`" menu
option) the state of your machine is saved in a file named
@@ -56,40 +99,45 @@ Or from the Common Lisp prompt with:
```
(IL:LOGOUT)
```
When you logout of the system, Medley automatically creates a binary
When you log out of the system, Medley automatically creates a binary
dump of your system located in your home directory named
`lisp.virtualmem`. The next time you run the system, if you don't
specify a specific image to run, Medley restores that image so that
you can continue right where you left off.
* [Using Medley Interlisp](https://github.com/Interlisp/medley/wiki/Using-Medley-Interlisp)
* [Using Medley Interlisp](https://interlisp.org/doc/info/Using.html)
## Naming conventions and directory structure
File Names and Extensions: Most Interlisp source file names are
UPPERCASE and Interlisp didn't use file extensions for its source
files. A .TEDIT or .TXT file is probably documentation
for the package of same name, at least in the library,
internal/library, lispusers.
for the package of same name, at least in the library, lispusers.
The current repo has both Lisp sources and compiled .LCOM and .DFASL
files, because some files don't compile in a vanilla lisp.sysout .
files.
Each directory should have a README.md, but briefly
- docs -- Documentation files (either PDFs or online help)
- fonts -- raster fonts (or font widths) in various resolutions for display, postscript, interpress, press formats
- greetfiles -- various configuration setups
- internal -- These _were_ internal to Venue; now internal/library and internal/test
- library -- packages that were supported (30 years ago)
- lispusers -- packages that were only half supported (ditto)
- loadups -- has sysouts and other builds
- patches -- for cases where reloading doesn't wor
- scripts -- some scripts for fixing up things
- sunloadup -- support information for making a new lisp.sysout from scratch
- sources -- sources for Interlisp and Common Lisp implementations
- unicode -- data files for support of XCCS to and from Unicode mappings
* BUILDING.md -- instructions on how to make your own loadups
* clos -- early implementation of Common Lisp Object System
* CLTL2 -- files submitted to bring Medley up to the conformance to "Common Lisp, the Language" 2nd edition. Not enough to conform to the ANSII standard lisp.
* Dockerfile -- used when building Docker containers with Medley
* docs -- Documentation files (in TEdit format PDFs or online help; look [here](https://github.com/Interlisp/medley/Documentation)
* fonts -- raster fonts (or font widths) in various resolutions for display, postscript, interpress, press formats
* greetfiles -- various configuration setups
* internal -- These _were_ internal to Venue
* library -- packages that were supported (30 years ago)
* lispusers -- User contributed packages that were only half supported (ditto)
* loadups -- has sysouts and other builds plus a few remnants
* obsolete -- files we should remove from the repo
* rooms -- implementation of ROOMS window/desktop manager
* run-medley -- script to enhance the options of running medley
* scripts -- some scripts for fixing up things
* sources -- sources for Interlisp and Common Lisp implementations
* unicode -- data files for support of XCCS to and from Unicode mappings
plus
Dockerfile, and scripts for building and running medley
tmp directory for use during build processes

View File

@@ -1,2 +0,0 @@
(ASDF NIL NIL NIL ("1") 1)
(ASDF NIL NIL NIL ("A") 2)

10
docs/README.md Normal file
View File

@@ -0,0 +1,10 @@
See [Documentation links](https://github.com/Interlisp/medley/wiki/Documentation)
a complete list of available documentation. Much of the documentation still
needs review and updating.
This directory has source (.TEDIT) for some documents that are found elsewhere.
* dinfo -- files for HelpSys man command Interlisp Reference Manual

0
docs/ReleaseNote/APPENDIXB-SEDIT.pdf Executable file → Normal file
View File

0
docs/ReleaseNote/APPENDIXC-ICONW.pdf Executable file → Normal file
View File

0
docs/ReleaseNote/ENVOSCOVERSHEET.pdf Executable file → Normal file
View File

0
docs/ReleaseNote/Indexfinal.pdf Executable file → Normal file
View File

0
docs/ReleaseNote/LOT.pdf Executable file → Normal file
View File

0
docs/ReleaseNote/PREFACE.pdf Executable file → Normal file
View File

0
docs/ReleaseNote/PRINTINGSPEC.pdf Executable file → Normal file
View File

0
docs/ReleaseNote/SEC4-IRMERRATA.pdf Executable file → Normal file
View File

0
docs/ReleaseNote/SEC7-CLIMPLMNTN.pdf Executable file → Normal file
View File

0
docs/ReleaseNote/TABS2L.pdf Executable file → Normal file
View File

0
docs/ReleaseNote/TABSINFOP.pdf Executable file → Normal file
View File

0
docs/ReleaseNote/TABSLAYOUTL.pdf Executable file → Normal file
View File

0
docs/ReleaseNote/TABSPEC.pdf Executable file → Normal file
View File

0
docs/ReleaseNote/TOC.pdf Executable file → Normal file
View File

0
docs/ReleaseNote/Titlepage.pdf Executable file → Normal file
View File

0
docs/ReleaseNote/indexbase.pdf Executable file → Normal file
View File

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,8 @@
((0 246) (1 15332) (2 3591) (3 1765) (4 897) (5 654) (6 442) (7 339) (8 232) (9 180) (10 176) (11 125)
(12 108) (13 107) (14 91) (15 65) (16 74) (17 48) (18 57) (19 46) (20 35) (21 31) (22 28) (23 28) (24
24) (25 22) (26 26) (27 27) (28 9) (29 18) (30 10) (31 9) (32 10) (33 7) (34 10) (35 6) (36 4) (37 8)
(38 2) (39 4) (40 6) (41 7) (42 3) (43 11) (44 4) (45 3) (46 3) (47 4) (48 5) (49 1) (50 3) (51 2) (
52 2) (53 1) (54 1) (55 4) (56 7) (57 2) (58 2) (59 4) (60 2) (61 1) (62 3) (63 2) (64 2) (66 1) (67 5
) (69 1) (70 2) (72 1) (73 1) (74 1) (75 2) (77 2) (79 1) (82 2) (83 1) (84 2) (86 1) (89 1) (91 1) (
93 2) (97 1) (111 1) (116 1) (119 1) (130 1) (133 1) (136 1) (145 1) (146 1) (148 1) (152 2) (159 1) (
163 1) (168 1) (179 1) (185 1) (188 1) (196 1) (207 1))

116
docs/internal/Addarith.tty Normal file
View File

@@ -0,0 +1,116 @@
There are a few additional arithmetic functions:
(MASK.1'S <position> <size>) returns a number equivalent to
(llsh (sub1 (expt 2 size)) position), but faster, and without consing.
Currently, the sume of <position> and <size> cannot exceed 32.
(MASK.0'S <position> <size>) is basically (logxor -1 (mask.1's position size))
These two functions use a diagonal array of pre-computed masks, which
is accessed by \getbaseptr's over a 32-cell index array (this is to substitute
for "fast" elt, since ELT isn't yet in microcode). Macro definitions for both
funs cause all calls to MASK.1'S to turn into these "fast" elts.
(POWEROFTWOP <x>) where <x> is an integer, quickly returns its result.
(INTEGERLENGTH <x>) is basically log2 of n; that is how long the integer
representation of <x> is when expressed in base 2. For example,
(haulong 13) = 4; <x> must be an integer, and for negative arguments,
the result is the same as that of the absolute value.
(HAIPART <x> <n>) gets the high-order <n> bits of the two's complement
representation of the integer <x>; for negative <n>, it gets the low-order
<-n> bits. Note that "high-order" is not dependent on word size, but
is derived from (HAULONG <x>).
(IMOD <x> <modulus>) returns <a> where <a> is in the closed interval
[0, 1, ... < modulus-1>] and <x> = m*<modulus>+<a>. NoteWell:
this is *not* the same as the REMAINDER function, since <a> is always
non-negative. The argument <modulus> may also be CELL or WORD,
in which case the appropriate size is substituted to truncate to a cell-sized
or word-sized integer. A macro definition for mod optimizes the case for
compilation where <n> is constant and is a power of two.
(EVENP <x> <n>) is true iff <x> is 0 mod <n>; <n> defaults to two if not
supplied. Currently both arguments must be integers. A macro
definition also does some compile-time optimization, particularly
for the case where <n> is a power of two.
(ODDP <x> <n>) is just (not (evenp <x> <n>)); has both expr and macro
definition.
(IMODLESSP <x> <y> <modulus> <equal?>) This function is inspired by
the need to use "wrap-around" counters. It is not possible to define a
"perfect" ordering function on the integers [0, 1, ... <modulus-1>], but
this function takes the view that it is better to limit the "diameter"
of the applicable domain, than to "bump" into the singularity at the
endpoints of the interval. So MODLESSP will return "true" iff
<y>-<x> mod <modulus> is less than 1/2*<modulus>. The optional
argument <equal?>, if non-null, says to do a "less than or equal"
test rather than a "lessp" test. Generally the <modulus> should be
a power of two (for faster running speed), but this isn't necessary.
Two exceptional arguments are also admitted -- if <modulus> is
'WORD, then the appropriate value is taken for word-sized arithmetic;
if it is 'CELL, then the appropriate value is taken for double-word,
or cell, sized arithmetic. In Interlisp-D, WORD sized is 16-bit, and
CELL-sized is 32-bit.
(TIMEREXPIRED? <x> <y>) Basically, this function just calls MODLESSP with
<x> and <y> and a modulus argument derived from the size of the clock
behind the CLOCK function; however, if <y> is omitted (or is NIL), it
defaults to the value of (CLOCK 0), but without doing any consing.
Typical usage is in implementing an "alarmclock". One will set some
variable, say TIMEOUT, to (MODPLUS (CLOCK 0) <duration>), and
then frequently test (TIMELESSP TIMEOUT); when this test first
becomes false, the timer, or "alarmclock", has expired.
(IMODPLUS <x> <y> <modulus>)
(IMODDIFFERENCE <x> <y> <modulus>)
These two functions are essentially (MOD (<operation> <x> <y>) <modulus>),
except no overflow is permitted to occur during the intermediate <operation>.
A macro produces some slightly-optimized code for the case where <modulus>
is CELL. A current limitation is that an arithmetic overflow occurring when
<modulus> is not a power of two (or CELL or WORD) causes an error.
(BITTEST <n> <mask>) is the CommonLisp function defined as
(NEQ 0 (LOGAND <n> <mask>)).
(ROT <x> <n> <wordsize>) is a slight extension of the CommonLisp ROT
function; it performs a bitwise-rotation of the integer <x>, by <n> places,
within a field of <wordsize> bits wide. The optional argument <wordsize>
defaults to CELL, and must either be an integer in the range 1 to
<bitspercell>, or else be one of the litatoms CELL or WORD; in the latter
two cases the quantities <bitspercell> and <bitsperword> are respectively
substituted. A macro optimizes the case where <wordsize> is WORD and <n>
is 1; this is to help with the 16-bit rotate found in checksumming algorithms.
***** The remaining documentation is about \-named functions ******
The following two functions are essentially the CommonLisp functions
LOAD-BYTE and DEPOSIT-BYTE, but without any error or consistency
checking. There are versions with the checking, under similar, non-\
names, in another file (to be released at a later date).
(\XLOADBYTE <x> <position> <size>) is derived from the PDP-10 LDB
instruction; it takes a byte of length <size> out of the integer <x>
which byte has <position> bits to the right of it when <x> is viewed
in binary notation.
(\XDEPOSITBYTE <x> <position> <size> <newval>) is derived from the PDP-10
DPB instruction; it does not "modify memory" however, but returns
an integer obtained by replaceing the byte of <x> as specified under
LOADBYTE with the low-order <size> bits of <newval>.
The following four functions implement a feature that Ron asked for a long
time ago, and probably should not be documented for random users, unless
all the \-functions will be so documented:
(\GETBASEBITS <addr> <bit-offset> <n>) returns a integer obtained by
starting at the word address <addr>, skipping over <bit-offset> bits,
and getting the next <n> bits from memory. In this scenario, bits
are numbered with 0 being the high-order position in the word, and
with incresing bit-addresses leading to increasing word address. Thus
bit address 15 is the low-order bit of some word, and bit address 16 is
the high-order bit of the next word. The low-order bit of the result
is obtained from the bit found at <bit-offset>+<n>-1 bits after bit 0 of
the word at <addr>. This ordering of bits and bytes within a memor

Binary file not shown.

Binary file not shown.

Binary file not shown.

151
docs/internal/BUILDINGUCODE Normal file
View File

@@ -0,0 +1,151 @@
File: [FS6:PARC:Xerox]/ISLDisplay/Display1/Software/LispOptionsHandlers.message
Last Edited: DDavies - 3-Nov-88 18:12:10
I hyperventilated a lot trying to figure out what to do. Here's the procedure I think should work. CORRECTIONS APPRECIATED!!!!!!
Already Nick Briggs and Karey Krauter have cleared up many points. Without them, this would never have happened.
Examples of the files used to build the color display handler can be found on [FS6:PARC:Xerox]/ISLDisplay/Display1/Software/IOP/*.
---------------------------------------------------------------
This is a procedure for adding an options handler to an existing LispDove.db. It is an amalgam of the procedure in RAMMemHandlers.doc and what I've been able to figure out. I assume the new options handler will live in Main Memory. Its name will be "xyz."
The first thing to realize about building a LispDove.db is that you have unlimited opportunities to demonstrate your toughness and resolve. This procedure took me about a week to get through successfully the first time. Then for about 6 months it was easy. Then it was impossible again, so I switched from Lyric (a Lisp release) to Medley (a later release). This document describes the process of building the Medley release since I seem to have lost the ability to build one for Lyric.
This document is mostly about the process of assembling the files needed to do the final build, not about the tactics of writing a handler. There are a few hints below, but you'll really need to read the Opie documentation and look at the existing options handlers (Bringover PPOHandlerDove.df or CDspHandlerDove.df). Having a knowledgeable (and understanding) friend helps a great deal. You should also read everything on [Ohio:OSBU North:Xerox]<IO Architecture>MesaDoveDoc> and <IO Architecture>Opie>. The file called PerfectMap.mp2 is really called Perfect.mp2 and is on <IO Architecture>, not <IO Architecture>MesaDoveDoc>.
We assume that you know 80186 assembly language. We also assume knowledge of PCs, XDE and all the tools you'll use to get the job done.
I'm intentionally ignoring ConfigOnly files, since there is no Lisp Configuration Tool (they use the Mesa one).
I'm also ignoring the Lisp software necessary to communicate with the new Handler, since I don't know anything about it. Maybe we'll add that later (Nick?). I do know that Lisp doesn't have processes, just tasks that voluntarily give up control and execute in strict round-robin fashion. There is no limit on the length of time a Lisp task may hold the processor. Well-behaved tasks give up control occasionally. Lisp tasks can send interrupts to the IOP. The IOP handlers essentially cannot sent interrupts to Lisp tasks (if you ignore the timer). Timer interrupts appear 60 times/sec, but don't seem to do much.
We'll assume you're doing all your assembling, linking and locating on a real XT or AT. The Assembler, Linker, Locator, CRLFTool and PC/XNS software are floating around. We also assume you're doing your editing in XDE. XDE is also needed to run the BringOver/SModel, Fetch and MakeDoveMicroboot tools. Files are transferred between your workstation and the PC using the Ethernet. All the command files used will pull the relevant files over, do the work, and send the results back. Since the XDE editor doesn't use linefeed characters and the PC software demands them, we'll incorporate a program on the PC to insert linefeeds (CRLFTool). Unfortunately, the program isn't smart enough to recognize existing CRLF sequences - it turns them into CRLFLF. That means we'll have to remove any linefeeds that exist on the XDE side.
(1) First, we'll BringOver all the dreck you'll use to build your handler. There are lots and lots and lots of versions of this stuff around. The current Lisp system is not based on any particular DSBU release. The only way to get an approximation to the files used by the rest of the Lisp code is to bring it all over. First, carefully get rid of whatever .asm, .def, .lst, .obj, .lnk, .loc, .mp1 and .mp2 files you've got lying around.
BringOver "[Pogo:AISNorth:Xerox]<UCode>DF>LispDove.df"
BringOver exactly the version of LispDoveIOPIntegration.df now on your disk.
BringOver exactly the version of AllocSgs.df now on your disk.
BringOver exactly the version of KeyboardMouseHandlerDove.df now on your disk.
Go get [Wilma:OSBU North:Xerox]<Maple>Working>IOP>XtndOpie.loc (it will be used by ColorLispDove.cm)
Now, you're close. You've noticed by now that these DF files specify numerous versions of some files. Here are my rules: 1) BringOver the latest version whenever there is a conflict. This works except for the following files (as of 12-Jul-88 11:07:06 anyway):
IOREther.obj, STKEther.obj - The version of IOREther used in LispDoveIOPIntegration uses up about 13KB of the 16KB available for IORegions. The rest of the IORegions won't fit in the remaining space below 8000H. Why is this important? Well, if you plan to debug your handler IOP code using Lisp, you need to put an image of the PROM into RAM. At SDD, they changed things so the PROM image can live at C000H. However, Lisp hasn't changed so it's PROM image still lives at 8000H. As of this date (12-Jul-88 11:10:26), the Lisp code doesn't take advantage of the extra ENet buffers, so you can use the IOREther.obj and STKEther.obj from the 12.3 release if you need to. For the Medley build, I'm using the big ENet buffers and doing my handler debugging in the Mesa environment.
(2) Create an IORegion segment definition both in 80186 assembly language and Lisp code. Make sure they match. The 80186 segment must be named "xyzIOR" and be contained in a file called "IORxyz.asm". Your IOR segment must be declared "COMMON". Many copies of it will appear in different files below. The locator will combine the copies only because of the COMMON declaration.
(3) Create a stack segment definition in 80186 assembly code. The segment must be named "xyxSTK", and its standard file name is "STKxyz.asm". Your STK segment must be declared "COMMON". Many copies of it will appear in different files below. The locator will combine the copies only because of the COMMON declaration.
(4) Write your 80186 handler. Remember that its name can be no longer than 8 characters (MS-DOS limitation). This will contain all the tasks needed by your device. A useful way of thinking about an Opie task is that for every interrupt serviced by your handler, you need one task. An interrupt may not be serviced by two tasks and a task shouldn't try to service two interrupts. You can have more tasks than interrupts if that is useful. Watch out for the way Opie handles interrupts when receiving tasks aren't waiting for them.
You might also want to think about where variables are stored. All the PROM handlers put their variables in the IORegion, since that's the only RAM they are allowed to use. Since your handler will be in RAM, you could bury some variables in it if necessary. Remember that the number of segment registers is limited and care should be taken when passing pointers with implied segment registers. For example, if passing a pointer to a parameter block which might be either in the code segment or in the IORegion, the procedure receiving the pointer must have some way of figuring out what segment register to use. One way out of this is to put all variables in the IOR.
Your handler code must contain an externally defined variable called "xyzHandlerID" declared as follows
EXTRN xyzHandlerID: ABS
Note that you really must use "xyzHandlerID", not "xyzHdlrID" or "MyHandlerID" or something else. Opie uses macros to assemble names and you must conform to the pattern. The xyzHandlerID is passed as an argument to Opie macros like %InitializeTask or %Restart.
Your handler must also contain an initialization procedure declared as
xyxInit PUBLIC FAR PROC
.
.
.
xyxInit ENDP
Again, only "xyzInit" will do, not "MyInit" or "xyzInitializtionProcedure" or "HereWeGo".
The code segment for your handler must be named "IOPEInRAM".
(5) Look at all the .asm and .def files you have now in XDE. Remove the line feeds from all of them. (I tried using MakePC to do this and succeeded in removing all the CRs too!) Some files are stored with line feeds, some without. We'll assume no XDE files have line feeds. The *.bat files seem to be an exception - they are often stored with line feeds.
(6) Assemble and link your Handler code, IOR segment and STK segment files. There should be one unresolved reference, xyzHandlerID. That will be resolved in RAMHands.asm. Make a DF file called "xyzHandlerDove.df" which covers the sources, object files and the final link file (which is an 8 character name something like xyxHndlr.lnk).
(7.0) Modify AllocSegs.df (note this is called "AllocSegs" and the others are called "AllocSgs"). Add a clause of the form
Imports [FS6:PARC:Xerox]<ISLDisplay>Display1>DF>xyzHandlerDove.df Of >
Using [IORxyz.obj, STKxyz.obj]
(7.1) Modify the version of AllocSgs.bat you brought over in step 1 so that it pulls over IORxyz.obj and STKoxy.obj (e.g. XFILE RET IORxyz.obj -O). Insert STKxyx.obj into the link command that produces STKSegs.lnk. It must go after STKFlop.obj and before STKEnd.obj. It's safe to put it next to STKCDsp.obj or STKPPO.obj.
As a general rule, don't specify directories or particular machines in the command files. That way they can be used by anyone on any machine.
(7.2) Insert IORxyz.obj into the link command that produces IORSegs.lnk. It must go before IOREnd.obj.
(7.3) In SegLoc.bat, add the size of the xyzSTK segment to the first parameter in the RS clause of the locate command. The size will be listed in the .mp1 file for your linked handler. For example, for the following SegLoc.bat:
SS(IORegion(+1C4H)) &
PC(PURGE) &
RS(13B1H TO 3FFFH) &
AD(SM(IOPEINRAM(10000H)))
the parameter to change is "13B1H" in the RS clause "RS(13B1H TO 3FFFH)". The "+1C4H" allows the IOR to grow from its size in local RAM during booting time to its bigger size in main memory after booting. It won't change. Address 4000H (3FFFH+1) is the start of Main Memory. The 10000H is a screwball way of getting around a bug in the loader that causes it to get upset when it sees 0000. It interpretes 10000H as 00000H (?).
(8) Edit the RAMHands.asm now on your disk. Add an entry of the form:
%Handler(xyz,n,PROC,MEMORY)
where "n" equals the desired number of your HandlerID. Options handler ID's begin at 97. They must be less than 128. So far as I know, the PPO/PSO combination used up 97 and 98. The CDsp color display used 99. Use whatever number is next at the time you add your handler. Remember the number, you'll need to put n-96 into the EEProm later (by hand using the System Configuration Tool).
At this time, you might want to comment out the PPO handler entries (put a "'" immediately after the "%"). This depends on whether you're going to include the PPOHndlr.lnk file in MEMCode.loc. If not, comment it out in RAMHands (see "To toss a handler" below).
(9) Run AllocSgs.bat on the PC. It should pull over all the files, do the assembles, links and locs, producing AllocSgs.loc. If your PC stops with "TOO MANY FILES OPEN", add an entry like "FILES=20" to your Config.sys.
I spent a day finding out that PC-DOS stupidly truncates command lines that are too long. My AllocSgs.bat was producing IORSegs.ln instead of IORSegs.lnk. Watch the lengths of your command lines in ALL the .bat files.
The Medley version of the DF's do a funny thing. They use the released version of AllocSgs, but make three new batch files, AllocIOR.bat, AllocSegs.bat and AllocSTK.bat. AllocSegs.bat uses the other two as line continuation files. AllocSegs.bat binds up all the IOR and STK segments as AllocSgs.bat, except it puts in IORPSO and STKPSO and takes out IORPPO and STKPPO. Since we must modify RAMHands (=> must run AllocSgs.bat anyway), I just changes AllocSgs.bat so it conformed with AllocSegs.bat. That is, I uncommented the lines that bring over IORPSO.obj and STKPSO.obj; commented the lines that bring over IORPPO.obj and STKPPO.obj and replaced IORPPO.obj and STKPPO.obj with IORPSO.obj and IORPSO.obj respectively in the IORSegs and STKSegs link commands.
In this step and the steps below, you can pretty safely ignore warnings from the Linker about POSSIBLE OVERLAP in IOPELOCALRAM. Other warnings and error messages should be taken seriously.
(10) Here's your first looping point. Look at AllocSgs.mp2. Compare it with Perfect.Mp2 (see above). The segment map should start with IOPELOCALRAM, ??SEG, OPIESTK, etc. If it doesn't, the order of the files given to the linker in AllocSgs.bat is wrong. The lask STK entry, ENDSTK, should end at (the address in the RS clause of SegLoc.bat - 1). For example, for the SegLoc.bat given above, the STOP address of ENDSTK should be 013B0H. If the real end address is wrong, adjust the number in SegLoc.bat and loop back to step 9.
Next, look at the START address of IOREGION. It should be 04000H. This is really a double check on the number in SegLoc.bat. If IOREGION doesn't start at 4000H, the reserve clause is either too low (STK entries overflowing above 04000H) or too high (IOR entries falling below the reserved space). In either case, fix it and run it again.
Finally, look at the STOP address of ENDIOR. This is a bit tricky. In the beginning of Daybreak development, the IORegion was divided in half. The part between 4000H and 8000H was used for handler IOR's. The part from 8000H to C000H was used to hold the image of the code that normally sits in PROM when debugging. This worked fine until the IOR's grew out of the bottom half. DSBU fixed this sometime around the 12.5 release. As of today (12-Jul-88 13:14:44), the AIS folks have sort of half-way changed. Their code assumes the space above 8000H isn't sacred, but they haven't bothered to make room for the PROM image at C000H either. If you have some other way of debugging your handler (like using the released SDD Mesa environment), you can use the standard AIS release. That's what I'm doing for the Medley release. Your Lisp system will not be debuggable if the STOP address of ENDIOR is greater than or equal to 08000H. If you never plan to debug your handler in Lisp, fine. Otherwise, you must start throwing out handlers to make things fit. I tossed the PCE, Parity, TTY, RS232C, PSO and PPO handlers. If AIS has gone to the expanded IOR by the time you're working on this, ENDIOR must STOP at 0C000H.
2-Sep-87 17:57:52: Well, there's a bit more to this story. First, as stated in the documentation, RAMCode must fit roughly between 1400H and 4000H. I say roughly because booting tosses some other stuff in there too. Second, MEMCode must fit between ENDIOR and 8000H (current AIS systems that you want to debug) or C000 (current Mesa systems or current AIS systems that you can't debug). Just because ENDIOR is below 8000H, doesn't mean you're done. There's no way to check this here, check it in step 14 below. If things don't fit, you either get to reduce the size of the IORegion (by tossing handlers or using the small version of IOREther.obj) or reduce the size of MEMCode.
To toss a handler:
* Comment out its entry in RAMHands.asm (use the "%'Handler(..." trick).
* Remove its STK entry from the list of things linked to form STKSegs.lnk in AllocSgs.bat
* Remove its IOR entry from the list of things linked to form IORSegs.lnk in AllocSgs.bat
* If the code for the handler lives in IOP local RAM (a "RAM handler"), remove its .lnk file from the list of things linked to produce RAMCode.lnk in RAMCode.bat.
* If the code for the handler lives in Main Memory (a "Memory handler"), remove its .lnk file from the list of things linked to produce MEMCode.lnk in MEMCode.bat.
While we're at it, correlate the entries in RAMHands with those in RAMCode.bat and MEMCode.bat. If a handler is a memory handler (it's linked into MEMCode.lnk), the corresponding entry in RAMHands.asm must end in ",MEMORY)". If the handler is linked into RAMCode.lnk, the entry in RAMHands must end in ",)". This bit me a couple of times. This entry tells the code whether the handler is to be found in main memory or IOP Local RAM. The various PCE code modules are spread between local RAM and Main Memory so unless you really know what you're doing, leave them alone.
Remember, you must run AllocSgs.bat every time you change RAMHands.asm.
(11) Since KyMoInit.asm imports the RAMHands.asm you just changed, run KyMoInit.bat on the PC.
(12) The original RAMMemHandlers.doc said to run RAMOpie.bat at this point. So far as anyone can tell, we haven't changed any of the RAMOpie components, so never mind. However, my version of RAMOpie was built with an old version of STKOpie.obj (see step 1 above) so I had to rebuild it just to get that right. If you have to rebuilt RAMOpie, modify RAMOpie.bat to insert the XFILE and CRLFTool commands as necessary and run it on the PC.
(13.1) Run RAMCode.bat (modifying it to pull over all the files to the PC and send RAMCode.loc back if necessary). This produces RAMCode.loc. Watch out! The comments in RAMCode.bat had gotten out of touch with the files in RAMCodeI.bat, but you couldn't tell just by looking at RAMCode.bat. If you touch the list of files being linked, remember to retain the order. The order of the linking for RAMcode must be: STKSegs.lnk,IORSegs.lnk,RAMHInit.obj,RAMOpie.lnk,{all the ram handlers in any order}.
(13.2) Look at RAMCode.mp2. The same conditions stated in step 10 should apply here (STK segments first, followed by IOREGION at 04000H, ENDIOR not exceeding 08000H or 0C000H depending on what Lisp you're building). RAMCode must fit between ENDSTK and 4000H. That's really not the test since booting is likely to offset the start of RAMCode from ENDSTK, but that's the best you can do for now. In one version of life, the offset was 1450H-13B1H = 9FH.
My original version of RAMCode.bat had some stuff about Ethernet tasks. That task is in PROM in our machines. The commands were commented out. I deleted them.
(14.1) Modify MemCodeI.bat, inserting xyxHndlr.lnk in the list somewhere before "TO". Alternately, merge MEMCode.bat and MEMCodeI.bat and do the same thing. Again, be careful of the order of the files being linked. The order of linking for MemCode must be: IOPLRAM.obj,STKSegs.lnk,IORSegs.lnk,MemHInit.obj,GermInit.obj(or lisp equiv), {all the mem handlers in any order}. Add all the XFILE and CRLFTool commands if necessary (see RAMCode.bat on FS6:).
(14.2) Run MemCode.bat. This produces MEMCode.loc. Inspect the segment map in MEMCode.mp2, watching the same ENDSTK/IOREGION and ENDIOR boundries. Note that booting will actually put the code for MEMCode (the stuff listed in IOPEInRAM) immediately after ENDIOR. If you're using the old debug setup, MEMCode must fit between ENDIOR and 8000H. If you're using the new setup, MEMCode must fit between ENDIOR and C000H.
My MEMCode.bat had some stuff about a new KeyHndlr.lnk (as opposed to a KyMoInit.loc thinger, which is different), also commented out. The Keyboard handler code is also in PROM, so I deleted this too.
(15) Back in XDE (which is where your .bat files have been putting the results of all of your work), run the command file LispDove.cm. This produces LispDove.db. If you get an error message like
Reading... MEMCode.loc Illegal start address as a switch on .loc file.
get a newer version of MakeDoveMicroboot.bcd.
(16) Save the results of your work!! If you're adventurous, ask your favorite Lisp wizard to install the new LispDove.db as Pilot microcode on an 1186 (6085) and go for it! Of course, you can only debug this by watching what happens and staring at your source code. If you want to set breakpoints and stuff, keep reading. Installing your LispDove.db and trying it without your option enabled in the EEPROM (see next step) is certainly a good idea just to see if it is built correctly.
(17) Modify the EEProm using the System Configuration Tool. You should insert the Handler ID you chose minus 96 into one of the three Universal Options entries, along with whatever options specific data and interrupt vectors you like. Without this, Opie will not start your options code. Zero is not a valid options number. It is useful if you want to run your new Pilot Microcode with the new handler turned off, just to see if you've broken anything.
(18) Have a good time debugging! I haven't tried this much yet. You'll probably need the image of Opie that's normally in PROM. If you're using the old debugging setup (ROM Image at 8000H), it's on [Huey:OSBU North:Xerox]<APilot>12.0>DoveMicrocode>Private>B2>RAMSysB2.loc. If you're usign the new setup, It's on [Dino:OSBU North:Xerox]<APilot>14.0>DoveMicrocode>Private>B2>RAMSysB2.loc. There's a Bermuda command file called [FS6:PARC:Xerox]<ISLDisplay>Display1>Software>IOP>IOPDebug.bermuda. Besides loading the pieces of your LispDove.db (not the LispDove.db itself, just the individual pieces) and RAMSysB2.loc into memory, they do lots of interesting stuff.
This is what seems to work for me. Before actually running IOPDebug, manually load all the symbols shown in the commented-out statements. That's because they only need to be loaded once. The first time you do this, you won't have RAMDebug.loc and MEMDebug.loc, but never fear. IOPDebug.bermuda boots the IOP, loads the code for RAMSysB2, turns on main memory and (that's the WriteIO[80,8000];). The write to E01F just fusses with a map register. It doesn't seem to harm anything. Now, the way the initialization code decides whether or not to use the expanded IOR (see step 10 above), is it looks in word 053C. My version of IOPDebug.bermuda writes a 0000H there, telling it not to use fatIOR. If you want fat IOR (the new stuff), write a 4000. Make sure you have the new RAMSysB2.loc if you're using a fat IOR (and not if not).
The command file then fusses with starting the initialization code. For this to get any farther, you must already have your LispDove.db and SYSOUT installed on your disk. Note the commented-out breakpoint at DisplayInit+C. The machine blew up when I did this and worked fine when I didn't, so I got rid if it. I'm told this is a sign of having a version of RAMSysB2.loc that doesn't really match the PROMs in the machine. Well, commenting it out seemed to work, I commented it out. The breakpoint IOPE@Restart is in the DiskInitialDove.db code (whose symbols you must already have fetched. DiskBoot.loc can be found from LispDoveIOPIntegration.df). IOPDebug.bermuda sets a breakpoint in DiskInitialDove at location StartRAM after RAMSysB2.loc has pulled DiskInitialDove into memory. StartRAM is where DiskInitialDove is about to jump off into the RAMCode.loc file. Great, right? Well, not exactly. The DiskInitialDove loader ignores all the location information in the RAMCode.loc file so you don't know where RAMCode is yet. DiskInitialDove just loads RAMCode.loc where it fits. Don't ask me how the segment registers get fixed up. Anyway, when we get to the StartRAM breakpoint, the RAMSysB2 file smashes the Cmos display handler (apparently the normal display handler works well enough and the CMOS one tries to use funny address arithmetic that doesn't work since the PROM image isn't where the PROM is), and stops. Without this smash, the booting process gets stuck around 1191 or 1192. If you stop the IOP, CS=0800 and IP = 97xx. That's your clue that the wrong display handler is running. Your task is to single step over the StartRAM instruction. You get to the first instruction in the RAMCode, which is at a label called RAMInitialization. You read the CS register, AND ONLY THE CS REGISTER! That tells you where the IOPEInRAM segment of RAMCode really starts! For example, if your CS register has 0140 in it, IOPEInRAM starts at 1400H. Swell! Now, you go back and use .bat files (thought you were done, huh?) like [BamBam:OSBU North:Xerox]<WMicro>Dove>RAMDebug.bat, RAMDbLc.bat and MEMDbLc.bat to build RAMDebug.loc and MEMDebug.loc. You put the number from CS into the AD(SM(IOPEINRAM(1400H))) line of RAMDbLc.bat. You put the address of ENDIOR (from MEMCode.mp2) into the corresponding line of MemDbLoc.bat. You'll only use the the symbols for these files! Load the symbols, set your breakpoints and go to town.
Good Luck!!
----------------------------------------------------------------

View File

@@ -0,0 +1,67 @@
Subject: A proposed design for big bitmaps (for Maiko Color (aka Kaleidoscope))
From: shih:mv:envos
Here's a proposed design for big bitmaps (for Maiko Color). This message is also filed as BigBitmaps.TEdit, under {Pogo:MV:envos}<DSUNLISP>Documents>Development>Color>, and {Eris}<lispcore>internal>doc>.
There are basically two alternatives, either change allocblock to allow blocks bigger than 65K, or to change bitblt (and perhaps many other functions) to allow a new datatype, BIGBM.
The following describes the second BIGBM alternative.
------
DESIGN MOTIVATION
The color code currently uses ALLOCPAGEBLOCK to create a non-GC'able large bitmap for the color screen. Windows on that screen, I believe point to that screen bitmap, but Window "backing bitmaps" (the thing that holds what is behind an open window, and what is inside a closed window), is a separate bitmap.
The problem is that the backing bitmap currently cannot be as big as the window would like it to be.
The BIGBM design would keep the noncollectible color screen bitmap, but would allow windows to have BIGBM backing bitmaps. In addition, this design is more likely to be portable backwards (e.g. into Medley1.0 or Medley1.1) since no existing system datatypes need to be changed (unlike the plan to change ALLOCBLOCK).
Since XAIE does not (I believe) allow (currently) DIG operations on closed windows, then there are no DIG operations (except BITBLT) which need to occur on BIGBM backing bitmaps.
Therefore, a BIGBM need merely be a GC'able datatype which supports BITBLT between itself and all other legal datatypes (principally windows and bitmaps, but possible streams (e.g. Interpress), and possible other datatypes).
Longer term, having a generalized BITBLT will be useful, for the following reasons:
Color - 8 bpp bitmaps will begin to push Medley's 32Mb address limitation, and 24 bpp bitmaps certainly will (the screen alone will take up 3Mb = 10% of the address space!).
Remote Bitmaps - there may be applications which need bitmaps outside of the address space (color above for example). Nick Brigg's Maple color processor for the 1186 had a generalized remote bitblt, which "did the right thing" when source and destination bitmaps were both remte (e.g. remote bitblt).
XWindow Medley- might require remote bitmaps.
NonSun Medley - might require remote bitmaps, especially because it is doubtful the SunOS system call MMAP exists elsewhere. When not, the screen itself will need to be remote.
------
BIGBM DESIGN
A straightforward design would be to have a BIGBM simply be a collection of ordinary bitmaps ("slices of the big bitmap"), and then generalize BITBLT to handle the collection (by repeated bitblts).
More elaborate designs would allow BIGBMs to be a collection of any BitBlt'able objects (streams, windows, bitmaps, bigbitmaps), or perhaps collections of raw blocks (to save some of the BITBLT initialization overhead).
Probably at least one dimension of the slices should be a multiple of the LCD (least common denominator) of any TEXTURE (currently 16), so that textures do not show seams across the slices.
Probably also the slices should be "short and fat" (e.g. the BIGBM is made up of several rows of bitmaps), since the ucode inner loop runs in the X direction, but this partially depends on the application.
For example, font bitmaps are short and *very* wide. If large color fonts need a BIGBM font bitmap, then each character would cut across several slices, slowing down each character. For fonts, column slices might be better. Note that each character is also more "coherent" in memory this way, which might improve paging behaviour.
Having BIGBMs be composite objects (rather than a large coherent allocblock) might also improve GC behaviour, because a BIGBM can be allocated out fragmented free space. There may not be enough coherent free space to allocate a large allocblock, due to fragmentation.
Another design elaboration would be to provide full Imagestream capabilities onto BIGBMs, to that (DSPCREATE dest) will work on BIGBMs.
------
BIGBM IMPLEMENTATION
There is currently a draft implementation of BIGBMs on {Eris}<lispcore>internal>library>BIGBM. It has several limitations:
0. It is intended to be a subfunction of BITBLT (which explains the limits 1 & 2 below)
1. It doesn't handle clipping (I'm not sure, but clipping might be handled generically in BITBLT by changing the srcex, srcey, destx, desty, width, & height args).
2. It doesn't handle default arguments (BitBlt does this).
3. It currently only makes the slices 16 bits tall (it should make the slices as big as possible).
4. Its not very efficient. It only walks the slices linearly (the first relevent slice could be found by algebra), and it doesn't stop when the last relevent slice is bltted.
5. Because of 3 & 4, for large bitmaps its roughly 2x slower than normal bitmap blts. For small bitmaps, it may be much worse. This may be OK though for backing color windows, because color windows are large.
Mostly, this code needs to be folded into BITBLT & BLTSHADE, at the appropriate spots, and optimized if necessary.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,50 @@
<LispCore>Good> : used only for LISP.SYSOUT for MAKEINIT bootstrap
<LispCore>TR> : used for saving the technical reports for Interlisp-D
These are part of the 'release', i.e., should contain only part of what we release, and be snapshot when we relese:
LISPCORE>NEXT => Lisp>Harmony>Basics (more or less)
LISPCORE>CM => Lisp>Harmony>CM, with rename of internals
These release merely by changing "LISPCORE" to "Lisp>Harmony":
LispCore>Doc documentation about the release
LISPCORE>DLION dlion microcode
LISPCORE>DLIONINITIAL>SHUGART>KLAMATH sources for Lisp11SAx000Initial.db
LISPCORE>DLIONINITIAL>TRIDENT>KLAMATH sources for Lisp11TriInitial.db
LISPCORE>LIBRARY sources, .DCOM and documentation for library
LISPCORE>LISPUSERS new versions of LispUsers packages coordinated with Harmony
LISPCORE>MASS new version of MicroAssembler, destined to getting back into SDD
LISPCORE>MESA
LISPCORE>MESASOURCES>* (several subdirectories)
LISPCORE>SOURCES
LISPCORE>UCODE environment for compiling dolphin/dorado microcode
LISPCORE>BCPL environment for making Lisp.RUN for Dolphin/Dorado
LISPCORE>DLIONDOMINO sources for domino (8085 code in DLion)
LISPCORE>DEMO needs to be cleaned up; some go on LispUsers, some on
This should be archived and deleted:
LISPCORE>DLISP Warren Teitelman's DLisp sources
The following should be cleaned up, moved to other directories, private directories, or deleted:
LISPCORE>DIG temporary working directory -- clean up when DIG released
LISPCORE>DLIONINITIAL>TRIDENT>SIERRA obsolete, archive & delete
LISPCORE>DRAWFILES contains a few hacks, can read in with READDRAW and show on iris?
LISPCORE>INTERPRESS temporary working directory
LISPCORE>MAIL => LISPCORE>INTERNAL>MAIL (??)
LISPCORE>MISC I guess some of the other stuff can go here. Need to clean out junk from here
LISPCORE>NEW temporary working directory
LISPCORE>NEW>ARCHIVE temporary working directory
LISPCORE>OLDDOC old documentation files which need to be cleaned up and rewritten, etc.
LISPCORE>ONCOCIN was for ONCOCIN demo. Has some files which we may want to import
LISPCORE>TEST some old test files
LISPCORE>UNKNOWN apropriate name, but should be cleaned up...
plus any file on <LispCore> not on a subdirectory.
Some files on <Lisp>Carol>* and <Lisp>Fugue.6>* should be moved forward to <Lisp>Harmony> if they don't appear on LispCore

BIN
docs/internal/DLD.TEDIT Normal file

Binary file not shown.

View File

@@ -0,0 +1,5 @@
Fasl format change log.
Version 3 (10-Nov-86)
Added opcode 149, FASL-INTERLISP-SYMBOL pname(V).
Upward compatible with version 2.

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

BIN
docs/internal/Hello.tedit Normal file

Binary file not shown.

View File

@@ -0,0 +1,31 @@
Subject: How to write the release notes
To: James
cc: Sannella.pa
How to write a release note for a fixed AR:
When an AR is fixed, it is important to write a release note for the AR, even if it is just a note saying "Release Note: none needed". There is no better time to do this than when the problem is still fresh in your mind. And there is no better person to do this than the implementer, who knows exactly how important the AR fix is.
Does this AR affect the next release? There are some ARs which are created and closed during the course of development. However, it is hard to tell just from the text of the AR. It is important to put this information in the AR, so the Release master can tell that it shouldn't be collected. The note "Release Note: Don't release -- development bug" is better than nothing.
Does this AR affect outside users? If an AR just affects internal users, put a release note "Release Note: Don't release -- internal info" in the AR.
If there is info in the AR that the outside users should know, compose a release note. It doesn't have to be perfect, but the implementer is in a better position to know what needs to be told than anyone else.
A single release note item should be talk about one piece of information. If a single AR contains or refers to multiple subjects, compose multiple release notes.
A release note contains a title, telling the substance of the item. Like AR subjects, the release note title should be short and as informative as possible (think of newspaper headlines). Include as many keywords as possible. For example "* New window functions: FOOBAR, BAZ" is better than "* New window functionality". When documenting bug fixes, try to make the titles "positive", saying "* FOOBAR arguments interpreted correctly" rather than "* Bug fixed where FOOBAR ignored argument".
When in doubt about whether a bug fix or new feature is worth documenting in the release notes, please document it. It is a lot easier for the release master to throw away information than to write it from scratch.
-----
How to assemble individual items into the "Release Notes":
If the individual release note items have been written, the primary job is to sort them by subject and importance, and assemble the big document.
For the Harmony release, the "topics" were ordered loosely on the importance of the different areas for that release (a lot of changes were made to I/O, fonts, printing, so they came first). This order is not sacred.
Within each topic area, the items are sorted by importance to the user, a subjective decision. Major new functionality, and incompatible changes obviously want to come first.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,42 @@
InstallLisp.doc --- Lichtenberg.wbst, Masinter.PA 8-Jan-85 07:12
This is a tool for those who use both Interlisp-D and XDE. It is similar to Install and friends, except that it is used for installing Interlisp-D virtual memory image files. (For more details about running Interlisp-D at Xerox, contact LispSupport.PA; it requires a DLion with at least 1.5 MB of memory and at least 13000 free pages in a single volume. You must install new Initial microcode Lisp11sax000Initial.db before running Interlisp.)
The syntax is:
InstallLisp volumeName _ fileName/switches
volumeName is the name of the volume that you want the Lisp installed on; fileName is the name of the source file, which may be either local or remote. Switches may be one or more of the following:
/d - set to default boot-lisp (the lisp that will be run when 0-booted)
/s - start the lisp after installation
/x - expand file to fill volume (you should always do this)
To combine switches, do not duplicate the slashes. (to specify all switches, use /dsx).
An alternative command format,
> InstallLisp volumeName/switches
allows one to apply the switches to the file that is already on a volume.
Examples:
>InstallLisp User _ [eris]<Lisp>Harmony>Basics>Full.sysout/xs
Bring over and install Interlisp on the User volume, and boot it when done.
>InstallLisp Lisp _ Lisp.sysout/XS
if you keep a copy in Tajo
> InstallLisp Lisp _ [Eris]<Lisp>Harmony>Basics>Full.sysout
will install the "Harmony" release, as will
> InstallLisp Lisp _ [Phylex:PARC:Xerox]<Lisp>Harmony>Basics>Full.Sysout
> InstallLisp User/s
will merely start the Lisp which was installed on the "User" volume.

View File

@@ -0,0 +1,205 @@
_COMPAREDIRECTORIES(CORE>LIBRARY> >KOTO>LIBRARY>]
Core>library>4045STREAM.;15[ 7-Nov-85 14:48:09/jellinek.pa] newer than >KOTO>LIBRARY>4045STREAM.;2[ 3-Oct-85 14:08:17].
Core>library>4045STREAM.DCOM;14[ 7-Nov-85 14:49:10/jellinek.pa] newer than >KOTO>LIBRARY>4045STREAM.DCOM;2[ 3-Oct-85 14:09:53].
Core>library>BUSTEST.;1[18-Sep-85 03:26:40/Purcell.pa], not found.
Core>Library>BUSTEST.DCOM;1[28-Sep-85 17:44:36/Purcell.pa], not found.
Core>library>BUSTEST.TEDIT;1[18-Sep-85 04:10:19/Purcell.pa], not found.
Core>LIBRARY>C150STREAM.;9[ 7-Nov-85 23:45:02/NUYENS.pa] newer than >KOTO>LIBRARY>C150STREAM.;2[ 4-Oct-85 12:55:37].
Core>LIBRARY>C150STREAM.DCOM;9[ 7-Nov-85 23:54:27/NUYENS.pa] newer than >KOTO>LIBRARY>C150STREAM.DCOM;2[ 4-Oct-85 12:56:58].
Core>LIBRARY>c150stream.tedit;3[ 4-Oct-85 14:48:55/Jellinek.pa] newer than >KOTO>LIBRARY>C150STREAM.TEDIT;1[ 5-Sep-85 14:35:24].
Core>LIBRARY>CENTRONICS.;4[ 8-Nov-85 14:08:03/JELLINEK.pa] newer than >KOTO>LIBRARY>CENTRONICS.;1[ 4-Sep-85 18:41:25].
Core>LIBRARY>CENTRONICS.DCOM;4[ 8-Nov-85 14:08:19/JELLINEK.pa] newer than >KOTO>LIBRARY>CENTRONICS.DCOM;1[ 4-Sep-85 18:41:35].
Core>library>centronics-port.tedit;1[23-Sep-85 17:39:48/jellinek.pa], not found.
Core>LIBRARY>CHAT.TEDIT;4[20-Sep-85 17:09:39/SCHOEN.pa], not found.
Core>LIBRARY>CML.;12[ 4-Nov-85 20:31:16/Fischer.pa] newer than >KOTO>LIBRARY>CML.;1[ 6-Sep-85 22:47:20].
Core>LIBRARY>CML.DCOM;5[25-Oct-85 15:55:06/Fischer.pa] newer than >KOTO>LIBRARY>CML.DCOM;1[ 6-Sep-85 22:47:29].
Core>LIBRARY>CML.IP;1[ 3-Oct-85 15:37:30/FISCHER.pa], not found.
Core>library>cml.tedit;53[ 3-Oct-85 03:42:00/Fischer.pa] newer than >KOTO>LIBRARY>CML.TEDIT;2[15-Sep-85 16:51:00].
Core>LIBRARY>CMLARITH.;9[11-Nov-85 16:11:46/FISCHER.pa] newer than >KOTO>LIBRARY>CMLARITH.;1[ 5-Sep-85 02:58:55].
Core>LIBRARY>CMLARITH.DCOM;9[11-Nov-85 16:13:12/FISCHER.pa] newer than >KOTO>LIBRARY>CMLARITH.DCOM;1[ 5-Sep-85 02:59:25].
Core>LIBRARY>CMLARRAY.;71[11-Nov-85 21:43:37/Fischer.pa] newer than >KOTO>LIBRARY>CMLARRAY.;8[16-Oct-85 14:59:41].
Core>LIBRARY>CMLARRAY.DCOM;65[11-Nov-85 21:47:31/Fischer.pa] newer than >KOTO>LIBRARY>CMLARRAY.DCOM;8[16-Oct-85 15:02:00].
Core>LIBRARY>CMLARRAY.TEDIT;23[26-Sep-85 03:28:59/FISCHER.pa] newer than >KOTO>LIBRARY>CMLARRAY.TEDIT;3[14-Sep-85 03:56:41].
Core>LIBRARY>CMLARRAYINSPECTOR.;3[13-Oct-85 17:03:07/FISCHER.pa] newer than >KOTO>LIBRARY>CMLARRAYINSPECTOR.;1[ 8-Aug-85 01:03:48].
Core>LIBRARY>CMLARRAYINSPECTOR.DCOM;3[13-Oct-85 17:05:51/FISCHER.pa] newer than >KOTO>LIBRARY>CMLARRAYINSPECTOR.DCOM;1[ 8-Aug-85 01:04:35].
Core>LIBRARY>CMLCHARACTER.;18[28-Oct-85 21:29:14/masinter.pa] newer than >KOTO>LIBRARY>CMLCHARACTER.;2[16-Oct-85 17:33:50].
Core>LIBRARY>CMLCHARACTER.DCOM;15[28-Oct-85 21:29:36/masinter.pa] newer than >KOTO>LIBRARY>CMLCHARACTER.DCOM;2[16-Oct-85 17:34:08].
Core>LIBRARY>CMLDEFMACRO.;2[31-Aug-85 17:50:01/ROACH.pa], not found.
Core>LIBRARY>CMLDEFMACRO.DCOM;1[31-Aug-85 17:50:26/ROACH.pa], not found.
Core>LIBRARY>CMLDEFSTRUCT.;8[ 1-Sep-85 23:36:54/ROACH.pa], not found.
Core>LIBRARY>CMLDEFSTRUCT.DCOM;3[ 1-Sep-85 23:43:26/ROACH.pa], not found.
Core>LIBRARY>CMLDEVELOPMENT.;18[ 2-Sep-85 00:21:32/ROACH.pa], not found.
Core>LIBRARY>CMLDEVELOPMENT.DCOM;10[ 2-Sep-85 00:22:04/ROACH.pa], not found.
Core>LIBRARY>CMLEVAL.;15[31-Aug-85 15:51:38/ROACH.pa], not found.
Core>LIBRARY>CMLEVAL.DCOM;3[31-Aug-85 15:51:56/ROACH.pa], not found.
Core>LIBRARY>CMLEXEC.;10[ 8-Nov-85 14:05:17/Masinter.pa] newer than >KOTO>LIBRARY>CMLEXEC.;3[17-Oct-85 18:19:29].
Core>LIBRARY>CMLEXEC.DCOM;10[ 8-Nov-85 14:10:27/Masinter.pa] newer than >KOTO>LIBRARY>CMLEXEC.DCOM;3[17-Oct-85 18:19:41].
Core>LIBRARY>CMLFLOATARRAY.;8[24-Oct-85 16:16:19/Fischer.pa] newer than >KOTO>LIBRARY>CMLFLOATARRAY.;3[30-Sep-85 14:56:02].
Core>LIBRARY>CMLFLOATARRAY.DCOM;10[24-Oct-85 16:18:39/Fischer.pa] newer than >KOTO>LIBRARY>CMLFLOATARRAY.DCOM;2[30-Sep-85 14:57:25].
Core>LIBRARY>CMLFLOATARRAY.TEDIT;8[30-Sep-85 14:52:51/Fischer.pa] newer than >KOTO>LIBRARY>CMLFLOATARRAY.TEDIT;1[ 8-Sep-85 21:36:13].
Core>LIBRARY>CMLFORMAT.;6[ 1-Sep-85 20:19:36/ROACH.pa], not found.
Core>LIBRARY>CMLHASH.;1[ 7-Oct-85 15:54:36/ROACH.pa], not found.
Core>LIBRARY>CMLKBRSTRING.;3[ 7-Oct-85 12:13:41/ROACH.pa], not found.
Core>LIBRARY>CMLLIST.;4[31-Aug-85 20:21:18/ROACH.pa], not found.
Core>LIBRARY>CMLLIST.DCOM;4[31-Aug-85 20:21:45/ROACH.pa], not found.
Core>LIBRARY>CMLLMMSEQ.;1[ 1-Aug-85 16:36:09/MASINTER.pa], not found.
Core>LIBRARY>CMLLMMSEQ.DCOM;1[ 1-Aug-85 21:48:49/MASINTER.pa], not found.
Core>LIBRARY>CMLMACROS.;12[ 1-Sep-85 21:06:06/ROACH.pa], not found.
Core>LIBRARY>CMLMACROS.DCOM;6[ 1-Sep-85 21:07:22/ROACH.pa], not found.
Core>LIBRARY>CMLMISC.;1[31-Aug-85 21:58:16/ROACH.pa], not found.
Core>LIBRARY>CMLMISC.DCOM;1[31-Aug-85 21:58:27/ROACH.pa], not found.
Core>LIBRARY>CMLOPT.;1[14-Aug-85 14:51:04/Masinter.pa], not found.
Core>LIBRARY>CMLPACKAGE.;2[ 1-Sep-85 21:52:45/ROACH.pa], not found.
Core>LIBRARY>CMLPATHNAME.;3[31-Aug-85 22:10:00/ROACH.pa], not found.
Core>LIBRARY>CMLPATHNAME.DCOM;1[31-Aug-85 22:10:16/ROACH.pa], not found.
Core>LIBRARY>CMLPRED.;3[ 1-Sep-85 21:00:31/ROACH.pa], not found.
Core>LIBRARY>CMLPRED.DCOM;2[ 1-Sep-85 21:00:45/ROACH.pa], not found.
Core>LIBRARY>CMLREAD.;7[ 6-Nov-85 17:12:28/Fischer.pa], not found.
Core>LIBRARY>CMLREAD.DCOM;6[ 6-Nov-85 17:12:42/Fischer.pa], not found.
Core>LIBRARY>CMLSEQ.;5[ 1-Sep-85 21:01:05/ROACH.pa], not found.
Core>LIBRARY>CMLSEQ.DCOM;4[ 7-Oct-85 12:35:54/ROACH.pa], not found.
Core>LIBRARY>CMLSETF.;4[ 2-Oct-85 16:06:29/FISCHER.pa] newer than >KOTO>LIBRARY>CMLSETF.;1[ 6-Aug-85 18:47:49].
Core>LIBRARY>CMLSETF.DCOM;2[ 2-Oct-85 16:06:40/FISCHER.pa] newer than >KOTO>LIBRARY>CMLSETF.DCOM;1[ 6-Aug-85 18:48:00].
Core>LIBRARY>CMLSPECIALFORMS.;71[ 7-Nov-85 18:18:22/Fischer.pa] newer than >KOTO>LIBRARY>CMLSPECIALFORMS.;6[23-Oct-85 11:50:15].
Core>LIBRARY>CMLSPECIALFORMS.DCOM;69[ 7-Nov-85 18:21:35/Fischer.pa] newer than >KOTO>LIBRARY>CMLSPECIALFORMS.DCOM;6[23-Oct-85 11:53:32].
Core>LIBRARY>CMLSTRING.;4[10-Sep-85 21:28:02/FISCHER.pa], not found.
Core>library>CMLSTRING.DCOM;4[10-Sep-85 21:28:13/FISCHER.pa], not found.
Core>LIBRARY>CMLSTRUCT.;9[ 8-Nov-85 17:26:52/Kahn.PA] newer than >KOTO>LIBRARY>CMLSTRUCT.;1[ 5-Sep-85 02:57:36].
Core>LIBRARY>CMLSTRUCT.DCOM;7[ 4-Nov-85 21:01:28/Fischer.pa] newer than >KOTO>LIBRARY>CMLSTRUCT.DCOM;1[ 5-Sep-85 02:58:04].
Core>LIBRARY>CMLSYMBOL.;4[29-Aug-85 17:12:36/ROACH.pa], not found.
Core>LIBRARY>CMLSYMBOL.DCOM;2[29-Aug-85 17:13:10/ROACH.pa], not found.
Core>LIBRARY>CMLTYPES.;19[12-Nov-85 14:58:08/FISCHER.pa] newer than >KOTO>LIBRARY>CMLTYPES.;3[26-Sep-85 03:34:07].
Core>LIBRARY>CMLTYPES.DCOM;18[12-Nov-85 15:00:19/FISCHER.pa] newer than >KOTO>LIBRARY>CMLTYPES.DCOM;3[26-Sep-85 03:34:21].
Core>LIBRARY>COLOR.;5[30-Oct-85 11:56:08/Nuyens.pa] newer than >KOTO>LIBRARY>COLOR.;1[ 2-Jul-85 12:13:58].
Core>LIBRARY>COLOR.DCOM;5[30-Oct-85 11:57:34/Nuyens.pa] newer than >KOTO>LIBRARY>COLOR.DCOM;1[ 2-Jul-85 12:14:33].
Core>LIBRARY>COLORNNGS.;8[20-May-85 18:53:59/ROACH.pa], not found.
Core>LIBRARY>COLORNNGS.DCOM;4[20-May-85 18:57:22/ROACH.pa], not found.
Core>library>DANDELIONKEYBOARDS.;2[ 6-Nov-85 05:22:20/sybalsky.pa] newer than >KOTO>LIBRARY>DANDELIONKEYBOARDS.;1[15-Aug-85 12:54:43].
Core>LIBRARY>DANDELIONUFO.;13[ 9-Apr-85 18:13:08/jellinek.pa], not found.
Core>LIBRARY>DANDELIONUFO.DCOM;15[ 9-Apr-85 18:13:42/jellinek.pa], not found.
Core>library>dandelionufo.tedit;1[ 6-Dec-84 14:03:15/Lichtenberg.pa], not found.
Core>LIBRARY>DANDELIONUFO4096.;6[ 8-Mar-85 11:12:41/jellinek.pa], not found.
Core>LIBRARY>DANDELIONUFO4096.DCOM;6[ 8-Mar-85 11:13:22/jellinek.pa], not found.
Core>LIBRARY>DAYBREAKKEYBOARDS.;1[12-Nov-85 14:27:45/sybalsky.pa], not found.
Core>LIBRARY>DICOLOR.;2[15-Aug-85 19:45:04/nuyens.pa], not found.
Core>LIBRARY>DICOLOR.DCOM;2[15-Aug-85 19:45:53/nuyens.pa], not found.
Core>LIBRARY>DINFO.;6[10-Nov-85 17:48:47/cutting.pa] newer than >KOTO>LIBRARY>DINFO.;2[13-Sep-85 16:58:15].
Core>LIBRARY>DINFO.DCOM;6[10-Nov-85 17:49:19/cutting.pa] newer than >KOTO>LIBRARY>DINFO.DCOM;2[13-Sep-85 16:59:43].
Core>LIBRARY>DINFO.INIT;1[13-Sep-85 17:15:15/CUTTING.pa], not found.
Core>LIBRARY>dinfo.tedit;5[10-Nov-85 15:15:16/cutting.pa] newer than >KOTO>LIBRARY>DINFO.TEDIT;1[13-Sep-85 16:51:01].
Core>LIBRARY>DLTTY.;12[12-Nov-85 18:56:24/Schoen.pa] newer than >KOTO>LIBRARY>DLTTY.;3[29-Oct-85 13:59:17].
Core>LIBRARY>DLTTY.DCOM;11[12-Nov-85 18:57:06/Schoen.pa] newer than >KOTO>LIBRARY>DLTTY.DCOM;3[29-Oct-85 14:00:00].
Core>LIBRARY>DORADOKEYBOARDS.;1[12-Nov-85 14:29:48/sybalsky.pa], not found.
Core>LIBRARY>EDITBITMAP.;2[11-Oct-85 16:18:55/blum.pa] newer than >KOTO>LIBRARY>EDITBITMAP.;1[24-Jul-84 18:20:50].
Core>LIBRARY>EDITBITMAP.DCOM;2[11-Oct-85 16:22:38/blum.pa] newer than >KOTO>LIBRARY>EDITBITMAP.DCOM;1[24-Jul-84 18:21:05].
Core>LIBRARY>EDITBITMAP.tedit;2[24-Sep-85 10:51:48/blum.pa] newer than >KOTO>LIBRARY>EDITBITMAP.TEDIT;1[ 6-Jun-85 20:37:30].
Core>LIBRARY>EDITMARK.;3[ 2-Apr-85 11:26:44/burton.pa], not found.
Core>LIBRARY>EDITMARK.DCOM;2[ 2-Apr-85 11:27:42/burton.pa], not found.
Core>LIBRARY>editmark.tedit;5[ 8-Apr-85 16:21:27/Burton.pa], not found.
Core>LIBRARY>ETHERRECORDS.TEDIT;1[ 6-Oct-85 15:10:03/vanMelle.pa], not found.
Core>LIBRARY>EVALSERVER.;1[ 2-Jan-85 12:09:10/Lichtenberg.pa], not found.
Core>LIBRARY>EVALSERVER.DCOM;1[ 2-Jan-85 12:11:05/Lichtenberg.pa], not found.
Core>LIBRARY>EVALSERVER.TTY;1[17-Feb-84 09:40:59/Lichtenberg.pa], not found.
Core>LIBRARY>EXPORTS.ALL;50[20-Sep-85 21:01:49/nuyens.pa] older than >KOTO>LIBRARY>EXPORTS.ALL;3[16-Oct-85 11:44:01].
Core>LIBRARY>FASTFX80STREAM.;5[ 5-Nov-85 20:05:16/jellinek.pa] newer than >KOTO>LIBRARY>FASTFX80STREAM.;2[ 3-Oct-85 16:43:47].
Core>LIBRARY>FASTFX80STREAM.DCOM;4[ 5-Nov-85 20:05:36/jellinek.pa] newer than >KOTO>LIBRARY>FASTFX80STREAM.DCOM;2[ 3-Oct-85 16:44:25].
Core>LIBRARY>FILEBROWSER.;49[20-Oct-85 18:18:43/vanMelle.pa] newer than >KOTO>LIBRARY>FILEBROWSER.;2[28-Sep-85 22:55:55].
Core>LIBRARY>FILEBROWSER.DCOM;48[20-Oct-85 18:19:22/vanMelle.pa] newer than >KOTO>LIBRARY>FILEBROWSER.DCOM;2[28-Sep-85 22:56:13].
Core>LIBRARY>FILECACHE.;13[ 6-Nov-85 16:11:39/Masinter.pa] newer than >KOTO>LIBRARY>FILECACHE.;3[19-Sep-85 15:28:45].
Core>LIBRARY>FILECACHE.DCOM;11[ 6-Nov-85 17:49:09/Masinter.pa] newer than >KOTO>LIBRARY>FILECACHE.DCOM;2[19-Sep-85 15:31:02].
Core>LIBRARY>FILECACHE.TEDIT;1[11-Sep-85 15:13:15/Masinter.pa], not found.
Core>LIBRARY>FILENAMES.;1[12-Mar-85 14:02:35/James.pa], not found.
Core>LIBRARY>FILENAMES.DCOM;1[12-Mar-85 14:03:32/James.pa], not found.
Core>LIBRARY>FILESTUFF.DCOM;1[11-Nov-85 14:47:49/FISCHER.pa], not found.
Core>LIBRARY>FLOATARRAY.DCOM;1[27-Mar-85 08:10:59/Lichtenberg.pa], not found.
Core>LIBRARY>FLOATARRAY.TEDIT;5[ 1-Apr-85 17:45:25/Masinter.pa], not found.
Core>LIBRARY>FREEMENU.;15[ 3-Oct-85 18:03:20/Wozencraft.pa] newer than >KOTO>LIBRARY>FREEMENU.;1[ 7-Sep-85 23:17:27].
Core>LIBRARY>FREEMENU.DCOM;17[ 3-Oct-85 18:04:50/Wozencraft.pa] newer than >KOTO>LIBRARY>FREEMENU.DCOM;1[ 7-Sep-85 23:18:17].
Core>LIBRARY>GRAPHER.;49[30-Sep-85 09:06:35/KAPLAN.PA] newer than >KOTO>LIBRARY>GRAPHER.;1[ 9-Jun-85 22:54:47].
Core>LIBRARY>GRAPHER.DCOM;55[30-Sep-85 09:07:56/KAPLAN.PA] newer than >KOTO>LIBRARY>GRAPHER.DCOM;1[ 9-Jun-85 22:59:02].
Core>LIBRARY>HASH.TEDIT;3[ 4-Oct-85 17:03:59/sybalsky.pa], not found.
Core>LIBRARY>HELPSYS.TEDIT;2[ 9-Nov-85 20:53:53/cutting.pa] newer than >KOTO>LIBRARY>HELPSYS.TEDIT;1[11-Sep-85 12:44:59].
Core>LIBRARY>HRULE.DATABASE;2[17-Oct-85 11:48:47/sybalsky.pa], not found.
Core>LIBRARY>HRULE.TEDIT;2[30-Sep-85 16:16:34/sybalsky.pa], not found.
Core>LIBRARY>IMAGEIO.DCOM;1[20-Jul-85 00:01:04/MASINTER.pa], not found.
Core>LIBRARY>IRM.DINFOGRAPH;1[ 9-Nov-85 17:02:37/Cutting.pa] newer than >KOTO>LIBRARY>IRM.DINFOGRAPH;1[17-Oct-85 22:43:18].
Core>LIBRARY>IRMTOP.TXT;1[13-Sep-85 17:41:32/Cutting.pa], not found.
Core>LIBRARY>KERMITMENU.;12[12-Nov-85 19:52:07/Schoen.pa] newer than >KOTO>LIBRARY>KERMITMENU.;3[ 7-Oct-85 09:54:12].
Core>LIBRARY>KERMITMENU.DCOM;12[12-Nov-85 19:52:45/Schoen.pa] newer than >KOTO>LIBRARY>KERMITMENU.DCOM;4[ 7-Oct-85 09:54:54].
Core>LIBRARY>KEYBOARDEDITOR.TEDIT;8[ 5-Oct-85 11:21:43/sybalsky.pa], not found.
Core>LIBRARY>KINETIC.;1[ 1-Jun-82 16:34:51/Lichtenberg.pa], not found.
Core>LIBRARY>KINETIC.DCOM;1[ 1-Jun-82 16:35:02/Lichtenberg.pa], not found.
Core>library>LispLibrary.tty;1[22-Aug-84 09:42:36/Lichtenberg.pa], not found.
Core>LIBRARY>LISTEN.;3[ 8-Nov-85 14:02:16/Masinter.pa] newer than >KOTO>LIBRARY>LISTEN.;2[14-Oct-85 18:21:26].
Core>LIBRARY>LISTEN.DCOM;3[ 8-Nov-85 14:02:40/Masinter.pa] newer than >KOTO>LIBRARY>LISTEN.DCOM;2[14-Oct-85 18:21:40].
Core>LIBRARY>LISTEN.TEDIT;2[14-Oct-85 18:20:11/FISCHER.pa], not found.
Core>LIBRARY>MAKEDIR.;1[11-Nov-83 17:47:16/Lichtenberg.pa], not found.
Core>LIBRARY>MAKEDIR.DCOM;1[11-Nov-83 17:49:12/Lichtenberg.pa], not found.
Core>library>matmult.tedit;3[15-Oct-85 14:38:55/jellinek.pa], not found.
Core>LIBRARY>MATRIXUSE.TEDIT;2[ 4-Jun-85 12:36:37/Jellinek.pa], not found.
Core>LIBRARY>MINISERVE.TEDIT;1[ 6-Oct-85 15:30:26/vanMelle.pa], not found.
Core>LIBRARY>MSHASH.;5[ 6-Jun-85 17:02:21/Nuyens.pa], not found.
Core>LIBRARY>MSHASH.DCOM;9[ 6-Jun-85 17:03:59/Nuyens.pa], not found.
Core>LIBRARY>MSHASHSYSTEM.;4[28-Jan-85 05:01:46/nuyens.pa], not found.
Core>LIBRARY>NEWMATMULT.;1[ 4-Jun-85 12:48:17/Jellinek.pa], not found.
Core>LIBRARY>NEWMATMULT.DCOM;1[ 4-Jun-85 12:50:14/Jellinek.pa], not found.
Core>LIBRARY>newmatmult.tedit;1[ 4-Jun-85 12:53:49/Jellinek.pa], not found.
Core>LIBRARY>NSCHAT.;9[23-Oct-85 14:32:37/Schoen.pa] newer than >KOTO>LIBRARY>NSCHAT.;1[10-Aug-85 00:26:50].
Core>LIBRARY>NSCHAT.DCOM;9[23-Oct-85 14:33:12/Schoen.pa] newer than >KOTO>LIBRARY>NSCHAT.DCOM;1[10-Aug-85 00:27:25].
Core>LIBRARY>NSMAINTAIN.;24[23-Sep-85 23:32:59/MASINTER.pa] newer than >KOTO>LIBRARY>NSMAINTAIN.;1[ 6-Sep-85 22:45:33].
Core>LIBRARY>NSMAINTAIN.DCOM;17[23-Sep-85 23:33:51/MASINTER.pa] newer than >KOTO>LIBRARY>NSMAINTAIN.DCOM;1[ 6-Sep-85 22:46:12].
Core>LIBRARY>NSTOASCIIDISPLAYFONT.;7[26-Feb-85 10:13:21/KAPLAN.PA], not found.
Core>LIBRARY>NSTOASCIIDISPLAYFONT.DCOM;7[26-Feb-85 10:13:43/KAPLAN.PA], not found.
Core>LIBRARY>PAGEHOLD.;4[19-Jul-85 12:00:41/vanMelle.pa], not found.
Core>LIBRARY>PAGEHOLD.DCOM;4[19-Jul-85 12:04:17/vanMelle.pa], not found.
Core>LIBRARY>PAGEHOLD.TEDIT;1[13-Dec-84 04:30:57/Lichtenberg.pa], not found.
Core>LIBRARY>PCE.;7[ 3-Nov-85 08:55:28/purcell.pa], not found.
Core>LIBRARY>PCE.DCOM;4[31-Oct-85 20:15:17/Schoen.pa], not found.
Core>Library>PCMEMTEST.;1[29-Sep-85 18:11:50/Purcell.pa], not found.
Core>Library>PCMEMTEST.DCOM;1[29-Sep-85 18:50:08/Purcell.pa], not found.
Core>Library>PCMEMTEST.TEDIT;1[18-Sep-85 06:53:16/Purcell.pa], not found.
Core>LIBRARY>PIXELBLT.;2[30-Sep-85 11:44:38/jellinek.pa], not found.
Core>LIBRARY>PIXELBLT.DCOM;2[30-Sep-85 11:44:51/jellinek.pa], not found.
Core>LIBRARY>PIXELBLT.TEDIT;4[30-Sep-85 12:40:48/jellinek.pa], not found.
Core>LIBRARY>PLURAL.;7[16-Dec-84 17:27:22/jonl.pa], not found.
Core>LIBRARY>PLURAL.DCOM;7[16-Dec-84 17:27:30/jonl.pa], not found.
Core>library>PLURAL.TEDIT;1[13-Dec-84 04:21:30/Lichtenberg.pa], not found.
Core>library>Press.im;2[25-Jul-85 16:44:59/Sannella.pa], not found.
Core>LIBRARY>PRINTER.TTY;1[22-Jul-83 16:31:32/Lichtenberg.pa], not found.
Core>LIBRARY>PUPIDSERVER.;1[12-Jun-84 17:01:36/Lichtenberg.pa], not found.
Core>LIBRARY>PUPIDSERVER.DCOM;1[12-Jun-84 17:01:50/Lichtenberg.pa], not found.
Core>LIBRARY>PUPIDSERVER.TXT;1[ 9-Aug-83 10:00:15/Lichtenberg.pa], not found.
Core>LIBRARY>RAID.DCOM;1[11-Nov-85 14:46:04/FISCHER.pa], not found.
Core>LIBRARY>RS232CMENU.;10[12-Nov-85 19:12:26/Schoen.pa] newer than >KOTO>LIBRARY>RS232CMENU.;3[ 8-Sep-85 18:46:41].
Core>LIBRARY>RS232CMENU.DCOM;10[12-Nov-85 19:12:46/Schoen.pa] newer than >KOTO>LIBRARY>RS232CMENU.DCOM;3[ 8-Sep-85 18:47:06].
Core>LIBRARY>SINGLEFILEINDEX.;28[27-Feb-85 09:20:32/KAPLAN.PA], not found.
Core>LIBRARY>SINGLEFILEINDEX.DCOM;28[27-Feb-85 09:21:40/KAPLAN.PA], not found.
Core>library>SINGLEFILEINDEX.Tedit;1[17-May-84 01:48:21/Lichtenberg.pa], not found.
Core>LIBRARY>SKETCHSTREAM.;3[31-Oct-85 09:35:21/Burton.pa] newer than >KOTO>LIBRARY>SKETCHSTREAM.;1[ 5-Oct-85 09:51:42].
Core>LIBRARY>SKETCHSTREAM.DCOM;3[31-Oct-85 09:35:40/Burton.pa] newer than >KOTO>LIBRARY>SKETCHSTREAM.DCOM;2[ 5-Oct-85 09:51:56].
Core>Library>TABLEBROWSER.;3[20-Oct-85 18:19:57/vanMelle.pa] newer than >KOTO>LIBRARY>TABLEBROWSER.;1[19-Sep-85 16:50:40].
Core>Library>TABLEBROWSER.DCOM;3[20-Oct-85 18:20:09/vanMelle.pa] newer than >KOTO>LIBRARY>TABLEBROWSER.DCOM;1[19-Sep-85 16:51:13].
Core>Library>TABLEBROWSERDECLS.;1[18-Sep-85 19:10:58/vanMelle.pa], not found.
Core>LIBRARY>TCP.;17[15-Sep-85 23:35:13/Schoen.pa] newer than >KOTO>LIBRARY>TCP.;1[22-Jun-85 03:23:57].
Core>LIBRARY>TCP.DCOM;19[15-Sep-85 23:37:22/Schoen.pa] newer than >KOTO>LIBRARY>TCP.DCOM;1[22-Jun-85 03:25:23].
Core>LIBRARY>TCP.TEDIT;10[27-Sep-85 10:23:55/schoen.pa] newer than >KOTO>LIBRARY>TCP.TEDIT;1[ 8-Sep-85 23:01:37].
Core>LIBRARY>TCPFTP.;36[ 9-Nov-85 14:43:50/Schoen.pa] newer than >KOTO>LIBRARY>TCPFTP.;2[11-Oct-85 13:50:23].
Core>LIBRARY>TCPFTP.DCOM;37[ 9-Nov-85 14:44:34/Schoen.pa] newer than >KOTO>LIBRARY>TCPFTP.DCOM;1[19-Aug-85 12:08:01].
Core>LIBRARY>TCPTFTP.;18[15-Sep-85 17:56:49/Schoen.pa], not found.
Core>LIBRARY>TEDIT.;46[11-Oct-85 18:55:19/SYBALSKY.pa] newer than >KOTO>LIBRARY>TEDIT.;4[ 3-Oct-85 17:54:26].
Core>LIBRARY>TEDIT.DCOM;50[11-Oct-85 18:56:53/SYBALSKY.pa] newer than >KOTO>LIBRARY>TEDIT.DCOM;4[ 3-Oct-85 17:56:02].
Core>LIBRARY>TEDITCHAT.;4[12-Nov-85 19:53:44/Schoen.pa] newer than >KOTO>LIBRARY>TEDITCHAT.;1[ 4-Sep-85 18:54:14].
Core>LIBRARY>TEDITCHAT.DCOM;4[12-Nov-85 19:54:27/Schoen.pa] newer than >KOTO>LIBRARY>TEDITCHAT.DCOM;1[ 4-Sep-85 18:54:35].
Core>LIBRARY>TEDITHCPY.;43[11-Oct-85 18:42:11/SYBALSKY.pa] newer than >KOTO>LIBRARY>TEDITHCPY.;3[25-Sep-85 17:09:34].
Core>LIBRARY>TEDITHCPY.DCOM;44[11-Oct-85 18:43:58/SYBALSKY.pa] newer than >KOTO>LIBRARY>TEDITHCPY.DCOM;3[25-Sep-85 17:10:16].
Core>LIBRARY>TEDITKEY.;1[ 9-Oct-85 22:11:29/nuyens.pa], not found.
Core>LIBRARY>TEDITWINDOW.;50[11-Oct-85 18:21:02/SYBALSKY.pa] newer than >KOTO>LIBRARY>TEDITWINDOW.;5[ 8-Oct-85 16:40:52].
Core>LIBRARY>TEDITWINDOW.DCOM;53[11-Oct-85 18:23:09/SYBALSKY.pa] newer than >KOTO>LIBRARY>TEDITWINDOW.DCOM;5[ 8-Oct-85 16:43:38].
Core>LIBRARY>TTYCHAT.;2[20-Sep-85 10:22:10/Schoen.pa] newer than >KOTO>LIBRARY>TTYCHAT.;1[ 8-Sep-85 18:18:27].
Core>LIBRARY>TTYCHAT.DCOM;2[20-Sep-85 10:22:48/Schoen.pa] newer than >KOTO>LIBRARY>TTYCHAT.DCOM;1[ 8-Sep-85 18:18:48].
Core>LIBRARY>TWODINSPECTOR.;2[13-Oct-85 17:21:05/FISCHER.pa], not found.
Core>LIBRARY>TWODINSPECTOR.DCOM;2[13-Oct-85 17:22:38/FISCHER.pa], not found.
Core>LIBRARY>twodinspector.tedit;2[10-Oct-85 22:44:47/FISCHER.pa], not found.
Core>LIBRARY>VIRTUALKEYBOARDS.TEDIT;4[ 3-Oct-85 15:06:21/sybalsky.pa] newer than >KOTO>LIBRARY>VIRTUALKEYBOARDS.TEDIT;1[19-Jun-85 11:14:36].
Core>LIBRARY>VTCHAT.;5[12-Nov-85 20:32:32/Schoen.pa] newer than >KOTO>LIBRARY>VTCHAT.;1[26-Aug-85 12:06:22].
Core>LIBRARY>VTCHAT.DCOM;6[12-Nov-85 20:33:18/Schoen.pa] newer than >KOTO>LIBRARY>VTCHAT.DCOM;1[26-Aug-85 12:08:43].

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,45 @@
LocalFile Implementor's Guide
Filed as [eris]<lispcore>internal>doc>localFileImpl.tedit
Written by Tayloe Stansbury 18-Feb-85
Modified by Tayloe Stansbury 15-Aug-85 12:27:46
The Dandlion/Dove local file system is implemented in two files: LocalFile and DskDisplay. User-level documentation for the file system can be found in the 1108 User's Guide or on [eris]<lispcore>doc>localfile.tedit.
The Dandelion/Dove local file system has two layers: the Pilot layer and the Lisp streams layer. The Pilot layer emulates a subset of the Pilot file system, as described in the Pilot Programmer's Manual. The Lisp streams layer implements the Lisp streams specification laid out in [eris]<lispcore>internal>doc>streams.tedit.
The Pilot layer is implemented by three modules in the file LocalFile:
1. LFALLOCATIONMAPCOMS, which keeps track of which pages have been allocated and which are free. LFAllocationMap provides the functionality of [idun]<apilot>11.0>pilot>private>volallocmapimpl.mesa, though its implementation is only very loosely based on that file.
2. LFFILEMAPCOMS, which keeps track of the mapping between file ID numbers and runs of disk pages. This mapping is stored in a specialized B-tree. LFFileMap provides the functionality of [idun]<apilot>11.0>pilot>private>volfilemapimpl.mesa, though its implementation was based more on [idun]<apilot100>pilot>private>volfilemapimpl.mesa, and later updated to be compatible with the Mesa 11.0 release of Pilot.
3. LFPILOTFILECOMS, which has a primitive notion of file, as embodied in its datatype FileDescriptor. LFPilotFile handles things like creating, extending, shrinking, and deleting files; reading and writing file pages; labels; and volume root directories (which map file types onto higher level directories -- e.g. Lisp file type -> Lisp directory ID, Mesa file type -> MFile directory ID, etc.). LFPilotFile does not emulate any particular Mesa file, but rather grew up as the gray area between the two layers became more well-defined during the evolution of the Lisp local file system.
The Lisp stream layer is defined by three more modules in the file LocalFile:
1. LFDIRECTORYCOMS, which implements the Lisp directory. The Lisp directory maps symbolic Lisp file names onto Pilot file ID numbers, and handles directory search and directory enumeration.
2. SCAVENGEDSKDIRECTORYCOMS, which implements a scavenger for the Lisp directory. It works by purging the old Lisp directory, creating a new one, using the BTree to figure out what Lisp files there are on the volume, using the leader page of each Lisp file to figure out what its name is, and then inserting an entry in the new directory for each Lisp file. There is no Pilot-level scavenger implemented in Lisp; for that we rely on the Othello Scavenge Logical Volume command.
3. LFCOMS, which implements all other operations of the local disk file device. LocalFile uses Pilot files as backing files for Lisp streams: page 0 of the Pilot file becomes the stream's leader page (containing stuff GETFILEINFO and the scavenger will be interested in), page 1 of the Pilot file becomes page 0 of the stream, etc. Pilot backing files may be longer than the Lisp stream they hold.
In addition, the file DskDisplay provides a window which displays file system status. This file is separate because it relies on the window system and therefore must be loaded considerably later in the loadup process than LocalFile need be.
Some future projects for the file system (apart from fighting off the stream of ARs):
1. Modify the READPAGES and WRITEPAGES methods to transfer contiguous pages all at once, and set the MULTIBUFFERHINT to be T.
2. Rewrite DiskDlion (which implements the Dandelion/Dove disk head) so that disk requests that cross cylinder boundaries are handled in runs rather than a page at a time (for both the Dandelion and Dove). Without this, large disk requests (which happen especially during deleting) can tie up the system for quite a while.
3. Modify DiskDlion to do a process switch while waiting for the disk. Currently it busy waits.
4. Currently too much of the file system is uninterruptable. Unfortunately, the primitive UNINTERRUPTABLY now prevents process switch in addition to preventing keyboard interrupts. What we really need is a construct that will do the latter but not the former. (There is now an AR for such a beast.) Given that, we should remove as many calls to UNINTERRUPTABLY as possible.
5. Currently files are allocated 20 pages at a time, regardless of whether the openfile request came with a size hint. This was originally because allocating long files sometimes took long enough that NS connections got dropped. Once #2 is accomplished, long allocations should be quite a bit faster though; and #s 3 and 4 will make it possible for other processes to sneak in while allocations are going on. Then it would make sense to change the file system to allocate files all at once when a hint is provided.
6. Currently, allocation map buffers and file map buffers are written out only once per stream creation or deletion. Without automatic built-in scavenging, that strikes me as a bit unsafe (although it does speed things up some). It would probably be better to write them out once every allocation or deallocation (and the performance penalty for doing so will not be too great if allocation requests are larger as a result of #5).
7. Longer term: rewrite the directory so that it uses some form of tree search. The linear search currently used gets unacceptably slow for large directories.
Should you have any questions, do not hesitate to contact me. My mail address is Stansbury.pa, and my extension is 4330. Good luck!

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@@ -0,0 +1,2 @@
All the documentation for Maiko (Medley running on Suns, AKA the bytecode emulator) resides on {Pogo:AISNorth:Xerox}<DsunLisp>Documents>.

View File

@@ -0,0 +1,99 @@
-- MakeLispFloppies.doc
-- Last edit 11-Oct-84 16:27:50 by Masinter
-- Instructions for building Floppies for installing Interlisp-D on 1108s
-- Follow these instructions if running in Mesa 11.1 Tajo or Copilot.
-- To execute these commands, make sure the insertion point is in the
-- Executive window (by clicking left mouse button in Executive window).
-- Then, while holding the "Copy" key down, select the command you want to
-- execute (including the "return" at the end of line.) When you let up on
-- Copy, the command will be "unread" the Executive input buffer.
-- Before you transfer files, you should have approximate 6000 pages
-- in your volume to contain all the files.
-- If you want to keep the files separate, you can work on separate directory
-- to keep files in one place.
Create FloppyFiles -- creates a new directory
push FloppyFiles -- puts the directory on your search path (like Connect)
-- bring over tool for making floppies.
-- Change "Iris" to to the name of the server has Mesa closest to you (Phylum and Rose are candidates)
ftp Iris directory/c Mesa>11.0 retrieve/a<> MakeDLionBootFloppyTool.bcd FloppyInitial.db Mesa.db MoonBoot.db DLion.germ
-- get Lisp specific files:
ftp Eris directory/c Lisp>Harmony>Mesa ret/<>A HelloDLion.boot directory/c Lisp>Harmony>CM retrieve/<>A GetHello.othello GetLisp.othello PartitionLisp.othello PartitionLispTajo.othello PartitionLispStarTajo.othello
-- now start up tool. Execute:
MakeDLionBootFloppyTool.bcd
-- Insert new floppy
-- Make the following settings in MakeDLionBootFloppyTool:
-- Drive: 0 -- default is correct --
-- Floppy Name: LispOthello -- *** CHANGE THIS ONE *** --
-- Initial uCode: FloppyInitial.db -- default is correct --
-- Diagnostic uCode: MoonBoot.db -- default is correct --
-- Pilot uCode: Mesa.db -- default is correct --
-- Germ File: DLion.germ -- default is correct --
-- Boot File: HelloDLion.boot -- *** CHANGE THIS ONE *** --
-- Turn on all three options (Format Floppy, Reserve Last Cylinder For Diagnostics, Install Boot Files) and button Start!
-- Now execute the following WITHOUT REMOVING FLOPPY:
floppy write Lisp11SAx000Initial.db DLion.germ Mesa.db HelloDLion.boot getLisp.othello PartitionLisp.othello PartitionLispTajo.othello PartitionLispStarTajo.othello
floppy info list/v
----------------------------------------------------
-- You have now made a "LispOthello" diskette
----------------------------------------------------
-- To make a floppy with a SYSOUT on it, generally you should use Lisp:
-- COPYFILE of a file to floppy (after FLOPPY.MODE(SYSOUT)) or SYSOUT({FLOPPY})
-- work. However, you can also do this from Tajo:
ftp Eris directory/c Lisp>Harmony>Basics ret/A<> Lisp.SYSOUT
-- Insert a new floppy, then do the following. The "--y" is so that if it asks you if you want to overwrite, it will get a "Yes" response after complaining about the "--", but if it doesn't ask, the "--y" will get ignored.
floppy format "Lisp Sysout '#1"/n
-- y
floppy write lisp.sysout[0..2249]/s lisp.sysout
floppy info list/v
-- Insert a new floppy, and then
floppy format "Lisp Sysout '#2"/n
-- y
floppy write lisp.sysout[2250..4499]/s lisp.sysout
floppy info list/v
-- If SYSOUT>4499 pages, insert a new floppy, and then:
floppy format "Lisp Sysout '#3"/n
-- y
floppy write lisp.sysout[4500..6749]/s lisp.sysout
floppy info list/v
-- If SYSOUT>6749 pages, insert a new floppy, and then:
floppy format "Lisp Sysout '#4"/n 3/f
-- y
floppy write lisp.sysout[6750..8999]/s lisp.sysout
floppy info list/v
floppy format "Lisp Sysout '#5"/n 3/f
-- y
floppy write lisp.sysout[9000..11499]/s lisp.sysout
floppy info list/v
-- done (extend for sysouts bigger than 11500 pages). If any changes to files were made, back up:
-- stop working in the "FloppyFiles" subdirectory
pop

Binary file not shown.

View File

@@ -0,0 +1,136 @@
Hardware:
Bigger Disks
Faster local IFSs
Color display
Sell better peripherals
Laser writer
better file server
SCSI
Labelless Disks
Streaming Tape
Documentation:
Updated and online doc
Improved documents
Consistent paradigm for writing documents (IM formatting replacement)
Make system easy to learn
Window system / User interface:
Interruptable pop-up Menus
TIP tables
Remote Windows
Faster text display
Imager
Image Streams
clean up code
collapse common code
add clipping
Rethink & overhaul Image Objects
Loopsified window system
Consistent look & feel (window UI and commands)
User interface as consistent as Viewpoint or Macintosh
Same keying or mousing gets same op everywhere
Cheap, Pervasive Text (TTYIN replacement)
Symbol ESC completion on type-in
Programming Environment:
Same machine low-level debugger
Source level debugger
Good stepper
NS based Teleraid
Teleraid and CL stack ops
revert
return from
Teleraid Inspect
Interactive Interface to File manager
Better File Browser
Definition groups
Extensible SEdit
Programmers Interface to SEdit
More Common Lisp integration
Higher level language features:
Unification
Single, Common prettyprinter
Fast prettyprinter
Path name cleanup
use pathnames all the way down
get SAME object always for same file
Single Compiler
Decouple DWIM - CLISP
Fast sequence functions
Ropes
System building and installation:
Non-Dorado loadups
FASL in the init
Packages in the init
Common Lisp primacy, eg in the init
State saving smaller than sysout-sized
Revamp software Installation process
better user interface
written in Lisp, not Mesa
FAST
include error Recovery
Language kernel:
Big Reference counts w/microcode support
Full GC (circular objects)
Get arith to IEEE compliance
GCable Symbols
Unboxed floating point compler
Finalization of GCed objects
Smaller base sysout
More Common Lisp microcode, eg EVAL
Common Loops IN the system
Operating system:
Pre-emptive scheduler
Non-consing Synchronizers (monitorlocks)
Device drivers:
SNA networking
Floppy speed
Improve local disk speed
Real Subdirectories
Support File Cacher
Reliable TCP & RS232
Run in XNS only world
Run in Stand Alone World
Sun NFS support
XNS over phone lines
Applications:
Video Image Manipulation
Bitmap Editor as good as MacPaint
Mail support for
X.400
SMTP
Release Lafite
Lisp based File Server
3270 terminal emulator
Good 3rd party software development path
Database
Spreadsheet
AR category clean up
Programming system Management Tools
Adobe Tools
Notecards
TEdit
Footnotes
Index
toc
egns
styles
LPT output
change masks
better than Tex
WYSIWG Page mode
DES/DIS/DIF/VP convert
Easier Landscape Printing
YACC and such
C, Fortran, Pascal, Cobol
Work environment:
Work at Home
Better design process

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@@ -0,0 +1 @@
"SNOW.PA" "21-Sep-87 14:18:20"

Binary file not shown.

BIN
docs/internal/PORT.NOTEFILE Normal file

Binary file not shown.

View File

@@ -0,0 +1,20 @@
*start*
00530 00024 US
From: masinter.PA
Date: 17-Jul-86 22:42:29 PDT
Subject: Re: [STEVER%OZ.AI.MIT.EDU@XX.LCS.MIT.EDU: Tail Recursion in Common Lisp ???]
In-reply-to: Pavel's message of 17 Jul 86 20:57 PDT
To: Pavel
cc: TamarinCore^
for the curious, I did an experiment with tail recursive call. There's an "opcode" called RETCALL, complete with UFN which fakes it using the standard awful hacks.
The simplest spec is that
RETCALL <n> <name>
works like
FNX <n> <name>
except that it throws away the current frame first.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

177
docs/internal/STREAMS.TEDIT Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

BIN
docs/internal/allegro.ip Normal file

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,138 @@
\BLTCHAR
114 opcodes
1 free variable lookup (possibly more)
100: 21 160 6 BIND ; [pvar0] .. [pvar6]
103: 100 IVAR CHARCODE
104: 154 377 SIC 255
106: 345 LOGAND2
107: 134 PVAR_ [pvar4]
110: 277 POP
111: 102 IVAR DISPLAYDATA
112: 144 COPY
113: 311 76 GETBASEPTR.N
115: 100 IVAR CHARCODE
116: 343 LRSH8
117: 360 EQ
120: 246 TJUMP-> 130
130: 311 16 GETBASEPTR.N
132: 225 FJUMP-> 141
141: 102 IVAR DISPLAYDATA
142: 311 0 GETBASEPTR.N
144: 133 PVAR_ [pvar3]
145: 102 IVAR DISPLAYDATA
146: 311 60 GETBASEPTR.N
150: 114 PVAR [pvar4]
151: 320 ADDBASE
152: 310 0 GETBASE.N
154: 330 IPLUS2
155: 131 PVAR_ [pvar1]
156: 102 IVAR DISPLAYDATA
157: 311 30 GETBASEPTR.N
161: 361 IGREATERP
162: 235 FJUMP-> 201
(freplace (\DISPLAYDATA DDXPOSITION) of DISPLAYDATA with (IPLUS CURX (\DSPGETCHARWIDTH CHAR8CODE DISPLAYDATA)))
201: 102 IVAR DISPLAYDATA
202: 113 PVAR [pvar3]
203: 102 IVAR DISPLAYDATA
204: 311 20 GETBASEPTR.N
206: 114 PVAR [pvar4]
207: 320 ADDBASE
210: 310 0 GETBASE.N
212: 330 IPLUS2
213: 24 0 RPLPTR.N
215: 277 POP
216: 102 IVAR DISPLAYDATA
217: 311 4 GETBASEPTR.N
221: 270 PVAR_^ [pvar0]
222: 113 PVAR [pvar3]
223: 110 PVAR [pvar0]
224: 330 IPLUS2
225: 273 PVAR_^ [pvar3]
226: 111 PVAR [pvar1]
227: 110 PVAR [pvar0]
230: 330 IPLUS2
231: 131 PVAR_ [pvar1]
232: 102 IVAR DISPLAYDATA
233: 310 43 GETBASE.N
235: 130 PVAR_ [pvar0]
236: 361 IGREATERP
237: 221 FJUMP-> 242
242: 113 PVAR [pvar3]
243: 102 IVAR DISPLAYDATA
244: 310 42 GETBASE.N
246: 130 PVAR_ [pvar0]
247: 361 IGREATERP
250: 221 FJUMP-> 253
253: 110 PVAR [pvar0]
254: 272 PVAR_^ [pvar2]
255: 111 PVAR [pvar1]
256: 112 PVAR [pvar2]
257: 361 IGREATERP
260: 264 170 NFJUMPX-> 450
262: 102 IVAR DISPLAYDATA
263: 311 52 GETBASEPTR.N
265: 130 PVAR_ [pvar0]
266: 6 14 256 DTEST PILOTBBT
271: 310 11 GETBASE.N
273: 152 '0
274: 360 EQ
275: 263 152 TJUMPX-> 447
277: 150 'NIL
300: 135 PVAR_ [pvar5]
301: 276 PVAR_^ [pvar6]
302: 127 16 FVARX \SOFTCURSORP
304: 262 42 FJUMPX-> 346
346: 101 IVAR DISPLAYSTREAM
347: 140 30 161 GVAR \TOPWDS
352: 360 EQ
353: 255 TJUMP-> 372
372: 110 PVAR [pvar0]
373: 112 PVAR [pvar2]
374: 315 2 PUTBASE.N
376: 277 POP
377: 110 PVAR [pvar0]
400: 111 PVAR [pvar1]
401: 112 PVAR [pvar2]
402: 331 IDIFFERENCE
403: 315 10 PUTBASE.N
405: 277 POP
406: 110 PVAR [pvar0]
407: 102 IVAR DISPLAYDATA
410: 311 22 GETBASEPTR.N
412: 114 PVAR [pvar4]
413: 320 ADDBASE
414: 310 0 GETBASE.N
416: 112 PVAR [pvar2]
417: 330 IPLUS2
420: 113 PVAR [pvar3]
421: 331 IDIFFERENCE
422: 315 6 PUTBASE.N
424: 277 POP
425: 110 PVAR [pvar0]
426: 152 '0
427: 166 PILOTBITBLT
430: 277 POP
431: 116 PVAR [pvar6]
432: 231 FJUMP-> 445
445: 151 'T
446: 20 RETURN

View File

@@ -0,0 +1,54 @@
Code for \DSPPRINTCHAR. Best case:
42 opcodes.
3 free variable lookups.
1 function call.
2 unnecessary DTESTs (since not tested at 101).
100: 100 IVAR STREAM
101: 311 60 GETBASEPTR.N
103: 21 1 0 BIND DD;
106: 140 24 273 GVAR \CARET.UP
111: 224 FJUMP-> 117
117: 126 FVAR *DRIBBLE-OUTPUT*
120: 262 35 FJUMPX-> 155
155: 101 IVAR CHARCODE
156: 154 377 SIC 255
160: 361 IGREATERP
161: 262 31 FJUMPX-> 212
212: 127 16 FVARX \PRIMTERMSA
214: 101 IVAR CHARCODE
215: 302 GETBASEBYTE
216: 154 30 SIC 24
220: 345 LOGAND2
221: 144 COPY
222: 152 '0
223: 360 EQ
224: 262 146 FJUMPX-> 372
226: 277 POP
227: 101 IVAR CHARCODE
230: 144 COPY
231: 154 15 SIC 13
233: 361 IGREATERP
234: 262 31 FJUMPX-> 265
236: 100 IVAR STREAM
237: 110 PVAR DD
240: 13 30 231 FN3 \BLTCHAR
243: 277 POP
244: 100 IVAR STREAM
245: 6 1 15 DTEST STREAM
250: 100 IVAR STREAM
251: 6 1 15 DTEST STREAM
254: 310 6 GETBASE.N
256: 153 '1
257: 324 PLUS2
260: 315 6 PUTBASE.N
262: 261 1 161 JUMPXX->1043
1043: 150 'NIL
1044: 20 RETURN
1045: 0 -X-

File diff suppressed because one or more lines are too long

BIN
docs/internal/fontchars.ip Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@@ -0,0 +1,11 @@
Additional information on "How-To" can be found on:
{Eris}<Sybalsky>How-to>
such as:
Installing New 1108 ucode
Running AR cleanup
Seding info to Sales
Writing AR test cases

Some files were not shown because too many files have changed in this diff Show More