Telenet Scanning by Doc Telecom (July 11, 1988)

**********************************************************************
* *
* TELENET SCANNING *
* *
* written by Doc Telecom on July 11, 1988 *
* *
**********************************************************************

Telenet is the largest Packet Switching network, that I know of at this
present time, I could waste valuable buffer space explaining what packet
switching is and what its uses are ect…so for more information read
“Packet Switching (tomorrow’s communications today) by Roy D. Rosner. It
is quite indepth and one of the books I cherish in my “legal” Telecomm
library.

DEFINITION of GTE TELENET : The packet switching subsidiary of General
Telephone and Electronics. It provides nationwide common user data
communications via packet switching

Information on GTE TELENET :
—————————-

The GTE Telenet commercial packet switched network was developed as a
commercial venture of many of the same principals who developed ARPANET.
GTE Telenet first became in 1979.

OPERATION :
————

Telenets network operation and internal protocals evolved from the ARPANET
experience , with additional cababilitys built into each of the switching
nodes. The network is mostly a ciruit bases packet switching protocol, that
does meet the requirments of the CCITT X.25 protocol at the user interface.
In addition, Telenet also provides customized user interfaces to meet the
need of the individual users. It also provides emulation interfaces.

USER ACCESS :
————-

User access to the network is through one of the three clases of telenet
central offices, such as the one in San Fran, support user access speeds up
to 56k bps is a Class I. Class II offices, such as the one in Spokane,Wa
provide connection speeds up to 9600 bps. Class III offices support rates
up to 1200 bps, such as the one in tucson,arizona. User access can be made
to Public Dialin ports, private dial in ports, or fixed ports dedicated full
time for a single user. Users can implement X.25 compatable software in
there host computer or they can just use the T-net provided interface
processors to provide network service. Terminal Clusters can be accessed to
the network very effciently by use of Telenet access controllers placed at
the customers residence or business,ect..

Telenet Dialups
—————

To find the local Telenet dialup for your area just call WATS to 800-TEL-ENET
and ask them for it but remember to watch out “Every thing you do on telenet
is saved on Mega tape for up to 5 years, and they have installed number
identification since December 1987,

WATS TELENET DIALUPS….

(800) 424-9494 300/1200 BPS
(800) 238-0631 2400 & MPE

These wats will change in aug. 88 so if you would like the new ones leave my
E-Mail on Lunitics Labs (415) 278-7421

What to do one you have your POTS dialup:
—————————————–

Remember to do any scanning on telenet you need a POTS dialup not a WATS,
the WATS dialup is mainly used for Telemail or GTE MAIL., or SPRINT HP’s
Call your local dial up and you should see something that says TELENET
617 18m, or whatevr…just hit a few times. and you should see
something that looks like this.

@

at the “@” prompt type in NPA XXX..for now just use your area code…

like this….( this is a Network User Address or NUA)

@ 415 333

it will then either connect you, or say “Collect Connection Refused”,
because you have not used an NUI, more on NUI’s later…

you will see one of the following :

1) call connected …. 2) Remote Procedure Error 11 b6
3) Remote Procedure Error 11 e2
4) Not Reachable 05 e6
5) not reachable 05 db
6) Not operating …. 7) illegal address 03 80
8) Busy 01 00 ….. 9) enhanced network services unavalible at this time please try again 05 d8
10) illegal address 03 ba
11) rejecting 00 7e
12) illegal address 03 42
13) remote procedure error 11 31
14) Refused collect connection 19 00 …..
15) not reachable 05 ed
16) not responding 0d f0

if the call is connected you will find an interesting computer system, or
whatever..

What is an NUI and how do you use it..
—————————————

An NUI or Network User Id is mostly used for connecting to things that give
you the “Refused collect connection” error. I always have an NUI in use when
I am scanning

at the @ promt type:

@ ID USERID

it will come up with a
PASS= promt, so then you enter the password I have a listing of about 80
or so NUI’s and they usually dont die , so here is a few….

ID SIMPCNOE
PASS= 071034

ID FINLAY
PASS= 004461

NUA listing of recent things Scanned by DOC telecom:
—————————————————-

NUA SYSTEM TYPE SPECIAL NOTES
————— ———————– ———————————-
804 35 ?
804 43 PRIME PRIMENET
303 38 PRIME PRIMENET 21.0.3.C1 SL
804 60 ?
713 436 CONNECTS
713 450 CONNECTS
713 454 CONNECTS
713 462 CONNECTS
713 431 CONNECTS
612 442 ?
415 333 AOS/VS 7.56
415 334 AOS/VS 7.56
206 20 HP 3000
206 30 HP 3000
206 32 VAX MICRO VMS V4.7
206 35 CONCURRECT COMPUTER CORP
206 38 AOS/VS 7.56
206 42 AOS/VS 7.56
206 44 AOS/VS 7.56
206 40 PRIME PRIMENET 20.2.4
206 53 CONNECTS
206 65 PRIME PRIMENET 20.1.1D OAD
206 72 DIFFRENT KINDS UNIV. OF WASHINGTON
212 137 PRIME PRIMENET 21.0.3.R7.PTC.3 NY60
909 46
303 65 COMPUTER SHARING SYSTEM
212 32 CIDIADVICE CENTER
303 23 PRIME
212 112 VM/370 ONLINE
212 131 VM/370 ONLINE
909 400
909 401
909 403
909 404
909 406
909 407
909 409
909 502
909 508 PRIME
909 600
909 615 PRIME
909 617 PRIME
212 20 “ENTER ID”
212 21 “ENTER ID”
909 810
909 800
909 801
909 802
909 805
909 811
909 815
909 818
909 819
415 37 HP 3000
617 622 UNIX MEDIA LABS…
214 71 PRIME PRIMENET FB.3.3 UUCB
212 146 OFFICE INFO SERVICE
415 20 DIALOG
213 35 MARKETRUN RESERCH AND SALES
909 95 PRIME TELENET NEWS SEWRVICE
305 22 HP 3000 CIERRA COMPUTER
201 25 DEC NJIT ELECTRONIC INFO EXCHANGE
515 30 LEXIS/NEXIS
201 67 WARNER BROTHERS SYSTEMS
201 68 WARNER BROTHERS SYSTEMS
212 28 OUTDIAL
909 12 PRIME
909 13 CONNECTS
909 51 CONNECTS
909 52 CONNECTS
909 54 CONNECTS
909 58 CONNECTS
909 26 PRIME
909 38
909 39 PRIME
909 49
909 55
909 777 CONNECTS
909 65
909 63
909 53
909 56
909 60
909 62

I hope this file is provided to be useful, until next time call with care.

Doc Telecom

FAQ: The Sniffer FAQ Version 1.7

Sniffer FAQ

Version: 1.7
——————————————————————————-
This Security FAQ is a resource provided by:

Internet Security Systems, Inc.
2000 Miller Court West Tel: (770) 441-2531
Norcross, Georgia 30071 Fax: (770) 441-2431

– Internet Scanner … the most comprehensive “attack simulator”
available. –

——————————————————————————-
To get the newest updates of Security files check the following services:

mail info@iss.net with “send index” in message
http://iss.net/
ftp iss.net /pub/

——————————————————————————-
This Sniffer FAQ will hopefully give administrators a clear understanding of
sniffing problems and hopefully possible solutions to follow up with. Sniffers
is one of the main causes of mass break-ins on the Internet today.

This FAQ will be broken down into:

* What a sniffer is and how it works
* Where are sniffers available
* How to detect if a machine is being sniffed
* Stopping sniffing attacks:
o Active hubs
o Encryption
o Kerberos
o One-time password technology
o Non-promiscuous interfaces

——————————————————————————-

What a sniffer is and how it works

Unlike telephone circuits, computer networks are shared communication channels.
It is simply too expensive to dedicate local loops to the switch (hub) for each
pair of communicating computers. Sharing means that computers can receive
information that was intended for other machines. To capture the information
going over the network is called sniffing.

Most popular way of connecting computers is through ethernet. Ethernet protocol
works by sending packet information to all the hosts on the same circuit. The
packet header contains the proper address of the destination machine. Only the
machine with the matching address is suppose to accept the packet. A machine
that is accepting all packets, no matter what the packet header says, is said
to be in promiscuous mode.

Because, in a normal networking environment, account and password information
is passed along ethernet in clear-text, it is not hard for an intruder once
they obtain root to put a machine into promiscuous mode and by sniffing,
compromise all the machines on the net.

——————————————————————————-

Where are sniffers available

Sniffing is one of the most popular forms of attacks used by hackers. One
special sniffer, called Esniff.c, is very small, designed to work on Sunos, and
only captures the first 300 bytes of all telnet, ftp, and rlogin sessions. It
was published in Phrack, one of the most widely read freely available
underground hacking magazines. You can find Phrack on many FTP sites. Esniff.c
is also available on many FTP sites such as coombs.anu.edu.au:/pub/net/log.

You may want to run Esniff.c on an authorized network to quickly see how
effective it is in compromising local machines.

Other sniffers that are widely available which are intended to debug network
problems are:

* Etherfind on SunOs4.1.x
* Snoop on Solaris 2.x and SunOs 4.1 (on ftp playground.sun.com)
* Tcpdump 3.0 uses bpf for a multitude of platforms.
* Packetman, Interman, Etherman, Loadman works on the following platforms:
SunOS, Dec-Mips, SGI, Alpha, and Solaris. It is available on
ftp.cs.curtin.edu.au:/pub/netman/[sun4c|dec-mips|sgi|alpha|solaris2]/
[etherman-1.1a|interman-1.1|loadman-1.0|packetman-1.1].tar.Z
Packetman was designed to capture packets, while Interman, Etherman, and
Loadman monitor traffic of various kinds.

DOS based sniffers

* Gobbler for IBM DOS Machines
* ethdump v1.03
Available on ftp
ftp.germany.eu.net:/pub/networking/inet/ethernet/ethdp103.zip
* ethload v1.04
Companion utility to a ethernet monitor. Available on ftp
ftp.germany.eu.net:/pub/networking/monitoring/ethload/ethld104.zip

Commercial Sniffers are available at:

* Network General.

Network General produces a number of products. The most
important are the Expert Sniffer, which not only sniffs on the
wire, but also runs the packet through a high-performance expert
system, diagnosing problems for you. There is an extension onto
this called the “Distributed Sniffer System” that allows you to
put the console to the expert sniffer on you Unix workstation
and to distribute the collection agents at remote sites.

* Microsoft’s Net Monitor

” My commercial site runs many protocols on one wire – NetBeui,
IPX/SPX, TCP/IP, 802.3 protocols of various flavors, most
notably SNA. This posed a big problem when trying to find a
sniffer to examine the network problems we were having, since I
found that some sniffers that understood Ethernet II parse out
some 802.3 traffic as bad packets, and vice versa. I found that
the best protocol parser was in Microsoft’s Net Monitor product,
also known as Bloodhound in its earlier incarnations. It is able
to correctly identify such oddities as NetWare control packets,
NT NetBios name service broadcasts, etc, which etherfind on a
Sun simply registered as type 0000 packet broadcasts. It
requires MS Windows 3.1 and runs quite fast on a HP XP60 Pentium
box. Top level monitoring provides network statistics and
information on conversations by mac address (or hostname, if you
bother with an ethers file). Looking at tcpdump style details is
as simple as clicking on a conversation. The filter setup is
also one of the easiest to implement that I’ve seen, just click
in a dialog box on the hosts you want to monitor. The number of
bad packets it reports on my network is a tiny fraction of that
reported by other sniffers I’ve used. One of these other
sniffers in particular was reporting a large number of bad
packets with src mac addresses of aa:aa:aa:aa:aa:aa but I don’t
see them at all using the MS product. – Anonymous

——————————————————————————-

How to detect a sniffer running.

To detect a sniffing device that only collects data and does not respond to any
of the information, requires physically checking all your ethernet connections
by walking around and checking the ethernet connections individually.

It is also impossible to remotely check by sending a packet or ping if a
machine is sniffing.

A sniffer running on a machine puts the interface into promiscuous mode, which
accepts all the packets. On some Unix boxes, it is possible to detect a
promiscuous interface. It is possible to run a sniffer in non-promiscuous mode,
but it will only capture sessions from the machine it is running on. It is also
possible for the intruder to do similiar capture of sessions by trojaning many
programs such as sh, telnet, rlogin, in.telnetd, and so on to write a log file
of what the user did. They can easily watch the tty and kmem devices as well.
These attacks will only compromise sessions coming from that one machine, while
promiscuous sniffing compromises all sessions on the ethernet.

For SunOs, NetBSD, and other possible BSD derived Unix systems, there is a
command

“ifconfig -a”

that will tell you information about all the interfaces and if they are in
promiscuous mode. DEC OSF/1 and IRIX and possible other OSes require the device
to be specified. One way to find out what interface is on the system, you can
execute:

# netstat -r
Routing tables

Internet:
Destination Gateway Flags Refs Use Interface
default iss.net UG 1 24949 le0
localhost localhost UH 2 83 lo0

Then you can test for each interface by doing the following command:

#ifconfig le0
le0: flags=8863
inet 127.0.0.1 netmask 0xffffff00 broadcast 255.0.0.1

Intruders often replace commands such as ifconfig to avoid detection. Make sure
you verify its checksum.

There is a program called cpm available on ftp.cert.org:/pub/tools/cpm that
only works on Sunos and is suppose to check the interface for promiscuous flag.

Ultrix can possibly detect someone running a sniffer by using the commands
pfstat and pfconfig.

pfconfig allows you to set who can run a sniffer
pfstat shows you if the interface is in promiscuous mode.

These commands only work if sniffing is enabled by linking it into the kernel.
by default, the sniffer is not linked into the kernel. Most other Unix systems,
such as Irix, Solaris, SCO, etc, do not have any flags indication whether they
are in promiscuous mode or not, therefore an intruder could be sniffing your
whole network and there is no way to detect it.

Often a sniffer log becomes so large that the file space is all used up. On a
high volume network, a sniffer will create a large load on the machine. These
sometimes trigger enough alarms that the administrator will discover a sniffer.
I highly suggest using lsof (LiSt Open Files) available from
coast.cs.purdue.edu:/pub/Purdue/lsof for finding log files and finding programs
that are accessing the packet device such as /dev/nit on SunOs.

There is no commands I know of to detect a promiscuous IBM PC compatible
machine, but they atleast usually do not allow command execution unless from
the console, therefore remote intruders can not turn a PC machine into a
sniffer without inside assistance.

——————————————————————————-

Stopping sniffing attacks

Active hubs send to each system only packets intended for it rendering
promiscuous sniffing useless. This is only effective for 10-Base T.

The following vendors have available active hubs:

* 3Com
* HP

——————————————————————————-

Encryption

There are several packages out there that allow encryption between connections
therefore an intruder could capture the data, but could not decypher it to make
any use of it.

Some packages available are:

* deslogin is one package available at ftp
coast.cs.purdue.edu:/pub/tools/unix/deslogin .

* swIPe is another package available at
ftp.csua.berkeley.edu:/pub/cypherpunks/swIPe/

* Netlock encrypts all (tcp, udp, and raw ip based) communications
transparently. It has automatic (authenticated Diffie-Helman) distibuted
key management mechanism for each host and runs on the SUN 4.1 and HP 9.x
systems. The product comes with a Certification Authority Management
application which generates host certificates (X.509) used for
authentication between the hosts. and provides centralized control of each
Hosts communications rules.

The product is built by Hughes Aircraft and they can be reached at
800-825-LOCK or email at netlock@mls.hac.com.

——————————————————————————-

Kerberos

Kerberos is another package that encrypts account information going over the
network. Some of its draw backs are that all the account information is held on
one host and if that machine is compromised, the whole network is vulnerable.
It is has been reported a major difficulty to set up. Kerberos comes with a
stream-encrypting rlogind, and stream-encrypting telnetd is available. This
prevents intruders from capturing what you did after you logged in.

There is a Kerberos FAQ at ftp at rtfm.mit.edu in
/pub/usenet/comp.protocols/kerberos/Kerberos_Users__Frequently_Asked_Questions_1.11

——————————————————————————-

One time password technology

S/key and other one time password technology makes sniffing account information
almost useless. S/key concept is having your remote host already know a
password that is not going to go over insecure channels and when you connect,
you get a challenge. You take the challenge information and password and plug
it into an algorithm which generates the response that should get the same
answer if the password is the same on the both sides. Therefore the password
never goes over the network, nor is the same challenge used twice. Unlike
SecureID or SNK, with S/key you do not share a secret with the host. S/key is
available on ftp:thumper.bellcore.com:/pub/nmh/skey

Other one time password technology is card systems where each user gets a card
that generates numbers that allow access to their account. Without the card, it
is improbable to guess the numbers.

The following are companies that offer solutions that are provide better
password authenication (ie, handheld password devices):

Secure Net Key (SNK)

Digital Pathways, Inc.
201 Ravendale Dr. Mountainview, Ca.
97703-5216 USA

Phone: 415-964-0707 Fax: (415) 961-7487

Secure ID

Security Dynamics,
One Alewife Center
Cambridge, MA 02140-2312
USA Phone: 617-547-7820
Fax: (617) 354-8836
Secure ID uses time slots as authenication rather than challenge/response.

ArKey and OneTime Pass

Management Analytics
PO Box 1480
Hudson, OH 44236
Email: fc@all.net
Tel:US+216-686-0090 Fax: US+216-686-0092

OneTime Pass (OTP):
This program provides unrestricted one-time pass codes on a user by user basis
without any need for cryptographic protocols or hardware devices. The user
takes a list of usable pass codes and scratches out each one as it is used. The
system tracks usage, removing each passcode from the available list when it is
used. Comes with a very small and fast password tester and password and pass
phrase generation systems.

ArKey:
This is the original Argued Key system that mutually authenticates users and
systems to each other based on their common knowledge. No hardware necessary.
Comes with a very small and fast password tester and password and pass phrase
generation systems.

WatchWord and WatchWord II

Racal-Guardata
480 Spring Park Place
Herndon, VA 22070
703-471-0892
1-800-521-6261 ext 217

CRYPTOCard

Arnold Consulting, Inc.
2530 Targhee Street, Madison, Wisconsin
53711-5491 U.S.A.
Phone : 608-278-7700 Fax: 608-278-7701
Email: Stephen.L.Arnold@Arnold.Com
CRYPTOCard is a modern, SecureID-sized, SNK-compatible device.

SafeWord

Enigma Logic, Inc.
2151 Salvio #301
Concord, CA 94520
510-827-5707 Fax: (510)827-2593
For information about Enigma ftp to: ftp.netcom.com in directory
/pub/sa/safeword

Secure Computing Corporation:

2675 Long Lake Road
Roseville, MN 55113
Tel: (612) 628-2700
Fax: (612) 628-2701
debernar@sctc.com

——————————————————————————-

Non-promiscuous Interfaces

You can try to make sure that most IBM DOS compatible machines have interfaces
that will not allow sniffing. Here is a list of cards that do not support
promiscuous mode:

Test the interface for promiscuous mode by using the Gobbler. If you find a
interface that does do promiscuous mode and it is listed here, please e-mail
cklaus@iss.net so I can remove it ASAP.

IBM Token-Ring Network PC Adapter
IBM Token-Ring Network PC Adapter II (short card)
IBM Token-Ring Network PC Adapter II (long card)
IBM Token-Ring Network 16/4 Adapter
IBM Token-Ring Network PC Adapter/A
IBM Token-Ring Network 16/4 Adapter/A
IBM Token-Ring Network 16/4 Busmaster Server Adapter/A

The following cards are rumoured to be unable to go into promiscuous mode, but
that the veracity of those rumours is doubtful.

Microdyne (Excelan) EXOS 205
Microdyne (Excelan) EXOS 205T
Microdyne (Excelan) EXOS 205T/16
Hewlett-Packard 27250A EtherTwist PC LAN Adapter Card/8
Hewlett-Packard 27245A EtherTwist PC LAN Adapter Card/8
Hewlett-Packard 27247A EtherTwist PC LAN Adapter Card/16
Hewlett-Packard 27248A EtherTwist EISA PC LAN Adapter Card/32
HP 27247B EtherTwist Adapter Card/16 TP Plus
HP 27252A EtherTwist Adapter Card/16 TP Plus
HP J2405A EtherTwist PC LAN Adapter NC/16 TP

Adapters based upon the TROPIC chipset generally do not support promiscuous
mode. The TROPIC chipset is used in IBM’s Token Ring adapters such as the 16/4
adapter. Other vendors (notably 3Com) also supply TROPIC based adapters.
TROPIC-based adapters do accept special EPROMs, however, that will allow them
to go into promiscuous mode. However, when in promiscuous mode, these adapters
will spit out a “Trace Tool Present” frame.

——————————————————————————-

Acknowledgements

I would like to thank the following people for the contribution to this FAQ
that has helped to update and shape it:

* Padgett Peterson (padgett@tccslr.dnet.mmc.com)
* Steven Bellovin (smb@research.att.com)
* Wietse Venema (wietse@wzv.win.tue.nl)
* Robert D. Graham (robg@NGC.COM)
* Kevin Martinez (kevinm@beavis.qntm.com)
* Frederick B. Cohen (fc@all.net)
* James Bonfield (jkb@mrc-lmb.cam.ac.uk)
* Marc Horowitz (marc@MIT.EDU)
* Steve Edwards (steve@newline.com)
* Andy Poling (Andy.Poling@jhu.edu)
* Jeff Collyer (jeff@cnet-pnw.com)
* Sara Gordon (sgordon@sun1.iusb.indiana.edu)

——————————————————————————-

Copyright

This paper is Copyright (c) 1994, 1995
by Christopher Klaus of Internet Security Systems, Inc.

Permission is hereby granted to give away free copies electronically. You may
distribute, transfer, or spread this paper electronically. You may not pretend
that you wrote it. This copyright notice must be maintained in any copy made.
If you wish to reprint the whole or any part of this paper in any other medium
(ie magazines, books, etc) excluding electronic medium, please ask the author
for permission.

Disclaimer

The information within this paper may change without notice. Use of this
information constitutes acceptance for use in an AS IS condition. There are NO
warranties with regard to this information. In no event shall the author be
liable for any damages whatsoever arising out of or in connection with the use
or spread of this information. Any use of this information is at the user’s own
risk.

Address of Author

Please send suggestions, updates, and comments to:
Christopher Klaus <cklaus@iss.net> of Internet Security Systems, Inc.
<iss@iss.net>

Internet Security Systems, Inc.

Internet Security Systems, Inc, located in Atlanta, Ga., specializes in the
developement of security scanning software tools. Its flagship product,
Internet Scanner, is software that learns an organization’s network and probes
every device on that network for security holes. It is the most comprehensive
“attack simulator” available, checking for over 100 security vulnerabilities.


Christopher William Klaus Voice: (404)441-2531. Fax: (404)441-2431
Internet Security Systems, Inc. Computer Security Consulting
2000 Miller Court West, Norcross, GA 30071

Hacking the HP 3000 by DE BUG

 _____________________________________________________________________________
|                                                                             |
|                            +==================+                             |
|       On Broadway          |HACKING THE HP3000|       Castle Brass          |
|     (415) xxx-xxxx         +==================+      (415) xxx-xxxx         |
|                                                                             |
|       -=Agents=-              Written by...             -=The=-             |
|         -=of=-                                         -=Castle=-           |
|       -=Fortune=-               ________\/             -=Knights=-          |
|                                / DE BUG 00                                  |
|   Seven Gates of Hell          \_\_\_\_\_>            Speed Demon           |
|     (415) xxx-xxxx             / \ / \ / \           (415) xxx-xxxx         |
|                                                                             |
|_____________________________________________________________________________|

PREFACE
#######

This instruction tutorial was written to help members of the hacking community
by giving them useful information about HEWLETT-PACKARD's HP3000 series of
mainframe computers.

The following abbreviations will be used throughout the entirety of this file:

<CR>              -   CARRIAGE RETURN, RETURN, ENTER, ETC.
^Y                -   CONROL CHARACTER (CONTROL-Y IN EXAMPLE)
CAPITAL LETTERS   -   COMPUTER OUTPUT AND USER INPUT

SYSTEM INFORMATION
###### ###########

Unlike its predecessor, the HP2000, the HP3000 runs on the MPE V operating
system which can support up to 101 LDEVs (Logical Devices) in a time-sharing
environment.  MPE V allows the 3000 to access many more software/database
packages than the 2000, as it is =not= a TSB (Time Shared Basic Environment).
The systems usually run on various levels of MPE V, although I have heard
that Hewlett-Packard is now beginning to upgrade the CPU and systems design
of their machine in order for a better chance at competing with other large
mainframe computers (The 3000 was put together in 1979!)

LOGON PROCEDURE
##### #########

HP3000s are distinguishable from other systems merely by their initial
logon message which you get after a couple of <CR>'s, ^F's, or ^E's:

:EXPECTED :HELLO, :JOB, :DATA  (CIERR 1402)

MPE is easily recognized by its : prompt.  Once you have received the : 
prompt, you are then allowed a chance at logging on. The logon process
will contain the following pieces of data:

JOB ID       :  This is used to allow users to distinguish terminal sessions
                that are being run on the same group name. It consists of 1 
                letter followed by up to 7 characters (not ','). My favorite
                ones to use are MANAGER, OPERATOR, and some nasty ones when
                I get frustrated or bored. The first time hacker may not wish
                to use these as they draw unwanted attention if they are not
                used in the right ways.

USER NAME    :  The user name consists of up to 8 letters, (e.g.) GEBHARDT

GROUP NAME   :  The group name consists of up to 8 letters and is often times
                the same as the account name, but not always! (We'll discuss
                determination of all of these later..)

ACCOUNT NAME :  The account name consists of 1 letter followed by up to
                7 letters or digits (I may have seen more, but usually these
                account names are kept as short as possible...)

PASSWORD     :  The passwords are from 1 to 8 printing and/or non-printing
                (CONTROL) characters. As with the 2000, the following
                characters will never be found in any PW's so don't bother:
                LINE DELETE (^X), NULL (^@), RETURN (^M), LINEFEED (^J),
                X-OFF (^S), X-ON (^Q), UNDERSCORE (_)

LOGON FORMAT
##### ######

:HELLO (JOB ID),(USER NAME)/(USER PW).(ACCOUNT NAME),(GROUP NAME)/(GROUP PW)

The passwords may not be typed in at the same time as the user/group/acct
names, as the 3000 will prompt for them afterwards, but that is up to your
discretion. A simpler example would be:

HELLO MANAGER.SYS,PUB (Remember, the JOB ID is not needed! Optional!)

The computer will then respond with...

ENTER USER PASSWORD:

..if the user/group/account all exist. Once past this one, you might
have to hack a group pw as well (usually not...)

LOGON NOTE:  User and Group PW's are =NOT= necessary! If you get lucky,
             the sysop might not have implemented one onto the them!
             If this is the case, you will be automatically logged on!

A final comment on the logon sequence: The only USER NAMES/GROUP NAMES
that are =always= going to be found on the 3000 are:

MANAGER.SYS,PUB (or maybe just plain MANAGER.SYS)
FIELD.SUPPORT

If you hack these, then you have PRIVs and will be able to make your own
accounts and/or use others. So, you the hacker, will try:

:HELLO MANAGER.SYS,PUB (if it works, then good!)
:HELLO MANAGER.SYS
:HELLO FIELD.SUPPORT

The HP3000 system is usually set to allow you one try at hacking a certain
user-account, and you will have three tries at the PW before it cans you.
Hewlett-Packard has stepped up its security from the 2000!

USERS
#####

The various users are identified by their USER ID (GEBHARDT), their group
name (GEBHARDT), their ACCOUNT NAME (SBA), and their PASSWORD. USER ID's
have an allocated CPU time, connect time, and user privileges ranging from
SYSTEM MANAGER capability down to just being able to run BASIC or PASCAL.
GROUP ID's are allocated file space on the disks, and are able to support
many #'s of USER ID's on them (e.g.) 5 USERS with USER ID's of:

NELSON, GEBHARDT, SEKHON, DEGNAN, and JEBIAN are all attached to the same
GROUP NAME of CSCI. Each of them is able to have different CPU allocations
and logon time, but all of their files are stored in the same group (CSCI)
and they share the same file directory. Thus, say user JEBIAN wants to 
logon. Let's say his ACCOUNT NAME is ADVANCED. His logon process would be:

:HELLO JEBIAN.ADVANCED,CSCI

..and then he would enter his PASSWORD(s)...

The 3000 has ACCOUNT MANAGERS for each of its accounts (there may be up to
24 different ACCOUNT NAMES, each supporting up to 150 or so GROUPS, which
in turn can support 12 USER NAMES...) Unlike the 2000, there may be more than
one MANAGER for every account, all with the same powers. ACCOUNT MANAGERS
do not have full system privs like the MANAGER.SYS does, but they may still
create their own USER and GROUP names, so if you hacked one of these, then
you essentially control an account and may make your own user accounts for
future use or trading. The 3000 may also have other system managers besides
the MANAGER.SYS, so once you have hacked his PW, you can create other
system manager accounts, and even make non-privileged accounts have privs!
(We will discuss this later...)

NON-PRIVILEGED COMMANDS
### ########## ########

SHOWJOB - Lists =ALL= users and their respective acct/group info as well
          as their session # and their message reception status. If the
          word QUIET is printed, then that particular session will not
          receive messages from you.

SHOWME  - Lists everything you might want to know about your current job
          session. (i.e.) job #, LDEV #, time on, your USER/GROUP/ACCOUNT
          ID's, and more...

SHOWTIME - Lists the time and date.

REPORT  - Lists allocated disk space for the group, as well as total disk
          volume for the ACCOUNT ID. Also shows allocated CPU and total
          used CPU seconds. System manager may do a REPORT @.(ACCT NAME)
          which will tell info on the specified account.

LISTF @.(GROUP NAME).(ACCOUNT NAME)

This command (LIST FILES) allows the user the list the files in any group
directory in any account. Say you wanted to see the files in GEBHARDT.HS,
you would do this:

LISTF @.GEBHARDT.HS

If you wanted more information on the files in his account, then you would do:

LISTF @.GEBHARDT.HS,2 (this will take longer, but it tells file sizes etc.)

Account and system managers may do a LISTF @.(GROUP ID).(ACCT ID),-1
This will show any LOCKWORDS that might have been placed on some files
for added security. LOCKWORDS consist of 8 letters.

TELL (JOB ID),(USER ID).(ACCT ID);[Desired message up to 255 characters]

This command allows you to send a message to any logged in user, as long
as he is not specified as QUIET as discussed in the SHOWJOB command.
Many users dislike receiving these, so I do not recommend heavy use of this
unless someone else you know is logged onto another account.

SETMSG OFF/ON - Refuses/Accepts transmission of user sent messages.

SHOWCATALOG - Shows some system defined commands that will allow you to 
              further your prospective hacking directions. Some I have
              encountered are: BASIC (Puts you into BASIC), ED (Goes into
              file editor, TDP (Enters more advanced editor), DISPLAY 
              (Displays text files for user reading), just to mention a
              few. There are unlimited possibilities here...

DSCOPY (FILE NAME).(GROUP ID).(ACCOUNT ID) 

Copies specified file from named group and account to yours. Account
and system managers may copy files from one group to another by doing:

DSCOPY (FILE NAME).(GROUP ID).(ACCOUNT ID) TO (FILE NAME).(GROUP ID).(ACCT ID)

It is important to remember that account managers' powers are limited to
only their account and it's group members, and are not system wide as are
the system manager's!

Another thing that you should know: GROUP ID's may be exchange with an @
(at sign) symbol to allow for more expansive command usage. For example,
to send a message to =every= user on the system, do a...

TELL @.@;{Message}

I highly discourage this though as your account will probably be investigated
and/or purged immediately after use of such a message routine. Other uses:

LISTF @.@.@ (Lists all files on every group in the system)
LISTF @.@   (Lists all files on every group on your logged account)
LISTF @     (Lists all files on your group)

Don't forget the ,2 option added after this command, as it will give much
more file information. To get a list of every user on the system (this is
the only way I know of...) do a:

LISTF @.@.@,2 (This will list all files, and will also tell their group
and account that they are under....so if you go through all of them and
write them down as they pass by, you should get a very complete listing...)

TELLOP - This command sends a message to the operator's terminal
         (I never use it...)

BYE - Logs current session off.

PRIVILEGED COMMANDS
########## ########

NEWGROUP (GROUP ID) [Creates a new group name for file allocation]
NEWUSER (USER ID);HOME=(GROUP ID);PASS=(8 CHARACTER PASSWORD)
PURGEUSER (USER ID)
PURGEGROUP (GROUP ID)
LISTF @.(GROUP ID).(ACCT ID),-1

These are just a few of the many nice privileged commands that you might
want to use...

FILE COMMANDS
#### ########

PURGE (FILE NAME).(GROUP NAME).(ACCT NAME) 

This is the format for system management purging of other users' files.
To purge ones own file, simply do PURGE (FILE NAME)

RENAME (OLD FILE NAME),(NEW FILE NAME)/(LOCKWORD-OPTIONAL)

This is how to rename files, and is also how to place lockwords on
designated files for private security. Managers may:

RENAME (OLD FILE).(GROUP).(ACCT),(NEW FILE).(GROUP).(ACCT)/(LOCKWORD)

.if they want to change other users' file names and lockwords. If the
original file had a LOCKWORD, then the 3000 will first prompt with:

LOCKWORD (OLD FILE)?

Which must be responded to correctly before the command will be executed.
Manager Accounts bypass this security with the LISTF,-1 option and may
find out others' LOCKWORDS.

SUBSYSTEMS
##########

All subsystems and systems programs are located in the public library of
the 3000. To see a listing of files located in this directory, do:

LISTF @.PUB.SYS (Optional ,2)

Programs with the MACH designation in the ,2 directory are run-able from
the MPE : Prompt and are machine language. Trial and error may have to
be used with some forms of source code programs. The format for running a
specified file is:

RUN (FILE NAME).(GROUP ID).(ACCT. ID)

For example, if the file BASIC was on the PUB.SYS directory, and you wanted
to run it, you would type RUN BASIC.PUB.SYS, and the system would place
you into the BASIC interpreter. Commands for the BASIC interpreter are:

SAVE (PROG NAME) [Optional ,RUNONLY,FAST added for protection of listing
                  and faster runtimes]
GET (PROG NAME)
RUN (PROG NAME)
CAT/CATALOG (Optional ALL added at end for entire group file catalog)
PURGE (FILE NAME)
LIST (PROG NAME)

The BASIC is =very= extensive with many of the commands found on the 2000,
plus a very large number of special features. It is assumed that you know
how to program in BASIC. Many neat little programs can be written to
screw the system, and will be discussed in later volumes. 

============================================================================

There are a few bugs in the system that allow the stubborn hacker to bypass
some group security, and defeat the purpose of passwords. If any of you
out there come across any, please inform me on an aforementioned BBS.

There also exists on the 3000 the ability to link together two or more
systems (I have seen two). The user is able to switch between each,
provided he has account capabilities on both. 

COMING IN NEXT VOLUMES:
###### ## #### #######

SYSTEMS CRASHING and NEAT THINGS TO DO TO THE 3000
BASIC PROGRAMS and MACHINE LANGUAGE COMPILING
USER DEFINED COMMANDS (UDC)
FILE I/O
MORE PRIVILEGED COMMANDS
SYSTEMS TAKEOVER

=========================================================================

Here's a dialup to an HP3000 system: [415] xxx-xxxx

Happy Hacking...

 ________/
/ DE BUG 00
\_\_\_\_\_>
/ \ / \ / 

(C) JULY 18, 1985 by Agents of Fortune...

If you need help on an HP3000 or find any other systems, feel free to consult
me. Any comments, corrections, and/or questions are welcome.

Note: This tutorial was typed in UPPER & lower case.

PS: Other BBS sysops are welcome to post this material on their boards
    provided that they don't change anything.

Hp 2000 Part 5: Matracies by Blitzoid and Galactus

=======================================
=                                     =
=      HP 2000 PART 5 (MATRACIES)     =
=                                     =
=             CAPTURED BY             =
=                                     =
=      BLITZIOD ?? & GALACTUS **      =
=                                     =
=                 of                  =
=                                     =
=       THE ELITE HACKERS GUILD       =
=                                     =
=======================================

                         MATRICES
                         ********

 1. MAT ADD. & SUB.      2. MAT ASSIGNMENT       3. MAT...CON           
 4. MAT...IDN            5. MAT INPUT            6. MAT...INV           
 7. MAT MULT.            8. MAT PRINT            9. MAT PRINT#          
10. MAT PRINT USING     11. MAT PRINT# USING    12. MAT READ            
13. MAT READ#           14. MAT SCALAR MULT.    15. MAT...TRN           
16. MAT...ZER           
ENTER YOUR CHOICE, '0' TO STOP?1

                              MAT ADD. & SUB.

GEN FORM:  MAT ARRAY NAME = ARRAY NAME + ARRAY NAME

                          OR

           MAT ARRAY NAME = ARRAY NAME - ARRAY NAME

MAT ADD ADDS TWO MATRICES WITH THE SAME DIMENSIONS. (EX.  MAT C=A+B).
OR, IN THE CASE OF SUBRACTION, IT SUBTRACTS TWO MATRICES
WITH THE SAME DIMENSIONS. (EX.  MAT C=A-B).
NOTE:  THE SAME ARRAY MAT APPEAR ON BOTH SIDES OF THE EQUAL SIGN

ENTER YOUR CHOICE, '0' TO STOP?2

                              MAT ASSIGNMENT STATEMENT

GEN FORM:  MAT ARRAY NAME=ARRAY NAME

THIS STATEMENT IS USED TO SET ONE ARRAY EQUAL TO ANOTHER ARRAY OF THE SAME
DIMENSIONS.  EX.  MAT A=B

ENTER YOUR CHOICE, '0' TO STOP?3

                              MAT....CON STATEMENT

GEN FORM:  MAT ARRAY NAME=CON [NEW DIMENSIONS]

    THE MAT CON STATEMENT SET ALL THE ELEMENTS OF AN ARRAY
EQUAL TO ONE.  (EX.  MAT C=CON(5,10) , MAT D=CON )

ENTER YOUR CHOICE, '0' TO STOP?4

                              MAT...IDN STATEMENT

GEN FORM:  MAT ARRAY NAME=IDN [NEW DIMENSIONS]

    THE MAT...IDN STATEMENT SETS UP AN IDENTITY MATRIX.

                              MAT INPUT STATEMENT

GEN. FORM:  MAT INPUT [ARRAY LIST]

    MAT INPUT ALLOWS YOU TO ENTER ENTIRE ARRAYS FROM THE
TERMINAL.  SINGLE ELEMENTS MAY ALSO BE ENTERED. (EX. MAT INPUT A, OR
MAT INPUT A(4,4))

ENTER YOUR CHOICE, '0' TO STOP?5

                              MAT INPUT STATEMENT

GEN. FORM:  MAT INPUT [ARRAY LIST]

    MAT INPUT ALLOWS YOU TO ENTER ENTIRE ARRAYS FROM THE
TERMINAL.  SINGLE ELEMENTS MAY ALSO BE ENTERED. (EX. MAT INPUT A, OR
MAT INPUT A(4,4))

ENTER YOUR CHOICE, '0' TO STOP?6

                              MAT...INV STATEMENT

GEN. FORM:  MAT ARRAY NAME = INV[ARRAY NAME|

    THIS STATEMENT INVERTS A SPECIFIED ARRAY.  BOTH ARRAYS USED
IN THIS STATEMENT MUST BE SQUARE AND OF THE SAME DIMENSIONS.  THE SAME
ARRAY MAY APPEAR ON BOTH SIDES OF THE EQUATION

ENTER YOUR CHOICE, '0' TO STOP?7

                              MAT MULTIPLICATION STATEMENT

GEN. FORM:  MAT ARRAY NAME = ARRAY NAME 1 * ARRAY NAME 2

    THE MAT MULTIPLICATION STATEMENT SETS A SPECIFIED ARRAY
EQUAL TO THE PRODUCT OF TWO ARRAYS.  THE SAME ARRAY NAME MAY NOT APPEAR
ON BOTH SIDES OF THE EUQUAL SIGN.  THE NUMBER OF COLUMNS IN ARRAY 1 
MUST EQUAL THE NUMBER OF ROWS IN ARRAY 2. 

ENTER YOUR CHOICE, '0' TO STOP?8

                              MAT PRINT STATEMENT

GEN. FORM:  MAT PRINT ARRAY PRINT LIST [PRINT DELIMITER]

    THE MAT PRINT STATEMENT IS USED TO DISPLAY ENTIRE ARRAYS OR 
PORTIONS OF ARRAYS.  WHEN USING THIS STATEMENT, PLACING COMMAS BETWEEN
ARRAYS TO BE PRINTED WILL CAUSE THE ARRAY TO BE SPACED OUT, WHILE ON THE
OTHER HAND IF SEMICOLONS ARE USED THE ARRAY IS PACKED TOGETHER.
(EX. MAT PRINT A,B  , MAT PRINT A;B).  

ENTER YOUR CHOICE, '0' TO STOP?9

                              MAT PRINT# STATEMENT

GEN. FORM:  MAT PRINT #FILE NUMBER,[RECORD NUMBER];END

                         OR

MAT PRINT #FILE NO,[REC. NO.];ARRAY WRITE LIST[PRINT DELIMITER[END]]

    MAT PRINT # STATEMENT IS USED TO PRINT ENTIRE ARRAYS
ON A SPECIFIED FILE. IT IS USED THE SAME WAY THE PRINT# STATEMENT IS.

ENTER YOUR CHOICE, '0' TO STOP?10

                              MAT PRINT USIN STATEMENT

GEN. FORM:  MAT PRINT USING FORMAT PART [;ARRAY PRINT LIST]

     THE MAT PRINT USING STATEMENT ALLOWS YOU TO CONTROL THE
OUTPUT OF ARRAYS, OR PORTIONS OF ARRAYS.  IT IS USED JUST LIKE THE 
PRINT USING STATEMENT, UTILIZING AN 'IMAGE'. SEE PRINT USING FOR MORE
INFORMATION.

ENTER YOUR CHOICE, '0' TO STOP?11

PRINTED TO ASCII FILES.  IT MAY NOT BE USED WITH BASIC FORMATTED FILES.

=======================================
=           END OF PHILE              =
=======================================

Downloaded from P-80 Systems.....

                           ������������������������������������������������������������������������������

HP 2000 Part 4: Files by Blitzoid and Galactus

=======================================
=                                     =
=      HP 2000 PART 4 (FILES)         =
=                                     =
=             CAPTURED BY             =
=                                     =
=      BLITZIOD ?? & GALACTUS **      =
=                                     =
=                 of                  =
=                                     =
=       THE ELITE HACKERS GUILD       =
=                                     =
=======================================

* FILES *

BASIC FORMATTED FILES ARE ESSENTIALLY THE SAME AS
DATA STATEMENTS, THEY BOTH HAVE POINTERS THAT MOVE ALONG THE DATA
HERE IS AN EXAMPLE OF A PROGRAM USING THE DATA STATEMENT    :

10 READ X
20 PRINT X
30 DATA 1,2,3,4,5,6,7,8,9,10
40 GOTO 10
50 END

WHEN THIS PROGRAM IS RUN THE DATA IS READ IN LINE 10
FROM THE DATA STATEMENT IN LINE 30.
AFTER THE '1' IS READ FROM THE DATA STATEMENT THE POINTER IS
MOVED TO THE '2' AND SO ON.  WHEN THE FINAL PIECE OF DATA IS READ
AND THE POINTER IS MOVED BEYOND THE '10' THEN YOU WILL GET THE
ERROR MESSAGE:      OUT OF DATA IN LINE 10       
THIS IS ESSENTIALLY THE WAY FILES WORK.
BUT FILES HAVE MANY MORE CAPABILITIES THAN DO DATA STATEMENTS

LET'S LEARN HOW TO CREATE A FILE, OK?

TO CREATE A FILE ALL ONE MUST DO IS TYPE IN CRE- THEN THE
NAME OF THE FILE, AND HOW LONG IT MUST BE.  FOR EXAMPLE IF I WANTED
TO CREATE A FILE NAMED 'DAVID' THAT IS 5 RECORDS LONG I WOULD TYPE IN
CRE-DAVID,5
THEN HIT 'RETURN'

WHENEVER YOU CREATE A FILE THE COMPUTER RESERVES THE NUMBER OF
RECORDS YOU CREATED IT ON THE DISC.  SO IF YOU CREATE A FILE THAT
IS 50 RECORDS LONG, YOU HAVE USED 50 RECORDS OF DISC SPACE, WHETHER
YOU USE THE WHOLE FILE OR NOT.

NOW I WILL SHOW YOU A PROGRAM THAT WILL PRINT ON YOUR FILE.

 5 DIM A$(20), B$(20)
10 FILES FIL1
20 PRINT 'NAME';
30 INPUT A$
40 IF END#1 THEN 85
50 READ#1,1
60 READ#1;B$
70 GOTO 60
85 IF END#1 THEN 110
90 PRINT#1;A$,END
100 STOP
110 PRINT'FILE FULL'
120 END

BY THIS TIME YOU ARE WONDERING WHAT THAT MESS IS, RIGHT ?
HERE IS AN EXPLANATION  

STATEMENT #                       MEANING
10          OPENS THE FILE THAT IS TO BE USED, IN THIS CASE THE NAME OF
            THE FILE IS 'FIL1'.  THIS STATEMENT IS TELLING THE COMPUTER
            WHAT FILE WE WANT TO USE FOR THIS PROGRAM
            FIL1 IS REFERRED TO AS #1 AS SEEN IN LINES 40,50 & 60
            IF MORE THAN ONE FILE WAS USED LINE 10 WOULD LOOK LIKE
            THIS  FILES FIL1,FIL2.  THEN FIL2 WOULD BE REFERRED
            TO AS #2.  UP TO 16 FILES CAN BE USED IN ONE PROGRAM
30          INPUT NEW NAME TO BE PRINTED ON FILE.
40          THIS STATEMENT 'IF END' SETS UP THE IF END 
            CONDITION.  THIS MEANS THAT WHEN THE FILE PIONTER GETS
            TO THE END OF  DATA IN THAT FILE THEN GOTO 85
50          THIS MEANS TO READ THE FIRST RECORD AND THE
            FIRST ITEM OF THE FILE, IN OTHER WORDS THIS
            THIS SETS THE FILE POINTER BACK TO THE BEGINNING OF THE
            DATA.
            BY USING THIS STATEMENT YOU CAN BE ASSURED OF STARTING
            AT THE BEGINNING OF THE DATA IN THAT FILE
60          READS DATA FROM FILE#1, SOMEWHAT LIKE THE 'READ' USED
            WITH DATA STATEMENTS.
85          SETS UP ANOTHER IF END CONDITION TO CHECK FOR THE END OF
            FILE.  IF ANOTHER EOF MARKER IS ECOUNTERED THEN GOTO
            LINE 110.
            END-OF-FILE MARKERS ARE DEFINED MORE PRECISELY LATER.
90          THIS STATEMENT PRINTS THE NEW NAME (A$) ON THE FILE,
            THEN PRINTS AN END OF FILE MARKER ON THE FILE.
            THE END OF FILE MARKER ENABLES THE COMPUTER TO TELL
            THROUGH THE READ STATEMENT (LINE 60) WHEN THE END OF
            DATA IS REACHED

HERE IS A FLOW CHART OF THAT PROGRAM:

1.  INPUT NEW NAME -----------2.  READ DATA FROM FILE

3.  IF END OF FILE #1 THEN 4 -----GO BACK TO 2.
                                 !
                    4.  IF END#1 THEN 7
                                 !
5.  TRY TO PRINT NEW NAME ON FILE, IF SUCCESSFUL (MEANING FILE IS
    NOT FULL) THEN 6.  IF UNSECCESSFUL (MEANING FILE IS FULL) THEN 7.
                                 !                            !
                                                              !
                                 !            7.  PRINT'FILE FULL'
                             6.  STOP                         !
                                                          8. END

OK, LET'S MOVE ON TO GET A LISTING OF YOUR FILE

05 DIM A$(20)
10 FILES FIL1
20 IF END#1 THEN 70
30 READ#1,1
40 READ#1;A$
50 PRINT A$
60 GOTO 40
70 END

THIS IS A RATHER SIMPLE PROGRAM, IT GOES LIKE THIS;
YOU SET UP THE IF END CONDITION, THEN READ STARTING AT THE
BEGINNING OF THE FILE.  READ THROUGH THE FILE AND PRINT
EACH SEPARATE PIECE OF DATA (LINES 40 & 50). WHEN ALL THE
DATA HAS BEEN READ THROUGH, IT FALLS THROUGH TO LINE 70, BY
THE CONDITION SET UP IN LINE #20 AND AT THIS POINT
EXECUTION IS TERMINATED.

*  END OF FILE DISCUSSION  *

HERE IS SOME ELLABORATION ON WHAT YOU HAVE LEARNED SO FAR
ABOUT BASIC FORMATTED FILES.

 THE EOF MARKER IS WHAT THE IF END CONDITION IS USED 
WITH.  THE EOF MARKER DESIGNATES THAT THE END OF DATA HAS BEEN REACHED.
AS MORE DATA IS PUT INTO A FILE.���������������

HP 2000 Part 3: Functions by Blitzoid and Galactus

=======================================
=                                     =
=      HP 2000 PART 3 (FUNCTIONS)     =
=                                     =
=             CAPTURED BY             =
=                                     =
=      BLITZIOD ?? & GALACTUS **      =
=                                     =
=                 of                  =
=                                     =
=       THE ELITE HACKERS GUILD       =
=                                     =
=======================================

                         FUNCTIONS
                         *********

1. ABS         2. ATN         3. BRK         4. CHR$        5. CON         
6. COS         7. CTL         8. EXP         9. IDN         10. INT        
11. INV        12. ITM        13. LEN        14. LIN        15. LOG        
16. NUM        17. POS        18. REC        19. RND        20. SGN        
21. SIN        22. SPA        23. SQR        24. SYS        25. TAB        
26. TAN        27. TIM        28. TRN        29. TYP        30. UPS$       
31. ZER        

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?1

                         ABS

GEN. FORM:     ABS(NUMERIC EXPRESSION)

     THE ABSOLUTE VALUE FUNCTION TAKES THE ABSOLUTE VALUE OF A
NUMERIC EXPRESION

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?2

                         ATN

GEN. FORM:     ATN(NUMERIC EXPRESSION)

     THE ATN FUNCTION GIVES THE ARCTANGENT OF THE NUMERIC EXPRESSION.
EXAMPLE:     100 A=ATN(B)

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?3

                         BRK

GEN. FORM:     BRK(NUMERIC EXPRESSION)

     THE BREAK FUNCTION DISABLES OR ENABLES THE BREAK KEY ABILITY OF 
THEIR TERMINAL.

          * A VALUE <0 RETURNES THE STATUS OF THE BREAK KEY
          * A VALUE =0 DISABLES THE BREAK CAPABILITY.
          * A VALUE >0 ENABLES THE BREAK CAPABILITY.

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?4

                         CHR$

GEN. FORM:     CHR$(NUMERIC EXPRESSION)

     THE CHR$ FUNCTION RETURNES THE NUMERIC VALUE FOR THE GIVEN STRING 
ACCORDING TO ITS NUMERIC VALUE.  THE VALUES RANGE FROM 1 TO 127.

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?5

                         CON

REFER TO MAT...CON

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?6

                         COS

GEN. FORM:     COS(NUMERIC EXPRESSION)

     THE COS FUNCTION GIVES YOU THE COSIN OF THE GIVEN NUMERIC
EXPRESION.  THE NUMERIC EXPRESSION IS INTERPRETE AS BEING IN 
RADIONS.

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?7

                         CTL

GEN. FORM:     CTL(NUMERIC EXPRESSION)

     THE CTL FUNCTION IS USED WITH ASCII FILE DEVICES AS A MEANS OF 
CONTROLING OUTPUT.  REFER TO USER MANUAL FOR FURTHER EXPLANATION.

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?8

                         EXP

GEN. FORM:     EXP(NUMERIC EXPRESSION)

     THE EXP FUNCTION RETURNES THE EXPOTENTIAL VALUE OF THE GIVEN NUMERIC
EXPRESSION.

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?9

                         IDN

REFER TO MAT

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?10

                         INT

GEN. FORM:     INT(NUMERIC EXPRESSION)

     THE INT FUNCTION RETURNES THE THE GREATEST INTEGER
< OR = THE NUMERIC EXPRESSION.
                         INV

REFER TO  MAT...INV

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?11

                         INV

REFER TO  MAT...INV

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?12

                         ITM

GEN. FORM:     ITM(NUMERIC EXPRESSION)

     WHEN THE ITM FUNCTION IS USED IN A PROGRAM THE NUMBER
RETURNED IS THE POSITION OF THE POINTER IN THE DATA
THAT YOU ARE READING FROM.

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?13

                         LEN

GEN. FORM:     LEN(SOURCE STRING)

     THE LEN FUNCTION GIVES YOU THE TOTAL # OF CHARACTERS
IN YOUR STRING.  THIS FUNCTION ONLY COUNTS SPACES IN THE
MIDDLE OF YOUR STRING.  ANY SPACES AT THE END OF THE STRING 
ARE NOT COUNTED.

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?14

                         LIN

GEN. FORM:     LIN(NUMERIC EXPRESSION)

     THIS FUNCTION IS USED IN THE MIDDLE OF A PRINTING
STATEMENT.  THE NUMBER USED DETERMINES IF BOTH CARRAGE 
RETURN AND LINE FEED ARE CARRIED OUT.  IF A NEGATIVE NUMBER 
IS USED THE CARRAGE RETURN IS SUPPRESSED BUT LINE FEED IS
CONTINUED.

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?15

                         LOG

GEN. FORM:     LOG(NUMERIC EXPRESSION)

     THE NATURAL LOGARITHM OF THE NUMERIC EXPRESSION IS
EXPRESSED TO THE BASE 'E' WHEN THE LOG FUNCTION IS USED.

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?16

                         NUM

GEN. FORM:     NUM(SOURCE STRING)

     THIS FUNCTION RETURNS THE NUMERIC VALUE OF THE GIVEN 
SOURCE STRING.

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?17

                         POS

GEN. FORM:     POS(SOURCE STRING 1, SOURCE STRING 2)

     THE POS FUNCTION RETURNES THE VALUE OF THE FIRST 
INTERSECTING POSITION IN REFERENCE TO THE SECOND STRING
OVERLAPPING THE FIRST STRING.

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?18

                         REC

GEN. FORM:     REC(NUMERIC EXPRESSION)

     THE REC FUNCTION SHOWES WHICH RECORD YOU ARE PRESENTLY USING.

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?19

                         RND

GEN. FORM:     RND(NUMERIC EXPRESSION)

     THE RANDOM NUMBER FUNCTION RETURNES A NUMBER BETWEEN 0 
AND 1.  THIS IS KNOWN AS A PSEUDO RANDOM NUMBER.

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?20

                         SGN

GEN. FORM:     SGN(NUMERIC EXPRESSION)

     THIS FUNCTION WILL RETURN THE SIGN OF THE GIVEN NUMERIC
STATEMENT.

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?21

                         SIN

GEN. FORM:    SIN(NUMERIC EXPRESSION)

     THE SINE OF THE NUMERIC STATEMENT IS RETURNED.  THE 
GIVEN NUMERIC EXPRESSION IS ASSUMED TO BE IN RADIONS.

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?22

                         SPA

GEN. FORM:     SPA(NUMERIC EXPRESSION)

     THE SPACE FUNCTION CAUSES THE NUMBER OF SPECIFIED SPACES TO 
BE PRINTED BETWEEN STRINGS.

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?23

                         SQR

GEN. FORM:     SQR(NUMERIC EXPRESSION)

     THE SQUARE ROOT OF THE GIVEN NUMERIC EXPRESSION IS RETURNED.

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?24

                         SYS

GEN. FORM:     SYS(NUMERIC EXPRESSION)

     THE SYS FUNCTION IS USED TO HELP FIND ERRORS IN YOUR 
PROGRAM.  IT CAN ALSO BE USED TO SEE IF THE BREAK KEY WAS
DEPRESSED DURING THE RUNNING OF THE PROGRAM.

          SYS(0)   THE VALUE RETURNED IS AN ERROR #.

          SYS(1)   VALUE RETURNED IS THE LINE # OF THE ERROR.

          SYS(2)   THE VALUE RETURNED IS THE # OF THE FILE
                   THAT WAS LAST USED.

          SYS(3)   IF THE VALUE RETURNED IS 1 THEN THE
                   BREAK KEY WAS DEPRESSED DURING THE
                   RUNNING OF THE PROGRAM.  IF A 0 IS RETURNED
                   THEN THE BREAK KEY WAS NOT DEPRESSED.

          SYS(4)   THE VALUE RETURNED INDICATES THE
                   TERMINAL TYPE.

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?25

                   TERMINAL TYPE.

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?25

                   TERMINAL TYPE.

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?26

                         TAN

GEN. FORM:     TAN(NUMERIC EXPRESSION)

     THE TANGENT OF A NUMBER IS RETURNED WHEN USING THE TAN 
FUNCTION.  YOUR NUMERIC EXPRESSION IS INTERPRETED AS BEING
IN RADIANS.

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?27

                         TIM

GEN. FORM:     TIM(NUMERIC EXPRESSION)

      BY USING THIS FUNCTION YOU CAN GET THE CURRENT YEAR,
DAY, HOUR, MINUTE, OR SECOND.
          TIM(0)     CURRENT MINUTE (0-59)
          TIM(1)     CURRENT HOUR (0-23)
          TIM(2)     CURRENT DAY (1-366)
          TIM(3)     CURRENT YEAR (0-99)
          TIM(4)     CURRENT SECOND(0-59)

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?28

                         TRN

REFER TO MAT...TRN

ENTER THE NUMBER OF YOUR CHOICE (ENTER 0 TO STOP)?29

                         TYP

GEN. FORM:     TYP(NUMERIC EXPRESSION)

     THE TYP FUNCTION TELLS YOU WHAT THE DATA TYPE IS OF THE 
NEXT SEQUENTIAL ITEM IN A DATA STATEMENT OR FILE.

RETURN              EXP. <0             EXP. >0             EXP. =0
VALUE             (FILE TEST)         (FILE TEST)      (DATA STMT TEST)
------------------------------------------------------------------------------

1                 NUMBER              NUMBER           NUMBER

2                 STRING              STRING           STRING

S

Downloaded from P-80 Systems.....
                           ��������������������������������������������������������������������

HP 2000 Part 2: Statements by Blitzoid and Galactus

=======================================
=                                     =
=      HP 2000 PART 2 (STATEMENTS)    =
=                                     =
=             CAPTURED BY             =
=                                     =
=      BLITZIOD ?? & GALACTUS **      =
=                                     =
=                 of                  =
=                                     =
=       THE ELITE HACKERS GUILD       =
=                                     =
=======================================

                         STATEMENTS
                         **********

 1. ADVANCE         2. ASSIGN          3. CHAIN           4. COM            
 5. CONVERT         6. CREATE          7. DATA            8. DEF            
 9. DIM            10. END            11. ENTER          12. FILES          
13. FOR & NEXT     14. GOSUB & RETURN 15. GOTO           16. IF...THEN      
17. IF END         18. IF ERROR       19. IMAGE          20. INPUT          
21. LET            22. LINPUT         23. LINPUT#        24. LOCK           
25. NEXT           26. PURGE          27. READ           28. READ#          
29. REM            30. RESTORE        31. STOP           32. SYSTEM         
33. UNLOCK         34. UPDATE         

ENTER YOUR CHOICE (ENTER 0 TO STOP)?1

                         ADVANCE

GEN FORM:     ADVANCE #FILE NUMBER;SKIP COUNT,RETURN VARIABLE

     THE ADVANCE STATEMENT CAUSES THE SPECIFIED FILE (SIGNIFIED BY THE
FILE NUMBER) POINTER TO BE MOVED PAST THE NUMBER OF ITEMS
SPECIFIED IN THE SKIP COUNT.  THE SKIP COUNT IS LIMITED TO 32767 AND
MUST BE A POSITIVE INTEGER.  IF THE 'ADVANCE STATEMENT IS EXECUTED SUCCESSFULLY
THE RETURN VARIABLE IS SET TO '0'.  IF AN END-OF-FILE MARKER IS ENCOUNTERED
BEFORE THE SPECIFIED NUMBER OF ITEMS HAVE BEEN SKIPPED THE RETURN VARIABLE
WILL BE SET TO THE NUMBER OF ITEMS YET TO BE SKIPPED.  THE ADVANCE
STATEMENT CANNOT BE USED WITH ASCII FILES.

ENTER YOUR CHOICE (ENTER 0 TO STOP)?2

                         ASSIGN

GEN FORM:     ASSIGN FILE DESIGNATOR,FILE NO.,RETURN VAR.,[MASK],[RESTRICTION]

              OR

              ASSIGN *,FILE NUMBER,[RETURN VARIABLE]

     THE ASSIGN STATEMENT IS USED TO ASSIGN A FILE TO A FILE NUMBER
RESERVED IN THE FILES STATEMENT (eg. 100 FILES *,*,*) AND TO OPEN THE
FILE.  THE FILE DESIGNATOR CAN BE A STRING OR CAN BE ENCLOSED IN QUOTES
BUT IT MUST BE A VALID FILE NAME.  IF AN ASTERISK (*) IS USED IN PLACE
OF THE FILE DESIGNATOR THE FILE PREVIOSLY ASSIGNED TO THAT FILE
NUMBER IS CLOSED.  THE OPTIONAL MASK IS A STRING USED TO SCRAMBLE BASIC
FORMATTED FILES AS TO MAKE THEM 'GREEK' TO USERS NOT ACCESSING THE FILE
WITH THE SPECIFIED MASK.  THE SAME MASK MUST BE USED
WHEN READING FROM THE FILE AS WAS USED WHEN IT WAS PRINTED ON THE FILE.
THE OPTIONAL RESTRICTION IS A TWO-LETTER CODE USED TO SPECIFY ACCESSABILITY
RESTRICTIONS ON THE FILE.  RESTRICTION CODES ARE AS FOLLOWS:

RR                  NO SUBSEQUENT USER CAN ACCESS THE FILE WHILE
                    THE FILE IS OPEN

WR                  SUBSEQUENT USERS CAN READ FROM BUT CANNOT WRITE
                    TO WHILE THE FILE IS OPEN

NR                  SUBSEQUENT USERS CAN READ & WRITE WHILE THE FILE IS
                    OPEN  (NOTE:  THE FILE MUST HAVE MUTIPLE WRITE
                    ACCESS FOR THIS RESTRICTION).

RETURN VARIABLES:

 0             FILE AVAILABLE FOR READ AND WRITE
 1             AVAILABLE FOR READ ONLY
 2             READ ONLY
 3             FILE DOES NOT EXIST OR IS NOT ACCESSABLE
 4             FILE NUMBER OUT OF RANGE
 5             NO BUFFER SPACE AVAILABLE FOR FILE
 6             FILE IS UNAVAILABLE FOR READ OR WRITE
 7             SPECIFED RESTRICTIONS IMPOSSIBLE
 8             FILE IS AVAILABLE FOR WRITE ONLY

ENTER YOUR CHOICE (ENTER 0 TO STOP)?3

                         CHAIN

GEN FORM:     CHAIN [RETURN VAR.,]PROGRAM DESIGNATOR,[NUMERIC EXPRESSION]

THE CHAIN STATEMENT CAUSES THE CURRENT RUNNING PROGRAM TO TERMINATE
AND BEGIN EXECUTION OF THE PROGRAM SPECIFIED BY THE PROGRAM DESIGNATOR.
THE PROGRAM DESIGNATOR MAY BE ENCLOSED IN QUOTES OR MAY BE A STRING.
THE NUMERIC EXPRESSION CAN BE USED TO DEFINE A LINE NUMBER IN
THE PROGRAM TO BE CHAINED TO. IF SUCH AN EXPRESSION IS DEFINED PROGRAM
EXECUTION WILL BEGIN AT THE SPECIFIED LINE NUMBER.

RETURN VARIABLES:

0              SUCCESSFUL

1              BAD STATEMENT NUMBER SPECIFIED

2              NO ACCESS PERMITTED TO NAMED PROGRAM
3              CHAIN NOT PERMITTED

ENTER YOUR CHOICE (ENTER 0 TO STOP)?4

                         COM

GEN. FORM:     COM COMMON LIST

     THE COMMON STATEMENT IS USED TO LIST THE VARIABLES THAT 
ARE COMMON BETWEEN TWO CHAINED PROGRAMS.  ALL COMMON STRINGS
AND STATEMENTS MUST ALSO BE DIMINSIONED HERE.

ENTER YOUR CHOICE (ENTER 0 TO STOP)?5

                         CONVERT

GEN. FORM:     CONVERT NUMERIC EXPRESSION TO DESTINATION STRING
               OR

               CONVERT  SOURCE STRING TO NUMERIC VARIABLE [,STMT #]

     THE CONVERT STATEMENT IS USED TO CONVERT A STRING TO A VARIABLE
OR A VARIABLE TO A STRING.

ENTER YOUR CHOICE (ENTER 0 TO STOP)?6

                         CREATE

GEN. FORM:     CREATE RETURN VAR., FILE DESIGNATOR, FILE LENGTH [,RECORD SIZE]

     THE CREATE STATEMENT CREATES A BASIC FORMATTED FILE OF
THE DESIGNATED LENGTH.  THE RETURN VARIABLES ARE AS FOLLOWS:

RETURN VALUE                       MEANING

     0               THE FILE WAS CREATED SUCCESSFULLY
     1               A FILE ALREADY EXISTS WITH THE SAME NAME
     2               INVALID FILE NAME, ACCESS, FILE LENGTH OR
                     RECORD SIZE
     3               NO SPACE IN THE ACCOUNT
     4               NO SPACE IN THE SYSTEM

ENTER YOUR CHOICE (ENTER 0 TO STOP)?7

                         DATA

GEN. FORM:     DATA CONSTANT LIST

     THE DATA STATEMENT IS WHERE THE DATA IS STORED FOR THE 
READ STATEMENT.  IT IS ENTERED IN SEQUENCE WITH EACH ITEM 
SEPARATED BY COMMAS.  ANY STRING DATA MUST BE ENCLOSED IN
QUOTES.

ENTER YOUR CHOICE (ENTER 0 TO STOP)?8

                         DEF

GEN. FORM:     DEF FUNCTION NAME(PARAMETER)=NUMERIC EXPRESSION

     THE 'DEF' STATEMENT IS USED TO DEFINE A FUNCTION 
SUCH AS:  A**2/(SQR(X)).  HERE IS AN EXAMPLE OF A USER DEFINED FUNCTION:

10 DEF FNA(X) = A**2/(SQR(X))

ALL FUNCTION NAMES MUST BEGIN WITH 'FN' AND HAVE A THIRD CHARACTER
BETWEEN 'A' AND 'Z'.  THE 'X' IN PARENTHASIS IS A DUMMY VARIABLE.
ITS PURPOSE IS TO SHOW WHAT ARGUMENT WILL BE USED WHEN THE FUNCTION
IS SUMMONED.

ENTER YOUR CHOICE (ENTER 0 TO STOP)?9

                         DIM

GEN. FORM:     DIM DIMENSION LIST

     THE DIM STATEMENT IS USED TO SET THE AMOUNT OF SPACE ALLOTED
IN THE PROGRAM FOR A STRING OR AN ARRAY.

EXAMPLE:     20 DIM A(5),B(50),C$(100),D(7,10)

ENTER YOUR CHOICE (ENTER 0 TO STOP)?10

                         END

GEN. FORM:     END

      THE END STATEMENT TERMINATES THE RUNNING OR EXECUTING OF A
PROGRAM.  IT MAY OCCUR ANY WHERE IN THE PROGRAM BUT THE END STATEMENT
MUST ALWAYS OCCUR AT THE END OF A PROGRAM.

ENTER YOUR CHOICE (ENTER 0 TO STOP)?11

                         ENTER

GEN. FORM:     ENTER #NUMERIC VARIABLE
               OR
               ENTER [# VARIABLE,] TIME ALLOWED, RETURN VAR., READ VAR,.

ENTER YOUR CHOICE (ENTER 0 TO STOP)?12

                         FILES

GEN. FORM:     FILES  FILES LIST

     THE FILES STATEMENT IS USED AT THE BEGINNING OF A PROGRAM
TO OPEN THE FILES FOR USE IN THE PROGRAM.  AN '*' MAY BE USED
TO HOLD THE PLACE OF A FILE TO BE DESIGNATED LATER.

ENTER YOUR CHOICE (ENTER 0 TO STOP)?13

                         FOR & NEXT

GEN. FORM:     FOR  FOR VAR.=INITIAL VALUE  TO  FINAL VALUE [STEP SIZE]
               NEXT  FOR VARIABLE

     THE FOR NEXT LOOP ALLOWES YOU TO GO THROUGH A SET STATEMENT 
A SPECIFIED NO. OF TIMES.  FOR EXAMPLE IF YOUR LOOP WAS:

                    100 FOR P=1 TO 5
                         .
                         .
                    150 NEXT P

ENTER YOUR CHOICE (ENTER 0 TO STOP)?14

                         GOSUB & RETURN

GEN. FORM:     GOSUB  STATEMENT NO.
               OR
               GOSUB  NUMERIC EXP.  OF  STATEMENT NO. LIST
               RETURN

     THE GOSUB STATEMENT IS A WAY OF DROPPING TO ANOTHER PART
OF THE PROGRAM BUT STILL KEEPING YOUR PLACE WHERE YOU ARE SO
YOU CAN RETURN AND CONTINUE ON WITH THE PROGRAM.  IF GOSUBS ARE
NESTED MORE THAN 20 DEEP THEN THE PROGRAM WILL TERMINATE WITH
AN ERROR STATEMENT.

ENTER YOUR CHOICE (ENTER 0 TO STOP)?15

                         GOTO 

GEN. FORM:     GOTO  STATEMENT NO.
               OR
               GOTO  NUMERIC EXPRESSION  OF  STATEMENT # LIST

     THE GOTO STATEMENT OVERRIDES THE NORMAL ORDER THAT STATEMENTS
ARE CARRIED OUT.  IT TELLS THE PROGRAM TO SKIP TO THE SPECIFIED LINE
NUMBER AND CONTINUE EXECUTION OF THE PROGRAM FROM THERE.  GREAT CARE
SHOULD BE TAKEN WHEN A GOTO STATEMENT ENTERS A FOR... NEXT LOOP.

ENTER YOUR CHOICE (ENTER 0 TO STOP)?16

                         IF...THEN

GEN. FORM:     IF  NUMERIC RELATION  THEN  STATEMENT NO.
               OR
               IF STRING RELATION  THEN  STATEMENT NO.

     THE IF...THEN STATEMENT TELLS THE PROGRAM IF THE SPECIFED 
RELATION IS TRUE THEN GO TO THE SPECIFIED LINE NO.  IF THE RELATION
IS NOT TRUE THEN IT DROPS ON THROUGH AND CONTINUES EXECUTION AS NORMAL.

ENTER YOUR CHOICE (ENTER 0 TO STOP)?17

                         IF END

GEN. FORM:    IF END #FILE NO.  THEN  STATEMENT NO.

     THIS STATEMENT TELLS THE COMPUTER THAT IF THE FILE POINTER IS AT
THE END OF FILE MARK THEN TO GO ON TO THE SPECIFIED LINE NUMBER.

ENTER YOUR CHOICE (ENTER 0 TO STOP)?18

                         IF ERROR

GEN. FORM:     IF ERROR THEN STATEMENT NO.

     THE IF ERROR STATEMENT IS USUALLY USED IN COORDINATION WITH THE 
SYS STATEMENT.  IT IS USED TO DETERMINE WHAT ERROR IS OCCURING IN
THE RUNNING OF THE PROGRAM.

ENTER YOUR CHOICE (ENTER 0 TO S             INPUT

GEN. FORM:   INPUT  READ VARIABLE LIST

   THE INPUT STATEMENT  IS USED TO ENTER DATA THROUGH THE KEYBOARD.
A '?' IS PRINTED TO INDICATE YOU NEED TO ENTER DATA.
BOTH NUMERIC AND STRING DATA MAY BE ENTERED.

ENTER YOUR CHOICE (ENTER 0 TO STOP)?20

                         INPUT

GEN. FORM:   INPUT  READ VARIABLE LIST

   THE INPUT STATEMENT  IS USED TO ENTER DATA THROUGH THE KEYBOARD.
A '?' IS PRINTED TO INDICATE YOU NEED TO ENTER DATA.
BOTH NUMERIC AND STRING DATA MAY BE ENTERED.

ENTER YOUR CHOICE (ENTER 0 TO STOP)?21

                         LET

GEN. FORM:     [LET] REPLACEMENT LIST=NUMERIC EXPRESSION
               OR
[LET] DESTINATION STRING=STRING EXPRESSION

     THE LET STATEMENT IS USED TO SET A VARIABLE OR A STRING EQUAL
TO A NUMBER OR AN EXPRESSION.  THIS IS AN EXAMPLE:

                    10 LET B=73

THE 'LET' IS NOT NECESSARY SO YOU COULD SAY '100 B=73'.

ENTER YOUR CHOICE (ENTER 0 TO STOP)?22

                         LINPUT

GEN. FORM:     LINPUT  DESTINATION STRING

     THE LINPUT STATEMENT ALLOWS THE USER TO ENTER AN ENTIRE LINE
OF STRING DATA.  THIS INCLUDES COMMAS,QUOTE MARKS, AND LEADING AND
TRAILING BLANKS.  

ENTER YOUR CHOICE (ENTER 0 TO STOP)?23

                         LINPUT#

GEN. FORM:     LINPUT #FILE NUMBER;DESTINATION STRING

     THIS STATEMENT READS THE NEXT AVALIABLE RECORD INTO A DESTINATION STRING.  AN ASCII FILE MUST BE USED.

ENTER YOUR CHOICE (ENTER 0 TO STOP)?24

                         LOCK

GEN. FORM:     LOCK #FILE NUMBER [,RETURN VARIABLE]

     THE LOCK STATEMENT IS USED TO GIVE YOU EXCLUSIVE ACCESS TO
YOUR FILES.  THE RETURN VARIABLES ARE AS FOLLOWS:

          RETURN VALUE             MEANING
               0         FILE LOCKED SUCCESSFULLY
               1         FILE ALREADY LOCKED
               2         INVALID FILE NUMBER

ENTER YOUR CHOICE (ENTER 0 TO STOP)?25

                         NEXT

REFER TO FOR & NEXT

ENTER YOUR CHOICE (ENTER 0 TO STOP)?26

                         PURGE

GEN. FORM:     PURGE RETURN VARIABLE,FILE DESIGNATOR

     THE PURGE STATEMENT IS USED TO DELETE A FILE FROM THE SYSTEM
IT CAN ONLY BE USED AFTER A FILE IS CLOSED.  

          RETURN VARIABLE          MEANING

               0         FILE SUCCESSFULLY PURGED
               1         FILE IS BUSY CANNOT BE PURGED
               2         FILE NOT ACCESSIBLE
               3         NO SUCH FILE

ENTER YOUR CHOICE (ENTER 0 TO STOP)?27

                         READ

GEN. FORM:     READ  READ VARIABLE LIST

     THE READ STATEMENT READS STRING AND NUMERIC VALUES FROM THE 
DATA STATEMENT.

ENTER YOUR CHOICE (ENTER 0 TO STOP)?28

                         READ#

GEN. FORM:      READ #FILE NO. [,RECORD NO.] [;READ VARIABLE LIST]

     THE READ# STATEMENT READS FROM A FILE LISTED IN THE FILES 
STATEMENT.  THE FILE NO. DETERMINES WHICH FILE WILL BE READ FROM
AND THE READ VARIABLE DETERMINES WHAT TYPE OF DATA CAN BE READ.
STRING DATA CAN'T BE READ WITH A NUMERIC VARIABLE.

ENTER YOUR CHOICE (ENTER 0 TO STOP)?29

                         REM

GEN. FORM:     REM [REMARK]

     THE REMARK STATEMENT IS USED TO ADD REMARKS IN YOUR
PROGRAM.  THESE REMARKS ARE NOT PRINTED OR CARRIED OUT 
DURING THE RUNNING OF YOUR PROGRAM.

ENTER YOUR CHOICE (ENTER 0 TO STOP)?30

                         RESTORE

GEN. FORM:     RESTORE [STATEMENT NUMBER]

     THE RESTORE STATEMENT MOVES THE POINTER BACK TO THE FIRST
ITEM IN THE DATA.

ENTER YOUR CHOICE (ENTER 0 TO STOP)?31

                         STOP

GEN. FORM:     STOP

     THE STOP STATEMENT ENDS EXECUTION OF THE PROGRAM.  IT MAY 
BE INSERTED ANY WHERE IN THE PROGRAM.

ENTER YOUR CHOICE (ENTER 0 TO STOP)?32

                         SYSTEM

GEN. FORM:     SYSTEM RETURN VARIABLE, SOURCE STRING
               OR
               SYSTEM  DESTINATION STRING , SOURCE STRING

     THE STSTEM STATEMENT LETS YOU EXECUTE THE SYSTEM COMMANDS DURING
THE RUNNING OF THE PROGRAM.  THE COMMANDS THAT MAY BE USED ARE:
     BYE, ECHO, MESSAGE, FILE, PROTECT, LOCK, PRIVATE, UNRESTRICT,
     MWA, SWA, & PAUSE.

ENTER YOUR CHOICE (ENTER 0 TO STOP)?33

                         UNLOCK

GEN. FORM:     UNLOCK #FILE NUMBER [,RETURN VARIABLE]

     THE UNLOCK STATEMENT ALLOWS THE FILE TO BE RELEASED TO ALLOW
OTHERS TO REFERENCE THE FILE.  

          RETURN VALUE        MEANING

               0         FILE SUCCESSFULLY UNLOCKED
               1         FILE ALREADY UNLOCKED
               2         FILE NUMBER INVALID

ENTER YOUR CHOICE (ENTER 0 TO STOP)?34

                         UPDATE

GEN. FORM:     UPDATE #FILE NUMBER ; NUMERIC EXPRESSION
               OR
               UPDATE #FILE NUMBER ; SOURCE STRING

     THE UPDATE STATEMENT REPLACES THE NEXT SEQUENTIAL ITEM IN THE
FILE.  THE DATA MUST BE OF THE SAME TYPE WHEN UPDATING AN ITEM
A ASCII FILE CAN NOT BE UPDATED.  IF THE NEW STRING IS LONGER 
THAN THE OLD STRING THEN THE NEW STRING WILL BE CUT OFF AT THE LENGTH
OF THE OLD STRING.  BE VERY CAREFUL WHEN FIRST USING THIS STATEMENT
BECAUSE YOU CAN EASILY RUIN A FILE.

=======================================
=           END OF PHILE              =
=======================================

Downloaded from P-80 Systems......

                           ����������������������������������