1
0
mirror of synced 2026-03-22 17:18:10 +00:00

Compare commits

...

12 Commits

Author SHA1 Message Date
Frank Halasz
e4c4bb9f8d Remove extra scheduled Medley builds that were added for testing purposes last weeek. (#1615) 2024-03-25 11:57:34 -07:00
Frank Halasz
43374862e5 Merge pull request #1604 from Interlisp/rmk114--Add-TEDIT.XYTOCH-for-Notecards
Add TEDIT.XYTOCH for Notecards
2024-03-25 11:28:54 -07:00
Frank Halasz
6cbacf754b Merge branch 'master' into rmk114--Add-TEDIT.XYTOCH-for-Notecards 2024-03-25 11:26:53 -07:00
Frank Halasz
ef6d2d5b03 Merge pull request #1606 from Interlisp/rmk115--TEDIT.NORMALIZECARET-all-visible-caret-to-top
TEDIT.NORMALIZECARET moves line with left-most selection to the top
2024-03-25 11:22:53 -07:00
rmkaplan
121a166047 TEDIT.NORMALIZECARET moves line with left-most selection to the top 2024-03-21 21:51:55 -07:00
rmkaplan
1a550ce499 Add TEDIT.XYTOCH for Notecards
Provide a simple public interface function
2024-03-21 10:34:43 -07:00
Larry Masinter
9232a0db90 add more info on setting up directories (#1600) 2024-03-21 05:57:22 -07:00
rmkaplan
0a37520014 Fix for TTYINPROMPTFORWORD's bad behavior on CR termination (#1565)
Brute-force addition of parameter to TTYIN that BKSYS/DELETE function (TTYINUNREADBUF) can access freely.  Seems to work.
2024-03-20 20:34:47 -07:00
rmkaplan
6155bcb430 Off-by-one in the interpretation of the event length (#1585) 2024-03-20 20:31:42 -07:00
Larry Masinter
8ca35635e5 first cut at better build explanation (#1507)
* first cut at better build explanation for how medley sysouts are made.
2024-03-20 15:49:04 -07:00
Matt Heffron
2f7972e78d The BUTTONS lispusers package will edit the button content in the TTY process. So, for example, a copy-paste to the EXEC that had the TTY is not possible. Changed to invoke EDITE as a new process, instead of in the TTY process. (#1594)
(Lots of changes in file because change from FAST-formatted to PRETTY-formatted file. Actually only 1 line of code changed.)
Second, cleaned up, attempt.
2024-03-19 21:28:33 -07:00
Frank Halasz
2a88ad712e Further cleanup on cpv script; (#1506)
* Further cleanup on cpv script; add back a ln_or_cp function and use it to cp only when ln fails for all instances of linking/copying in the script;  better handling of case where the unversioned dest file does not exist but version versions of the file DO exst.

* cpv: remove local declarations to be Posix-compliant
2024-03-19 21:24:35 -07:00
11 changed files with 563 additions and 343 deletions

View File

@@ -20,8 +20,6 @@ name: "Build/Push Release & Docker"
on:
schedule:
- cron: '0 9 * * 1'
- cron: '0 9 * * 2'
- cron: '0 9 * * 3'
workflow_dispatch:
inputs:

View File

@@ -1,34 +1,126 @@
# How to build a medley release
# How to Build Medley and make a 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
The files in the Medley repository are used for making "loadups" lisp.sysout, full.sysout, apps.sysout. In order to build the Medley images, you need to have a build of "Maiko" (in flavors 'ldeinit' and 'lde' and either (`ldex` or `ldesdl`). Head over to the `Interlisp/maiko` repository to find out about making those.
# Using github actions
# Using GitHub actions
In the github medley repository (Interlisp/medley) go to the Actions tab.
Note that GitHub actions are used to automate the build process and insure that the system is built using known files, and that the releases are coordinated across platforms. We try to minimize dependencies on GitHub.
It will list the available github actions, select: **Build Medley Release**.
That said, you can manually trigger the automatic making of Medley loadups.
In the GitHub medley repository (Interlisp/medley) go to the Actions tab.
It will list the available GitHub actions.
Select: **Build/Push Release & Docker**.
In the middle of the screen there is a box labeled "Workflow Runs".
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.
Build/Push Release & Docker first builds Maiko and Medley, pushes a Medley release to the Interlisp/medley repo Releases, then makes a Docker image.
The files in .github/workflows/ contain the details.
<!--
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.
-->
# Building Medley for yourself
The actual building itself is done with various shell scripts, found in the `scripts` directory in the medley repository. Most of the scripts have a minimal sanity check that they are being run from the medley repository.
Historically, building the medley image (called a "sysout") was called "doing a loadup". Back in the day, a loadup took the better part of a day, and no one would do the whole thing -- there was no automation.
## Prerequisites
In these instructions, there is an assumption that the loadup scripts can find other repositories. All of the loadup scripts have to find `lde` and `ldex` or `ldisdl` and also `ldeinit`.
Loadups use the run-medley script, which looks for Maiko (actually the lde & ldeinit executables) as follows:
1. lde (ldeinit) on PATH
2. In the `<osversion>.<machinetype>` subdirectory of the directory specified by the $MAIKODIR environment variable
3. In the `<osversion>.<machinetype>` subdirectory of the directory specified by $MEDLEYDIR/../maiko/
4. In the `<osversion>.<machinetype>` subdirectory of the directory specified by $MEDLEYDIR/maiko/
where $MEDLEYDIR is the directory from which you called the loadup script.
## Make everything
The shell command:
```
time ./scripts/loadup-all.sh -apps && time ./scripts/loadup-db.sh
```
does everything; on a fast machine it takes 4-6 minutes, most of which is spent in the `loadup-db.sh` step. Without the `loadup-db.sh` step, it runs in 22 seconds on a fast system.
## How loadup-all.sh works
You don't need to know this unless you want to change some of the low-level files involved.
The script "loadup-all.sh" itself involes scripts used for different steps in the loadup -- basically loadup-all calls the scripts in this order:
* `loadup-init.sh`
* `loadup-mid-from-init.sh`
* `loadup-lisp-from-mid.sh`
* `loadup-full-from-lisp.sh`
* `loadup-aux.sh`
* `loadup-apps-from-full.sh`
* `loadup-db.sh`
* `copy-all.sh`
Most of these scripts should only be run from the 'medley' repository top level directory.
```
your-working-area
maiko
medley
notecards
```
These are explained in reverse order:
### `copy-all.sh`: copy files from build directory to loadups
Most of the scripts build things in a temporary directory and, if the entire process succeeds, copies the results to the `loadups` directory. The environment variable `LOADUP-OUTDIR`, if set, is used, otherwise a sub-directory of /tmp.
`copy-db.sh` and `copy-full.sh` are provided if you've only done partial loadups.
`cpv` is a script that copies a file from one place to another while maintaining Medley version numbering.
### `loadup.db`: build `fuller.database`
This step was added to make a Masterscope database of "everything". The result is a file `fuller.database`. This was an artifact of an attempt to build some diagnostic tools to help understand what was going on in Medley. There is a 4 step process in the `GATHER-INFO` function in the file `MEDLEY-UTILS` in the `internal` subdirectory of the medley repository that ends with creating a masterscope database after loading all of the source files for every file that is part of the loadup, plus a few additional LispUsers files listed in variables that are part of `MEDLEY-UTILS`.
There are some problems that `GATHER-INFO` results hint at, but haven't been explored systematically.
Masterscope has some gaps and bugs so `fuller.database` isn't as useful as it could be. For example, Masterscope 'show paths' was written assuming you had only anlayzed the parts you were working on, and so the results of `SHOW PATHS` are too big to be useful.
## `loadup-aux.sh`: rebuild two files used for Medley development
`exports.all` is a collection of external declarations from a set of files in the medley/sources directory that are marked as being exported within those sources. Low level system declarations that aren't needed by most users. The files that need exports.all are generally loaded by loading `SYSEDIT`, which sets up a couple of preferences and then loads `exports.all`.
`whereis.hash` is an index file mapping function, variable, record declarations and other components to the file name containing that definition. It is the result of scanning the directories in the medley repository, including lispusers and library and internal etc. (but not obsolete?).
### `loadup-apps-from-full.sh:`build `apps.sysout`
`apps.sysout` includes some other components that are part of online.interlisp.org experience. In particular, you need `notecards`, which is in a separate repository (currently).
### `loadup-full-from-lisp.sh`: Build a `full.sysout` and
`full.sysout` Includes what we hope is a useful subset of Interlisp library and lispusers components as well as our modernization components.
### Build a `lisp.sysout` in 4 scripts:
### `loadup-lisp-from-mid.sh` build `lisp.sysout`
`lisp.sysout` is what most 1990s customers started with. This step starts with `init-mid.sysout` and runs `sources/LOADUP-LISP`.
### `loadup-mid-from-init.sh` build `mid.sysout`
This step uses a Maiko that has been compiled with the `init` option. It reads the `init.dlinit` and initializes the package system and runs the EXPRESSIONS from the files that were "loaded" by MAKEINIT, and writes out `init-mid.sysout`.
### `loadup-init.sh`: build `mid.sysout`
This step (called `MAKEINIT`) runs a Lisp program (using a `starter` sysout) that reads in Lisp sources for the bootstrap loader, walks through the code renaming the low-level memory management functions to work on a file instead of in memory. These renamed functions are written to a file (called I-NEW), and I-NEW is then compiled and loaded in and run to 'virtually' load the core set of files in an initial memory image (called INIT.SYSOUT). It then does another (theoretically unnecessary) pass of reading in INIT.SYSOUT using a different renaming of variables used originally for remote debugging (called TELERAID) and moving some pages around to make room for Dandelion IO Processor boot code.
While this step requires an Interlisp implementation, it isn't necessarily a Medley implementation. If you want to change the instruction set or modify any data structures that are reflected in both the Lisp code and Maiko, you can run this part in an older Interlisp. Theoretically.

View File

@@ -1,12 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED " 5-Mar-2024 15:07:12" {WMEDLEY}<library>tedit>TEDIT-SELECTION.;426 125601
(FILECREATED "21-Mar-2024 10:32:02" {MEDLEY}<library>tedit>TEDIT-SELECTION.;80 126882
:EDIT-BY rmk
:CHANGES-TO (FNS \TEDIT.UPDATE.SEL)
:CHANGES-TO (VARS TEDIT-SELECTIONCOMS)
:PREVIOUS-DATE " 4-Mar-2024 22:48:20" {WMEDLEY}<library>tedit>TEDIT-SELECTION.;425)
:PREVIOUS-DATE "16-Mar-2024 16:31:03" {MEDLEY}<library>tedit>TEDIT-SELECTION.;79)
(PRETTYCOMPRINT TEDIT-SELECTIONCOMS)
@@ -43,7 +43,7 @@
(* ;; "User entries to the selection code")
(FNS TEDIT.GETPOINT TEDIT.GETSEL TEDIT.GETSEL.PARA TEDIT.MAKESEL TEDIT.SCANSEL
(FNS TEDIT.XYTOCH TEDIT.GETPOINT TEDIT.GETSEL TEDIT.GETSEL.PARA TEDIT.MAKESEL TEDIT.SCANSEL
TEDIT.SET.SEL.LOOKS TEDIT.SETSEL TEDIT.SHOWSEL)
(* ;; "SELPIECES")
@@ -1672,6 +1672,31 @@
(DEFINEQ
(TEDIT.XYTOCH
[LAMBDA (X Y PANE) (* ; "Edited 20-Mar-2024 14:32 by rmk")
(* ;; "Returns the character number of the character at coordinates X and Y in PANE.")
(LET ((TEXTOBJ (TEXTOBJ PANE))
SEL)
(* ;; "The X W fields should be good in all panes, not sure about the Y W fields. Maybe those are PANE-dependent.")
(SETQ X (SELECTQ X
(LEFT (GETTOBJ TEXTOBJ WLEFT))
(RIGHT (SUB1 (GETTOBJ TEXTOBJ WRIGHT)))
X))
(SETQ Y (SELECTQ Y
(TOP (SUB1 (GETTOBJ TEXTOBJ WTOP)))
(BOTTOM (GETTOBJ TEXTOBJ WBOTTOM))
Y))
(SETQ SEL (\TEDIT.SELECT.LINE.SCANNER X Y TEXTOBJ (fetch (TEXTWINDOW PLINES) of PANE)
'TEXT NIL NIL PANE))
(CL:WHEN (AND (type? SELECTION SEL)
(GETSEL SEL SET)) (* ;
 "He pointed at something real; return that.")
(GETSEL SEL CH#))])
(TEDIT.GETPOINT
[LAMBDA (STREAM SEL) (* ; "Edited 5-Jun-2023 15:30 by rmk")
(* ; "Edited 30-May-91 23:03 by jds")
@@ -1851,7 +1876,8 @@
(DEFINEQ
(\SELPIECES
[LAMBDA (SEL/FIRSTCHAR LASTCHAR TEXTOBJ) (* ; "Edited 4-Mar-2024 22:47 by rmk")
[LAMBDA (SEL/FIRSTCHAR LASTCHAR TEXTOBJ) (* ; "Edited 16-Mar-2024 16:30 by rmk")
(* ; "Edited 4-Mar-2024 22:47 by rmk")
(* ; "Edited 12-Dec-2023 12:06 by rmk")
(* ; "Edited 11-Dec-2023 10:05 by rmk")
(* ; "Edited 2-Jun-2023 20:36 by rmk")
@@ -1885,7 +1911,7 @@
(SUB1 (FGETSEL SEL/FIRSTCHAR CHLIM)))]
elseif (type? TEDITHISTORYEVENT SEL/FIRSTCHAR)
then (SETQ FIRSTCHAR (GETTH SEL/FIRSTCHAR THCH#))
(SETQ LASTCHAR (GETTH SEL/FIRSTCHAR THCHLIM))
(SETQ LASTCHAR (SUB1 (GETTH SEL/FIRSTCHAR THCHLIM)))
else (SETQ FIRSTCHAR SEL/FIRSTCHAR))
(* ;; "Do the right first so that we retain the center piece when FIRTCHAR and LASTCHAR are in the same original piece.")
@@ -2111,23 +2137,23 @@
(SHOULDNT)) finally (RETURN RESULT])
)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (12813 14678 (\TEDIT.SELECTION.DEFPRINT 12823 . 14676)) (14679 15800 (
\TEDIT.SET.GLOBAL.SELECTIONS 14689 . 15798)) (15837 24072 (TEDIT.SEL.AS.STRING 15847 . 17434) (
TEDIT.SEL.AS.SEXPR 17436 . 18422) (TEDIT.SELECTALL 18424 . 18754) (TEDIT.SELECTED.PIECES 18756 . 20100
) (\TEDIT.FIND.PROTECTED.END 20102 . 21591) (\TEDIT.FIND.PROTECTED.START 21593 . 23407) (
\TEDIT.WORD.BOUND 23409 . 24070)) (24206 55670 (\TEDIT.EXTEND.SEL 24216 . 31192) (\TEDIT.SELECT 31194
. 32576) (\TEDIT.SCAN.LINE 32578 . 40579) (\TEDIT.SCAN.LINE.WORD 40581 . 44701) (
\TEDIT.SELECT.LINE.SCANNER 44703 . 51752) (\TEDIT.SELECT.OBJECT 51754 . 55668)) (55671 70565 (\FIXSEL
55681 . 66203) (\TEDIT.CHTOX 66205 . 69192) (\TEDIT.COLLECTSELS 69194 . 70245) (\TEDIT.SELECTION.UNSET
70247 . 70563)) (70566 73705 (TEDIT.RESET.EXTEND.PENDING.DELETE 70576 . 71413) (\TEDIT.SET.SEL.LOOKS
71415 . 73703)) (73706 95087 (\SHOWSEL 73716 . 77434) (\TEDIT.SHOWSEL.HILIGHT 77436 . 80949) (
\TEDIT.UPDATE.SHOWSEL 80951 . 87264) (\TEDIT.REFRESH.SHOWSEL 87266 . 89502) (\TEDIT.UPDATE.SEL 89504
. 92626) (\TEDIT.SEL.L1 92628 . 92916) (\TEDIT.SEL.LN 92918 . 93206) (\TEDIT.SEL.DELETEDCHARS 93208
. 95085)) (95088 98176 (\COPYSEL 95098 . 96786) (\TEDIT.SEL.CHANGED? 96788 . 98174)) (98229 108797 (
TEDIT.GETPOINT 98239 . 99188) (TEDIT.GETSEL 99190 . 99510) (TEDIT.GETSEL.PARA 99512 . 100461) (
TEDIT.MAKESEL 100463 . 101445) (TEDIT.SCANSEL 101447 . 102121) (TEDIT.SET.SEL.LOOKS 102123 . 103004) (
TEDIT.SETSEL 103006 . 107972) (TEDIT.SHOWSEL 107974 . 108795)) (108825 125578 (\SELPIECES 108835 .
111812) (\SELPIECES.COPY 111814 . 113683) (\SELPIECES.CONCAT 113685 . 115558) (
\SELPIECES.CHARTRANSFORM 115560 . 118580) (\SELPIECES.FROM.STRING 118582 . 123497) (
\SELPIECES.TO.STRING 123499 . 125576)))))
(FILEMAP (NIL (12825 14690 (\TEDIT.SELECTION.DEFPRINT 12835 . 14688)) (14691 15812 (
\TEDIT.SET.GLOBAL.SELECTIONS 14701 . 15810)) (15849 24084 (TEDIT.SEL.AS.STRING 15859 . 17446) (
TEDIT.SEL.AS.SEXPR 17448 . 18434) (TEDIT.SELECTALL 18436 . 18766) (TEDIT.SELECTED.PIECES 18768 . 20112
) (\TEDIT.FIND.PROTECTED.END 20114 . 21603) (\TEDIT.FIND.PROTECTED.START 21605 . 23419) (
\TEDIT.WORD.BOUND 23421 . 24082)) (24218 55682 (\TEDIT.EXTEND.SEL 24228 . 31204) (\TEDIT.SELECT 31206
. 32588) (\TEDIT.SCAN.LINE 32590 . 40591) (\TEDIT.SCAN.LINE.WORD 40593 . 44713) (
\TEDIT.SELECT.LINE.SCANNER 44715 . 51764) (\TEDIT.SELECT.OBJECT 51766 . 55680)) (55683 70577 (\FIXSEL
55693 . 66215) (\TEDIT.CHTOX 66217 . 69204) (\TEDIT.COLLECTSELS 69206 . 70257) (\TEDIT.SELECTION.UNSET
70259 . 70575)) (70578 73717 (TEDIT.RESET.EXTEND.PENDING.DELETE 70588 . 71425) (\TEDIT.SET.SEL.LOOKS
71427 . 73715)) (73718 95099 (\SHOWSEL 73728 . 77446) (\TEDIT.SHOWSEL.HILIGHT 77448 . 80961) (
\TEDIT.UPDATE.SHOWSEL 80963 . 87276) (\TEDIT.REFRESH.SHOWSEL 87278 . 89514) (\TEDIT.UPDATE.SEL 89516
. 92638) (\TEDIT.SEL.L1 92640 . 92928) (\TEDIT.SEL.LN 92930 . 93218) (\TEDIT.SEL.DELETEDCHARS 93220
. 95097)) (95100 98188 (\COPYSEL 95110 . 96798) (\TEDIT.SEL.CHANGED? 96800 . 98186)) (98241 109962 (
TEDIT.XYTOCH 98251 . 99402) (TEDIT.GETPOINT 99404 . 100353) (TEDIT.GETSEL 100355 . 100675) (
TEDIT.GETSEL.PARA 100677 . 101626) (TEDIT.MAKESEL 101628 . 102610) (TEDIT.SCANSEL 102612 . 103286) (
TEDIT.SET.SEL.LOOKS 103288 . 104169) (TEDIT.SETSEL 104171 . 109137) (TEDIT.SHOWSEL 109139 . 109960)) (
109990 126859 (\SELPIECES 110000 . 113093) (\SELPIECES.COPY 113095 . 114964) (\SELPIECES.CONCAT 114966
. 116839) (\SELPIECES.CHARTRANSFORM 116841 . 119861) (\SELPIECES.FROM.STRING 119863 . 124778) (
\SELPIECES.TO.STRING 124780 . 126857)))))
STOP

Binary file not shown.

View File

@@ -1,12 +1,14 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "17-Mar-2024 23:43:56" {DSK}<home>frank>il>ncmedley>library>tedit>TEDIT-WINDOW.;7 195743
(FILECREATED "21-Mar-2024 21:48:49" 
{DSK}<Users>kaplan>Local>medley3.5>git-medley>library>tedit>TEDIT-WINDOW.;69 195813
:CHANGES-TO (VARS TEDIT-WINDOWCOMS)
(FNS TEDIT.PROMPTWINDOW)
:EDIT-BY rmk
:PREVIOUS-DATE " 4-Mar-2024 15:15:31" {DSK}<home>frank>il>ncmedley>library>tedit>TEDIT-WINDOW.;6
)
:CHANGES-TO (FNS TEDIT.NORMALIZECARET)
:PREVIOUS-DATE "17-Mar-2024 23:43:56"
{DSK}<Users>kaplan>Local>medley3.5>git-medley>library>tedit>TEDIT-WINDOW.;68)
(PRETTYCOMPRINT TEDIT-WINDOWCOMS)
@@ -2773,7 +2775,8 @@
(DSPYPOSITION Y (ffetch (TEDITCARET TCCARETDS) of CARET)))])
(TEDIT.NORMALIZECARET
[LAMBDA (TEXTOBJ SEL EVEN.IF.VISIBLE) (* ; "Edited 21-Feb-2024 20:43 by rmk")
[LAMBDA (TEXTOBJ SEL EVEN.IF.VISIBLE) (* ; "Edited 21-Mar-2024 21:48 by rmk")
(* ; "Edited 21-Feb-2024 20:43 by rmk")
(* ; "Edited 18-Feb-2024 23:35 by rmk")
(* ; "Edited 2-Jan-2024 11:09 by rmk")
(* ; "Edited 20-Nov-2023 14:22 by rmk")
@@ -2828,8 +2831,7 @@
(* ;; "Not visible, work to do: Make sure the line containing CH# is linked in and scrolled to the top of the pane. This should be replaceable by \TEDIT.SCROLLFN, with the appropriate DY.")
(\SHOWSEL SEL NIL SELPANE)
(SETQ TOPLINE (CADR (\FORMATBLOCK TEXTOBJ (SUB1 CH#)
PHEIGHT)))
(SETQ TOPLINE (CADR (\FORMATBLOCK TEXTOBJ CH# PHEIGHT)))
(SETYPOS TOPLINE (IDIFFERENCE PHEIGHT (GETLD TOPLINE LHEIGHT)))
(LINKLD (fetch (TEXTWINDOW PLINES) of SELPANE)
TOPLINE)
@@ -3173,34 +3175,34 @@
(RPAQ? TEDIT.TITLED.ICON.TEMPLATE (create TITLEDICON ICON _ TEDITICON MASK _ TEDITMASK TITLEREG _
TEDIT.ICON.TITLE.REGION))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (13015 32591 (\TEDIT.CREATEW 13025 . 19400) (\TEDIT.WINDOW.SETUP 19402 . 22091) (
\TEDIT.MINIMAL.WINDOW.SETUP 22093 . 30514) (\TEDIT.ADD.CARET 30516 . 31980) (\TEDIT.CLEARPANE 31982 .
32589)) (32592 53648 (\TEDIT.CURSORMOVEDFN 32602 . 36410) (\TEDIT.CURSOROUTFN 36412 . 36857) (
\TEDIT.ACTIVE.WINDOWP 36859 . 37985) (\TEDIT.EXPANDFN 37987 . 38550) (\TEDIT.MAINW 38552 . 40692) (
\TEDIT.PRIMARYW 40694 . 41334) (\TEDIT.NEWREGIONFN 41336 . 43852) (\TEDIT.SET.WINDOW.EXTENT 43854 .
48717) (\TEDIT.SHRINK.ICONCREATE 48719 . 51142) (\TEDIT.SHRINKFN 51144 . 51553) (\TEDIT.PANEREGION
51555 . 53646)) (53649 77414 (\TEDIT.BUTTONEVENTFN 53659 . 68714) (\TEDIT.DO.SELOPERATION 68716 .
70998) (\TEDIT.TTY.TEXTOBJP 71000 . 71424) (\TEDIT.BUTTONEVENTFN.SELOPERATION 71426 . 72815) (
\TEDIT.BUTTONEVENTFN.INACTIVE 72817 . 74843) (\TEDIT.BUTTONEVENTFN.INTITLE 74845 . 76364) (
\TEDIT.COPYINSERT 76366 . 77412)) (77449 92178 (\TEDIT.PANE.SPLIT 77459 . 81679) (\TEDIT.SPLITW 81681
. 88014) (\TEDIT.UNSPLITW 88016 . 92176)) (93534 94319 (TEDITWINDOWP 93544 . 94317)) (94356 97344 (
TEDIT.GETINPUT 94366 . 96809) (\TEDIT.MAKEFILENAME 96811 . 97342)) (97393 105382 (TEDIT.PROMPTWINDOW
97403 . 97740) (TEDIT.PROMPTPRINT 97742 . 100178) (TEDIT.PROMPTCLEAR 100180 . 101899) (
TEDIT.PROMPTFLASH 101901 . 103810) (\TEDIT.PROMPT.PAGEFULLFN 103812 . 105380)) (105620 113499 (
\TEXTSTREAM.TITLE 105630 . 106320) (\TEDIT.DEFAULT.TITLE 106322 . 108701) (\TEDIT.WINDOW.TITLE 108703
. 110760) (\TEXTSTREAM.FILENAME 110762 . 112432) (\TEDIT.UPDATE.TITLE 112434 . 113497)) (113542
128583 (TEDIT.DEACTIVATE.WINDOW 113552 . 119974) (\TEDIT.REPAINTFN 119976 . 121551) (
\TEDIT.AFTERMOVEFN 121553 . 122307) (OFFSCREENP 122309 . 123514) (\TEDIT.RESHAPEFN 123516 . 127405) (
\TEDIT.PANEWITHINSCREEN? 127407 . 128581)) (128584 156217 (\TEDIT.SCROLLFN 128594 . 130281) (
\TEDIT.SCROLLFLOAT 130283 . 134869) (\TEDIT.SCROLLUP 134871 . 142247) (\TEDIT.SCROLL.SHOWSEL 142249 .
144873) (\TEDIT.SCROLLDOWN 144875 . 150091) (\TEDIT.OFFSCREEN.SCROLL 150093 . 152208) (
\TEDIT.WHERE.SEL 152210 . 153430) (\TEDIT.WHERE.SEL1 153432 . 156215)) (156218 161340 (\TEDIT.ONSCREEN
156228 . 157683) (\TEDIT.ONSCREEN? 157685 . 159998) (\TEDIT.PANE.SCREENREGION 160000 . 161338)) (
161382 163627 (\TEDIT.PROCIDLEFN 161392 . 162801) (\TEDIT.PROCENTRYFN 162803 . 163248) (
\TEDIT.PROCEXITFN 163250 . 163625)) (163706 176433 (\TEDIT.DOWNCARET 163716 . 164509) (
\TEDIT.FLASHCARET 164511 . 166328) (\TEDIT.UPCARET 166330 . 167434) (TEDIT.NORMALIZECARET 167436 .
172164) (\TEDIT.SETCARET 172166 . 176006) (\TEDIT.CARET 176008 . 176431)) (176467 189713 (
TEDIT.ADD.MENUITEM 176477 . 178768) (TEDIT.DEFAULT.MENUFN 178770 . 187053) (TEDIT.REMOVE.MENUITEM
187055 . 188052) (\TEDIT.CREATEMENU 188054 . 188491) (\TEDIT.MENU.WHENHELDFN 188493 . 189398) (
\TEDIT.MENU.WHENSELECTEDFN 189400 . 189711)))))
(FILEMAP (NIL (13032 32608 (\TEDIT.CREATEW 13042 . 19417) (\TEDIT.WINDOW.SETUP 19419 . 22108) (
\TEDIT.MINIMAL.WINDOW.SETUP 22110 . 30531) (\TEDIT.ADD.CARET 30533 . 31997) (\TEDIT.CLEARPANE 31999 .
32606)) (32609 53665 (\TEDIT.CURSORMOVEDFN 32619 . 36427) (\TEDIT.CURSOROUTFN 36429 . 36874) (
\TEDIT.ACTIVE.WINDOWP 36876 . 38002) (\TEDIT.EXPANDFN 38004 . 38567) (\TEDIT.MAINW 38569 . 40709) (
\TEDIT.PRIMARYW 40711 . 41351) (\TEDIT.NEWREGIONFN 41353 . 43869) (\TEDIT.SET.WINDOW.EXTENT 43871 .
48734) (\TEDIT.SHRINK.ICONCREATE 48736 . 51159) (\TEDIT.SHRINKFN 51161 . 51570) (\TEDIT.PANEREGION
51572 . 53663)) (53666 77431 (\TEDIT.BUTTONEVENTFN 53676 . 68731) (\TEDIT.DO.SELOPERATION 68733 .
71015) (\TEDIT.TTY.TEXTOBJP 71017 . 71441) (\TEDIT.BUTTONEVENTFN.SELOPERATION 71443 . 72832) (
\TEDIT.BUTTONEVENTFN.INACTIVE 72834 . 74860) (\TEDIT.BUTTONEVENTFN.INTITLE 74862 . 76381) (
\TEDIT.COPYINSERT 76383 . 77429)) (77466 92195 (\TEDIT.PANE.SPLIT 77476 . 81696) (\TEDIT.SPLITW 81698
. 88031) (\TEDIT.UNSPLITW 88033 . 92193)) (93551 94336 (TEDITWINDOWP 93561 . 94334)) (94373 97361 (
TEDIT.GETINPUT 94383 . 96826) (\TEDIT.MAKEFILENAME 96828 . 97359)) (97410 105399 (TEDIT.PROMPTWINDOW
97420 . 97757) (TEDIT.PROMPTPRINT 97759 . 100195) (TEDIT.PROMPTCLEAR 100197 . 101916) (
TEDIT.PROMPTFLASH 101918 . 103827) (\TEDIT.PROMPT.PAGEFULLFN 103829 . 105397)) (105637 113516 (
\TEXTSTREAM.TITLE 105647 . 106337) (\TEDIT.DEFAULT.TITLE 106339 . 108718) (\TEDIT.WINDOW.TITLE 108720
. 110777) (\TEXTSTREAM.FILENAME 110779 . 112449) (\TEDIT.UPDATE.TITLE 112451 . 113514)) (113559
128600 (TEDIT.DEACTIVATE.WINDOW 113569 . 119991) (\TEDIT.REPAINTFN 119993 . 121568) (
\TEDIT.AFTERMOVEFN 121570 . 122324) (OFFSCREENP 122326 . 123531) (\TEDIT.RESHAPEFN 123533 . 127422) (
\TEDIT.PANEWITHINSCREEN? 127424 . 128598)) (128601 156234 (\TEDIT.SCROLLFN 128611 . 130298) (
\TEDIT.SCROLLFLOAT 130300 . 134886) (\TEDIT.SCROLLUP 134888 . 142264) (\TEDIT.SCROLL.SHOWSEL 142266 .
144890) (\TEDIT.SCROLLDOWN 144892 . 150108) (\TEDIT.OFFSCREEN.SCROLL 150110 . 152225) (
\TEDIT.WHERE.SEL 152227 . 153447) (\TEDIT.WHERE.SEL1 153449 . 156232)) (156235 161357 (\TEDIT.ONSCREEN
156245 . 157700) (\TEDIT.ONSCREEN? 157702 . 160015) (\TEDIT.PANE.SCREENREGION 160017 . 161355)) (
161399 163644 (\TEDIT.PROCIDLEFN 161409 . 162818) (\TEDIT.PROCENTRYFN 162820 . 163265) (
\TEDIT.PROCEXITFN 163267 . 163642)) (163723 176503 (\TEDIT.DOWNCARET 163733 . 164526) (
\TEDIT.FLASHCARET 164528 . 166345) (\TEDIT.UPCARET 166347 . 167451) (TEDIT.NORMALIZECARET 167453 .
172234) (\TEDIT.SETCARET 172236 . 176076) (\TEDIT.CARET 176078 . 176501)) (176537 189783 (
TEDIT.ADD.MENUITEM 176547 . 178838) (TEDIT.DEFAULT.MENUFN 178840 . 187123) (TEDIT.REMOVE.MENUITEM
187125 . 188122) (\TEDIT.CREATEMENU 188124 . 188561) (\TEDIT.MENU.WHENHELDFN 188563 . 189468) (
\TEDIT.MENU.WHENSELECTEDFN 189470 . 189781)))))
STOP

Binary file not shown.

View File

@@ -1,18 +1,74 @@
(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP" BASE 10)
(FILECREATED "26-Oct-89 14:30:27" {ICE}<KOOMEN>LISPUSERS>MEDLEY>BUTTONS.;2 28959
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
changes to%: (VARS BUTTONSCOMS) (FNS MOVE-BUTTON \BUTTONS-DRAW-BOX \BUTTONS-TRACK-MOUSE EDIT-BUTTON-CONTENTS)
(FILECREATED "18-Mar-2024 19:08:55" {LU}BUTTONS.;2 30183
previous date%: " 2-Dec-88 17:17:47" {ICE}<KOOMEN>LISPUSERS>KOTO>BUTTONS.;1)
:EDIT-BY "mth"
:CHANGES-TO (FNS \BUTTONS-EDITE)
:PREVIOUS-DATE "26-Oct-89 14:30:27" {LU}BUTTONS.;1)
(* "
Copyright (c) 1986, 1987, 1988, 1989 by Xerox Corporation. All rights reserved.
(* ; "
Copyright (c) 1986-1989, 2024 by Xerox Corporation.
")
(PRETTYCOMPRINT BUTTONSCOMS)
(RPAQQ BUTTONSCOMS ((* ;;; "BUTTONS provides a mechanism for mapping mouse clicks to actions via mouse-sensitive pictures of buttons. Each button has a label and an action, which is an arbitrary Lisp form. If the left mouse button is clicked on a button, its associated action is executed. If the action is a string it is stuffed into the system buffer and read by the current tty process; otherwise it is evaluated under the mouse process.") (* ;;; "USER INTERFACE") (RECORDS BUTTON) (FNS ALIGN-BUTTONS BUTTONP BUTTONSPROP BUTTON-ACTION BUTTON-LABEL CLOSE-BUTTON CLOSE-BUTTONS COPY-BUTTON CREATE-BUTTON DELETE-BUTTON DELETE-BUTTONS EDIT-BUTTON EDIT-BUTTON-CONTENTS EXECUTE-BUTTON EXPOSE-BUTTONS LOAD-SOME-BUTTONS MOVE-BUTTON REDISPLAY-BUTTON RESTORE-BUTTONS SAVE-BUTTONS SAVE-SOME-BUTTONS) (PROP ARGNAMES BUTTONSPROP BUTTON-ACTION BUTTON-LABEL) (* ;;; "IMPLEMENTATION") (PROP MAKEFILE-ENVIRONMENT BUTTONS) (VARS *BUTTONS-DATAVERSION* *DEFAULT-BUTTONPROPS*) (INITVARS (*BUTTONPROPS* (COPYALL *DEFAULT-BUTTONPROPS*)) (*ALL-BUTTONS* NIL) (*BUTTONS-DEFAULT-ACTION* NIL) (*BUTTONS-DEFAULT-LABEL* NIL) (*BUTTONS-EDIT-MENU* NIL) (*BUTTONS-EDIT-SHADE* NIL) (*BUTTONS-EXEC-SHADE* NIL) (*BUTTONS-GRID-ORIGIN* NIL) (*BUTTONS-LABEL-FONT* NIL) (*BUTTONS-MENU-FONT* NIL) (*BUTTONS-SAVE-DIRECTORY* NIL)) (FNS \BUTTONS-BUTTONEVENTFN \BUTTONS-DATAFILE-NAME \BUTTONS-CHANGE-LABEL \BUTTONS-CREATE-ICON \BUTTONS-DRAW-BOX \BUTTONS-EDITE \BUTTONS-EDIT-MENU \BUTTONS-INIT \BUTTONS-IO-EXIT \BUTTONS-OPEN-STREAM \BUTTONS-PROMPT-FOR-DATAFILE-NAME \BUTTONS-READ \BUTTONS-SETPROP \BUTTONS-SHOW \BUTTONS-SHOW-EXEC \BUTTONS-TRACK-MOUSE \BUTTONS-WAIT-MOUSE) (COMS (* The button icon) (FILES (SYSLOAD FROM LISPUSERS) ICONW) (FNS DROPSHADOW ICONMASK CLEAR-MASK-OUTLINE) (BITMAPS *BUTTON-BITMAP*) (INITVARS (*BUTTON-INVERT-REGION* (QUOTE (6 10 85 25))) (*BUTTON-CLIPPING-REGION* (QUOTE (7 11 83 23))) (*BUTTON-ICON* (DROPSHADOW *BUTTON-BITMAP*)) (*BUTTON-ICON-MASK* (ICONMASK *BUTTON-ICON*)))) (ADDVARS (BackgroundMenuCommands ("Button Control" (QUOTE (EDIT-BUTTON)) "Manipulate action buttons"))) (VARS (BackgroundMenu)) (P (\BUTTONS-INIT)) (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA) (NLAML) (LAMA BUTTON-LABEL BUTTON-ACTION BUTTONSPROP)))))
(RPAQQ BUTTONSCOMS
[
(* ;;; "BUTTONS provides a mechanism for mapping mouse clicks to actions via mouse-sensitive pictures of buttons. Each button has a label and an action, which is an arbitrary Lisp form. If the left mouse button is clicked on a button, its associated action is executed. If the action is a string it is stuffed into the system buffer and read by the current tty process; otherwise it is evaluated under the mouse process.")
(* ;;; "USER INTERFACE")
(RECORDS BUTTON)
(FNS ALIGN-BUTTONS BUTTONP BUTTONSPROP BUTTON-ACTION BUTTON-LABEL CLOSE-BUTTON CLOSE-BUTTONS
COPY-BUTTON CREATE-BUTTON DELETE-BUTTON DELETE-BUTTONS EDIT-BUTTON EDIT-BUTTON-CONTENTS
EXECUTE-BUTTON EXPOSE-BUTTONS LOAD-SOME-BUTTONS MOVE-BUTTON REDISPLAY-BUTTON
RESTORE-BUTTONS SAVE-BUTTONS SAVE-SOME-BUTTONS)
(PROP ARGNAMES BUTTONSPROP BUTTON-ACTION BUTTON-LABEL)
(* ;;; "IMPLEMENTATION")
(PROP MAKEFILE-ENVIRONMENT BUTTONS)
(VARS *BUTTONS-DATAVERSION* *DEFAULT-BUTTONPROPS*)
(INITVARS (*BUTTONPROPS* (COPYALL *DEFAULT-BUTTONPROPS*))
(*ALL-BUTTONS* NIL)
(*BUTTONS-DEFAULT-ACTION* NIL)
(*BUTTONS-DEFAULT-LABEL* NIL)
(*BUTTONS-EDIT-MENU* NIL)
(*BUTTONS-EDIT-SHADE* NIL)
(*BUTTONS-EXEC-SHADE* NIL)
(*BUTTONS-GRID-ORIGIN* NIL)
(*BUTTONS-LABEL-FONT* NIL)
(*BUTTONS-MENU-FONT* NIL)
(*BUTTONS-SAVE-DIRECTORY* NIL))
(FNS \BUTTONS-BUTTONEVENTFN \BUTTONS-DATAFILE-NAME \BUTTONS-CHANGE-LABEL \BUTTONS-CREATE-ICON
\BUTTONS-DRAW-BOX \BUTTONS-EDITE \BUTTONS-EDIT-MENU \BUTTONS-INIT \BUTTONS-IO-EXIT
\BUTTONS-OPEN-STREAM \BUTTONS-PROMPT-FOR-DATAFILE-NAME \BUTTONS-READ \BUTTONS-SETPROP
\BUTTONS-SHOW \BUTTONS-SHOW-EXEC \BUTTONS-TRACK-MOUSE \BUTTONS-WAIT-MOUSE)
[COMS (* The button icon)
(FILES (SYSLOAD FROM LISPUSERS)
ICONW)
(FNS DROPSHADOW ICONMASK CLEAR-MASK-OUTLINE)
(BITMAPS *BUTTON-BITMAP*)
(INITVARS (*BUTTON-INVERT-REGION* '(6 10 85 25))
(*BUTTON-CLIPPING-REGION* '(7 11 83 23))
(*BUTTON-ICON* (DROPSHADOW *BUTTON-BITMAP*))
(*BUTTON-ICON-MASK* (ICONMASK *BUTTON-ICON*]
(ADDVARS (BackgroundMenuCommands ("Button Control" '(EDIT-BUTTON)
"Manipulate action buttons")))
(VARS (BackgroundMenu))
(P (\BUTTONS-INIT))
(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA)
(NLAML)
(LAMA BUTTON-LABEL
BUTTON-ACTION
BUTTONSPROP])
@@ -27,8 +83,12 @@ Copyright (c) 1986, 1987, 1988, 1989 by Xerox Corporation. All rights reserved.
(DECLARE%: EVAL@COMPILE
(ACCESSFNS BUTTON ((LABEL (WINDOWPROP DATUM (QUOTE BUTTON-LABEL)) (WINDOWPROP DATUM (QUOTE BUTTON-LABEL) NEWVALUE)) (ACTION (WINDOWPROP DATUM (QUOTE BUTTON-ACTION)) (WINDOWPROP DATUM (QUOTE BUTTON-ACTION) NEWVALUE)) (EXECUTING? (WINDOWPROP DATUM (QUOTE BUTTON-EXECUTING?)) (WINDOWPROP DATUM (QUOTE BUTTON-EXECUTING?) NEWVALUE)))
)
(ACCESSFNS BUTTON ((LABEL (WINDOWPROP DATUM 'BUTTON-LABEL)
(WINDOWPROP DATUM 'BUTTON-LABEL NEWVALUE))
(ACTION (WINDOWPROP DATUM 'BUTTON-ACTION)
(WINDOWPROP DATUM 'BUTTON-ACTION NEWVALUE))
(EXECUTING? (WINDOWPROP DATUM 'BUTTON-EXECUTING?)
(WINDOWPROP DATUM 'BUTTON-EXECUTING? NEWVALUE))))
)
(DEFINEQ
@@ -116,44 +176,52 @@ Copyright (c) 1986, 1987, 1988, 1989 by Xerox Corporation. All rights reserved.
)
)
(PUTPROPS BUTTONSPROP ARGNAMES (PROPNAME {NEWVALUE}))
(PUTPROPS BUTTONSPROP ARGNAMES (PROPNAME {NEWVALUE}))
(PUTPROPS BUTTON-ACTION ARGNAMES (BUTTON {NEWACTION}))
(PUTPROPS BUTTON-ACTION ARGNAMES (BUTTON {NEWACTION}))
(PUTPROPS BUTTON-LABEL ARGNAMES (BUTTON {NEWLABEL}))
(PUTPROPS BUTTON-LABEL ARGNAMES (BUTTON {NEWLABEL}))
(* ;;; "IMPLEMENTATION")
(PUTPROPS BUTTONS MAKEFILE-ENVIRONMENT (:READTABLE "INTERLISP" :PACKAGE "INTERLISP" :BASE 10))
(PUTPROPS BUTTONS MAKEFILE-ENVIRONMENT (:READTABLE "INTERLISP" :PACKAGE "INTERLISP" :BASE 10))
(RPAQQ *BUTTONS-DATAVERSION* 3)
(RPAQQ *BUTTONS-DATAVERSION* 3)
(RPAQQ *DEFAULT-BUTTONPROPS* (*BUTTONPROPS* (GRID-ORIGIN (15 . 15)) (DEFAULT-LABEL "Create Button") (DEFAULT-ACTION (CREATE-BUTTON)) (MENU-FONT (MODERN 12 BOLD)) (LABEL-FONT (MODERN 10 BOLD)) (SAVE-DIRECTORY NIL) (EDIT-SHADE 4104) (EXEC-SHADE 65535)))
(RPAQQ *DEFAULT-BUTTONPROPS*
(*BUTTONPROPS* (GRID-ORIGIN (15 . 15))
(DEFAULT-LABEL "Create Button")
(DEFAULT-ACTION (CREATE-BUTTON))
(MENU-FONT (MODERN 12 BOLD))
(LABEL-FONT (MODERN 10 BOLD))
(SAVE-DIRECTORY NIL)
(EDIT-SHADE 4104)
(EXEC-SHADE 65535)))
(RPAQ? *BUTTONPROPS* (COPYALL *DEFAULT-BUTTONPROPS*))
(RPAQ? *BUTTONPROPS* (COPYALL *DEFAULT-BUTTONPROPS*))
(RPAQ? *ALL-BUTTONS* NIL)
(RPAQ? *ALL-BUTTONS* NIL)
(RPAQ? *BUTTONS-DEFAULT-ACTION* NIL)
(RPAQ? *BUTTONS-DEFAULT-ACTION* NIL)
(RPAQ? *BUTTONS-DEFAULT-LABEL* NIL)
(RPAQ? *BUTTONS-DEFAULT-LABEL* NIL)
(RPAQ? *BUTTONS-EDIT-MENU* NIL)
(RPAQ? *BUTTONS-EDIT-MENU* NIL)
(RPAQ? *BUTTONS-EDIT-SHADE* NIL)
(RPAQ? *BUTTONS-EDIT-SHADE* NIL)
(RPAQ? *BUTTONS-EXEC-SHADE* NIL)
(RPAQ? *BUTTONS-EXEC-SHADE* NIL)
(RPAQ? *BUTTONS-GRID-ORIGIN* NIL)
(RPAQ? *BUTTONS-GRID-ORIGIN* NIL)
(RPAQ? *BUTTONS-LABEL-FONT* NIL)
(RPAQ? *BUTTONS-LABEL-FONT* NIL)
(RPAQ? *BUTTONS-MENU-FONT* NIL)
(RPAQ? *BUTTONS-MENU-FONT* NIL)
(RPAQ? *BUTTONS-SAVE-DIRECTORY* NIL)
(RPAQ? *BUTTONS-SAVE-DIRECTORY* NIL)
(DEFINEQ
(\BUTTONS-BUTTONEVENTFN
@@ -177,8 +245,11 @@ Copyright (c) 1986, 1987, 1988, 1989 by Xerox Corporation. All rights reserved.
)
(\BUTTONS-EDITE
(LAMBDA (FORM) (* edited%: "18-Mar-87 22:39") (ALLOW.BUTTON.EVENTS) (EVAL.IN.TTY.PROCESS (BQUOTE (CAR (NLSETQ (EDITE (\, (KWOTE FORM)))))) T))
)
[LAMBDA (FORM) (* ; "Edited 18-Mar-2024 18:19 by mth")
(* edited%: "18-Mar-87 22:39")
(ALLOW.BUTTON.EVENTS)
(EVAL.AS.PROCESS `[CAR (NLSETQ (EDITE ,(KWOTE FORM]
T])
(\BUTTONS-EDIT-MENU
(LAMBDA NIL (* Koomen " 2-Dec-88 14:50") (DECLARE (GLOBALVARS *BUTTONS-EDIT-MENU* *BUTTONS-MENU-FONT*)) (* * If adding/changing menu entries, do (SETQ *BUTTONS-EDIT-MENU*)) (OR *BUTTONS-EDIT-MENU* (SETQ *BUTTONS-EDIT-MENU* (create MENU TITLE _ "Button Control" ITEMS _ (QUOTE (("Redisplay" (QUOTE REDISPLAY-BUTTON) "Redisplay the button") ("Move" (QUOTE MOVE-BUTTON) "Move the button") ("Copy" (QUOTE COPY-BUTTON) "Create a copy of the button") ("Edit" (QUOTE EDIT-BUTTON-CONTENTS) "Edit the label and the action of the button") ("" NIL "Does nothing") ("Close" (QUOTE CLOSE-BUTTON) "Close the button" (SUBITEMS ("Close All Buttons" (QUOTE CLOSE-BUTTONS)))) ("Delete" (QUOTE DELETE-BUTTON) "Delete this button" (SUBITEMS ("Delete All Buttons" (QUOTE DELETE-BUTTONS)))) ("" NIL "Does nothing") ("Create Button" (QUOTE CREATE-BUTTON) "Create a new button") ("" NIL "Does nothing") ("Expose Buttons" (QUOTE EXPOSE-BUTTONS) "Bring all buttons to the top") ("Align Buttons" (QUOTE ALIGN-BUTTONS) "Align one or more buttons with this button") ("" NIL "Does nothing") ("Save Buttons" (QUOTE SAVE-BUTTONS) "Save all current buttons in default datafile" (SUBITEMS ("Save Some Buttons" (QUOTE SAVE-SOME-BUTTONS) "Save some buttons in some datafile"))) ("Restore Buttons" (QUOTE RESTORE-BUTTONS) "Throw away current buttons, then restore saved buttons from default datafile" (SUBITEMS ("Load Some Buttons" (QUOTE LOAD-SOME-BUTTONS) "Load some buttons from some datafile"))))) MENUFONT _ *BUTTONS-MENU-FONT* MENUOUTLINESIZE _ 1 CENTERFLG _ T CHANGEOFFSETFLG _ (QUOTE Y) MENUOFFSET _ (QUOTE (-1 . 0))))))
@@ -231,7 +302,8 @@ Copyright (c) 1986, 1987, 1988, 1989 by Xerox Corporation. All rights reserved.
(* The button icon)
(FILESLOAD (SYSLOAD FROM LISPUSERS) ICONW)
(FILESLOAD (SYSLOAD FROM LISPUSERS)
ICONW)
(DEFINEQ
(DROPSHADOW
@@ -247,43 +319,45 @@ Copyright (c) 1986, 1987, 1988, 1989 by Xerox Corporation. All rights reserved.
)
)
(RPAQQ *BUTTON-BITMAP* #*(97 37)@OOOOOOOOOOOOOOOOOOOOOOH@@@@COOOOOOOOOOOOOOOOOOOOOON@@@@G@@@@@@@@@@@@@@@@@@@@@@G@@@@F@@@@@@@@@@@@@@@@@@@@@@C@@@@LGOOOOOOOOOOOOOOOOOOOOOAH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LGOOOOOOOOOOOOOOOOOOOOOAH@@@F@@@@@@@@@@@@@@@@@@@@@@C@@@@G@@@@@@@@@@@@@@@@@@@@@@G@@@@COOOOOOOOOOOOOOOOOOOOOON@@@@@OOOOOOOOOOOOOOOOOOOOOOH@@@@)
(RPAQQ *BUTTON-BITMAP* #*(97 37)@OOOOOOOOOOOOOOOOOOOOOOH@@@@COOOOOOOOOOOOOOOOOOOOOON@@@@G@@@@@@@@@@@@@@@@@@@@@@G@@@@F@@@@@@@@@@@@@@@@@@@@@@C@@@@LGOOOOOOOOOOOOOOOOOOOOOAH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LH@@@@@@@@@@@@@@@@@@@@@IH@@@LGOOOOOOOOOOOOOOOOOOOOOAH@@@F@@@@@@@@@@@@@@@@@@@@@@C@@@@G@@@@@@@@@@@@@@@@@@@@@@G@@@@COOOOOOOOOOOOOOOOOOOOOON@@@@@OOOOOOOOOOOOOOOOOOOOOOH@@@@
)
(RPAQ? *BUTTON-INVERT-REGION* (QUOTE (6 10 85 25)))
(RPAQ? *BUTTON-INVERT-REGION* '(6 10 85 25))
(RPAQ? *BUTTON-CLIPPING-REGION* (QUOTE (7 11 83 23)))
(RPAQ? *BUTTON-CLIPPING-REGION* '(7 11 83 23))
(RPAQ? *BUTTON-ICON* (DROPSHADOW *BUTTON-BITMAP*))
(RPAQ? *BUTTON-ICON* (DROPSHADOW *BUTTON-BITMAP*))
(RPAQ? *BUTTON-ICON-MASK* (ICONMASK *BUTTON-ICON*))
(RPAQ? *BUTTON-ICON-MASK* (ICONMASK *BUTTON-ICON*))
(ADDTOVAR BackgroundMenuCommands ("Button Control" (QUOTE (EDIT-BUTTON)) "Manipulate action buttons"))
(ADDTOVAR BackgroundMenuCommands ("Button Control" '(EDIT-BUTTON)
"Manipulate action buttons"))
(RPAQQ BackgroundMenu NIL)
(RPAQQ BackgroundMenu NIL)
(\BUTTONS-INIT)
(\BUTTONS-INIT)
(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS
(ADDTOVAR NLAMA)
(ADDTOVAR NLAMA )
(ADDTOVAR NLAML)
(ADDTOVAR NLAML )
(ADDTOVAR LAMA BUTTON-LABEL BUTTON-ACTION BUTTONSPROP)
(ADDTOVAR LAMA BUTTON-LABEL BUTTON-ACTION BUTTONSPROP)
)
(PUTPROPS BUTTONS COPYRIGHT ("Xerox Corporation" 1986 1987 1988 1989))
(PUTPROPS BUTTONS COPYRIGHT ("Xerox Corporation" 1986 1987 1988 1989 2024))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (3565 14600 (ALIGN-BUTTONS 3575 . 4350) (BUTTONP 4352 . 4557) (BUTTONSPROP 4559 . 5104)
(BUTTON-ACTION 5106 . 5470) (BUTTON-LABEL 5472 . 5881) (CLOSE-BUTTON 5883 . 5993) (CLOSE-BUTTONS 5995
. 6176) (COPY-BUTTON 6178 . 6399) (CREATE-BUTTON 6401 . 7810) (DELETE-BUTTON 7812 . 8013) (
DELETE-BUTTONS 8015 . 8209) (EDIT-BUTTON 8211 . 8946) (EDIT-BUTTON-CONTENTS 8948 . 9580) (
EXECUTE-BUTTON 9582 . 9998) (EXPOSE-BUTTONS 10000 . 10186) (LOAD-SOME-BUTTONS 10188 . 10524) (
MOVE-BUTTON 10526 . 11489) (REDISPLAY-BUTTON 11491 . 11751) (RESTORE-BUTTONS 11753 . 12582) (
SAVE-BUTTONS 12584 . 13332) (SAVE-SOME-BUTTONS 13334 . 14598)) (15579 25703 (\BUTTONS-BUTTONEVENTFN
15589 . 15972) (\BUTTONS-DATAFILE-NAME 15974 . 16670) (\BUTTONS-CHANGE-LABEL 16672 . 16929) (
\BUTTONS-CREATE-ICON 16931 . 17818) (\BUTTONS-DRAW-BOX 17820 . 17994) (\BUTTONS-EDITE 17996 . 18160) (
\BUTTONS-EDIT-MENU 18162 . 19779) (\BUTTONS-INIT 19781 . 20029) (\BUTTONS-IO-EXIT 20031 . 20257) (
\BUTTONS-OPEN-STREAM 20259 . 20690) (\BUTTONS-PROMPT-FOR-DATAFILE-NAME 20692 . 21045) (\BUTTONS-READ
21047 . 22401) (\BUTTONS-SETPROP 22403 . 23333) (\BUTTONS-SHOW 23335 . 23713) (\BUTTONS-SHOW-EXEC
23715 . 24082) (\BUTTONS-TRACK-MOUSE 24084 . 25358) (\BUTTONS-WAIT-MOUSE 25360 . 25701)) (25776 27275
(DROPSHADOW 25786 . 26685) (ICONMASK 26687 . 26900) (CLEAR-MASK-OUTLINE 26902 . 27273)))))
(FILEMAP (NIL (4365 15400 (ALIGN-BUTTONS 4375 . 5150) (BUTTONP 5152 . 5357) (BUTTONSPROP 5359 . 5904)
(BUTTON-ACTION 5906 . 6270) (BUTTON-LABEL 6272 . 6681) (CLOSE-BUTTON 6683 . 6793) (CLOSE-BUTTONS 6795
. 6976) (COPY-BUTTON 6978 . 7199) (CREATE-BUTTON 7201 . 8610) (DELETE-BUTTON 8612 . 8813) (
DELETE-BUTTONS 8815 . 9009) (EDIT-BUTTON 9011 . 9746) (EDIT-BUTTON-CONTENTS 9748 . 10380) (
EXECUTE-BUTTON 10382 . 10798) (EXPOSE-BUTTONS 10800 . 10986) (LOAD-SOME-BUTTONS 10988 . 11324) (
MOVE-BUTTON 11326 . 12289) (REDISPLAY-BUTTON 12291 . 12551) (RESTORE-BUTTONS 12553 . 13382) (
SAVE-BUTTONS 13384 . 14132) (SAVE-SOME-BUTTONS 14134 . 15398)) (16568 26849 (\BUTTONS-BUTTONEVENTFN
16578 . 16961) (\BUTTONS-DATAFILE-NAME 16963 . 17659) (\BUTTONS-CHANGE-LABEL 17661 . 17918) (
\BUTTONS-CREATE-ICON 17920 . 18807) (\BUTTONS-DRAW-BOX 18809 . 18983) (\BUTTONS-EDITE 18985 . 19306) (
\BUTTONS-EDIT-MENU 19308 . 20925) (\BUTTONS-INIT 20927 . 21175) (\BUTTONS-IO-EXIT 21177 . 21403) (
\BUTTONS-OPEN-STREAM 21405 . 21836) (\BUTTONS-PROMPT-FOR-DATAFILE-NAME 21838 . 22191) (\BUTTONS-READ
22193 . 23547) (\BUTTONS-SETPROP 23549 . 24479) (\BUTTONS-SHOW 24481 . 24859) (\BUTTONS-SHOW-EXEC
24861 . 25228) (\BUTTONS-TRACK-MOUSE 25230 . 26504) (\BUTTONS-WAIT-MOUSE 26506 . 26847)) (26929 28428
(DROPSHADOW 26939 . 27838) (ICONMASK 27840 . 28053) (CLEAR-MASK-OUTLINE 28055 . 28426)))))
STOP

Binary file not shown.

View File

@@ -1,8 +1,23 @@
#!/bin/sh
# cpv file dest
# could extend with -r or copying multiple files
#define ln_or_cp function - try to hardlink and if that fails copy source to dest
ln_or_cp () {
ln_or_cp_src="$1"
ln_or_cp_dest="$2"
ln "$ln_or_cp_src" "$ln_or_cp_dest" >/dev/null 2>&1
if [ $? -eq 0 ]
then
return 0
else
cp -p "$ln_or_cp_src" "$ln_or_cp_dest"
return $?
fi
}
# end of funtion definitions
file="$1"
dest="$2"
@@ -22,11 +37,21 @@ if [ -d "$dest" ]; then
exit 1
fi
# if no such file $dest then just copy
if [ ! -f "$dest" ]; then
cp $file $dest
echo "Added $(basename $dest) to $(dirname $dest)"
exit 0
# if no such file $dest or dest.~[0-9]*~ then just link or copy
# without adding version info
# THEN EXIT
if [ ! -f "$dest" ] && ! ls "$dest".~[0-9]*~ >/dev/null 2>&1
then
ln_or_cp $file $dest
res=$?
if [ $res -eq 0 ]
then
msg_start="Added"
else
msg_start="Error: failed to add"
fi
echo "$msg_start $(basename $dest) to $(dirname $dest)"
exit $res
fi
@@ -56,14 +81,27 @@ else
fi
fi
# make new version and link it
ln $file $dest.~$new~ >/dev/null 2>&1
if [ $? -ne 0 ]
# make new version and link or copy it.
# If link or copy fails, then exit with error code
ln_or_cp $file $dest.~$new~
res=$?
if [ $res -eq 0 ]
then
cp -p $file $dest.~$new~
echo "Added $(basename $dest.~$new~) to $(dirname $dest.~$new~)"
else
echo "Error: failed to add $(basename $dest.~$new~) to $(dirname $dest.~$new~)."
exit $res
fi
echo "Added $(basename $dest.~$new~) to $(dirname $dest.~$new~)"
# hardlink latest version to unversioned filename
rm -f $dest
ln $dest.~$new~ $dest
echo "Linked $(basename $dest) to $(basename $dest.~$new~) in $(dirname $dest)"
if [ $? -eq 0 ]
then
msg_start="Linked"
else
msg_start="Warning: failed to link"
fi
echo "$msg_start $(basename $dest) to $(basename $dest.~$new~) in $(dirname $dest)"
exit 0

View File

@@ -1,17 +1,13 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "19-Jul-2022 23:34:14" 
{DSK}<users>kaplan>local>medley3.5>working-medley>sources>TTYIN.;17 328952
(FILECREATED "29-Feb-2024 10:48:51" {WMEDLEY}<sources>TTYIN.;20 328623
:CHANGES-TO (FNS TTYINREADP)
:EDIT-BY rmk
:PREVIOUS-DATE " 2-Jul-2022 00:09:00"
{DSK}<users>kaplan>local>medley3.5>working-medley>sources>TTYIN.;16)
:CHANGES-TO (FNS TTYIN TTYINPROMPTFORWORD TTUNREADBUF)
:PREVIOUS-DATE "19-Jul-2022 23:34:14" {WMEDLEY}<sources>TTYIN.;17)
(* ; "
Copyright (c) 1982-1988, 1990-1991, 2021 by Venue & Xerox Corporation.
")
(PRETTYCOMPRINT TTYINCOMS)
@@ -135,9 +131,10 @@ Copyright (c) 1982-1988, 1990-1991, 2021 by Venue & Xerox Corporation.
(DEFINEQ
(TTYIN
[LAMBDA (PROMPT SPLST HELP OPTIONS ECHOTOFILE TABS UNREADBUF RDTBL)
[LAMBDA (PROMPT SPLST HELP OPTIONS ECHOTOFILE TABS UNREADBUF RDTBL SINGLELINE)
(* ; "Edited 29-Feb-2024 10:48 by rmk")
(* ; "Edited 24-May-91 10:39 by jds")
(DECLARE (SPECVARS SPLST HELP OPTIONS ECHOTOFILE TABS UNREADBUF RDTBL))
(DECLARE (SPECVARS SPLST HELP OPTIONS ECHOTOFILE TABS UNREADBUF RDTBL SINGLELINE))
(* ;;; "TTYIN is a general input function. See TTYIN.DOC for details on the arguments and use of this fn. TTYIN was designed and implemented by Bill van Melle in the late 1970's at Stanford. ")
@@ -145,6 +142,10 @@ Copyright (c) 1982-1988, 1990-1991, 2021 by Venue & Xerox Corporation.
(* ;;; "The most important terminal at the time was the datamedia. If on a dm, TTYIN puts the terminal in binary mode so it can read the 200q bit supplied by the EDIT key. Most of the cursor-moving commands from TVEDIT are available or slightly modified, and a few extra are supplied as well.")
(* ;;; "")
(* ;;; "RMK: Added SINGLELINE argument. See comment in TTUNREADBUF.")
(* ;;; "The text being typed in is represented as a list of character codes, with a data structure on top of it which partitions it by line. Thus, you can view the text as one string, or broken into lines, depending on the function desired. \BUFFER is the pointer to the start of the buffer, \ENDBUFFER points one past the end. TTYIN saves up cons cells between calls and reuses them; \ENDBUFFER points to this list of free cells. TTYINBUFFER is the master record, which keeps assorted global information about where the cursor is, and saves some state info from one call to the next, enabling the restore previous buffer command. One of the fields points to the LINE records which describe the two-dimensional structure of the input. Each record points to the region of the buffer containing the text for one line, and has fields indicating the first and last columns, and a pointer to the next line record. \ARROW always points to the current LINE record --- \CURSOR points to where in the buffer the cursor appears. --- This representation is not terribly space-efficient for large buffers, but it is easily manipulated, and fast. If there is a particularly long input, there will be many cons cells tied up in TTYINBUFFER, so a good thing to do when trying to free up space is reset TTYINBUFFER to NIL to force its regeneration from scratch.")
(RESETLST
@@ -163,7 +164,7 @@ Copyright (c) 1982-1988, 1990-1991, 2021 by Venue & Xerox Corporation.
\PROMPT2 \PROMPTFORWORD \RDTBLSA \READING \REPEAT \RMARG \STRINGVALUE \TEXTURE
\TTPAGELENGTH \TTYINBUFFERSTREAM VALUE)
(SETQ TTYINBUFFER) (* ;
 "Global resource. Any ttyin calls while we are running need to create their own")
 "Global resource. Any ttyin calls while we are running need to create their own")
[OR (LISTP \TTYINSTATE)
(SETQ \TTYINSTATE (create TTYINBUFFER
FIRSTLINE _ (create LINE
@@ -173,61 +174,54 @@ Copyright (c) 1982-1988, 1990-1991, 2021 by Venue & Xerox Corporation.
((AND SPLST (NLISTP SPLST))
(SETQ SPLST (CONS SPLST]
(for OP inside OPTIONS do (SELECTQ OP
((NOFIXSPELL MUSTAPPROVE CRCOMPLETE)
(SETQ \NOFIXSPELL (SETQ \DONTCOMPLETE OP
((NOFIXSPELL MUSTAPPROVE CRCOMPLETE)
(SETQ \NOFIXSPELL (SETQ \DONTCOMPLETE OP)))
(\NOVALUE (SETQ \NOVALUE OP))
(STRING (SETQ \STRINGVALUE OP))
(COMMAND (SETQ \COMMAND OP))
(REPEAT (SETQ \REPEAT OP))
(NORAISE (SETQ \RAISEINPUT))
(RAISE (SETQ \RAISEINPUT T))
(TEXT (SETQ \REPEAT (SETQ \NOVALUE (SETQ \AUTOFILL OP)))
(SETQ \RAISEINPUT))
(FIX (SETQ \FIX OP))
(READ (SETQ \READING (SETQ \AUTOFILL OP)))
(LISPXREAD [SETQ TYPEAHEAD (SETQ \LISPXREADING
(SETQ \READING (SETQ
\AUTOFILL OP]
(SETQ \RAISEINPUT (fetch RAISEFLG of
\PRIMTERMTABLE
)))
(\NOVALUE (SETQ \NOVALUE OP))
(STRING (SETQ \STRINGVALUE OP))
(COMMAND (SETQ \COMMAND OP))
(REPEAT (SETQ \REPEAT OP))
(NORAISE (SETQ \RAISEINPUT))
(RAISE (SETQ \RAISEINPUT T))
(TEXT (SETQ \REPEAT (SETQ \NOVALUE
(SETQ \AUTOFILL OP)))
(SETQ \RAISEINPUT))
(FIX (SETQ \FIX OP))
(READ (SETQ \READING (SETQ \AUTOFILL OP)))
(LISPXREAD [SETQ TYPEAHEAD (SETQ
\LISPXREADING
(SETQ \READING
(SETQ \AUTOFILL
OP]
(SETQ \RAISEINPUT
(fetch RAISEFLG of
(EVALQT (* ;
 "like LISPXREAD, but with added proviso about checking for EVALQT right-bracket hacks")
[SETQ TYPEAHEAD (SETQ \LISPXREADING (SETQ
\READING
(SETQ
\AUTOFILL
OP]
(SETQ \RAISEINPUT (fetch RAISEFLG of
\PRIMTERMTABLE
)))
(EVALQT
(* ;
 "like LISPXREAD, but with added proviso about checking for EVALQT right-bracket hacks")
[SETQ TYPEAHEAD (SETQ \LISPXREADING
(SETQ \READING
(SETQ \AUTOFILL OP]
(SETQ \RAISEINPUT
(fetch RAISEFLG of
\PRIMTERMTABLE
)))
(TYPEAHEAD (SETQ TYPEAHEAD OP))
(FILLBUFFER (SETQ \FILLINGBUFFER OP))
(NOPROMPT (SETQ \FIRSTTIME OP))
((PROMPTFORWORD PROMPTFORWORD-SPACE)
)))
(TYPEAHEAD (SETQ TYPEAHEAD OP))
(FILLBUFFER (SETQ \FILLINGBUFFER OP))
(NOPROMPT (SETQ \FIRSTTIME OP))
((PROMPTFORWORD PROMPTFORWORD-SPACE)
(* ; "For faking PROMPTFORWORD")
(SETQ \PROMPTFORWORD (SETQ \STRINGVALUE
OP))
(SETQ \PFW.FIRSTTIME UNREADBUF)
(SETQ \PROMPTFORWORD (SETQ \STRINGVALUE OP))
(SETQ \PFW.FIRSTTIME UNREADBUF)
(* ;
 "Flag that says to erase the line if user types something other than <bs>, etc.")
(SETQ \RAISEINPUT NIL))
NIL))
 "Flag that says to erase the line if user types something other than <bs>, etc.")
(SETQ \RAISEINPUT NIL))
NIL))
[SETQ \RDTBLSA (fetch READSA of (SETQ RDTBL (COND
((AND (NOT \READING)
(NULL RDTBL))
((AND (NOT \READING)
(NULL RDTBL))
(* ;
 "Use the word table, rather than a Lispish table")
(\DTEST TTYINWORDRDTBL
'READTABLEP))
(T (\GTREADTABLE RDTBL]
(TTYIN.SETUP) (* ;
 "Setup window, including fonts. Didn't do this til now since it uses \READING.")
 "Use the word table, rather than a Lispish table")
(\DTEST TTYINWORDRDTBL 'READTABLEP))
(T (\GTREADTABLE RDTBL]
(TTYIN.SETUP) (* ;
 "Setup window, including fonts. Didn't do this til now since it uses \READING.")
[COND
((EQ PROMPT T)
(SETQ \PROMPT1 (SETQ \PROMPT2)))
@@ -237,7 +231,7 @@ Copyright (c) 1982-1988, 1990-1991, 2021 by Venue & Xerox Corporation.
[(LISTP PROMPT)
(COND
((NLISTP (CDR PROMPT)) (* ;
 "User has already supplied us with a dotted pair of prompts")
 "User has already supplied us with a dotted pair of prompts")
(SETQ \PROMPT1 (CAR PROMPT))
(SETQ \PROMPT2 (CDR PROMPT)))
(T (SETQ PROMPT (SUBSTRING PROMPT 2 -2]
@@ -250,12 +244,12 @@ Copyright (c) 1982-1988, 1990-1991, 2021 by Venue & Xerox Corporation.
(SETQ \PROMPT2 (COND
((OR \LISPXREADING \PROMPTFORWORD)
(* ;
 "Don't use a secondary prompt for LISPX or PROMPTFORWORD")
 "Don't use a secondary prompt for LISPX or PROMPTFORWORD")
NIL)
((AND \REPEAT (< (NCHARS PROMPT)
12))
(* ;
 "Okay to use this short prompt as a secondary prompt")
 "Okay to use this short prompt as a secondary prompt")
PROMPT)
(T '|...|]
(COND
@@ -272,24 +266,23 @@ Copyright (c) 1982-1988, 1990-1991, 2021 by Venue & Xerox Corporation.
(COND
((OR (NOT TTYINERRORSETFLG)
\LISPXREADING) (* ;
 "LISPXREAD is not errorset-protected, so why should this be?")
 "LISPXREAD is not errorset-protected, so why should this be?")
(COND
(\CURSORCOL (* ;
 "If this is NIL, then we haven't initialized enough to go anywhere")
 "If this is NIL, then we haven't initialized enough to go anywhere")
(GO.TO.FREELINE)))
(RESTOREMOD)
(COND
((NEQ \BUFFER \ENDBUFFER)
(replace (TTYINBUFFER OLDTAIL) of \TTYINSTATE with \ENDBUFFER))
)
(replace (TTYINBUFFER OLDTAIL) of \TTYINSTATE with \ENDBUFFER)))
(ERROR!)))
(GO LP)))
(COND
((AND (NEQ \BUFFER \ENDBUFFER)
(> (add (fetch (TTYINBUFFER STORAGECOUNTER) of \TTYINSTATE)
1)
1)
10)) (* ;
 "Release some storage, since it seems to accumulate and fragment")
 "Release some storage, since it seems to accumulate and fragment")
(replace (TTYINBUFFER STORAGECOUNTER) of \TTYINSTATE with 0)
(FRPLACD \ENDBUFFER)))
(SETQ VALUE (CAR VALUE))
@@ -3538,13 +3531,17 @@ Copyright (c) 1982-1988, 1990-1991, 2021 by Venue & Xerox Corporation.
(TTUNREADBUF
[LAMBDA NIL
(DECLARE (USEDFREE \CURSOR \ENDBUFFER)) (* bvm%: "11-Apr-85 15:13")
(DECLARE (USEDFREE \CURSOR \ENDBUFFER SINGLELINE)) (* ; "Edited 29-Feb-2024 10:31 by rmk")
(* bvm%: "11-Apr-85 15:13")
(* ;;; "Takes contents of buffer from \CURSOR onward and 'unreads' it, i.e. erases it and simulates terminal input, a la BKSYSBUF")
(* ;; "RMK: SINGLELINE on calls from TTYINPROMPTFORWORD. Even if the caret is in the middle of the line (word?) when an EOL is typed, treat that terminator as if it had first been moved to the end--don't truncate the result at that point.")
(for (X _ \CURSOR) by (TTNEXTCHAR X) until (EQ X \ENDBUFFER)
do (BKSYSCHARCODE (FIRSTCHAR X)))
(DELETE.TO.END])
(* ;;; "Takes contents of buffer from \CURSOR onward and 'unreads' it, i.e. erases it and simulates terminal input, a la BKSYSBUF.")
(CL:UNLESS SINGLELINE
(for (X _ \CURSOR) by (TTNEXTCHAR X) until (EQ X \ENDBUFFER) do (BKSYSCHARCODE (FIRSTCHAR
X)))
(DELETE.TO.END))])
(TTWAITFORINPUT
[LAMBDA (MSECS RETKEYFLG) (* ; "Edited 19-Jan-88 01:00 by bvm")
@@ -5635,61 +5632,56 @@ Copyright (c) 1982-1988, 1990-1991, 2021 by Venue & Xerox Corporation.
(TTYINPROMPTFORWORD
[LAMBDA (PROMPT.STR CANDIDATE.STR GENERATE?LIST.FN ECHO.CHANNEL DONTECHOTYPEIN.FLG URGENCY.OPTION
TERMINCHARS.LST KEYBD.CHANNEL) (* ; "Edited 8-Feb-88 14:26 by bvm:")
(* ;; "Attempt at a plug-compatible replacement for common cases of PROMPTFORWORD -- lets you use your mouse and other editing commands.")
TERMINCHARS.LST KEYBD.CHANNEL) (* ; "Edited 29-Feb-2024 10:35 by rmk")
(* ; "Edited 8-Feb-88 14:26 by bvm:")
(LET ((TYPE 'PROMPTFORWORD)) (* ;
 "Default uses space or cr to terminate")
(* ;; "Attempt at a plug-compatible replacement for common cases of PROMPTFORWORD -- lets you use your mouse and other editing commands.")
(* ;; "RMK: Passed T as SINGLELINE argument to TTYIN")
(LET ((TYPE 'PROMPTFORWORD)) (* ;
 "Default uses space or cr to terminate")
(if [OR DONTECHOTYPEIN.FLG KEYBD.CHANNEL
[if (NULL TERMINCHARS.LST)
then (SETQ TYPE 'PROMPTFORWORD-SPACE)
(* ; "Default is CR SPACE")
NIL
else (for C in TERMINCHARS.LST
do (SELCHARQ C
(SPACE (SETQ TYPE 'PROMPTFORWORD-SPACE))
((CR ^X) (* ; "ok, ttyin uses these by default")
)
(if TTYIN.USE.EXACT.CHARS
then (* ; "A terminator we can't handle")
(RETURN T]
(AND ECHO.CHANNEL (NOT (DISPLAYSTREAMP (SETQ ECHO.CHANNEL (GETSTREAM
ECHO.CHANNEL
'OUTPUT]
then (* ; "Sorry, can't help")
(NON-TTYIN-PROMPTFORWORD PROMPT.STR CANDIDATE.STR GENERATE?LIST.FN ECHO.CHANNEL
DONTECHOTYPEIN.FLG URGENCY.OPTION TERMINCHARS.LST KEYBD.CHANNEL)
else (RESETLST [if (AND (EQ URGENCY.OPTION 'TTY)
(NOT (TTY.PROCESSP)))
then (* ; "Caller wants to grab tty")
(RESETSAVE (TTY.PROCESS (THIS.PROCESS]
(if (AND ECHO.CHANNEL (NEQ ECHO.CHANNEL (TTYDISPLAYSTREAM)))
then (RESETSAVE (TTYDISPLAYSTREAM ECHO.CHANNEL)))
(TTYIN (COND
((NOT PROMPT.STR)
T)
((EQ (NTHCHARCODE PROMPT.STR -1)
(CHARCODE SPACE))
PROMPT.STR)
(T (* ;
 "Promptforword spaces after prompt")
(CONCAT PROMPT.STR " ")))
NIL
(STRINGP GENERATE?LIST.FN)
TYPE NIL NIL (if (FIXP CANDIDATE.STR)
then (* ;
 "Coerce integer to string, or otherwise ttyin will interpret it as a character code")
(MKSTRING CANDIDATE.STR)
else CANDIDATE.STR])
[if (NULL TERMINCHARS.LST)
then (SETQ TYPE 'PROMPTFORWORD-SPACE) (* ; "Default is CR SPACE")
NIL
else (for C in TERMINCHARS.LST do (SELCHARQ C
(SPACE (SETQ TYPE 'PROMPTFORWORD-SPACE))
((CR ^X)
(* ; "ok, ttyin uses these by default")
)
(if TTYIN.USE.EXACT.CHARS
then
(* ; "A terminator we can't handle")
(RETURN T]
(AND ECHO.CHANNEL (NOT (DISPLAYSTREAMP (SETQ ECHO.CHANNEL (GETSTREAM ECHO.CHANNEL
'OUTPUT]
then (* ; "Sorry, can't help")
(NON-TTYIN-PROMPTFORWORD PROMPT.STR CANDIDATE.STR GENERATE?LIST.FN ECHO.CHANNEL
DONTECHOTYPEIN.FLG URGENCY.OPTION TERMINCHARS.LST KEYBD.CHANNEL)
else (RESETLST
[if (AND (EQ URGENCY.OPTION 'TTY)
(NOT (TTY.PROCESSP)))
then (* ; "Caller wants to grab tty")
(RESETSAVE (TTY.PROCESS (THIS.PROCESS]
(if (AND ECHO.CHANNEL (NEQ ECHO.CHANNEL (TTYDISPLAYSTREAM)))
then (RESETSAVE (TTYDISPLAYSTREAM ECHO.CHANNEL)))
(TTYIN (COND
((NOT PROMPT.STR)
T)
((EQ (NTHCHARCODE PROMPT.STR -1)
(CHARCODE SPACE))
PROMPT.STR)
(T (* ; "Promptforword spaces after prompt")
(CONCAT PROMPT.STR " ")))
NIL
(STRINGP GENERATE?LIST.FN)
TYPE NIL NIL (if (FIXP CANDIDATE.STR)
then (* ;
 "Coerce integer to string, or otherwise ttyin will interpret it as a character code")
(MKSTRING CANDIDATE.STR)
else CANDIDATE.STR)
NIL T))])
)
(RPAQ? TTYIN.USE.EXACT.CHARS )
@@ -6075,65 +6067,63 @@ DONTEVAL@LOAD EVAL@COMPILE
(ADDTOVAR LAMA )
)
(PUTPROPS TTYIN COPYRIGHT ("Venue & Xerox Corporation" 1982 1983 1984 1985 1986 1987 1988 1990 1991
2021))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (7808 207843 (TTYIN 7818 . 21051) (TTYIN.SETUP 21053 . 24129) (TTYIN.CLEANUP 24131 .
24959) (TTYIN1 24961 . 51845) (TTYIN1RESTART 51847 . 53111) (TTYIN.FINISH 53113 . 62530) (
TTYIN.BALANCE 62532 . 63658) (ADDCHAR 63660 . 65846) (TTMAKECOMPLEXCHAR 65848 . 66322) (ADDNAKEDCHAR
66324 . 67834) (TTADDTAB 67836 . 68771) (ADJUSTLINE 68773 . 82684) (ADJUSTLINE.AND.RESTORE 82686 .
83124) (AT.END.OF.SCREEN 83126 . 83414) (AT.END.OF.TEXT 83416 . 83871) (AUTOCR? 83873 . 84347) (
BACKSKREAD 84349 . 88934) (BACKWARD.DELETE.TO 88936 . 89118) (BREAKLINE 89120 . 91387) (BUFTAILP 91389
. 91707) (CHECK.MARGIN 91709 . 92332) (CLEAR.LINE? 92334 . 92627) (CURRENT.WORD 92629 . 95029) (
DELETE.TO.END 95031 . 95750) (DELETELINE 95752 . 98709) (DELETETO 98711 . 100533) (DELETETO1 100535 .
101878) (DO.EDIT.COMMAND 101880 . 119199) (DO.EDIT.PP 119201 . 121863) (TTDOTABS 121865 . 123235) (
EDITCOLUMN 123237 . 123693) (EDITNUMBERP 123695 . 123926) (END.DELETE.MODE 123928 . 124445) (ENDREAD?
124447 . 126882) (FIND.LINE 126884 . 128420) (FIND.LINE.BREAK 128422 . 129092) (FIND.MATCHING.QUOTE
129094 . 129939) (FIND.NEXT.WORD 129941 . 131320) (FIND.NON.SPACE 131322 . 131595) (FIND.START.OF.WORD
131597 . 131960) (FORWARD.DELETE.TO 131962 . 134184) (GO.TO.ADDRESSING 134186 . 135142) (
GO.TO.FREELINE 135144 . 135725) (GO.TO.RELATIVE 135727 . 136507) (INIT.CURSOR 136509 . 137406) (
INSERT.NODE 137408 . 137930) (INSERTLINE 137932 . 139436) (KILL.LINES 139438 . 139976) (KILLSEGMENT
139978 . 141101) (L-CASECODE 141103 . 141264) (MOVE.BACK.TO 141266 . 141495) (MOVE.FORWARD.TO 141497
. 141918) (MOVE.TO.LINE 141920 . 142835) (MOVE.TO.NEXT.LINE 142837 . 143107) (MOVE.TO.START.OF.WORD
143109 . 143873) (MOVE.TO.WHEREVER 143875 . 144098) (NTH.COLUMN.OF 144100 . 144431) (
NTH.RELATIVE.COLUMN.OF 144433 . 145733) (OVERFLOW? 145735 . 146683) (OVERFLOWLINE? 146685 . 147011) (
PREVLINE 147013 . 148193) (PREVWORD 148195 . 150336) (PROPERTAILP 150338 . 150545) (READFROMBUF 150547
. 153136) (RENUMBER.LINES 153138 . 153531) (RESTORE.CURSOR 153533 . 153687) (RESTOREBUF 153689 .
155873) (RETYPE.BUFFER 155875 . 158138) (SAVE.CURSOR 158140 . 158312) (SCANBACK 158314 . 159672) (
SCANFORWARD 159674 . 160542) (SCRATCHCONS 160544 . 161146) (SEGMENT.LENGTH 161148 . 161684) (
SEGMENT.BIT.LENGTH 161686 . 162293) (SETLASTC 162295 . 162592) (SETTAIL? 162594 . 163410) (
SHOW.MATCHING.PAREN 163412 . 165912) (SKIP/ZAP 165914 . 168393) (START.NEW.LINE 168395 . 168727) (
START.OF.PARAGRAPH? 168729 . 169110) (TTADJUSTWORD 169112 . 170286) (TTBIN 170288 . 171494) (
TTBITWIDTH 171496 . 171645) (TTCRLF 171647 . 171854) (TTCRLF.ACCOUNT 171856 . 172496) (TTDELETECHAR
172498 . 173642) (TTDELETELINE 173644 . 175592) (TTDELETEWORD 175594 . 176262) (TTECHO.TO.FILE 176264
. 179823) (TTGIVEHELP 179825 . 181090) (TTGIVEHELP1 181092 . 181674) (TTGIVEHELP2 181676 . 182371) (
TTLASTLINE 182373 . 182741) (TTLOADBUF 182743 . 186237) (TTNEXTLINE 186239 . 186559) (TTNEXTNODE
186561 . 186800) (TTNLEFT 186802 . 188029) (TTNTH 188031 . 188490) (TTNTHLINE 188492 . 189024) (
TTPRIN1 189026 . 192839) (TTPRINSPACE 192841 . 193234) (TTPRIN1COMMENT 193236 . 193560) (TTPRIN2
193562 . 195881) (TTPROMPTCHAR 195883 . 196779) (TTRUBOUT 196781 . 197744) (TTUNREADBUF 197746 .
198155) (TTWAITFORINPUT 198157 . 202365) (TTYINSTRING 202367 . 203326) (TYPE.BUFFER 203328 . 205080) (
U-CASECODE 205082 . 205241) (U/L-CASE 205243 . 207841)) (207998 217357 (TTRATOM 208008 . 208452) (
TTREADLIST 208454 . 208821) (TTSKIPSEPR 208823 . 209197) (TTSKREAD 209199 . 213839) (TTYIN.READ 213841
. 217355)) (217404 237448 (FIND.MATCHING.WORD 217414 . 217942) (TTCOMPLETEWORD 217944 . 232372) (
WORD.MATCHES.BUFFER 232374 . 233934) (TTYIN.SHOW.?ALTERNATIVES 233936 . 237446)) (237482 255792 (
DO?CMD 237492 . 243394) (TTYIN.PRINTARGS 243396 . 254254) (TTYIN.READ?=ARGS 254256 . 255037) (
DO?CMD.ERRORHANDLER 255039 . 255790)) (255826 263899 (BEEP 255836 . 256011) (BITBLT.DELETE 256013 .
256660) (BITBLT.ERASE 256662 . 256847) (BITBLT.INSERT 256849 . 257160) (DO.CRLF 257162 . 257481) (
DO.DELETE.LINES 257483 . 258527) (DO.INSERT.LINE 258529 . 260463) (DO.LF 260465 . 260631) (
ERASE.TO.END.OF.LINE 260633 . 260958) (ERASE.TO.END.OF.PAGE 260960 . 261565) (INSERT.TEXT 261567 .
262071) (TTDELSECTION 262073 . 262371) (TTADJUSTWIDTH 262373 . 263237) (TTINSERTSECTION 263239 .
263578) (TTSETCURSOR 263580 . 263897)) (263934 269065 (TTYINBUFFERDEVICE 263944 . 265260) (
TTYINBUFFERSTREAM 265262 . 266178) (TTYINBUFFERBIN 266180 . 266716) (TTYINBUFFERPEEK 266718 . 267196)
(TTYINBUFFERREADP 267198 . 267453) (TTYINBUFFEREOFP 267455 . 267707) (TTYINBUFFERBACKPTR 267709 .
268261) (TTYINWORDRDTBL 268263 . 269063)) (269226 294783 (DO.MOUSE 269236 . 271993) (
DO.SHIFTED.SELECTION 271995 . 282434) (COPY.SEGMENT 282436 . 282640) (DELETE.LONG.SEGMENT 282642 .
283001) (DELETE.LONG.SEGMENT1 283003 . 285479) (INVERT.LONG.SEGMENT 285481 . 286510) (INVERT.SEGMENT
286512 . 288027) (BRACKET.CURRENT.WORD 288029 . 289563) (TTBEFOREPOS 289565 . 290295) (TTNEXTPOS
290297 . 291005) (TTRACKMOUSE 291007 . 294781)) (294927 300300 (SETREADFN 294937 . 295415) (
TTYINENTRYFN 295417 . 295842) (TTYINREADP 295844 . 296426) (TTYINREAD 296428 . 297822) (TTYINFIX
297824 . 299023) (CHARMACRO? 299025 . 299592) (TTYINMETA 299594 . 299722) (TTYIN.LASTINPUT 299724 .
300298)) (300301 308570 (TTYINEDIT 300311 . 302428) (SIMPLETEXTEDIT 302430 . 305474) (
SET.TTYINEDIT.WINDOW 305476 . 306627) (TTYIN.PPTOFILE 306629 . 308568)) (308628 308805 (
MAKE-TTSCRATCHFILE 308638 . 308803)) (308952 310085 (TTYIN.SCRATCHFILE 308962 . 309408) (\TTYIN.RPEOF
309410 . 310083)) (310297 313930 (TTYINPROMPTFORWORD 310307 . 313928)))))
(FILEMAP (NIL (7690 207621 (TTYIN 7700 . 20347) (TTYIN.SETUP 20349 . 23425) (TTYIN.CLEANUP 23427 .
24255) (TTYIN1 24257 . 51141) (TTYIN1RESTART 51143 . 52407) (TTYIN.FINISH 52409 . 61826) (
TTYIN.BALANCE 61828 . 62954) (ADDCHAR 62956 . 65142) (TTMAKECOMPLEXCHAR 65144 . 65618) (ADDNAKEDCHAR
65620 . 67130) (TTADDTAB 67132 . 68067) (ADJUSTLINE 68069 . 81980) (ADJUSTLINE.AND.RESTORE 81982 .
82420) (AT.END.OF.SCREEN 82422 . 82710) (AT.END.OF.TEXT 82712 . 83167) (AUTOCR? 83169 . 83643) (
BACKSKREAD 83645 . 88230) (BACKWARD.DELETE.TO 88232 . 88414) (BREAKLINE 88416 . 90683) (BUFTAILP 90685
. 91003) (CHECK.MARGIN 91005 . 91628) (CLEAR.LINE? 91630 . 91923) (CURRENT.WORD 91925 . 94325) (
DELETE.TO.END 94327 . 95046) (DELETELINE 95048 . 98005) (DELETETO 98007 . 99829) (DELETETO1 99831 .
101174) (DO.EDIT.COMMAND 101176 . 118495) (DO.EDIT.PP 118497 . 121159) (TTDOTABS 121161 . 122531) (
EDITCOLUMN 122533 . 122989) (EDITNUMBERP 122991 . 123222) (END.DELETE.MODE 123224 . 123741) (ENDREAD?
123743 . 126178) (FIND.LINE 126180 . 127716) (FIND.LINE.BREAK 127718 . 128388) (FIND.MATCHING.QUOTE
128390 . 129235) (FIND.NEXT.WORD 129237 . 130616) (FIND.NON.SPACE 130618 . 130891) (FIND.START.OF.WORD
130893 . 131256) (FORWARD.DELETE.TO 131258 . 133480) (GO.TO.ADDRESSING 133482 . 134438) (
GO.TO.FREELINE 134440 . 135021) (GO.TO.RELATIVE 135023 . 135803) (INIT.CURSOR 135805 . 136702) (
INSERT.NODE 136704 . 137226) (INSERTLINE 137228 . 138732) (KILL.LINES 138734 . 139272) (KILLSEGMENT
139274 . 140397) (L-CASECODE 140399 . 140560) (MOVE.BACK.TO 140562 . 140791) (MOVE.FORWARD.TO 140793
. 141214) (MOVE.TO.LINE 141216 . 142131) (MOVE.TO.NEXT.LINE 142133 . 142403) (MOVE.TO.START.OF.WORD
142405 . 143169) (MOVE.TO.WHEREVER 143171 . 143394) (NTH.COLUMN.OF 143396 . 143727) (
NTH.RELATIVE.COLUMN.OF 143729 . 145029) (OVERFLOW? 145031 . 145979) (OVERFLOWLINE? 145981 . 146307) (
PREVLINE 146309 . 147489) (PREVWORD 147491 . 149632) (PROPERTAILP 149634 . 149841) (READFROMBUF 149843
. 152432) (RENUMBER.LINES 152434 . 152827) (RESTORE.CURSOR 152829 . 152983) (RESTOREBUF 152985 .
155169) (RETYPE.BUFFER 155171 . 157434) (SAVE.CURSOR 157436 . 157608) (SCANBACK 157610 . 158968) (
SCANFORWARD 158970 . 159838) (SCRATCHCONS 159840 . 160442) (SEGMENT.LENGTH 160444 . 160980) (
SEGMENT.BIT.LENGTH 160982 . 161589) (SETLASTC 161591 . 161888) (SETTAIL? 161890 . 162706) (
SHOW.MATCHING.PAREN 162708 . 165208) (SKIP/ZAP 165210 . 167689) (START.NEW.LINE 167691 . 168023) (
START.OF.PARAGRAPH? 168025 . 168406) (TTADJUSTWORD 168408 . 169582) (TTBIN 169584 . 170790) (
TTBITWIDTH 170792 . 170941) (TTCRLF 170943 . 171150) (TTCRLF.ACCOUNT 171152 . 171792) (TTDELETECHAR
171794 . 172938) (TTDELETELINE 172940 . 174888) (TTDELETEWORD 174890 . 175558) (TTECHO.TO.FILE 175560
. 179119) (TTGIVEHELP 179121 . 180386) (TTGIVEHELP1 180388 . 180970) (TTGIVEHELP2 180972 . 181667) (
TTLASTLINE 181669 . 182037) (TTLOADBUF 182039 . 185533) (TTNEXTLINE 185535 . 185855) (TTNEXTNODE
185857 . 186096) (TTNLEFT 186098 . 187325) (TTNTH 187327 . 187786) (TTNTHLINE 187788 . 188320) (
TTPRIN1 188322 . 192135) (TTPRINSPACE 192137 . 192530) (TTPRIN1COMMENT 192532 . 192856) (TTPRIN2
192858 . 195177) (TTPROMPTCHAR 195179 . 196075) (TTRUBOUT 196077 . 197040) (TTUNREADBUF 197042 .
197933) (TTWAITFORINPUT 197935 . 202143) (TTYINSTRING 202145 . 203104) (TYPE.BUFFER 203106 . 204858) (
U-CASECODE 204860 . 205019) (U/L-CASE 205021 . 207619)) (207776 217135 (TTRATOM 207786 . 208230) (
TTREADLIST 208232 . 208599) (TTSKIPSEPR 208601 . 208975) (TTSKREAD 208977 . 213617) (TTYIN.READ 213619
. 217133)) (217182 237226 (FIND.MATCHING.WORD 217192 . 217720) (TTCOMPLETEWORD 217722 . 232150) (
WORD.MATCHES.BUFFER 232152 . 233712) (TTYIN.SHOW.?ALTERNATIVES 233714 . 237224)) (237260 255570 (
DO?CMD 237270 . 243172) (TTYIN.PRINTARGS 243174 . 254032) (TTYIN.READ?=ARGS 254034 . 254815) (
DO?CMD.ERRORHANDLER 254817 . 255568)) (255604 263677 (BEEP 255614 . 255789) (BITBLT.DELETE 255791 .
256438) (BITBLT.ERASE 256440 . 256625) (BITBLT.INSERT 256627 . 256938) (DO.CRLF 256940 . 257259) (
DO.DELETE.LINES 257261 . 258305) (DO.INSERT.LINE 258307 . 260241) (DO.LF 260243 . 260409) (
ERASE.TO.END.OF.LINE 260411 . 260736) (ERASE.TO.END.OF.PAGE 260738 . 261343) (INSERT.TEXT 261345 .
261849) (TTDELSECTION 261851 . 262149) (TTADJUSTWIDTH 262151 . 263015) (TTINSERTSECTION 263017 .
263356) (TTSETCURSOR 263358 . 263675)) (263712 268843 (TTYINBUFFERDEVICE 263722 . 265038) (
TTYINBUFFERSTREAM 265040 . 265956) (TTYINBUFFERBIN 265958 . 266494) (TTYINBUFFERPEEK 266496 . 266974)
(TTYINBUFFERREADP 266976 . 267231) (TTYINBUFFEREOFP 267233 . 267485) (TTYINBUFFERBACKPTR 267487 .
268039) (TTYINWORDRDTBL 268041 . 268841)) (269004 294561 (DO.MOUSE 269014 . 271771) (
DO.SHIFTED.SELECTION 271773 . 282212) (COPY.SEGMENT 282214 . 282418) (DELETE.LONG.SEGMENT 282420 .
282779) (DELETE.LONG.SEGMENT1 282781 . 285257) (INVERT.LONG.SEGMENT 285259 . 286288) (INVERT.SEGMENT
286290 . 287805) (BRACKET.CURRENT.WORD 287807 . 289341) (TTBEFOREPOS 289343 . 290073) (TTNEXTPOS
290075 . 290783) (TTRACKMOUSE 290785 . 294559)) (294705 300078 (SETREADFN 294715 . 295193) (
TTYINENTRYFN 295195 . 295620) (TTYINREADP 295622 . 296204) (TTYINREAD 296206 . 297600) (TTYINFIX
297602 . 298801) (CHARMACRO? 298803 . 299370) (TTYINMETA 299372 . 299500) (TTYIN.LASTINPUT 299502 .
300076)) (300079 308348 (TTYINEDIT 300089 . 302206) (SIMPLETEXTEDIT 302208 . 305252) (
SET.TTYINEDIT.WINDOW 305254 . 306405) (TTYIN.PPTOFILE 306407 . 308346)) (308406 308583 (
MAKE-TTSCRATCHFILE 308416 . 308581)) (308730 309863 (TTYIN.SCRATCHFILE 308740 . 309186) (\TTYIN.RPEOF
309188 . 309861)) (310075 313709 (TTYINPROMPTFORWORD 310085 . 313707)))))
STOP

Binary file not shown.