HP3000/HP 3000 FAQ
Last Updated: Thursday, February 01, 2007 02:38 PM
Using the POSIX Shell
The control keys don't seem to be registering with the shell. This is saying that ^Y should be able to interrupt a program. And ^@ should be able to stop input. But it's being ignored. Trying to set eof to ^D doesn't work either.
# enable ^y export HPSHELLINT=1 JK (1) The "SH" UDC sets your CWD to !hphgroup.!hpacct regardless of where you are, and won't work if you have no home group. Yuck. I prefer to set it to !hpgroup.!hpacct. (2) As noted previously, "man" is broken, so "export MANPATH='/usr/man'" (3) better check TERM if you change /etc/profile
Chris Ransom (email@example.com) and I had an offline discussion about vi, cursor keys, and curses in general; this led to the annoying behavior of man, more, etc., enabling the TransmitFunctions terminal configuration and leaving it that way afterward (annoying when you don't expect it). The terminfo entry for hp2392a includes a reset sequence but it is unused or uncalled (curses!). Then Chris sent this to me which I think is valuable enough to share:
On Thu, 08 Dec 94 14:36:21 PDT you said: ]I figured it out. This seems to actually work. I took a tip from DOS prompt ]programming and changed my prompt string to contain the escape sequence: ] ] export PS1="^[&s0A"\$PWD$ ] ]And, believe it or not, vi is smart enough to re-enable xmit fkeys if you ]escape to the shell and return to vi. This also solves problems with "more" ]screwing up your terminal, etc...
Anyway, I use VI as my editor-of-choice on 5.0. You need an ".exrc" file in your home directory (for example /CHRIS/PUB/.exrc). It should contain map statements to translate your cursor keys into the VI directional commands. For example:
map ESC-A k map ESC-D h map ESC-C l map ESC-B j
Where "ESC-A" is actually escape+A in the .exrc file (hard to display here).
I'm fairly certain that an HP-UX .exrc file will work fine if copied over to MPE/iX.
As Mark Klein points out, you need to have "Transmit Function Keys" enabled for your terminal. This is enabled automatically by curses(?) when vi is run.
for Eastern US timezone, Eastern daylight time.
(Thanks to Chris Rice From the 4.5 class on the original list - now expanded (thanks Jeff Vance) to include new 5.0 commands :)
ABORTJOB kill ALTACCT chmod ALTGROUP chmod ALTFILE chown ALTSEC chmod BYE exit CALC expr, bc CCXL c89 CCXLLK c89 CHGROUP cd CHDIR cd CI sh CI callci COPY cp DISALLOW chmod DO r ECHO echo EDITOR vi ELSE else ELSEIF else if ENDIF fi ENDWHILE done EXIT exit FCOPY cp, dd, lp FILE ln HELP help, man HPDESK mailx HPSEARCH grep IF if LINK c89 LISTACCT ls -l LISTEQ ls -l LISTFILE ls LISTFILE;name= find LISTGROUP ls -l LISTREDO history NEWACCT mkdir NEWDIR mkdir NEWLINK ln -s NEWGROUP mkdir PRINT more, cat PURGE rm PURGEACCT rmdir, rm PURGEDIR rmdir, rm PURGELINK rm PURGEGROUP rmdir, rm REDO r RELEASE chmod 777 RENAME mv REPORT,DISKUSE du, df, find RESTORE tar, cpio, pax RETURN break ?? SECURE chmod SET set SETDUMP set -x SETJCW = SETMSG mesg SETVAR = SHOWJCW echo SHOWJOB ps, who SHOWPROC ps SHOWME who am I, pwd, uname SHOWTIME date SHOWVAR @ set STORE tar, cpio, pax STREAM at, batch, bg, crontab TELL talk, write, mailx WARN talk, write, mailx, wall XEQ . ??
(note: this will place an actual file on the drive, e.g. a permanent file equation so to speak. This is Posix symbolic linking of files.)
There is no reason you have to execute these commands from the posix shell. E.g., LS.HPBIN.SYS "-al" works just fine from the CI; same as: "ls -al" does from the Posix shell.
WELCOME vi /etc/motd HELLO;TERM= export TERM= CCXLLK is sort of make option logon;system /etc/profile option logon ./.profile SET HPPATH= export PATH=
And I love the "hot" program replacement in the shell. Who cares if people are running the program. "rm program". "mv newprog program" new version is in.
:BUILD OLDFILE;REC=-80,,F,ASCII :LN.HPBIN.SYS "-s ./OLDFILE ./NEWFILE" :LISTF ???FILE,2 ACCOUNT= TELAMON GROUP= RANDY FILENAME CODE ------------LOGICAL RECORD----------- SIZE TYP EOF LIMIT R/B NEWFILE 1B BAL 9 1024 1 OLDFILE 80B FA 0 1023 3 :PURGE NEWFILE :LISTF ???FILE,2 NEWFILE 1B BAL 9 1024 1 :LS.HPBIN.SYS "-l ./NEWFILE" lrwxrwxrwx 1 MANAGER.SYS TELAMON 9 May 23 13:43 ./NEWFILE -> ./OLDFILE
Notice that the PURGE deleted _OLDFILE_, not NEWFILE, although the link of NEWFILE -> OLDFILE still remained. If you build a link using LN.HPBIN.SYS, you'll have to get rid of it using RM.HPBIN.SYS, _not_ PURGE.
Kevin Cooper - HP Commercial Systems Division notes:
This is a distinction between PURGE and PURGELINK in the CI, and is an important concept for MPE users to understand. If you :PURGE a link, it is like saying :PURGE *FILE, where FILE references a previous file equation. The file on the right side of the file equation will be purged.
If you want to get rid of the link, use :PURGELINK NEWFILE in the CI. At the 1994 Interex in Denver, I did a paper called "A System Manager's Look at MPE/iX 5.0", which covered some MPE/POSIX topics like this. I tried to explain POSIX things in MPE/iX terms. I wrote it for someone who is trying to understand POSIX-style concepts from an MPE/iX knowledge base. It is paper #8008 in the proceedings from that conference.
c89: doesn't seem to read CCOPTS resolved by using make -f Makefile.prod and -f Makefile.debug it either truncates the info (or at least the -D) resolved by include "ccopts.h" as first line of each .c make: executes each statement seperately, i.e.: -cd ber_lib;make causes it to go into an infinite loop resolved by creating command files vi: Files uploaded as ascii by reflections can not be extended. If shorted and downloaded, the file is padded out to it's original size with nulls. Use :!rm [file] before :w Pet peeve, doesn't understand TERM=hp curser keys. diff: hangs on even small files. Note the files are extracted from tar.Z but compiled fine. lp, lpr: don't exist. /dev/lp can't be seen. Add a fileq before entering posix and callci print $file > *lp ^D: Isn't available. Use :eod. ABORT, ABORTJOB: Will not abort the program if open TCP session (but will abort the listening socket). Or maybe I just didn't wait long enought. intrinsics: open - can not open an MPE file. Replaced with FOPEN, FREAD, FWRITE. fork - can not have database open. Close it and reopen in both parent and child. offsetof - wouldn't compile, gave up and used (char*)&struct->mbr - (char*)struct setsockopt - all the normal defines, but some not implemented and return error. Ifdef it out. good news: Copylefted software that built okay: gzip, patch, flex, bison, p2c, shar, snacc. SETDUMP before entering posix will still produce trace. Putting the executable into an MPE visible directory with an MPE name and it can be run from MPE with :DEBUG but never tried with the forking version. Peeves: LaserRom for MPE is way behind the LaserRom for UX, which was way behind InfoExplorer on AIX. These beg for hyperlinks. As error and ommisions are constantly being corrected, putting documentation on line should be considered. And if have authentication, indexed error reports, and error report submission.
To make an alias for cc to c89, do the following:
shell/ix> ln -s /SYS/HPBIN/C89 /bin/cc shell/ix> ln -s /etc/c89.ccg /etc/compiler.ccg
This makes cc a legitimate alias for c89 even inside make. I like it because it's one less change I need in the makefiles that come with Unix software.
When making mods to source code, the following two IFDEFs are the standards for identifying:
For a detailed paper on porting issues in the MPE/iX POSIX environment, see Mark Bixby's paper at http://www.cccd.edu/~markb/porting.html. Mark is one of the most experienced "porters" of applications to MPE/iX and has ported many applications including BIND, Sendmail, Apache, and others..
Bruce Toback (btoback@OPTC.COM) wrote: : The system() call actually uses the Posix CI, since it expects Posix- : syntax system commands. It's not a call to HPCICOMMAND, which would use : the MPE command interpreter.
nRval = system ("callci \"TELL #s383; Edward, send help!\r\"");
callci is the POSIX shell command for invoking the MPE CI. Any object file that wants to call the POSIX C functions must be linked with the POSIX C library, /lib/libc.a. Note that this library is an RL.
A couple of additional notes. A program built in the POSIX shell can be run from the MPE CI prompt. [Jeff Kell has a few cautions in this regard which he posted to this newsgroup.] You can also use the MPE CI to compile and link a program with the POSIX C library. You do the compile as you did in your example, but you use a different link command.
ccxl tstsysmc,tstsysmo link from=tstsysmo;to=./TSYS2;rl=/lib/libc.a;cap=ph;posix;share
One final note, in your POSIX shell example you had the comment, (use linkedit to alter program capabilities to add ph) This is unnecessary. c89 from the POSIX shell always links programs with PH capability.
As shipped, there are many file permission problems with files in the HFS directory (including many of the terminal configuration -terminfo- files required by various interactive applications.. like Lynx for one example. Also 'vi'. You might get error messages such as:
Unknown terminal "hp2392a".
To correct these;
GSA :hello manager.sys :xeq sh.hpbin.sys -L cd /usr/lib/terminfo/h chmod 555 *
Or perhaps more precisely;
chmod +r *
chmod +r *
www.3kassociates.com - follow the links to "public domain software". You'll find a CB page with links to known ported applications, shareware native hp3000 applications, and games.