_______________________________________________________________________________

                  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"
_______________________________________________________________________________


