What's Up DOCumentation
Robelle Consulting Ltd.
Unit 201, 15399-102A Ave.
Surrey, B.C. Canada V3R 7K1
Phone: (604) 582-1700
Fax: (604) 582-1799
Date: January 21, 1991
From: Robert M. Green, President
David J. Greer, Research & Development
Michael Shumko, Customer Support
Jim Bird, Customer Support
To: Users of Robelle Software
Re: News of the HP 3000, 1991 #1
What You Will Find in This News Memo:
News Tidbits
Technical Tips
Calling QeditAccess from Pascal
About Robelle
Robelle Products: Problems, Solutions, and Suggestions
News Tidbits
Goodies.
Along with this newsletter is an index to all of last year's What's Up Doc
newsletters to help you find that tip or announcement that you remembered
reading somewhere. As an added bonus, we've included a copy of David Greer's
latest paper on the MPE XL system debugger, to help you get to know and use
this powerful but complex tool.
980 News.
We have heard from customers who are benchmarking the new 980 Spectrum
machine, and they say it is really hot. But what about the multi-processor
version, the 980/200? According to the HP Chronicle, HP has "delayed shipment
of its 870S/200 up to six months for lack of multi-processing Unix software.
HP officials also said the company plans to begin initial shipments of the
dual-processor 3000 Series 980/200 to MPE XL 3.0 beta testers by the end of
[December]. However, at least one Series 980/100 customer, planning to
install the two-processor option as soon as HP will release it, said he does
not expect multiprocessor support under MPE XL to be available until July,
1991.
HP has not set a date for when it plans volume shipments of the 980/200, but
it will be at least several months after beta testing of XL 3.0 begins this
month. If the 980/200 shipments materialize [soon], it would mark the first
time HP has delivered major hardware functionality on its HPPA line under MPE
XL before that functionality became available under HP-UX."
Broken Break Key. In response to our litany of problems
with Control-Y over NS, Bruce Toback called with his own war story. If you
DSLINE from your MPE XL system (2.1) over to your MPE V system (V-delta-7) and
run an MPE V program, you may find that when you press Break you have lost
control of your terminal. If the terminal seems dead, try pressing Control-F:
this will frequently give you back your keyboard.
New Spectrums Released. As announced in the December 1990 edition
of HP World magazine, HP has released two new 3000s, the series 948 and 958,
which use the chip set from the series 980 in the same box as a 920/922/932.
Migration from the 920 to the 958 is possible with straight board swaps. HP
boasts that "This is a further endorsement of how good precision architecture
is. We can flatten an [IBM] AS470 and a VAX 6500 with a machine the size of a
suitcase!". Here is a chart (also courtesy of HP World) comparing the
relative processing power of the 3000 spectrum processors, using the classic
series-70 as a base value of 1:
980/100 (6.2)
958 (4.5)
960 (3.6)
948 (3.1) 949 (2.9) 955 (2.8)
932 (1.6) 935 (1.5) 950 (1.8)
70 (1.0) 922 (0.9) 925 (0.8)
920 (0.6)
DOS beyond 640K.
Here is an excerpt from the article "DOS beyond 640K: expanded and extended
memory" in the December issue of UBC Campus Computing:
Extended memory is available on the 80286 chip and allows direct
addressing of up to 16 MBytes of memory.
Given that the 80286 chip has been around for a while, and given that it
has a protected mode that can access more than 1MB of RAM, a logical
question is, why didn't programmers develop extensions to DOS that would
allow DOS programs running on 80286 chips to use extended memory? ...
The answer lies partially in a unfortunate design decision made by the
designers of the 80286. While there is a straightforward means of
switching from real mode to protected mode on an 80286, there is no way
of switching back! This serious problem was not resolved for some time,
and the solution wasn't initially made available as an extension to DOS,
but as a part of the OS/2 operating system... The somewhat terrifying
solution was devised by Microsoft's Chief Architect of Systems Software
Gordon Letwin: OS/2 shifts back to the real mode by rebooting the
system. More precisely, OS/2 reboots the system, and then very quickly
tells the 80286 that the reboot was just a false alarm. Bill Gates of
Microsoft likens this to "turning the car off and on at 60 mph." The
80286 is back in real mode, with all the memory that a real reboot would
have destroyed miraculously intact. Depending on your tastes, you may
call this trick a brilliant idea or a complete kludge.
Technical Tips
Odd Octcomp Failures.
Octcomp requires a fair bit of disc space to translate the object code of CM
programs. If you have put any account or group disc space limits on the
Robelle account, you may find that our Octcomp jobs will fail with some very
strange error messages:
ILLEGAL POINTER TRAP (TRAPERR 53)
Illegal data address (TRAPS 65)
These error messages "mean" that the Linkedit phase of Octcomp ran out of disc
space.
:SHOWPROC Command.
SHOWPROC is a handy new command in MPE XL 2.1 which helps you to find out the
status of a process (ie., the program name, priority, CPU time used and the
current state). This is a quick way of finding out what a job is doing:
:SHOWPROC Job=#s70
QPRI CPUTIME STATE JOBNUM PIN (PROGRAM) STEP
C152 0:03.235 WAIT S70 80 :RUN QEDIT.PUB.ROBELLE;PARM=67
C152 0:32.458 READY S70 57 (QEDIT.PUB.ROBELLE)
C152 0:01.954 WAIT S70 123 (XPRESS.MAIL.ROBELLE)
C152 0:26.603 WAIT S70 114 (SUPRTOOL.PUB.ROBELLE)
Another new command, :ALTPROC, lets users with SM or OP capability change the
priority of a process.
Firmware bug on 4x/5x.
Eugene Volokh at VESoft has found a subtle bug in the firmware of the classic
4x/5x CPUs. In SPL, the construct
IF A <= B <= C
will sometimes return invalid results on these CPUs. For example,
IF -32767 <= 20 <= -32750 returns TRUE where it should be FALSE
SPL programmers may want to consider changing their code to be safe, since we
can all guess what the chances are of HP releasing a firmware fix for the
4x/5x boxes.
Calling QeditAccess from Pascal
QeditAccess is a routine we provide that can be called from a program to read
and write Qedit workfiles. For those of you who want to know how to call
QeditAccess from Pascal, here is an example that was put together by Dave Lo,
one of our programmers:
{ This program demonstrates how to call QeditAccess from Pascal.
It reads a Qedit file called QDATA and displays the contents of
the file on $stdlist. }
program TestQaccess( input,output );
const
MaxFnameLen = 40;
MaxLineLen = 256;
type
shortint = -32768..32767; { Type declaration required for Pascal/V only }
{ This is the general Argument parameter for QeditAccess.
The different uses are indicated by the variant fields.
More variant fields can be added.
All of the parameters for Qeditaccess must be passed as 16-bit
word addressess (eg., the Argument parameter cannot simply be
declared as a packed array of char).
The case variant shortint MUST NOT be given a field name. }
ArgRec = record
case shortint of
1: (fname: packed array[1..MaxFnameLen] of char);
2: (line: packed array[1..MaxLineLen] of char);
end;
WorkRec = record
status : shortint;
filenum : shortint;
filetype : shortint;
lang : shortint;
length : shortint;
size_key : integer;
block : shortint;
index : shortint;
readlen : shortint;
left : shortint;
keylen : shortint;
reserved : integer;
buf : packed array[1..256] of shortint;
end;
FuncRec = record
num : shortint;
lang : shortint;
recsize : shortint;
numblocks : shortint;
numextents : shortint;
initextent : shortint;
end;
var
Func : FuncRec;
WorkSpace : WorkRec;
Arg : ArgRec;
i : shortint;
done : boolean;
procedure QeditAccess( var func : FuncRec;
var workspace : WorkRec;
var arg : ArgRec );
external spl;
begin
arg.fname := 'QDATA ';
Func.num := 1;
QeditAccess( Func, WorkSpace, Arg );
if WorkSpace.status<>0 then begin
writeln('could not open, error = ', WorkSpace.status );
end
else begin
done := false;
repeat
Func.num:=2;
QeditAccess( Func, WorkSpace, Arg );
if WorkSpace.status=0 then begin
for i:=1 to WorkSpace.length do
write( Arg.line[i]);
writeln;
end
else if WorkSpace.status=-1 then { end of file }
done := true
else begin
writeln('could not read, error = ', WorkSpace.status );
done := true;
end;
until done;
Func.num := 3;
QeditAccess( Func, WorkSpace, Arg );
end;
end.
About Robelle
PCQ Project Cancelled.
Some of you may have heard of a Robelle project code-named "PCQ" that
attempted to dynamically link Qedit with a PC program. Our goal was to use
the PC to edit a PC file or HP3000 file of any size without having to copy the
entire file to the PC. This turned out to be much more difficult than we
anticipated. Although PCQ has been cancelled, we are still deeply interested
in enhancing our products to work with PCs.
In July 1989 we hired Dave Lo to work on PCQ. Dave remains our PC expert, but
at the moment he is busy developing software on the HP3000. You may get a
chance to talk to Dave when we corral him into taking technical support calls
now and then.
Users Group Meetings.
Bob Green will be presenting his award-winning paper "Improving Software
Quality" at Salt Lake City on March 20, Amana, Iowa on March 21 and Chicago on
March 22. Bob will also be at the SCRUG conference, May 8-10, with Marie
Froese at the Robelle booth.
Mike Shumko and Barbara Janicki will be representing Robelle at the European
National Users Group meeting in Hamburg, April 23-26. Mike will be giving
mini tutorials on using Suprtool and Qedit, and Barbara will be presenting a
paper on "Documentation that works for you". Come by and visit us at the SWS
booth.
Jim Bird and Jennifer Mollan will be in Melbourne for the SPARC conference,
May 13-16, at the Co-Cam booth. We'll be giving Qedit and Suprtool mini
tutorials, answering questions and generally having a good time.
New Robelle Arrival.
Vancouver is just 2 hours north of Seattle, Washington, and we normally
experience above-freezing temperatures year-round. We get the occasional
winter snowstorm, but the snow usually melts within a day or so. A few days
ago, during the worst snowstorm of the last twenty years, Ken Robertson,
Robelle's system manager, and his wife Liette, decided to bring a baby into
the world. Ken describes their adventure:
"Around midnight, with the wind howling and the snow coming down, Liette
confessed that she had felt several contractions that evening, and that now
they "seemed to be coming about 10 minutes apart". Our first baby was due in
another week, but babies arrive when they want to. Given the road conditions,
we decided to head out immediately.
We arrived at the hospital 40 minutes later (it usually takes 10), and Liette
was admitted right away. Her contractions were now 3 minutes apart, and she
was about to deliver. We rushed up to maternity. A quick phone call from the
head nurse located our doctor some 50 miles away! She was snowed in and would
not be making it. In fact, because of the storm, there were NO doctors
available to help out with the delivery! It was just going to be the head
nurse, Liette and I.
Two hours later Liette's water broke and we wheeled into the delivery room. I
was in charge of holding this or that, turning various machines on and off,
and handing the nurse various odd-looking implements that she wanted. One
half hour later, at 4:25 AM December 30th, Louis Alexander popped out into the
nurse's arms and started crying. A healthy 7 pounds 14 ounces, he was a joy
to behold.
It was a magical moment for all of us."
Robelle Products: Problems, Solutions, and Suggestions
Qedit Version 3.9.1
We have just finished shipping the new Qedit version 3.9.1 to all North
American customers. Alas, we discovered a few problems after the tapes were
shipped. Note to overseas users: the tapes that you will receive from your
local dealers will have these problems corrected, except for the Q-delta-2
problem.
Problem with Qeditj1/Qeditj1a jobs.
Some Qedit 3.9.1 update tapes were sent with an error in two of the job
streams in the Qeditjob.Robelle group.
Qeditj1 Update CM Compiler Interface into System SL
Qeditj1a Update CM Compiler Interface in Robelle Account
Here is how to fix the jobs before streaming them:
:hello mgr.robelle
/text qeditj1.qeditjob
/change "pubnew"(u) "pub" all {upper- and lower-case}
/keep,yes
/text qeditj1a.qeditjob
/do c {repeat same Change Command}
/keep,yes
/exit
You need to use these job streams if you have MPE/V compilers and you are
re-installing the Qedit CM Compiler Interface. Re-installation is needed
after you install an HP MIT update, or if you need one of the changes provided
to the Interface in version 3.9.1.
Patch for COBOLX.
Qedit 3.9.1 will lose the tags in a COBOLX file if you set the X tag to a null
value with List Off and then keep the file. For example:
/t coberr.source
'Language' is now COBX
703 lines in file
/set x "" list off
/keep xyzzy
Warn: KEEP will not write entire lines, only within margins.
Here is a patch to Qedit 3.9.1 to fix this problem (don't forget to re-Octcomp
Qedit on MPE XL after patching it):
:run patch.pub.sys
FILE=? Qedit.Pub.Robelle
?M,1,10056,3
041077,0
022000,0
141311,0
? {return}
Q-Delta-2 customers.
Qedit 3.9.1 will not load on releases of MPE prior to MPE V/E. You get an
error message about a suprdate failure. Please contact our office for a
patch.
QeditPM doesn't have PM cap.
QeditPM is a special copy of Qedit that we distribute for customers on MPE XL
who are experiencing performance problems when using Qzmodify. It uses
Privileged Mode to switch you into the BS processing subqueue when in
Qzmodify, which reduces the chance of the system losing characters while you
are modifying a line. Unfortunately, we forgot to Prep QeditPM with PM
capability. You can add PM with any of the following methods:
Using MPEX:
%altfile qeditpm.pub.robelle;cap=+pm
Using NUGGETS:
:run acap.pub.nuggets;info="qeditpm + pm"
If you want to try using QeditPM and cannot add PM capability to the program
yourself, contact our office for a new tape.
In the Change notice accompanying the 3.9.1 installation tape, it states that
in order for QeditPM to work, the user running QeditPM must also have PM
capability. This is not correct: only the program file requires PM
capability.
Problems recognizing terminal.
Qedit 3.9.1 may not be able to recognize terminals that previous versions of
Qedit identified correctly. You may get the error message "Visual mode only
works on certain HP crts". If this happens, check the terminal configuration
values for Inhibit DC2 and Inhibit Handshake (also referred to as the "G" and
"H" straps). In order to identify your terminal, Qedit may require these
straps to be both set to NO. If you find that this is not the case, try
changing the configuration values, and enter Set Vis Stop at the /-prompt to
force Qedit to re-identify your terminal before trying visual mode again.
Previous versions of Qedit initialized the terminal straps as part of Qedit's
terminal identification sequence, which caused problems for customers using
specialized data communications networks.
Suprtool Version 3.2
Native-Mode KSAM.
Customers updating to MPE XL 2.1 or later releases of MPE XL, please keep in
mind that Suprtool 3.2 does not work with native-mode KSAM/XL files. Although
KSAM/XL is still a puzzle, we think we have most of it solved. We have made
extensive changes to Suprtool to support this new file type and hope to have
it all working in the 3.3 release of Suprtool scheduled for this spring.
Because KSAM/XL is not fully compatible with the old KSAM/V file type, there
will be some significant differences in the way that Suprtool handles KSAM/XL
files:
1. High-speed MR/NOBUF access to KSAM/XL files is not supported by HP. This
means that the only way Suprtool can read KSAM/XL files is one record at a
time. Tests show that Suprtool will be as much as five times slower at
reading a KSAM/XL file than a KSAM/V file. This may change in a future
release of KSAM/XL.
2. KSAM/XL files do not permit recovery of deleted records using standard
serial access methods. For this reason, Suprtool will not allow you to
read deleted records in a KSAM/XL file with Set Recover On.
Printing fields on separate lines.
In the Suprtool 3.2 user manual, we show an example of how to use the Extract
command to produce mailing labels from a customer file, printing each field on
a separate line. To do this, we Define an integer field named CRLF, set it to
the value 3338 (%6412, which is a Carriage-Return followed by a Line-Feed),
and extract it between each field:
>define CRLF,1,2,integer
>extract name,CRLF=3338,addr(1),CRLF=3338,addr(2),&
> CRLF=3338,addr(3),CRLF=3338,phone
>output *
Unfortunately, this method won't work if you use the Output,ASCII option to
convert binary fields into readable characters (Suprtool will convert the
binary field CRLF to the ASCII characters "3338"). Try extracting character
constants for the Carriage-Return (decimal 13) and Line-Feed (decimal 10)
characters instead:
>extract name,^13,^10,addr(1),^13,^10,addr(2),^13,^10
>extract addr(3),^13,^10,phone
>output *,ASCII
Xpress Version 2.7
Disable break to prevent hang.
One of our Xpress customers reported that if a user turns off their terminal
when they are in the middle of displaying the list of messages in the In
basket or Out basket, the Xpress database stays locked. Eventually everyone
who accesses the mail system will hang. This is because Xpress locks the
dataset while displaying the list of messages, to prevent "broken chain"
messages from IMAGE. If you leave your terminal powered off while the list of
messages is being displayed, MPE will consider that you are in system break
state. It is as though you had pressed the key while the Xpress
database was locked, and gone home.
You can prevent this problem from happening by adding OPTION NOBREAK to the
Xpress UDC. MPE will continue printing the list of messages (writing them to
the bit-bucket), ignoring the break, and Xpress will unlock the dataset before
asking you to select a message. This will also stop users from pressing the
key to interrupt Xpress when it has the database locked, causing other
Xpress users to hang.
Fortune Cookie of the Month
Time flies like an arrow.
Fruit flies like a banana.