Date : Wed, 28 Mar 1984 06:50:00-MST
From : Rick Conn <RCONN@SIMTEL20.ARPA>
Subject: ZCPR3 Intro - Message 8: Shells
ZCPR3 - Shells
ZCPR3 Shells are front-ends which provide a
user interface in place of the normal ZCPR3 prompt.
To illustrate the concept, the following terminal
sessions show the MENU and SH shells in action.
B1:WORK2>NOTE Shells are Front-End Processors which can run in place
B1:WORK2>NOTE of the ZCPR3 Command Processor
B1:WORK2>NOTE Actually, the ZCPR3 Command Processor is still being
B1:WORK2>NOTE used, but it is transparent to the user now
B1:WORK2>NOTE Two shells I am going to demonstrate now are MENU and
B1:WORK2>NOTE SH:
B1:WORK2>dir root:menu.* a;dir root:sh*.* a
MENU .COM 4r
A15:ROOT -- 1 Files Using 4K ( 204K Left)
SH .COM 4r| SHDEFINE.COM 4r| SHFILE .COM 2r| SHOW .COM 4r
SHVAR .COM 4r
A15:ROOT -- 5 Files Using 18K ( 204K Left)
B1:WORK2>NOTE The MENU shell consists of only MENU.COM
B1:WORK2>NOTE The SH shell is SH.COM, but can use SHDEFINE, SHFILE, and SHVAR
B1:WORK2>NOTE for support
B1:WORK2>NOTE First, MENU:
B1:WORK2>ed menu.cpr
NEW FILE
: *i
1: -dx
2: #
3: Sample Menu
4: D - Directory Display
5: Z - Run Any ZCPR3 Command
6:
7: 1 - Set Name of Working File (Currently $f1)
8: 2 - Edit Working File
9: 3 - Type Working File
10: #
11: d!dir
12: z!"Enter Command Line -- "
13: 1setfile 1 "Enter File Name -- "
14: 2ed $f1
15: 3!type $f1
16: ##
17:
: *e
To run the MENU shell, just give its name.
B1:WORK2>menu
Shell Installed
MENU Version 3.0
Sample Menu
D - Directory Display
Z - Run Any ZCPR3 Command
1 - Set Name of Working File (Currently .)
2 - Edit Working File
3 - Type Working File
Command (<CR>=Menu, ^C=ZCPR3) - D
CMDSTAT .COM 2 | MENU .BAK 0 | DEMO .TXT 2 | DEMO .ZEX 2
DEMO1 .TXT 2 | EXERA .COM 2 | MENU .CPR 2 | RHEX .COM 2r
RHEX2 .COM 2r| TYPEIT .COM 2
B1:WORK2 -- 10 Files Using 18K ( 284K Left)
MENU Version 3.0 Strike Any Key -
Sample Menu
D - Directory Display
Z - Run Any ZCPR3 Command
1 - Set Name of Working File (Currently .)
2 - Edit Working File
3 - Type Working File
Command (<CR>=Menu, ^C=ZCPR3) - Z
Enter Command Line -- dir *.com;era *.com i
CMDSTAT .COM 2 | EXERA .COM 2 | RHEX .COM 2r| RHEX2 .COM 2r
TYPEIT .COM 2
B1:WORK2 -- 5 Files Using 10K ( 284K Left)
CMDSTAT .COM - Erase (Y/N)? y
EXERA .COM - Erase (Y/N)? y
RHEX .COM is R/O
RHEX2 .COM is R/O
TYPEIT .COM - Erase (Y/N)? y
MENU Version 3.0 Strike Any Key -
Sample Menu
D - Directory Display
Z - Run Any ZCPR3 Command
1 - Set Name of Working File (Currently .)
2 - Edit Working File
3 - Type Working File
Command (<CR>=Menu, ^C=ZCPR3) - Z
Enter Command Line -- prot rhex?.com;era rhex?.com
RHEX .COM Set to R/W
RHEX2 .COM Set to R/W
RHEX .COM
RHEX2 .COM
MENU Version 3.0 Strike Any Key -
Sample Menu
D - Directory Display
Z - Run Any ZCPR3 Command
1 - Set Name of Working File (Currently .)
2 - Edit Working File
3 - Type Working File
Command (<CR>=Menu, ^C=ZCPR3) - D
DEMO .BAK 0 | DEMO .TXT 2 | DEMO .ZEX 2 | DEMO1 .TXT 2
MENU .CPR 2
B1:WORK2 -- 5 Files Using 8K ( 294K Left)
MENU supports up to 4 file names which can be
used as variables within MENU. The common
application is to use these files names to specify
working files.
MENU Version 3.0 Strike Any Key -
Sample Menu
D - Directory Display
Z - Run Any ZCPR3 Command
1 - Set Name of Working File (Currently .)
2 - Edit Working File
3 - Type Working File
Command (<CR>=Menu, ^C=ZCPR3) - 1
Enter File Name -- myfile.txt
SETFILE, Version 1.0
File Name 1 is MYFILE .TXT
MENU Version 3.0
Sample Menu
D - Directory Display
Z - Run Any ZCPR3 Command
1 - Set Name of Working File (Currently MYFILE.TXT)
2 - Edit Working File
3 - Type Working File
Command (<CR>=Menu, ^C=ZCPR3) - 2
NEW FILE
: *i
1: This is MYFILE.TXT
2: Isn't this fun?
3:
: *b0p
1: This is MYFILE.TXT
2: Isn't this fun?
1: *e
MENU Version 3.0
Sample Menu
D - Directory Display
Z - Run Any ZCPR3 Command
1 - Set Name of Working File (Currently MYFILE.TXT)
2 - Edit Working File
3 - Type Working File
Command (<CR>=Menu, ^C=ZCPR3) - 3
This is MYFILE.TXT
Isn't this fun?
MENU Version 3.0 Strike Any Key -
Sample Menu
D - Directory Display
Z - Run Any ZCPR3 Command
1 - Set Name of Working File (Currently MYFILE.TXT)
2 - Edit Working File
3 - Type Working File
Command (<CR>=Menu, ^C=ZCPR3) - 2
: *#a
1: *i
1: I have modified MYFILE.TXT
2:
2: *b0p
1: I have modified MYFILE.TXT
2: This is MYFILE.TXT
3: Isn't this fun?
1: *e
MENU Version 3.0
Sample Menu
D - Directory Display
Z - Run Any ZCPR3 Command
1 - Set Name of Working File (Currently MYFILE.TXT)
2 - Edit Working File
3 - Type Working File
Command (<CR>=Menu, ^C=ZCPR3) - 3
I have modified MYFILE.TXT
This is MYFILE.TXT
Isn't this fun?
MENU Version 3.0 Strike Any Key -
Sample Menu
D - Directory Display
Z - Run Any ZCPR3 Command
1 - Set Name of Working File (Currently MYFILE.TXT)
2 - Edit Working File
3 - Type Working File
Command (<CR>=Menu, ^C=ZCPR3) - ^C
B1:WORK2>
Now the demonstration of SH begins.
B1:WORK2>NOTE Now I will demonstrate SH
B1:WORK2>sh
Shell Installed
B1:WORK2>> ;first, SH looks like the normal ZCPR3, except that the
B1:WORK2>> ;prompt is >>
B1:WORK2>>
B1:WORK2>> ;commands run normally under SH:
B1:WORK2>> dir *.txt
DEMO .TXT 2 | DEMO1 .TXT 2 | MYFILE .TXT 2
B1:WORK2 -- 3 Files Using 6K ( 292K Left)
B1:WORK2>> error4
ERROR4, Version 1.0
Error Handler Installed
B1:WORK2>> NOTE Shells, like many things under ZCPR3, can be nested:
B1:WORK2>> menu
Shell Installed
MENU Version 3.0
Sample Menu
D - Directory Display
Z - Run Any ZCPR3 Command
1 - Set Name of Working File (Currently MYFILE.TXT)
2 - Edit Working File
3 - Type Working File
Command (<CR>=Menu, ^C=ZCPR3) - 3
I have modified MYFILE.TXT
This is MYFILE.TXT
Isn't this fun?
MENU Version 3.0 Strike Any Key -
Sample Menu
D - Directory Display
Z - Run Any ZCPR3 Command
1 - Set Name of Working File (Currently MYFILE.TXT)
2 - Edit Working File
3 - Type Working File
Command (<CR>=Menu, ^C=ZCPR3) - Z
Enter Command Line -- NOTE and, when I exit, I'm back to SH
MENU Version 3.0 Strike Any Key -
Sample Menu
D - Directory Display
Z - Run Any ZCPR3 Command
1 - Set Name of Working File (Currently MYFILE.TXT)
2 - Edit Working File
3 - Type Working File
Command (<CR>=Menu, ^C=ZCPR3) - ^C
B1:WORK2>> ; SH has some built-in commands, which can be determined by
B1:WORK2>> ; a ? command:
B1:WORK2>> ?
SH Commands --
? SHCMT SHECHO SHEXIT
B1:WORK2>> ; guess what SHEXIT does:
B1:WORK2>> shexit
Exiting Shell
B1:WORK2>NOTE oh, well, back to ZCPR3 ... but we were talking
B1:WORK2>NOTE about SH:
B1:WORK2>sh
Shell Installed
B1:WORK2>> ; SHCMT is intended to switch SH into a comment
B1:WORK2>> ; mode, for times like this when I want to record
B1:WORK2>> ; a lot of text and a few commands:
B1:WORK2>> shcmt
B1:WORK2; note that the prompt is now "B1:WORK2; "
B1:WORK2; I don't have to type the leading ; or the word NOTE
B1:WORK2;
B1:WORK2; If I want to execute a command, I simply prefix it with
B1:WORK2; an exclamation mark:
B1:WORK2; !dir *.txt
DEMO .TXT 2 | DEMO1 .TXT 2 | MYFILE .TXT 2
B1:WORK2 -- 3 Files Using 6K ( 292K Left)
B1:WORK2; !menu
Shell Installed
MENU Version 3.0
Sample Menu
D - Directory Display
Z - Run Any ZCPR3 Command
1 - Set Name of Working File (Currently MYFILE.TXT)
2 - Edit Working File
3 - Type Working File
Command (<CR>=Menu, ^C=ZCPR3) - 3
I have modified MYFILE.TXT
This is MYFILE.TXT
Isn't this fun?
MENU Version 3.0 Strike Any Key -
Sample Menu
D - Directory Display
Z - Run Any ZCPR3 Command
1 - Set Name of Working File (Currently MYFILE.TXT)
2 - Edit Working File
3 - Type Working File
Command (<CR>=Menu, ^C=ZCPR3) - ^C
B1:WORK2; and we are back:
B1:WORK2; !?
SH Commands --
? SHCMT SHECHO SHEXIT
B1:WORK2; all commands work that way under SH
B1:WORK2; as I mentioned, SH is a Variable Shell
B1:WORK2; by this I mean that it supports named variables, which
B1:WORK2; can be defined (in groups) by SHDEFINE or one at a time
B1:WORK2; by SHVAR
B1:WORK2;
B1:WORK2; SHVAR with no args displays the names of the current
B1:WORK2; variables
B1:WORK2; !shvar
SHVAR, Version 1.0
Shell Variables --
-- No Variables Defined --
B1:WORK2;
B1:WORK2; with an arg (actually, 2 args), SHVAR defines variables
B1:WORK2; !shvar file1 myfile.txt
SHVAR, Version 1.0
Shell Variable FILE1 = MYFILE.TXT
Writing Shell Variable File SH .VAR
B1:WORK2;
B1:WORK2; and now I can reference variables by preceeding them with
B1:WORK2; a % character
B1:WORK2; !type %file1
I have modified MYFILE.TXT
This is MYFILE.TXT
Isn't this fun?
B1:WORK2; does the same as
B1:WORK2; !type myfile.txt
I have modified MYFILE.TXT
This is MYFILE.TXT
Isn't this fun?
B1:WORK2; note that SH variables can only be used under SH
B1:WORK2; don't confuse these with aliases, which can be used
B1:WORK2; anywhere, including under SH
B1:WORK2; !alias
ALIAS, Version 1.0
Input Alias (RETURN to Abort)
--> echo hello, world - my name is $0
Name of ALIAS Command (RETURN to Abort)? hello
Alias Created
B1:WORK2; !hello
HELLO, WORLD - MY NAME IS HELLO
B1:WORK2; !shexit
Exiting Shell
B1:WORK2>hello
HELLO, WORLD - MY NAME IS HELLO
B1:WORK2>sh
Shell Installed
B1:WORK2>> shcmt
B1:WORK2; also, SH variables can be referenced by other SH variables,
B1:WORK2; up to 20 levels deep:
B1:WORK2; !shvar cmddemo type %%file1
SHVAR, Version 1.0
Shell Variable CMDDEMO = TYPE %FILE1
Writing Shell Variable File SH .VAR
B1:WORK2; note my use of the double %% to indicate that I wanted
B1:WORK2; the % character substituted -- If I used just 1 %, then
B1:WORK2; the value of the variable would be substituted:
B1:WORK2; !shvar cmddemo1 type %file1
SHVAR, Version 1.0
Shell Variable CMDDEMO1 = TYPE MYFILE.TXT
Writing Shell Variable File SH .VAR
B1:WORK2; see the difference?
B1:WORK2; so, to execute:
B1:WORK2; !%cmddemo
I have modified MYFILE.TXT
This is MYFILE.TXT
Isn't this fun?
B1:WORK2; !%cmddemo1
I have modified MYFILE.TXT
This is MYFILE.TXT
Isn't this fun?
B1:WORK2; as a side comment, the SHECHO command can be used to make
B1:WORK2; SH show you the command line it is generating:
B1:WORK2; !shecho
Echo of Shell Commands is ON
B1:WORK2; !%cmddemo
TYPE MYFILE.TXT
I have modified MYFILE.TXT
This is MYFILE.TXT
Isn't this fun?
B1:WORK2; Now, if I change the definition of FILE1:
B1:WORK2; !shvar file1 hisfile.txt
SHVAR FILE1 HISFILE.TXT
SHVAR, Version 1.0
Shell Variable FILE1 = HISFILE.TXT
Writing Shell Variable File SH .VAR
B1:WORK2; the meaning of CMDDEMO is different:
B1:WORK2; !%cmddemo
TYPE HISFILE.TXT
No Files
B1:WORK2; while CMDDEMO1 remains unchanged
B1:WORK2; !%cmddemo1
TYPE MYFILE.TXT
I have modified MYFILE.TXT
This is MYFILE.TXT
Isn't this fun?
B1:WORK2; !ed %file1
ED HISFILE.TXT
NEW FILE
: *i
1: This is HISFILE.TXT
2:
: *e
B1:WORK2; !%cmddemo;%cmddemo1
TYPE HISFILE.TXT;TYPE MYFILE.TXT
This is HISFILE.TXT
I have modified MYFILE.TXT
This is MYFILE.TXT
Isn't this fun?
B1:WORK2; and so on ...
B1:WORK2; !shexit
Exiting Shell
B1:WORK2>