From 0a37520014afb01f4aaf29452bb1ea121464985e Mon Sep 17 00:00:00 2001 From: rmkaplan <69548581+rmkaplan@users.noreply.github.com> Date: Wed, 20 Mar 2024 20:34:47 -0700 Subject: [PATCH] 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. --- sources/TTYIN | 362 ++++++++++++++++++++++----------------------- sources/TTYIN.LCOM | Bin 73510 -> 73353 bytes 2 files changed, 176 insertions(+), 186 deletions(-) diff --git a/sources/TTYIN b/sources/TTYIN index ba3b0924..ff65aad0 100644 --- a/sources/TTYIN +++ b/sources/TTYIN @@ -1,17 +1,13 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "19-Jul-2022 23:34:14"  -{DSK}kaplan>local>medley3.5>working-medley>sources>TTYIN.;17 328952 +(FILECREATED "29-Feb-2024 10:48:51" {WMEDLEY}TTYIN.;20 328623 - :CHANGES-TO (FNS TTYINREADP) + :EDIT-BY rmk - :PREVIOUS-DATE " 2-Jul-2022 00:09:00" -{DSK}kaplan>local>medley3.5>working-medley>sources>TTYIN.;16) + :CHANGES-TO (FNS TTYIN TTYINPROMPTFORWORD TTUNREADBUF) + :PREVIOUS-DATE "19-Jul-2022 23:34:14" {WMEDLEY}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 , etc.") - (SETQ \RAISEINPUT NIL)) - NIL)) + "Flag that says to erase the line if user types something other than , 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 diff --git a/sources/TTYIN.LCOM b/sources/TTYIN.LCOM index 3f5575cf2a3ab896dcdf44f842667f34d8f8f14a..2bc599ffbe756b09bc7a47a89bdbb6f0f2b0db6e 100644 GIT binary patch delta 502 zcmaJ;%Syvg5Y5#tY_(!_A(ldiyC{v2klgfT6u~w(Z7`;qho#t!k3x&B5vwZ^apA&^ zC>6SM=?_#87xqW|2|qx=Yd5-3XEVbvXU;h@4}-wfOW>xmMHU3Tz9SHcq(GL`R8CFH z7?OC`Zyz>W^*!(p0K;izjcO*Xo-K9!lcU{wXW4bDh9xc%iH8s-+3zKiq>{9%q%qvS z&YeS(!FA6x;pdDfiWv5`kJn@v|!T}mui52m-&w@P)IIA5(=nPGh88G zg`@U9sD;vsRiuvKmLaKI4upn2dXZ@~69d=vEJmp1J)H-2-KLvH*>ePqN$4)4X!Nfm z$l3n12aaJCO==nz?GC~|3iidx`^(IC7jz&{D|oh3wppz}japxHI<(3Qxx*^6qFRWs$GJ;Yi&x4Q;Ul2vJ(q( z67%eG@{<#D>~d36a#Aae^-S%`^NX@G^U`%8B6h|3rA5i9#daYfk)D2f)`sSq3QC5S zx?ZI@x<&>@Mhb=&R>p=_CPqNRlZsN|)}>a278Dh$S}B0_1-Ux91Sn(zo!}PgR@ASehCsSUGz*`nkIX z>xTF%Xt?&uX*2!`%Vtkqk42q0Q3=DySj0_$@lXp#)5@paZ zGF5Q$4vq{4dL+o%-^EqI(0KFf$$xSfyQjWjY?PV8$p8er>>yHrLBr744B|zgGK1|M zjEsL}3N!*jLjr>Q1E8K)aP|*~4DxjM2mvOau++TLR0TDKh}5F|3I*r^x*;kLoLOr