952 lines
41 KiB
Plaintext
952 lines
41 KiB
Plaintext
|
_______________________________________________________________________________
|
||
|
|
||
|
INTRODUCTION TO THE PRIMOS OPERATING SYSTEM
|
||
|
Part III (Useful PRIMOS Applications)
|
||
|
|
||
|
Written by Violence
|
||
|
Copyright (C) 1989 The VOID Hackers
|
||
|
_______________________________________________________________________________
|
||
|
|
||
|
|
||
|
Welcome to Part III of my series on the PRIMOS operating system. In this part
|
||
|
I will detail the several useful appliactions you are likely to find on Prime
|
||
|
computers. You will learn about the DSM (Distributed System Management) util-
|
||
|
ities, the EDIT_PROFILE utility (the PRIMOS user editor), and several others.
|
||
|
|
||
|
_______________________________________________________________________________
|
||
|
|
||
|
EDIT_PROFILE
|
||
|
|
||
|
|
||
|
EDIT_PROFILE is the utility that is used to add, delete, and modify users on a
|
||
|
Prime computer running PRIMOS. It is similar to the VAX/VMS AUTHORIZE utility.
|
||
|
There are three modes of EDIT_PROFILE access, and these are:
|
||
|
|
||
|
o System Initialization (SI) mode
|
||
|
o System Administrator (SA) mode
|
||
|
o Project Administrator (PA) mode
|
||
|
|
||
|
You will probably never be using EDIT_PROFILE in System Initialization mode as
|
||
|
that mode is used for initial system user setup). SA mode will allow to perf-
|
||
|
orm wholesale user modifications, whereas PA mode will only allow you to perf-
|
||
|
orm modifications to users in the same project as you. When you decided to try
|
||
|
out EDIT_PROFILE on the system that you have hacked into, type this:
|
||
|
|
||
|
OK, edit_profile
|
||
|
|
||
|
If it gives you an error message then you obviously don't have good enough pri-
|
||
|
vileges. Don't give up hope, however, as there are ways around this. Unfort-
|
||
|
unantly, though, the methods which you must use are beyond the scope of this
|
||
|
tutorial. It involves programming in a high level language (FORTRAN IV, FORTR-
|
||
|
AN-77, PL/1 Subset G, et. al.) as well as knowledge of the appropriate system
|
||
|
calls to make. Do lots of research and experiment. You might just get lucky.
|
||
|
|
||
|
If, on the other hand, it allows you to invoke EDIT_PROFILE then it will disp-
|
||
|
lay the utility's herald (revision number, serial number and copyright inform-
|
||
|
ation) and a message stating what mode you are in. The mode message will be
|
||
|
one of these:
|
||
|
|
||
|
In system administrator mode
|
||
|
In project administrator mode
|
||
|
|
||
|
If you are in SA mode then the account you are using has SYS1 privileges (thats
|
||
|
the best you can do from a remote standpoint). Before I get deep in how to use
|
||
|
EDIT_PROFILE properly I should mention that I have the source code to this won-
|
||
|
derfully useful program and a security audit feature was added in during the
|
||
|
last few years (circa 1986). It will log all successful and failed commands.
|
||
|
The only ways I have discovered around this is to remove the logging procedures
|
||
|
from the code and recompile it online, but that's pretty advanced stuff and not
|
||
|
advised at any rate. The best you can do at maintaining your presence on the
|
||
|
system is not to use EDIT_PROFILE overly much. In fact, don't use it unless
|
||
|
you must. I generally use EDIT_PROFILE once per hack, and that is after I get
|
||
|
in. What do I do? I obtain a full user/project listing for future hacking
|
||
|
purposes. You can't obtain an account's password from within EDIT_PROFILE, but
|
||
|
you can obtain a full user and project listing, as well as add, modify and
|
||
|
delete users. If you get a user list, try and hack at those accounts before
|
||
|
wontonly adding user accounts. Be sensible. Get all that you can before add-
|
||
|
ing a user. And if you must add a user, just add one. There is no need to add
|
||
|
3 or 4 users. No need at all. One user is easier to hide than 3+. Use common
|
||
|
sense here, guys.
|
||
|
|
||
|
Once EDIT_PROFILE has been invoked you will be dispatched mercilessly to the
|
||
|
">" prompt. To obtain help, just type HELP and press RETURN. Before I get in-
|
||
|
to adding users, I'll discuss the procedures for pulling user lists and similar
|
||
|
information.
|
||
|
|
||
|
To get full information about the system you are on (projects, users, etc) you
|
||
|
simply need to type:
|
||
|
|
||
|
>list_system -all
|
||
|
|
||
|
You can abbreviate the LIST_SYSTEM command with LS. You can list individual
|
||
|
system attributes by substituting new arguments in place of the -ALL argument.
|
||
|
To see what LS arguments are available, type HELP. You should experiment with
|
||
|
the available "LIST_" commands in EDIT_PROFILE.
|
||
|
|
||
|
Before attempting to add a user on any Prime system you should always list the
|
||
|
system attributes so that you will know what projects and groups are in use.
|
||
|
When you decide to add a super-user, make sure that you add yourself to the
|
||
|
common project (usually DEFAULT) and all of the high-access groups (examples I
|
||
|
have seen are: .ADMINISTRATORS$, .PROJECT_ADMINISTRATORS$, .OPERATORS$,
|
||
|
.NET_MGT$, etc). Adding super-users is not always a good idea. Never add
|
||
|
more than 1 or 2 users on a system. Also, try to follow the naming convent-
|
||
|
ions used on the system. If users have their first name as a User ID, then
|
||
|
when you add a user make sure that your new user's User ID is a first name.
|
||
|
Likewise, if all users have their initials as their User ID then make sure
|
||
|
that your new user has a User ID with initials. Now, to add a user, type:
|
||
|
|
||
|
>add_user username
|
||
|
|
||
|
Where "username" is the User ID you wish to use. After you type this you will
|
||
|
be asked for your password. Enter the password that you wish to use. Then you
|
||
|
will be asked for your group(s) and your default login project. Like I said,
|
||
|
you should use the "LIST_" commands to see what group(s) are in use. Groups
|
||
|
always start with a period (.). Give yourself the administrator groups and you
|
||
|
will be doing good. As for project, an entry of DEFAULT will usually suffice.
|
||
|
|
||
|
An easier method to add users is to use the -LIKE argument. Try this:
|
||
|
|
||
|
>add_user username -like system
|
||
|
|
||
|
Again, "username" is the name of the User ID that you wish to use. This arg-
|
||
|
ument of the ADD_USER command will make a copy of the user called SYSTEM (found
|
||
|
on all Primes that I have seen; also a user of the super-user class) and add
|
||
|
the copy as a new user but with a different name. Now, set your password with
|
||
|
the CHANGE_USER command. Type:
|
||
|
|
||
|
>change_user username -pw
|
||
|
|
||
|
You will be prompted for your new password. Ta da. You now have a User ID
|
||
|
with the same stats as the User ID "SYSTEM". Occasionally upon adding a user
|
||
|
you may have to add your User ID to a file called LOGUFD located in one of the
|
||
|
UFD's off of MFD 0. This will generally not happen. If it does, then simply
|
||
|
correct it with one of your other accounts.
|
||
|
|
||
|
You are advised not to wontonly delete users or edit them. Also try not to use
|
||
|
the CHANGE_SYSTEM_ADMINISTRATOR command. In basis, type HELP and start to exp-
|
||
|
eriment (but be careful of what you do). Make sure that you keep track of the
|
||
|
changes that you make so that in the case you mess something up you can fix it.
|
||
|
Get your feet wet.
|
||
|
|
||
|
If you find yourself in PA mode you can do most of the above, but only regard-
|
||
|
ing the project that you are administrating. Thus you can only add users to
|
||
|
that project, only delete users from that project, etc. This means no adding
|
||
|
of super-users, etc.
|
||
|
|
||
|
_______________________________________________________________________________
|
||
|
|
||
|
THE DISTRIBUTED SYSTEM MANAGEMENT (DSM) UTILITIES
|
||
|
|
||
|
|
||
|
The DSM utilities is a set of commands and services that help with the admini-
|
||
|
stration and day-to-day operation of Prime computer systems. It is intended
|
||
|
primarily for use with networked systems, but can also be used on single Prime
|
||
|
systems (those lacking networking capability).
|
||
|
|
||
|
The DSM utilities allow Prime system administrators and senior operators to
|
||
|
perform system management tasks from any point on a network.
|
||
|
|
||
|
DSM's main facilities are summarized below.
|
||
|
|
||
|
o SIM (System Information/Metering) Commands
|
||
|
System status and resource monitoring of local and remote
|
||
|
systems from any point within the network.
|
||
|
|
||
|
o RESUS (REmote System USer) Facility
|
||
|
Control of remote Prime systems from any terminal. Allows use of
|
||
|
console-only commands from a remote terminal.
|
||
|
|
||
|
o Collection and collation of event messages, including PRIMOS and
|
||
|
network events, through DSM's Unsolicited Message Handling (UMH)
|
||
|
and logging services, with redirection of event messages to
|
||
|
log files or users throughout the network.
|
||
|
|
||
|
o Generalized logging of DSM messages in private or system logs, with
|
||
|
commands for administering, displaying and printing logs.
|
||
|
|
||
|
o Facilities for defining users' access to DSM commands throughout the
|
||
|
network, in a single configuration file.
|
||
|
|
||
|
As you can see, the DSM utilities can be a very useful asset to have. Unfort-
|
||
|
unately, SYS1 privileges (administrator) are required to use the most exciting
|
||
|
aspects of the DSM utilities. All normal users can utilize the SIM commands,
|
||
|
and I have even mentioned some of them in other parts of this series. What is
|
||
|
really useful to us, however, are the RESUS and log utilities. In a nutshell
|
||
|
here are the basic DSM commands. After this list will be full discourses on
|
||
|
the RESUS utility and the SIM commands.
|
||
|
|
||
|
|
||
|
Remote System Control:
|
||
|
|
||
|
RESUS -- Invokes Prime's REmote System USer facility.
|
||
|
|
||
|
Event Message Handling and Redirection:
|
||
|
|
||
|
CONFIG_UM -- configures DSM Unsolicited Message Handling.
|
||
|
|
||
|
Administering Logs:
|
||
|
|
||
|
ADMIN_LOG -- creates and administers DSM log files.
|
||
|
|
||
|
Displaying and Printing Logs:
|
||
|
|
||
|
DISPLAY_LOG -- displays and prints the contents of log files,
|
||
|
including system and network event logs.
|
||
|
|
||
|
DSM Configurator Commands:
|
||
|
|
||
|
CONFIG_DSM -- creates a new DSM configuration file.
|
||
|
DISTRIBUTE_DSM -- distributes a new DSM configuration file.
|
||
|
STATUS_DSM -- displays the currently active configuration.
|
||
|
|
||
|
DSM Startup and Shutdown Commands:
|
||
|
|
||
|
START_DSM - starts DSM system console commands.
|
||
|
STOP_DSM - stops DSM system console commands.
|
||
|
|
||
|
For more information on any of the DSM commands, type:
|
||
|
|
||
|
HELP command-name or command-name -HELP
|
||
|
|
||
|
_______________________________________________________________________________
|
||
|
|
||
|
THE RESUS UTILITY
|
||
|
|
||
|
|
||
|
RESUS is the REmote System USer facility, and allows remote operation of the
|
||
|
physical supervisor console from any terminal. What this basically means is
|
||
|
that, with RESUS enabled, all users with administrator access will be able to
|
||
|
execute commands that are normally only executable from the system console. It
|
||
|
will let you force log other users off the system (not a good idea to use this
|
||
|
capability unless you MUST), take the system down (you must be STUPID to do
|
||
|
such a thing), etc. RESUS supports the following command line options:
|
||
|
|
||
|
{-ENABLE }
|
||
|
{-DISABLE [-FORCE] }
|
||
|
{-START [-ON node name] }
|
||
|
{-STOP }
|
||
|
{-STATUS [-ON node group] }
|
||
|
{-HELP [-NO_WAIT] }
|
||
|
{-USAGE }
|
||
|
|
||
|
-ENABLE
|
||
|
This option enables RESUS to be used on a system. It is only
|
||
|
valid from the supervisor terminal.
|
||
|
|
||
|
-DISABLE
|
||
|
This option is used to prevent RESUS from being used on a system on
|
||
|
which it has previously been -ENABLEd. The -FORCE option must be
|
||
|
supplied if the RESUS is actually in use. It is only valid from the
|
||
|
supervisor terminal.
|
||
|
|
||
|
-START [-ON node name]
|
||
|
This is the means by which an authorised user of RESUS may
|
||
|
invoke REmote System USer facilities on a system. If -ON node name
|
||
|
is omitted, the default is the local node. For this command to be
|
||
|
successful, RESUS must previously have been -ENABLEd at the
|
||
|
supervisor terminal.
|
||
|
|
||
|
-STOP
|
||
|
This option terminates remote control of the supervisor terminal,
|
||
|
leaving the REmote System USer facilities available for use by
|
||
|
other authorised users. It is only valid from the remote terminal
|
||
|
in control of the supervisor terminal through RESUS.
|
||
|
|
||
|
-STATUS [-ON nodegroup]
|
||
|
This displays the current status of RESUS on all nodes in a
|
||
|
specified node group. If a node group is not specified, the status
|
||
|
of the local node is displayed.
|
||
|
|
||
|
-HELP, -H [-NO_WAIT, -NW]
|
||
|
|
||
|
Displays command-specific Help text.
|
||
|
|
||
|
-USAGE
|
||
|
|
||
|
Displays command line syntax.
|
||
|
|
||
|
_______________________________________________________________________________
|
||
|
|
||
|
THE DSM SIM COMMANDS
|
||
|
|
||
|
|
||
|
The DSM SIM (System Information/Metering) commands gather and display
|
||
|
information about system/network status and resource usage from any point on
|
||
|
the network.
|
||
|
|
||
|
SIM commands are invoked from the PRIMOS command line. They can be invoked
|
||
|
from any terminal to display information about any system on the network. They
|
||
|
can be invoked once, or periodically at specified time intervals. Output
|
||
|
displays are paginated for screen display and can be recorded in private or
|
||
|
system log files. User access to SIM commands on local and remote nodes is
|
||
|
controlled by DSM security.
|
||
|
|
||
|
A list of SIM commands and descriptions of the general SIM options follows.
|
||
|
|
||
|
LIST_ASSIGNED_DEVICES - lists assigned devices
|
||
|
LIST_ASYNC - lists asynchronous terminals
|
||
|
LIST_COMM_CONTROLLERS - lists comms controllers configuration
|
||
|
LIST_CONFIG - lists PRIMOS coldstart configuration
|
||
|
LIST_DISKS - lists disk partition names
|
||
|
LIST_LAN_NODES - lists nodes on LAN300 local networks
|
||
|
LIST_MEMORY - lists physical memory usage
|
||
|
LIST_PRIMENET_NODES - lists PRIMENET configured nodes
|
||
|
LIST_PRIMENET_LINKS - lists active PRIMENET links
|
||
|
LIST_PRIMENET_PORTS - lists assigned PRIMENET ports
|
||
|
LIST_PROCESS - lists active system processes
|
||
|
LIST_SEMAPHORES - lists active semaphores
|
||
|
LIST_SYNC - lists synchronous line configuration
|
||
|
LIST_UNITS - lists users open file units
|
||
|
LIST_VCS - lists active virtual circuits
|
||
|
|
||
|
General SIM options are:
|
||
|
|
||
|
-HELP, -H [-NO_WAIT, -NW]
|
||
|
-USAGE
|
||
|
-ON {node, nodegroup}
|
||
|
-PRIVATE_LOG, -PLOG pathname [-NTTY, -N]
|
||
|
-SYSTEM_LOG, -SLOG pathname [-NTTY, -N]
|
||
|
-NO_WAIT, -NW
|
||
|
-FREQ integer
|
||
|
-TIMES integer
|
||
|
-START, -S date+time
|
||
|
-STOP date+time
|
||
|
|
||
|
-ON {node, nodegroup}
|
||
|
|
||
|
This option allows you to specify the target node, or nodegroup
|
||
|
to which the command is to be directed. The default is to direct
|
||
|
the command to the node on which the command is invoked.
|
||
|
|
||
|
|
||
|
-PRIVATE_LOG, -PLOG pathname [ -NTTY, -N ]
|
||
|
-SYSTEM_LOG, -SLOG pathname [ -NTTY, -N ]
|
||
|
|
||
|
The -PRIVATE_LOG option allows you to specify a standard PRIMOS
|
||
|
pathname as a DSM log file to which all messages from the target
|
||
|
nodes are to be logged. If the log does not already exist, it is
|
||
|
created automatically for you. User DSMASR (the DSM application
|
||
|
server) must have ALL access to the directory that contains the
|
||
|
log.
|
||
|
|
||
|
The -SYSTEM_LOG option allows you a similar facility using logs
|
||
|
that are maintained on the system logging directory DSM*>LOGS.
|
||
|
System logs only exist on this directory or its subdirectories,
|
||
|
and must be created with the ADMIN_LOG command prior to use.
|
||
|
|
||
|
Logged data can subsequently be retrieved, printed and
|
||
|
displayed using the DISPLAY_LOG command.
|
||
|
|
||
|
-NTTY, -N; can be used with the -PRIVATE_LOG and -SYSTEM_LOG
|
||
|
options, and indicates that no data is to be displayed to the
|
||
|
user. When this option is used, the command spawns a phantom
|
||
|
which executes the command on your behalf, and frees your
|
||
|
terminal.
|
||
|
|
||
|
|
||
|
-HELP, -H [NO_WAIT, -NW]
|
||
|
|
||
|
This option overrides all other options to display help
|
||
|
information about the associated command.
|
||
|
|
||
|
|
||
|
-USAGE
|
||
|
|
||
|
This option overrides all other options to display usage
|
||
|
information, for the associated command.
|
||
|
|
||
|
|
||
|
-NO_WAIT, -NW
|
||
|
|
||
|
This option indicates that you are not to be prompted or queried
|
||
|
during the command output display.
|
||
|
|
||
|
If this option is not used, you are prompted between each target
|
||
|
node's response, and after every 23 lines (1 page) of output
|
||
|
displays '--More--' and waits, for your response. To see more
|
||
|
output press the carraige return. To supress further output and
|
||
|
return to command level, type Q, Quit, N, or No. Any other
|
||
|
response will display more output.
|
||
|
|
||
|
-FREQ
|
||
|
-TIMES
|
||
|
-START, -S
|
||
|
-STOP
|
||
|
|
||
|
These options can be used to implement periodic execution of a
|
||
|
command.
|
||
|
|
||
|
-FREQ option provides periodic execution of a command, with
|
||
|
the interval between executions determined in seconds. The
|
||
|
interval you specify is the interval between two successive
|
||
|
executions of a command, and not the interval between completion
|
||
|
of the command's display and the next execution. The interval is
|
||
|
corrected to the nearest multiple of four seconds below that
|
||
|
specified.If FREQ 0 is specified, the command is re-executed
|
||
|
immediately on completion of the previous execution. If the
|
||
|
interval elapses before completion of the previous display, the
|
||
|
next execution is delayed until the display is complete.
|
||
|
|
||
|
|
||
|
-TIMES is used in association with the -FREQ option, to set a
|
||
|
limit on the number of times that a command is to be executed.
|
||
|
|
||
|
|
||
|
-START, -S sets the date and time that execution starts. The
|
||
|
format can be in either ISO standard:
|
||
|
|
||
|
(YY_MM_DD.HH:MM:SS)
|
||
|
|
||
|
or in USA standard:
|
||
|
|
||
|
(MM/DD/YY.HH:MM:SS)
|
||
|
|
||
|
Defaults are: year to current year; date to current date; and
|
||
|
time to zero.
|
||
|
|
||
|
-STOP sets the date and time execution stops; format and
|
||
|
defaults are the same as for -Start.
|
||
|
|
||
|
In the absence of any of these four options, the command is
|
||
|
executed once, and immediately.
|
||
|
|
||
|
In the presence of any of these four options, the defaults
|
||
|
applied to the unspecified options are:
|
||
|
|
||
|
-FREQ immediate reexecution
|
||
|
-TIMES infinite
|
||
|
-START now
|
||
|
-STOP never
|
||
|
|
||
|
|
||
|
For more information on any of the SIM commands, type:
|
||
|
|
||
|
HELP command-name or command-name -HELP
|
||
|
|
||
|
_______________________________________________________________________________
|
||
|
|
||
|
PRIMOS ELECTRONIC MAIL CAPABILITIES
|
||
|
|
||
|
|
||
|
PRIMOS, like any other operating system worth it's beans, supports full elect-
|
||
|
ronic mail capabilities. However, the mail system used will vary from system
|
||
|
to system. A lack of standards? Perhaps. But I find it enjoyable learning
|
||
|
the differences between the many mail systems available.
|
||
|
|
||
|
I won't discuss how to use the mail systems I discuss due to lack of space, but
|
||
|
that should pose no problem, as all of them have online help available.
|
||
|
|
||
|
Prime Computer, Inc.'s old mail system (invoked by typing MAIL) is your typical
|
||
|
run-of-the-mill mail system. It's not too difficult to figure out how to use.
|
||
|
|
||
|
Prime Computer, Inc. has also created a PRIMOS implementation of the UNIX XMAIL
|
||
|
system. This seems to be their preferred electronic mail system. It is very
|
||
|
easy to use, not to mention very powerful.
|
||
|
|
||
|
My favorite electronic mail server is NETMAIL, written by those cunning prog-
|
||
|
rammers at Bramalea Software Systems (the same firm that created LOGIN_SENTRY).
|
||
|
NETMAIL is the mail server with the most useful features. Not only do you get
|
||
|
the normal features of sending user-to-user mail locally and to similarly con-
|
||
|
figured sites on the network, you can also send:
|
||
|
|
||
|
o Courtesy copies to other users
|
||
|
o Encapsulated non-SAM files
|
||
|
|
||
|
Courtesy copies is basically message forwarding. Assume I wrote a memorandum.
|
||
|
If I wanted all the people on the 'Board of Trustees' to get a copy I just send
|
||
|
cc's (courtesy copies) to them.
|
||
|
|
||
|
The file encapsulation feature makes NETMAIL a pseudo-file transfer application
|
||
|
like FTS (File Transfer Service, Prime's answer to UNIX's FTP utility). Say I
|
||
|
wrote a useful public domain program and want to distribute it to some users on
|
||
|
the local system and some remote systems. Don't want them to get the sources,
|
||
|
now do we? So we encapsulate the executable file (compiled program) and mail
|
||
|
it out as an encapsulated file. When the recievers read their mail, they will
|
||
|
be able to tell NETMAIL to save it as a file to their directory. Very nice!
|
||
|
|
||
|
Some sites use custom-written mail utilities. It all depends. Most, if not
|
||
|
all, are rather user-friendly and easy to learn without documentation. Don't
|
||
|
forget! Online help files.
|
||
|
|
||
|
_______________________________________________________________________________
|
||
|
|
||
|
ED - THE PRIMOS TEXT EDITOR
|
||
|
|
||
|
|
||
|
ED is the PRIMOS text editor and it is line-oriented as opposed to full-screen.
|
||
|
If you are using VT-100 or a similar emulation, you might play around with the
|
||
|
EMACS full-screen editor, but I won't be discussing EMACS here. After all, it
|
||
|
comes with it's own interactive tutorial. Another reason why I won't be discu-
|
||
|
ussing it is because not all Prime sites have it online (it is a separately
|
||
|
priced product). RUNOFF is another separately priced product. It is a fully
|
||
|
equipped word processor. ED, on the other hand, comes with PRIMOS and it is
|
||
|
always available.
|
||
|
|
||
|
To invoke the PRIMOS EDitor, type:
|
||
|
|
||
|
OK, ed
|
||
|
|
||
|
This will enter ED with an empty workspace. You are creating a new file. To
|
||
|
edit an existing filesystem object, type:
|
||
|
|
||
|
OK, ed filename
|
||
|
|
||
|
When you enter ED with an empty workspace you will be dumped into INPUT mode.
|
||
|
Everything you type here will be taken as input into the file you are creating.
|
||
|
|
||
|
If you tell ED to load a file and edit it (ie, ED filename) then you will be
|
||
|
dumped into EDIT mode. Everything you type will be taken as ED editing comm-
|
||
|
ands.
|
||
|
|
||
|
To switch between INPUT and EDIT mode, issue a null line (that is to say, press
|
||
|
the RETURN key). This brings a new problem into mind. How do you make a blank
|
||
|
line if when you press RETURN alone it switches between modes? Yes, this is a
|
||
|
shortcoming to PRIMOS users that are used to standard text editing systems. To
|
||
|
create a 'null' line, type a space and then press RETURN. It looks null, but
|
||
|
it is really treated as a line 1 character in length by ED. Take note that
|
||
|
both INPUT mode and EDIT mode use no prompt.
|
||
|
|
||
|
Ok, to illustrate what we have learned so far, consider this 'pretend' session
|
||
|
with the ED line editor:
|
||
|
|
||
|
OK, ed
|
||
|
INPUT
|
||
|
Hey, this is pretty nice. A nice text editor. Heh. Ok, lets see what
|
||
|
Damn! No wordwrap. Remember, press RETURN at the end of each 79
|
||
|
characters, ok? Now, lets go to EDIT mode...
|
||
|
|
||
|
EDIT
|
||
|
wow
|
||
|
BAD WOW
|
||
|
|
||
|
INPUT
|
||
|
oops! 'wow' is not an ED command! I'll discuss ED's EDIT mode
|
||
|
commands in a few minutes. Let's quit!
|
||
|
|
||
|
EDIT
|
||
|
q
|
||
|
FILE MODIFIED OK TO QUIT? y
|
||
|
OK,
|
||
|
|
||
|
Okay, we are back at the PRIMOS command line. Damn! We forgot to save our
|
||
|
newly-created text! What do we do now! Don't panic. Your text is still
|
||
|
floating around in PRIMOS' memory. To restore your ED session, type:
|
||
|
|
||
|
OK, start 1000 <-- Continues from break
|
||
|
|
||
|
or
|
||
|
|
||
|
OK, start 1001 <-- Resume in EDIT mode
|
||
|
|
||
|
So, let's test it out, shall we?
|
||
|
|
||
|
OK, start 1001
|
||
|
|
||
|
EDIT
|
||
|
file sample_text
|
||
|
q
|
||
|
OK,
|
||
|
|
||
|
Alright. A few comments are now in order. Normally, when done with a docu-
|
||
|
ment you would FILE the text away and then QUIT. If you try and QUIT without
|
||
|
saving new text or changes made to text, you will be told that the file has
|
||
|
been modified and asked for verification to quit. Should you make a 'boo-boo'
|
||
|
you can save your text by using one of the START command variations. The two
|
||
|
EDIT mode commands we have just learned are:
|
||
|
|
||
|
FILE (abbreviated FIL) Files your text to the current UFD
|
||
|
QUIT (abbreviated Q) Exit ED to the PRIMOS command line
|
||
|
|
||
|
An alternate command to save your text is the SAVE command (abbreviated by SA).
|
||
|
I prefer SAVE to FILE because SAVE is also used on my microcomputer. Use
|
||
|
whichever you prefer, however.
|
||
|
|
||
|
A great feature of the START command will now be illustrated. Say you are mov-
|
||
|
ing around UFD's and you end up trying to create a file in a directory that
|
||
|
you don't have W (Write) access in. Oh no! How do we save this new CPL prog-
|
||
|
ram we just created? Simple! Using techniques that you have just learned you
|
||
|
can move to a different UFD (one that you have W access in) and save your text
|
||
|
in. First, get into EDIT mode and QUIT the EDitor. From the PRIMOS command
|
||
|
line, use the OR command to get to your 'home' UFD or ATTACH to a different one
|
||
|
and then issue the START 1001 command. Now FILE your text. Voila! A nice
|
||
|
trick for the forgetful.
|
||
|
|
||
|
We now know the very basics of the PRIMOS line EDitor. We can create new files
|
||
|
from scratch, append text to existing files, save or abort our modifications,
|
||
|
and recover our text if we accidentally quit or hit the BREAK key (or send a
|
||
|
BREAK signal). What we don't know is how to edit the text within an existing
|
||
|
file or how to insert/delete text from an existing file (which is really easy).
|
||
|
So read on!
|
||
|
|
||
|
CAVEAT! PRIMOS normally uses the '?' and '"' (double quote) as the kill and
|
||
|
erase characters, respectively. So typing a '?' in INPUT mode will kill the
|
||
|
entire line. A '"' will similarly erase the previous character. I find the
|
||
|
'?' and '"' characters integral in my documents and you will probably too. The
|
||
|
fix? Simple. From the PRIMOS command line, type:
|
||
|
|
||
|
OK, term -erase <Ctrl-H>
|
||
|
OK, term -kill _
|
||
|
|
||
|
Press CONTROL-H where it says '<Ctrl-H>'. This will make the erase character
|
||
|
a backspace and the kill character the DELETE key. Substitute whatever char-
|
||
|
acters you feel most comfortable with on your microcomputer. I will detail
|
||
|
the TERM command more fully in Part V in the section entitled CUSTOMIZING
|
||
|
YOUR ENVIRONMENT.
|
||
|
|
||
|
Another caveat. The semicolon character at the end of a line (';') will force
|
||
|
a linefeed (as if you had pressed RETURN instead). You can end a line with
|
||
|
either RETURN or a semicolon (useful if your RETURN key is broken?). If you
|
||
|
enter a line of text containing semicolons such as this:
|
||
|
|
||
|
line one;;line three
|
||
|
|
||
|
ED will take it and output it as this:
|
||
|
|
||
|
line one
|
||
|
|
||
|
line three
|
||
|
|
||
|
instead of:
|
||
|
|
||
|
line one;;line three
|
||
|
|
||
|
Depending upon the location of the semicolon it may produce a linefeed or a
|
||
|
mode switch. Thus, the line of text:
|
||
|
|
||
|
This is a caveat;
|
||
|
|
||
|
will switch you from INPUT mode into EDIT mode. Avoid having semicolons at
|
||
|
the end of a line of text. I will detail the method you will have to use to
|
||
|
get around this if you want to have semicolons in your file.
|
||
|
|
||
|
Should you wish to edit/insert/delete lines of text within an existing file you
|
||
|
will have to learn how ED addresses text in it's buffer. I'll assume that you
|
||
|
have loaded a file into ED and are in EDIT mode. The basis of our example:
|
||
|
|
||
|
OK, ed example_file
|
||
|
EDIT
|
||
|
|
||
|
Ok, now let's view the entire file:
|
||
|
|
||
|
p 9999
|
||
|
.NULL.
|
||
|
This is the text of the file we are using in our example.
|
||
|
I will change this file around so that you will see how
|
||
|
to edit/add/delete text in a file.
|
||
|
.NULL.
|
||
|
BOTTOM
|
||
|
|
||
|
This example used 'P 9999' to display the contents. 'P' is the abbreviation
|
||
|
for the PRINT command. So you see, I told ED to PRINT the first 9999 lines of
|
||
|
the file in it's buffer. PRINT displays the specified number of lines (9999 in
|
||
|
the example) and makes the last line displayed the'current' line.
|
||
|
|
||
|
The .NULL. is not a part of the file, but rather a marker. It marks a place
|
||
|
where you can insert text. BOTTOM indicates that you are at the bottom of the
|
||
|
file. Should you type PRINT (or P) again it will simply say:
|
||
|
|
||
|
.NULL.
|
||
|
|
||
|
You can type PRINT (or P) by itself without a numeric argument. PRINT has a
|
||
|
default value of 1. Conversely, a PRINT -n ('n' being a whole number) command
|
||
|
will cause ED to display the file backwards.
|
||
|
|
||
|
To get to the top or bottom of a file, type:
|
||
|
|
||
|
top <--- Abbreviation is T
|
||
|
|
||
|
or
|
||
|
|
||
|
bottom <--- Abbreviation is B
|
||
|
|
||
|
Very simple. To see what the line number of the current line you are pointing
|
||
|
to is, type:
|
||
|
|
||
|
where
|
||
|
BOTTOM
|
||
|
|
||
|
Since we did that PRINT 9999 command we are at the BOTTOM of the file. Let's
|
||
|
go to line 2. Type:
|
||
|
|
||
|
point 2
|
||
|
|
||
|
This will set the ED pointer to line number 2. ED will tell you that you are
|
||
|
at line 2 by displaying line 2 on your screen. You can abbreviate the POINT
|
||
|
command by typing PO instead. Now try the WHERE command (it also has an abb-
|
||
|
reviated form, which is W). Type:
|
||
|
|
||
|
w
|
||
|
LINE 2
|
||
|
|
||
|
Ok, we now know how to move around in a file and display some or all of the
|
||
|
lines of text it contains.
|
||
|
|
||
|
The NEXT command (abbreviated by N) will move the pointer to down the specified
|
||
|
number of lines towards the BOTTOM of the file (assuming that the specified
|
||
|
number is positive). Negative numbers will move the pointer up. As per the PO
|
||
|
command, the new pointer line will be displayed. Here are two examples:
|
||
|
|
||
|
n 1
|
||
|
to edit/add/delete text in a file.
|
||
|
n -2
|
||
|
This is the text of the file we are using in our example.
|
||
|
|
||
|
To find text in the bufferm use the LOCATE command (abbreviated L). For exam-
|
||
|
ple, to find the string 'change this file' type:
|
||
|
|
||
|
l change this file
|
||
|
I will change this file around so that you will see how
|
||
|
|
||
|
Now look and see where you are. Type:
|
||
|
|
||
|
w
|
||
|
LINE 2
|
||
|
|
||
|
Aha! The LOCATE command not only finds the specified string, but sets the
|
||
|
pointer to the new line. Now, try and LOCATE the string 'Aunt Jamima'. Type:
|
||
|
|
||
|
l Aunt Jamima
|
||
|
BOTTOM
|
||
|
|
||
|
ED could not find the string in the text. The new pointer is BOTTOM, meaning
|
||
|
that you are at the last line in the file.
|
||
|
|
||
|
Similar to LOCATE is the FIND command (abbreviated F). FIND only checks to see
|
||
|
if the specified string is at the beginning of a line (ie, the first character
|
||
|
is in column 1, the second in column 2, and so forth). Here is an example:
|
||
|
|
||
|
find to edit/add
|
||
|
to edit/add/delete text in a file.
|
||
|
|
||
|
As with LOCATE, FIND displays the line and resets the pointer to its new loc-
|
||
|
ation. If the string is not found FIND returns with BOTTOM and sets the point-
|
||
|
er to the bottom of the file.
|
||
|
|
||
|
NFIND is a similar command which works in the opposite manner of the FIND comm-
|
||
|
and. NFIND (abbrevated NF) will locate the first line below the current line
|
||
|
which does not begin with the specified string. In the following example, I'll
|
||
|
display use of the NFIND command as well as display the method you may use to
|
||
|
have multiple ED commands on one line.
|
||
|
|
||
|
EDIT
|
||
|
p3
|
||
|
.NULL.
|
||
|
This is the text of the file we are using in our example.
|
||
|
I will change this file around so that you will see how
|
||
|
to edit/add/delete text in a file.
|
||
|
top, nfind This is
|
||
|
I will change this file around so that you will see how
|
||
|
|
||
|
As you can see, NFIND only finds the first line that does not start with the
|
||
|
specified string. Also note the use of the comma as a command delimeter when
|
||
|
issuing the TOP and NFIND commands. Just like with LOCATE and FIND, NFIND will
|
||
|
also return BOTTOM and set the pointer to the end of the file if it cannot find
|
||
|
a line not starting with the string you specify.
|
||
|
|
||
|
You can also FIND and NFIND string patterns on a line starting at a column pos-
|
||
|
ition other than 1. The format for this option is displayed below:
|
||
|
|
||
|
f(8) change this file
|
||
|
I will change this fie around so that you will see how
|
||
|
|
||
|
The parenthesis are required and there cannot be any spaces between the command
|
||
|
and the (#).
|
||
|
|
||
|
To append text to the end of the current line, use the APPEND command (abbrevi-
|
||
|
ated with A). To append ' 02/24/89.' to the end of the last line,
|
||
|
type:
|
||
|
|
||
|
po3
|
||
|
to edit/add/delete text in a file.
|
||
|
a 02/24/89.
|
||
|
to edit/add/delete text in a file. 02/24/89.
|
||
|
|
||
|
You must have a space between the APPEND command and the string you wish to
|
||
|
append. If you had instead typed:
|
||
|
|
||
|
a 02/24/89.
|
||
|
|
||
|
you would have gotten:
|
||
|
|
||
|
to edit/add/delete text in a file.02/24/89.
|
||
|
|
||
|
Use the CHANGE command (abbreviated C) to change a string in the current line.
|
||
|
The first character after the CHANGE command is used as the delimeter. This is
|
||
|
a more complicated command than most other ED commands. Format:
|
||
|
|
||
|
CHANGE/string-1/string-2/[G] [n]
|
||
|
|
||
|
'string-1' is the original string and 'string-2' is the replacement string. G
|
||
|
specifies a global change. If G is ommitted then only the first occurance of
|
||
|
string-1 will be changed. 'n' is a pointer value. If it is 0 or 1 (default
|
||
|
values) then the change will be made to the current line (assuming the G option
|
||
|
is not in use). If 'n' is a value other than 0 or 1 then ED will inspect and
|
||
|
make changes on 'n' lines starting at the current line. As sual, ED will reset
|
||
|
the pointer to the last line inspected. Should the file contain fewer than 'n'
|
||
|
lines then ED will make the specified changes in all the lines of the file and
|
||
|
end by saying BOTTOM.
|
||
|
|
||
|
Should you wish to change a string containing slashes ('/'), CHANGE's delimeter
|
||
|
character, then substitute a new delimeter character. Examples:
|
||
|
|
||
|
f 02
|
||
|
to edit/add/delete text in a file. 02/24/89.
|
||
|
change:02/:01/:
|
||
|
to edit/add/delete text in a file. 01/24/89.
|
||
|
c#/#-#
|
||
|
to edit/add/delete text in a file. 01-24-89.
|
||
|
c/01-24/24-Feb/
|
||
|
to edit/add/delete text in a file. 24-Feb-89.
|
||
|
|
||
|
You should always issue the TOP command prior to making global file changes.
|
||
|
|
||
|
To insert characters at the beginning of a line, use CHANGE like this:
|
||
|
|
||
|
po3
|
||
|
to edit/add/delete text in a file. 24-Feb-89.
|
||
|
c//Last Line --> /
|
||
|
Last Line --> to edit/add/delete text in a file. 24-Feb-89.
|
||
|
|
||
|
Remember our dilema with the semicolon character (';')? Say you want to have
|
||
|
semicolons in your file. Lets put a semicolon in our file. First, lets mark
|
||
|
where we want ED to put the semicolon. Do this:
|
||
|
|
||
|
po3
|
||
|
Last Line --> to edit/add/delete text in a file. 24-Feb-89.
|
||
|
c/. 24/@ 24/
|
||
|
Last Line --> to edit/add/delete text in a file@ 24-Feb-89.
|
||
|
top, c/@/;/g9999
|
||
|
Last Line --> to edit/add/delete text in a file; 24-Feb-89.
|
||
|
|
||
|
If you know where you want your semicolons from the start then just use a char-
|
||
|
acter that you don't plan on using elsewhere in the file (like the '@' charact-
|
||
|
er) and place them where you desire. Then perform the above procedure. Voila!
|
||
|
Instant semicolons when you thought it couldn't be done.
|
||
|
|
||
|
To delete commands from a file, use the DELETE command (abbreviated with D). I
|
||
|
believe I don't like the second line of our example file. Let's delete it. To
|
||
|
do this, type:
|
||
|
|
||
|
po2
|
||
|
d
|
||
|
top
|
||
|
p9999
|
||
|
.NULL.
|
||
|
This is the text of the file we are using in our example.
|
||
|
Last Line --> to edit/add/delete text in a file; 24-Feb-89.
|
||
|
.NULL.
|
||
|
|
||
|
No more line 2. As with other ED commands, DELETE deletes from the current
|
||
|
line. DELETE 1 will not delete the first line of the file, but rather the
|
||
|
current line. DELETE 5 will delete the fifth line from the current line (with
|
||
|
starting line being the current line).
|
||
|
|
||
|
The last ED command I will go over is the RETYPE command (abbreviated with R).
|
||
|
RETYPE will delete tge current line and replace it with the specified string.
|
||
|
Notice that the text of our example is now nonsensical. The second line is a
|
||
|
sentance fragment. All hackers should spell correctly (grin). Let's fix this
|
||
|
grammatical error.
|
||
|
|
||
|
po2
|
||
|
Last Line --> to edit/add/delete text in a file; 24-Feb-89.
|
||
|
r Now you will learn how to edit/add/delete text in a file.
|
||
|
Now you will learn how to edit/add/delete text in a file.
|
||
|
|
||
|
RETYPE followed by a space and a RETURN will delete the current line. This
|
||
|
will make a 'null' line. This can be used as an alternate method for creating
|
||
|
'null' lines (to delimit paragraphs in your text) as opposed to making the line
|
||
|
a blank space.
|
||
|
|
||
|
Let's look at both the original example file and its present form:
|
||
|
|
||
|
ORIGINAL:
|
||
|
|
||
|
This is the text of the file we are using in our example.
|
||
|
I will change this file around so that you will see how
|
||
|
to edit/add/delete text in a file.
|
||
|
|
||
|
CURRENT:
|
||
|
|
||
|
This is the text of the file we are using in our example.
|
||
|
Now you will learn how to edit/add/delete text in a file.
|
||
|
|
||
|
The most useful means of using ED is to upload text (documents or sources) to
|
||
|
the host Prime. Simply load in the file on your microcomputer and go into your
|
||
|
terminal program's editor. Change all occurances of a null line to a space and
|
||
|
a RETURN. Now enter ED and upload your file via the ASCII protocol. You might
|
||
|
need to lower the sending speed (the line delay) if you seem to be sending text
|
||
|
too fast for ED to get it. When done with the send, just enter EDIT mode and
|
||
|
SAVE or FILE the text.
|
||
|
|
||
|
|
||
|
WARNING: If the filename you specify ED to save your text as exists in the cur-
|
||
|
rent UFD then ED will overwrite the file with the text in its buffer. Be care-
|
||
|
ful not to use an existing filename when you save files or you might be sorry.
|
||
|
|
||
|
Now for some important notes on PRIMOS filenames.
|
||
|
|
||
|
1. Filename can be up to 32 characters long.
|
||
|
2. Filenames can only contain the following characters: A-Z, 0-9, & - $ . _ / #
|
||
|
3. The first character cannot be a number.
|
||
|
4. No embedded blanks or special characters (like [ ] ( ) { } etc).
|
||
|
5. All characters are mapped to UPPER CASE by PRIMOS.
|
||
|
|
||
|
Legal Filenames Illegal Filenames
|
||
|
|
||
|
MYFILE MY FILE
|
||
|
TODAYS-SYSTEMS SYSTEMS?
|
||
|
$MONEY 4MONEY
|
||
|
TEXT_FILE ACCTS@PRIME
|
||
|
PRIMES&VAXEN "COOL"
|
||
|
|
||
|
NOTE: ED does not like TABs! Do not use your terminal's TAB key! ED will
|
||
|
not understand them. To tell ED to use a TAB, use the backslash ('\') charac-
|
||
|
ter. Example:
|
||
|
|
||
|
tab\this\out\for me.
|
||
|
|
||
|
is interpreted as:
|
||
|
|
||
|
tab this out for me.
|
||
|
|
||
|
EDitor has many other commands. Type HELP ED to obtain a list of them and a
|
||
|
brief statement of each one's function.
|
||
|
|
||
|
Question: Ever see a more detailed description of how to use a text editor on a
|
||
|
mainframe in a 'how-to-hack-this-op/sys' type of file?
|
||
|
|
||
|
_______________________________________________________________________________
|
||
|
|
||
|
EXPERIMENTATION WITH OTHER PRIMOS APPLICATIONS AND UTILITIES
|
||
|
|
||
|
|
||
|
There are many other applications that you will find on Primes. Some of them
|
||
|
useful and interesting, some of no use whatsoever to the hacker. I can't begin
|
||
|
to describe them here. This part of the series is already larger than I had
|
||
|
planned, so I am going to have to end it here. Here is a very incomplete list
|
||
|
of applications commonly found on Prime computer systems:
|
||
|
|
||
|
PRIME INFORMATION A database system
|
||
|
PRIME WORD A word-processing system
|
||
|
MIDAS A graphics design utility
|
||
|
TELL-A-GRAF A graphing utility
|
||
|
ORACLE A database system
|
||
|
|
||
|
There are tons more application systems to be found on Primes. Experiment! It
|
||
|
is best to experiment with available applications to see if they can be useful.
|
||
|
Read people's word processing documents, see what's in their database. Never
|
||
|
know what you might find! Just be careful not to delete or change anything!
|
||
|
|
||
|
In the next installment of this series I will detail the networking utilities &
|
||
|
software available for the Prime computer. I will cover the network-related
|
||
|
SIM commands, the NETLINK utility, PRIMENET, and more! Look for it.
|
||
|
|
||
|
May the forces of darkness become confused on the way to your house.
|
||
|
|
||
|
_______________________________________________________________________________
|
||
|
|
||
|
End of Part III of the "Introduction to the PRIMOS Operating System"
|
||
|
_______________________________________________________________________________
|
||
|
|
||
|
|