Nope, Forth was definitely not the first. There used to be a text editor
called TECO, originally developed on the DEC PDP-1 computer. You could
write TECO macros (really programs) to do virtually any kind of text
processing you want. They weren't hard to write, but weren't very easy
to read, even with a lot of comments. I attached an example below for
your amusement. The things enclosed in exclamation points are (usually)
comments. This is a very simple one by TECO macro standards, but was
the first example I managed to dredge out. :-)
Note the "^" in "^u" is really a caret -- the other "^" things are
CTRL characters.
pete peterson
GenRad, Inc.
7 Technology Park Drive
Westford, MA 01886-0033
[EMAIL PROTECTED] or [EMAIL PROTECTED]
+1-978-589-7478 (GenRad); +1-978-256-5829 (Home: Chelmsford, MA)
+1-978-589-2088 (Closest FAX); +1-978-589-7007 (Main GenRad FAX)
> Date: Wed, 24 May 2000 07:18:08 -0500 (CDT)
> From: [EMAIL PROTECTED] (Dave Ihnat)
> To: [EMAIL PROTECTED]
> Subject: Re: Samba 2.07
>
> Niclas Sodergard DC wrote:
>
> > BTW, if you think Perl is hairy don't look at postscript :-).
>
> Much closer to FORTH, which when I first encountered it, I dubbed "the
> world's first write-only language."
> --
> Dave Ihnat
> [EMAIL PROTECTED]
!Diabset.tec rep 10-MAY-82 07:02!
!modified to count unequal tabs properly 01-OCT-82 13:48!
!teco macro does setup for Diablo printer!
!sets characters per inch, lines per inch, margins, and tab stops!
!This version has control sequences for Bedford Computer Systems version of!
! the Diablo printer (the one attached to the 11/70) and for normal!
! Diablo 16XX or 630!
etu1 et#1et [1 7:wu1 0,7:w [1 0:wu1 [1 2,0:w !set vt100 as vt52 mode!
^A^[H^[JDiablo setup routine: Answer questions -- follow responses with Carriage
Return
^A
!m1 gets a number from the keyboard and returns it-- number terminated by
non-numeric character!
@^u1`[0[1[2 .u1 m5 .u2 q1j \u0 q1,q2k q0 ]2]1]0`
!m2 throws away any left-over characters in keyboard buffer!
@^u2` ET#32ET <-1-^T;> 32^_&ETET `
@^u3/ 27^T ^^I^T 27^T ^^M^T 13^T 27^T ^^J^T/ !m3 erases previous line from screen!
@^u4` < ^T-10"e 0; ' > ` !m4 waits for line feed!
@^u5/ !read string from terminal into buffer!
m2 [0 <^Tu0 q0-13"e ^T 0;' q0-127"e ."n -1d 8^T32^T8^T'' q0-127"n q0i^['>]0/
m2 ^AIs the file going to be printed on the strange Diablo printer in the
Facilities Operators Area? (y/n) ^A
^T#32-^^y"n !set up for Diablo 16XX or 630 format!
@^ua`^[1` !tabset sequence! @^ub`^[9` !set left margin sequence!
@^uc`^[0` !set right margin! @^uj`
^[` 10:^uj^[ !crlf, reverse lf sequence!
@^ud`^[2^[^I^A^[9^[^IU^[0` 13:^ud^[ !clear all margins and tabs sequence!
27^ue^[31:^ue^[13:^ue^[ 27^uf^[31:^uf^[11:^uf^[ !ge for 10 cpi, gf for 12 cpi!
27^ug^[30:^ug^[9:^ug^[ 27^uh^[30:^uh^[7:^uh^[ !gg for 6 lpi, gh for 8 lpi!
| !set up for Bedford Computer Systems format!
@^ua`^[1` !tabset sequence! @^ub`^[.` !set left margin sequence!
@^uc`^[/` !set right margin! @^uj`
^V` ! crlf, reverse lf sequence!
@^ud`^[;^[&` !clear all margins and tab stops sequence!
@^ue`^[)` @^uf`^[*` !ge for 10 cpi, gf for 12 cpi!
@^ug`^[<` @^uh`^[=` !gg for 6 lpi, gh for 8 lpi!
' !qa is left margin position, qb is right margin position!
@^ui` 13@i~~ qa<i ^[> gb qb-qa<i ^[> gc gj` ! set margins!
m4
<^AName of file: ^A m5 hx6 hk @:eb/^Eq6/u6 -1-q6; ^A Can't open ^A :g6 ^A ^A>
<^Aspecify # of characters per inch (10 or 12) ^A m1uc
qc-10"e ge 0; | qc-12"e gf 0; ' ' m3 >
<^Aspecify # of lines per inch (6 or 8) ^A m1uc
qc-6"e gg 0; | qc-8"e gh 0; ' ' m3 > gd 13i^[^M
^AMargin and tab positions are to be specified in character positions
^A <m2 ^Aleft margin = ^A m1ua qa"g qa-(8*qc)"l 0;' ' m3 >
<m2 ^Aright margin = ^A m1ub qb-qa"g 0;' m3 >
^AWould you like tab positions absolute or relative to margins?
(a = absolute; other response = relative) ^A ^T#32-^^au0 m4 q0"n mi'
^ADo you want uniform tab spacing ? (y/n) ^A m2 ^T#32-^^y"e
m4 ^ATab stop separation = ^A m2 m1u1 (qb-qa)/q1< q1< @i` ` > ga > gj q0"e mi'
| m4 ^A
Specify tab positions (separate with commas... end with Car Ret)
^A .u1 m5 .u2 q1j .,.x6 q0"e qau5 | 0u5' <\u3 q3-q5"l ^ATabs must be within margins --
aborting
^A hkekex'
q3-q5<:@^u6` `> .u6 ga q6,.:x6 q6,.k q3u5::s^Es^[ ^[ ::s,^[ ^[ ::s^Es^[ .-q2"e
0; '>
q1,q2k g6 q0"e mi ' ' q0"n 13@i// '
^A^[H^[J^A ]1^[ q1,0:w ]1^[ q1,7:w ]1^[ q1et
a ex^[^[
--
To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe"
as the Subject.